Compare commits

...

452 Commits

Author SHA1 Message Date
dependabot[bot]
c82f17dcb7 Bump the angular group across 1 directory with 15 updates
Bumps the angular group with 12 updates in the / directory:

| Package | From | To |
| --- | --- | --- |
| [@angular/animations](https://github.com/angular/angular/tree/HEAD/packages/animations) | `18.2.13` | `18.2.14` |
| [@angular/common](https://github.com/angular/angular/tree/HEAD/packages/common) | `18.2.13` | `18.2.14` |
| [@angular/compiler](https://github.com/angular/angular/tree/HEAD/packages/compiler) | `18.2.13` | `18.2.14` |
| [@angular/core](https://github.com/angular/angular/tree/HEAD/packages/core) | `18.2.13` | `18.2.14` |
| [@angular/forms](https://github.com/angular/angular/tree/HEAD/packages/forms) | `18.2.13` | `18.2.14` |
| [@angular/localize](https://github.com/angular/angular) | `18.2.13` | `18.2.14` |
| [@angular/platform-browser](https://github.com/angular/angular/tree/HEAD/packages/platform-browser) | `18.2.13` | `18.2.14` |
| [@angular/platform-browser-dynamic](https://github.com/angular/angular/tree/HEAD/packages/platform-browser-dynamic) | `18.2.13` | `18.2.14` |
| [@angular/platform-server](https://github.com/angular/angular/tree/HEAD/packages/platform-server) | `18.2.13` | `18.2.14` |
| [@angular/router](https://github.com/angular/angular/tree/HEAD/packages/router) | `18.2.13` | `18.2.14` |
| [@angular/ssr](https://github.com/angular/angular-cli) | `18.2.20` | `18.2.21` |
| [@angular/cli](https://github.com/angular/angular-cli) | `18.2.20` | `18.2.21` |



Updates `@angular/animations` from 18.2.13 to 18.2.14
- [Release notes](https://github.com/angular/angular/releases)
- [Changelog](https://github.com/angular/angular/blob/main/CHANGELOG.md)
- [Commits](https://github.com/angular/angular/commits/18.2.14/packages/animations)

Updates `@angular/common` from 18.2.13 to 18.2.14
- [Release notes](https://github.com/angular/angular/releases)
- [Changelog](https://github.com/angular/angular/blob/main/CHANGELOG.md)
- [Commits](https://github.com/angular/angular/commits/18.2.14/packages/common)

Updates `@angular/compiler` from 18.2.13 to 18.2.14
- [Release notes](https://github.com/angular/angular/releases)
- [Changelog](https://github.com/angular/angular/blob/main/CHANGELOG.md)
- [Commits](https://github.com/angular/angular/commits/18.2.14/packages/compiler)

Updates `@angular/core` from 18.2.13 to 18.2.14
- [Release notes](https://github.com/angular/angular/releases)
- [Changelog](https://github.com/angular/angular/blob/main/CHANGELOG.md)
- [Commits](https://github.com/angular/angular/commits/18.2.14/packages/core)

Updates `@angular/forms` from 18.2.13 to 18.2.14
- [Release notes](https://github.com/angular/angular/releases)
- [Changelog](https://github.com/angular/angular/blob/main/CHANGELOG.md)
- [Commits](https://github.com/angular/angular/commits/18.2.14/packages/forms)

Updates `@angular/localize` from 18.2.13 to 18.2.14
- [Release notes](https://github.com/angular/angular/releases)
- [Changelog](https://github.com/angular/angular/blob/main/CHANGELOG.md)
- [Commits](https://github.com/angular/angular/compare/18.2.13...18.2.14)

Updates `@angular/platform-browser` from 18.2.13 to 18.2.14
- [Release notes](https://github.com/angular/angular/releases)
- [Changelog](https://github.com/angular/angular/blob/main/CHANGELOG.md)
- [Commits](https://github.com/angular/angular/commits/18.2.14/packages/platform-browser)

Updates `@angular/platform-browser-dynamic` from 18.2.13 to 18.2.14
- [Release notes](https://github.com/angular/angular/releases)
- [Changelog](https://github.com/angular/angular/blob/main/CHANGELOG.md)
- [Commits](https://github.com/angular/angular/commits/18.2.14/packages/platform-browser-dynamic)

Updates `@angular/platform-server` from 18.2.13 to 18.2.14
- [Release notes](https://github.com/angular/angular/releases)
- [Changelog](https://github.com/angular/angular/blob/main/CHANGELOG.md)
- [Commits](https://github.com/angular/angular/commits/18.2.14/packages/platform-server)

Updates `@angular/router` from 18.2.13 to 18.2.14
- [Release notes](https://github.com/angular/angular/releases)
- [Changelog](https://github.com/angular/angular/blob/main/CHANGELOG.md)
- [Commits](https://github.com/angular/angular/commits/18.2.14/packages/router)

Updates `@angular/ssr` from 18.2.20 to 18.2.21
- [Release notes](https://github.com/angular/angular-cli/releases)
- [Changelog](https://github.com/angular/angular-cli/blob/main/CHANGELOG.md)
- [Commits](https://github.com/angular/angular-cli/compare/18.2.20...18.2.21)

Updates `@angular-devkit/build-angular` from 18.2.20 to 18.2.21
- [Release notes](https://github.com/angular/angular-cli/releases)
- [Changelog](https://github.com/angular/angular-cli/blob/main/CHANGELOG.md)
- [Commits](https://github.com/angular/angular-cli/compare/18.2.20...18.2.21)

Updates `@angular/cli` from 18.2.20 to 18.2.21
- [Release notes](https://github.com/angular/angular-cli/releases)
- [Changelog](https://github.com/angular/angular-cli/blob/main/CHANGELOG.md)
- [Commits](https://github.com/angular/angular-cli/compare/18.2.20...18.2.21)

Updates `@angular/compiler-cli` from 18.2.13 to 18.2.14
- [Release notes](https://github.com/angular/angular/releases)
- [Changelog](https://github.com/angular/angular/blob/main/CHANGELOG.md)
- [Commits](https://github.com/angular/angular/commits/18.2.14/packages/compiler-cli)

Updates `@ngtools/webpack` from 18.2.20 to 18.2.21
- [Release notes](https://github.com/angular/angular-cli/releases)
- [Changelog](https://github.com/angular/angular-cli/blob/main/CHANGELOG.md)
- [Commits](https://github.com/angular/angular-cli/compare/18.2.20...18.2.21)

---
updated-dependencies:
- dependency-name: "@angular/animations"
  dependency-version: 18.2.14
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: angular
- dependency-name: "@angular/common"
  dependency-version: 18.2.14
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: angular
- dependency-name: "@angular/compiler"
  dependency-version: 18.2.14
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: angular
- dependency-name: "@angular/core"
  dependency-version: 18.2.14
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: angular
- dependency-name: "@angular/forms"
  dependency-version: 18.2.14
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: angular
- dependency-name: "@angular/localize"
  dependency-version: 18.2.14
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: angular
- dependency-name: "@angular/platform-browser"
  dependency-version: 18.2.14
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: angular
- dependency-name: "@angular/platform-browser-dynamic"
  dependency-version: 18.2.14
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: angular
- dependency-name: "@angular/platform-server"
  dependency-version: 18.2.14
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: angular
- dependency-name: "@angular/router"
  dependency-version: 18.2.14
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: angular
- dependency-name: "@angular/ssr"
  dependency-version: 18.2.21
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: angular
- dependency-name: "@angular-devkit/build-angular"
  dependency-version: 18.2.21
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: angular
- dependency-name: "@angular/cli"
  dependency-version: 18.2.21
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: angular
- dependency-name: "@angular/compiler-cli"
  dependency-version: 18.2.14
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: angular
- dependency-name: "@ngtools/webpack"
  dependency-version: 18.2.21
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: angular
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-01 20:42:13 +00:00
Tim Donohue
27a1bfc6b1 Merge pull request #4738 from alanorth/unused-dependencies
Remove unused dependencies
2025-10-01 15:31:03 -05:00
Alan Orth
2b0cc82b12 package-lock.json: run npm install 2025-10-01 07:35:54 +03:00
Tim Donohue
eef6d953e3 Merge pull request #4733 from danielcoelhocgu/fix-2315
SSR: avoid sending new response when headers were already sent
2025-09-30 16:25:34 -05:00
Alan Orth
0bcef2afa1 Remove unused @angular/language-service dependency 2025-09-29 11:36:30 +03:00
Alan Orth
a46e378ab6 Remove unused webpack-dev-server dependency 2025-09-29 11:35:16 +03:00
Alan Orth
053d8e29b1 Remove unused @babel/runtime dependency 2025-09-29 09:46:30 +03:00
Alan Orth
e3ccaa3ee0 Remove unused @ngrx/operators from dependencies 2025-09-29 09:44:50 +03:00
Daniel Coelho
951c5f69d4 SSR: avoid sending new response when headeras were already sent (fixes #2315) 2025-09-22 08:25:06 -03:00
kshepherd
dba2d7a1e2 Merge pull request #4728 from alanorth/collection-mapper-trash-icon
src/app: use correct icon in item mapper
2025-09-19 14:06:34 +02:00
Alan Orth
3a9eb87914 src/app: use correct icon in item mapper
When adding mappings in the item mapper we should use the save icon
rather than the trash icon!
2025-09-19 14:19:57 +03:00
Tim Donohue
80865efc2b Merge pull request #4639 from im-shubham-vish/fix-8918
Fix for #8916 #8917 #8918 The Community Administrator should not be able to view all communities/collections in the create/edit community and collection sections. Previous PR #9814
2025-09-12 16:21:37 -05:00
Tim Donohue
c7f2248e89 Merge pull request #4685 from DSpace/dependabot/npm_and_yarn/core-js-3.45.1
Bump core-js from 3.44.0 to 3.45.1
2025-09-12 14:06:06 -05:00
Tim Donohue
5e4e9841d7 Merge pull request #4683 from DSpace/dependabot/npm_and_yarn/babel/runtime-7.28.4
Bump @babel/runtime from 7.28.2 to 7.28.4
2025-09-12 12:31:55 -05:00
Tim Donohue
7de87330d8 Merge pull request #4686 from DSpace/dependabot/npm_and_yarn/types/node-18.19.124
Bump @types/node from 18.19.121 to 18.19.124
2025-09-10 17:01:24 -05:00
Tim Donohue
8314661691 Merge pull request #4680 from DSpace/dependabot/npm_and_yarn/sass-2e0f0fb0cc
Bump sass from 1.89.2 to 1.92.1 in the sass group
2025-09-10 16:58:26 -05:00
Tim Donohue
26cf965560 Merge pull request #4684 from DSpace/dependabot/npm_and_yarn/isbot-5.1.30
Bump isbot from 5.1.29 to 5.1.30
2025-09-10 16:37:26 -05:00
Tim Donohue
c33bdaaad2 Merge pull request #4682 from DSpace/dependabot/npm_and_yarn/bootstrap-5.3.8
Bump bootstrap from 5.3.7 to 5.3.8
2025-09-10 16:29:23 -05:00
Tim Donohue
dc57a59e01 Merge pull request #4679 from DSpace/dependabot/npm_and_yarn/testing-c9201e7a88
Bump cypress-axe from 1.6.0 to 1.7.0 in the testing group
2025-09-10 15:56:43 -05:00
Tim Donohue
dc9137b998 Merge pull request #4634 from alanorth/server-setup
server.ts: remove port and host fallbacks in run
2025-09-10 14:35:16 -05:00
Tim Donohue
64e9f86741 Merge pull request #4636 from alanorth/banner-jpg-size
src/themes/dspace: rework banner image
2025-09-10 14:07:43 -05:00
dependabot[bot]
280b7660f2 Bump bootstrap from 5.3.7 to 5.3.8
Bumps [bootstrap](https://github.com/twbs/bootstrap) from 5.3.7 to 5.3.8.
- [Release notes](https://github.com/twbs/bootstrap/releases)
- [Commits](https://github.com/twbs/bootstrap/compare/v5.3.7...v5.3.8)

---
updated-dependencies:
- dependency-name: bootstrap
  dependency-version: 5.3.8
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-10 17:24:43 +00:00
Tim Donohue
11ca474634 Merge pull request #4632 from alanorth/modern-node
Use several modern Node.js patterns
2025-09-10 12:23:15 -05:00
Tim Donohue
1193413ac2 Merge pull request #4673 from dspace-unimr/fix/replace-bootstrap3-col-xs-classes
Replaced removed col-xs-_ bootstrap 3 classes with the equivalent col-_ classes
2025-09-10 11:57:38 -05:00
Tim Donohue
b78b7c953e Merge pull request #4644 from jlipka/fix/form-control-container-unsubscribe
fix: call parent ngOnDestroy in dynamic form control container
2025-09-09 16:36:35 -05:00
im-shubham-vish
15d9cb0ea8 Fix Lint Error 2025-09-09 18:53:01 +05:30
im-shubham-vish
a26c718db4 Fix to set Edit Collection to utilize findAdminAuthorized instead of findSubmitAuthorized 2025-09-09 18:35:18 +05:30
im-shubham-vish
93d43bcbd7 Merge branch 'DSpace:main' into fix-8918 2025-09-09 11:15:56 +05:30
dependabot[bot]
26c0b5b842 Bump sass from 1.89.2 to 1.92.1 in the sass group
Bumps the sass group with 1 update: [sass](https://github.com/sass/dart-sass).


Updates `sass` from 1.89.2 to 1.92.1
- [Release notes](https://github.com/sass/dart-sass/releases)
- [Changelog](https://github.com/sass/dart-sass/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sass/dart-sass/compare/1.89.2...1.92.1)

---
updated-dependencies:
- dependency-name: sass
  dependency-version: 1.92.1
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: sass
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-08 20:07:14 +00:00
dependabot[bot]
5562ee1780 Bump cypress-axe from 1.6.0 to 1.7.0 in the testing group
Bumps the testing group with 1 update: [cypress-axe](https://github.com/component-driven/cypress-axe).


Updates `cypress-axe` from 1.6.0 to 1.7.0
- [Release notes](https://github.com/component-driven/cypress-axe/releases)
- [Commits](https://github.com/component-driven/cypress-axe/compare/v1.6.0...v1.7.0)

---
updated-dependencies:
- dependency-name: cypress-axe
  dependency-version: 1.7.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: testing
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-08 20:02:32 +00:00
dependabot[bot]
4e059862d0 Bump @types/node from 18.19.121 to 18.19.124
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 18.19.121 to 18.19.124.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

---
updated-dependencies:
- dependency-name: "@types/node"
  dependency-version: 18.19.124
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-08 19:58:10 +00:00
dependabot[bot]
e41c1d088d Bump core-js from 3.44.0 to 3.45.1
Bumps [core-js](https://github.com/zloirock/core-js/tree/HEAD/packages/core-js) from 3.44.0 to 3.45.1.
- [Release notes](https://github.com/zloirock/core-js/releases)
- [Changelog](https://github.com/zloirock/core-js/blob/master/CHANGELOG.md)
- [Commits](https://github.com/zloirock/core-js/commits/v3.45.1/packages/core-js)

---
updated-dependencies:
- dependency-name: core-js
  dependency-version: 3.45.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-08 19:57:29 +00:00
dependabot[bot]
a96ba40f48 Bump isbot from 5.1.29 to 5.1.30
Bumps [isbot](https://github.com/omrilotan/isbot) from 5.1.29 to 5.1.30.
- [Changelog](https://github.com/omrilotan/isbot/blob/main/CHANGELOG.md)
- [Commits](https://github.com/omrilotan/isbot/compare/v5.1.29...v5.1.30)

---
updated-dependencies:
- dependency-name: isbot
  dependency-version: 5.1.30
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-08 19:57:15 +00:00
dependabot[bot]
f07f0481fd Bump @babel/runtime from 7.28.2 to 7.28.4
Bumps [@babel/runtime](https://github.com/babel/babel/tree/HEAD/packages/babel-runtime) from 7.28.2 to 7.28.4.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.28.4/packages/babel-runtime)

---
updated-dependencies:
- dependency-name: "@babel/runtime"
  dependency-version: 7.28.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-08 19:56:57 +00:00
Tim Donohue
9eadcea48a Update dependabot.yml. Remove security related settings as those automatically occur anyways. 2025-09-08 14:56:26 -05:00
Tim Donohue
265c08eaec Merge pull request #4520 from lareferencia/cookie-popup-html-tags
Fix: Remove HTML tags from cookie popup translations
2025-09-08 11:04:31 -05:00
Jesiel Viana
38b55006f5 Merge branch 'main' into cookie-popup-html-tags 2025-09-08 08:14:49 -03:00
Atmire-Kristof
bf24baf630 Clear url parameters for entity search tabs (#2734)
* 110878: Entity search - clear params on tab switch

* 110878: Properly clear browse-by values when navigating

* 132230: Related entity tab switching: only keep query & scope, reset page to 1

---------

Co-authored-by: Nona Luypaert <nona.luypaert@atmire.com>
2025-09-05 16:46:44 -05:00
Eike Martin Löhden
31a31b247d Replace col-xs-_ with the equivalent col-_. 2025-09-04 18:15:04 +02:00
Art Lowel
c48c4ad6c7 Merge pull request #4664 from kshepherd/split_dynamic_tags_on_keychars
Inspect event key characters, not keyCodes on tag keyUp for dynamic tag input
2025-09-04 16:45:45 +02:00
Tim Donohue
7c8486af57 Merge pull request #4628 from lareferencia/fix-untranslated-i18n-keys-ror-api
Fix untranslated i18n keys ror api
2025-09-03 15:56:13 -05:00
Kim Shepherd
98fc76d867 Create dynamic tag test events with key chars, not keyCodes 2025-08-30 17:27:20 +02:00
Kim Shepherd
f313b4a8fd Inspect event key characters, not keyCodes on tag keyUp 2025-08-30 17:06:41 +02:00
Tim Donohue
20cef9ceff Merge pull request #4633 from alanorth/dspace.org-http-links
Replace plaintext links to www.dspace.org
2025-08-28 14:57:31 -05:00
Alan Orth
287347b764 README.md: fix link to service providers 2025-08-28 06:25:33 +03:00
Alan Orth
0bdb8ec7f2 src/app/footer: use https for dspace.org link 2025-08-26 09:37:54 +03:00
Alan Orth
d9d43ef9c1 README.md: replace links to http://www.dspace.org 2025-08-26 09:37:39 +03:00
Tim Donohue
e6f9e8ca4b Merge pull request #4563 from pilasou/pilasou-translations-fr
Adding all missing french translations
2025-08-22 10:11:19 -05:00
kshepherd
f58ba039a2 Merge pull request #4642 from alexandrevryghem/restrict-map-bounds_contribute-main
Improved geospatial map bounds & scroll behaviour
2025-08-21 15:11:04 +02:00
Tim Donohue
59e477aa79 Merge pull request #4640 from alanorth/codeql-action-v3
.github/workflows/codescan.yml: use codeql-action v3
2025-08-20 16:08:42 -05:00
Tim Donohue
1761500330 Merge pull request #4635 from alanorth/github-template-dsdoc
Update GitHub template references to DSDOC9x
2025-08-20 13:38:48 -05:00
Jukka Lipka
4d803a58d4 fix: call parent ngOnDestroy in dynamic form control container 2025-08-20 08:37:16 +02:00
Pierre Lasou
e4dfcda009 Remove extra character
Remove extra ": line 1636
2025-08-19 12:57:30 -04:00
Alexandre Vryghem
643836addc Restricted map bounds 2025-08-18 18:37:48 +02:00
Alan Orth
3333ee4fbb .github/workflows/codescan.yml: use codeql-action v3
Version 2 was deprecated in January, 2024 after the release of v3.

See: https://github.blog/changelog/2025-01-10-code-scanning-codeql-action-v2-is-now-deprecated/
2025-08-17 12:01:52 +03:00
im-shubham-vish
5aab53e064 Fix for #8918 The Community Administrator should not be able to view all communities/collections in the create/edit community and collection sections 2025-08-14 17:12:54 +05:30
Alan Orth
d9e8fea5bf src/themes/dspace: rework banner image
For some reason our version of this image is twice the size of the
original (~860KiB vs 1.6MiB). To make matters worse, the dimensions
of the image are 4777x3166 pixels, but we display it at 2000 pixels
wide.

This regenerates the images based on the original and adjusts the
dimensions to be more appropriate. Generated using ImageMagick 7
on Linux:

$ magick pexels-inspiredimages-132477.jpg -resize 2000x src/themes/dspace/assets/images/banner.jpg
$ magick pexels-inspiredimages-132477.jpg -resize 2000x src/themes/dspace/assets/images/banner.webp
$ magick pexels-inspiredimages-132477.jpg -resize 1200x src/themes/dspace/assets/images/banner-half.jpg
$ magick pexels-inspiredimages-132477.jpg -resize 1200x src/themes/dspace/assets/images/banner-half.webp

See: https://www.pexels.com/photo/clear-water-drops-132477/
2025-08-11 10:02:19 +03:00
Alan Orth
b5fe301209 README.md: update DSDOC references to DSDOC9x 2025-08-10 12:03:47 +03:00
Alan Orth
a877cbe284 Fix references to DSDOC8x
The latest release is DSDOC9x.
2025-08-09 19:43:23 +03:00
Alan Orth
6c09677510 server.ts: remove port fallback
If a user has messed up their config so much that the fallbacks in
our default configuration interface don't work then we should just
fail here.
2025-08-09 19:25:28 +03:00
Alan Orth
f622d58917 server.ts: remove invalid host fallback
If `environment.ui.host` is Falsy, then we attempt to fall back to
a host value of '/', which is invalid. I think that, if a user has
messed up their config so much that defaults in our configuration
interface don't work, then we should actually fail here.
2025-08-09 19:23:51 +03:00
Alan Orth
4d7051007b Use native Node.js watch instead of nodemon
Modern Node.js can watch natively so we don't need nodemon anymore.
2025-08-09 11:35:18 +03:00
Alan Orth
2d31afb92f Remove axios dependency
We can use the Node.js Fetch API directly instead of relying on an
external dependency.
2025-08-09 11:35:11 +03:00
Alan Orth
af71c152c1 Use node: for Node.js builtin modules
Use the the `node:` protocol when importing Node.js builtin modules
and enable rule in eslint to enforce.

The `node:` protocol for Node.js builtin modules has been available
since Node.js v14.

See: https://github.com/import-js/eslint-plugin-import/blob/main/docs/rules/enforce-node-protocol-usage.md
2025-08-09 11:06:09 +03:00
Tim Donohue
77731af50d Merge pull request #4550 from lareferencia/fix-back-button-navigation-community-collection
fix back button navigation after visiting a community or collection page
2025-08-08 12:07:59 -05:00
Jesiel Viana
22baef689a fix code style 2025-08-06 17:55:49 -03:00
Jesiel Viana
14de56279f add in pt-BR file and remove form pt-PT 2025-08-06 17:40:57 -03:00
Jesiel Viana
b6bf862542 add untranslated i18n keys for ROR API 2025-08-06 17:37:56 -03:00
Tim Donohue
67a17e4ea1 Merge pull request #4386 from arvoConsultores/i18n-spanish-update
Spanish translation updated
2025-08-05 14:50:30 -05:00
Tim Donohue
b0d5430a4c Merge pull request #4623 from alanorth/webpack-pin
Update webpack and webpack-cli dependencies
2025-08-05 14:35:14 -05:00
Tim Donohue
18aafea9bc Merge pull request #4622 from alanorth/node-types
Update @types/node to ^18.11.9
2025-08-05 09:15:27 -05:00
Alan Orth
46e291d767 package.json: update webpack-cli to v6.0.1
Update webpack-cli from v5.1.4 to v6.0.1. This is compatible with
webpack v5 and the minimum required Node.js version is 18.12.0.

See: https://github.com/webpack/webpack-cli/blob/master/CHANGELOG.md
2025-08-05 11:12:09 +03:00
Alan Orth
24ca6442f6 package.json: use semver for webpack dependency
As far as I can tell dspace-angular doesn't explicitly need any
particular version of webpack itself, but angular-cli specifies
a semver string of `^5.54.0` so we should do the same.

Also, our dependabot configuration currently considers minor and
patch versions for updates, so we should not be using an exact
version here anyway.

See: https://github.com/angular/angular-cli/blob/18.2.x/packages/ngtools/webpack/package.json
2025-08-05 11:05:18 +03:00
Alan Orth
41282f064c Update @types/node to ^18.11.9
As of DSpace 10.0-SNAPSHOT we currently support Node.js v18 and v20
so we should be using appropriate types.
2025-08-05 09:48:00 +03:00
Tim Donohue
eaf11d5ffe Merge pull request #4453 from sh-habibi/main
Contribute to adding Persian translation to DSpace
2025-08-04 11:44:32 -05:00
Tim Donohue
4fa0c57e02 Add Persian language to default configs 2025-08-04 11:02:40 -05:00
Tim Donohue
c0ba94836f Merge pull request #4589 from DSpace/dependabot/npm_and_yarn/babel/runtime-7.28.2
Bump @babel/runtime from 7.27.6 to 7.28.2
2025-08-01 10:46:36 -05:00
Tim Donohue
4f8724bb3e Merge pull request #4614 from DSpace/dependabot/npm_and_yarn/webpack-16f7f9f544
Bump the webpack group across 1 directory with 2 updates
2025-08-01 09:59:49 -05:00
dependabot[bot]
85066ac595 Bump the webpack group across 1 directory with 2 updates
Bumps the webpack group with 2 updates in the / directory: [webpack](https://github.com/webpack/webpack) and [webpack-dev-server](https://github.com/webpack/webpack-dev-server).


Updates `webpack` from 5.99.9 to 5.101.0
- [Release notes](https://github.com/webpack/webpack/releases)
- [Commits](https://github.com/webpack/webpack/compare/v5.99.9...v5.101.0)

Updates `webpack-dev-server` from 5.2.1 to 5.2.2
- [Release notes](https://github.com/webpack/webpack-dev-server/releases)
- [Changelog](https://github.com/webpack/webpack-dev-server/blob/master/CHANGELOG.md)
- [Commits](https://github.com/webpack/webpack-dev-server/compare/v5.2.1...v5.2.2)

---
updated-dependencies:
- dependency-name: webpack
  dependency-version: 5.101.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: webpack
- dependency-name: webpack-dev-server
  dependency-version: 5.2.2
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: webpack
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-31 21:24:52 +00:00
Tim Donohue
fa58bc5da7 Merge pull request #4617 from tdonohue/refactor_dependabot_rules
[Dependabot] Move zone.js and typescript rules into "ignore" settings and ignore major/minor versions
2025-07-31 16:23:29 -05:00
Tim Donohue
9f8fd506f0 Move zone.js and typescript rules into "ignore" settings and ignore all major/minor versions 2025-07-31 16:09:42 -05:00
Tim Donohue
5015e68901 Merge pull request #4115 from atmire/w2p-129629_add-models-to-provide-core-list_contribute-main
129629: Add models to provide-core.ts and remove duplicates
2025-07-30 17:00:10 -05:00
Tim Donohue
45f7ea8f03 Merge pull request #4611 from DSpace/backport-4606-to-main
[Port main] [Dependabot] Bump webpack-dev-server from 4.15.2 to 5.2.1
2025-07-30 16:05:31 -05:00
dependabot[bot]
a1fb28a03f Bump webpack-dev-server from 4.15.2 to 5.2.1
Bumps [webpack-dev-server](https://github.com/webpack/webpack-dev-server) from 4.15.2 to 5.2.1.
- [Release notes](https://github.com/webpack/webpack-dev-server/releases)
- [Changelog](https://github.com/webpack/webpack-dev-server/blob/master/CHANGELOG.md)
- [Commits](https://github.com/webpack/webpack-dev-server/compare/v4.15.2...v5.2.1)

---
updated-dependencies:
- dependency-name: webpack-dev-server
  dependency-version: 5.2.1
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
(cherry picked from commit 8454a1cbe7)
2025-07-30 19:58:59 +00:00
Alan Orth
c1bd789180 Merge pull request #4610 from tdonohue/change_dependabot_schedule 2025-07-30 11:39:02 -07:00
Tim Donohue
2ee68323d5 Update dependabot to run monthly 2025-07-30 11:53:04 -05:00
Tim Donohue
3fc4cedb44 Merge pull request #4544 from DSpace/dependabot/npm_and_yarn/core-js-3.44.0
Bump core-js from 3.42.0 to 3.44.0
2025-07-30 11:42:38 -05:00
Tim Donohue
69655a5217 Merge pull request #4471 from DSpace/dependabot/npm_and_yarn/ngtools/webpack-18.2.20
Bump @ngtools/webpack from 18.2.19 to 18.2.20
2025-07-30 10:08:22 -05:00
Tim Donohue
7fafa8602c Merge pull request #4575 from DSpace/dependabot/npm_and_yarn/axios-1.11.0
Bump axios from 1.10.0 to 1.11.0
2025-07-30 09:59:26 -05:00
Tim Donohue
eddbe0eea5 Merge pull request #4344 from jlipka/fix/4327-encode-version-summary
fix(versioning): Encode summary
2025-07-30 09:20:49 -05:00
Shafi Habibi
a85f5c5d5c Update fa.json5 2025-07-30 17:29:25 +03:30
Shafi Habibi
c20de9eddf Update fa.json5 2025-07-30 17:17:19 +03:30
Alan Orth
4cfbe00dd1 Merge pull request #4597 from DSpace/dependabot/npm_and_yarn/isbot-5.1.29 2025-07-29 10:43:40 -07:00
dependabot[bot]
9bae9e2659 Bump isbot from 5.1.28 to 5.1.29
Bumps [isbot](https://github.com/omrilotan/isbot) from 5.1.28 to 5.1.29.
- [Changelog](https://github.com/omrilotan/isbot/blob/main/CHANGELOG.md)
- [Commits](https://github.com/omrilotan/isbot/compare/v5.1.28...v5.1.29)

---
updated-dependencies:
- dependency-name: isbot
  dependency-version: 5.1.29
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-29 14:44:25 +00:00
Tim Donohue
813f9ba23f Merge pull request #4483 from alanorth/dependabot-typescript
.github/dependabot.yml: adjust rules for typescript
2025-07-29 09:28:54 -05:00
Tim Donohue
9555630ae0 Merge pull request #4482 from alanorth/ng-tools-dependabot
.github/dependabot.yml: group @ngtools/webpack with Angular
2025-07-29 09:26:22 -05:00
Alan Orth
4cd8544a43 .github/dependabot.yml: group @ngtools/webpack with Angular
@ngtools/webpack is provided by the Angular team and follows the
same versioning so we should group it with Angular in dependabot.
2025-07-28 21:53:09 -07:00
Alan Orth
460cef44c1 .github/dependabot.yml: adjust rules for typescript
Our package.json uses the "~" specifier to pin typescript to patch
versions so dependabot should not try to update minor versions here.
2025-07-28 21:48:20 -07:00
Tim Donohue
5c0580201f Merge pull request #4593 from tdonohue/remove_pgcryto_in_docker
[Docker] Remover references to obsolete backend "pgcrypto" images
2025-07-28 16:22:51 -05:00
Tim Donohue
1e4ee4fb0b Update Docker to no longer reference removed/replaced backend "pgcrypto" images. 2025-07-28 15:48:14 -05:00
Tim Donohue
38b641e577 Update package-lock.json to remove dependency that is no longer needed. This was an automated change by "npm install" 2025-07-28 09:22:35 -05:00
dependabot[bot]
45953931d9 Bump @babel/runtime from 7.27.6 to 7.28.2
Bumps [@babel/runtime](https://github.com/babel/babel/tree/HEAD/packages/babel-runtime) from 7.27.6 to 7.28.2.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.28.2/packages/babel-runtime)

---
updated-dependencies:
- dependency-name: "@babel/runtime"
  dependency-version: 7.28.2
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-28 07:43:55 +00:00
Alan Orth
0435802002 Merge pull request #4536 from lareferencia/fix-search-bar-empty-query-interaction 2025-07-24 10:58:43 -07:00
dependabot[bot]
b751b103b1 Bump axios from 1.10.0 to 1.11.0
Bumps [axios](https://github.com/axios/axios) from 1.10.0 to 1.11.0.
- [Release notes](https://github.com/axios/axios/releases)
- [Changelog](https://github.com/axios/axios/blob/v1.x/CHANGELOG.md)
- [Commits](https://github.com/axios/axios/compare/v1.10.0...v1.11.0)

---
updated-dependencies:
- dependency-name: axios
  dependency-version: 1.11.0
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-23 16:52:33 +00:00
Tim Donohue
11fdc4ab39 Merge pull request #4568 from lareferencia/fix-subcommunity-current-parent-order
Fix current parent order when creating subcommunity
2025-07-23 10:41:55 -05:00
Jesiel Viana
44fcc7221b Fix current parent order when creating subcommunity 2025-07-23 09:18:40 -03:00
Tim Donohue
841a46c9a9 Merge tag 'dspace-7.6.5' 2025-07-22 16:12:32 -05:00
Tim Donohue
6967b84ddb Merge tag 'dspace-7.6.4' 2025-07-22 16:11:46 -05:00
Tim Donohue
9497decf07 Update version tag for release 2025-07-22 15:30:23 -05:00
Tim Donohue
d4edbf2e25 Automatic update to yarn.locak after various dependency updates. This dependency is no longer needed. 2025-07-22 11:26:15 -05:00
Pierre Lasou
8c4e8f38bc Update to correct errors and duplicates 2025-07-22 12:23:06 -04:00
Tim Donohue
f80992f1fc Merge pull request #4559 from DSpace/dependabot/npm_and_yarn/dspace-7_x/morgan-1.10.1
Bump morgan from 1.10.0 to 1.10.1
2025-07-22 10:52:57 -05:00
Alan Orth
4179519953 Merge pull request #4557 from DSpace/dependabot/npm_and_yarn/morgan-1.10.1 2025-07-21 21:31:24 -07:00
Alan Orth
bb3af14b6c Merge pull request #4560 from DSpace/dependabot/npm_and_yarn/dspace-7_x/compression-1.8.1 2025-07-21 21:27:13 -07:00
Alan Orth
dc6b317425 Merge pull request #4490 from DSpace/dependabot/npm_and_yarn/eslint-036d341c50 2025-07-21 21:08:52 -07:00
Alan Orth
3a5f4565a5 Merge pull request #4493 from DSpace/dependabot/npm_and_yarn/dspace-7_x/eslint-036d341c50 2025-07-21 21:07:37 -07:00
Alan Orth
fc43e2473d Merge pull request #4457 from DSpace/dependabot/npm_and_yarn/dspace-7_x/sass-63defccb8e 2025-07-21 18:17:26 -07:00
Alan Orth
ae15b2fa73 Merge pull request #4558 from DSpace/dependabot/npm_and_yarn/compression-1.8.1 2025-07-21 18:12:35 -07:00
Pierre Lasou
003a5f5ee8 Adding translation for all missing french translations
This commit is adding translations for all parameters that were tagged "// TODO New key - Add a translation" in fr.json5 file.
2025-07-21 13:22:36 -04:00
dependabot[bot]
16da9855fc Bump compression from 1.8.0 to 1.8.1
---
updated-dependencies:
- dependency-name: compression
  dependency-version: 1.8.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-21 06:47:30 +00:00
dependabot[bot]
821f16ea1d Bump morgan from 1.10.0 to 1.10.1
---
updated-dependencies:
- dependency-name: morgan
  dependency-version: 1.10.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-21 06:45:01 +00:00
dependabot[bot]
a1aaf906ca Bump compression from 1.8.0 to 1.8.1
Bumps [compression](https://github.com/expressjs/compression) from 1.8.0 to 1.8.1.
- [Release notes](https://github.com/expressjs/compression/releases)
- [Changelog](https://github.com/expressjs/compression/blob/master/HISTORY.md)
- [Commits](https://github.com/expressjs/compression/compare/1.8.0...v1.8.1)

---
updated-dependencies:
- dependency-name: compression
  dependency-version: 1.8.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-21 06:22:45 +00:00
dependabot[bot]
6f6cdc545f Bump morgan from 1.10.0 to 1.10.1
---
updated-dependencies:
- dependency-name: morgan
  dependency-version: 1.10.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-21 06:15:18 +00:00
dependabot[bot]
f9fb6d06f1 Bump eslint-plugin-import from 2.31.0 to 2.32.0 in the eslint group
Bumps the eslint group with 1 update: [eslint-plugin-import](https://github.com/import-js/eslint-plugin-import).


Updates `eslint-plugin-import` from 2.31.0 to 2.32.0
- [Release notes](https://github.com/import-js/eslint-plugin-import/releases)
- [Changelog](https://github.com/import-js/eslint-plugin-import/blob/main/CHANGELOG.md)
- [Commits](https://github.com/import-js/eslint-plugin-import/compare/v2.31.0...v2.32.0)

---
updated-dependencies:
- dependency-name: eslint-plugin-import
  dependency-version: 2.32.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: eslint
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-21 05:38:45 +00:00
dependabot[bot]
4fa71b801c Bump sass from 1.89.1 to 1.89.2 in the sass group
Bumps the sass group with 1 update: [sass](https://github.com/sass/dart-sass).


Updates `sass` from 1.89.1 to 1.89.2
- [Release notes](https://github.com/sass/dart-sass/releases)
- [Changelog](https://github.com/sass/dart-sass/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sass/dart-sass/compare/1.89.1...1.89.2)

---
updated-dependencies:
- dependency-name: sass
  dependency-version: 1.89.2
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: sass
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-21 05:38:29 +00:00
dependabot[bot]
acf4a25eb2 Bump eslint-plugin-import from 2.31.0 to 2.32.0 in the eslint group
Bumps the eslint group with 1 update: [eslint-plugin-import](https://github.com/import-js/eslint-plugin-import).


Updates `eslint-plugin-import` from 2.31.0 to 2.32.0
- [Release notes](https://github.com/import-js/eslint-plugin-import/releases)
- [Changelog](https://github.com/import-js/eslint-plugin-import/blob/main/CHANGELOG.md)
- [Commits](https://github.com/import-js/eslint-plugin-import/compare/v2.31.0...v2.32.0)

---
updated-dependencies:
- dependency-name: eslint-plugin-import
  dependency-version: 2.32.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: eslint
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-21 05:17:54 +00:00
Tim Donohue
9c37858cfe Merge pull request #4552 from wwtamu/patch-1
Update legacy Bootstrap spacing class in object-list.component.html
2025-07-18 08:49:44 -05:00
wwtamu
3e6b8c0529 Update object-list.component.html refactoring bootstrap spacing class 2025-07-17 11:53:20 -05:00
Jesiel Viana
c7c1c0fc17 fix back button navigation after visiting a community or collection page 2025-07-16 08:02:44 -03:00
Tim Donohue
7a7e468492 Update version tag for development of next release 2025-07-14 14:10:06 -05:00
Tim Donohue
34fc08766d Update version tag for release 2025-07-14 14:04:48 -05:00
dependabot[bot]
5b808ff432 Bump core-js from 3.42.0 to 3.44.0
Bumps [core-js](https://github.com/zloirock/core-js/tree/HEAD/packages/core-js) from 3.42.0 to 3.44.0.
- [Release notes](https://github.com/zloirock/core-js/releases)
- [Changelog](https://github.com/zloirock/core-js/blob/master/CHANGELOG.md)
- [Commits](https://github.com/zloirock/core-js/commits/v3.44.0/packages/core-js)

---
updated-dependencies:
- dependency-name: core-js
  dependency-version: 3.44.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-14 06:15:32 +00:00
Shafi Habibi
a078807fc0 Update fa.json5 2025-07-13 23:36:51 +03:30
Tim Donohue
13d6acaf76 Sync i18n files to prepare for the 7.6.4 release 2025-07-11 13:43:39 -05:00
Tim Donohue
addd1b04b1 Merge pull request #4487 from arvoConsultores/i18n-russian-translation
Russian translation
2025-07-10 16:08:45 -05:00
Tim Donohue
032381008e Enable Russian by default. Reorder alphabetical by language code 2025-07-10 16:06:26 -05:00
Shafi Habibi
69c33d7bca Update fa.json5 2025-07-10 23:02:32 +03:30
Tim Donohue
d9c0401bdd Merge pull request #4530 from atmire/w2p-119612_export-item-limit-7_x
[Port dspace-7_x] UI warning for export item limit
2025-07-10 13:25:34 -05:00
Jens Vannerum
5a2702c797 fix missing imports after backport 2025-07-10 10:39:55 +02:00
Tim Donohue
cfd6780b3d Merge pull request #4491 from DSpace/dependabot/npm_and_yarn/bootstrap-5.3.7
Bump bootstrap from 5.3.6 to 5.3.7
2025-07-09 08:57:10 -05:00
Sergio Fernández Celorio
f85042e0d6 Fixed lint errors 2025-07-09 11:02:15 +02:00
dependabot[bot]
a048e98f03 Bump bootstrap from 5.3.6 to 5.3.7
Bumps [bootstrap](https://github.com/twbs/bootstrap) from 5.3.6 to 5.3.7.
- [Release notes](https://github.com/twbs/bootstrap/releases)
- [Commits](https://github.com/twbs/bootstrap/compare/v5.3.6...v5.3.7)

---
updated-dependencies:
- dependency-name: bootstrap
  dependency-version: 5.3.7
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-08 21:19:47 +00:00
Tim Donohue
2b9aea3798 Merge pull request #4460 from DSpace/dependabot/npm_and_yarn/angular-43581e9bed
Bump the angular group with 3 updates
2025-07-08 16:18:05 -05:00
Tim Donohue
c51fc63fbc Merge pull request #4538 from alexandrevryghem/bootstrap-issues_contribute-main
Migrated remaining bootstrap 4 classes & other minor css fixes
2025-07-08 15:26:56 -05:00
Shafi Habibi
57bed93f16 Update fa.json5 2025-07-08 23:46:36 +03:30
Alexandre Vryghem
a59dc5adb0 Merge branch 'bootstrap-issues_contribute-9.0' into bootstrap-issues_contribute-main 2025-07-08 18:40:30 +02:00
Alexandre Vryghem
1085c9812f Merge branch 'w2p-132350_minor-css-fixes_contribute-7.6' into bootstrap-issues_contribute-main 2025-07-08 12:46:05 +02:00
Jesiel Viana
cf34198d54 fix empty search query after previous non-empty search 2025-07-07 15:10:03 -03:00
dependabot[bot]
321a05dbef Bump the angular group with 3 updates
Bumps the angular group with 3 updates: [@angular/ssr](https://github.com/angular/angular-cli), [@angular-devkit/build-angular](https://github.com/angular/angular-cli) and [@angular/cli](https://github.com/angular/angular-cli).


Updates `@angular/ssr` from 18.2.19 to 18.2.20
- [Release notes](https://github.com/angular/angular-cli/releases)
- [Changelog](https://github.com/angular/angular-cli/blob/main/CHANGELOG.md)
- [Commits](https://github.com/angular/angular-cli/compare/18.2.19...18.2.20)

Updates `@angular-devkit/build-angular` from 18.2.19 to 18.2.20
- [Release notes](https://github.com/angular/angular-cli/releases)
- [Changelog](https://github.com/angular/angular-cli/blob/main/CHANGELOG.md)
- [Commits](https://github.com/angular/angular-cli/compare/18.2.19...18.2.20)

Updates `@angular/cli` from 18.2.19 to 18.2.20
- [Release notes](https://github.com/angular/angular-cli/releases)
- [Changelog](https://github.com/angular/angular-cli/blob/main/CHANGELOG.md)
- [Commits](https://github.com/angular/angular-cli/compare/18.2.19...18.2.20)

---
updated-dependencies:
- dependency-name: "@angular/ssr"
  dependency-version: 18.2.20
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: angular
- dependency-name: "@angular-devkit/build-angular"
  dependency-version: 18.2.20
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: angular
- dependency-name: "@angular/cli"
  dependency-version: 18.2.20
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: angular
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-07 06:01:50 +00:00
Jens Vannerum
dabc3b400b 119612: fix spec test
(cherry picked from commit 6232d4e9cf)
2025-07-04 10:26:25 +02:00
Jens Vannerum
5b19ebe48c 119612: aria-label to also include warning message if applicable
(cherry picked from commit 8eaff78737)
2025-07-04 10:25:51 +02:00
Jens Vannerum
32511b0f50 119612: Check if a warning should be shown on changes to the total elements of the search, default to 500 if no value for the configuration property was returned
(cherry picked from commit e1b773c097)
2025-07-04 10:25:43 +02:00
Jens Vannerum
17e58ae5e3 119612: UI warning that only first part of configured items will be exported
(cherry picked from commit b69b21af6c)
2025-07-04 10:24:36 +02:00
Tim Donohue
0d87a72f41 Merge pull request #4417 from atmire/w2p-131442_backport-4335-to-dspace-7_x
[Port dspace-7_x] Improve accessibility for screen readers
2025-07-03 15:14:03 -05:00
Tim Donohue
a17d58acc5 Merge pull request #4277 from DSpace/backport-3888-to-dspace-7_x
[Port dspace-7_x] Fixed search page still returning stale data after invalidating a request
2025-07-03 14:42:57 -05:00
Tim Donohue
277154b4ed Merge pull request #4521 from rsaraivac/patch-5
Update pt-PT.json5
2025-07-02 15:38:31 -05:00
Ricardo Saraiva
d17f0a2a3d Update pt-PT.json5
Minor corretions and updates.
2025-07-02 09:16:41 +01:00
Tim Donohue
9c6bb828e8 Merge pull request #3819 from atmire/vocabulary-preloadlevel-fix-main
Vocabulary preloadlevel fix
2025-07-01 17:03:09 -05:00
Tim Donohue
44f2ad7f4f Merge pull request #3821 from atmire/vocabulary-preloadlevel-fix-7_x
[Port dspace-7_x] Vocabulary preloadlevel fix
2025-07-01 17:02:27 -05:00
Tim Donohue
c7f8ed1f42 Merge pull request #4519 from atmire/accessibility-settings-7_x
[Port dspace-7_x] Accessibility settings page SSR Fix
2025-07-01 13:58:20 -05:00
Jesiel Viana
0b14bbcc0c fix merge 2025-07-01 12:24:14 -03:00
Andreas Awouters
c6ef2467bc 119602: Fix SSR error by making klaroService optional
KlaroService handles cookies which are not applicable during SSR. By
making the service optional, and handling the case when it is not
available, SSR can do its work without throwing NullInjectorErrors.
2025-07-01 09:06:40 +02:00
Tim Donohue
9f09c33a83 Merge pull request #4518 from tdonohue/port_4506_to_main
[Port main] Improve Hungarian translations in DSpace 9.0
2025-06-30 16:20:42 -05:00
Jesiel Viana
d5103bb16a remove hardcoded HTML tags from cookie popup translations 2025-06-30 17:59:21 -03:00
Zoltán Kanász-Nagy
1a80e2ea87 Improve Hungarian translations in DSpace 9.0 (#4506)
* QREPO-0 improving HU translations

* QREPO-0 improving HU translations

* QREPO-0 HU translations: grant-request-copy messages

* QREPO-0 improving HU translations

* QREPO-0 HU translation improvements

* QREPO-0 HU translation improvements

* QREPO-0 HU translation improvements

* QREPO-0 HU translation improvements

* QREPO-0 HU translations improvements

* QREPO-0 HU translation improvements

* QREPO-0 HU translation improvements

* QREPO-0 removing TODO comments

* QREPO-0 inserting some missing new lines

* QREPO-0 HU translation improvements
2025-06-30 14:38:46 -05:00
Tim Donohue
c07bc3c379 Merge pull request #3615 from atmire/accessibility-settings-7_x
[Port dspace-7_x] Accessibility settings page
2025-06-30 11:03:38 -05:00
Andreas Awouters
b44f74a20a 119602: Port disabling of cookie popup from main 2025-06-30 11:54:20 +02:00
Andreas Awouters
50757247ab Merge branch 'dspace-7_x' into accessibility-settings-7_x 2025-06-30 10:37:10 +02:00
Andreas Awouters
1883d93198 119602: Open tooltip to left of info icon 2025-06-30 10:35:47 +02:00
Andreas Awouters
d9ab4bca65 119602: Align accessibility link with other footer links 2025-06-30 10:35:26 +02:00
Alan Orth
9b72b1c36e Merge pull request #4489 from DSpace/dependabot/npm_and_yarn/postcss-bff535204e 2025-06-28 12:00:14 +03:00
Alan Orth
edeb2d2e3a Merge pull request #4492 from DSpace/dependabot/npm_and_yarn/dspace-7_x/postcss-bff535204e 2025-06-28 11:57:44 +03:00
Tim Donohue
f807f5ae77 Merge pull request #4291 from oscar-escire/Issue/3989
Improve community list e2e tests
2025-06-27 11:13:58 -05:00
Tim Donohue
c2257ebc81 Merge pull request #4449 from 4Science/task/dspace-7_x/DURACOM-291
[Port dspace-7_x] Fix submission section visibility in order to rely on the configured section scope
2025-06-26 16:41:09 -05:00
Tim Donohue
cf2407ba90 Merge pull request #4488 from alexandrevryghem/w2p-117573_remove-observable-function-calls-from-template-7_x
[Port dspace-7_x] Removed observable function calls from template (part 2)
2025-06-26 11:36:11 -05:00
Alexandre Vryghem
45934e31f2 132350: Fixed some SASS variables not being overridable in the themes
Also fixed the authority icons not being totally centered in the onebox submission fields
2025-06-25 11:51:58 +02:00
dependabot[bot]
e0af01ff43 Bump postcss from 8.5.5 to 8.5.6 in the postcss group
Bumps the postcss group with 1 update: [postcss](https://github.com/postcss/postcss).


Updates `postcss` from 8.5.5 to 8.5.6
- [Release notes](https://github.com/postcss/postcss/releases)
- [Changelog](https://github.com/postcss/postcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/postcss/postcss/compare/8.5.5...8.5.6)

---
updated-dependencies:
- dependency-name: postcss
  dependency-version: 8.5.6
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: postcss
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-23 06:08:24 +00:00
dependabot[bot]
b201661ce1 Bump postcss from 8.5.5 to 8.5.6 in the postcss group
Bumps the postcss group with 1 update: [postcss](https://github.com/postcss/postcss).


Updates `postcss` from 8.5.5 to 8.5.6
- [Release notes](https://github.com/postcss/postcss/releases)
- [Changelog](https://github.com/postcss/postcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/postcss/postcss/compare/8.5.5...8.5.6)

---
updated-dependencies:
- dependency-name: postcss
  dependency-version: 8.5.6
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: postcss
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-23 05:46:45 +00:00
Alexandre Vryghem
7afe49d2b0 117287: Fixed various layout issues
- The unthemed home news didn't stick to the header like the dspace theme
- Impersonate user button has additional margin
- Submission form loading icon is not translatable
- Create resource policy page doesn't have the correct heading

(cherry picked from commit 56e45a9f08)
2025-06-21 01:38:08 +02:00
Alexandre Vryghem
c89ad9f22a 122464: Fixed a memory leak when initComponentInstance is called multiple times
(cherry picked from commit 62f15668b6)
2025-06-21 01:33:21 +02:00
Alexandre Vryghem
391e87a11f Merge branch 'w2p-117573_remove-observable-function-calls-from-template-7.6' 2025-06-21 01:26:12 +02:00
Sergio Fernández Celorio
b6ee8dff9f Russian translation 2025-06-19 13:00:02 +02:00
Alan Orth
a864260d00 Merge pull request #4458 from DSpace/dependabot/npm_and_yarn/dspace-7_x/postcss-ff1e1e588d 2025-06-17 09:26:32 +03:00
Alan Orth
417f835b56 Merge pull request #4465 from DSpace/dependabot/npm_and_yarn/sass-63defccb8e 2025-06-17 08:34:54 +03:00
Alan Orth
fdb747537e Merge pull request #4470 from DSpace/dependabot/npm_and_yarn/postcss-ff1e1e588d 2025-06-17 08:34:18 +03:00
Alan Orth
abfdf63482 Merge pull request #4463 from DSpace/dependabot/npm_and_yarn/dspace-7_x/axios-1.10.0 2025-06-17 07:06:53 +03:00
Alan Orth
ed2095a275 Merge pull request #4468 from DSpace/dependabot/npm_and_yarn/axios-1.10.0 2025-06-17 07:04:34 +03:00
dependabot[bot]
7beac7d568 Bump @ngtools/webpack from 18.2.19 to 18.2.20
Bumps [@ngtools/webpack](https://github.com/angular/angular-cli) from 18.2.19 to 18.2.20.
- [Release notes](https://github.com/angular/angular-cli/releases)
- [Changelog](https://github.com/angular/angular-cli/blob/main/CHANGELOG.md)
- [Commits](https://github.com/angular/angular-cli/compare/18.2.19...18.2.20)

---
updated-dependencies:
- dependency-name: "@ngtools/webpack"
  dependency-version: 18.2.20
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-16 05:43:07 +00:00
dependabot[bot]
54f8dddc8c Bump postcss from 8.5.4 to 8.5.5 in the postcss group
Bumps the postcss group with 1 update: [postcss](https://github.com/postcss/postcss).


Updates `postcss` from 8.5.4 to 8.5.5
- [Release notes](https://github.com/postcss/postcss/releases)
- [Changelog](https://github.com/postcss/postcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/postcss/postcss/compare/8.5.4...8.5.5)

---
updated-dependencies:
- dependency-name: postcss
  dependency-version: 8.5.5
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: postcss
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-16 05:42:32 +00:00
dependabot[bot]
44e248d1df Bump axios from 1.9.0 to 1.10.0
Bumps [axios](https://github.com/axios/axios) from 1.9.0 to 1.10.0.
- [Release notes](https://github.com/axios/axios/releases)
- [Changelog](https://github.com/axios/axios/blob/v1.x/CHANGELOG.md)
- [Commits](https://github.com/axios/axios/compare/v1.9.0...v1.10.0)

---
updated-dependencies:
- dependency-name: axios
  dependency-version: 1.10.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-16 05:41:45 +00:00
dependabot[bot]
03d7c5284e Bump sass from 1.89.1 to 1.89.2 in the sass group
Bumps the sass group with 1 update: [sass](https://github.com/sass/dart-sass).


Updates `sass` from 1.89.1 to 1.89.2
- [Release notes](https://github.com/sass/dart-sass/releases)
- [Changelog](https://github.com/sass/dart-sass/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sass/dart-sass/compare/1.89.1...1.89.2)

---
updated-dependencies:
- dependency-name: sass
  dependency-version: 1.89.2
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: sass
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-16 05:40:58 +00:00
dependabot[bot]
7f3b3370d9 Bump axios from 1.9.0 to 1.10.0
Bumps [axios](https://github.com/axios/axios) from 1.9.0 to 1.10.0.
- [Release notes](https://github.com/axios/axios/releases)
- [Changelog](https://github.com/axios/axios/blob/v1.x/CHANGELOG.md)
- [Commits](https://github.com/axios/axios/compare/v1.9.0...v1.10.0)

---
updated-dependencies:
- dependency-name: axios
  dependency-version: 1.10.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-16 05:40:32 +00:00
dependabot[bot]
d56119793f Bump postcss from 8.5.4 to 8.5.5 in the postcss group
Bumps the postcss group with 1 update: [postcss](https://github.com/postcss/postcss).


Updates `postcss` from 8.5.4 to 8.5.5
- [Release notes](https://github.com/postcss/postcss/releases)
- [Changelog](https://github.com/postcss/postcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/postcss/postcss/compare/8.5.4...8.5.5)

---
updated-dependencies:
- dependency-name: postcss
  dependency-version: 8.5.5
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: postcss
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-16 05:38:56 +00:00
Alan Orth
aecfabbf93 Merge pull request #4389 from jlipka/fix/4346-delete-group-confirm-dialog
Confirmation dialog before deleting Group
2025-06-13 21:39:25 +03:00
Jukka Lipka
20510591e4 fix: add styles to confirmation modal
Words are forced to break if no more space available
2025-06-13 17:32:29 +02:00
Jukka Lipka
55d2f0ce38 fix: cleanup / unnecessary changes reverted 2025-06-13 17:22:16 +02:00
Jukka Lipka
137bbc35bd fix: added translations 2025-06-13 17:22:16 +02:00
Jukka Lipka
57bf254bec fix: confirm dialog for group deletion
Introduced a confirmation modal before deleting groups in both the Group Registry and Comcol Role components. This ensures users explicitly confirm deletion, reducing accidental data loss. Updated relevant tests and added new translations for modal text.
2025-06-13 17:22:15 +02:00
Shafi Habibi
d72a02137a Update fa.json5 2025-06-12 21:24:45 +03:30
Tim Donohue
7677f2941d Merge pull request #4450 from DSpace/backport-4434-to-dspace-7_x
[Port dspace-7_x] Resolve field instance models using index when filtering errors
2025-06-12 12:47:31 -05:00
kshepherd
db81d5ec42 Merge pull request #4448 from ybnd/defer-geospatial-map-components_9.x
Lazy-load geospatial map code
2025-06-12 19:17:45 +02:00
Kim Shepherd
7ef44c5e35 Resolve field instance models using index when filtering errors
(cherry picked from commit d218e22944)
2025-06-12 16:40:39 +00:00
Tim Donohue
7c27392cda Merge pull request #4434 from the-library-code/fix_repeated_field_errors
Resolve field instance models using index when filtering errors
2025-06-12 11:40:25 -05:00
Yury Bondarenko
6c3bbf617c Remove unneeded platform checks 2025-06-12 17:55:05 +02:00
Giuseppe Digilio
a77f98e29e [DURACOM-291] back porting of fix submission section visibility in order to rely on the configured section scope 2025-06-12 15:53:21 +02:00
Yury Bondarenko
c147354ee1 Fix failing unit test
According to the Angular docs it should be possible to "trigger" the different states of the @defer block
https://angular.dev/guide/templates/defer#testing-defer-blocks
...but I wasn't able to get this example to work either.

This was the only case where we directly test an inner component's reflected inputs, so IMO it makes sense to "let it go".
2025-06-11 16:27:12 +02:00
Yury Bondarenko
343718d07b Defer geospatial map components 2025-06-11 14:28:37 +02:00
Alan Orth
5c66bb9d2b Merge pull request #4442 from DSpace/dependabot/npm_and_yarn/dspace-7_x/babel/runtime-7.27.6
Bump @babel/runtime from 7.27.4 to 7.27.6
2025-06-11 12:23:18 +03:00
Alan Orth
37bd0fd904 Merge pull request #4445 from DSpace/dependabot/npm_and_yarn/babel/runtime-7.27.6
Bump @babel/runtime from 7.27.4 to 7.27.6
2025-06-11 12:19:58 +03:00
dependabot[bot]
d9a9f0d837 Bump @babel/runtime from 7.27.4 to 7.27.6
Bumps [@babel/runtime](https://github.com/babel/babel/tree/HEAD/packages/babel-runtime) from 7.27.4 to 7.27.6.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.27.6/packages/babel-runtime)

---
updated-dependencies:
- dependency-name: "@babel/runtime"
  dependency-version: 7.27.6
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-09 06:28:09 +00:00
dependabot[bot]
7cc17a5544 Bump @babel/runtime from 7.27.4 to 7.27.6
Bumps [@babel/runtime](https://github.com/babel/babel/tree/HEAD/packages/babel-runtime) from 7.27.4 to 7.27.6.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.27.6/packages/babel-runtime)

---
updated-dependencies:
- dependency-name: "@babel/runtime"
  dependency-version: 7.27.6
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-09 05:32:54 +00:00
Alan Orth
b7b1e368d6 Merge pull request #4430 from DSpace/dependabot/npm_and_yarn/dspace-7_x/sass-d83863101d
Bump sass from 1.89.0 to 1.89.1 in the sass group
2025-06-05 08:54:07 +03:00
Alan Orth
00fc2a21f7 Merge pull request #4433 from DSpace/dependabot/npm_and_yarn/sass-d83863101d
Bump sass from 1.89.0 to 1.89.1 in the sass group
2025-06-05 08:52:43 +03:00
Kim Shepherd
d218e22944 Resolve field instance models using index when filtering errors 2025-06-04 19:11:41 +02:00
dependabot[bot]
e2159709f5 Bump sass from 1.89.0 to 1.89.1 in the sass group
Bumps the sass group with 1 update: [sass](https://github.com/sass/dart-sass).


Updates `sass` from 1.89.0 to 1.89.1
- [Release notes](https://github.com/sass/dart-sass/releases)
- [Changelog](https://github.com/sass/dart-sass/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sass/dart-sass/compare/1.89.0...1.89.1)

---
updated-dependencies:
- dependency-name: sass
  dependency-version: 1.89.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: sass
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-04 13:50:19 +00:00
dependabot[bot]
5e8dd3480f Bump sass from 1.89.0 to 1.89.1 in the sass group
Bumps the sass group with 1 update: [sass](https://github.com/sass/dart-sass).


Updates `sass` from 1.89.0 to 1.89.1
- [Release notes](https://github.com/sass/dart-sass/releases)
- [Changelog](https://github.com/sass/dart-sass/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sass/dart-sass/compare/1.89.0...1.89.1)

---
updated-dependencies:
- dependency-name: sass
  dependency-version: 1.89.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: sass
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-04 13:49:29 +00:00
Tim Donohue
469c715751 Merge pull request #4424 from alanorth/dependabot-zone.js
.github/dependabot.yml: adjust rules for zone.js
2025-06-04 08:45:50 -05:00
Alan Orth
f2131ec757 Merge pull request #4427 from DSpace/backport-4076-to-dspace-7_x
[Port dspace-7_x] fix typo in German translation of bitstream.edit.form.description.hint
2025-06-04 14:05:27 +03:00
Sascha Szott
c52c7e778a fix typo in German translation of bitstream.edit.form.description.hint
(cherry picked from commit c72af8edb5)
2025-06-04 09:52:26 +00:00
Alan Orth
bc3d8399dd Merge pull request #4076 from saschaszott/saschaszott-patch-12
fix typo in German translation of bitstream.edit.form.description.hint
2025-06-04 12:45:53 +03:00
Alan Orth
b870c54c83 Merge pull request #4357 from DSpace/dependabot/npm_and_yarn/dspace-7_x/sanitize-html-2.17.0
Bump sanitize-html from 2.16.0 to 2.17.0
2025-06-04 12:39:34 +03:00
Alan Orth
c838b4298c .github/dependabot.yml: adjust rules for zone.js
As @angular/core uses the "~" specifier to pin zone.js to a patch
version,dependabot should not try to update minor versions here.

See: https://github.com/angular/angular/blob/18.2.x/packages/core/package.json
2025-06-04 09:48:31 +03:00
Alan Orth
0ec98a576a Merge pull request #4406 from DSpace/dependabot/npm_and_yarn/postcss-3f4fa9ea8d
Bump postcss from 8.5.3 to 8.5.4 in the postcss group
2025-06-03 09:09:26 +03:00
Alan Orth
f58ab77d5d Merge pull request #4409 from DSpace/dependabot/npm_and_yarn/dspace-7_x/postcss-3f4fa9ea8d
Bump postcss from 8.5.3 to 8.5.4 in the postcss group
2025-06-03 09:07:50 +03:00
Alan Orth
3d16975020 Merge pull request #4414 from DSpace/dependabot/npm_and_yarn/babel/runtime-7.27.4
Bump @babel/runtime from 7.27.3 to 7.27.4
2025-06-03 09:05:03 +03:00
Alan Orth
406b46ba3f Merge pull request #4410 from DSpace/dependabot/npm_and_yarn/dspace-7_x/babel/runtime-7.27.4
Bump @babel/runtime from 7.27.3 to 7.27.4
2025-06-03 09:03:45 +03:00
Tim Donohue
aa9c8bab1d Merge pull request #4362 from GauravD2t/translation_hindi_gu_ma
add Gujarati(gu) and marathi(mr) json5 file
2025-06-02 12:13:32 -05:00
Alexandre Vryghem
b6448a7caf 129964: Fixed the header role structure being invalid in the custom theme
- Replaced the menubar role from the parent of all the header buttons like lang switch, auth menu & help toggle with toolbar
- Replaced the remaining `<a>` buttons in the header with `<button>` to make them expandable with space
- Fixed accessibility issues flagged by axe DevTools in the user menu dropdown
2025-06-02 13:55:33 +02:00
dependabot[bot]
df6f52f85c Bump @babel/runtime from 7.27.3 to 7.27.4
Bumps [@babel/runtime](https://github.com/babel/babel/tree/HEAD/packages/babel-runtime) from 7.27.3 to 7.27.4.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.27.4/packages/babel-runtime)

---
updated-dependencies:
- dependency-name: "@babel/runtime"
  dependency-version: 7.27.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-02 06:48:21 +00:00
dependabot[bot]
8a1daa5cf9 Bump @babel/runtime from 7.27.3 to 7.27.4
Bumps [@babel/runtime](https://github.com/babel/babel/tree/HEAD/packages/babel-runtime) from 7.27.3 to 7.27.4.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.27.4/packages/babel-runtime)

---
updated-dependencies:
- dependency-name: "@babel/runtime"
  dependency-version: 7.27.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-02 06:45:45 +00:00
dependabot[bot]
fa9ddefb59 Bump postcss from 8.5.3 to 8.5.4 in the postcss group
Bumps the postcss group with 1 update: [postcss](https://github.com/postcss/postcss).


Updates `postcss` from 8.5.3 to 8.5.4
- [Release notes](https://github.com/postcss/postcss/releases)
- [Changelog](https://github.com/postcss/postcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/postcss/postcss/compare/8.5.3...8.5.4)

---
updated-dependencies:
- dependency-name: postcss
  dependency-version: 8.5.4
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: postcss
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-02 06:42:07 +00:00
dependabot[bot]
22c7662506 Bump postcss from 8.5.3 to 8.5.4 in the postcss group
Bumps the postcss group with 1 update: [postcss](https://github.com/postcss/postcss).


Updates `postcss` from 8.5.3 to 8.5.4
- [Release notes](https://github.com/postcss/postcss/releases)
- [Changelog](https://github.com/postcss/postcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/postcss/postcss/compare/8.5.3...8.5.4)

---
updated-dependencies:
- dependency-name: postcss
  dependency-version: 8.5.4
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: postcss
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-02 06:37:52 +00:00
Alan Orth
8a1ca84d91 Merge pull request #4402 from DSpace/backport-2774-to-dspace-7_x
[Port dspace-7_x] German translation improvements in cookie consent dialog
2025-06-01 17:42:12 +03:00
Shafi Habibi
366d0e1aad Update fa.json5 2025-05-31 21:32:23 +03:30
Tim Donohue
06e30050a4 Merge pull request #4384 from atmire/w2p-131441_backport-3065-7.6
[Port dspace-7_x] Made AdminSearchPageComponent themeable
2025-05-30 10:38:39 -05:00
Tim Donohue
ce2b52ba43 Merge pull request #4377 from DSpace/dependabot/npm_and_yarn/testing-ff22ddd0c9
Bump ng-mocks from 14.13.4 to 14.13.5 in the testing group
2025-05-29 08:50:04 -05:00
Tim Donohue
ffda0d6521 Merge pull request #4379 from DSpace/dependabot/npm_and_yarn/dspace-7_x/testing-ff22ddd0c9
Bump ng-mocks from 14.13.4 to 14.13.5 in the testing group
2025-05-29 08:49:39 -05:00
gaurav patel
a2c53c6b8a Merge branch 'DSpace:main' into translation_hindi_gu_ma 2025-05-29 16:46:30 +05:30
Sascha Szott
a692a6762d added german translations
(cherry picked from commit 4ca1edfc63)
2025-05-29 05:53:54 +00:00
Sascha Szott
2687ded0df added German translations
(cherry picked from commit f12fae3865)
2025-05-29 05:53:54 +00:00
Sascha Szott
e387be1e10 minor translation improvement: use plural in German translation
(cherry picked from commit 027a5ec5f0)
2025-05-29 05:53:54 +00:00
Alan Orth
a9c50c19e3 Merge pull request #2774 from saschaszott/patch-15
German translation improvements in cookie consent dialog
2025-05-29 08:53:32 +03:00
Alan Orth
cea455e316 Merge pull request #4395 from DSpace/dependabot/npm_and_yarn/babel/runtime-7.27.3
Bump @babel/runtime from 7.27.1 to 7.27.3
2025-05-29 08:42:05 +03:00
Alan Orth
b0e56c4129 Merge pull request #4398 from DSpace/dependabot/npm_and_yarn/dspace-7_x/babel/runtime-7.27.3
Bump @babel/runtime from 7.27.1 to 7.27.3
2025-05-29 08:39:56 +03:00
dependabot[bot]
9a11618d11 Bump sanitize-html from 2.16.0 to 2.17.0
Bumps [sanitize-html](https://github.com/apostrophecms/sanitize-html) from 2.16.0 to 2.17.0.
- [Changelog](https://github.com/apostrophecms/sanitize-html/blob/main/CHANGELOG.md)
- [Commits](https://github.com/apostrophecms/sanitize-html/compare/2.16.0...2.17.0)

---
updated-dependencies:
- dependency-name: sanitize-html
  dependency-version: 2.17.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-28 21:27:11 +00:00
Tim Donohue
5b47170b6d Merge pull request #4380 from DSpace/dependabot/npm_and_yarn/dspace-7_x/types/lodash-4.17.17
Bump @types/lodash from 4.17.16 to 4.17.17
2025-05-28 16:10:09 -05:00
Tim Donohue
7d1cf1d01c Merge pull request #4378 from DSpace/dependabot/npm_and_yarn/webpack-51a062295f
Bump webpack from 5.99.8 to 5.99.9 in the webpack group
2025-05-28 15:50:11 -05:00
dependabot[bot]
c9aef54eeb Bump webpack from 5.99.8 to 5.99.9 in the webpack group
Bumps the webpack group with 1 update: [webpack](https://github.com/webpack/webpack).


Updates `webpack` from 5.99.8 to 5.99.9
- [Release notes](https://github.com/webpack/webpack/releases)
- [Commits](https://github.com/webpack/webpack/compare/v5.99.8...v5.99.9)

---
updated-dependencies:
- dependency-name: webpack
  dependency-version: 5.99.9
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: webpack
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-28 18:34:08 +00:00
dependabot[bot]
983551aea8 Bump @babel/runtime from 7.27.1 to 7.27.3
Bumps [@babel/runtime](https://github.com/babel/babel/tree/HEAD/packages/babel-runtime) from 7.27.1 to 7.27.3.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.27.3/packages/babel-runtime)

---
updated-dependencies:
- dependency-name: "@babel/runtime"
  dependency-version: 7.27.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-28 18:33:15 +00:00
dependabot[bot]
51d1a558fa Bump @babel/runtime from 7.27.1 to 7.27.3
Bumps [@babel/runtime](https://github.com/babel/babel/tree/HEAD/packages/babel-runtime) from 7.27.1 to 7.27.3.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.27.3/packages/babel-runtime)

---
updated-dependencies:
- dependency-name: "@babel/runtime"
  dependency-version: 7.27.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-28 18:29:32 +00:00
dependabot[bot]
9d48aab127 Bump ng-mocks from 14.13.4 to 14.13.5 in the testing group
Bumps the testing group with 1 update: [ng-mocks](https://github.com/help-me-mom/ng-mocks).


Updates `ng-mocks` from 14.13.4 to 14.13.5
- [Release notes](https://github.com/help-me-mom/ng-mocks/releases)
- [Changelog](https://github.com/help-me-mom/ng-mocks/blob/master/CHANGELOG.md)
- [Commits](https://github.com/help-me-mom/ng-mocks/compare/v14.13.4...v14.13.5)

---
updated-dependencies:
- dependency-name: ng-mocks
  dependency-version: 14.13.5
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: testing
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-28 18:27:37 +00:00
dependabot[bot]
1727acab33 Bump ng-mocks from 14.13.4 to 14.13.5 in the testing group
Bumps the testing group with 1 update: [ng-mocks](https://github.com/help-me-mom/ng-mocks).


Updates `ng-mocks` from 14.13.4 to 14.13.5
- [Release notes](https://github.com/help-me-mom/ng-mocks/releases)
- [Changelog](https://github.com/help-me-mom/ng-mocks/blob/master/CHANGELOG.md)
- [Commits](https://github.com/help-me-mom/ng-mocks/compare/v14.13.4...v14.13.5)

---
updated-dependencies:
- dependency-name: ng-mocks
  dependency-version: 14.13.5
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: testing
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-28 18:08:28 +00:00
Tim Donohue
e24fd0eea0 Merge pull request #4392 from tdonohue/dependabot_for_9x
Add dependabot configuration for dspace-9_x.
2025-05-28 13:00:19 -05:00
Tim Donohue
ee95cbfaef Add dependabot configuration for dspace-9_x. Set a specific time for each to run so that they run together as much as possible. 2025-05-28 11:44:34 -05:00
Joran De Braekeleer
bf585e77c3 Merge remote-tracking branch 'upstream/dspace-7_x' into w2p-131442_backport-4335-to-dspace-7_x 2025-05-28 18:02:40 +02:00
Tim Donohue
a226502c72 Merge pull request #4387 from atmire/w2p-127655_fix-submission-form-getting-stuck-in-loop_contribute-7.6
[Port dspace-7_x] Fix infinite loading submission forms
2025-05-27 16:43:54 -05:00
Tim Donohue
4f79574a76 Merge pull request #4383 from atmire/w2p-130424_impossible-to-add-new-values-for-fields-without-qualifiers_contribute-7.6
[Port dspace-7_x] Fix unqualified metadata field validation in Edit Metadata tab by sorting fields in validation request
2025-05-27 14:55:33 -05:00
Shafi Habibi
3fb1e77001 Update fa.json5 2025-05-27 12:54:23 +03:30
frabacche
cb0ac0c9e5 fix e2e test 18x aria on <ul> html tag
(cherry picked from commit e6389a73df)
2025-05-26 13:18:46 +02:00
abhinav
d3876c7c0a Merge branch 'dspace-7_x' into w2p-127655_fix-submission-form-getting-stuck-in-loop_contribute-7.6 2025-05-26 11:23:24 +02:00
Sergio Fernández Celorio
36ca66c09a Fixed some errors 2025-05-26 11:06:25 +02:00
Sergio Fernández Celorio
5530ba9a0d Spanish translation updated 2025-05-26 10:54:59 +02:00
Alexandre Vryghem
db119e4118 Fixed search facet deadlock
Also fixed minor issue in MetadataService, but this doesn't cause any issues in the current code

(cherry picked from commit 446280b59a)
2025-05-26 10:50:48 +02:00
abhinav
0c9f8c02f6 Merge remote-tracking branch 'alex-upstream/w2p-115051_themed-admin-search-page_contribute-7.4' into w2p-131441_backport-3065-7.6 2025-05-26 10:45:44 +02:00
gaurav patel
5ac8dc13ac Rename Gu.json5 to gu.json5 2025-05-26 10:11:16 +05:30
gauravd2t
ce34bd271d change file name 2025-05-26 10:09:18 +05:30
gaurav patel
81152ef506 Merge branch 'DSpace:main' into translation_hindi_gu_ma 2025-05-26 10:06:24 +05:30
dependabot[bot]
e42d4228ed Bump @types/lodash from 4.17.16 to 4.17.17
Bumps [@types/lodash](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/lodash) from 4.17.16 to 4.17.17.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/lodash)

---
updated-dependencies:
- dependency-name: "@types/lodash"
  dependency-version: 4.17.17
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-26 02:53:33 +00:00
Shafi Habibi
4f7dfbe5ff Update fa.json5 2025-05-24 19:38:26 +03:30
Tim Donohue
c15831191f Update homepage header/description for DSpace 10 2025-05-23 12:37:13 -05:00
Tim Donohue
0a2db167ff Update version tag for development of next major release 2025-05-23 11:21:17 -05:00
abhinav
38812a3e04 Merge branch 'dspace-7_x' into w2p-130424_impossible-to-add-new-values-for-fields-without-qualifiers_contribute-7.6 2025-05-23 18:11:40 +02:00
Tim Donohue
d87b83f9e9 Update version tag for development of next release 2025-05-23 11:06:00 -05:00
Shafi Habibi
e28f24ff15 Update fa.json5 2025-05-23 08:48:45 +03:30
Shafi Habibi
43e6b3b54a Update fa.json5 2025-05-23 08:19:22 +03:30
Shafi Habibi
1af8be2bdb Update fa.json5 2025-05-23 08:17:50 +03:30
Shafi Habibi
8a10866dce Update fa.json5 2025-05-23 08:08:03 +03:30
Shafi Habibi
27a1dfff6d Update fa.json5 2025-05-23 08:00:36 +03:30
Shafi Habibi
c2b7e7b0b8 Create fa.json5
Persian language
2025-05-23 07:55:46 +03:30
Tim Donohue
1aaa20ec73 Merge pull request #4365 from DSpace/backport-4364-to-dspace-7_x
[Port dspace-7_x] Remove stray comma from `config.example.yml` which makes example config invalid
2025-05-22 13:58:46 -05:00
Tim Donohue
e7709b8091 Remove stray comma
(cherry picked from commit bcd2081ee3)
2025-05-22 17:05:11 +00:00
gaurav patel
b1a2008873 Merge branch 'DSpace:main' into translation_hindi_gu_ma 2025-05-22 13:20:14 +05:30
gauravd2t
dade46ca79 add Gujarati and marathi json5 file 2025-05-22 10:26:25 +05:30
Tim Donohue
6971ac98c2 Merge pull request #4354 from DSpace/dependabot/npm_and_yarn/dspace-7_x/eslint-1ccb09f07e
Bump eslint-plugin-jsonc from 2.20.0 to 2.20.1 in the eslint group
2025-05-19 11:07:07 -05:00
Tim Donohue
280866a58f Merge pull request #4355 from DSpace/dependabot/npm_and_yarn/dspace-7_x/sass-5219375de9
Bump sass from 1.88.0 to 1.89.0 in the sass group
2025-05-19 11:05:57 -05:00
Tim Donohue
c8b375d238 Merge pull request #4356 from DSpace/dependabot/npm_and_yarn/dspace-7_x/isbot-5.1.28
Bump isbot from 5.1.27 to 5.1.28
2025-05-19 10:22:32 -05:00
dependabot[bot]
37383acb6b Bump isbot from 5.1.27 to 5.1.28
Bumps [isbot](https://github.com/omrilotan/isbot) from 5.1.27 to 5.1.28.
- [Changelog](https://github.com/omrilotan/isbot/blob/main/CHANGELOG.md)
- [Commits](https://github.com/omrilotan/isbot/compare/v5.1.27...v5.1.28)

---
updated-dependencies:
- dependency-name: isbot
  dependency-version: 5.1.28
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-19 03:06:55 +00:00
dependabot[bot]
277eca837e Bump sass from 1.88.0 to 1.89.0 in the sass group
Bumps the sass group with 1 update: [sass](https://github.com/sass/dart-sass).


Updates `sass` from 1.88.0 to 1.89.0
- [Release notes](https://github.com/sass/dart-sass/releases)
- [Changelog](https://github.com/sass/dart-sass/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sass/dart-sass/compare/1.88.0...1.89.0)

---
updated-dependencies:
- dependency-name: sass
  dependency-version: 1.89.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: sass
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-19 03:06:09 +00:00
dependabot[bot]
160f33f98a Bump eslint-plugin-jsonc from 2.20.0 to 2.20.1 in the eslint group
Bumps the eslint group with 1 update: [eslint-plugin-jsonc](https://github.com/ota-meshi/eslint-plugin-jsonc).


Updates `eslint-plugin-jsonc` from 2.20.0 to 2.20.1
- [Release notes](https://github.com/ota-meshi/eslint-plugin-jsonc/releases)
- [Changelog](https://github.com/ota-meshi/eslint-plugin-jsonc/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ota-meshi/eslint-plugin-jsonc/compare/v2.20.0...v2.20.1)

---
updated-dependencies:
- dependency-name: eslint-plugin-jsonc
  dependency-version: 2.20.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: eslint
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-19 03:05:35 +00:00
Jukka Lipka
2dd870ea7e fix(versioning): encode summary
The reason for creating a new version is now encoded in the URL.
2025-05-16 09:15:40 +02:00
Tim Donohue
ca92b4cf0e Merge pull request #4342 from DSpace/backport-4341-to-dspace-7_x
[Port dspace-7_x] Use ellipsis for truncatable parts
2025-05-15 15:54:06 -05:00
Andrea Barbasso
46b58c369e [CST-19327] use ellipsis for truncatable parts
(cherry picked from commit 6703a07207)
2025-05-15 19:55:45 +00:00
Tim Donohue
a0ebf4af63 Merge pull request #4322 from DSpace/dependabot/npm_and_yarn/dspace-7_x/sass-d0f2b75659
Bump sass from 1.87.0 to 1.88.0 in the sass group
2025-05-14 10:02:48 -05:00
Alexandre Vryghem
c58b398e43 129964: Restored language button border on focus 2025-05-14 13:49:16 +02:00
Oscar Chacón
492023ce22 removed unnecessary class on name/span validation 2025-05-14 00:41:10 -06:00
Tim Donohue
df2d18b5f1 Merge pull request #4336 from DSpace/backport-3373-to-dspace-7_x
[Port dspace-7_x] Adjust the font size of the 'No thumbnails available' text.
2025-05-13 17:34:16 -05:00
DanGastardelli
1e8c55faf4 Adjust thumb text for smaller resolutions
(cherry picked from commit fa723c17a9)
2025-05-13 21:41:21 +00:00
DanGastardelli
9273c83179 Key spacing adjustment
(cherry picked from commit 829d406808)
2025-05-13 21:41:21 +00:00
DanGastardelli
e06caab25c Adding treatment for the use of the thumb-font-2 class
(cherry picked from commit e06db4cbab)
2025-05-13 21:41:21 +00:00
DanGastardelli
a21db5b887 Changed the implementation of changing the text font size when there is no thumbnail.
(cherry picked from commit 3cd5432034)
2025-05-13 21:41:21 +00:00
DanGastardelli
cae435a5c7 Adjust the font size of the 'No thumbnails available' text.
(cherry picked from commit c4dfed0e02)
2025-05-13 21:41:21 +00:00
Tim Donohue
974e3bf3f3 Merge pull request #4323 from DSpace/dependabot/npm_and_yarn/dspace-7_x/types/sanitize-html-2.16.0
Bump @types/sanitize-html from 2.15.0 to 2.16.0
2025-05-13 14:42:28 -05:00
Tim Donohue
f0ce4b2170 Merge pull request #4314 from oscar-escire/new-dspace-7_x
[Port dspace-7_x] Keyboard 'tab' key navigation improved
2025-05-13 12:08:40 -05:00
Tim Donohue
206df7781e Merge pull request #4334 from tdonohue/port_4326_to_7x
[Port dspace-7_x] Add basic automated tests to ensure common HTTP Return Codes do not break
2025-05-13 11:35:48 -05:00
Tim Donohue
2301a8fd52 Add basic tests to our build to verify correct HTTP return codes for 301, 403, 404 and 500. 2025-05-13 10:59:45 -05:00
Tim Donohue
f9aa721ec8 Merge pull request #4332 from 4Science/task/dspace-7_x/DURACOM-344
[Port dspace-7_x] Remove `ssr.paths` configuration and replace with `ssr.excludePathPatterns` which excludes specific paths from SSR
2025-05-13 10:58:45 -05:00
FrancescoMolinaro
d47baab3a1 [DURACOM-344] fix property name 2025-05-13 16:11:00 +02:00
FrancescoMolinaro
c0e71a0e68 [DURACOM-344] refactor solution to avoid double slashes 2025-05-13 15:41:21 +02:00
FrancescoMolinaro
21ac024423 [DURACOM-344] adapt patterns and example file, fix possible error from YAML 2025-05-13 15:38:42 +02:00
FrancescoMolinaro
ce0f6153b9 [DURACOM-344] Adapt SSR page filtering mechanism to a not allowed list 2025-05-13 15:37:31 +02:00
dependabot[bot]
cafcee110e Bump @types/sanitize-html from 2.15.0 to 2.16.0
Bumps [@types/sanitize-html](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/sanitize-html) from 2.15.0 to 2.16.0.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/sanitize-html)

---
updated-dependencies:
- dependency-name: "@types/sanitize-html"
  dependency-version: 2.16.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-12 03:09:54 +00:00
dependabot[bot]
a8fcad7b6a Bump sass from 1.87.0 to 1.88.0 in the sass group
Bumps the sass group with 1 update: [sass](https://github.com/sass/dart-sass).


Updates `sass` from 1.87.0 to 1.88.0
- [Release notes](https://github.com/sass/dart-sass/releases)
- [Changelog](https://github.com/sass/dart-sass/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sass/dart-sass/compare/1.87.0...1.88.0)

---
updated-dependencies:
- dependency-name: sass
  dependency-version: 1.88.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: sass
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-12 03:09:06 +00:00
Oscar Chacón
5c446d18f7 fixed accessibility tests on filters 2025-05-09 15:56:13 -06:00
Oscar Chacón
cd0aa134f8 fixed some dynamic params over <a> components 2025-05-09 15:07:55 -06:00
Oscar Chacón
9aed649160 improved "tab" navigation in safari 2025-05-09 13:27:29 -06:00
Tim Donohue
fbbf16f387 Merge pull request #4250 from atmire/fix-embargoed-thumbnails_contribute-7.6
[Port dspace-7_x] Show restricted thumbnails to users with access rights
2025-05-08 16:09:07 -05:00
Art Lowel
283b345cdc always use thumbnail component for files not supported by the media viewer, and switch to themed version of thumbnail component 2025-05-08 11:26:14 +02:00
Tim Donohue
aaa4b910e2 Merge pull request #4307 from DSpace/backport-4288-to-dspace-7_x
[Port dspace-7_x] Bitstream upload failure during the workflow editing process when impersonating an editor
2025-05-07 17:10:02 -05:00
Adamo
926abe6241 [DURACOM-312] lint fix
(cherry picked from commit c68e5a181d)
2025-05-07 21:42:14 +00:00
Adamo
97fd42a2e1 [DURACOM-312] set the X-On-Behalf-Of header with impersonatingID in FileUploader.
(cherry picked from commit 727bcdc2cb23ae7fcff1d9ddfa794f872f1d1b8c)
(cherry picked from commit 0574c8ed98)
2025-05-07 21:42:14 +00:00
Adamo
3cff971297 [DURACOM-312] set the newly created impersonatingID filed in UploaderOptions.
(cherry picked from commit c70fe184208805be8657d4373f50f193e2c6e85f)
(cherry picked from commit 70c6af3630)
2025-05-07 21:42:14 +00:00
Adamo
49b27b5bc0 [DURACOM-312] updated UploaderOptions to include impersonatingID.
(cherry picked from commit 2c79be1456c753665e27b58563e56accc87b0383)
(cherry picked from commit 4b0ab8161f)
2025-05-07 21:42:14 +00:00
Tim Donohue
f9f3d186c5 Merge pull request #4305 from 4Science/task/dspace-7_x/DURACOM-326
[Port dspace-7_x] [DURACOM-326] fix possible issue on missing value for eperson patch #4289
2025-05-07 09:19:27 -05:00
FrancescoMolinaro
05e1fc3505 [DURACOM-326] fix possible issue on missing value for eperson patch 2025-05-07 14:36:26 +02:00
Tim Donohue
3635bf40fe Merge pull request #4296 from DSpace/dependabot/npm_and_yarn/dspace-7_x/core-js-3.42.0
Bump core-js from 3.41.0 to 3.42.0
2025-05-06 17:07:06 -05:00
Art Lowel
70d1e499c1 don't show the loading animation when src is set to null 2025-05-06 14:58:53 +02:00
Art Lowel
e40a44c5ac fix issue where thumbnail would sometimes keep loading indefinitely 2025-05-06 14:38:45 +02:00
Alan Orth
498fad9e76 Merge pull request #4295 from DSpace/dependabot/npm_and_yarn/dspace-7_x/babel/runtime-7.27.1
Bump @babel/runtime from 7.27.0 to 7.27.1
2025-05-06 07:50:55 +03:00
dependabot[bot]
a1d391576e Bump core-js from 3.41.0 to 3.42.0
Bumps [core-js](https://github.com/zloirock/core-js/tree/HEAD/packages/core-js) from 3.41.0 to 3.42.0.
- [Release notes](https://github.com/zloirock/core-js/releases)
- [Changelog](https://github.com/zloirock/core-js/blob/master/CHANGELOG.md)
- [Commits](https://github.com/zloirock/core-js/commits/v3.42.0/packages/core-js)

---
updated-dependencies:
- dependency-name: core-js
  dependency-version: 3.42.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-05 02:46:13 +00:00
dependabot[bot]
d985bfa091 Bump @babel/runtime from 7.27.0 to 7.27.1
Bumps [@babel/runtime](https://github.com/babel/babel/tree/HEAD/packages/babel-runtime) from 7.27.0 to 7.27.1.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.27.1/packages/babel-runtime)

---
updated-dependencies:
- dependency-name: "@babel/runtime"
  dependency-version: 7.27.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-05 02:45:34 +00:00
Oscar Chacón
bcbbaabc76 Merge branch 'main' into Issue/3989
# Conflicts:
#	src/app/community-list-page/community-list/community-list.component.html
2025-05-02 16:59:10 -06:00
Oscar Chacón
a2dd3d185d improved community-list e2e tests 2025-05-02 16:57:40 -06:00
Tim Donohue
4eb827c089 Merge pull request #4286 from tdonohue/port_4282_to_7x
[Port dspace-7_x] Fixed Missing Tags in Import Popup from External Sources - 4220
2025-05-01 12:59:42 -05:00
guillermo2519
43db1731ec Fixed Missing Tags in Import Popup from External Sources - 4220 2025-05-01 12:21:29 -05:00
Tim Donohue
e2b72201b2 Merge pull request #4258 from DSpace/dependabot/npm_and_yarn/dspace-7_x/sass-f1c32079c7
Bump sass from 1.86.3 to 1.87.0 in the sass group
2025-05-01 10:04:10 -05:00
Tim Donohue
34248186e8 Merge pull request #4260 from DSpace/dependabot/npm_and_yarn/dspace-7_x/axios-1.9.0
Bump axios from 1.8.4 to 1.9.0
2025-04-30 17:18:15 -05:00
Tim Donohue
9dca838f25 Merge pull request #4281 from atmire/w2p-130484_bitstreams-tables-keep-being-duplicated-7_x
[Port dspace-7_x] Fix bitstream tables being duplicated
2025-04-30 11:26:43 -05:00
Andreas Awouters
ae23e68d12 130484: Filter new bundles 2025-04-30 15:51:57 +02:00
Andreas Awouters
501ccfea1b 130484: Correctly update the 'showLoadMoreLink$' observable 2025-04-30 14:15:52 +02:00
Andreas Awouters
02be3e0ad5 130484: Only add bundles when they are missing from the subject 2025-04-30 14:15:03 +02:00
Alexandre Vryghem
d34dafd838 119276: Added tests to prove that cached stale requests are not emitted
Also cleaned up test class

(cherry picked from commit 58ff240c05)
2025-04-29 18:58:02 +00:00
Alexandre Vryghem
85610d4eb6 119276: Fixed search service first emitting cached stale values instead of waiting for non-stale response
This was problematic for the places that used getFist operators. This is because they only emit data once, and the first value could be the old cached value

(cherry picked from commit edfaee6aab)
2025-04-29 18:58:01 +00:00
Tim Donohue
da12147043 Merge pull request #4259 from DSpace/dependabot/npm_and_yarn/dspace-7_x/isbot-5.1.27
Bump isbot from 5.1.26 to 5.1.27
2025-04-28 10:16:16 -05:00
dependabot[bot]
15a8008869 Bump axios from 1.8.4 to 1.9.0
Bumps [axios](https://github.com/axios/axios) from 1.8.4 to 1.9.0.
- [Release notes](https://github.com/axios/axios/releases)
- [Changelog](https://github.com/axios/axios/blob/v1.x/CHANGELOG.md)
- [Commits](https://github.com/axios/axios/compare/v1.8.4...v1.9.0)

---
updated-dependencies:
- dependency-name: axios
  dependency-version: 1.9.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-28 02:45:21 +00:00
dependabot[bot]
e35adee7f8 Bump isbot from 5.1.26 to 5.1.27
Bumps [isbot](https://github.com/omrilotan/isbot) from 5.1.26 to 5.1.27.
- [Changelog](https://github.com/omrilotan/isbot/blob/main/CHANGELOG.md)
- [Commits](https://github.com/omrilotan/isbot/compare/v5.1.26...v5.1.27)

---
updated-dependencies:
- dependency-name: isbot
  dependency-version: 5.1.27
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-28 02:45:12 +00:00
dependabot[bot]
ee3154c069 Bump sass from 1.86.3 to 1.87.0 in the sass group
Bumps the sass group with 1 update: [sass](https://github.com/sass/dart-sass).


Updates `sass` from 1.86.3 to 1.87.0
- [Release notes](https://github.com/sass/dart-sass/releases)
- [Changelog](https://github.com/sass/dart-sass/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sass/dart-sass/compare/1.86.3...1.87.0)

---
updated-dependencies:
- dependency-name: sass
  dependency-version: 1.87.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: sass
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-28 02:44:10 +00:00
Tim Donohue
b491ed3c27 Merge pull request #4253 from tdonohue/port_4212_to_7x
[Port dspace-7_x] Fix: prevent bitstream format cache issue by disabling cached version
2025-04-25 17:15:38 -05:00
Jesiel Viana
b184db7a99 fix unit tests for bitstream-data.service.ts 2025-04-25 16:47:58 -05:00
Jesiel Viana
eac787f1f4 fix: invalidate cache only for the modified bitstream 2025-04-25 16:45:58 -05:00
Jesiel Viana
8dbdb27c67 fix: prevent bitstream format cache issue by disabling cached version 2025-04-25 16:45:43 -05:00
Tim Donohue
02f30ab331 Merge pull request #4247 from DSpace/backport-4243-to-dspace-7_x
[Port dspace-7_x] Add translation keys for journal submission volume lookup
2025-04-25 12:23:38 -05:00
Joran De Braekeleer
523c13ff3d 130405: Add translations for journal submission volume lookup
(cherry picked from commit fef16bca14)
2025-04-25 15:31:43 +00:00
Art Lowel
1ddd248d0e Merge remote-tracking branch 'upstream/dspace-7_x' into fix-embargoed-thumbnails_contribute-7.6 2025-04-25 15:39:20 +02:00
Tim Donohue
7b25b1d63c Merge pull request #4233 from atmire/4099-duplicate-view-events_contibute-7.x
[Port to dspace-7_x] Fix for double view events when using dynamic themes
2025-04-23 17:01:35 -05:00
Tim Donohue
d43730a542 Merge pull request #4237 from DSpace/backport-4167-to-dspace-7_x
[Port dspace-7_x] Fix unable to remove data from a submission form field of type "name"
2025-04-23 13:44:34 -05:00
Tim Donohue
1c1b129068 Merge pull request #4238 from DSpace/backport-3968-to-dspace-7_x
[Port dspace-7_x] Fix - previously entered qualdrop value field is deleted when adding a new (emtpy) line with the same(!) qualifier and then deleting it
2025-04-23 12:53:22 -05:00
VictorDuranEscire
ae563442e7 Fix - Validate value on remove item for submission form only for qualdrop component
(cherry picked from commit 1e73fa626d)
2025-04-23 16:38:38 +00:00
abhinav
08d56407ff 129621: Add a not empty check
This check is present in the other event handlers above so adding it here as well.

(cherry picked from commit 0b28789e4f)
2025-04-23 16:07:11 +00:00
lotte
8bc2c8768f Merge branch 'dspace-7_x' into 4099-duplicate-view-events_contibute-7.x 2025-04-22 12:30:15 +02:00
lotte
9a0e4ec107 Merge branch '4099-duplicate-view-events_contibute-7.6.3' into 4099-duplicate-view-events_contibute-7.x 2025-04-22 10:43:32 +02:00
Tim Donohue
3a04ea8f79 Merge pull request #4222 from DSpace/dependabot/npm_and_yarn/dspace-7_x/sanitize-html-2.16.0
Bump sanitize-html from 2.15.0 to 2.16.0
2025-04-21 08:58:16 -05:00
dependabot[bot]
c272e51aeb Bump sanitize-html from 2.15.0 to 2.16.0
Bumps [sanitize-html](https://github.com/apostrophecms/sanitize-html) from 2.15.0 to 2.16.0.
- [Changelog](https://github.com/apostrophecms/sanitize-html/blob/main/CHANGELOG.md)
- [Commits](https://github.com/apostrophecms/sanitize-html/compare/2.15.0...2.16.0)

---
updated-dependencies:
- dependency-name: sanitize-html
  dependency-version: 2.16.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-21 02:50:44 +00:00
kshepherd
c6a1401f34 Merge pull request #4210 from alanorth/eslint-json5-dspace7
[Port dspace-7_x] Update ESLint configuration for json5 files
2025-04-17 00:44:27 +02:00
Alan Orth
19c680ebf0 .eslintrc.json: use jsonc/no-irregular-whitespace
The eslint-plugin-jsonc documentation recommends turning ESLint's
own no-irregular-whitespace plugin off for JSON files in favor of
its own jsonc/no-irregular-whitespace plugin.

See: https://ota-meshi.github.io/eslint-plugin-jsonc/rules/no-irregular-whitespace.html
2025-04-16 23:24:06 +03:00
Alan Orth
9a025f6610 .eslintrc.json: use plugin:jsonc/recommended-with-json5
The eslint-plugin-jsonc has a recommended configuration for json5.

See: https://ota-meshi.github.io/eslint-plugin-jsonc/user-guide/#usage
2025-04-16 23:21:52 +03:00
Tim Donohue
ac940c1bb2 Merge pull request #4026 from DSpace/dependabot/npm_and_yarn/dspace-7_x/postcss-c120d6abdd
Bump postcss from 8.5.1 to 8.5.3 in the postcss group across 1 directory
2025-04-16 11:47:22 -05:00
Tim Donohue
1c4f650ef9 Merge pull request #4186 from DSpace/dependabot/npm_and_yarn/dspace-7_x/http-proxy-middleware-2.0.9
Bump http-proxy-middleware from 2.0.7 to 2.0.9
2025-04-15 14:13:24 -05:00
Tim Donohue
6ef781822d Merge pull request #4150 from DSpace/dependabot/npm_and_yarn/dspace-7_x/multi-02a33f2273
Bump sanitize-html and @types/sanitize-html
2025-04-15 14:10:12 -05:00
Tim Donohue
0115edaa07 Merge pull request #4120 from DSpace/dependabot/npm_and_yarn/dspace-7_x/babel/runtime-7.27.0
Bump @babel/runtime from 7.26.7 to 7.27.0
2025-04-15 14:04:37 -05:00
Tim Donohue
faebbbe680 Merge pull request #4197 from tdonohue/port_4189_to_7x
[Port dspace-7_x] Add additional automated server-side rendering (SSR) tests for all Entity Types
2025-04-15 13:14:39 -05:00
dependabot[bot]
0ff0b5298a Bump http-proxy-middleware from 2.0.7 to 2.0.9
Bumps [http-proxy-middleware](https://github.com/chimurai/http-proxy-middleware) from 2.0.7 to 2.0.9.
- [Release notes](https://github.com/chimurai/http-proxy-middleware/releases)
- [Changelog](https://github.com/chimurai/http-proxy-middleware/blob/v2.0.9/CHANGELOG.md)
- [Commits](https://github.com/chimurai/http-proxy-middleware/compare/v2.0.7...v2.0.9)

---
updated-dependencies:
- dependency-name: http-proxy-middleware
  dependency-version: 2.0.9
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-15 15:09:53 +00:00
dependabot[bot]
87bb0d4e5a Bump sanitize-html and @types/sanitize-html
Bumps [sanitize-html](https://github.com/apostrophecms/sanitize-html) and [@types/sanitize-html](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/sanitize-html). These dependencies needed to be updated together.

Updates `sanitize-html` from 2.14.0 to 2.15.0
- [Changelog](https://github.com/apostrophecms/sanitize-html/blob/main/CHANGELOG.md)
- [Commits](https://github.com/apostrophecms/sanitize-html/compare/2.14.0...2.15.0)

Updates `@types/sanitize-html` from 2.13.0 to 2.15.0
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/sanitize-html)

---
updated-dependencies:
- dependency-name: sanitize-html
  dependency-version: 2.15.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
- dependency-name: "@types/sanitize-html"
  dependency-version: 2.15.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-15 15:04:44 +00:00
Tim Donohue
eee9897312 Merge pull request #4153 from DSpace/dependabot/npm_and_yarn/dspace-7_x/isbot-5.1.26
Bump isbot from 5.1.25 to 5.1.26
2025-04-15 09:51:13 -05:00
Tim Donohue
fdc23a3350 Merge pull request #4028 from DSpace/dependabot/npm_and_yarn/dspace-7_x/rxjs-7.8.2
Bump rxjs from 7.8.1 to 7.8.2
2025-04-15 09:49:12 -05:00
Tim Donohue
c4104be75b Add additional automated SSR tests for Community, Collection, Publication/Item, Person, OrgUnit and all Journal entities 2025-04-15 09:36:33 -05:00
dependabot[bot]
08a707477c Bump rxjs from 7.8.1 to 7.8.2
Bumps [rxjs](https://github.com/reactivex/rxjs) from 7.8.1 to 7.8.2.
- [Release notes](https://github.com/reactivex/rxjs/releases)
- [Changelog](https://github.com/ReactiveX/rxjs/blob/7.8.2/CHANGELOG.md)
- [Commits](https://github.com/reactivex/rxjs/compare/7.8.1...7.8.2)

---
updated-dependencies:
- dependency-name: rxjs
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-15 10:05:42 +00:00
Tim Donohue
d4efd6a8ef Merge pull request #4176 from DSpace/backport-4143-to-dspace-7_x
[Port dspace-7_x] Fix pagination on the "Select bitstreams" modal of the "Access Control" tab
2025-04-14 11:33:04 -05:00
dependabot[bot]
04516fad5a Bump postcss from 8.5.1 to 8.5.3 in the postcss group across 1 directory
Bumps the postcss group with 1 update in the / directory: [postcss](https://github.com/postcss/postcss).


Updates `postcss` from 8.5.1 to 8.5.3
- [Release notes](https://github.com/postcss/postcss/releases)
- [Changelog](https://github.com/postcss/postcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/postcss/postcss/compare/8.5.1...8.5.3)

---
updated-dependencies:
- dependency-name: postcss
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: postcss
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-14 03:16:07 +00:00
Tim Donohue
28eb709ef5 Merge pull request #4169 from atmire/w29-129641_fix-export-button_contribute-7_x
[Port dspace-7_x] Fix export button enabled in bulk access management without selecting step 2
2025-04-11 14:45:08 -05:00
Nona Luypaert
cc202b7adb 130081: Fix pagination on 'Select bistreams' modal on 'Access Control' tab
(cherry picked from commit c03bbb01a2)
2025-04-11 18:55:22 +00:00
Tim Donohue
f5df726a18 Merge pull request #4121 from arvoConsultores/DS-4097
Store the state of the computed filters
2025-04-11 11:28:51 -05:00
Tim Donohue
077467efa2 Merge pull request #4111 from DSpace/dependabot/npm_and_yarn/dspace-7_x/axios-1.8.4
Bump axios from 1.7.9 to 1.8.4
2025-04-11 06:53:08 -05:00
Sergio Fernández Celorio
dc3e842747 No need to subscribe anymore to the router events 2025-04-11 11:39:41 +02:00
dependabot[bot]
828648aa7e Bump axios from 1.7.9 to 1.8.4
Bumps [axios](https://github.com/axios/axios) from 1.7.9 to 1.8.4.
- [Release notes](https://github.com/axios/axios/releases)
- [Changelog](https://github.com/axios/axios/blob/v1.x/CHANGELOG.md)
- [Commits](https://github.com/axios/axios/compare/v1.7.9...v1.8.4)

---
updated-dependencies:
- dependency-name: axios
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-10 21:56:43 +00:00
Tim Donohue
7063c49072 Merge pull request #4065 from DSpace/dependabot/npm_and_yarn/dspace-7_x/testing-64070fe020
Bump the testing group with 2 updates
2025-04-10 16:53:53 -05:00
dependabot[bot]
036fd1c871 Bump the testing group with 2 updates
Bumps the testing group with 2 updates: [axe-core](https://github.com/dequelabs/axe-core) and [ng-mocks](https://github.com/help-me-mom/ng-mocks).


Updates `axe-core` from 4.10.2 to 4.10.3
- [Release notes](https://github.com/dequelabs/axe-core/releases)
- [Changelog](https://github.com/dequelabs/axe-core/blob/v4.10.3/CHANGELOG.md)
- [Commits](https://github.com/dequelabs/axe-core/compare/v4.10.2...v4.10.3)

Updates `ng-mocks` from 14.13.2 to 14.13.3
- [Release notes](https://github.com/help-me-mom/ng-mocks/releases)
- [Changelog](https://github.com/help-me-mom/ng-mocks/blob/master/CHANGELOG.md)
- [Commits](https://github.com/help-me-mom/ng-mocks/compare/v14.13.2...v14.13.3)

---
updated-dependencies:
- dependency-name: axe-core
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: testing
- dependency-name: ng-mocks
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: testing
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-10 19:27:52 +00:00
Tim Donohue
22db6745b8 Merge pull request #4148 from DSpace/dependabot/npm_and_yarn/dspace-7_x/eslint-7904436953
Bump eslint-plugin-jsonc from 2.19.1 to 2.20.0 in the eslint group
2025-04-10 10:55:12 -05:00
Sergio Fernández Celorio
4f42c1e95f Use take instead unsubscribe 2025-04-10 17:34:36 +02:00
dependabot[bot]
b37a7a1456 Bump isbot from 5.1.25 to 5.1.26
Bumps [isbot](https://github.com/omrilotan/isbot) from 5.1.25 to 5.1.26.
- [Changelog](https://github.com/omrilotan/isbot/blob/main/CHANGELOG.md)
- [Commits](https://github.com/omrilotan/isbot/compare/v5.1.25...v5.1.26)

---
updated-dependencies:
- dependency-name: isbot
  dependency-version: 5.1.26
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-09 22:27:19 +00:00
dependabot[bot]
33146603df Bump eslint-plugin-jsonc from 2.19.1 to 2.20.0 in the eslint group
Bumps the eslint group with 1 update: [eslint-plugin-jsonc](https://github.com/ota-meshi/eslint-plugin-jsonc).


Updates `eslint-plugin-jsonc` from 2.19.1 to 2.20.0
- [Release notes](https://github.com/ota-meshi/eslint-plugin-jsonc/releases)
- [Changelog](https://github.com/ota-meshi/eslint-plugin-jsonc/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ota-meshi/eslint-plugin-jsonc/compare/v2.19.1...v2.20.0)

---
updated-dependencies:
- dependency-name: eslint-plugin-jsonc
  dependency-version: 2.20.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: eslint
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-09 22:26:28 +00:00
Tim Donohue
d3a97d9d15 Merge pull request #4007 from DSpace/dependabot/npm_and_yarn/dspace-7_x/compression-1.8.0
Bump compression from 1.7.5 to 1.8.0
2025-04-09 17:16:35 -05:00
Tim Donohue
2a1c762e73 Merge pull request #4049 from DSpace/dependabot/npm_and_yarn/dspace-7_x/types/lodash-4.17.16
Bump @types/lodash from 4.17.15 to 4.17.16
2025-04-09 16:49:42 -05:00
Tim Donohue
c94279edc0 Merge pull request #4051 from DSpace/dependabot/npm_and_yarn/dspace-7_x/core-js-3.41.0
Bump core-js from 3.40.0 to 3.41.0
2025-04-09 16:31:36 -05:00
Tim Donohue
878b2dba4a Merge pull request #4050 from DSpace/dependabot/npm_and_yarn/dspace-7_x/sass-b0ce3413d9
Bump sass from 1.84.0 to 1.85.1 in the sass group across 1 directory
2025-04-09 16:16:14 -05:00
Tim Donohue
2eca99379f Merge pull request #4112 from DSpace/dependabot/npm_and_yarn/dspace-7_x/isbot-5.1.25
Bump isbot from 5.1.22 to 5.1.25
2025-04-09 12:30:57 -05:00
lotte
8a4405c473 Merge branch 'backport-4099-duplicate-view-events-7.6' into 4099-duplicate-view-events_contibute-7.6.3 2025-04-07 10:43:09 +02:00
dependabot[bot]
0d2e49b12c Bump sass from 1.84.0 to 1.85.1 in the sass group across 1 directory
Bumps the sass group with 1 update in the / directory: [sass](https://github.com/sass/dart-sass).


Updates `sass` from 1.84.0 to 1.85.1
- [Release notes](https://github.com/sass/dart-sass/releases)
- [Changelog](https://github.com/sass/dart-sass/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sass/dart-sass/compare/1.84.0...1.85.1)

---
updated-dependencies:
- dependency-name: sass
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: sass
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-07 03:06:35 +00:00
lotte
edd5496a4d 129694: Fixed lint issues 2025-04-04 15:11:02 +02:00
lotte
01becae7d0 129694: backported view tracker resolver 2025-04-04 13:31:49 +02:00
Tim Donohue
eef6bbe134 Merge pull request #3983 from atmire/no-platform-specific-code-in-abstract-services-7_x
No platform specific code in abstract services 7_x
2025-04-03 12:11:45 -05:00
lotte
ff5f23017a 129694: PoC #4099 solution with resolvers 2025-04-02 14:49:23 +02:00
Sergio Fernández Celorio
7dd6ab79ff Store the state of the computed filters 2025-03-31 09:14:32 +02:00
dependabot[bot]
ecc03343b7 Bump @babel/runtime from 7.26.7 to 7.27.0
Bumps [@babel/runtime](https://github.com/babel/babel/tree/HEAD/packages/babel-runtime) from 7.26.7 to 7.27.0.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.27.0/packages/babel-runtime)

---
updated-dependencies:
- dependency-name: "@babel/runtime"
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-31 02:43:43 +00:00
abhinav
2eb09b3ada SubmissionCoarNotifyWorkspaceitemModel removed
This doesn't seem to be used anywhere and was throwing some errors.
2025-03-26 18:11:16 +01:00
abhinav
fa6b8cc21d 129641: Fix Export button is enabled wrongly
This fixes the export button being enabled when the second step is not active in bulk access edit. The tests have been updated accordingly
2025-03-26 15:47:17 +01:00
abhinav
4510d18a7d 129629: Add models to provide-core.ts and remove duplicates 2025-03-26 14:36:46 +01:00
dependabot[bot]
6c11621d91 Bump isbot from 5.1.22 to 5.1.25
Bumps [isbot](https://github.com/omrilotan/isbot) from 5.1.22 to 5.1.25.
- [Changelog](https://github.com/omrilotan/isbot/blob/main/CHANGELOG.md)
- [Commits](https://github.com/omrilotan/isbot/compare/v5.1.22...v5.1.25)

---
updated-dependencies:
- dependency-name: isbot
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-24 02:47:30 +00:00
Sascha Szott
99d72b9348 Merge branch 'main' into patch-15 2025-03-14 15:59:53 +01:00
Alan Orth
d65ff20777 Merge pull request #4077 from arvoConsultores/DS-4053
Filters disappeared on reload
2025-03-14 16:23:57 +03:00
ana
c2528a9c1f Filters disappeared on reload 2025-03-13 09:51:17 +01:00
Sascha Szott
c72af8edb5 fix typo in German translation of bitstream.edit.form.description.hint 2025-03-12 19:09:16 +01:00
Andreas Awouters
3ad99804d1 Merge branch 'accessibility-settings-7.6' into accessibility-settings-7_x 2025-03-07 13:40:49 +01:00
kshepherd
99840ba3bc Merge pull request #4034 from alanorth/7_x-citation-doi
Add citation_doi tag to head meta
2025-03-06 13:43:08 +01:00
Alan Orth
204556de20 src/app/core: remove unnecessary comment
Remove commented out this.setCitationDOITag() since it is not used
and we use camel case with this.setCitationDoiTag() now anyway.
2025-03-05 16:40:14 +03:00
Alan Orth
8d7b4cd101 src/app/core: add citation_doi tag to head meta
This is used by harvesters like Altmetric and was present in DSpace
version 6 and previous.
2025-03-05 16:40:12 +03:00
dependabot[bot]
ac5c5c8a14 Bump core-js from 3.40.0 to 3.41.0
Bumps [core-js](https://github.com/zloirock/core-js/tree/HEAD/packages/core-js) from 3.40.0 to 3.41.0.
- [Release notes](https://github.com/zloirock/core-js/releases)
- [Changelog](https://github.com/zloirock/core-js/blob/master/CHANGELOG.md)
- [Commits](https://github.com/zloirock/core-js/commits/v3.41.0/packages/core-js)

---
updated-dependencies:
- dependency-name: core-js
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-03 03:10:19 +00:00
dependabot[bot]
008fe0151b Bump @types/lodash from 4.17.15 to 4.17.16
Bumps [@types/lodash](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/lodash) from 4.17.15 to 4.17.16.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/lodash)

---
updated-dependencies:
- dependency-name: "@types/lodash"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-03 03:10:07 +00:00
Andreas Awouters
f8bcce43b5 119602: Fix tests after merge 2025-02-21 13:19:01 +01:00
Andreas Awouters
e75052bbcf Merge branch 'dspace-7_x' into accessibility-settings-7_x
# Conflicts:
#	config/config.example.yml
#	src/config/app-config.interface.ts
#	src/config/default-app-config.ts
#	src/environments/environment.test.ts
2025-02-21 13:01:18 +01:00
Andreas Awouters
3340192382 Merge branch 'accessibility-settings-7.6' into accessibility-settings-7_x 2025-02-21 12:58:42 +01:00
dependabot[bot]
e9fa2812a0 Bump compression from 1.7.5 to 1.8.0
Bumps [compression](https://github.com/expressjs/compression) from 1.7.5 to 1.8.0.
- [Release notes](https://github.com/expressjs/compression/releases)
- [Changelog](https://github.com/expressjs/compression/blob/master/HISTORY.md)
- [Commits](https://github.com/expressjs/compression/compare/1.7.5...1.8.0)

---
updated-dependencies:
- dependency-name: compression
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-17 02:52:11 +00:00
Tim Donohue
885c52ed34 Merge pull request #3996 from DSpace/backport-3673-to-dspace-7_x
[Port dspace-7_x] Update fr.json5
2025-02-14 14:49:32 -06:00
Carolyn Sullivan
9b0669f76c Update fr.json5
Ajouté les corrections faites par Pierre Lasou :)

(cherry picked from commit e32d9feaf5)
2025-02-14 16:29:44 +00:00
Carolyn Sullivan
3daa110116 Update fr.json5
Ajouté des traductions/noté quelques étiquettes sans traductions

(cherry picked from commit 477ca5e712)
2025-02-14 16:29:44 +00:00
Tim Donohue
d9c6856d9c Merge pull request #3990 from DSpace/backport-3960-to-dspace-7_x
[Port dspace-7_x] Update fr.json5 to add identifiers deposit's step translations in french
2025-02-14 10:26:03 -06:00
Pierre Lasou
3372110839 Update fr.json5
(cherry picked from commit f721028d81)
2025-02-14 14:43:40 +00:00
Andreas Awouters
ddd7c323ab Merge branch 'no-platform-specific-code-in-abstract-services-7.6' into no-platform-specific-code-in-abstract-services-7_x 2025-02-13 13:31:21 +01:00
Tim Donohue
6446a52e46 Merge pull request #3969 from DSpace/dependabot/npm_and_yarn/dspace-7_x/sass-fd5fd03206
Bump sass from 1.83.4 to 1.84.0 in the sass group
2025-02-10 15:37:11 -06:00
Tim Donohue
e58a66f849 Merge pull request #3904 from DSpace/dependabot/npm_and_yarn/dspace-7_x/babel/runtime-7.26.7
Bump @babel/runtime from 7.26.0 to 7.26.7
2025-02-10 15:24:24 -06:00
Tim Donohue
1167f8a414 Merge pull request #3903 from DSpace/dependabot/npm_and_yarn/dspace-7_x/eslint-82f73a5bca
Bump eslint-plugin-jsonc from 2.18.2 to 2.19.1 in the eslint group
2025-02-10 12:08:30 -06:00
Tim Donohue
eee851f001 Merge pull request #3941 from DSpace/dependabot/npm_and_yarn/dspace-7_x/types/lodash-4.17.15
Bump @types/lodash from 4.17.14 to 4.17.15
2025-02-10 09:38:57 -06:00
Tim Donohue
b18ff86894 Merge pull request #3942 from DSpace/dependabot/npm_and_yarn/dspace-7_x/isbot-5.1.22
Bump isbot from 5.1.21 to 5.1.22
2025-02-10 09:36:29 -06:00
Tim Donohue
e811083339 Merge pull request #3940 from DSpace/dependabot/npm_and_yarn/dspace-7_x/testing-206d00ed14
Bump cypress-axe from 1.5.0 to 1.6.0 in the testing group
2025-02-10 09:33:34 -06:00
dependabot[bot]
e0590109c1 Bump sass from 1.83.4 to 1.84.0 in the sass group
Bumps the sass group with 1 update: [sass](https://github.com/sass/dart-sass).


Updates `sass` from 1.83.4 to 1.84.0
- [Release notes](https://github.com/sass/dart-sass/releases)
- [Changelog](https://github.com/sass/dart-sass/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sass/dart-sass/compare/1.83.4...1.84.0)

---
updated-dependencies:
- dependency-name: sass
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: sass
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-10 02:18:27 +00:00
dependabot[bot]
ed1aa37100 Bump cypress-axe from 1.5.0 to 1.6.0 in the testing group
Bumps the testing group with 1 update: [cypress-axe](https://github.com/component-driven/cypress-axe).


Updates `cypress-axe` from 1.5.0 to 1.6.0
- [Release notes](https://github.com/component-driven/cypress-axe/releases)
- [Commits](https://github.com/component-driven/cypress-axe/compare/v1.5.0...v1.6.0)

---
updated-dependencies:
- dependency-name: cypress-axe
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: testing
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-10 02:18:04 +00:00
dependabot[bot]
601850cb6a Bump eslint-plugin-jsonc from 2.18.2 to 2.19.1 in the eslint group
Bumps the eslint group with 1 update: [eslint-plugin-jsonc](https://github.com/ota-meshi/eslint-plugin-jsonc).


Updates `eslint-plugin-jsonc` from 2.18.2 to 2.19.1
- [Release notes](https://github.com/ota-meshi/eslint-plugin-jsonc/releases)
- [Changelog](https://github.com/ota-meshi/eslint-plugin-jsonc/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ota-meshi/eslint-plugin-jsonc/compare/v2.18.2...v2.19.1)

---
updated-dependencies:
- dependency-name: eslint-plugin-jsonc
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: eslint
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-10 02:18:00 +00:00
Tim Donohue
ebe26a7eb0 Update version tag for development of next release 2025-02-07 11:21:57 -06:00
dependabot[bot]
45cc177cab Bump isbot from 5.1.21 to 5.1.22
Bumps [isbot](https://github.com/omrilotan/isbot) from 5.1.21 to 5.1.22.
- [Changelog](https://github.com/omrilotan/isbot/blob/main/CHANGELOG.md)
- [Commits](https://github.com/omrilotan/isbot/compare/v5.1.21...v5.1.22)

---
updated-dependencies:
- dependency-name: isbot
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-03 03:04:40 +00:00
dependabot[bot]
59b39f12d6 Bump @types/lodash from 4.17.14 to 4.17.15
Bumps [@types/lodash](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/lodash) from 4.17.14 to 4.17.15.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/lodash)

---
updated-dependencies:
- dependency-name: "@types/lodash"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-03 03:03:49 +00:00
dependabot[bot]
868b021118 Bump @babel/runtime from 7.26.0 to 7.26.7
Bumps [@babel/runtime](https://github.com/babel/babel/tree/HEAD/packages/babel-runtime) from 7.26.0 to 7.26.7.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.26.7/packages/babel-runtime)

---
updated-dependencies:
- dependency-name: "@babel/runtime"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-27 02:35:56 +00:00
Andreas Awouters
d4b0cf21d3 Merge remote-tracking branch 'dspace/dspace-7_x' into accessibility-settings-7_x
# Conflicts:
#	src/app/profile-page/profile-page.component.html
#	src/app/shared/notifications/notifications-board/notifications-board.component.spec.ts
#	src/app/shared/notifications/notifications-board/notifications-board.component.ts
2025-01-22 15:56:10 +01:00
Andreas Awouters
d9614b9a1b Merge branch 'accessibility-settings-7.6' into accessibility-settings-7_x 2025-01-22 15:50:41 +01:00
Andreas Awouters
5df74718b3 Merge branch 'w2p-122839_vocabulary-preloadlevel-fix' into vocabulary-preloadlevel-fix-main
# Conflicts:
#	src/app/shared/form/vocabulary-treeview/vocabulary-treeview.component.spec.ts
#	src/app/shared/form/vocabulary-treeview/vocabulary-treeview.component.ts
2025-01-10 13:26:41 +01:00
Andreas Awouters
18819b76a8 Merge branch 'w2p-122839_vocabulary-preloadlevel-fix' into vocabulary-preloadlevel-fix-7_x
# Conflicts:
#	src/app/shared/form/vocabulary-treeview/vocabulary-treeview.component.ts
2025-01-02 15:12:50 +01:00
Andreas Awouters
4ffde928d4 122839: Fix vocabulary-treeview component tests 2025-01-02 14:42:17 +01:00
Andreas Awouters
9406f7b085 122839: Retrieve preloadLevel from vocabulary before creating tree 2025-01-02 12:04:40 +01:00
Andreas Awouters
cee9d0422b 122839: Load nodes up to defined preloadLevel 2024-12-24 15:17:27 +01:00
Andreas Awouters
442b4ea284 Merge branch 'accessibility-settings-7.6' into accessibility-settings-7_x 2024-12-11 10:12:14 +01:00
Andreas Awouters
3c92acb770 Merge branch 'accessibility-settings-7.6' into accessibility-settings-7_x 2024-11-06 10:59:32 +01:00
Sascha Szott
4ca1edfc63 added german translations 2024-01-26 14:25:39 +01:00
Sascha Szott
f12fae3865 added German translations 2024-01-26 14:04:05 +01:00
Sascha Szott
027a5ec5f0 minor translation improvement: use plural in German translation 2024-01-26 13:46:46 +01:00
138 changed files with 47187 additions and 8987 deletions

View File

@@ -253,6 +253,10 @@
"forceSingleLine": true
}
],
"import/enforce-node-protocol-usage": [
"error",
"always"
],
"unused-imports/no-unused-imports": "error",
"lodash/import-scope": [

160
.github/dependabot.yml vendored
View File

@@ -11,8 +11,10 @@ updates:
# So, only this first section can include "applies-to: security-updates"
- package-ecosystem: "npm"
directory: "/"
# Monthly dependency updates (NOTE: "schedule" doesn't apply to security updates)
schedule:
interval: "weekly"
interval: "monthly"
time: "05:00"
# Allow up to 10 open PRs for dependencies
open-pull-requests-limit: 10
# Group together Angular package upgrades
@@ -22,14 +24,7 @@ updates:
applies-to: version-updates
patterns:
- "@angular*"
update-types:
- "minor"
- "patch"
# Group together all security updates for Angular. Only accept minor/patch types.
angular-security:
applies-to: security-updates
patterns:
- "@angular*"
- "@ngtools/webpack"
update-types:
- "minor"
- "patch"
@@ -41,14 +36,6 @@ updates:
update-types:
- "minor"
- "patch"
# Group together all security updates for NgRx. Only accept minor/patch types.
ngrx-security:
applies-to: security-updates
patterns:
- "@ngrx*"
update-types:
- "minor"
- "patch"
# Group together all patch version updates for eslint in a single PR
eslint:
applies-to: version-updates
@@ -58,15 +45,6 @@ updates:
update-types:
- "minor"
- "patch"
# Group together all security updates for eslint.
eslint-security:
applies-to: security-updates
patterns:
- "@typescript-eslint*"
- "eslint*"
update-types:
- "minor"
- "patch"
# Group together any testing related version updates
testing:
applies-to: version-updates
@@ -80,9 +58,83 @@ updates:
update-types:
- "minor"
- "patch"
# Group together any testing related security updates
testing-security:
applies-to: security-updates
# Group together any postcss related version updates
postcss:
applies-to: version-updates
patterns:
- "postcss*"
update-types:
- "minor"
- "patch"
# Group together any sass related version updates
sass:
applies-to: version-updates
patterns:
- "sass*"
update-types:
- "minor"
- "patch"
# Group together any webpack related version updates
webpack:
applies-to: version-updates
patterns:
- "webpack*"
update-types:
- "minor"
- "patch"
ignore:
# Restrict zone.js updates to patch level to avoid dependency conflicts with @angular/core
- dependency-name: "zone.js"
update-types: ["version-update:semver-major", "version-update:semver-minor"]
# Restrict typescript updates to patch level because that's what our package.json says
- dependency-name: "typescript"
update-types: ["version-update:semver-major", "version-update:semver-minor"]
# Ignore all major version updates for all dependencies. We'll only automate minor/patch updates.
- dependency-name: "*"
update-types: ["version-update:semver-major"]
#####################
## dspace-9_x branch
#####################
- package-ecosystem: "npm"
directory: "/"
target-branch: dspace-9_x
schedule:
interval: "monthly"
time: "05:00"
# Allow up to 10 open PRs for dependencies
open-pull-requests-limit: 10
# Group together Angular package upgrades
groups:
# Group together all patch version updates for Angular in a single PR
angular:
applies-to: version-updates
patterns:
- "@angular*"
- "@ngtools/webpack"
update-types:
- "minor"
- "patch"
# Group together all minor/patch version updates for NgRx in a single PR
ngrx:
applies-to: version-updates
patterns:
- "@ngrx*"
- "@ngtools/webpack"
update-types:
- "minor"
- "patch"
# Group together all patch version updates for eslint in a single PR
eslint:
applies-to: version-updates
patterns:
- "@typescript-eslint*"
- "eslint*"
update-types:
- "minor"
- "patch"
# Group together any testing related version updates
testing:
applies-to: version-updates
patterns:
- "@cypress*"
- "axe-*"
@@ -101,14 +153,6 @@ updates:
update-types:
- "minor"
- "patch"
# Group together any postcss related security updates
postcss-security:
applies-to: security-updates
patterns:
- "postcss*"
update-types:
- "minor"
- "patch"
# Group together any sass related version updates
sass:
applies-to: version-updates
@@ -117,14 +161,6 @@ updates:
update-types:
- "minor"
- "patch"
# Group together any sass related security updates
sass-security:
applies-to: security-updates
patterns:
- "sass*"
update-types:
- "minor"
- "patch"
# Group together any webpack related version updates
webpack:
applies-to: version-updates
@@ -133,15 +169,13 @@ updates:
update-types:
- "minor"
- "patch"
# Group together any webpack related seurity updates
webpack-security:
applies-to: security-updates
patterns:
- "webpack*"
update-types:
- "minor"
- "patch"
ignore:
# Restrict zone.js updates to patch level to avoid dependency conflicts with @angular/core
- dependency-name: "zone.js"
update-types: ["version-update:semver-major", "version-update:semver-minor"]
# Restrict typescript updates to patch level because that's what our package.json says
- dependency-name: "typescript"
update-types: ["version-update:semver-major", "version-update:semver-minor"]
# Ignore all major version updates for all dependencies. We'll only automate minor/patch updates.
- dependency-name: "*"
update-types: ["version-update:semver-major"]
@@ -152,7 +186,8 @@ updates:
directory: "/"
target-branch: dspace-8_x
schedule:
interval: "weekly"
interval: "monthly"
time: "05:00"
# Allow up to 10 open PRs for dependencies
open-pull-requests-limit: 10
# Group together Angular package upgrades
@@ -162,6 +197,7 @@ updates:
applies-to: version-updates
patterns:
- "@angular*"
- "@ngtools/webpack"
update-types:
- "minor"
- "patch"
@@ -220,6 +256,12 @@ updates:
- "minor"
- "patch"
ignore:
# Restrict zone.js updates to patch level to avoid dependency conflicts with @angular/core
- dependency-name: "zone.js"
update-types: ["version-update:semver-major", "version-update:semver-minor"]
# Restrict typescript updates to patch level because that's what our package.json says
- dependency-name: "typescript"
update-types: ["version-update:semver-major", "version-update:semver-minor"]
# Ignore all major version updates for all dependencies. We'll only automate minor/patch updates.
- dependency-name: "*"
update-types: ["version-update:semver-major"]
@@ -230,7 +272,8 @@ updates:
directory: "/"
target-branch: dspace-7_x
schedule:
interval: "weekly"
interval: "monthly"
time: "05:00"
# Allow up to 10 open PRs for dependencies
open-pull-requests-limit: 10
# Group together Angular package upgrades
@@ -240,6 +283,7 @@ updates:
applies-to: version-updates
patterns:
- "@angular*"
- "@ngtools/webpack"
update-types:
- "minor"
- "patch"
@@ -293,6 +337,12 @@ updates:
# 7.x Cannot update Webpack past v5.76.1 as later versions not supported by Angular 15
# See also https://github.com/DSpace/dspace-angular/pull/3283#issuecomment-2372488489
- dependency-name: "webpack"
# Restrict zone.js updates to patch level to avoid dependency conflicts with @angular/core
- dependency-name: "zone.js"
update-types: ["version-update:semver-major", "version-update:semver-minor"]
# Restrict typescript updates to patch level because that's what our package.json says
- dependency-name: "typescript"
update-types: ["version-update:semver-major", "version-update:semver-minor"]
# Ignore all major version updates for all dependencies. We'll only automate minor/patch updates.
- dependency-name: "*"
update-types: ["version-update:semver-major"]

View File

@@ -25,7 +25,7 @@ However, reviewers may request that you complete any actions in this list if you
- [ ] My PR **doesn't introduce circular dependencies** (verified via `npm run check-circ-deps`)
- [ ] My PR **includes [TypeDoc](https://typedoc.org/) comments** for _all new (or modified) public methods and classes_. It also includes TypeDoc for large or complex private methods.
- [ ] My PR **passes all specs/tests and includes new/updated specs or tests** based on the [Code Testing Guide](https://wiki.lyrasis.org/display/DSPACE/Code+Testing+Guide).
- [ ] My PR **aligns with [Accessibility guidelines](https://wiki.lyrasis.org/display/DSDOC8x/Accessibility)** if it makes changes to the user interface.
- [ ] My PR **aligns with [Accessibility guidelines](https://wiki.lyrasis.org/display/DSDOC9x/Accessibility)** if it makes changes to the user interface.
- [ ] My PR **uses i18n (internationalization) keys** instead of hardcoded English text, to allow for translations.
- [ ] My PR **includes details on how to test it**. I've provided clear instructions to reviewers on how to successfully test this fix or feature.
- [ ] If my PR includes new libraries/dependencies (in `package.json`), I've made sure their licenses align with the [DSpace BSD License](https://github.com/DSpace/DSpace/blob/main/LICENSE) based on the [Licensing of Contributions](https://wiki.lyrasis.org/display/DSPACE/Code+Contribution+Guidelines#CodeContributionGuidelines-LicensingofContributions) documentation.

View File

@@ -40,14 +40,14 @@ jobs:
# Initializes the CodeQL tools for scanning.
# https://github.com/github/codeql-action
- name: Initialize CodeQL
uses: github/codeql-action/init@v2
uses: github/codeql-action/init@v3
with:
languages: javascript
# Autobuild attempts to build any compiled languages
- name: Autobuild
uses: github/codeql-action/autobuild@v2
uses: github/codeql-action/autobuild@v3
# Perform GitHub Code Scanning.
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v2
uses: github/codeql-action/analyze@v3

View File

@@ -10,7 +10,7 @@ DSpace is a community built and supported project. We do not have a centralized
## Contribute new code via a Pull Request
We accept [GitHub Pull Requests (PRs)](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request-from-a-fork) at any time from anyone.
Contributors to each release are recognized in our [Release Notes](https://wiki.lyrasis.org/display/DSDOC8x/Release+Notes).
Contributors to each release are recognized in our [Release Notes](https://wiki.lyrasis.org/display/DSDOC9x/Release+Notes).
Code Contribution Checklist
- [ ] PRs _should_ be smaller in size (ideally less than 1,000 lines of code, not including comments & tests)
@@ -18,7 +18,7 @@ Code Contribution Checklist
- [ ] PRs **must** not introduce circular dependencies (verified via `yarn check-circ-deps`)
- [ ] PRs **must** include [TypeDoc](https://typedoc.org/) comments for _all new (or modified) public methods and classes_. Large or complex private methods should also have TypeDoc.
- [ ] PRs **must** pass all automated pecs/tests and includes new/updated specs or tests based on the [Code Testing Guide](https://wiki.lyrasis.org/display/DSPACE/Code+Testing+Guide).
- [ ] User interface changes **must** align with [Accessibility guidelines](https://wiki.lyrasis.org/display/DSDOC8x/Accessibility)
- [ ] User interface changes **must** align with [Accessibility guidelines](https://wiki.lyrasis.org/display/DSDOC9x/Accessibility)
- [ ] PRs **must** use i18n (internationalization) keys instead of hardcoded English text, to allow for translations.
- [ ] Details on how to test the PR **must** be provided. Reviewers must be aware of any steps they need to take to successfully test your fix or feature.
- [ ] If a PR includes new libraries/dependencies (in `package.json`), then their software licenses **must** align with the [DSpace BSD License](https://github.com/DSpace/dspace-angular/blob/main/LICENSE) based on the [Licensing of Contributions](https://wiki.lyrasis.org/display/DSPACE/Code+Contribution+Guidelines#CodeContributionGuidelines-LicensingofContributions) documentation.

View File

@@ -10,7 +10,7 @@ Overview
DSpace open source software is a turnkey repository application used by more than
2,000 organizations and institutions worldwide to provide durable access to digital resources.
For more information, visit http://www.dspace.org/
For more information, visit https://www.dspace.org/
DSpace consists of both a Java-based backend and an Angular-based frontend.
@@ -30,7 +30,7 @@ Downloads
Documentation for each release may be viewed online or downloaded via our [Documentation Wiki](https://wiki.lyrasis.org/display/DSDOC/).
The latest DSpace Installation instructions are available at:
https://wiki.lyrasis.org/display/DSDOC7x/Installing+DSpace
https://wiki.lyrasis.org/display/DSDOC9x/Installing+DSpace
Quick start
-----------
@@ -349,7 +349,7 @@ See our [DSpace Code Testing Guide](https://wiki.lyrasis.org/display/DSPACE/Code
Documentation
--------------
Official DSpace documentation is available in the DSpace wiki at https://wiki.lyrasis.org/display/DSDOC7x/
Official DSpace documentation is available in the DSpace wiki at https://wiki.lyrasis.org/display/DSDOC9x/
Some UI specific configuration documentation is also found in the [`./docs`](docs) folder of this codebase.
@@ -552,7 +552,7 @@ Additional support options are at https://wiki.lyrasis.org/display/DSPACE/Suppor
DSpace also has an active service provider network. If you'd rather hire a service provider to
install, upgrade, customize or host DSpace, then we recommend getting in touch with one of our
[Registered Service Providers](http://www.dspace.org/service-providers).
[Registered Service Providers](https://dspace.org/registered-service-providers/).
Issue Tracker
@@ -565,7 +565,7 @@ DSpace uses GitHub to track issues:
License
-------
DSpace source code is freely available under a standard [BSD 3-Clause license](https://opensource.org/licenses/BSD-3-Clause).
The full license is available in the [LICENSE](LICENSE) file or online at http://www.dspace.org/license/
The full license is available in the [LICENSE](LICENSE) file or online at https://www.dspace.org/license/
DSpace uses third-party libraries which may be distributed under different licenses. Those licenses are listed
in the [LICENSES_THIRD_PARTY](LICENSES_THIRD_PARTY) file.

View File

@@ -265,6 +265,9 @@ languages:
- code: es
label: Español
active: true
- code: fa
label: فارسی
active: true
- code: fi
label: Suomi
active: true
@@ -274,6 +277,9 @@ languages:
- code: gd
label: Gàidhlig
active: true
- code: gu
label: ગુજરાતી
active: true
- code: hi
label: हिंदी
active: true
@@ -289,6 +295,9 @@ languages:
- code: lv
label: Latviešu
active: true
- code: mr
label: मराठी
active: true
- code: nl
label: Nederlands
active: true
@@ -301,6 +310,9 @@ languages:
- code: pt-BR
label: Português do Brasil
active: true
- code: ru
label: Русский
active: true
- code: sr-lat
label: Srpski (lat)
active: true

View File

@@ -1,13 +1,87 @@
import { testA11y } from 'cypress/support/utils';
describe('Community List Page', () => {
function validateHierarchyLevel(currentLevel = 1): void {
// Find all <cdk-tree-node> elements with the current aria-level
cy.get(`ds-community-list cdk-tree-node.expandable-node[aria-level="${currentLevel}"]`).should('exist').then(($nodes) => {
let sublevelExists = false;
cy.wrap($nodes).each(($node) => {
// Check if the current node has an expand button and click it
if ($node.find('[data-test="expand-button"]').length) {
sublevelExists = true;
cy.wrap($node).find('[data-test="expand-button"]').click();
}
}).then(() => {
// After expanding all buttons, validate if a sublevel exists
if (sublevelExists) {
const nextLevelSelector = `ds-community-list cdk-tree-node.expandable-node[aria-level="${currentLevel + 1}"]`;
cy.get(nextLevelSelector).then(($nextLevel) => {
if ($nextLevel.length) {
// Recursively validate the next level
validateHierarchyLevel(currentLevel + 1);
}
});
}
});
});
}
it('should pass accessibility tests', () => {
beforeEach(() => {
cy.visit('/community-list');
// <ds-community-list-page> tag must be loaded
cy.get('ds-community-list-page').should('be.visible');
// <ds-community-list-list> tag must be loaded
cy.get('ds-community-list').should('be.visible');
});
it('should expand community/collection hierarchy', () => {
// Execute Hierarchy levels validation recursively
validateHierarchyLevel(1);
});
it('should display community/collections name with item count', () => {
// Open every <cdk-tree-node>
cy.get('[data-test="expand-button"]').click({ multiple: true });
cy.wait(300);
// A first <cdk-tree-node> must be found and validate that <a> tag (community name) and <span> tag (item count) exists in it
cy.get('ds-community-list').find('cdk-tree-node.expandable-node').then(($nodes) => {
cy.wrap($nodes).each(($node) => {
cy.wrap($node).find('a').should('exist');
cy.wrap($node).find('span').should('exist');
});
});
});
it('should enable "show more" button when 20 top-communities or more are presents', () => {
cy.get('ds-community-list').find('cdk-tree-node.expandable-node[aria-level="1"]').then(($nodes) => {
//Validate that there are 20 or more top-community elements
if ($nodes.length >= 20) {
//Validate that "show more" button is visible and then click on it
cy.get('[data-test="show-more-button"]').should('be.visible');
} else {
cy.get('[data-test="show-more-button"]').should('not.exist');
}
});
});
it('should show 21 or more top-communities if click "show more" button', () => {
cy.get('ds-community-list').find('cdk-tree-node.expandable-node[aria-level="1"]').then(($nodes) => {
//Validate that there are 20 or more top-community elements
if ($nodes.length >= 20) {
//Validate that "show more" button is visible and then click on it
cy.get('[data-test="show-more-button"]').click();
cy.wait(300);
cy.get('ds-community-list').find('cdk-tree-node.expandable-node[aria-level="1"]').should('have.length.at.least', 21);
} else {
cy.get('[data-test="show-more-button"]').should('not.exist');
}
});
});
it('should pass accessibility tests', () => {
// Open every expand button on page, so that we can scan sub-elements as well
cy.get('[data-test="expand-button"]').click({ multiple: true });

View File

@@ -84,7 +84,7 @@ describe('My DSpace page', () => {
cy.url().should('include', '/mydspace');
// Close any open notifications, to make sure they don't get in the way of next steps
cy.get('[data-dismiss="alert"]').click({ multiple: true });
cy.get('[data-bs-dismiss="alert"]').click({ multiple: true });
// This is the GET command that will actually run the search
cy.intercept('GET', '/server/api/discover/search/objects*').as('search-results');

View File

@@ -95,7 +95,7 @@ describe('New Submission page', () => {
// A success alert should be visible
cy.get('ds-notification div.alert-success').should('be.visible');
// Now, dismiss any open alert boxes (may be multiple, as tests run quickly)
cy.get('[data-dismiss="alert"]').click({ multiple: true });
cy.get('[data-bs-dismiss="alert"]').click({ multiple: true });
// This is the GET command that will actually run the search
cy.intercept('GET', '/server/api/discover/search/objects*').as('search-results');

View File

@@ -1,4 +1,4 @@
const fs = require('fs');
const fs = require('node:fs');
// These two global variables are used to store information about the REST API used
// by these e2e tests. They are filled out prior to running any tests in the before()

View File

@@ -14,7 +14,7 @@
# # Therefore, it should be kept in sync with that file
services:
dspacedb:
image: "${DOCKER_REGISTRY:-docker.io}/${DOCKER_OWNER:-dspace}/dspace-postgres-pgcrypto:${DSPACE_VER:-latest}-loadsql"
image: "${DOCKER_REGISTRY:-docker.io}/${DOCKER_OWNER:-dspace}/dspace-postgres-loadsql:${DSPACE_VER:-latest}"
environment:
# This LOADSQL should be kept in sync with the URL in DSpace/DSpace
# This SQL is available from https://github.com/DSpace-Labs/AIP-Files/releases/tag/demo-entities-data

View File

@@ -60,13 +60,15 @@ services:
# NOTE: This is customized to use our loadsql image, so that we are using a database with existing test data
dspacedb:
container_name: dspacedb
image: "${DOCKER_REGISTRY:-docker.io}/${DOCKER_OWNER:-dspace}/dspace-postgres-pgcrypto:${DSPACE_VER:-latest}-loadsql"
image: "${DOCKER_REGISTRY:-docker.io}/${DOCKER_OWNER:-dspace}/dspace-postgres-loadsql:${DSPACE_VER:-latest}"
environment:
# This LOADSQL should be kept in sync with the LOADSQL in
# https://github.com/DSpace/DSpace/blob/main/dspace/src/main/docker-compose/db.entities.yml
# This SQL is available from https://github.com/DSpace-Labs/AIP-Files/releases/tag/demo-entities-data
LOADSQL: https://github.com/DSpace-Labs/AIP-Files/releases/download/demo-entities-data/dspace7-entities-data.sql
PGDATA: /pgdata
POSTGRES_DB: dspace
POSTGRES_USER: dspace
POSTGRES_PASSWORD: dspace
networks:
- dspacenet

View File

@@ -67,10 +67,12 @@ services:
# DSpace database container
dspacedb:
container_name: dspacedb
# Uses a custom Postgres image with pgcrypto installed
image: "${DOCKER_REGISTRY:-docker.io}/${DOCKER_OWNER:-dspace}/dspace-postgres-pgcrypto:${DSPACE_VER:-latest}"
# Uses the base PostgreSQL image
image: "docker.io/postgres:${POSTGRES_VERSION:-15}"
environment:
PGDATA: /pgdata
POSTGRES_DB: dspace
POSTGRES_USER: dspace
POSTGRES_PASSWORD: dspace
networks:
- dspacenet

View File

@@ -12,8 +12,8 @@ import {
readFileSync,
rmSync,
writeFileSync,
} from 'fs';
import { join } from 'path';
} from 'node:fs';
import { join } from 'node:path';
import { default as htmlPlugin } from './src/rules/html';
import { default as tsPlugin } from './src/rules/ts';

View File

@@ -6,10 +6,11 @@
* http://www.dspace.org/license/
*/
import { readFileSync } from 'node:fs';
import { basename } from 'node:path';
import { TSESTree } from '@typescript-eslint/utils';
import { RuleContext } from '@typescript-eslint/utils/ts-eslint';
import { readFileSync } from 'fs';
import { basename } from 'path';
import ts, { Identifier } from 'typescript';
import {

3886
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -1,12 +1,11 @@
{
"name": "dspace-angular",
"version": "9.0.0",
"version": "10.0.0-next",
"scripts": {
"ng": "ng",
"config:watch": "nodemon",
"test:rest": "ts-node --project ./tsconfig.ts-node.json scripts/test-rest.ts",
"start": "npm run start:prod",
"start:dev": "nodemon --exec \"cross-env NODE_ENV=development npm run serve\"",
"start:dev": "cross-env NODE_ENV=development npm run serve --watch",
"start:prod": "npm run build:prod && cross-env NODE_ENV=production npm run serve:ssr",
"start:mirador:prod": "npm run build:mirador && npm run start:prod",
"preserve": "npm run base-href",
@@ -19,7 +18,7 @@
"build:ssr": "ng build --configuration production && ng run dspace-angular:server:production",
"build:lint": "rimraf 'lint/dist/**/*.js' 'lint/dist/**/*.js.map' && tsc -b lint/tsconfig.json",
"test": "ng test --source-map=true --watch=false --configuration test",
"test:watch": "nodemon --exec \"ng test --source-map=true --watch=true --configuration test\"",
"test:watch": "ng test --source-map=true --watch=true --configuration test",
"test:headless": "ng test --source-map=true --watch=false --configuration test --browsers=ChromeHeadless --code-coverage",
"test:lint": "npm run build:lint && npm run test:lint:nobuild",
"test:lint:nobuild": "jasmine --config=lint/jasmine.json",
@@ -91,25 +90,23 @@
"notistack": "3.0.1"
},
"dependencies": {
"@angular/animations": "^18.2.12",
"@angular/animations": "^18.2.14",
"@angular/cdk": "^18.2.12",
"@angular/common": "^18.2.12",
"@angular/compiler": "^18.2.12",
"@angular/core": "^18.2.12",
"@angular/forms": "^18.2.12",
"@angular/localize": "^18.2.12",
"@angular/platform-browser": "^18.2.12",
"@angular/platform-browser-dynamic": "^18.2.12",
"@angular/platform-server": "^18.2.12",
"@angular/router": "^18.2.12",
"@angular/ssr": "^18.2.19",
"@babel/runtime": "7.27.1",
"@angular/common": "^18.2.14",
"@angular/compiler": "^18.2.14",
"@angular/core": "^18.2.14",
"@angular/forms": "^18.2.14",
"@angular/localize": "^18.2.14",
"@angular/platform-browser": "^18.2.14",
"@angular/platform-browser-dynamic": "^18.2.14",
"@angular/platform-server": "^18.2.14",
"@angular/router": "^18.2.14",
"@angular/ssr": "^18.2.21",
"@kolkov/ngx-gallery": "^2.0.1",
"@ng-bootstrap/ng-bootstrap": "^12.0.0",
"@ng-dynamic-forms/core": "^16.0.0",
"@ng-dynamic-forms/ui-ng-bootstrap": "^16.0.0",
"@ngrx/effects": "^18.1.1",
"@ngrx/operators": "^18.0.0",
"@ngrx/router-store": "^18.1.1",
"@ngrx/store": "^18.1.1",
"@ngx-translate/core": "^16.0.3",
@@ -117,14 +114,13 @@
"@terraformer/wkt": "^2.2.1",
"altcha": "^0.9.0",
"angulartics2": "^12.2.0",
"axios": "^1.9.0",
"bootstrap": "^5.3",
"cerialize": "0.1.18",
"cli-progress": "^3.12.0",
"colors": "^1.4.0",
"compression": "^1.7.5",
"compression": "^1.8.1",
"cookie-parser": "1.4.7",
"core-js": "^3.42.0",
"core-js": "^3.45.1",
"date-fns": "^2.29.3",
"date-fns-tz": "^1.3.7",
"deepmerge": "^4.3.1",
@@ -135,7 +131,7 @@
"filesize": "^10.1.6",
"http-proxy-middleware": "^2.0.9",
"http-terminator": "^3.2.0",
"isbot": "^5.1.28",
"isbot": "^5.1.30",
"js-cookie": "2.2.1",
"js-yaml": "^4.1.0",
"json5": "^2.2.3",
@@ -150,7 +146,7 @@
"mirador": "^3.4.3",
"mirador-dl-plugin": "^0.13.0",
"mirador-share-plugin": "^0.16.0",
"morgan": "^1.10.0",
"morgan": "^1.10.1",
"ng2-file-upload": "7.0.1",
"ng2-nouislider": "^2.0.0",
"ngx-infinite-scroll": "^18.0.0",
@@ -168,7 +164,7 @@
},
"devDependencies": {
"@angular-builders/custom-webpack": "~18.0.0",
"@angular-devkit/build-angular": "^18.2.19",
"@angular-devkit/build-angular": "^18.2.20",
"@angular-eslint/builder": "^18.4.1",
"@angular-eslint/bundled-angular-compiler": "^18.4.1",
"@angular-eslint/eslint-plugin": "^18.4.1",
@@ -176,13 +172,12 @@
"@angular-eslint/schematics": "^18.4.1",
"@angular-eslint/template-parser": "^18.4.1",
"@angular-eslint/utils": "^18.4.1",
"@angular/cli": "^18.2.19",
"@angular/cli": "^18.2.21",
"@angular/compiler-cli": "^18.2.12",
"@angular/language-service": "^18.2.12",
"@cypress/schematic": "^1.5.0",
"@fortawesome/fontawesome-free": "^6.7.2",
"@ngrx/store-devtools": "^18.1.1",
"@ngtools/webpack": "^18.2.19",
"@ngtools/webpack": "^18.2.20",
"@types/deep-freeze": "0.1.5",
"@types/ejs": "^3.1.2",
"@types/express": "^4.17.17",
@@ -190,7 +185,7 @@
"@types/jasmine": "~3.6.0",
"@types/js-cookie": "2.2.6",
"@types/lodash-es": "^4.17.12",
"@types/node": "^14.14.9",
"@types/node": "^18.19.124",
"@typescript-eslint/eslint-plugin": "^7.18.0",
"@typescript-eslint/parser": "^7.18.0",
"@typescript-eslint/rule-tester": "^7.18.0",
@@ -200,13 +195,13 @@
"copy-webpack-plugin": "^6.4.1",
"cross-env": "^7.0.3",
"cypress": "^13.17.0",
"cypress-axe": "^1.6.0",
"cypress-axe": "^1.7.0",
"deep-freeze": "0.0.1",
"eslint": "^8.39.0",
"eslint-plugin-deprecation": "^1.4.1",
"eslint-plugin-dspace-angular-html": "file:./lint/dist/src/rules/html",
"eslint-plugin-dspace-angular-ts": "file:./lint/dist/src/rules/ts",
"eslint-plugin-import": "^2.31.0",
"eslint-plugin-import": "^2.32.0",
"eslint-plugin-import-newlines": "^1.3.1",
"eslint-plugin-jsdoc": "^45.0.0",
"eslint-plugin-jsonc": "^2.20.1",
@@ -224,21 +219,19 @@
"karma-jasmine": "~4.0.0",
"karma-jasmine-html-reporter": "^1.5.0",
"karma-mocha-reporter": "2.2.5",
"ng-mocks": "^14.13.4",
"ng-mocks": "^14.13.5",
"ngx-mask": "14.2.4",
"nodemon": "^2.0.22",
"postcss": "^8.5",
"postcss-import": "^14.0.0",
"postcss-loader": "^4.0.3",
"postcss-preset-env": "^7.4.2",
"rimraf": "^3.0.2",
"sass": "~1.89.0",
"sass": "~1.92.1",
"sass-loader": "^12.6.0",
"sass-resources-loader": "^2.2.5",
"ts-node": "^8.10.2",
"typescript": "~5.4.5",
"webpack": "5.99.8",
"webpack-cli": "^5.1.4",
"webpack-dev-server": "^4.15.1"
"webpack": "^5.54.0",
"webpack-cli": "^6.0.1"
}
}

View File

@@ -25,7 +25,6 @@ import * as ejs from 'ejs';
import * as compression from 'compression';
import expressStaticGzip from 'express-static-gzip';
/* eslint-enable import/no-namespace */
import axios from 'axios';
import LRU from 'lru-cache';
import { isbot } from 'isbot';
import { createCertificate } from 'pem';
@@ -269,6 +268,12 @@ function serverSideRender(req, res, next, sendToUser: boolean = true) {
],
})
.then((html) => {
// If headers were already sent, then do nothing else, it is probably a
// redirect response
if (res.headersSent) {
return;
}
if (hasValue(html)) {
// Replace REST URL with UI URL
if (environment.ssr.replaceRestUrl && REST_BASE_URL !== environment.rest.baseUrl) {
@@ -561,8 +566,8 @@ function createHttpsServer(keys) {
* Create an HTTP server with the configured port and host.
*/
function run() {
const port = environment.ui.port || 4000;
const host = environment.ui.host || '/';
const port = environment.ui.port;
const host = environment.ui.host;
// Start up the Node server
const server = app();
@@ -648,9 +653,9 @@ function isExcludedFromSsr(path: string, excludePathPattern: SsrExcludePatterns[
*/
function healthCheck(req, res) {
const baseUrl = `${REST_BASE_URL}${environment.actuators.endpointPath}`;
axios.get(baseUrl)
fetch(baseUrl)
.then((response) => {
res.status(response.status).send(response.data);
res.status(response.status).send(response);
})
.catch((error) => {
res.status(error.response.status).send({

View File

@@ -85,7 +85,7 @@
}
@if (!groupDto.group?.permanent && groupDto.ableToDelete) {
<button
(click)="deleteGroup(groupDto)" class="btn btn-outline-danger btn-sm btn-delete"
(click)="confirmDelete(groupDto)" class="btn btn-outline-danger btn-sm btn-delete"
title="{{messagePrefix + 'table.edit.buttons.remove' | translate: {name: dsoNameService.getName(groupDto.group) } }}">
<i class="fas fa-trash-alt fa-fw"></i>
</button>

View File

@@ -381,6 +381,8 @@ describe('GroupsRegistryComponent', () => {
deleteButton.click();
fixture.detectChanges();
(document as any).querySelector('.modal-footer .confirm').click();
expect(groupsDataServiceStub.delete).toHaveBeenCalledWith(mockGroups[0].id);
});
});

View File

@@ -9,7 +9,10 @@ import {
UntypedFormBuilder,
} from '@angular/forms';
import { RouterLink } from '@angular/router';
import { NgbTooltipModule } from '@ng-bootstrap/ng-bootstrap';
import {
NgbModal,
NgbTooltipModule,
} from '@ng-bootstrap/ng-bootstrap';
import {
TranslateModule,
TranslateService,
@@ -27,6 +30,7 @@ import {
defaultIfEmpty,
map,
switchMap,
takeUntil,
tap,
} from 'rxjs/operators';
@@ -57,6 +61,7 @@ import {
} from '../../core/shared/operators';
import { PageInfo } from '../../core/shared/page-info.model';
import { BtnDisabledDirective } from '../../shared/btn-disabled.directive';
import { ConfirmationModalComponent } from '../../shared/confirmation-modal/confirmation-modal.component';
import { hasValue } from '../../shared/empty.util';
import { ThemedLoadingComponent } from '../../shared/loading/themed-loading.component';
import { NotificationsService } from '../../shared/notifications/notifications.service';
@@ -142,6 +147,7 @@ export class GroupsRegistryComponent implements OnInit, OnDestroy {
private paginationService: PaginationService,
public requestService: RequestService,
public dsoNameService: DSONameService,
private modalService: NgbModal,
) {
this.currentSearchQuery = '';
this.searchForm = this.formBuilder.group(({
@@ -314,4 +320,30 @@ export class GroupsRegistryComponent implements OnInit, OnDestroy {
this.paginationService.clearPagination(this.config.id);
}
confirmDelete(group: GroupDtoModel): void {
const modalRef = this.modalService.open(ConfirmationModalComponent);
modalRef.componentInstance.name = this.dsoNameService.getName(group.group);
modalRef.componentInstance.headerLabel = 'admin.access-control.epeople.table.edit.buttons.remove.modal.header';
modalRef.componentInstance.infoLabel = 'admin.access-control.epeople.table.edit.buttons.remove.modal.info';
modalRef.componentInstance.cancelLabel = 'admin.access-control.epeople.table.edit.buttons.remove.modal.cancel';
modalRef.componentInstance.confirmLabel = 'admin.access-control.epeople.table.edit.buttons.remove.modal.confirm';
modalRef.componentInstance.brandColor = 'danger';
modalRef.componentInstance.confirmIcon = 'fas fa-trash';
const modalSub: Subscription = modalRef.componentInstance.response.pipe(
takeUntil(modalRef.closed),
).subscribe((result: boolean) => {
if (result === true) {
this.deleteGroup(group);
}
});
void modalRef.result.then().finally(() => {
modalRef.close();
if (modalSub && !modalSub.closed) {
modalSub.unsubscribe();
}
});
}
}

View File

@@ -1,12 +1,12 @@
.nav-breadcrumb {
background-color: var(--ds-breadcrumb-bg);
background-color: var(--ds-breadcrumb-bg) !important;
}
.breadcrumb {
border-radius: 0;
padding-bottom: calc(var(--ds-content-spacing) / 2);
padding-top: calc(var(--ds-content-spacing) / 2);
background-color: var(--ds-breadcrumb-bg);
background-color: var(--ds-breadcrumb-bg) !important;
padding-left: calc(var(--bs-spacer) *.75);
padding-right: calc(var(--bs-spacer) *.75);
}

View File

@@ -1,6 +1,6 @@
<div class="container">
<h1>{{ 'browse.metadata.map' | translate }}</h1>
@if (isPlatformBrowser(platformId)) {
@defer {
<ds-geospatial-map [facetValues]="facetValues$"
[currentScope]="this.scope$|async"
[layout]="'browse'"

View File

@@ -5,9 +5,7 @@ import {
import {
ChangeDetectionStrategy,
Component,
Inject,
OnInit,
PLATFORM_ID,
} from '@angular/core';
import {
ActivatedRoute,
@@ -65,7 +63,6 @@ export class BrowseByGeospatialDataComponent implements OnInit {
public facetValues$: Observable<FacetValues> = of(null);
constructor(
@Inject(PLATFORM_ID) public platformId: string,
private searchConfigurationService: SearchConfigurationService,
private searchService: SearchService,
protected route: ActivatedRoute,

View File

@@ -2,7 +2,7 @@
<section class="comcol-page-browse-section">
<div class="browse-by-metadata w-100">
@if ((loading$ | async) !== true) {
<ds-browse-by class="col-xs-12 w-100"
<ds-browse-by class="col-12 w-100"
title="{{'browse.title' | translate:{
field: 'browse.metadata.' + browseId | translate,
startsWith: (startsWith)? ('browse.startsWith' | translate: { startsWith: '&quot;' + startsWith + '&quot;' }) : '',

View File

@@ -248,6 +248,8 @@ export class BrowseByMetadataComponent implements OnInit, OnChanges, OnDestroy {
if (typeof params.startsWith === 'string') {
this.startsWith = params.startsWith.trim();
} else {
this.startsWith = '';
}
if (isNotEmpty(this.value)) {

View File

@@ -12,7 +12,7 @@
<div class="align-middle my-auto">
@if ((dataSource.loading$ | async) !== true) {
<button (click)="getNextPage(node)"
class="btn btn-outline-primary btn-sm" role="button" tabindex="0">
class="btn btn-outline-primary btn-sm" role="button" tabindex="0" data-test="show-more-button">
<i class="fas fa-angle-down"></i> {{ 'communityList.showMore' | translate }}
</button>
}

View File

@@ -77,11 +77,11 @@ export class CollectionDataService extends ComColDataService<Collection> {
* requested after the response becomes stale
* @param linksToFollow List of {@link FollowLinkConfig} that indicate which
* {@link HALLink}s should be automatically resolved
* @param searchHref The backend search endpoint to use (default to submit)
* @return Observable<RemoteData<PaginatedList<Collection>>>
* collection list
*/
getAuthorizedCollection(query: string, options: FindListOptions = {}, useCachedVersionIfAvailable = true, reRequestOnStale = true, ...linksToFollow: FollowLinkConfig<Collection>[]): Observable<RemoteData<PaginatedList<Collection>>> {
const searchHref = 'findSubmitAuthorized';
getAuthorizedCollection(query: string, options: FindListOptions = {}, useCachedVersionIfAvailable = true, reRequestOnStale = true, searchHref: string = 'findSubmitAuthorized', ...linksToFollow: FollowLinkConfig<Collection>[]): Observable<RemoteData<PaginatedList<Collection>>> {
options = Object.assign({}, options, {
searchParams: [new RequestParam('query', query)],
});

View File

@@ -11,9 +11,11 @@ import { isNotEmpty } from '../../shared/empty.util';
import { NotificationsService } from '../../shared/notifications/notifications.service';
import { FollowLinkConfig } from '../../shared/utils/follow-link-config.model';
import { RemoteDataBuildService } from '../cache/builders/remote-data-build.service';
import { RequestParam } from '../cache/models/request-param.model';
import { ObjectCacheService } from '../cache/object-cache.service';
import { Community } from '../shared/community.model';
import { HALEndpointService } from '../shared/hal-endpoint.service';
import { getAllCompletedRemoteData } from '../shared/operators';
import { BitstreamDataService } from './bitstream-data.service';
import { ComColDataService } from './comcol-data.service';
import { DSOChangeAnalyzer } from './dso-change-analyzer.service';
@@ -38,6 +40,32 @@ export class CommunityDataService extends ComColDataService<Community> {
super('communities', requestService, rdbService, objectCache, halService, comparator, notificationsService, bitstreamDataService);
}
/**
* Get all communities the user is authorized to submit to
*
* @param query limit the returned community to those with metadata values
* matching the query terms.
* @param options The [[FindListOptions]] object
* @param useCachedVersionIfAvailable If this is true, the request will only be sent if there's
* no valid cached version. Defaults to true
* @param reRequestOnStale Whether or not the request should automatically be re-
* requested after the response becomes stale
* @param linksToFollow List of {@link FollowLinkConfig} that indicate which
* {@link HALLink}s should be automatically resolved
* @return Observable<RemoteData<PaginatedList<Community>>>
* community list
*/
getAuthorizedCommunity(query: string, options: FindListOptions = {}, useCachedVersionIfAvailable = true, reRequestOnStale = true, ...linksToFollow: FollowLinkConfig<Community>[]): Observable<RemoteData<PaginatedList<Community>>> {
const searchHref = 'findAdminAuthorized';
options = Object.assign({}, options, {
searchParams: [new RequestParam('query', query)],
});
return this.searchBy(searchHref, options, useCachedVersionIfAvailable, reRequestOnStale, ...linksToFollow).pipe(
getAllCompletedRemoteData(),
);
}
// this method is overridden in order to make it public
getEndpoint() {
return this.halService.getEndpoint(this.linkPath);

View File

@@ -111,7 +111,7 @@ export class VersionHistoryDataService extends IdentifiableDataService<VersionHi
this.halService.getEndpoint(this.versionsEndpoint).pipe(
take(1),
map((endpointUrl: string) => (summary?.length > 0) ? `${endpointUrl}?summary=${summary}` : `${endpointUrl}`),
map((endpointUrl: string) => (summary?.length > 0) ? `${endpointUrl}?summary=${encodeURIComponent(summary)}` : `${endpointUrl}`),
find((href: string) => hasValue(href)),
).subscribe((href) => {
const request = new PostRequest(requestId, href, itemHref, requestOptions);

View File

@@ -4,7 +4,9 @@ import { makeEnvironmentProviders } from '@angular/core';
import { environment } from '../../environments/environment';
import { Itemfilter } from '../admin/admin-ldn-services/ldn-services-model/ldn-service-itemfilters';
import { LdnService } from '../admin/admin-ldn-services/ldn-services-model/ldn-services.model';
import { AdminNotifyMessage } from '../admin/admin-notify-dashboard/models/admin-notify-message.model';
import { NotifyRequestsStatus } from '../item-page/simple/notify-requests-status/notify-requests-status.model';
import { Filetypes } from '../process-page/processes/filetypes.model';
import { Process } from '../process-page/processes/process.model';
import { Script } from '../process-page/scripts/script.model';
import { EndpointMockingRestService } from '../shared/mocks/dspace-rest/endpoint-mocking-rest.service';
@@ -14,26 +16,41 @@ import {
} from '../shared/mocks/dspace-rest/mocks/response-map.mock';
import { AccessStatusObject } from '../shared/object-collection/shared/badges/access-status-badge/access-status.model';
import { IdentifierData } from '../shared/object-list/identifier-data/identifier-data.model';
import { ListableNotificationObject } from '../shared/object-list/listable-notification-object/listable-notification-object.model';
import { FacetConfigResponse } from '../shared/search/models/facet-config-response.model';
import { FacetValues } from '../shared/search/models/facet-values.model';
import { SearchFilterConfig } from '../shared/search/models/search-filter-config.model';
import { SearchObjects } from '../shared/search/models/search-objects.model';
import { SearchResult } from '../shared/search/models/search-result.model';
import { Subscription } from '../shared/subscriptions/models/subscription.model';
import { StatisticsEndpoint } from '../statistics/statistics-endpoint.model';
import { SubmissionCoarNotifyConfig } from '../submission/sections/section-coar-notify/submission-coar-notify.config';
import { SystemWideAlert } from '../system-wide-alert/system-wide-alert.model';
import { AuthStatus } from './auth/models/auth-status.model';
import { ShortLivedToken } from './auth/models/short-lived-token.model';
import { BulkAccessConditionOptions } from './config/models/bulk-access-condition-options.model';
import { SubmissionAccessModel } from './config/models/config-submission-access.model';
import { SubmissionAccessesModel } from './config/models/config-submission-accesses.model';
import { SubmissionDefinitionModel } from './config/models/config-submission-definition.model';
import { SubmissionDefinitionsModel } from './config/models/config-submission-definitions.model';
import { SubmissionFormModel } from './config/models/config-submission-form.model';
import { SubmissionFormsModel } from './config/models/config-submission-forms.model';
import { SubmissionSectionModel } from './config/models/config-submission-section.model';
import { SubmissionSectionsModel } from './config/models/config-submission-sections.model';
import { SubmissionUploadModel } from './config/models/config-submission-upload.model';
import { SubmissionUploadsModel } from './config/models/config-submission-uploads.model';
import { PaginatedList } from './data/paginated-list.model';
import { Root } from './data/root.model';
import { DspaceRestService } from './dspace-rest/dspace-rest.service';
import { EPerson } from './eperson/models/eperson.model';
import { Group } from './eperson/models/group.model';
import { Feedback } from './feedback/models/feedback.model';
import { MetadataField } from './metadata/metadata-field.model';
import { MetadataSchema } from './metadata/metadata-schema.model';
import { QualityAssuranceEventObject } from './notifications/qa/models/quality-assurance-event.model';
import { QualityAssuranceSourceObject } from './notifications/qa/models/quality-assurance-source.model';
import { QualityAssuranceTopicObject } from './notifications/qa/models/quality-assurance-topic.model';
import { Suggestion } from './notifications/suggestions/models/suggestion.model';
import { SuggestionSource } from './notifications/suggestions/models/suggestion-source.model';
import { SuggestionTarget } from './notifications/suggestions/models/suggestion-target.model';
import { OrcidHistory } from './orcid/model/orcid-history.model';
@@ -49,6 +66,7 @@ import { Bundle } from './shared/bundle.model';
import { Collection } from './shared/collection.model';
import { Community } from './shared/community.model';
import { ConfigurationProperty } from './shared/configuration-property.model';
import { ContentSource } from './shared/content-source.model';
import { DSpaceObject } from './shared/dspace-object.model';
import { ExternalSource } from './shared/external-source.model';
import { ExternalSourceEntry } from './shared/external-source-entry.model';
@@ -70,6 +88,7 @@ import { ValueListBrowseDefinition } from './shared/value-list-browse-definition
import { Version } from './shared/version.model';
import { VersionHistory } from './shared/version-history.model';
import { UsageReport } from './statistics/models/usage-report.model';
import { CorrectionType } from './submission/models/correctiontype.model';
import { SubmissionCcLicence } from './submission/models/submission-cc-license.model';
import { SubmissionCcLicenceUrl } from './submission/models/submission-cc-license-url.model';
import { WorkflowItem } from './submission/models/workflowitem.model';
@@ -77,6 +96,7 @@ import { WorkspaceItem } from './submission/models/workspaceitem.model';
import { Vocabulary } from './submission/vocabularies/models/vocabulary.model';
import { VocabularyEntry } from './submission/vocabularies/models/vocabulary-entry.model';
import { VocabularyEntryDetail } from './submission/vocabularies/models/vocabulary-entry-detail.model';
import { SupervisionOrder } from './supervision-order/models/supervision-order.model';
import { AdvancedWorkflowInfo } from './tasks/models/advanced-workflow-info.model';
import { ClaimedTask } from './tasks/models/claimed-task-object.model';
import { PoolTask } from './tasks/models/pool-task-object.model';
@@ -164,11 +184,9 @@ export const models =
VocabularyEntryDetail,
ConfigurationProperty,
ShortLivedToken,
Registration,
UsageReport,
QualityAssuranceTopicObject,
QualityAssuranceEventObject,
Root,
SearchConfig,
SubmissionAccessesModel,
QualityAssuranceSourceObject,
@@ -187,4 +205,24 @@ export const models =
SubmissionCoarNotifyConfig,
NotifyRequestsStatus,
SystemWideAlert,
AdminNotifyMessage,
SubmissionAccessModel,
SubmissionDefinitionModel,
SubmissionFormModel,
SubmissionSectionsModel,
SubmissionUploadModel,
PaginatedList,
Feedback,
Suggestion,
Filetypes,
ContentSource,
ListableNotificationObject,
FacetConfigResponse,
FacetValues,
SearchFilterConfig,
SearchObjects,
SearchResult,
StatisticsEndpoint,
CorrectionType,
SupervisionOrder,
];

View File

@@ -6,13 +6,14 @@
* http://www.dspace.org/license/
*/
import { XhrFactory } from '@angular/common';
import { Injectable } from '@angular/core';
import {
Agent as HttpAgent,
AgentOptions as HttpAgentOptions,
} from 'http';
import { Agent as HttpsAgent } from 'https';
} from 'node:http';
import { Agent as HttpsAgent } from 'node:https';
import { XhrFactory } from '@angular/common';
import { Injectable } from '@angular/core';
import {
prototype,
XMLHttpRequest,

View File

@@ -183,7 +183,7 @@ export class SearchConfigurationService implements OnDestroy {
*/
getCurrentQuery(defaultQuery: string) {
return this.routeService.getQueryParameterValue('query').pipe(map((query) => {
return query || defaultQuery;
return query !== null ? query : defaultQuery; // Allow querying when the value is empty
}));
}

View File

@@ -7,7 +7,7 @@
<ds-dso-edit-menu></ds-dso-edit-menu>
</div>
<div class="row">
<div class="col-xs-12 col-md-4">
<div class="col-12 col-md-4">
<ds-metadata-field-wrapper [hideIfNoTextContent]="false">
<ds-thumbnail [thumbnail]="object?.thumbnail | async"></ds-thumbnail>
</ds-metadata-field-wrapper>
@@ -32,7 +32,7 @@
[label]="'journalissue.page.journal-issn'">
</ds-generic-item-page-field>
</div>
<div class="col-xs-12 col-md-6">
<div class="col-12 col-md-6">
<ds-related-items
[parentItem]="object"
[relationType]="'isJournalVolumeOfIssue'"

View File

@@ -7,7 +7,7 @@
<ds-dso-edit-menu></ds-dso-edit-menu>
</div>
<div class="row">
<div class="col-xs-12 col-md-4">
<div class="col-12 col-md-4">
<ds-metadata-field-wrapper [hideIfNoTextContent]="false">
<ds-thumbnail [thumbnail]="object?.thumbnail | async"></ds-thumbnail>
</ds-metadata-field-wrapper>
@@ -20,7 +20,7 @@
[label]="'journalvolume.page.issuedate'">
</ds-generic-item-page-field>
</div>
<div class="col-xs-12 col-md-6">
<div class="col-12 col-md-6">
<ds-related-items
[parentItem]="object"
[relationType]="'isJournalOfVolume'"

View File

@@ -7,7 +7,7 @@
<ds-dso-edit-menu></ds-dso-edit-menu>
</div>
<div class="row">
<div class="col-xs-12 col-md-4">
<div class="col-12 col-md-4">
<ds-metadata-field-wrapper [hideIfNoTextContent]="false">
<ds-thumbnail [thumbnail]="object?.thumbnail | async"></ds-thumbnail>
</ds-metadata-field-wrapper>
@@ -24,7 +24,7 @@
[label]="'journal.page.editor'">
</ds-generic-item-page-field>
</div>
<div class="col-xs-12 col-md-6">
<div class="col-12 col-md-6">
<ds-related-items
[parentItem]="object"
[relationType]="'isVolumeOfJournal'"

View File

@@ -7,7 +7,7 @@
<ds-dso-edit-menu></ds-dso-edit-menu>
</div>
<div class="row">
<div class="col-xs-12 col-md-4">
<div class="col-12 col-md-4">
<ds-metadata-field-wrapper [hideIfNoTextContent]="false">
<ds-thumbnail [thumbnail]="object?.thumbnail | async"
[defaultImage]="'assets/images/orgunit-placeholder.svg'"
@@ -33,7 +33,7 @@
[label]="'orgunit.page.id'">
</ds-generic-item-page-field>
</div>
<div class="col-xs-12 col-md-7">
<div class="col-12 col-md-7">
<ds-item-page-img-field
[fields]="['organization.identifier.ror']"
[img]="{

View File

@@ -7,7 +7,7 @@
<ds-dso-edit-menu></ds-dso-edit-menu>
</div>
<div class="row">
<div class="col-xs-12 col-md-4">
<div class="col-12 col-md-4">
<ds-metadata-field-wrapper [hideIfNoTextContent]="false">
<ds-thumbnail [thumbnail]="object?.thumbnail | async"
[defaultImage]="'assets/images/person-placeholder.svg'"
@@ -24,7 +24,7 @@
[label]="'person.page.birthdate'">
</ds-generic-item-page-field>
</div>
<div class="col-xs-12 col-md-7">
<div class="col-12 col-md-7">
<ds-related-items
[parentItem]="object"
[relationType]="'isProjectOfPerson'"

View File

@@ -7,7 +7,7 @@
<ds-dso-edit-menu></ds-dso-edit-menu>
</div>
<div class="row">
<div class="col-xs-12 col-md-4">
<div class="col-12 col-md-4">
<ds-metadata-field-wrapper [hideIfNoTextContent]="false">
<ds-thumbnail
[thumbnail]="object?.thumbnail | async"
@@ -39,7 +39,7 @@
<!--[label]="'project.page.expectedcompletion'">-->
<!--</ds-generic-item-page-field>-->
</div>
<div class="col-xs-12 col-md-7">
<div class="col-12 col-md-7">
<ds-related-items
[parentItem]="object"
[relationType]="'isPersonOfProject'"

View File

@@ -53,7 +53,7 @@
<div class="content-container align-self-center">
<p class="m-0">
<a class="text-white"
href="http://www.dspace.org/" role="link" tabindex="0">{{ 'footer.link.dspace' | translate}}</a>
href="https://www.dspace.org/" role="link" tabindex="0">{{ 'footer.link.dspace' | translate}}</a>
{{ 'footer.copyright' | translate:{year: dateObj | date:'y'} }}
<a class="text-white"
href="https://www.lyrasis.org/" role="link" tabindex="0">{{ 'footer.link.lyrasis' | translate}}</a>

View File

@@ -1,5 +1,5 @@
<div class="row row-offcanvas row-offcanvas-right">
<div class="col-xs-12 col-sm-12 col-md-9">
<div class="col-12 col-sm-12 col-md-9">
<h1>{{ 'info.feedback.head' | translate }}</h1>
<p>{{ 'info.feedback.info' | translate }}</p>
<form [formGroup]="feedbackForm" (ngSubmit)="createFeedback()" class="col p-0">

View File

@@ -1,12 +1,14 @@
@if (isNotEmpty(points) || isNotEmpty(bboxes)) {
<div>
<ds-metadata-field-wrapper [label]="label | translate">
@defer {
<ds-geospatial-map [coordinates]="this.points"
[bbox]="this.bboxes"
[cluster]="this.cluster"
[layout]="'item'"
style="width: 100%;">
</ds-geospatial-map>
}
</ds-metadata-field-wrapper>
</div>
}

View File

@@ -63,13 +63,15 @@ describe('GeospatialItemPageFieldComponent', () => {
fixture = TestBed.createComponent(GeospatialItemPageFieldComponent);
comp = fixture.componentInstance;
comp.item = mockItemWithMetadataFieldsAndValue([mockField], mockValue);
comp.fields = mockFields;
comp.pointFields = mockFields;
comp.bboxFields = mockFields;
comp.label = mockLabel;
fixture.detectChanges();
}));
it('should initialize a map from passed points', () => {
expect(fixture.nativeElement.querySelector('ds-geospatial-map[ng-reflect-coordinates="Point ( +174.000000 -042.00000"]')).toBeTruthy();
expect(comp.bboxes).toContain(mockValue);
expect(comp.points).toContain(mockValue);
});
});

View File

@@ -18,7 +18,7 @@
<ds-dso-edit-menu></ds-dso-edit-menu>
</div>
<div class="row">
<div class="col-xs-12 col-md-4">
<div class="col-12 col-md-4">
@if (!(mediaViewer.image || mediaViewer.video)) {
<ds-metadata-field-wrapper [hideIfNoTextContent]="false">
<ds-thumbnail [thumbnail]="object?.thumbnail | async"></ds-thumbnail>
@@ -54,7 +54,7 @@
[label]="'publication.page.publisher'">
</ds-generic-item-page-field>
</div>
<div class="col-xs-12 col-md-7">
<div class="col-12 col-md-7">
<ds-related-items
[parentItem]="object"
[relationType]="'isProjectOfPublication'"

View File

@@ -19,7 +19,7 @@
<ds-dso-edit-menu></ds-dso-edit-menu>
</div>
<div class="row">
<div class="col-xs-12 col-md-4">
<div class="col-12 col-md-4">
@if (!(mediaViewer.image || mediaViewer.video)) {
<ds-metadata-field-wrapper [hideIfNoTextContent]="false">
<ds-thumbnail [thumbnail]="object?.thumbnail | async"></ds-thumbnail>
@@ -55,7 +55,7 @@
[label]="'item.page.publisher'">
</ds-generic-item-page-field>
</div>
<div class="col-xs-12 col-md-6">
<div class="col-12 col-md-6">
<ds-item-page-abstract-field [item]="object"></ds-item-page-abstract-field>
<ds-generic-item-page-field [item]="object"
[fields]="['dc.description']"

View File

@@ -44,6 +44,12 @@ describe('TabbedRelatedEntitiesSearchComponent', () => {
provide: ActivatedRoute,
useValue: {
queryParams: of({ tab: mockRelationType }),
snapshot: {
queryParams: {
scope: 'collection-uuid',
query: 'test',
},
},
},
},
{ provide: Router, useValue: router },
@@ -89,8 +95,10 @@ describe('TabbedRelatedEntitiesSearchComponent', () => {
relativeTo: (comp as any).route,
queryParams: {
tab: event.nextId,
query: 'test',
scope: 'collection-uuid',
'spc.page': 1,
},
queryParamsHandling: 'merge',
});
});
});

View File

@@ -89,8 +89,10 @@ export class TabbedRelatedEntitiesSearchComponent implements OnInit {
relativeTo: this.route,
queryParams: {
tab: event.nextId,
query: this.route.snapshot.queryParams.query,
scope: this.route.snapshot.queryParams.scope,
'spc.page': 1,
},
queryParamsHandling: 'merge',
});
}

View File

@@ -144,6 +144,12 @@ export class CollectionDropdownComponent implements OnInit, OnDestroy {
*/
@Input() entityType: string;
/**
* Search endpoint to use for finding authorized collections.
* Defaults to 'findSubmitAuthorized', but can be overridden (e.g. to 'findAdminAuthorized')
*/
@Input() searchHref = 'findSubmitAuthorized';
/**
* Emit to notify whether search is complete
*/
@@ -252,7 +258,7 @@ export class CollectionDropdownComponent implements OnInit, OnDestroy {
followLink('parentCommunity'));
} else {
searchListService$ = this.collectionDataService
.getAuthorizedCollection(query, findOptions, true, true, followLink('parentCommunity'));
.getAuthorizedCollection(query, findOptions, true, true, this.searchHref, followLink('parentCommunity'));
}
this.searchListCollection$ = searchListService$.pipe(
getFirstCompletedRemoteData(),

View File

@@ -51,7 +51,7 @@
@if (hasCustomGroup$ | async) {
<button
class="btn btn-danger delete"
(click)="delete()">
(click)="confirmDelete(dsoNameService.getName(group))">
<i class="fas fa-trash" aria-hidden="true"></i> {{'comcol-role.edit.delete' | translate}}
</button>
}

View File

@@ -10,6 +10,7 @@ import {
import { By } from '@angular/platform-browser';
import { NoopAnimationsModule } from '@angular/platform-browser/animations';
import { RouterTestingModule } from '@angular/router/testing';
import { NgbModule } from '@ng-bootstrap/ng-bootstrap';
import { TranslateModule } from '@ngx-translate/core';
import { of } from 'rxjs';
@@ -36,17 +37,22 @@ describe('ComcolRoleComponent', () => {
let comcolRole;
let notificationsService;
const requestService = { hasByHref$: () => of(true) };
const requestService = {
hasByHref$: () => of(true),
setStaleByHrefSubstring: () => of(true),
};
const groupService = {
findByHref: jasmine.createSpy('findByHref'),
createComcolGroup: jasmine.createSpy('createComcolGroup').and.returnValue(of({})),
deleteComcolGroup: jasmine.createSpy('deleteComcolGroup').and.returnValue(of({})),
clearGroupsRequests: jasmine.createSpy('clearGroupsRequests'),
};
beforeEach(waitForAsync(() => {
TestBed.configureTestingModule({
imports: [
NgbModule,
RouterTestingModule.withRoutes([]),
TranslateModule.forRoot(),
NoopAnimationsModule,
@@ -178,13 +184,17 @@ describe('ComcolRoleComponent', () => {
fixture.detectChanges();
});
afterEach(() => {
const modal = document.querySelector('ds-confirmation-modal');
if (modal) {
modal.remove();
}
});
it('should have a delete button but no create or restrict button', (done) => {
expect(de.query(By.css('.btn.create')))
.toBeNull();
expect(de.query(By.css('.btn.restrict')))
.toBeNull();
expect(de.query(By.css('.btn.delete')))
.toBeTruthy();
expect(de.query(By.css('.btn.create'))).toBeNull();
expect(de.query(By.css('.btn.restrict'))).toBeNull();
expect(de.query(By.css('.btn.delete'))).toBeTruthy();
done();
});
@@ -195,6 +205,7 @@ describe('ComcolRoleComponent', () => {
});
it('should call the groupService delete method', (done) => {
(document as any).querySelector('.modal-footer .confirm').click();
expect(groupService.deleteComcolGroup).toHaveBeenCalled();
done();
});
@@ -207,9 +218,11 @@ describe('ComcolRoleComponent', () => {
});
it('should show an error notification', (done) => {
(document as any).querySelector('.modal-footer .confirm').click();
expect(notificationsService.error).toHaveBeenCalled();
done();
});
});
});
});

View File

@@ -5,6 +5,7 @@ import {
OnInit,
} from '@angular/core';
import { RouterLink } from '@angular/router';
import { NgbModal } from '@ng-bootstrap/ng-bootstrap';
import {
TranslateModule,
TranslateService,
@@ -12,11 +13,13 @@ import {
import {
BehaviorSubject,
Observable,
Subscription,
} from 'rxjs';
import {
filter,
map,
switchMap,
takeUntil,
} from 'rxjs/operators';
import { getGroupEditRoute } from '../../../../../access-control/access-control-routing-paths';
@@ -34,6 +37,7 @@ import {
getFirstCompletedRemoteData,
} from '../../../../../core/shared/operators';
import { AlertComponent } from '../../../../alert/alert.component';
import { ConfirmationModalComponent } from '../../../../confirmation-modal/confirmation-modal.component';
import {
hasNoValue,
hasValue,
@@ -115,6 +119,7 @@ export class ComcolRoleComponent implements OnInit {
protected notificationsService: NotificationsService,
protected translateService: TranslateService,
public dsoNameService: DSONameService,
private modalService: NgbModal,
) {
}
@@ -215,4 +220,31 @@ export class ComcolRoleComponent implements OnInit {
this.roleName$ = this.translateService.get(`comcol-role.edit.${this.comcolRole.name}.name`);
}
confirmDelete(groupName: string): void {
const modalRef = this.modalService.open(ConfirmationModalComponent);
modalRef.componentInstance.name = groupName;
modalRef.componentInstance.headerLabel = 'comcol-role.edit.delete.modal.header';
modalRef.componentInstance.infoLabel = 'comcol-role.edit.delete.modal.info';
modalRef.componentInstance.cancelLabel = 'comcol-role.edit.delete.modal.cancel';
modalRef.componentInstance.confirmLabel = 'comcol-role.edit.delete.modal.confirm';
modalRef.componentInstance.brandColor = 'danger';
modalRef.componentInstance.confirmIcon = 'fas fa-trash';
const modalSub: Subscription = modalRef.componentInstance.response.pipe(
takeUntil(modalRef.closed),
).subscribe((result: boolean) => {
if (result === true) {
this.delete();
}
});
void modalRef.result.then().finally(() => {
modalRef.close();
if (modalSub && !modalSub.closed) {
modalSub.unsubscribe();
}
});
}
}

View File

@@ -147,7 +147,7 @@ export class ComcolPageBrowseByComponent implements OnDestroy, OnInit {
]).subscribe(([navOptions, url]: [ComColPageNavOption[], string]) => {
for (const option of navOptions) {
if (url?.split('?')[0] === comColRoute && option.id === this.appConfig[this.contentType].defaultBrowseTab) {
void this.router.navigate([option.routerLink], { queryParams: option.params });
void this.router.navigate([option.routerLink], { queryParams: option.params, replaceUrl: true });
break;
} else if (option.routerLink === url?.split('?')[0]) {
this.currentOption$.next(option);

View File

@@ -0,0 +1,7 @@
:host {
.modal {
&-body, &-header {
word-break: break-word;
}
}
}

View File

@@ -11,6 +11,7 @@ import { TranslateModule } from '@ngx-translate/core';
@Component({
selector: 'ds-confirmation-modal',
templateUrl: 'confirmation-modal.component.html',
styleUrls: ['confirmation-modal.component.scss'],
standalone: true,
imports: [
TranslateModule,

View File

@@ -83,5 +83,19 @@ describe('AuthorizedCollectionSelectorComponent', () => {
});
});
});
describe('when using searchHref', () => {
it('should call getAuthorizedCollection with "findAdminAuthorized" when overridden', (done) => {
component.searchHref = 'findAdminAuthorized';
component.search('', 1).subscribe(() => {
expect(collectionService.getAuthorizedCollection).toHaveBeenCalledWith(
'', jasmine.any(Object), true, false, 'findAdminAuthorized', jasmine.anything(),
);
done();
});
});
});
});
});

View File

@@ -66,6 +66,12 @@ export class AuthorizedCollectionSelectorComponent extends DSOSelectorComponent
*/
@Input() entityType: string;
/**
* Search endpoint to use for finding authorized collections.
* Defaults to 'findSubmitAuthorized', but can be overridden (e.g. to 'findAdminAuthorized')
*/
@Input() searchHref = 'findSubmitAuthorized';
constructor(
protected searchService: SearchService,
protected collectionDataService: CollectionDataService,
@@ -104,7 +110,7 @@ export class AuthorizedCollectionSelectorComponent extends DSOSelectorComponent
findOptions);
} else {
searchListService$ = this.collectionDataService
.getAuthorizedCollection(query, findOptions, useCache, false, followLink('parentCommunity'));
.getAuthorizedCollection(query, findOptions, useCache, false, this.searchHref, followLink('parentCommunity'));
}
return searchListService$.pipe(
getFirstCompletedRemoteData(),

View File

@@ -0,0 +1,71 @@
import { NO_ERRORS_SCHEMA } from '@angular/core';
import {
ComponentFixture,
TestBed,
waitForAsync,
} from '@angular/core/testing';
import { RouterTestingModule } from '@angular/router/testing';
import { TranslateModule } from '@ngx-translate/core';
import { CommunityDataService } from '../../../../core/data/community-data.service';
import { Community } from '../../../../core/shared/community.model';
import { DSpaceObjectType } from '../../../../core/shared/dspace-object-type.model';
import { SearchService } from '../../../../core/shared/search/search.service';
import { ThemedLoadingComponent } from '../../../loading/themed-loading.component';
import { NotificationsService } from '../../../notifications/notifications.service';
import { ListableObjectComponentLoaderComponent } from '../../../object-collection/shared/listable-object/listable-object-component-loader.component';
import { createSuccessfulRemoteDataObject$ } from '../../../remote-data.utils';
import { createPaginatedList } from '../../../testing/utils.test';
import { VarDirective } from '../../../utils/var.directive';
import { AuthorizedCommunitySelectorComponent } from './authorized-community-selector.component';
describe('AuthorizedCommunitySelectorComponent', () => {
let component: AuthorizedCommunitySelectorComponent;
let fixture: ComponentFixture<AuthorizedCommunitySelectorComponent>;
let communityService;
let community;
let notificationsService: NotificationsService;
beforeEach(waitForAsync(() => {
community = Object.assign(new Community(), {
id: 'authorized-community',
});
communityService = jasmine.createSpyObj('communityService', {
getAuthorizedCommunity: createSuccessfulRemoteDataObject$(createPaginatedList([community])),
});
notificationsService = jasmine.createSpyObj('notificationsService', ['error']);
TestBed.configureTestingModule({
imports: [TranslateModule.forRoot(), RouterTestingModule.withRoutes([]), AuthorizedCommunitySelectorComponent, VarDirective],
providers: [
{ provide: SearchService, useValue: {} },
{ provide: CommunityDataService, useValue: communityService },
{ provide: NotificationsService, useValue: notificationsService },
],
schemas: [NO_ERRORS_SCHEMA],
})
.overrideComponent(AuthorizedCommunitySelectorComponent, {
remove: { imports: [ListableObjectComponentLoaderComponent, ThemedLoadingComponent] },
})
.compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(AuthorizedCommunitySelectorComponent);
component = fixture.componentInstance;
component.types = [DSpaceObjectType.COMMUNITY];
fixture.detectChanges();
});
describe('search', () => {
it('should call getAuthorizedCommunity and return the authorized community in a SearchResult', (done) => {
component.search('', 1).subscribe((resultRD) => {
expect(communityService.getAuthorizedCommunity).toHaveBeenCalled();
expect(resultRD.payload.page.length).toEqual(1);
expect(resultRD.payload.page[0].indexableObject).toEqual(community);
done();
});
});
});
});

View File

@@ -0,0 +1,105 @@
import {
AsyncPipe,
NgClass,
} from '@angular/common';
import { Component } from '@angular/core';
import {
FormsModule,
ReactiveFormsModule,
} from '@angular/forms';
import {
TranslateModule,
TranslateService,
} from '@ngx-translate/core';
import { InfiniteScrollModule } from 'ngx-infinite-scroll';
import { Observable } from 'rxjs';
import { map } from 'rxjs/operators';
import { DSONameService } from '../../../../core/breadcrumbs/dso-name.service';
import { CommunityDataService } from '../../../../core/data/community-data.service';
import { FindListOptions } from '../../../../core/data/find-list-options.model';
import {
buildPaginatedList,
PaginatedList,
} from '../../../../core/data/paginated-list.model';
import { RemoteData } from '../../../../core/data/remote-data';
import { Community } from '../../../../core/shared/community.model';
import { DSpaceObject } from '../../../../core/shared/dspace-object.model';
import { getFirstCompletedRemoteData } from '../../../../core/shared/operators';
import { SearchService } from '../../../../core/shared/search/search.service';
import { hasValue } from '../../../empty.util';
import { HoverClassDirective } from '../../../hover-class.directive';
import { ThemedLoadingComponent } from '../../../loading/themed-loading.component';
import { NotificationsService } from '../../../notifications/notifications.service';
import { CommunitySearchResult } from '../../../object-collection/shared/community-search-result.model';
import { ListableObjectComponentLoaderComponent } from '../../../object-collection/shared/listable-object/listable-object-component-loader.component';
import { SearchResult } from '../../../search/models/search-result.model';
import { followLink } from '../../../utils/follow-link-config.model';
import { DSOSelectorComponent } from '../dso-selector.component';
@Component({
selector: 'ds-authorized-community-selector',
styleUrls: ['../dso-selector.component.scss'],
templateUrl: '../dso-selector.component.html',
standalone: true,
imports: [
AsyncPipe,
FormsModule,
HoverClassDirective,
InfiniteScrollModule,
ListableObjectComponentLoaderComponent,
NgClass,
ReactiveFormsModule,
ThemedLoadingComponent,
TranslateModule,
],
})
/**
* Component rendering a list of communities to select from
*/
export class AuthorizedCommunitySelectorComponent extends DSOSelectorComponent {
/**
* If present this value is used to filter community list by entity type
*/
constructor(
protected searchService: SearchService,
protected communityDataService: CommunityDataService,
protected notifcationsService: NotificationsService,
protected translate: TranslateService,
protected dsoNameService: DSONameService,
) {
super(searchService, notifcationsService, translate, dsoNameService);
}
/**
* Get a query to send for retrieving the current DSO
*/
getCurrentDSOQuery(): string {
return this.currentDSOId;
}
/**
* Perform a search for authorized communities with the current query and page
* @param query Query to search objects for
* @param page Page to retrieve
* @param useCache Whether or not to use the cache
*/
search(query: string, page: number, useCache: boolean = true): Observable<RemoteData<PaginatedList<SearchResult<DSpaceObject>>>> {
let searchListService$: Observable<RemoteData<PaginatedList<Community>>> = null;
const findOptions: FindListOptions = {
currentPage: page,
elementsPerPage: this.defaultPagination.pageSize,
};
searchListService$ = this.communityDataService
.getAuthorizedCommunity(query, findOptions, useCache, false, followLink('parentCommunity'));
return searchListService$.pipe(
getFirstCompletedRemoteData(),
map((rd) => Object.assign(new RemoteData(null, null, null, null), rd, {
payload: hasValue(rd.payload) ? buildPaginatedList(rd.payload.pageInfo, rd.payload.page.map((col) => Object.assign(new CommunitySearchResult(), { indexableObject: col }))) : null,
})),
);
}
}

View File

@@ -0,0 +1,14 @@
<div>
<div class="modal-header">{{'dso-selector.'+ action + '.' + objectType.toString().toLowerCase() + '.head' | translate}}
<button type="button" class="btn-close" (click)="close()" aria-label="Close">
</button>
</div>
<div class="modal-body">
@if (header) {
<span class="h5 px-2">{{header | translate}}</span>
}
<ds-authorized-community-selector [currentDSOId]="dsoRD?.payload.uuid"
[types]="selectorTypes"
(onSelect)="selectObject($event)"></ds-authorized-community-selector>
</div>
</div>

View File

@@ -18,7 +18,7 @@ import { Community } from '../../../../core/shared/community.model';
import { MetadataValue } from '../../../../core/shared/metadata.models';
import { createSuccessfulRemoteDataObject } from '../../../remote-data.utils';
import { RouterStub } from '../../../testing/router.stub';
import { DSOSelectorComponent } from '../../dso-selector/dso-selector.component';
import { AuthorizedCommunitySelectorComponent } from '../../dso-selector/authorized-community-selector/authorized-community-selector.component';
import { CreateCollectionParentSelectorComponent } from './create-collection-parent-selector.component';
describe('CreateCollectionParentSelectorComponent', () => {
@@ -64,7 +64,7 @@ describe('CreateCollectionParentSelectorComponent', () => {
schemas: [NO_ERRORS_SCHEMA],
})
.overrideComponent(CreateCollectionParentSelectorComponent, {
remove: { imports: [DSOSelectorComponent] },
remove: { imports: [AuthorizedCommunitySelectorComponent] },
})
.compileComponents();

View File

@@ -22,7 +22,7 @@ import {
} from '../../../../core/cache/models/sort-options.model';
import { DSpaceObject } from '../../../../core/shared/dspace-object.model';
import { DSpaceObjectType } from '../../../../core/shared/dspace-object-type.model';
import { DSOSelectorComponent } from '../../dso-selector/dso-selector.component';
import { AuthorizedCommunitySelectorComponent } from '../../dso-selector/authorized-community-selector/authorized-community-selector.component';
import {
DSOSelectorModalWrapperComponent,
SelectorActionType,
@@ -34,10 +34,10 @@ import {
@Component({
selector: 'ds-base-create-collection-parent-selector',
templateUrl: '../dso-selector-modal-wrapper.component.html',
templateUrl: './create-collection-parent-selector.component.html',
standalone: true,
imports: [
DSOSelectorComponent,
AuthorizedCommunitySelectorComponent,
TranslateModule,
],
})

View File

@@ -16,7 +16,9 @@
</div>
}
<span class="h5 px-2">{{'dso-selector.create.community.sub-level' | translate}}</span>
<ds-dso-selector [currentDSOId]="dsoRD?.payload.uuid" [types]="selectorTypes" [sort]="defaultSort" (onSelect)="selectObject($event)"></ds-dso-selector>
<ds-authorized-community-selector [currentDSOId]="dsoRD?.payload.uuid"
[types]="selectorTypes"
(onSelect)="selectObject($event)"></ds-authorized-community-selector>
</div>
</div>

View File

@@ -21,7 +21,7 @@ import { Community } from '../../../../core/shared/community.model';
import { MetadataValue } from '../../../../core/shared/metadata.models';
import { createSuccessfulRemoteDataObject } from '../../../remote-data.utils';
import { RouterStub } from '../../../testing/router.stub';
import { DSOSelectorComponent } from '../../dso-selector/dso-selector.component';
import { AuthorizedCommunitySelectorComponent } from '../../dso-selector/authorized-community-selector/authorized-community-selector.component';
import { CreateCommunityParentSelectorComponent } from './create-community-parent-selector.component';
describe('CreateCommunityParentSelectorComponent', () => {
@@ -69,7 +69,7 @@ describe('CreateCommunityParentSelectorComponent', () => {
schemas: [NO_ERRORS_SCHEMA],
})
.overrideComponent(CreateCommunityParentSelectorComponent, {
remove: { imports: [DSOSelectorComponent] },
remove: { imports: [AuthorizedCommunitySelectorComponent] },
})
.compileComponents();

View File

@@ -26,7 +26,7 @@ import { FeatureID } from '../../../../core/data/feature-authorization/feature-i
import { DSpaceObject } from '../../../../core/shared/dspace-object.model';
import { DSpaceObjectType } from '../../../../core/shared/dspace-object-type.model';
import { hasValue } from '../../../empty.util';
import { DSOSelectorComponent } from '../../dso-selector/dso-selector.component';
import { AuthorizedCommunitySelectorComponent } from '../../dso-selector/authorized-community-selector/authorized-community-selector.component';
import {
DSOSelectorModalWrapperComponent,
SelectorActionType,
@@ -46,7 +46,7 @@ import {
standalone: true,
imports: [
AsyncPipe,
DSOSelectorComponent,
AuthorizedCommunitySelectorComponent,
TranslateModule,
],
})

View File

@@ -0,0 +1,15 @@
<div>
<div class="modal-header">{{'dso-selector.'+ action + '.' + objectType.toString().toLowerCase() + '.head' | translate}}
<button type="button" class="btn-close" (click)="close()" aria-label="Close">
</button>
</div>
<div class="modal-body">
@if (header) {
<span class="h5 px-2">{{header | translate}}</span>
}
<ds-authorized-collection-selector [currentDSOId]="dsoRD?.payload.uuid"
[types]="selectorTypes"
searchHref="findAdminAuthorized"
(onSelect)="selectObject($event)"></ds-authorized-collection-selector>
</div>
</div>

View File

@@ -18,7 +18,7 @@ import { Collection } from '../../../../core/shared/collection.model';
import { MetadataValue } from '../../../../core/shared/metadata.models';
import { createSuccessfulRemoteDataObject } from '../../../remote-data.utils';
import { RouterStub } from '../../../testing/router.stub';
import { DSOSelectorComponent } from '../../dso-selector/dso-selector.component';
import { AuthorizedCollectionSelectorComponent } from '../../dso-selector/authorized-collection-selector/authorized-collection-selector.component';
import { EditCollectionSelectorComponent } from './edit-collection-selector.component';
describe('EditCollectionSelectorComponent', () => {
@@ -64,7 +64,7 @@ describe('EditCollectionSelectorComponent', () => {
})
.overrideComponent(EditCollectionSelectorComponent, {
remove: {
imports: [DSOSelectorComponent],
imports: [AuthorizedCollectionSelectorComponent],
},
})
.compileComponents();

View File

@@ -17,7 +17,7 @@ import {
} from '../../../../core/cache/models/sort-options.model';
import { DSpaceObject } from '../../../../core/shared/dspace-object.model';
import { DSpaceObjectType } from '../../../../core/shared/dspace-object-type.model';
import { DSOSelectorComponent } from '../../dso-selector/dso-selector.component';
import { AuthorizedCollectionSelectorComponent } from '../../dso-selector/authorized-collection-selector/authorized-collection-selector.component';
import {
DSOSelectorModalWrapperComponent,
SelectorActionType,
@@ -30,10 +30,10 @@ import {
@Component({
selector: 'ds-base-edit-collection-selector',
templateUrl: '../dso-selector-modal-wrapper.component.html',
templateUrl: './edit-collection-selector.component.html',
standalone: true,
imports: [
DSOSelectorComponent,
AuthorizedCollectionSelectorComponent,
TranslateModule,
],
})

View File

@@ -0,0 +1,14 @@
<div>
<div class="modal-header">{{'dso-selector.'+ action + '.' + objectType.toString().toLowerCase() + '.head' | translate}}
<button type="button" class="btn-close" (click)="close()" aria-label="Close">
</button>
</div>
<div class="modal-body">
@if (header) {
<span class="h5 px-2">{{header | translate}}</span>
}
<ds-authorized-community-selector [currentDSOId]="dsoRD?.payload.uuid"
[types]="selectorTypes"
(onSelect)="selectObject($event)"></ds-authorized-community-selector>
</div>
</div>

View File

@@ -18,7 +18,7 @@ import { Community } from '../../../../core/shared/community.model';
import { MetadataValue } from '../../../../core/shared/metadata.models';
import { createSuccessfulRemoteDataObject } from '../../../remote-data.utils';
import { RouterStub } from '../../../testing/router.stub';
import { DSOSelectorComponent } from '../../dso-selector/dso-selector.component';
import { AuthorizedCommunitySelectorComponent } from '../../dso-selector/authorized-community-selector/authorized-community-selector.component';
import { EditCommunitySelectorComponent } from './edit-community-selector.component';
describe('EditCommunitySelectorComponent', () => {
@@ -64,7 +64,7 @@ describe('EditCommunitySelectorComponent', () => {
})
.overrideComponent(EditCommunitySelectorComponent, {
remove: {
imports: [DSOSelectorComponent],
imports: [AuthorizedCommunitySelectorComponent],
},
})
.compileComponents();

View File

@@ -17,7 +17,7 @@ import {
} from '../../../../core/cache/models/sort-options.model';
import { DSpaceObject } from '../../../../core/shared/dspace-object.model';
import { DSpaceObjectType } from '../../../../core/shared/dspace-object-type.model';
import { DSOSelectorComponent } from '../../dso-selector/dso-selector.component';
import { AuthorizedCommunitySelectorComponent } from '../../dso-selector/authorized-community-selector/authorized-community-selector.component';
import {
DSOSelectorModalWrapperComponent,
SelectorActionType,
@@ -30,10 +30,10 @@ import {
@Component({
selector: 'ds-base-edit-community-selector',
templateUrl: '../dso-selector-modal-wrapper.component.html',
templateUrl: './edit-community-selector.component.html',
standalone: true,
imports: [
DSOSelectorComponent,
AuthorizedCommunitySelectorComponent,
TranslateModule,
],
})

View File

@@ -39,7 +39,7 @@
</div>
@if (model.languageCodes && model.languageCodes.length > 0) {
<div class="col-xs-2" >
<div class="col-2" >
<select
#language="ngModel"
[disabled]="model.readOnly"

View File

@@ -437,6 +437,7 @@ export class DsDynamicFormControlContainerComponent extends DynamicFormControlCo
* Unsubscribe from all subscriptions
*/
ngOnDestroy(): void {
super.ngOnDestroy();
this.subs
.filter((sub) => hasValue(sub))
.forEach((sub) => sub.unsubscribe());

View File

@@ -24,38 +24,40 @@
@if ((isHierarchicalVocabulary() | async) !== true) {
<div class="position-relative right-addon">
@if (searching || loadingInitialValue) {
<i class="fas fa-circle-notch fa-spin fa-2x fa-fw text-primary position-absolute mt-1 p-0" aria-hidden="true"></i>
}
@if (!searching && !loadingInitialValue) {
<i
dsAuthorityConfidenceState
class="far fa-circle fa-2x fa-fw position-absolute mt-1 p-0"
aria-hidden="true"
[authorityValue]="currentValue"
(whenClickOnConfidenceNotAccepted)="whenClickOnConfidenceNotAccepted($event)"></i>
}
<div class="authority-icons position-absolute d-flex align-items-center">
@if (searching || loadingInitialValue) {
<i class="fas fa-circle-notch fa-spin fa-2x fa-fw text-primary my-auto p-0" aria-hidden="true"></i>
}
@if (!searching && !loadingInitialValue) {
<i
dsAuthorityConfidenceState
class="far fa-circle fa-2x fa-fw my-auto p-0"
aria-hidden="true"
[authorityValue]="currentValue"
(whenClickOnConfidenceNotAccepted)="whenClickOnConfidenceNotAccepted($event)"></i>
}
</div>
<input #instance="ngbTypeahead"
class="form-control"
[attr.aria-labelledby]="'label_' + model.id"
[attr.autoComplete]="model.autoComplete"
[attr.aria-label]="model.label | translate"
[class.is-invalid]="showErrorMessages"
[id]="model.id"
[inputFormatter]="formatter"
[name]="model.name"
[ngbTypeahead]="search"
[placeholder]="model.placeholder"
[readonly]="model.readOnly"
[disabled]="model.readOnly"
[resultTemplate]="rt"
[type]="model.inputType"
[(ngModel)]="currentValue"
(blur)="onBlur($event)"
(focus)="onFocus($event)"
(change)="onChange($event)"
(input)="onInput($event)"
(selectItem)="onSelectItem($event)">
class="form-control"
[attr.aria-labelledby]="'label_' + model.id"
[attr.autoComplete]="model.autoComplete"
[attr.aria-label]="model.label | translate"
[class.is-invalid]="showErrorMessages"
[id]="model.id"
[inputFormatter]="formatter"
[name]="model.name"
[ngbTypeahead]="search"
[placeholder]="model.placeholder"
[readonly]="model.readOnly"
[disabled]="model.readOnly"
[resultTemplate]="rt"
[type]="model.inputType"
[(ngModel)]="currentValue"
(blur)="onBlur($event)"
(focus)="onFocus($event)"
(change)="onChange($event)"
(input)="onInput($event)"
(selectItem)="onSelectItem($event)">
@if (searchFailed) {
<div class="invalid-feedback">Sorry, suggestions could not be loaded.</div>
}
@@ -65,25 +67,25 @@
@if ((isHierarchicalVocabulary() | async)) {
<div class="position-relative right-addon">
<i class="dropdown-toggle position-absolute tree-toggle" (click)="openTree($event)"
aria-hidden="true"></i>
aria-hidden="true"></i>
<input class="form-control"
[attr.aria-labelledby]="'label_' + model.id"
[attr.autoComplete]="model.autoComplete"
[attr.aria-label]="model.label | translate"
[class.is-invalid]="showErrorMessages"
[class.tree-input]="!model.readOnly"
[id]="id"
[name]="model.name"
[placeholder]="model.placeholder"
[readonly]="true"
[disabled]="model.readOnly"
[type]="model.inputType"
[value]="currentValue?.display"
(focus)="onFocus($event)"
(change)="onChange($event)"
(click)="openTree($event)"
(keydown)="$event.preventDefault()"
(keypress)="$event.preventDefault()"
(keyup)="$event.preventDefault()">
[attr.aria-labelledby]="'label_' + model.id"
[attr.autoComplete]="model.autoComplete"
[attr.aria-label]="model.label | translate"
[class.is-invalid]="showErrorMessages"
[class.tree-input]="!model.readOnly"
[id]="id"
[name]="model.name"
[placeholder]="model.placeholder"
[readonly]="true"
[disabled]="model.readOnly"
[type]="model.inputType"
[value]="currentValue?.display"
(focus)="onFocus($event)"
(change)="onChange($event)"
(click)="openTree($event)"
(keydown)="$event.preventDefault()"
(keypress)="$event.preventDefault()"
(keyup)="$event.preventDefault()">
</div>
}

View File

@@ -31,3 +31,9 @@
.tree-input[readonly]{
background-color: #fff;
}
.authority-icons {
top: 50%;
right: 0;
transform: translateY(-50%)
}

View File

@@ -45,10 +45,10 @@ import { FormFieldMetadataValueObject } from '../../../models/form-field-metadat
import { DsDynamicTagComponent } from './dynamic-tag.component';
import { DynamicTagModel } from './dynamic-tag.model';
function createKeyUpEvent(key: number) {
function createKeyUpEvent(key: string) {
/* eslint-disable no-empty,@typescript-eslint/no-empty-function */
const event = {
keyCode: key, preventDefault: () => {
key: key, preventDefault: () => {
}, stopPropagation: () => {
},
};
@@ -278,8 +278,8 @@ describe('DsDynamicTagComponent test suite', () => {
expect(tagComp.chips.getChipsItems()).toEqual(chips.getChipsItems());
});
it('should add an item on ENTER or key press is \',\' or \';\'', fakeAsync(() => {
let event = createKeyUpEvent(13);
it('should add an item on ENTER or key press is \',\'', fakeAsync(() => {
let event = createKeyUpEvent('Enter');
tagComp.currentValue = 'test value';
tagFixture.detectChanges();
@@ -290,7 +290,7 @@ describe('DsDynamicTagComponent test suite', () => {
expect(tagComp.model.value).toEqual(['test value']);
expect(tagComp.currentValue).toBeNull();
event = createKeyUpEvent(188);
event = createKeyUpEvent(',');
tagComp.currentValue = 'test value';
tagFixture.detectChanges();

View File

@@ -219,13 +219,15 @@ export class DsDynamicTagComponent extends DsDynamicVocabularyComponent implemen
}
/**
* Add a new tag with typed text when typing 'Enter' or ',' or ';'
* Add a new tag with typed text when typing 'Enter' or ','
* Tests the key rather than keyCode as keyCodes can vary
* based on keyboard layout (and do not consider Shift mod)
* @param event the keyUp event
*/
onKeyUp(event) {
if (event.keyCode === 13 || event.keyCode === 188) {
if (event.key === 'Enter' || event.key === ',') {
event.preventDefault();
// Key: 'Enter' or ',' or ';'
// Key: 'Enter' or ','
this.addTagsToChips();
event.stopPropagation();
}

View File

@@ -15,7 +15,7 @@
<!--Array with repeatable items-->
@if ((!context.notRepeatable) && !isVirtual(context, index) && group.context.groups.length !== 1 && !isItemReadOnly(context, index)) {
<div
class="col-xs-2 d-flex flex-column justify-content-sm-start align-items-end">
class="col-2 d-flex flex-column justify-content-sm-start align-items-end">
<button type="button" class="btn btn-secondary" role="button"
title="{{'form.remove' | translate}}"
[attr.aria-label]="'form.remove' | translate"
@@ -40,7 +40,7 @@
<!--Array with non repeatable items - Only discard button-->
@if (context.notRepeatable && context.showButtons && group.context.groups.length > 1) {
<div
class="col-xs-2 d-flex flex-column justify-content-sm-start align-items-end">
class="col-2 d-flex flex-column justify-content-sm-start align-items-end">
<div class="btn-group" role="button">
<button type="button" class="btn btn-secondary"
title="{{'form.discard' | translate}}"

View File

@@ -232,7 +232,7 @@ export class FormComponent implements OnDestroy, OnInit {
}
if (field) {
const model: DynamicFormControlModel = this.formBuilderService.findById(fieldId, formModel);
const model: DynamicFormControlModel = this.formBuilderService.findById(fieldId, formModel, fieldIndex);
this.formService.addErrorToField(field, model, error.message);
this.changeDetectorRef.detectChanges();
@@ -255,7 +255,7 @@ export class FormComponent implements OnDestroy, OnInit {
}
if (field) {
const model: DynamicFormControlModel = this.formBuilderService.findById(fieldId, formModel);
const model: DynamicFormControlModel = this.formBuilderService.findById(fieldId, formModel, fieldIndex);
this.formService.removeErrorFromField(field, model, error.message);
}
});

View File

@@ -21,6 +21,7 @@ import { VocabularyEntry } from '../../../core/submission/vocabularies/models/vo
import { VocabularyEntryDetail } from '../../../core/submission/vocabularies/models/vocabulary-entry-detail.model';
import { VocabularyOptions } from '../../../core/submission/vocabularies/models/vocabulary-options.model';
import { VocabularyService } from '../../../core/submission/vocabularies/vocabulary.service';
import { createSuccessfulRemoteDataObject$ } from '../../remote-data.utils';
import { createTestComponent } from '../../testing/utils.test';
import { FormFieldMetadataValueObject } from '../builder/models/form-field-metadata-value.model';
import { VocabularyTreeviewComponent } from './vocabulary-treeview.component';
@@ -63,6 +64,7 @@ describe('VocabularyTreeviewComponent test suite', () => {
searchTopEntries: jasmine.createSpy('searchTopEntries'),
getEntryDetailChildren: jasmine.createSpy('getEntryDetailChildren'),
clearSearchTopRequests: jasmine.createSpy('clearSearchTopRequests'),
findVocabularyById: createSuccessfulRemoteDataObject$({ preloadLevel: 2 }),
});
beforeEach(waitForAsync(() => {

View File

@@ -22,8 +22,17 @@ import {
Observable,
Subscription,
} from 'rxjs';
import {
map,
switchMap,
tap,
} from 'rxjs/operators';
import { VocabularyService } from 'src/app/core/submission/vocabularies/vocabulary.service';
import { RemoteData } from '../../../core/data/remote-data';
import { getFirstCompletedRemoteData } from '../../../core/shared/operators';
import { PageInfo } from '../../../core/shared/page-info.model';
import { Vocabulary } from '../../../core/submission/vocabularies/models/vocabulary.model';
import { VocabularyEntry } from '../../../core/submission/vocabularies/models/vocabulary-entry.model';
import { VocabularyEntryDetail } from '../../../core/submission/vocabularies/models/vocabulary-entry-detail.model';
import { VocabularyOptions } from '../../../core/submission/vocabularies/models/vocabulary-options.model';
@@ -166,6 +175,7 @@ export class VocabularyTreeviewComponent implements OnDestroy, OnInit, OnChanges
*/
constructor(
private vocabularyTreeviewService: VocabularyTreeviewService,
protected vocabularyService: VocabularyService,
) {
this.treeFlattener = new VocabularyTreeFlattener(this.transformer, this.getLevel,
this.isExpandable, this.getChildren);
@@ -207,12 +217,20 @@ export class VocabularyTreeviewComponent implements OnDestroy, OnInit, OnChanges
);
this.nodeMap.set(entryId, newNode);
if ((((level + 1) < this.preloadLevel) && newNode.childrenLoaded)
if ((((level + 1) < this.preloadLevel))
|| (newNode.isSearchNode && newNode.childrenLoaded)
|| newNode.isInInitValueHierarchy) {
if (!newNode.isSearchNode) {
if (newNode.item.id === LOAD_MORE || newNode.item.id === LOAD_MORE_ROOT) {
// When a 'LOAD_MORE' node is encountered, the parent already has a lot of expanded children
// so this is a good point to stop expanding.
return newNode;
}
if (!newNode.childrenLoaded) {
this.loadChildren(newNode);
}
this.treeControl.expand(newNode);
}
return newNode;
@@ -253,15 +271,31 @@ export class VocabularyTreeviewComponent implements OnDestroy, OnInit, OnChanges
*/
ngOnInit(): void {
this.subs.push(
this.vocabularyTreeviewService.getData().subscribe((data) => {
this.vocabularyService.findVocabularyById(this.vocabularyOptions.name).pipe(
// Retrieve the configured preloadLevel from REST
getFirstCompletedRemoteData(),
map((vocabularyRD: RemoteData<Vocabulary>) => {
if (vocabularyRD.hasSucceeded &&
hasValue(vocabularyRD.payload.preloadLevel) &&
vocabularyRD.payload.preloadLevel > 1) {
return vocabularyRD.payload.preloadLevel;
} else {
// Set preload level to 1 in case request fails
return 1;
}
}),
tap(preloadLevel => this.preloadLevel = preloadLevel),
tap(() => {
const entryId: string = (this.selectedItems?.length > 0) ? this.getEntryId(this.selectedItems[0]) : null;
this.vocabularyTreeviewService.initialize(this.vocabularyOptions, new PageInfo(), this.getSelectedEntryIds(), entryId);
}),
switchMap(() => this.vocabularyTreeviewService.getData()),
).subscribe((data) => {
this.dataSource.data = data;
}),
);
this.loading = this.vocabularyTreeviewService.isLoading();
const entryId: string = (this.selectedItems?.length > 0) ? this.getEntryId(this.selectedItems[0]) : null;
this.vocabularyTreeviewService.initialize(this.vocabularyOptions, new PageInfo(), this.getSelectedEntryIds(), entryId);
}
/**

View File

@@ -37,6 +37,8 @@ import { GeospatialMapDetail } from './models/geospatial-map-detail.model';
* Component to draw points and polygons on a tiled map using leaflet.js
* This component can be used by item page fields, the browse-by geospatial component, and the geospatial search
* view mode to render related places of an item (e.g. metadata on a page), or items *as* places (e.g. browse / search)
*
* This component should be used in a `@defer` block to keep geospatial mapping libraries out of the main bundle!
*/
export class GeospatialMapComponent implements AfterViewInit, OnInit, OnDestroy {
@@ -134,6 +136,7 @@ export class GeospatialMapComponent implements AfterViewInit, OnInit, OnDestroy
private initMap(): void {
// 'Import' leaflet packages in a browser-mode-only way to avoid issues with SSR
const L = require('leaflet'); require('leaflet.markercluster'); require('leaflet-providers');
// Set better default icons
L.Icon.Default.mergeOptions({
iconRetinaUrl: 'assets/images/marker-icon-2x.png',
@@ -150,13 +153,19 @@ export class GeospatialMapComponent implements AfterViewInit, OnInit, OnDestroy
this.map = L.map(el, {
center: this.DEFAULT_CENTRE_POINT,
zoom: 11,
worldCopyJump: true,
maxBoundsViscosity: 1.0,
maxBounds: [
[-85, -Infinity],
[85, Infinity],
],
});
const tileProviders = environment.geospatialMapViewer.tileProviders;
for (let i = 0; i < tileProviders.length; i++) {
// Add tiles to the map
const tiles = L.tileLayer.provider(tileProviders[i], {
maxZoom: 18,
minZoom: 3,
minZoom: 1,
});
tiles.addTo(this.map);
}

View File

@@ -1,6 +1,8 @@
@if ((currentMode$ | async) === viewModeEnum.GeospatialMap) {
<ds-object-geospatial-map [objects]="objects">
</ds-object-geospatial-map>
@defer {
<ds-object-geospatial-map [objects]="objects">
</ds-object-geospatial-map>
}
}
@if ((currentMode$ | async) === viewModeEnum.ListElement || (currentMode$ | async) === viewModeEnum.GeospatialMap) {

View File

@@ -6,7 +6,7 @@
<ds-item-page-title-field [item]="item">
</ds-item-page-title-field>
<div class="row mb-1">
<div class="col-xs-12 col-md-4">
<div class="col-12 col-md-4">
<ds-metadata-field-wrapper [hideIfNoTextContent]="false">
<ds-thumbnail [thumbnail]="item?.thumbnail | async"></ds-thumbnail>
</ds-metadata-field-wrapper>
@@ -45,7 +45,7 @@
[placeholder]="('mydspace.results.no-authors' | translate)">
</ds-item-detail-preview-field>
</div>
<div class="col-xs-12 col-md-6">
<div class="col-12 col-md-6">
<ds-item-detail-preview-field [item]="item"
[object]="object"
[label]="('item.page.abstract' | translate)"

View File

@@ -1,3 +1,5 @@
@if (isPlatformBrowser(platformId)) {
<ds-geospatial-map [mapInfo]="mapInfo"></ds-geospatial-map>
}
<!--
Note: ds-object-geospatial-map itself should be rendered in a @defer block, so we don't need one here.
https://angular.dev/guide/templates/defer#avoid-cascading-loads-with-nested-defer-blocks
-->
<ds-geospatial-map [mapInfo]="mapInfo"></ds-geospatial-map>

View File

@@ -37,7 +37,9 @@ import { parseGeoJsonFromMetadataValue } from '../utils/geospatial.functions';
/**
* This component is used with the GeospatialMap ViewMode in search or browse results, and
* prepares geospatial data collection for display on the GeospatialMapComponent
* prepares geospatial data collection for display on the GeospatialMapComponent.
*
* This component should be used in a `@defer` block to keep geospatial mapping libraries out of the main bundle!
*/
export class ObjectGeospatialMapComponent {

View File

@@ -1,6 +1,6 @@
<div class="d-flex flex-row">
@if (linkType !== linkTypes.None) {
<a [target]="(linkType === linkTypes.ExternalLink) ? '_blank' : '_self'" [attr.rel]="(linkType === linkTypes.ExternalLink) ? 'noopener noreferrer' : null" [routerLink]="[]" [queryParams]="queryParams$ | async" [queryParamsHandling]="'merge'" class="lead" role="link" tabindex="0">
<a [target]="(linkType === linkTypes.ExternalLink) ? '_blank' : '_self'" [attr.rel]="(linkType === linkTypes.ExternalLink) ? 'noopener noreferrer' : null" [routerLink]="[]" [queryParams]="queryParams$ | async" class="lead" role="link" tabindex="0">
{{object.value}}
</a>
}

View File

@@ -16,7 +16,7 @@
(prev)="goPrev()"
(next)="goNext()">
@if (objects?.hasSucceeded) {
<ul class="list-unstyled" [ngClass]="{'ml-4': selectable}" data-test="objects">
<ul class="list-unstyled" [ngClass]="{'ms-4': selectable}" data-test="objects">
@for (object of objects?.payload?.page; track object; let i = $index; let last = $last) {
<li class="mt-4 mb-4 d-flex" [class.border-bottom]="hasBorder && !last" [attr.data-test]="'list-object' | dsBrowserOnly">
@if (selectable) {

View File

@@ -45,7 +45,7 @@
[ngClass]="{'btn-danger': dangerConfirm, 'btn-primary': !dangerConfirm}"
[dsBtnDisabled]="selectedIds?.length === 0"
(click)="confirmSelected()">
<i class="fas fa-trash"></i> {{confirmButton | translate}}
<i class="fas" [ngClass]="{'fa-trash': dangerConfirm, 'fa-save': !dangerConfirm}"></i> {{confirmButton | translate}}
</button>
</div>
</ng-container>

View File

@@ -100,7 +100,7 @@ describe('StartsWithDateComponent', () => {
});
it('should add a startsWith query parameter', () => {
expect(paginationService.updateRoute).toHaveBeenCalledWith('page-id', { page: 1 }, { startsWith: expectedValue });
expect(paginationService.updateRoute).toHaveBeenCalledWith('page-id', { page: 1 }, { startsWith: expectedValue }, undefined, { queryParamsHandling: '' });
});
it('should automatically fill in the input field', () => {
@@ -122,7 +122,7 @@ describe('StartsWithDateComponent', () => {
});
it('should add a startsWith query parameter', () => {
expect(paginationService.updateRoute).toHaveBeenCalledWith('page-id', { page: 1 }, { startsWith: expectedValue });
expect(paginationService.updateRoute).toHaveBeenCalledWith('page-id', { page: 1 }, { startsWith: expectedValue }, undefined, { queryParamsHandling: '' });
});
it('should automatically fill in the input field', () => {
@@ -146,7 +146,7 @@ describe('StartsWithDateComponent', () => {
});
it('should add a startsWith query parameter', () => {
expect(paginationService.updateRoute).toHaveBeenCalledWith('page-id', { page: 1 }, { startsWith: expectedValue });
expect(paginationService.updateRoute).toHaveBeenCalledWith('page-id', { page: 1 }, { startsWith: expectedValue }, undefined, { queryParamsHandling: '' });
});
it('should automatically fill in the input field', () => {
@@ -171,7 +171,7 @@ describe('StartsWithDateComponent', () => {
});
it('should add a startsWith query parameter', () => {
expect(paginationService.updateRoute).toHaveBeenCalledWith('page-id', { page: 1 }, { startsWith: expectedValue });
expect(paginationService.updateRoute).toHaveBeenCalledWith('page-id', { page: 1 }, { startsWith: expectedValue }, undefined, { queryParamsHandling: '' });
});
});

View File

@@ -92,11 +92,10 @@ export abstract class StartsWithAbstractComponent implements OnInit, OnDestroy {
this.startsWith = undefined;
}
if (resetPage) {
this.paginationService.updateRoute(this.paginationId, { page: 1 }, { startsWith: this.startsWith });
this.paginationService.updateRoute(this.paginationId, { page: 1 }, { startsWith: this.startsWith }, undefined, { queryParamsHandling: '' });
} else {
void this.router.navigate([], {
queryParams: Object.assign({ startsWith: this.startsWith }),
queryParamsHandling: 'merge',
});
}
}

View File

@@ -74,8 +74,8 @@ describe('StartsWithTextComponent', () => {
expect(comp.startsWith).toEqual(expectedValue);
});
it('should add a startsWith query parameter', () => {
expect(paginationService.updateRoute).toHaveBeenCalledWith('page-id', { page: 1 }, { startsWith: expectedValue });
it('should add a startsWith query parameter and clear all others', () => {
expect(paginationService.updateRoute).toHaveBeenCalledWith('page-id', { page: 1 }, { startsWith: expectedValue }, undefined, { queryParamsHandling: '' });
});
});

View File

@@ -8,6 +8,3 @@ import { ResourceType } from '../../../core/shared/resource-type';
export const SUBMISSION_COAR_NOTIFY_CONFIG = new ResourceType('submissioncoarnotifyconfig');
export const COAR_NOTIFY_WORKSPACEITEM = new ResourceType('workspaceitem');

View File

@@ -1,39 +0,0 @@
import {
autoserialize,
deserialize,
deserializeAs,
inheritSerialization,
} from 'cerialize';
import { typedObject } from '../../../core/cache/builders/build-decorators';
import { CacheableObject } from '../../../core/cache/cacheable-object.model';
import { excludeFromEquals } from '../../../core/utilities/equals.decorators';
import { COAR_NOTIFY_WORKSPACEITEM } from './section-coar-notify-service.resource-type';
/** An CoarNotify and its properties. */
@typedObject
@inheritSerialization(CacheableObject)
export class SubmissionCoarNotifyWorkspaceitemModel extends CacheableObject {
static type = COAR_NOTIFY_WORKSPACEITEM;
@excludeFromEquals
@autoserialize
endorsement?: number[];
@deserializeAs('id')
review?: number[];
@autoserialize
ingest?: number[];
@deserialize
_links: {
self: {
href: string;
};
};
get self(): string {
return this._links.self.href;
}
}

View File

@@ -11,7 +11,7 @@
<!-- don't use *ngIf="!isLoading" so the thumbnail can load in while the animation is playing -->
@if (src() !== null) {
<img class="thumbnail-content img-fluid"
[class.d-none]="isLoading"
[class.d-none]="isLoading()"
[src]="src() | dsSafeUrl"
[alt]="alt | translate"
(error)="errorHandler()"

View File

@@ -459,6 +459,22 @@
// "admin.access-control.epeople.table.edit.buttons.remove": "Delete \"{{name}}\"",
"admin.access-control.epeople.table.edit.buttons.remove": "حذف \"{{name}}\"",
// "admin.access-control.epeople.table.edit.buttons.remove.modal.header": "Delete Group \"{{ dsoName }}\"",
// TODO New key - Add a translation
"admin.access-control.epeople.table.edit.buttons.remove.modal.header": "Delete Group \"{{ dsoName }}\"",
// "admin.access-control.epeople.table.edit.buttons.remove.modal.info": "Are you sure you want to delete Group \"{{ dsoName }}\" and all its associated policies?",
// TODO New key - Add a translation
"admin.access-control.epeople.table.edit.buttons.remove.modal.info": "Are you sure you want to delete Group \"{{ dsoName }}\" and all its associated policies?",
// "admin.access-control.epeople.table.edit.buttons.remove.modal.cancel": "Cancel",
// TODO New key - Add a translation
"admin.access-control.epeople.table.edit.buttons.remove.modal.cancel": "Cancel",
// "admin.access-control.epeople.table.edit.buttons.remove.modal.confirm": "Delete",
// TODO New key - Add a translation
"admin.access-control.epeople.table.edit.buttons.remove.modal.confirm": "Delete",
// "admin.access-control.epeople.no-items": "No EPeople to show.",
"admin.access-control.epeople.no-items": "لا يوجد أشخاص إلكترونيين للعرض.",
@@ -651,7 +667,8 @@
// "admin.access-control.groups.form.delete-group.modal.header": "Delete Group \"{{ dsoName }}\"",
"admin.access-control.groups.form.delete-group.modal.header": "حذف المجموعة \"{{ dsoName }}\"",
// "admin.access-control.groups.form.delete-group.modal.info": "Are you sure you want to delete Group \"{{ dsoName }}\"",
// "admin.access-control.groups.form.delete-group.modal.info": "Are you sure you want to delete Group \"{{ dsoName }}\" and all its associated policies?",
// TODO Source message changed - Revise the translation
"admin.access-control.groups.form.delete-group.modal.info": "هل أنت متأكد من أنك ترغب في حذف المجموعة \"{{ dsoName }}\"",
// "admin.access-control.groups.form.delete-group.modal.cancel": "Cancel",
@@ -2407,6 +2424,22 @@
// "comcol-role.edit.delete.error.title": "Failed to delete the '{{ role }}' role's group",
"comcol-role.edit.delete.error.title": "فشل حذف مجموعة الدور '{{ role }}'",
// "comcol-role.edit.delete.modal.header": "Delete Group \"{{ dsoName }}\"",
// TODO New key - Add a translation
"comcol-role.edit.delete.modal.header": "Delete Group \"{{ dsoName }}\"",
// "comcol-role.edit.delete.modal.info": "Are you sure you want to delete Group \"{{ dsoName }}\" and all its associated policies?",
// TODO New key - Add a translation
"comcol-role.edit.delete.modal.info": "Are you sure you want to delete Group \"{{ dsoName }}\" and all its associated policies?",
// "comcol-role.edit.delete.modal.cancel": "Cancel",
// TODO New key - Add a translation
"comcol-role.edit.delete.modal.cancel": "Cancel",
// "comcol-role.edit.delete.modal.confirm": "Delete",
// TODO New key - Add a translation
"comcol-role.edit.delete.modal.confirm": "Delete",
// "comcol-role.edit.community-admin.name": "Administrators",
"comcol-role.edit.community-admin.name": "المسؤولون",
@@ -2560,7 +2593,7 @@
// "cookies.consent.content-notice.description": "We collect and process your personal information for the following purposes: {purposes}",
// TODO Source message changed - Revise the translation
"cookies.consent.content-notice.description": "نقوم بجمع ومعالجة معلوماتك الشخصية للأغراض التالية: <strong>الاستيثاق، والتفضيلات، والإقرار، والإحصائيات</strong>. <br/> لمعرفة المزيد، يرجى قراءة {privacyPolicy}.",
"cookies.consent.content-notice.description": "نقوم بجمع ومعالجة معلوماتك الشخصية للأغراض التالية: الاستيثاق، والتفضيلات، والإقرار، والإحصائيات. لمعرفة المزيد، يرجى قراءة {privacyPolicy}.",
// "cookies.consent.content-notice.learnMore": "Customize",
"cookies.consent.content-notice.learnMore": "تخصيص",
@@ -11749,4 +11782,4 @@
"file-download-link.request-copy": "Request a copy of ",
}
}

View File

@@ -500,6 +500,22 @@
// "admin.access-control.epeople.table.edit.buttons.remove": "Delete \"{{name}}\"",
"admin.access-control.epeople.table.edit.buttons.remove": "\"{{ name }}\" মুছে ফেলুন",
// "admin.access-control.epeople.table.edit.buttons.remove.modal.header": "Delete Group \"{{ dsoName }}\"",
// TODO New key - Add a translation
"admin.access-control.epeople.table.edit.buttons.remove.modal.header": "Delete Group \"{{ dsoName }}\"",
// "admin.access-control.epeople.table.edit.buttons.remove.modal.info": "Are you sure you want to delete Group \"{{ dsoName }}\" and all its associated policies?",
// TODO New key - Add a translation
"admin.access-control.epeople.table.edit.buttons.remove.modal.info": "Are you sure you want to delete Group \"{{ dsoName }}\" and all its associated policies?",
// "admin.access-control.epeople.table.edit.buttons.remove.modal.cancel": "Cancel",
// TODO New key - Add a translation
"admin.access-control.epeople.table.edit.buttons.remove.modal.cancel": "Cancel",
// "admin.access-control.epeople.table.edit.buttons.remove.modal.confirm": "Delete",
// TODO New key - Add a translation
"admin.access-control.epeople.table.edit.buttons.remove.modal.confirm": "Delete",
// "admin.access-control.epeople.no-items": "No EPeople to show.",
"admin.access-control.epeople.no-items": "কোন ই-পারসিওন প্রদর্শন করার জন্যে নেই।",
@@ -695,7 +711,8 @@
// "admin.access-control.groups.form.delete-group.modal.header": "Delete Group \"{{ dsoName }}\"",
"admin.access-control.groups.form.delete-group.modal.header": "গ্রুপ মুছে ফেলুন \"{{ dsoName }}\"",
// "admin.access-control.groups.form.delete-group.modal.info": "Are you sure you want to delete Group \"{{ dsoName }}\"",
// "admin.access-control.groups.form.delete-group.modal.info": "Are you sure you want to delete Group \"{{ dsoName }}\" and all its associated policies?",
// TODO Source message changed - Revise the translation
"admin.access-control.groups.form.delete-group.modal.info": "আপনি কি গ্রুপ \"{{ dsoName }}\" মুছে ফেলতে চান তা নিশ্চিত করুন।",
// "admin.access-control.groups.form.delete-group.modal.cancel": "Cancel",
@@ -2558,6 +2575,22 @@
// TODO New key - Add a translation
"comcol-role.edit.delete.error.title": "Failed to delete the '{{ role }}' role's group",
// "comcol-role.edit.delete.modal.header": "Delete Group \"{{ dsoName }}\"",
// TODO New key - Add a translation
"comcol-role.edit.delete.modal.header": "Delete Group \"{{ dsoName }}\"",
// "comcol-role.edit.delete.modal.info": "Are you sure you want to delete Group \"{{ dsoName }}\" and all its associated policies?",
// TODO New key - Add a translation
"comcol-role.edit.delete.modal.info": "Are you sure you want to delete Group \"{{ dsoName }}\" and all its associated policies?",
// "comcol-role.edit.delete.modal.cancel": "Cancel",
// TODO New key - Add a translation
"comcol-role.edit.delete.modal.cancel": "Cancel",
// "comcol-role.edit.delete.modal.confirm": "Delete",
// TODO New key - Add a translation
"comcol-role.edit.delete.modal.confirm": "Delete",
// "comcol-role.edit.community-admin.name": "Administrators",
"comcol-role.edit.community-admin.name": "প্রশাসক",
@@ -2718,7 +2751,7 @@
// "cookies.consent.content-notice.description": "We collect and process your personal information for the following purposes: {purposes}",
// TODO Source message changed - Revise the translation
"cookies.consent.content-notice.description": "আমরা নিম্নলিখিত উদ্দেশ্যে আপনার ব্যক্তিগত তথ্য সংগ্রহ এবং প্রক্রিয়া করি: <strong>প্রমাণিকরণ, পছন্দ, স্বীকৃতি এবং পরিসংখ্যান</strong>। <br/> আরও জানতে, অনুগ্রহ করে আমাদের {privacyPolicy} পড়ুন.",
"cookies.consent.content-notice.description": "আমরা নিম্নলিখিত উদ্দেশ্যে আপনার ব্যক্তিগত তথ্য সংগ্রহ এবং প্রক্রিয়া করি: প্রমাণিকরণ, পছন্দ, স্বীকৃতি এবং পরিসংখ্যান আরও জানতে, অনুগ্রহ করে আমাদের {privacyPolicy} পড়ুন.",
// "cookies.consent.content-notice.learnMore": "Customize",
"cookies.consent.content-notice.learnMore": "কাস্টমাইজ করুন",
@@ -12671,4 +12704,4 @@
"file-download-link.request-copy": "Request a copy of ",
}
}

View File

@@ -459,6 +459,22 @@
// "admin.access-control.epeople.table.edit.buttons.remove": "Delete \"{{name}}\"",
"admin.access-control.epeople.table.edit.buttons.remove": "Eliminar \"{{ name }}\"",
// "admin.access-control.epeople.table.edit.buttons.remove.modal.header": "Delete Group \"{{ dsoName }}\"",
// TODO New key - Add a translation
"admin.access-control.epeople.table.edit.buttons.remove.modal.header": "Delete Group \"{{ dsoName }}\"",
// "admin.access-control.epeople.table.edit.buttons.remove.modal.info": "Are you sure you want to delete Group \"{{ dsoName }}\" and all its associated policies?",
// TODO New key - Add a translation
"admin.access-control.epeople.table.edit.buttons.remove.modal.info": "Are you sure you want to delete Group \"{{ dsoName }}\" and all its associated policies?",
// "admin.access-control.epeople.table.edit.buttons.remove.modal.cancel": "Cancel",
// TODO New key - Add a translation
"admin.access-control.epeople.table.edit.buttons.remove.modal.cancel": "Cancel",
// "admin.access-control.epeople.table.edit.buttons.remove.modal.confirm": "Delete",
// TODO New key - Add a translation
"admin.access-control.epeople.table.edit.buttons.remove.modal.confirm": "Delete",
// "admin.access-control.epeople.no-items": "No EPeople to show.",
"admin.access-control.epeople.no-items": "No hi ha usuaris per mostrar.",
@@ -651,7 +667,8 @@
// "admin.access-control.groups.form.delete-group.modal.header": "Delete Group \"{{ dsoName }}\"",
"admin.access-control.groups.form.delete-group.modal.header": "Eliminar grup \"{{ dsoName }}\"",
// "admin.access-control.groups.form.delete-group.modal.info": "Are you sure you want to delete Group \"{{ dsoName }}\"",
// "admin.access-control.groups.form.delete-group.modal.info": "Are you sure you want to delete Group \"{{ dsoName }}\" and all its associated policies?",
// TODO Source message changed - Revise the translation
"admin.access-control.groups.form.delete-group.modal.info": "Esteu segur que voleu suprimir el grup \"{{ dsoName }}\"?",
// "admin.access-control.groups.form.delete-group.modal.cancel": "Cancel",
@@ -2299,6 +2316,22 @@
// "comcol-role.edit.delete.error.title": "Failed to delete the '{{ role }}' role's group",
"comcol-role.edit.delete.error.title": "Error en esborrar el grup del rol '{{ role }}'",
// "comcol-role.edit.delete.modal.header": "Delete Group \"{{ dsoName }}\"",
// TODO New key - Add a translation
"comcol-role.edit.delete.modal.header": "Delete Group \"{{ dsoName }}\"",
// "comcol-role.edit.delete.modal.info": "Are you sure you want to delete Group \"{{ dsoName }}\" and all its associated policies?",
// TODO New key - Add a translation
"comcol-role.edit.delete.modal.info": "Are you sure you want to delete Group \"{{ dsoName }}\" and all its associated policies?",
// "comcol-role.edit.delete.modal.cancel": "Cancel",
// TODO New key - Add a translation
"comcol-role.edit.delete.modal.cancel": "Cancel",
// "comcol-role.edit.delete.modal.confirm": "Delete",
// TODO New key - Add a translation
"comcol-role.edit.delete.modal.confirm": "Delete",
// "comcol-role.edit.community-admin.name": "Administrators",
"comcol-role.edit.community-admin.name": "Administradors",

View File

@@ -477,6 +477,22 @@
// "admin.access-control.epeople.table.edit.buttons.remove": "Delete \"{{name}}\"",
"admin.access-control.epeople.table.edit.buttons.remove": "Odstranit \"{{name}}\"",
// "admin.access-control.epeople.table.edit.buttons.remove.modal.header": "Delete Group \"{{ dsoName }}\"",
// TODO New key - Add a translation
"admin.access-control.epeople.table.edit.buttons.remove.modal.header": "Delete Group \"{{ dsoName }}\"",
// "admin.access-control.epeople.table.edit.buttons.remove.modal.info": "Are you sure you want to delete Group \"{{ dsoName }}\" and all its associated policies?",
// TODO New key - Add a translation
"admin.access-control.epeople.table.edit.buttons.remove.modal.info": "Are you sure you want to delete Group \"{{ dsoName }}\" and all its associated policies?",
// "admin.access-control.epeople.table.edit.buttons.remove.modal.cancel": "Cancel",
// TODO New key - Add a translation
"admin.access-control.epeople.table.edit.buttons.remove.modal.cancel": "Cancel",
// "admin.access-control.epeople.table.edit.buttons.remove.modal.confirm": "Delete",
// TODO New key - Add a translation
"admin.access-control.epeople.table.edit.buttons.remove.modal.confirm": "Delete",
// "admin.access-control.epeople.no-items": "No EPeople to show.",
"admin.access-control.epeople.no-items": "Žádní uživatelé k zobrazení.",
@@ -671,7 +687,8 @@
// "admin.access-control.groups.form.delete-group.modal.header": "Delete Group \"{{ dsoName }}\"",
"admin.access-control.groups.form.delete-group.modal.header": "Odstranit skupinu \"{{ dsoName }}\"",
// "admin.access-control.groups.form.delete-group.modal.info": "Are you sure you want to delete Group \"{{ dsoName }}\"",
// "admin.access-control.groups.form.delete-group.modal.info": "Are you sure you want to delete Group \"{{ dsoName }}\" and all its associated policies?",
// TODO Source message changed - Revise the translation
"admin.access-control.groups.form.delete-group.modal.info": "Určitě chcete odstranit skupinu \"{{ dsoName }}\"",
// "admin.access-control.groups.form.delete-group.modal.cancel": "Cancel",
@@ -2456,6 +2473,22 @@
// "comcol-role.edit.delete.error.title": "Failed to delete the '{{ role }}' role's group",
"comcol-role.edit.delete.error.title": "Nepodařilo se smazat skupinu pro roli '{{ role }}'",
// "comcol-role.edit.delete.modal.header": "Delete Group \"{{ dsoName }}\"",
// TODO New key - Add a translation
"comcol-role.edit.delete.modal.header": "Delete Group \"{{ dsoName }}\"",
// "comcol-role.edit.delete.modal.info": "Are you sure you want to delete Group \"{{ dsoName }}\" and all its associated policies?",
// TODO New key - Add a translation
"comcol-role.edit.delete.modal.info": "Are you sure you want to delete Group \"{{ dsoName }}\" and all its associated policies?",
// "comcol-role.edit.delete.modal.cancel": "Cancel",
// TODO New key - Add a translation
"comcol-role.edit.delete.modal.cancel": "Cancel",
// "comcol-role.edit.delete.modal.confirm": "Delete",
// TODO New key - Add a translation
"comcol-role.edit.delete.modal.confirm": "Delete",
// "comcol-role.edit.community-admin.name": "Administrators",
"comcol-role.edit.community-admin.name": "Správci",
@@ -2612,7 +2645,7 @@
// "cookies.consent.content-notice.description": "We collect and process your personal information for the following purposes: {purposes}",
// TODO Source message changed - Revise the translation
"cookies.consent.content-notice.description": "Vaše osobní údaje shromažďujeme a zpracováváme pro následující účely: <strong>Ověření, Preference, Potvrzení a Statistiky</strong>. <br/> Chcete-li se dozvědět více, přečtěte si prosím naše {privacyPolicy}.",
"cookies.consent.content-notice.description": "Vaše osobní údaje shromažďujeme a zpracováváme pro následující účely: Ověření, Preference, Potvrzení a Statistiky. Chcete-li se dozvědět více, přečtěte si prosím naše {privacyPolicy}.",
// "cookies.consent.content-notice.learnMore": "Customize",
"cookies.consent.content-notice.learnMore": "Přizpůsobit",
@@ -11982,4 +12015,4 @@
"file-download-link.request-copy": "Request a copy of ",
}
}

View File

@@ -459,6 +459,18 @@
// "admin.access-control.epeople.table.edit.buttons.remove": "Delete \"{{name}}\"",
"admin.access-control.epeople.table.edit.buttons.remove": "\"{{name}}\" löschen",
// "admin.access-control.epeople.table.edit.buttons.remove.modal.header": "Delete Group \"{{ dsoName }}\"",
"admin.access-control.epeople.table.edit.buttons.remove.modal.header": "Gruppe \"{{ dsoName }}\" löschen",
// "admin.access-control.epeople.table.edit.buttons.remove.modal.info": "Are you sure you want to delete Group \"{{ dsoName }}\" and all its associated policies?",
"admin.access-control.epeople.table.edit.buttons.remove.modal.info": "Sind Sie sicher, dass Sie die Gruppe \"{{ dsoName }}\" und alle damit verbundenen Richtlinien löschen möchten",
// "admin.access-control.epeople.table.edit.buttons.remove.modal.cancel": "Cancel",
"admin.access-control.epeople.table.edit.buttons.remove.modal.cancel": "Abbrechen",
// "admin.access-control.epeople.table.edit.buttons.remove.modal.confirm": "Delete",
"admin.access-control.epeople.table.edit.buttons.remove.modal.confirm": "Löschen",
// "admin.access-control.epeople.no-items": "No EPeople to show.",
"admin.access-control.epeople.no-items": "Keine Personen dazu.",
@@ -651,8 +663,9 @@
// "admin.access-control.groups.form.delete-group.modal.header": "Delete Group \"{{ dsoName }}\"",
"admin.access-control.groups.form.delete-group.modal.header": "Gruppe \"{{ dsoName }}\" löschen",
// "admin.access-control.groups.form.delete-group.modal.info": "Are you sure you want to delete Group \"{{ dsoName }}\"",
"admin.access-control.groups.form.delete-group.modal.info": "Sind Sie sicher, dass Sie die Gruppe \"{{ dsoName }}\" löschen möchten",
// "admin.access-control.groups.form.delete-group.modal.info": "Are you sure you want to delete Group \"{{ dsoName }}\" and all its associated policies?",
// TODO Source message changed - Revise the translation
"admin.access-control.groups.form.delete-group.modal.info": "Sind Sie sicher, dass Sie die Gruppe \"{{ dsoName }}\" und alle damit verbundenen Richtlinien löschen möchten",
// "admin.access-control.groups.form.delete-group.modal.cancel": "Cancel",
"admin.access-control.groups.form.delete-group.modal.cancel": "Abbrechen",
@@ -1366,7 +1379,7 @@
"bitstream.edit.bitstream": "Bitstream: ",
// "bitstream.edit.form.description.hint": "Optionally, provide a brief description of the file, for example \"<i>Main article</i>\" or \"<i>Experiment data readings</i>\".",
"bitstream.edit.form.description.hint": "Hier können Sie eine kurze Beschreibung der Datei angeben, zum Beispiel \"<i>Artikel</i>\" oder \"<i>Tabellenhanhang</i>\".",
"bitstream.edit.form.description.hint": "Hier können Sie eine kurze Beschreibung der Datei angeben, zum Beispiel \"<i>Artikel</i>\" oder \"<i>Tabellenanhang</i>\".",
// "bitstream.edit.form.description.label": "Description",
"bitstream.edit.form.description.label": "Beschreibung",
@@ -2298,6 +2311,18 @@
// "comcol-role.edit.delete.error.title": "Failed to delete the '{{ role }}' role's group",
"comcol-role.edit.delete.error.title": "Die Gruppe der Rolle '{{ role }}' konnte nicht gelöscht werden",
// "comcol-role.edit.delete.modal.header": "Delete Group \"{{ dsoName }}\"",
"comcol-role.edit.delete.modal.header": "Gruppe \"{{ dsoName }}\" löschen",
// "comcol-role.edit.delete.modal.info": "Are you sure you want to delete Group \"{{ dsoName }}\" and all its associated policies?",
"comcol-role.edit.delete.modal.info": "Sind Sie sicher, dass Sie die Gruppe \"{{ dsoName }}\" und alle damit verbundenen Richtlinien löschen möchten",
// "comcol-role.edit.delete.modal.cancel": "Cancel",
"comcol-role.edit.delete.modal.cancel": "Abbrechen",
// "comcol-role.edit.delete.modal.confirm": "Delete",
"comcol-role.edit.delete.modal.confirm": "Löschen",
// "comcol-role.edit.community-admin.name": "Administrators",
"comcol-role.edit.community-admin.name": "Administrator:innen",
@@ -2450,7 +2475,7 @@
// "cookies.consent.content-notice.description": "We collect and process your personal information for the following purposes: {purposes}",
// TODO Source message changed - Revise the translation
"cookies.consent.content-notice.description": "Wir sammeln und verarbeiten Ihre personenbezogenen Daten für die folgenden Zwecke: <strong>Authentifikation, Einstellungen, Zustimmungen und Statistiken</strong>. <br/> Um mehr zu erfahren, lesen Sie bitte unsere {privacyPolicy}.",
"cookies.consent.content-notice.description": "Wir sammeln und verarbeiten Ihre personenbezogenen Daten für die folgenden Zwecke: Authentifikation, Einstellungen, Zustimmungen und Statistiken. Um mehr zu erfahren, lesen Sie bitte unsere {privacyPolicy}.",
// "cookies.consent.content-notice.learnMore": "Customize",
"cookies.consent.content-notice.learnMore": "Anpassen",
@@ -2469,7 +2494,7 @@
"cookies.consent.content-modal.no-privacy-policy.text": "",
// "cookies.consent.content-modal.title": "Information that we collect",
"cookies.consent.content-modal.title": "Information, die wir sammeln",
"cookies.consent.content-modal.title": "Informationen, die wir sammeln",
// "cookies.consent.app.title.accessibility": "Accessibility Settings",
// TODO New key - Add a translation
@@ -11087,4 +11112,4 @@
"file-download-link.request-copy": "Request a copy of ",
}
}

Some files were not shown because too many files have changed in this diff Show More