Compare commits

..

60 Commits

Author SHA1 Message Date
Tim Donohue
2bf9e11a7c Update version tag for release 2025-07-14 16:36:18 -05:00
Tim Donohue
f0cba80262 Sync i18n files to prepare for 9.1 release. 2025-07-11 13:29:47 -05:00
Tim Donohue
ad51dc884d Merge pull request #4541 from DSpace/backport-4487-to-dspace-9_x
[Port dspace-9_x] Russian translation
2025-07-10 16:47:28 -05:00
Tim Donohue
28a914a335 Enable Russian by default. Reorder alphabetical by language code
(cherry picked from commit 032381008e)
2025-07-10 21:09:03 +00:00
Sergio Fernández Celorio
3cd4959d8f Fixed lint errors
(cherry picked from commit f85042e0d6)
2025-07-10 21:09:03 +00:00
Sergio Fernández Celorio
5888277ca7 Russian translation
(cherry picked from commit b6ee8dff9f)
2025-07-10 21:09:03 +00:00
Tim Donohue
e258fb7af7 Merge pull request #4540 from alexandrevryghem/bootstrap-issues_contribute-9_x
[Port dspace-9_x] Migrated remaining bootstrap 4 classes & other minor css fixes
2025-07-10 12:04:57 -05:00
Alexandre Vryghem
cbb01c514d Merge branch 'bootstrap-issues_contribute-9.0' into bootstrap-issues_contribute-9_x 2025-07-10 00:49:51 +02:00
Alexandre Vryghem
1bc47d06b7 Merge branch 'w2p-132350_minor-css-fixes_contribute-7.6' into bootstrap-issues_contribute-9_x 2025-07-10 00:48:15 +02:00
Tim Donohue
d0f61c1e50 Merge pull request #4498 from DSpace/dependabot/npm_and_yarn/dspace-9_x/bootstrap-5.3.7
Bump bootstrap from 5.3.6 to 5.3.7
2025-07-09 08:56:47 -05:00
dependabot[bot]
44c7e4b524 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:20:23 +00:00
Tim Donohue
598f5884e4 Merge pull request #4473 from DSpace/dependabot/npm_and_yarn/dspace-9_x/angular-43581e9bed
Bump the angular group with 3 updates
2025-07-08 16:18:28 -05:00
Alexandre Vryghem
e3b5405698 132007: Auto-fixed the ng generate @angular/core:control-flow issues 2025-07-08 12:51:31 +02:00
Alexandre Vryghem
b4d694e0c0 132007: Bootstrap fixes 2025-07-08 11:06:30 +02:00
dependabot[bot]
36c19ef976 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:26:31 +00:00
Tim Donohue
8685e1398b Merge pull request #4526 from DSpace/backport-4521-to-dspace-9_x
[Port dspace-9_x] Update pt-PT.json5
2025-07-02 15:39:14 -05:00
Ricardo Saraiva
4956d26f69 Update pt-PT.json5
Minor corretions and updates.

(cherry picked from commit d17f0a2a3d)
2025-07-02 20:38:49 +00:00
Tim Donohue
5c419bd975 Merge pull request #4522 from atmire/vocabulary-preloadlevel-fix-9_x
[Port dspace-9_x] Vocabulary preloadlevel fix
2025-07-02 11:26:06 -05:00
Andreas Awouters
c253cff188 Merge branch 'w2p-122839_vocabulary-preloadlevel-fix' into vocabulary-preloadlevel-fix-9_x
# Conflicts:
#	src/app/shared/form/vocabulary-treeview/vocabulary-treeview.component.spec.ts
#	src/app/shared/form/vocabulary-treeview/vocabulary-treeview.component.ts
2025-07-02 10:18:33 +02:00
Zoltán Kanász-Nagy
9be1562083 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:37: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
Alan Orth
ff6d0ddc9f Merge pull request #4476 from DSpace/dependabot/npm_and_yarn/dspace-9_x/sass-63defccb8e 2025-06-17 08:23:30 +03:00
Alan Orth
e017f99125 Merge pull request #4477 from DSpace/dependabot/npm_and_yarn/dspace-9_x/axios-1.10.0
Bump axios from 1.9.0 to 1.10.0
2025-06-17 07:00:56 +03:00
dependabot[bot]
945f1bcec3 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 07:16:12 +00:00
dependabot[bot]
cecb8f6c69 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 07:11:18 +00:00
Alan Orth
b26b14b764 Merge pull request #4455 from DSpace/backport-4389-to-dspace-9_x
[Port dspace-9_x] Confirmation dialog before deleting Group
2025-06-14 08:02:44 +03:00
Jukka Lipka
2ed43035eb fix: add styles to confirmation modal
Words are forced to break if no more space available

(cherry picked from commit 20510591e4)
2025-06-13 18:39:45 +00:00
Jukka Lipka
d3b098b407 fix: cleanup / unnecessary changes reverted
(cherry picked from commit 55d2f0ce38)
2025-06-13 18:39:45 +00:00
Jukka Lipka
f506be3dea fix: added translations
(cherry picked from commit 137bbc35bd)
2025-06-13 18:39:45 +00:00
Jukka Lipka
29e8c29ade 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.

(cherry picked from commit 57bf254bec)
2025-06-13 18:39:45 +00:00
Tim Donohue
3acdb3124e Merge pull request #4452 from DSpace/backport-4434-to-dspace-9_x
[Port dspace-9_x] Resolve field instance models using index when filtering errors
2025-06-12 12:48:04 -05:00
kshepherd
d0464c4886 Merge pull request #4447 from ybnd/defer-geospatial-map-components_9.x
Lazy-load geospatial map code (9.x)
2025-06-12 19:21:18 +02:00
Kim Shepherd
036dba942d Resolve field instance models using index when filtering errors
(cherry picked from commit d218e22944)
2025-06-12 16:40:49 +00:00
Yury Bondarenko
6c3bbf617c Remove unneeded platform checks 2025-06-12 17:55:05 +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
f8c6a80fbe Merge pull request #4444 from DSpace/dependabot/npm_and_yarn/dspace-9_x/babel/runtime-7.27.6
Bump @babel/runtime from 7.27.4 to 7.27.6
2025-06-11 12:20:38 +03:00
dependabot[bot]
a009f3549a 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:02:37 +00:00
Alan Orth
85128a4cfd Merge pull request #4432 from DSpace/dependabot/npm_and_yarn/dspace-9_x/sass-d83863101d
Bump sass from 1.89.0 to 1.89.1 in the sass group
2025-06-05 08:53:10 +03:00
dependabot[bot]
c9e6a65eec 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:33 +00:00
Alan Orth
790e7d580b Merge pull request #4429 from DSpace/backport-4076-to-dspace-9_x
[Port dspace-9_x] fix typo in German translation of bitstream.edit.form.description.hint
2025-06-04 14:06:39 +03:00
Sascha Szott
eb8f35f9f1 fix typo in German translation of bitstream.edit.form.description.hint
(cherry picked from commit c72af8edb5)
2025-06-04 09:52:37 +00:00
Alan Orth
f798b30c06 Merge pull request #4408 from DSpace/dependabot/npm_and_yarn/dspace-9_x/postcss-3f4fa9ea8d
Bump postcss from 8.5.3 to 8.5.4 in the postcss group
2025-06-03 09:08:24 +03:00
Alan Orth
8fb625ed73 Merge pull request #4413 from DSpace/dependabot/npm_and_yarn/dspace-9_x/babel/runtime-7.27.4
Bump @babel/runtime from 7.27.3 to 7.27.4
2025-06-03 09:05:26 +03:00
Tim Donohue
ba3c696c47 Merge pull request #4419 from DSpace/backport-4362-to-dspace-9_x
[Port dspace-9_x] add Gujarati(gu) and marathi(mr) json5 file
2025-06-02 13:00:36 -05:00
gaurav patel
d7d598e972 Rename Gu.json5 to gu.json5
(cherry picked from commit 5ac8dc13ac)
2025-06-02 17:13:50 +00:00
gauravd2t
0a6550986b change file name
(cherry picked from commit ce34bd271d)
2025-06-02 17:13:50 +00:00
gauravd2t
36878b119a add Gujarati and marathi json5 file
(cherry picked from commit dade46ca79)
2025-06-02 17:13:50 +00:00
dependabot[bot]
e7b85eee5b 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:47:51 +00:00
dependabot[bot]
c81ddf1520 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:02 +00:00
Tim Donohue
f626e0baf9 Merge pull request #4394 from DSpace/dependabot/npm_and_yarn/dspace-9_x/testing-ff22ddd0c9
Bump ng-mocks from 14.13.4 to 14.13.5 in the testing group
2025-05-29 08:49:17 -05:00
Alan Orth
fc2c32e1c6 Merge pull request #4397 from DSpace/dependabot/npm_and_yarn/dspace-9_x/babel/runtime-7.27.3
Bump @babel/runtime from 7.27.1 to 7.27.3
2025-05-29 08:40:53 +03:00
Tim Donohue
e359fb9169 Merge pull request #4396 from DSpace/dependabot/npm_and_yarn/dspace-9_x/webpack-51a062295f
Bump webpack from 5.99.8 to 5.99.9 in the webpack group
2025-05-28 15:49:51 -05:00
dependabot[bot]
c947f49820 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:30:17 +00:00
dependabot[bot]
6ac6ac8998 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:29:56 +00:00
dependabot[bot]
b726688b47 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:29:21 +00:00
Tim Donohue
d87b83f9e9 Update version tag for development of next release 2025-05-23 11:06:00 -05: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
123 changed files with 37914 additions and 5781 deletions

View File

@@ -274,6 +274,9 @@ languages:
- code: gd
label: Gàidhlig
active: true
- code: gu
label: ગુજરાતી
active: true
- code: hi
label: हिंदी
active: true
@@ -289,6 +292,9 @@ languages:
- code: lv
label: Latviešu
active: true
- code: mr
label: मराठी
active: true
- code: nl
label: Nederlands
active: true
@@ -301,6 +307,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

@@ -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');

483
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -1,6 +1,6 @@
{
"name": "dspace-angular",
"version": "9.0.0",
"version": "9.1.0",
"scripts": {
"ng": "ng",
"config:watch": "nodemon",
@@ -102,8 +102,8 @@
"@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/ssr": "^18.2.20",
"@babel/runtime": "7.27.6",
"@kolkov/ngx-gallery": "^2.0.1",
"@ng-bootstrap/ng-bootstrap": "^12.0.0",
"@ng-dynamic-forms/core": "^16.0.0",
@@ -117,7 +117,7 @@
"@terraformer/wkt": "^2.2.1",
"altcha": "^0.9.0",
"angulartics2": "^12.2.0",
"axios": "^1.9.0",
"axios": "^1.10.0",
"bootstrap": "^5.3",
"cerialize": "0.1.18",
"cli-progress": "^3.12.0",
@@ -168,7 +168,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,7 +176,7 @@
"@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.20",
"@angular/compiler-cli": "^18.2.12",
"@angular/language-service": "^18.2.12",
"@cypress/schematic": "^1.5.0",
@@ -224,7 +224,7 @@
"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",
@@ -232,12 +232,12 @@
"postcss-loader": "^4.0.3",
"postcss-preset-env": "^7.4.2",
"rimraf": "^3.0.2",
"sass": "~1.89.0",
"sass": "~1.89.2",
"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": "5.99.9",
"webpack-cli": "^5.1.4",
"webpack-dev-server": "^4.15.1"
}

View File

@@ -83,7 +83,7 @@
<form [formGroup]="searchForm" (ngSubmit)="search(searchForm.value)" class="d-flex justify-content-between">
<div class="flex-grow-1 me-3">
<div class="form-group input-group me-3">
<div class="mb-3 input-group me-3">
<input type="text" name="query" id="query" formControlName="query"
class="form-control" aria-label="Search input">
<span class="input-group-append">

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

@@ -6,7 +6,7 @@
<!-- In the toggle section -->
@if (!isNewService) {
<div class="toggle-switch-container">
<label class="status-label font-weight-bold" for="enabled">{{ 'ldn-service-status' | translate }}</label>
<label class="status-label fw-bold" for="enabled">{{ 'ldn-service-status' | translate }}</label>
<div>
<input formControlName="enabled" hidden id="enabled" name="enabled" type="checkbox">
<div (click)="toggleEnabled()" [class.checked]="formModel.get('enabled').value" class="toggle-switch">
@@ -17,7 +17,7 @@
}
<!-- In the Name section -->
<div class="mb-5">
<label for="name" class="font-weight-bold">{{ 'ldn-new-service.form.label.name' | translate }}</label>
<label for="name" class="fw-bold">{{ 'ldn-new-service.form.label.name' | translate }}</label>
<input [class.invalid-field]="formModel.get('name').invalid && formModel.get('name').touched"
[placeholder]="'ldn-new-service.form.placeholder.name' | translate" class="form-control"
formControlName="name"
@@ -33,7 +33,7 @@
<!-- In the description section -->
<div class="mb-5 mt-5 d-flex flex-column">
<label for="description" class="font-weight-bold">{{ 'ldn-new-service.form.label.description' | translate }}</label>
<label for="description" class="fw-bold">{{ 'ldn-new-service.form.label.description' | translate }}</label>
<textarea [placeholder]="'ldn-new-service.form.placeholder.description' | translate"
class="form-control" formControlName="description" id="description" name="description"></textarea>
</div>
@@ -42,7 +42,7 @@
<!-- In the url section -->
<div class="d-flex align-items-center">
<div class="d-flex flex-column w-50 me-2">
<label for="url" class="font-weight-bold">{{ 'ldn-new-service.form.label.url' | translate }}</label>
<label for="url" class="fw-bold">{{ 'ldn-new-service.form.label.url' | translate }}</label>
<input [class.invalid-field]="formModel.get('url').invalid && formModel.get('url').touched"
[placeholder]="'ldn-new-service.form.placeholder.url' | translate" class="form-control"
formControlName="url"
@@ -57,7 +57,7 @@
</div>
<div class="d-flex flex-column w-50">
<label for="score" class="font-weight-bold">{{ 'ldn-new-service.form.label.score' | translate }}</label>
<label for="score" class="fw-bold">{{ 'ldn-new-service.form.label.score' | translate }}</label>
<input [class.invalid-field]="formModel.get('score').invalid && formModel.get('score').touched"
[placeholder]="'ldn-new-service.form.placeholder.score' | translate" formControlName="score"
id="score"
@@ -78,7 +78,7 @@
<!-- In the IP range section -->
<div class="mb-5 mt-5">
<label for="lowerIp" class="font-weight-bold">{{ 'ldn-new-service.form.label.ip-range' | translate }}</label>
<label for="lowerIp" class="fw-bold">{{ 'ldn-new-service.form.label.ip-range' | translate }}</label>
<div class="d-flex">
<input [class.invalid-field]="formModel.get('lowerIp').invalid && formModel.get('lowerIp').touched"
[placeholder]="'ldn-new-service.form.placeholder.lowerIp' | translate" class="form-control me-2"
@@ -105,7 +105,7 @@
<!-- In the ldnUrl section -->
<div class="mb-5 mt-5">
<label for="ldnUrl" class="font-weight-bold">{{ 'ldn-new-service.form.label.ldnUrl' | translate }}</label>
<label for="ldnUrl" class="fw-bold">{{ 'ldn-new-service.form.label.ldnUrl' | translate }}</label>
<input [class.invalid-field]="formModel.get('ldnUrl').invalid && formModel.get('ldnUrl').touched"
[placeholder]="'ldn-new-service.form.placeholder.ldnUrl' | translate" class="form-control"
formControlName="ldnUrl"
@@ -130,7 +130,7 @@
<!-- In the usesActorEmailId section -->
<div class="mb-5 mt-5">
<label class="status-label font-weight-bold" for="usesActorEmailId">{{ 'ldn-service-usesActorEmailId' | translate }}</label>
<label class="status-label fw-bold" for="usesActorEmailId">{{ 'ldn-service-usesActorEmailId' | translate }}</label>
<div>
<input formControlName="usesActorEmailId" hidden id="usesActorEmailId"
name="usesActorEmailId" type="checkbox">
@@ -149,14 +149,14 @@
@if (areControlsInitialized) {
<div class="row mb-1 mt-5">
<div class="col">
<label class="font-weight-bold">{{ 'ldn-new-service.form.label.inboundPattern' | translate }} </label>
<label class="fw-bold">{{ 'ldn-new-service.form.label.inboundPattern' | translate }} </label>
</div>
@if (formModel.get('notifyServiceInboundPatterns')['controls'][0]?.value?.pattern) {
<div class="col">
<label class="font-weight-bold">{{ 'ldn-new-service.form.label.ItemFilter' | translate }}</label>
<label class="fw-bold">{{ 'ldn-new-service.form.label.ItemFilter' | translate }}</label>
</div>
<div class="col-sm-1">
<label class="font-weight-bold">{{ 'ldn-new-service.form.label.automatic' | translate }}</label>
<label class="fw-bold">{{ 'ldn-new-service.form.label.automatic' | translate }}</label>
</div>
}
<div class="col-sm-2">
@@ -295,8 +295,8 @@
<span (click)="addInboundPattern()"
class="add-pattern-link mb-2">{{ 'ldn-new-service.form.label.addPattern' | translate }}</span>
<hr>
<div class="form-group row">
<div class="col text-right space-children-mr">
<div class="mb-3 row">
<div class="col text-end space-children-mr">
<ng-content select="[before]"></ng-content>
<button (click)="resetFormAndLeave()" class="btn btn-outline-secondary" type="button">
<span>&nbsp;{{ 'submission.general.back.submit' | translate }}</span>
@@ -317,9 +317,7 @@
@if (isNewService) {
<h4>{{'service.overview.create.modal' | translate }}</h4>
}
<button (click)="closeModal()" aria-label="Close"
class="close" type="button">
<span aria-hidden="true">×</span>
<button (click)="closeModal()" aria-label="Close" class="btn-close" type="button">
</button>
</div>

View File

@@ -77,8 +77,7 @@
</div>
<button (click)="closeModal()" aria-label="Close"
[attr.aria-label]="'ldn-service-overview-close-modal' | translate"
class="close" type="button">
<span aria-hidden="true">×</span>
class="btn-close" type="button">
</button>
</div>
@@ -86,7 +85,7 @@
<div>
{{ 'service.overview.delete.body' | translate }}
</div>
<div class="mt-4 text-right">
<div class="mt-4 text-end">
<button (click)="closeModal()"
[attr.aria-label]="'ldn-service-overview-close-modal' | translate"
class="btn btn-outline-secondary me-2">{{ 'service.detail.delete.cancel' | translate }}</button>

View File

@@ -1,15 +1,14 @@
<div class="modal-header">
<h4 class="modal-title">{{'notify-message-modal.title' | translate}}</h4>
<button type="button" class="close" aria-label="Close" (click)="activeModal.dismiss('Cross click')">
<span aria-hidden="true">&times;</span>
<button type="button" class="btn-close" aria-label="Close" (click)="activeModal.dismiss('Cross click')">
</button>
</div>
<div class="modal-body p-4">
@for (key of notifyMessageKeys; track key) {
<div>
<div class="row mb-4">
<div class="font-weight-bold col">{{ key + '.notify-detail-modal' | translate}}</div>
<div class="col text-right">{{'notify-detail-modal.' + notifyMessage[key] | translate: {default: notifyMessage[key] ?? "n/a" } }}</div>
<div class="fw-bold col">{{ key + '.notify-detail-modal' | translate}}</div>
<div class="col text-end">{{'notify-detail-modal.' + notifyMessage[key] | translate: {default: notifyMessage[key] ?? "n/a" } }}</div>
</div>
</div>
}

View File

@@ -1,6 +1,6 @@
<div class="container my-4">
<div class="row">
<div class="col-12 col-md-3 text-left h4">{{((isInbound$ | async) ? 'admin.notify.dashboard.inbound' : 'admin.notify.dashboard.outbound') | translate}}</div>
<div class="col-12 col-md-3 text-start h4">{{((isInbound$ | async) ? 'admin.notify.dashboard.inbound' : 'admin.notify.dashboard.outbound') | translate}}</div>
<div class="col-md-9">
<div class="h4">
@if ((selectedSearchConfig$ | async) !== defaultConfiguration) {

View File

@@ -15,7 +15,7 @@
<ds-loading></ds-loading>
}
@if ((loadingCollections$ | async) !== true) {
<select id="collSel" name="collSel" class="form-control" multiple="multiple" size="10" formControlName="collections">
<select id="collSel" name="collSel" class="form-select" multiple="multiple" size="10" formControlName="collections">
@for (item of collections; track item) {
<option [value]="item.id" [disabled]="item.disabled">{{item.name$ | async}}</option>
}
@@ -32,11 +32,11 @@
{{'admin.reports.items.section.metadataFieldQueries' | translate}}
</ng-template>
<ng-template ngbPanelContent>
<fieldset id="predefqueries" class="form-group">
<fieldset id="predefqueries" class="mb-3">
<label>
{{'admin.reports.items.predefinedQueries' | translate}}
</label>
<select id="predefselect" formControlName="presetQuery" class="form-control" (change)="setPresetQuery()">
<select id="predefselect" formControlName="presetQuery" class="form-select" (change)="setPresetQuery()">
@for (item of presetQueries; track item.id) {
<option [value]="item.id" [selected]="item.isDefault">{{item.label | translate}}</option>
}
@@ -46,17 +46,17 @@
<div id="queries">
@for (pred of queryPredicatesArray().controls; track pred; let i = $index) {
<div class="metadata">
<div [formGroup]="pred" class="form-group">
<div class="form-row">
<div [formGroup]="pred" class="mb-3">
<div class="row">
<div class="col-4">
<select class="query-tool" formControlName="field" class="form-control">
<select class="query-tool" formControlName="field" class="form-select">
@for (item of metadataFieldsWithAny; track item) {
<option [value]="item.id">{{item.name$ | async}}</option>
}
</select>
</div>
<div class="col-auto">
<select class="query-tool" formControlName="operator" class="form-control">
<select class="query-tool" formControlName="operator" class="form-select">
@for (item of predicates; track item) {
<option [value]="item.id">{{item.name$ | async | translate}}</option>
}
@@ -86,17 +86,17 @@
{{'admin.reports.items.section.limitPaginateQueries' | translate}}
</ng-template>
<ng-template ngbPanelContent>
<div class="row align-items-center">
<div class="row align-items-center mb-3">
<label for="limit" class="col-sm-2 col-form-label">{{'admin.reports.items.limit' | translate}}:</label>
<div class="col-6">
<select id="limit" name="limit" formControlName="pageLimit" class="form-control col-6">
<select id="limit" name="limit" formControlName="pageLimit" class="form-select col-6">
@for (item of pageLimits; track item) {
<option value="{{item.id}}" [selected]="item.isDefault">{{item.name$ | async}}</option>
}
</select>
</div>
</div>
<div class="row align-items-center">
<div class="row align-items-center mb-3">
<label for="offset" class="col-sm-2 col-form-label">{{'admin.reports.items.offset' | translate}}:</label>
<div class="col-6">
<input id="offset" name="offset" value="0" class="form-control col-6">
@@ -104,7 +104,7 @@
</div>
<div class="row">
<span class="col-3"></span>
<button class="btn btn-primary mt-1 col-6" (click)="submit()">{{'admin.reports.items.run' | translate}}</button>
<button class="btn btn-primary col-6" (click)="submit()">{{'admin.reports.items.run' | translate}}</button>
</div>
</ng-template>
</ngb-panel>
@@ -130,7 +130,7 @@
</ng-template>
<ng-template ngbPanelContent>
<div id="show-fields">
<select class="query-tool" name="show_fields" multiple="multiple" size="8" class="form-control" formControlName="additionalFields">
<select class="query-tool" name="show_fields" multiple="multiple" size="8" class="form-select" formControlName="additionalFields">
@for (item of metadataFields; track item) {
<option [value]="item.id">{{item.name$ | async}}</option>
}

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

@@ -1,14 +1,11 @@
import {
AsyncPipe,
isPlatformBrowser,
NgIf,
} from '@angular/common';
import {
ChangeDetectionStrategy,
Component,
Inject,
OnInit,
PLATFORM_ID,
} from '@angular/core';
import {
ActivatedRoute,
@@ -47,7 +44,6 @@ import { PaginatedSearchOptions } from '../../shared/search/models/paginated-sea
imports: [
AsyncPipe,
GeospatialMapComponent,
NgIf,
TranslateModule,
],
standalone: true,
@@ -67,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

@@ -19,7 +19,7 @@
[innerHTML]="mdRepresentation.getValue()"
[ngbTooltip]="mdRepresentation.allMetadata(['person.jobTitle']).length > 0 ? descTemplate : null"></a>
@if (mdRepresentation.firstMetadata('person.identifier.orcid')) {
<ds-orcid-badge-and-tooltip class="ml-1"
<ds-orcid-badge-and-tooltip class="ms-1"
[orcid]="mdRepresentation.firstMetadata('person.identifier.orcid')"
[authenticatedTimestamp]="mdRepresentation.firstMetadata('dspace.orcid.authenticated')">
</ds-orcid-badge-and-tooltip>

View File

@@ -3,8 +3,8 @@
</h4>
<form [formGroup]="emailForm" (ngSubmit)="submitForm()">
<div class="form-group">
<div class="form-row">
<div class="mb-3">
<div class="row">
<div class="col-12 my-2">
<input
type="email"
@@ -26,7 +26,7 @@
}
</div>
</div>
<div class="form-row">
<div class="row">
<div class="col-12">
<button type="submit" class="btn btn-lg btn-primary w-100">
{{ "external-login.confirm.button.label" | translate }}

View File

@@ -3,8 +3,8 @@
</h4>
<form [formGroup]="emailForm" (ngSubmit)="submitForm()">
<div class="form-group">
<div class="form-row">
<div class="mb-3">
<div class="row">
<div class="col-12 my-2">
<input
type="email"
@@ -26,7 +26,7 @@
}
</div>
</div>
<div class="form-row">
<div class="row">
<div class="col-12">
<button type="submit" class="btn btn-lg btn-primary w-100">
{{ "external-login.provide-email.button.label" | translate }}

View File

@@ -1,6 +1,6 @@
<form class="form-login"
[formGroup]="form" novalidate>
<label class="font-weight-bold mb-0 text-uppercase">{{ registrationData.registrationType }}</label>
<label class="fw-bold mb-0 text-uppercase">{{ registrationData.registrationType }}</label>
<input [attr.aria-label]="'external-login-page.orcid-confirmation.netid.label' | translate"
autocomplete="off"
autofocus
@@ -9,14 +9,14 @@
[placeholder]="'external-login-page.orcid-confirmation.netid.placeholder' | translate"
type="text"
[attr.data-test]="'netId' | dsBrowserOnly">
<label class="font-weight-bold mb-0">{{"external-login-page.orcid-confirmation.lastname" | translate}}</label>
<label class="fw-bold mb-0">{{"external-login-page.orcid-confirmation.lastname" | translate}}</label>
<input [attr.aria-label]="'external-login-page.orcid-confirmation.lastname.label' | translate"
autocomplete="off"
class="form-control form-control-lg position-relative mb-2"
formControlName="lastname"
type="text"
[attr.data-test]="'lastname' | dsBrowserOnly">
<label class="font-weight-bold mb-0">{{"external-login-page.orcid-confirmation.firstname" | translate}}</label>
<label class="fw-bold mb-0">{{"external-login-page.orcid-confirmation.firstname" | translate}}</label>
<input [attr.aria-label]="'external-login-page.orcid-confirmation.firstname.label' | translate"
autocomplete="off"
class="form-control form-control-lg position-relative mb-2"
@@ -24,7 +24,7 @@
type="text"
[attr.data-test]="'firstname' | dsBrowserOnly">
@if (registrationData?.email) {
<label class="font-weight-bold mb-0">{{"external-login-page.orcid-confirmation.email" | translate}}</label>
<label class="fw-bold mb-0">{{"external-login-page.orcid-confirmation.email" | translate}}</label>
<input [attr.aria-label]="'external-login-page.orcid-confirmation.email.label' | translate"
autocomplete="off"
class="form-control form-control-lg position-relative"

View File

@@ -6,15 +6,15 @@
<thead class="thead-light">
<tr>
<th scope="col">
<span class="h5 font-weight-bold">{{ 'external-login-validation.review-account-info.table.header.information' | translate }}</span>
<span class="h5 fw-bold">{{ 'external-login-validation.review-account-info.table.header.information' | translate }}</span>
</th>
<th scope="col">
<span class="h5 font-weight-bold">{{'external-login-validation.review-account-info.table.header.received-value' | translate }}</span>
<span class="h5 fw-bold">{{'external-login-validation.review-account-info.table.header.received-value' | translate }}</span>
</th>
<th scope="col">
<span class="h5 font-weight-bold">{{'external-login-validation.review-account-info.table.header.current-value' | translate }}</span>
<span class="h5 fw-bold">{{'external-login-validation.review-account-info.table.header.current-value' | translate }}</span>
</th>
<th scope="col"><span class="h5 font-weight-bold">{{'external-login-validation.review-account-info.table.header.action' | translate }}</span></th>
<th scope="col"><span class="h5 fw-bold">{{'external-login-validation.review-account-info.table.header.action' | translate }}</span></th>
</tr>
</thead>
<tbody>

View File

@@ -1,4 +1,4 @@
<div class="jumbotron py-4 px-2 py-sm-5 px-sm-0 mt-ncs mb-4">
<div class="home-news-content py-4 px-2 py-sm-5 px-sm-0 mt-ncs mb-4">
<div class="container">
<div class="d-flex flex-wrap">
<div>

View File

@@ -6,7 +6,7 @@
word-break: break-word;
}
.jumbotron {
.home-news-content {
background-color: var(--ds-home-news-background-color);
}

View File

@@ -2,7 +2,7 @@
<h2>{{ 'info.accessibility-settings.title' | translate }}</h2>
<form>
<div class="form-group row">
<div class="mb-3 row">
<label [for]="'disableNotificationTimeOutInput'" class="col-sm-4 col-form-label">
{{ 'info.accessibility-settings.disableNotificationTimeOut.label' | translate }}
</label>
@@ -23,7 +23,7 @@
</div>
</div>
<div class="form-group row">
<div class="mb-3 row">
<label [for]="'notificationTimeOutInput'" class="col-sm-4 col-form-label">
{{ 'info.accessibility-settings.notificationTimeOut.label' | translate }}
</label>
@@ -50,7 +50,7 @@
</div>
</div>
<div class="form-group row">
<div class="mb-3 row">
<label [for]="'liveRegionTimeOutInput'" class="col-sm-4 col-form-label">
{{ 'info.accessibility-settings.liveRegionTimeOut.label' | translate }}
</label>
@@ -77,7 +77,7 @@
</div>
<div role="group">
<button type="submit" (click)="saveSettings()" class="btn btn-primary mr-2">
<button type="submit" (click)="saveSettings()" class="btn btn-primary me-2">
{{ 'info.accessibility-settings.submit' | translate }}
</button>
<button (click)="resetSettings()" class="btn btn-warning">

View File

@@ -1,7 +1,3 @@
import {
AsyncPipe,
NgIf,
} from '@angular/common';
import {
Component,
CUSTOM_ELEMENTS_SCHEMA,
@@ -11,21 +7,14 @@ import {
Output,
} from '@angular/core';
import { ReactiveFormsModule } from '@angular/forms';
import { RouterLink } from '@angular/router';
import { TranslateModule } from '@ngx-translate/core';
import { VarDirective } from '../../../shared/utils/var.directive';
@Component({
selector: 'ds-altcha-captcha',
templateUrl: './altcha-captcha.component.html',
imports: [
AsyncPipe,
NgIf,
ReactiveFormsModule,
RouterLink,
TranslateModule,
VarDirective,
],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
standalone: true,

View File

@@ -58,13 +58,13 @@
<div class="row mb-4">
<div class="col-12">
<div>{{'bitstream-request-a-copy.allfiles.label' |translate}}</div>
<div class="ms-4 form-check">
<div class="ms-2 form-check">
<input [className]="'form-check-input'" type="radio"
id="allfiles-true" formControlName="allfiles" value="true">
<label class="form-check-label"
for="allfiles-true">{{'bitstream-request-a-copy.files-all-true.label' | translate}}</label>
</div>
<div class="ms-4">
<div class="ms-2 form-check">
<input [className]="'form-check-input'" type="radio"
id="allfiles-false" formControlName="allfiles" value="false" [attr.disabled]="bitstream === undefined ? true : null ">
<label class="form-check-label"

View File

@@ -1,6 +1,6 @@
import {
AsyncPipe,
CommonModule,
NgClass,
} from '@angular/common';
import {
ChangeDetectorRef,
@@ -72,8 +72,8 @@ import { ItemEditBitstreamBundleComponent } from './item-edit-bitstream-bundle/i
AlertComponent,
AsyncPipe,
BtnDisabledDirective,
CommonModule,
ItemEditBitstreamBundleComponent,
NgClass,
RouterLink,
ThemedLoadingComponent,
TranslateModule,

View File

@@ -14,7 +14,7 @@
<table class="table" [class.mt-n1]="!isFirstTable"
[attr.aria-label]="'item.edit.bitstreams.bundle.table.aria-label' | translate: { bundle: bundleName } ">
<thead [class.visually-hidden]="!isFirstTable">
<tr class="header-row font-weight-bold">
<tr class="header-row fw-bold">
<th id="name" scope="col" class="{{ columnSizes.columns[0].buildClasses() }}">
{{'item.edit.bitstreams.headers.name' | translate}}
</th>
@@ -31,10 +31,10 @@
</thead>
<tbody cdkDropList (cdkDropListDropped)="drop($event)">
<tr class="bundle-row">
<th id="{{ bundleName }}" class="span" colspan="3" scope="colgroup">
<th id="{{ bundleName }}" class="row-element" colspan="3" scope="colgroup">
{{'item.edit.bitstreams.bundle.name' | translate:{ name: bundleName } }}
</th>
<td class="text-center">
<td class="text-center row-element">
<div class="btn-group">
<button [routerLink]="[itemPageRoute, 'bitstreams', 'new']"
[queryParams]="{bundle: bundle.id}"
@@ -43,9 +43,9 @@
title="{{'item.edit.bitstreams.bundle.edit.buttons.upload' | translate}}">
<i class="fas fa-upload fa-fw"></i>
</button>
<div ngbDropdown #paginationControls="ngbDropdown" class="btn-group float-right btn-sm p-0"
placement="bottom-right">
<button class="btn btn-outline-secondary" id="paginationControls" ngbDropdownToggle
<div ngbDropdown #paginationControls="ngbDropdown" class="btn-group float-end p-0"
container="body" placement="bottom-right">
<button class="btn btn-outline-secondary btn-sm" id="paginationControls" ngbDropdownToggle
[title]="'pagination.options.description' | translate"
[attr.aria-label]="'pagination.options.description' | translate" aria-haspopup="true"
aria-expanded="false">
@@ -79,7 +79,7 @@
(cdkDragStarted)="dragStart()" (cdkDragEnded)="dragEnd()">
<th class="bitstream-name row-element {{ columnSizes.columns[0].buildClasses() }}"
scope="row" id="{{ entry.nameStripped }}" headers="{{ bundleName }} name">
<div class="drag-handle text-muted float-left p-1 mr-2 d-inline" tabindex="0" cdkDragHandle
<div class="drag-handle text-muted float-start p-1 me-2 d-inline" tabindex="0" cdkDragHandle
(keydown.enter)="select($event, entry)" (keydown.space)="select($event, entry)" (click)="select($event, entry)">
<i class="fas fa-grip-vertical fa-fw"
[title]="'item.edit.bitstreams.edit.buttons.drag' | translate"></i>

View File

@@ -1,5 +1,5 @@
<div class="col-12 col-md-3 h-auto float-start d-flex action-label">
<span class="justify-content-center align-self-center font-weight-bold">
<span class="justify-content-center align-self-center fw-bold">
{{'item.edit.tabs.status.buttons.' + operation.operationKey + '.label' | translate}}
</span>
</div>

View File

@@ -2,7 +2,7 @@
<div class="row">
@for (statusKey of statusDataKeys; track statusKey) {
<div class="w-100 pt-1">
<div class="col-12 col-md-3 float-start status-label font-weight-bold">
<div class="col-12 col-md-3 float-start status-label fw-bold">
{{'item.edit.tabs.status.labels.' + statusKey | translate}}:
</div>
<div class="col-12 col-md-9 float-start status-data" id="status-{{statusKey}}">
@@ -15,17 +15,17 @@
<div class="w-100 pt-1">
@if ((identifier.identifierType==='doi')) {
<div>
<div class="col-12 col-md-3 float-start status-label font-weight-bold">
<div class="col-12 col-md-3 float-start status-label fw-bold">
{{identifier.identifierType.toLocaleUpperCase()}}
</div>
<div class="col-12 col-md-9 float-start status-label font-weight-bold">{{identifier.value}}
<div class="col-12 col-md-9 float-start status-label fw-bold">{{identifier.value}}
({{"item.edit.identifiers.doi.status."+identifier.identifierStatus|translate}})</div>
</div>
}
</div>
}
<div class="col-12 col-md-3 float-start status-label font-weight-bold">
<div class="col-12 col-md-3 float-start status-label fw-bold">
{{'item.edit.tabs.status.labels.itemPage' | translate}}:
</div>
<div class="col-12 col-md-9 float-start status-data" id="status-itemPage">

View File

@@ -1,5 +1,5 @@
import {
CommonModule,
AsyncPipe,
isPlatformBrowser,
} from '@angular/common';
import {
@@ -54,7 +54,7 @@ import { OrcidSyncSettingsComponent } from './orcid-sync-settings/orcid-sync-set
styleUrls: ['./orcid-page.component.scss'],
imports: [
AlertComponent,
CommonModule,
AsyncPipe,
OrcidAuthComponent,
OrcidQueueComponent,
OrcidSyncSettingsComponent,

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

@@ -1,10 +1,9 @@
import { NgIf } from '@angular/common';
import {
Component,
Input,
OnInit,
} from '@angular/core';
import { TranslateModule } from '@ngx-translate/core';
import { TranslatePipe } from '@ngx-translate/core';
import { Item } from '../../../../../core/shared/item.model';
import {
@@ -21,8 +20,7 @@ import { ItemPageFieldComponent } from '../item-page-field.component';
imports: [
GeospatialMapComponent,
MetadataFieldWrapperComponent,
NgIf,
TranslateModule,
TranslatePipe,
],
standalone: true,
})

View File

@@ -301,7 +301,7 @@
<div class="modal-body">
<p>{{'quality-assurance.event.accept.description' | translate}}</p>
<button class="btn btn-outline-success float-right" (click)="modal.close('do')">
<button class="btn btn-outline-success float-end" (click)="modal.close('do')">
<i class="fas fa-check"></i>
<span class="d-none d-sm-inline"> {{'quality-assurance.event.action.import' | translate}}</span>
</button>
@@ -318,7 +318,7 @@
</div>
<div class="modal-body">
<p>{{'quality-assurance.event.ignore.description' | translate}}</p>
<button class="btn btn-outline-danger float-right" (click)="modal.close('do')">
<button class="btn btn-outline-danger float-end" (click)="modal.close('do')">
<i class="fas fa-trash-alt"></i>
<span class="d-none d-sm-inline"> {{'quality-assurance.event.action.ignore' | translate}}</span>
</button>
@@ -335,7 +335,7 @@
</div>
<div class="modal-body">
<p>{{'quality-assurance.event.reject.description' | translate}}</p>
<button class="btn btn-outline-danger float-right" (click)="modal.close('do')">
<button class="btn btn-outline-danger float-end" (click)="modal.close('do')">
<i class="fas fa-trash-alt"></i>
<span class="d-none d-sm-inline"> {{'quality-assurance.event.action.reject' | translate}}</span>
</button>
@@ -352,7 +352,7 @@
</div>
<div class="modal-body">
<p>{{'quality-assurance.event.undo.description' | translate}}</p>
<button class="btn btn-outline-danger float-right" (click)="modal.close('do')">
<button class="btn btn-outline-danger float-end" (click)="modal.close('do')">
<i class="fas fa-trash-alt"></i>
<span class="d-none d-sm-inline"> {{'quality-assurance.event.action.undo' | translate}}</span>
</button>

View File

@@ -1,8 +1,7 @@
<div class="modal-header">
<h4 class="modal-title" id="modal-title">{{ (labelPrefix + label + '.title') | translate }}</h4>
<button type="button" class="close" aria-label="Close button" aria-describedby="modal-title"
<button type="button" class="btn-close" aria-label="Close button" aria-describedby="modal-title"
(click)="close()">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">

View File

@@ -2,14 +2,13 @@
<div class="notifications-wrapper position-fixed top right">
<div class="notification alert alert-success alert-dismissible m-3 shadow" role="alert">
<button (click)="removePopup()"
type="button" class="close pt-0 pe-1 pe-0 pb-0" data-dismiss="alert" aria-label="Close">
<span aria-hidden="true">&times;</span>
type="button" class="close pt-0 pe-1 pe-0 pb-0" data-bs-dismiss="alert" aria-label="Close">
</button>
<div class="d-flex flex-row">
<div class="d-flex flex-column justify-content-center align-items-center">
<div class="notification-icon d-flex justify-content-center"><i class="fas fa-2x fa-check-circle"></i></div>
</div>
<div class="d-flex flex-column justify-content-center align-content-stretch text-left p-2">
<div class="d-flex flex-column justify-content-center align-content-stretch text-start p-2">
@if ((suggestionsRD$ | async); as suggestions) {
@for (suggestion of suggestions; track suggestion) {
<ng-container class="alert alert-info">

View File

@@ -4,7 +4,7 @@
</span>
<span class="file-name ms-1">{{fileObject?.name}}</span>
</label>
<input requireFile #file="ngModel" type="file" name="file-upload-{{index}}" id="file-upload-{{index}}" class="form-control-file d-none" [ngModel]="fileObject" (ngModelChange)="setFile($event)"/>
<input requireFile #file="ngModel" type="file" name="file-upload-{{index}}" id="file-upload-{{index}}" class="form-control d-none" [ngModel]="fileObject" (ngModelChange)="setFile($event)"/>
@if (file.invalid && (file.dirty || file.touched)) {
<div
class="alert alert-danger validation-error">

View File

@@ -16,7 +16,7 @@
<!-- Display access periods if more than one was bound to input. The parent component (grant-request-copy)
sends an empty list if the feature is not enabled or applicable to this request. -->
@if (hasValue(validAccessPeriods$ | async) && (validAccessPeriods$ | async).length > 0) {
<div class="form-group">
<div class="mb-3">
<label for="accessPeriod">{{ 'grant-request-copy.access-period.header' | translate }}</label>
<div ngbDropdown class="d-block">
<!-- Show current selected access period (defaults to first in array) -->

View File

@@ -1,7 +1,4 @@
import {
AsyncPipe,
CommonModule,
} from '@angular/common';
import { AsyncPipe } from '@angular/common';
import {
Component,
OnInit,
@@ -49,7 +46,6 @@ import { ThemedEmailRequestCopyComponent } from '../email-request-copy/themed-em
standalone: true,
imports: [
AsyncPipe,
CommonModule,
FormsModule,
RouterLink,
ThemedEmailRequestCopyComponent,

View File

@@ -3,7 +3,7 @@
<form [formGroup]="searchForm" (ngSubmit)="onSubmit(searchForm.value)" autocomplete="on" class="d-flex">
<input #searchInput [@toggleAnimation]="isExpanded" [attr.aria-label]="('nav.search' | translate)" name="query"
formControlName="query" type="text" placeholder="{{searchExpanded ? ('nav.search' | translate) : ''}}"
class="d-inline-block bg-transparent position-absolute form-control dropdown-menu-right p1"
class="d-inline-block bg-transparent position-absolute form-control dropdown-menu-end p1"
[class.display]="searchExpanded ? 'inline-block' : 'none'"
[tabIndex]="searchExpanded ? 0 : -1"
[attr.data-test]="'header-search-box' | dsBrowserOnly">

View File

@@ -5,7 +5,7 @@
}
<ng-content></ng-content>
@if (dismissible) {
<button type="button" class="btn-close" data-dismiss="alert" aria-label="Close" (click)="dismiss()">
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close" (click)="dismiss()">
</button>
}
</div>

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

@@ -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

@@ -3,22 +3,20 @@
@if (this.canWithdraw) {
<div class="modal-header">
{{ 'item.qa.withdrawn.modal.header' | translate }}
<button type="button" class="close" (click)="onModalClose()" aria-label="Close">
<span aria-hidden="true">×</span>
<button type="button" class="btn-close" (click)="onModalClose()" aria-label="Close">
</button>
</div>
} @else {
@if (!this.canWithdraw) {
<div class="modal-header">
{{'item.qa.reinstate.modal.header' | translate}}
<button type="button" class="close" (click)="onModalClose()" aria-label="Close">
<span aria-hidden="true">×</span>
<button type="button" class="btn-close" (click)="onModalClose()" aria-label="Close">
</button>
</div>
}
}
<div class="modal-body">
<div class="form-group">
<div class="mb-3">
<label for="reason">{{ this.canWithdraw ? ('qa-withdrawn.create.modal.form.summary.label' | translate)
: ('qa-reinstate.create.modal.form.summary.label' | translate) }}</label>
<label for="reason">{{ this.canWithdraw ? ('qa-withdrawn.create.modal.form.summary2.label' | translate)

View File

@@ -14,7 +14,7 @@
<span role="img"
[attr.aria-label]="'file-download-link.restricted' | translate"
[title]="'file-download-link.restricted' | translate"
class="pr-1">
class="pe-1">
<i class="fas fa-lock"></i>
</span>
} @else if ((canDownloadWithToken$ | async) && (canDownload$ | async) === false) {
@@ -22,7 +22,7 @@
<span role="img"
[attr.aria-label]="'file-download-link.secure-access' | translate"
[title]="'file-download-link.secure-access' | translate"
class="pr-1 request-a-copy-access-icon">
class="pe-1 request-a-copy-access-icon">
<i class="fa-solid fa-lock-open"></i>
</span>
} @else if (showIcon) {

View File

@@ -1,5 +1,5 @@
<div [formGroup]="group" [ngClass]="getClass('element', 'container')" class="form-check custom-control form-switch" [class.disabled]="model.disabled">
<input type="checkbox" class="form-check-input custom-control-input"
<input type="checkbox" class="form-check-input form-check-input"
[checked]="model.checked"
[class.is-invalid]="showErrorMessages"
[id]="id"
@@ -13,7 +13,7 @@
(blur)="onBlur($event)"
(change)="onChange($event)"
(focus)="onFocus($event)"/>
<label class="form-check-label custom-control-label" [for]="bindId && model.id">
<label class="form-check-label form-check-label" [for]="bindId && model.id">
<span [innerHTML]="model.label | translate"
[ngClass]="[getClass('element', 'label'), getClass('grid', 'label')]"></span>
</label>

View File

@@ -1,16 +0,0 @@
div.custom-switch {
&.custom-control-right {
margin-left: 0;
margin-right: 0;
&::after {
right: -1.5rem;
left: auto;
}
&::before {
right: -2.35rem;
left: auto;
}
}
}

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

@@ -30,7 +30,7 @@
<button id="resultdropdown" type="button"
ngbDropdownToggle
class="btn btn-outline-secondary dropdown-toggle-split"
data-toggle="dropdown" aria-haspopup="true"
data-bs-toggle="dropdown" aria-haspopup="true"
aria-expanded="false"
[hidden]="selectAllLoading">
<span class="sr-only">{{ ('submission.sections.describe.relationship-lookup.toggle-dropdown' | translate) }}</span>

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,11 +22,20 @@ import {
Observable,
Subscription,
} from 'rxjs';
import {
map,
switchMap,
tap,
} from 'rxjs/operators';
import { getFirstCompletedRemoteData } from 'src/app/core/shared/operators';
import { RemoteData } from '../../../core/data/remote-data';
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';
import { VocabularyService } from '../../../core/submission/vocabularies/vocabulary.service';
import { AlertComponent } from '../../alert/alert.component';
import { AlertType } from '../../alert/alert-type';
import { BtnDisabledDirective } from '../../btn-disabled.directive';
@@ -163,9 +172,11 @@ export class VocabularyTreeviewComponent implements OnDestroy, OnInit, OnChanges
* Initialize instance variables
*
* @param {VocabularyTreeviewService} vocabularyTreeviewService
* @param {VocabularyService} vocabularyService
*/
constructor(
private vocabularyTreeviewService: VocabularyTreeviewService,
protected vocabularyService: VocabularyService,
) {
this.treeFlattener = new VocabularyTreeFlattener(this.transformer, this.getLevel,
this.isExpandable, this.getChildren);
@@ -207,12 +218,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 +272,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',

View File

@@ -6,7 +6,7 @@
aria-haspopup="menu"
class="dropdown-toggle btn btn-link px-0"
[title]="'nav.language' | translate"
(click)="$event.preventDefault()" data-toggle="dropdown" ngbDropdownToggle
(click)="$event.preventDefault()" data-bs-toggle="dropdown" ngbDropdownToggle
data-test="lang-switch"
tabindex="0">
<i class="fas fa-globe-asia fa-lg fa-fw"></i>

View File

@@ -7,8 +7,8 @@
[title]="boxConfig.description | translate"
>
<div [ngStyle]="{'color': boxConfig.textColor}" class="d-flex flex-column justify-content-center align-items-center">
<div class="mb-3 font-weight-bold box-counter">{{ boxConfig.count ?? 0 }}</div>
<div class="font-weight-bold d-flex justify-content-center w-100">{{ boxConfig.title | translate }}</div>
<div class="mb-3 fw-bold box-counter">{{ boxConfig.count ?? 0 }}</div>
<div class="fw-bold d-flex justify-content-center w-100">{{ boxConfig.title | translate }}</div>
</div>
</div>
}

View File

@@ -10,7 +10,7 @@
@if (notification.options.clickToClose) {
<button
(click)="remove()"
type="button" class="btn-close pt-0 pe-1 ps-0 pb-0 mt-1 me-1" data-dismiss="alert" aria-label="Close">
type="button" class="btn-close pt-0 pe-1 ps-0 pb-0 mt-1 me-1" data-bs-dismiss="alert" aria-label="Close">
</button>
}

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

@@ -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

@@ -1,7 +1,4 @@
import {
isPlatformBrowser,
NgIf,
} from '@angular/common';
import { isPlatformBrowser } from '@angular/common';
import {
ChangeDetectionStrategy,
Component,
@@ -35,13 +32,14 @@ import { parseGeoJsonFromMetadataValue } from '../utils/geospatial.functions';
standalone: true,
imports: [
GeospatialMapComponent,
NgIf,
],
})
/**
* 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,11 +1,11 @@
<td class="text-center">
<div class="custom-control custom-checkbox">
<div>
<input type="checkbox"
class="custom-control-input"
class="form-check-input"
[id]="entry.id"
[ngModel]="entry.checked"
(ngModelChange)="this.toggleCheckbox.emit($event);">
<label class="custom-control-label" [for]="entry.id">
<label class="form-check-label" [for]="entry.id">
<span class="sr-only">{{(entry.checked ? 'resource-policies.table.headers.deselect' : 'resource-policies.table.headers.select') | translate}}</span>
</label>
</div>

View File

@@ -42,12 +42,12 @@
@if ((getResourcePolicies() | async)?.length > 0) {
<tr class="text-center">
<th>
<div class="custom-control custom-checkbox">
<div>
<input #selectAllBtn type="checkbox"
class="custom-control-input"
class="form-check-input"
[id]="'selectAll_' + resourceUUID"
(change)="selectAllCheckbox($event)">
<label class="custom-control-label" [for]="'selectAll_' + resourceUUID">
<label class="form-check-label" [for]="'selectAll_' + resourceUUID">
<span class="sr-only">{{(selectAllBtn.checked ? 'resource-policies.table.headers.deselect-all' : 'resource-policies.table.headers.select-all') | translate}}</span>
</label>
</div>

View File

@@ -6,7 +6,7 @@
</label>
<select [(ngModel)]="currentFilter" (keyup.enter)="applyFilter()"
(ngModelChange)="currentOperator = advancedFilterMap.get(currentFilter).operators[0].operator"
class="form-control mb-2" id="advanced-search-filters">
class="form-select mb-2" id="advanced-search-filters">
@for (advancedFilter of (advancedFilters$ | async); track advancedFilter.filter) {
<option [value]="advancedFilter.filter">
{{ 'search.filters.filter.' + advancedFilter.filter + '.head' | translate }}
@@ -17,7 +17,7 @@
{{ 'search.sidebar.advanced-search.operators' | translate }}
</label>
<select [(ngModel)]="currentOperator" (keyup.enter)="applyFilter()"
class="form-control mb-2" id="advanced-search-operators">
class="form-select mb-2" id="advanced-search-operators">
@for (operator of advancedFilterMap.get(currentFilter)?.operators; track operator) {
<option [value]="operator.operator">
{{ 'search.filters.operator.' + operator.operator + '.text' | translate }}

View File

@@ -9,7 +9,7 @@
role="button"
tabindex="0"
>
<span class="h4 d-inline-block text-left mt-auto mb-auto dark:text-white text-dark">
<span class="h4 d-inline-block text-start mt-auto mb-auto dark:text-white text-dark">
{{'search.filters.filter.' + filter.name + '.head'| translate}}
</span>
<i class="filter-toggle flex-grow-1 fas p-auto"

View File

@@ -6,7 +6,7 @@
(click)="searchFilterService.minimizeAll()"
class="badge bg-primary">
<span class="d-flex">
<span class="flex-grow-1 text-left">{{('search.filters.applied.f.' + appliedFilter.filter + '.min') | translate}}: {{ min }}</span>
<span class="flex-grow-1 text-start">{{('search.filters.applied.f.' + appliedFilter.filter + '.min') | translate}}: {{ min }}</span>
<span class="ps-1" aria-hidden="true">×</span>
</span>
</a>
@@ -19,7 +19,7 @@
(click)="searchFilterService.minimizeAll()"
class="badge bg-primary">
<span class="d-flex">
<span class="flex-grow-1 text-left">{{('search.filters.applied.f.' + appliedFilter.filter + '.max') | translate}}: {{ max }}</span>
<span class="flex-grow-1 text-start">{{('search.filters.applied.f.' + appliedFilter.filter + '.max') | translate}}: {{ max }}</span>
<span class="ps-1" aria-hidden="true">×</span>
</span>
</a>

View File

@@ -4,7 +4,7 @@
[queryParams]="(removeParameters$ | async)"
(click)="searchFilterService.minimizeAll()">
<span class="d-flex">
<span class="flex-grow-1 text-left">{{ ('search.filters.applied.f.' + appliedFilter.filter) | translate}}{{'search.filters.applied.operator.' + appliedFilter.operator | translate}}: {{'search.filters.' + appliedFilter.filter + '.' + appliedFilter.label | translate: { default: appliedFilter.label } }}</span>
<span class="flex-grow-1 text-start">{{ ('search.filters.applied.f.' + appliedFilter.filter) | translate}}{{'search.filters.applied.operator.' + appliedFilter.operator | translate}}: {{'search.filters.' + appliedFilter.filter + '.' + appliedFilter.label | translate: { default: appliedFilter.label } }}</span>
<span class="ps-1" aria-hidden="true">×</span>
</span>
</a>

View File

@@ -16,7 +16,7 @@
<div>
@for (subscriptionType of subscriptionForm?.controls | keyvalue; track subscriptionType) {
<fieldset formGroupName="{{subscriptionType.key}}" class="mb-3 row">
<legend class="col-md-4 col-form-label float-md-left pt-0">
<legend class="col-md-4 col-form-label float-md-start pt-0">
{{ 'subscriptions.modal.new-subscription-form.type.' + subscriptionType.key | translate }}:
</legend>
<div class="col-md-8">

View File

@@ -23,7 +23,7 @@
<span><i class="fas fa-cloud-upload"
aria-hidden="true"></i> {{ ((fileObject === null || fileObject === undefined) ? dropMessageLabel : dropMessageLabelReplacement) | translate}} {{'uploader.or' | translate}}</span>
<label class="btn btn-link m-0 p-0 ms-1">
<input class="form-control-file d-none" type="file" name="file-upload"
<input class="form-control d-none" type="file" name="file-upload"
id="file-upload"
(change)="handleFileInput($event)">
{{'uploader.browse' | translate}}

View File

@@ -1,4 +1,4 @@
<div class="btn-group" data-toggle="buttons">
<div class="btn-group" data-bs-toggle="buttons">
@if (isToShow(viewModeEnum.ListElement)) {
<button
[attr.aria-current]="currentMode === viewModeEnum.ListElement"

View File

@@ -1,4 +1,4 @@
import { CommonModule } from '@angular/common';
import { AsyncPipe } from '@angular/common';
import {
Component,
Input,
@@ -6,7 +6,7 @@ import {
SimpleChanges,
} from '@angular/core';
import { NgbModal } from '@ng-bootstrap/ng-bootstrap';
import { TranslateModule } from '@ngx-translate/core';
import { TranslatePipe } from '@ngx-translate/core';
import {
Observable,
of,
@@ -29,10 +29,10 @@ import { SubmissionService } from '../../submission.service';
templateUrl: './submission-form-footer.component.html',
standalone: true,
imports: [
AsyncPipe,
BrowserOnlyPipe,
BtnDisabledDirective,
CommonModule,
TranslateModule,
TranslatePipe,
],
})
export class SubmissionFormFooterComponent implements OnChanges {

View File

@@ -2,7 +2,7 @@
Template for the detect duplicates submission section component
@author Kim Shepherd
-->
<div class="text-sm-left" *ngVar="(this.getDuplicateData() | async) as data">
<div class="text-sm-start" *ngVar="(this.getDuplicateData() | async) as data">
@if (data?.potentialDuplicates.length === 0) {
<div class="alert alert-success w-100">{{ 'submission.sections.duplicates.none' | translate }}</div>
}

View File

@@ -2,15 +2,15 @@
<div class="row">
<!-- Default switch -->
<div class="col-md-2 d-flex justify-content-center align-items-center" >
<div class="custom-control custom-switch">
<div class="form-check form-switch">
<input
type="checkbox"
class="custom-control-input"
class="form-check-input"
id="primaryBitstream{{fileIndex}}"
[disabled]="processingSaveStatus$ | async"
[checked]="isPrimary"
(change)="togglePrimaryBitstream($event)">
<label class="custom-control-label" for="primaryBitstream{{fileIndex}}">
<label class="form-check-label" for="primaryBitstream{{fileIndex}}">
@if (!isPrimary) {
<span class="sr-only">{{'submission.sections.upload.primary.make' | translate:{ fileName: fileName } }}</span>
}

View File

@@ -21,7 +21,7 @@
}
<div class="row">
<div class="col-md-2">
<span class="text-left font-weight-bold">{{ 'bitstream.edit.form.primaryBitstream.label' | translate }}</span>
<span class="text-start fw-bold">{{ 'bitstream.edit.form.primaryBitstream.label' | translate }}</span>
</div>
</div>
<div class="row">

View File

@@ -1,30 +1,29 @@
<div class="thumbnail" [class.limit-width]="limitWidth">
@if (isLoading()) {
<div class="thumbnail-content outer">
<div class="inner">
<div class="centered">
<ds-loading [spinner]="true"></ds-loading>
<div class="thumbnail-content outer">
<div class="inner">
<div class="centered">
<ds-loading [spinner]="true"></ds-loading>
</div>
</div>
</div>
</div>
}
<!-- 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"
[ngClass]="{ 'd-none': isLoading ()}"
<img class="thumbnail-content img-fluid"
[class.d-none]="isLoading()"
[src]="src() | dsSafeUrl"
[alt]="alt | translate"
(error)="errorHandler()"
(load)="successHandler()"
/>
} @if (src() === null && isLoading() === false) {
<div class="thumbnail-content outer">
<div class="inner">
<div class="thumbnail-placeholder centered">
{{ placeholder | translate }}
(load)="successHandler()"/>
}
@if (src() === null && isLoading() === false) {
<div class="thumbnail-content outer">
<div class="inner">
<div class="thumbnail-placeholder centered">
{{ placeholder | translate }}
</div>
</div>
</div>
</div>
}
</div>

View File

@@ -1,7 +1,4 @@
import {
CommonModule,
isPlatformBrowser,
} from '@angular/common';
import { isPlatformBrowser } from '@angular/common';
import {
Component,
Inject,
@@ -12,7 +9,7 @@ import {
SimpleChanges,
WritableSignal,
} from '@angular/core';
import { TranslateModule } from '@ngx-translate/core';
import { TranslatePipe } from '@ngx-translate/core';
import { of } from 'rxjs';
import { switchMap } from 'rxjs/operators';
@@ -40,10 +37,9 @@ import { SafeUrlPipe } from '../shared/utils/safe-url-pipe';
templateUrl: './thumbnail.component.html',
standalone: true,
imports: [
CommonModule,
SafeUrlPipe,
ThemedLoadingComponent,
TranslateModule,
TranslatePipe,
],
})
export class ThumbnailComponent implements OnChanges {

View File

@@ -1,6 +1,7 @@
import {
CommonModule,
AsyncPipe,
Location,
NgClass,
} from '@angular/common';
import {
Component,
@@ -44,8 +45,9 @@ export const ADVANCED_WORKFLOW_ACTION_SELECT_REVIEWER = 'selectrevieweraction';
templateUrl: './advanced-workflow-action-select-reviewer.component.html',
styleUrls: ['./advanced-workflow-action-select-reviewer.component.scss'],
imports: [
CommonModule,
AsyncPipe,
ModifyItemOverviewComponent,
NgClass,
ReviewersListComponent,
TranslateModule,
],

View File

@@ -1,5 +1,5 @@
import {
CommonModule,
AsyncPipe,
Location,
} from '@angular/common';
import { Component } from '@angular/core';
@@ -8,7 +8,7 @@ import {
Router,
} from '@angular/router';
import {
TranslateModule,
TranslatePipe,
TranslateService,
} from '@ngx-translate/core';
import { Observable } from 'rxjs';
@@ -30,9 +30,9 @@ import { WorkflowItemActionPageDirective } from '../workflow-item-action-page.co
templateUrl: '../workflow-item-action-page.component.html',
standalone: true,
imports: [
CommonModule,
AsyncPipe,
ModifyItemOverviewComponent,
TranslateModule,
TranslatePipe,
VarDirective,
],
})

View File

@@ -1,5 +1,5 @@
import {
CommonModule,
AsyncPipe,
Location,
} from '@angular/common';
import {
@@ -42,7 +42,7 @@ import { NotificationsService } from '../../shared/notifications/notifications.s
templateUrl: './workspaceitems-delete-page.component.html',
styleUrls: ['./workspaceitems-delete-page.component.scss'],
imports: [
CommonModule,
AsyncPipe,
ModifyItemOverviewComponent,
TranslateModule,
],

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": "المسؤولون",

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": "প্রশাসক",

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",

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",

View File

@@ -484,6 +484,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": "Δεν υπάρχουν χρήστες για εμφάνιση.",
@@ -681,7 +697,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",
@@ -2537,6 +2554,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": "Διαχειριστές",

View File

@@ -305,6 +305,14 @@
"admin.access-control.epeople.table.edit.buttons.remove": "Delete \"{{name}}\"",
"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?",
"admin.access-control.epeople.table.edit.buttons.remove.modal.cancel": "Cancel",
"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.form.create": "Create EPerson",
@@ -433,7 +441,7 @@
"admin.access-control.groups.form.delete-group.modal.header": "Delete Group \"{{ 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?",
"admin.access-control.groups.form.delete-group.modal.cancel": "Cancel",
@@ -1523,6 +1531,14 @@
"comcol-role.edit.delete.error.title": "Failed to delete the '{{ role }}' role's group",
"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?",
"comcol-role.edit.delete.modal.cancel": "Cancel",
"comcol-role.edit.delete.modal.confirm": "Delete",
"comcol-role.edit.community-admin.name": "Administrators",
"comcol-role.edit.collection-admin.name": "Administrators",

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 hay usuarios para 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 grupo \"{{ 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": "¿Está seguro de que desea eliminar el grupo \"{{ dsoName }}\"?",
// "admin.access-control.groups.form.delete-group.modal.cancel": "Cancel",
@@ -2297,6 +2314,22 @@
// "comcol-role.edit.delete.error.title": "Failed to delete the '{{ role }}' role's group",
"comcol-role.edit.delete.error.title": "Error al borrar el grupo 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": "Administradores",

View File

@@ -491,6 +491,18 @@
// "admin.access-control.epeople.table.edit.buttons.remove": "Delete \"{{name}}\"",
"admin.access-control.epeople.table.edit.buttons.remove": "Poista \"{{name}}\"",
// "admin.access-control.epeople.table.edit.buttons.remove.modal.header": "Delete Group \"{{ dsoName }}\"",
"admin.access-control.epeople.table.edit.buttons.remove.modal.header": "Poista ryhmä \"{{ 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?",
"admin.access-control.epeople.table.edit.buttons.remove.modal.info": "Haluatko varmasti poistaa ryhmän \"{{ dsoName }}\" ja kaikki siihen liittyvät käytännöt?",
// "admin.access-control.epeople.table.edit.buttons.remove.modal.cancel": "Cancel",
"admin.access-control.epeople.table.edit.buttons.remove.modal.cancel": "Peruuta",
// "admin.access-control.epeople.table.edit.buttons.remove.modal.confirm": "Delete",
"admin.access-control.epeople.table.edit.buttons.remove.modal.confirm": "Poista",
// "admin.access-control.epeople.no-items": "No EPeople to show.",
"admin.access-control.epeople.no-items": "Ei näytettäviä käyttäjiä.",
@@ -687,8 +699,9 @@
// "admin.access-control.groups.form.delete-group.modal.header": "Delete Group \"{{ dsoName }}\"",
"admin.access-control.groups.form.delete-group.modal.header": "Poista ryhmä \"{{ 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": "Haluatko varmasti poistaa ryhmän \"{{ 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": "Haluatko varmasti poistaa ryhmän \"{{ dsoName }}\" ja kaikki siihen liittyvät käytännöt?",
// "admin.access-control.groups.form.delete-group.modal.cancel": "Cancel",
"admin.access-control.groups.form.delete-group.modal.cancel": "Peruuta",
@@ -2475,6 +2488,18 @@
// "comcol-role.edit.delete.error.title": "Failed to delete the '{{ role }}' role's group",
"comcol-role.edit.delete.error.title": "'{{ role }}'-roolin ryhmän poisto epäonnistui",
// "comcol-role.edit.delete.modal.header": "Delete Group \"{{ dsoName }}\"",
"comcol-role.edit.delete.modal.header": "Poista ryhmä \"{{ dsoName }}\"",
// "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": "Haluatko varmasti poistaa ryhmän \"{{ dsoName }}\" ja kaikki siihen liittyvät käytännöt?",
// "comcol-role.edit.delete.modal.cancel": "Cancel",
"comcol-role.edit.delete.modal.cancel": "Peruuta",
// "comcol-role.edit.delete.modal.confirm": "Delete",
"comcol-role.edit.delete.modal.confirm": "Poista",
// "comcol-role.edit.community-admin.name": "Administrators",
"comcol-role.edit.community-admin.name": "Ylläpitäjät",

View File

@@ -467,6 +467,22 @@
// "admin.access-control.epeople.table.edit.buttons.remove": "Delete \"{{name}}\"",
"admin.access-control.epeople.table.edit.buttons.remove": "Supprimer \"{{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": "Aucun(e) EPerson ne correspond à votre recherche",
@@ -662,7 +678,8 @@
// "admin.access-control.groups.form.delete-group.modal.header": "Delete Group \"{{ dsoName }}\"",
"admin.access-control.groups.form.delete-group.modal.header": "Supprimer le groupe \"{{ 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": "Êtes-vous certain(e) de vouloir supprimer le groupe \"{{ dsoName }}\"",
// "admin.access-control.groups.form.delete-group.modal.cancel": "Cancel",
@@ -2344,6 +2361,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": "Administrateurs",

View File

@@ -501,6 +501,22 @@
// "admin.access-control.epeople.table.edit.buttons.remove": "Delete \"{{name}}\"",
"admin.access-control.epeople.table.edit.buttons.remove": "Dubh às \"{{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": "Chan eil E-Dhaoine ri shealltainn.",
@@ -696,7 +712,8 @@
// "admin.access-control.groups.form.delete-group.modal.header": "Delete Group \"{{ dsoName }}\"",
"admin.access-control.groups.form.delete-group.modal.header": "Dubh às Buidheann \"{{ 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": "A bheil thu cinnteach gu bheil thu airson Buidheann \"{{ dsoName }}\" a dhubhadh às",
// "admin.access-control.groups.form.delete-group.modal.cancel": "Cancel",
@@ -2582,6 +2599,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": "Rianairean",

11126
src/assets/i18n/gu.json5 Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -462,6 +462,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": "दिखाने के लिए कोई ईपिपल नहीं हैं।",
@@ -659,7 +675,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",
@@ -2322,6 +2339,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": "प्रशासक",
@@ -4558,8 +4591,8 @@
"item.preview.dc.date.issued": "Published date:",
// "item.preview.dc.description": "Description:",
// TODO New key - Add a translation
"item.preview.dc.description": "Description:",
// TODO Source message changed - Revise the translation
"item.preview.dc.description": "विवरण:",
// "item.preview.dc.description.abstract": "Abstract:",
// TODO New key - Add a translation
@@ -4715,6 +4748,7 @@
"item.preview.dc.identifier.openalex": "OpenAlex पहचानकर्ता",
// "item.preview.dc.description": "Description",
// TODO Source message changed - Revise the translation
"item.preview.dc.description": "विवरण:",
// "item.select.confirm": "Confirm selected",

File diff suppressed because it is too large Load Diff

View File

@@ -491,6 +491,22 @@
// "admin.access-control.epeople.table.edit.buttons.remove": "Delete \"{{name}}\"",
"admin.access-control.epeople.table.edit.buttons.remove": "Eliminare \"{{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": "Nessuna EPersona da mostrare.",
@@ -686,7 +702,8 @@
// "admin.access-control.groups.form.delete-group.modal.header": "Delete Group \"{{ dsoName }}\"",
"admin.access-control.groups.form.delete-group.modal.header": "Elimina gruppo \"{{ 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": "Sei sicuro di voler eliminare gruppo \"{{ dsoName }}\"",
// "admin.access-control.groups.form.delete-group.modal.cancel": "Cancel",
@@ -2484,6 +2501,22 @@
// "comcol-role.edit.delete.error.title": "Failed to delete the '{{ role }}' role's group",
"comcol-role.edit.delete.error.title": "Non è stato possibile cancellare il ruolo '{{ role }}' del gruppo",
// "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": "Amministratori",

View File

@@ -611,6 +611,22 @@
// TODO New key - Add a translation
"admin.access-control.epeople.table.edit.buttons.remove": "Delete \"{{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.",
// TODO New key - Add a translation
"admin.access-control.epeople.no-items": "No EPeople to show.",
@@ -867,9 +883,9 @@
// TODO New key - Add a translation
"admin.access-control.groups.form.delete-group.modal.header": "Delete Group \"{{ 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 New key - Add a translation
"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?",
// "admin.access-control.groups.form.delete-group.modal.cancel": "Cancel",
// TODO New key - Add a translation
@@ -3047,6 +3063,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",
// TODO New key - Add a translation
"comcol-role.edit.community-admin.name": "Administrators",

View File

@@ -493,6 +493,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": "Көрсетуге болатын адамдар жоқ",
@@ -688,7 +704,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",
@@ -2539,6 +2556,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": "Әкімшілер",

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