Compare commits

..
Author SHA1 Message Date
Denys Vuika 0baf221ce9 new docs for About component 2025-07-23 09:50:51 -04:00
dependabot[bot] 5e6e2b5949 build(deps): bump form-data from 3.0.1 to 3.0.4 in /tools/doc (#11043)
Bumps [form-data](https://github.com/form-data/form-data) from 3.0.1 to 3.0.4.
- [Release notes](https://github.com/form-data/form-data/releases)
- [Changelog](https://github.com/form-data/form-data/blob/v3.0.4/CHANGELOG.md)
- [Commits](https://github.com/form-data/form-data/compare/v3.0.1...v3.0.4)

---
updated-dependencies:
- dependency-name: form-data
  dependency-version: 3.0.4
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-22 08:18:42 +02:00
Denys VuikaandAnton Ramanovich 0b90affea4 ACS-8770 Update the Auth Service api docs and deprecations (#9947)
* update api docs and clean dead code

* update api docs and clean dead code

rebasing onto develop branch

* [ACS-8770] fix unit test after auth refactor

* [ACS-8770] fix sonarcube issues

* [ACS-8770] update auth service doc file

* [ACS-8770] clean up demo-shell artifacts

---------

Co-authored-by: Anton Ramanovich <Anton.Ramanovich@hyland.com>
2025-07-21 15:16:59 +02:00
Soumyajit Chakraborty 45834e20f9 AAE-36388 fixing form-field cut issue on preview (#11025) 2025-07-21 18:22:06 +05:30
dependabot[bot] f67a7d0721 build(deps): bump Alfresco/alfresco-build-tools from 8.26.0 to 8.27.0 (#11038)
---
updated-dependencies:
- dependency-name: Alfresco/alfresco-build-tools
  dependency-version: 8.27.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-21 09:44:46 +02:00
dependabot[bot] 4dd8367878 build(deps): bump Alfresco/alfresco-build-tools (#11037)
Bumps [Alfresco/alfresco-build-tools](https://github.com/alfresco/alfresco-build-tools) from 8.26.0 to 8.27.0.
- [Release notes](https://github.com/alfresco/alfresco-build-tools/releases)
- [Commits](https://github.com/alfresco/alfresco-build-tools/compare/691c1d16c90c88a92d2438a001acdefc0efa7d2a...20d21f43addae05442096a7e935dc2b321361501)

---
updated-dependencies:
- dependency-name: Alfresco/alfresco-build-tools
  dependency-version: 8.27.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-21 09:34:29 +02:00
dependabot[bot] b2246cb148 build(deps-dev): bump eslint-plugin-prettier from 4.2.1 to 5.5.3 (#11034)
Bumps [eslint-plugin-prettier](https://github.com/prettier/eslint-plugin-prettier) from 4.2.1 to 5.5.3.
- [Release notes](https://github.com/prettier/eslint-plugin-prettier/releases)
- [Changelog](https://github.com/prettier/eslint-plugin-prettier/blob/main/CHANGELOG.md)
- [Commits](https://github.com/prettier/eslint-plugin-prettier/compare/v4.2.1...v5.5.3)

---
updated-dependencies:
- dependency-name: eslint-plugin-prettier
  dependency-version: 5.5.3
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-21 09:28:28 +02:00
dependabot[bot] fb3a9ca2c2 build(deps): bump on-headers and compression (#11030)
Bumps [on-headers](https://github.com/jshttp/on-headers) and [compression](https://github.com/expressjs/compression). These dependencies needed to be updated together.

Updates `on-headers` from 1.0.2 to 1.1.0
- [Release notes](https://github.com/jshttp/on-headers/releases)
- [Changelog](https://github.com/jshttp/on-headers/blob/master/HISTORY.md)
- [Commits](https://github.com/jshttp/on-headers/compare/v1.0.2...v1.1.0)

Updates `compression` from 1.8.0 to 1.8.1
- [Release notes](https://github.com/expressjs/compression/releases)
- [Changelog](https://github.com/expressjs/compression/blob/master/HISTORY.md)
- [Commits](https://github.com/expressjs/compression/compare/1.8.0...v1.8.1)

---
updated-dependencies:
- dependency-name: on-headers
  dependency-version: 1.1.0
  dependency-type: indirect
- dependency-name: compression
  dependency-version: 1.8.1
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-21 09:20:10 +02:00
Grzegorz Jaśkowski f15014f295 [ACS-9880] Create ADF upgrade guide from 7.0.0 to 8.0.0 (#11029)
* [ACS-9880] add ADF upgrade from 7.0.0 to 8.0.0 guide

* [ACS-9880] add missing commas and values [ci:force]
2025-07-18 14:19:06 +02:00
dominikiwanekhyland b28479b92b [AAE-32978] Move ADF "RichTextEditorComponent" to HxP monorepo (#10967) 2025-07-17 12:11:56 +02:00
AleksanderSklorz 89380f2905 [ACS-7266] checkboxes in sorting boxes are put on the right side of the text instead of the left side (#11009)
* [ACS-7266] Fix for checkboxes position

* [ACS-7266] Unit test

* [ACS-7266] Addressed comment
2025-07-16 09:13:10 +02:00
AleksanderSklorz e5fcfde2ec Post release version bump (#11021)
* Trigger Build

* Post release bump
2025-07-15 16:16:03 +02:00
Maurizio Vitale 2e10d2c5c7 AAE-36718 Expose a landing page provider for the landing-page-token (#11020)
* Expose a landing page provider for the landin-page-token

* Expose a landing page provider for the landin-page-token

* fix lint

* fix lint
2025-07-15 14:54:18 +01:00
Alfresco BuildandCrowdin Bot 96281d32a1 New Crowdin translations by GitHub Action (#11017)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2025-07-15 14:46:38 +01:00
AleksanderSklorz 1f5785aa8e Release 8.0.0 (#11019)
* Release 8.0.0

* Release 8.0.0

* Trigger Build

* Release 8.0.0
2025-07-15 09:34:47 +02:00
dependabot[bot] be03d82668 build(deps): bump crowdin/github-action from 2.8.0 to 2.9.0 (#11014)
Bumps [crowdin/github-action](https://github.com/crowdin/github-action) from 2.8.0 to 2.9.0.
- [Release notes](https://github.com/crowdin/github-action/releases)
- [Commits](https://github.com/crowdin/github-action/compare/297234bae049541aa48ed268e5de00dee4efa4b4...9fd07c1c5b36b15f082d1d860dc399f16f849bd7)

---
updated-dependencies:
- dependency-name: crowdin/github-action
  dependency-version: 2.9.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-14 08:21:48 -04:00
dependabot[bot] d265172cee build(deps-dev): bump prettier from 2.8.8 to 3.6.2 (#11012)
Bumps [prettier](https://github.com/prettier/prettier) from 2.8.8 to 3.6.2.
- [Release notes](https://github.com/prettier/prettier/releases)
- [Changelog](https://github.com/prettier/prettier/blob/main/CHANGELOG.md)
- [Commits](https://github.com/prettier/prettier/compare/2.8.8...3.6.2)

---
updated-dependencies:
- dependency-name: prettier
  dependency-version: 3.6.2
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-14 08:21:31 -04:00
Denys Vuika 7aa07ef525 AAE-36614 new provideShell api (#11006) 2025-07-14 08:21:05 -04:00
Denys Vuika 2ebee4c024 AAE-36615 new provideI18N api (#11007) 2025-07-14 08:06:53 -04:00
dominikiwanekhyland b563e283c1 [ACS-9789] Multiple styles issues for metadata sidebar (#11015) 2025-07-14 13:03:28 +02:00
Soumyajit Chakraborty f1bdbf63b0 AAE-36368 Fixing labels and form-fields on content-ee and apa (#10982)
* AAE-36368 fixing labels and form-fields on content-ee and apa

* AAE-36368 removing padding for ACA

* AAE-36368 fixing the PR for ACA issues

* AAE-36368 resolving PR comments removing adf-form-field-input class
2025-07-14 09:03:47 +01:00
Alfresco BuildandCrowdin Bot 1dd7d29bf2 New Crowdin translations by GitHub Action (#11008)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2025-07-11 08:03:29 -04:00
Mykyta Maliarchuk 0651dc25d5 [ACS-9790] Fix Tags and Categories content is missing during editing other panel (#11004)
* [ACS-9790] Fix Tags and Categories content is missing during editing other panel in metadata sidebar

* [ACS-9790] remove commented code

* [ACS-9790] cr fix
2025-07-11 10:37:50 +02:00
Shivangi Shree ec145fb73c [ADF-5583] Update style to make version visible outside dialog (#11005)
* [ADF-5583] Update style to make version visible outside dialog

* [ADF-5583] Remove redundant overflow style

* [ADF-5583] Remove redundant style
2025-07-11 13:48:12 +05:30
dominikiwanekhyland 450a4a0a49 [ACS-9789] Multiple styles issues for metadata sidebar (#11002) 2025-07-10 14:02:08 +02:00
Alfresco BuildandCrowdin Bot 792011ed4d New Crowdin translations by GitHub Action (#11001)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2025-07-10 09:41:25 +01:00
Alfresco BuildandCrowdin Bot 699474ff59 New Crowdin translations by GitHub Action (#10999)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2025-07-09 15:43:11 +01:00
dependabot[bot] 2bf97891d9 build(deps): bump koa and @nx/angular (#10984)
Bumps [koa](https://github.com/koajs/koa) to 2.16.1 and updates ancestor dependency [@nx/angular](https://github.com/nrwl/nx/tree/HEAD/packages/angular). These dependencies need to be updated together.


Updates `koa` from 2.15.4 to 2.16.1
- [Release notes](https://github.com/koajs/koa/releases)
- [Changelog](https://github.com/koajs/koa/blob/master/History.md)
- [Commits](https://github.com/koajs/koa/compare/2.15.4...v2.16.1)

Updates `@nx/angular` from 20.8.0 to 21.2.2
- [Release notes](https://github.com/nrwl/nx/releases)
- [Commits](https://github.com/nrwl/nx/commits/21.2.2/packages/angular)

---
updated-dependencies:
- dependency-name: koa
  dependency-version: 2.16.1
  dependency-type: indirect
- dependency-name: "@nx/angular"
  dependency-version: 21.2.2
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-09 15:42:57 +01:00
Denys Vuika 11cb2ea688 AAE-36484 improved standalone support for Core (#10998)
improved standalone support
2025-07-09 08:12:17 -04:00
dependabot[bot] 1d2cb2390b build(deps): bump vite and @angular-devkit/build-angular (#10983)
Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) to 6.3.5 and updates ancestor dependency [@angular-devkit/build-angular](https://github.com/angular/angular-cli). These dependencies need to be updated together.


Updates `vite` from 6.2.5 to 6.3.5
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/main/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v6.3.5/packages/vite)

Updates `@angular-devkit/build-angular` from 19.2.7 to 19.2.15
- [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/19.2.7...19.2.15)

---
updated-dependencies:
- dependency-name: vite
  dependency-version: 6.3.5
  dependency-type: indirect
- dependency-name: "@angular-devkit/build-angular"
  dependency-version: 19.2.15
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-09 12:21:57 +01:00
dependabot[bot] 1218def6cd build(deps-dev): bump eslint-plugin-storybook from 0.11.6 to 9.0.7 (#10991)
Bumps [eslint-plugin-storybook](https://github.com/storybookjs/storybook/tree/HEAD/code/lib/eslint-plugin) from 0.11.6 to 9.0.7.
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.v1-5.md)
- [Commits](https://github.com/storybookjs/storybook/commits/HEAD/code/lib/eslint-plugin)

---
updated-dependencies:
- dependency-name: eslint-plugin-storybook
  dependency-version: 9.0.7
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-09 12:20:58 +01:00
Fabian Kindgen 6a3623bd76 AAE-35676 Cleanup Open Next Task (#10952)
* [ci:force] Cleanup

* [ci:force] cleanup

* [ci:force] Re-added tests & adjusted them

* [ci:force] Update user-task-cloud.component.spec.ts

* Fixes
2025-07-08 15:16:57 +02:00
Denys Vuika 5438eef9db AAE-36260 global test setup (#10970) 2025-07-07 12:41:59 -04:00
MichalKinas e96f5b3c48 [AAE-36397] ADF viewer image is no longer cropped (#10996) 2025-07-07 17:03:53 +02:00
dependabot[bot] 6b09745d09 build(deps-dev): bump @typescript-eslint/typescript-estree (#10990)
Bumps [@typescript-eslint/typescript-estree](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-estree) from 8.33.1 to 8.35.1.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/typescript-estree/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.35.1/packages/typescript-estree)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/typescript-estree"
  dependency-version: 8.35.1
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-07 08:16:49 -04:00
dependabot[bot] 5e11ade63c build(deps): bump Alfresco/alfresco-build-tools (#10994)
Bumps [Alfresco/alfresco-build-tools](https://github.com/alfresco/alfresco-build-tools) from 8.24.1 to 8.26.0.
- [Release notes](https://github.com/alfresco/alfresco-build-tools/releases)
- [Commits](https://github.com/alfresco/alfresco-build-tools/compare/86fa01feca860df31191c605eaae854f7611b01e...691c1d16c90c88a92d2438a001acdefc0efa7d2a)

---
updated-dependencies:
- dependency-name: Alfresco/alfresco-build-tools
  dependency-version: 8.26.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-07 08:14:56 -04:00
dependabot[bot] ad5e7a7d9b build(deps): bump github/codeql-action from 3.29.1 to 3.29.2 (#10992)
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.29.1 to 3.29.2.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/39edc492dbe16b1465b0cafca41432d857bdb31a...181d5eefc20863364f96762470ba6f862bdef56b)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-version: 3.29.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-07 08:14:38 -04:00
dependabot[bot] 4bd656cc48 build(deps): bump Alfresco/alfresco-build-tools from 8.24.1 to 8.26.0 (#10993)
Bumps [Alfresco/alfresco-build-tools](https://github.com/alfresco/alfresco-build-tools) from 8.24.1 to 8.26.0.
- [Release notes](https://github.com/alfresco/alfresco-build-tools/releases)
- [Commits](https://github.com/alfresco/alfresco-build-tools/compare/86fa01feca860df31191c605eaae854f7611b01e...691c1d16c90c88a92d2438a001acdefc0efa7d2a)

---
updated-dependencies:
- dependency-name: Alfresco/alfresco-build-tools
  dependency-version: 8.26.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-07 08:14:19 -04:00
6c94ebde4b GH auto: Automated Update of Translations from Crowdin (#10981)
* New Crowdin translations by GitHub Action

* Trigger Build

---------

Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
Co-authored-by: Aleksander Sklorz <Aleksander.Sklorz@hyland.com>
2025-07-07 10:19:56 +02:00
Mykyta Maliarchuk 54fd097fab [ACS-9327] Add prohibited symbols validation for Categories dialog (#10985)
* [ACS-9327] Add prohibited symbols validation for Categories dialog

* [ACS-9327] add validator for ending dot

* [ACS-9327] use endsWith

* [ACS-9327] cr fix

* [ACS-9327] add appropriate error message
2025-07-07 10:12:49 +02:00
Eugenio Romano 9bed60befc AAE-30842 Fix rendering small devices again (#10986)
* AAE-30842 Fix rendering small devices

* Update form-renderer.component.scss

* Update form-renderer.component.scss

* Update form-renderer.component.scss
2025-07-04 13:33:42 +02:00
MichalKinas c863da0c5d [MNT-24459] Aspect list get all aspects when not all were fetched by first call (#10980)
* [MNT-24459] Aspect list get all aspects when not all were fetched by first call

* [MNT-24459] CR fixes

* [MNT-24459] Sonar issues fixed
2025-07-04 07:18:20 +02:00
dominikiwanekhyland 951b22e098 Angular 19 migration (#10795) 2025-07-03 12:09:53 +02:00
Shivangi Shree c7f28d54d6 [ADF-5581] Reset filterValue when navigating to a new folder to ensur… (#10978)
* [ADF-5581] Reset filterValue when navigating to a new folder to ensure filters are cleared

* [ADF-5581] Added unit tests to verify filterValue reset

* [ADF-5581] Add unit tests to verify filter reset on navigation and preservation on sorting

* [ADF-5581] Use SpyObj<ShareDataTableAdapter> in unit test to avoid any type

* [ADF-5581] Remove redundant type on mockData declaration in unit test

* Revert loadFolder() to reload() in onSortingChanged and update unit test accordingly
2025-07-02 17:48:13 +05:30
Soumyajit Chakraborty d776c7c77d AAE-35310 Displaying different text fields on an eform doesn't align vertically or horizontally (#10979)
* AAE-35310 fixing vertical or horizontal alignment issues

* AAE-35310 refactoring code and removed manual scss with flexboxes
2025-07-02 17:33:37 +05:30
Shivangi Shree 6dafcb4447 [ADF-5580] emit commentAdded event from adf-comments component (#10966)
* [ADF-5580] emit commentAdded event from adf-comments component

* [ADF-5580] Emit commentAdded event from adf-comments and expose it in adf-node-comments

* [ADF-5580] Emit commentAdded event from NodeCommentsComponent, add unit test, and update docs

* [ADF-5580] Add unit test for commentAdded output in NodeCommentsComponent, update docs and create testing utils

* [ADF-5580] Mark debugElement as readOnly

* [ADF-5580] Add mock services and fix unit test setup

* [ADF-5580] Reuse shared comment mocks across multiple test files

* [ADF-5580] Align comments component documentation

* [ADF-5580] Remove redundant setup and use ContentTestingModule in comment components tests
2025-07-01 13:54:07 +05:30
Mykyta Maliarchuk 5d043e6987 [PRODSEC-10305] Bump @nx/webpack & webpack-dev-server (#10976) 2025-07-01 08:10:48 +02:00
AleksanderSklorz 57713dbe6e [MNT-25175] configured scripts to execute are listed by node id and not by script name (#10969)
* [MNT-25175] Styles and title for non editable property

* [MNT-25175] Unit test
2025-07-01 08:01:20 +02:00
dependabot[bot] cfe5242fda build(deps): bump graphql-ws from 5.16.2 to 6.0.5 (#10973)
Bumps [graphql-ws](https://github.com/enisdenjo/graphql-ws) from 5.16.2 to 6.0.5.
- [Release notes](https://github.com/enisdenjo/graphql-ws/releases)
- [Changelog](https://github.com/enisdenjo/graphql-ws/blob/master/CHANGELOG.md)
- [Commits](https://github.com/enisdenjo/graphql-ws/compare/v5.16.2...v6.0.5)

---
updated-dependencies:
- dependency-name: graphql-ws
  dependency-version: 6.0.5
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-30 18:03:23 +01:00
dependabot[bot] 5f574b0176 build(deps-dev): bump eslint-plugin-license-header from 0.6.0 to 0.8.0 (#10959)
Bumps [eslint-plugin-license-header](https://github.com/nikku/eslint-plugin-license-header) from 0.6.0 to 0.8.0.
- [Release notes](https://github.com/nikku/eslint-plugin-license-header/releases)
- [Changelog](https://github.com/nikku/eslint-plugin-license-header/blob/main/CHANGELOG.md)
- [Commits](https://github.com/nikku/eslint-plugin-license-header/compare/v0.6.0...v0.8.0)

---
updated-dependencies:
- dependency-name: eslint-plugin-license-header
  dependency-version: 0.8.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-30 18:03:06 +01:00
dependabot[bot] 2de76607a6 build(deps): bump github/codeql-action from 3.29.0 to 3.29.1 (#10975)
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.29.0 to 3.29.1.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/ce28f5bb42b7a9f2c824e633a3f6ee835bab6858...39edc492dbe16b1465b0cafca41432d857bdb31a)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-version: 3.29.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-30 18:02:51 +01:00
dependabot[bot] c245e467e4 build(deps): bump crowdin/github-action from 2.7.1 to 2.8.0 (#10974)
Bumps [crowdin/github-action](https://github.com/crowdin/github-action) from 2.7.1 to 2.8.0.
- [Release notes](https://github.com/crowdin/github-action/releases)
- [Commits](https://github.com/crowdin/github-action/compare/f214c8723025f41fc55b2ad26e67b60b80b1885d...297234bae049541aa48ed268e5de00dee4efa4b4)

---
updated-dependencies:
- dependency-name: crowdin/github-action
  dependency-version: 2.8.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-30 18:02:24 +01:00
Denys Vuika 8b3b6ffbca AAE-36173 switch to TranslatePipe (#10968) 2025-06-27 10:20:05 -04:00
Soumyajit Chakraborty 16f42be08e AAE-35976 Adding auto required instead of manually handling styles manually (#10956)
* AAE-35976 adding auto-required instead of manually handling required using asterisks inside mat-form-field elements

* AAE-35976 removing hiderequiredmarker as it'll be handled by the form-fields itself

Resolving merge conflicts with develop

* AAE-35976 fixing units

* AAE-35976 adding isVisible condition with the required field

* AAE-35976 removing the method call from html and using the variable instead for conditions
2025-06-26 18:11:24 +05:30
dependabot[bot] 056e4c1429 build(deps): bump Alfresco/alfresco-build-tools from 8.23.3 to 8.24.1 (#10963)
Bumps [Alfresco/alfresco-build-tools](https://github.com/alfresco/alfresco-build-tools) from 8.23.3 to 8.24.1.
- [Release notes](https://github.com/alfresco/alfresco-build-tools/releases)
- [Commits](https://github.com/alfresco/alfresco-build-tools/compare/c2278c8ec6744d3595478217e9736ebb47d501db...86fa01feca860df31191c605eaae854f7611b01e)

---
updated-dependencies:
- dependency-name: Alfresco/alfresco-build-tools
  dependency-version: 8.24.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-25 02:23:41 +01:00
Robert Duda dcab68d78a AAE-35632 Priority filter unit tests (#10965) 2025-06-24 12:31:58 +02:00
dependabot[bot] 4b6896ae3d build(deps): bump Alfresco/alfresco-build-tools (#10962)
Bumps [Alfresco/alfresco-build-tools](https://github.com/alfresco/alfresco-build-tools) from 8.23.3 to 8.24.1.
- [Release notes](https://github.com/alfresco/alfresco-build-tools/releases)
- [Commits](https://github.com/alfresco/alfresco-build-tools/compare/c2278c8ec6744d3595478217e9736ebb47d501db...86fa01feca860df31191c605eaae854f7611b01e)

---
updated-dependencies:
- dependency-name: Alfresco/alfresco-build-tools
  dependency-version: 8.24.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-24 09:39:24 +01:00
Soumyajit Chakraborty f40107de33 AAE-34482 Modelling inconsistencies in mat form fields label alignments ii (#10929)
* AAE-34482 fixing card view datetime component in adf using mat-label

* AAE-34482 fixing the padding for mat-form-field labels

* AAE-34482 resolving the pr review comments

* AAE-34482 changing the floatType from 'auto' to null

* AAE-34482 changing the scss class name as per the review comment

* AAE-34482 fixing the left units
2025-06-23 16:14:39 +05:30
MichalKinas c16417cbff [ACS-9250] Adjust viewer to display properly under parent without overlay mode (#10950) 2025-06-20 17:46:29 +02:00
Soumyajit Chakraborty 27502d5d67 AAE-34902 Updating styles for input controls to maintain the ui consistency with studio hxp (#10900)
* AAE-34902 updating styles for input controls to maintain the ui consistency with studio-hxp

* AAE-34902 changing class prefix-names from hxp to adf

* AAE-34902 float level conditional on placeholder

* AAE-34902 fixing the placeholder in text-widgets

* AAE-34902 fixing the left and right side margins on workspace forms
2025-06-17 15:40:20 +05:30
dependabot[bot] 3126c869b5 build(deps-dev): bump brace-expansion from 1.1.11 to 1.1.12 (#10951)
Bumps [brace-expansion](https://github.com/juliangruber/brace-expansion) from 1.1.11 to 1.1.12.
- [Release notes](https://github.com/juliangruber/brace-expansion/releases)
- [Commits](https://github.com/juliangruber/brace-expansion/compare/1.1.11...v1.1.12)

---
updated-dependencies:
- dependency-name: brace-expansion
  dependency-version: 1.1.12
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-17 11:02:43 +01:00
dependabot[bot] 1d782191ae build(deps-dev): bump stylelint from 16.19.1 to 16.20.0 (#10944)
Bumps [stylelint](https://github.com/stylelint/stylelint) from 16.19.1 to 16.20.0.
- [Release notes](https://github.com/stylelint/stylelint/releases)
- [Changelog](https://github.com/stylelint/stylelint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/stylelint/stylelint/compare/16.19.1...16.20.0)

---
updated-dependencies:
- dependency-name: stylelint
  dependency-version: 16.20.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-17 09:58:42 +01:00
dependabot[bot] 1dc6045c85 build(deps): bump ts-morph from 20.0.0 to 26.0.0 (#10945)
Bumps [ts-morph](https://github.com/dsherret/ts-morph) from 20.0.0 to 26.0.0.
- [Release notes](https://github.com/dsherret/ts-morph/releases)
- [Commits](https://github.com/dsherret/ts-morph/compare/20.0.0...26.0.0)

---
updated-dependencies:
- dependency-name: ts-morph
  dependency-version: 26.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-17 09:58:23 +01:00
Anna Karwatka a4072aca74 AAE-35694 Update section-start-form with Sections in Row (#10947) 2025-06-17 06:15:00 +02:00
Soumyajit Chakraborty 22b62804d5 AAE-35882 Studio modelling forms required dropdown has double asterisk (#10948)
* AAE-35882 fixing the double asterix issue on require fields on preview and form-editors and workspace

* AAE-35882 altering one unit as the asterisks are now handled by mat-form-fields
2025-06-16 20:13:38 +05:30
Grzegorz Jaśkowski eda59a1de8 [ACS-8746] yellow warning color (#10883)
* [ACS-8746] yellow warning color

* [ACS-8746] move snackbar bg styling to app level

* [ACS-8746] missing comma
2025-06-13 12:50:11 -04:00
dependabot[bot] 6d5cda887d build(deps): bump Alfresco/alfresco-build-tools (#10934)
Bumps [Alfresco/alfresco-build-tools](https://github.com/alfresco/alfresco-build-tools) from 8.23.0 to 8.23.3.
- [Release notes](https://github.com/alfresco/alfresco-build-tools/releases)
- [Commits](https://github.com/alfresco/alfresco-build-tools/compare/f37c44cc085236178ebb8834eb634b0b4b550a40...c2278c8ec6744d3595478217e9736ebb47d501db)

---
updated-dependencies:
- dependency-name: Alfresco/alfresco-build-tools
  dependency-version: 8.23.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-13 10:27:43 +01:00
Wojciech Duda 3009fa6dec AAE-35848 Fix dynamic viewer container scaling (#10932)
* AAE-35848 Fix dynamic viewer container scaling

* AAE-35848 Add unit test

* AAE-35848 Fix custom viewer test
2025-06-13 09:57:11 +01:00
dependabot[bot] 441a6aab19 build(deps): bump Alfresco/alfresco-build-tools from 8.23.0 to 8.23.3 (#10935)
Bumps [Alfresco/alfresco-build-tools](https://github.com/alfresco/alfresco-build-tools) from 8.23.0 to 8.23.3.
- [Release notes](https://github.com/alfresco/alfresco-build-tools/releases)
- [Commits](https://github.com/alfresco/alfresco-build-tools/compare/f37c44cc085236178ebb8834eb634b0b4b550a40...c2278c8ec6744d3595478217e9736ebb47d501db)

---
updated-dependencies:
- dependency-name: Alfresco/alfresco-build-tools
  dependency-version: 8.23.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-13 09:56:19 +01:00
dependabot[bot] 47c1f92ed5 build(deps): bump github/codeql-action from 3.28.19 to 3.29.0 (#10936)
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.28.19 to 3.29.0.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/fca7ace96b7d713c7035871441bd52efbe39e27e...ce28f5bb42b7a9f2c824e633a3f6ee835bab6858)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-version: 3.29.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-13 09:39:48 +01:00
dependabot[bot] 402725d179 build(deps-dev): bump @storybook/manager-api from 8.6.2 to 8.6.14 (#10941)
Bumps [@storybook/manager-api](https://github.com/storybookjs/storybook/tree/HEAD/code/lib/manager-api) from 8.6.2 to 8.6.14.
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Commits](https://github.com/storybookjs/storybook/commits/v8.6.14/code/lib/manager-api)

---
updated-dependencies:
- dependency-name: "@storybook/manager-api"
  dependency-version: 8.6.14
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-13 09:39:26 +01:00
Denys Vuika 8cfc8d32f2 AAE-35855 Security fixes (#10933)
* remove print-affected-libs action

* cleanup nx.json

* remove slack-group-area action
2025-06-12 17:04:00 -04:00
AleksanderSklorz cdc7553915 [MNT-24923] legal hold hold capabilities are not verified properly (#10930)
* [MNT-24923] Added possibility to filter capabilities by person id

* [MNT-24923] Documentation and unit tests
2025-06-12 08:21:49 -04:00
Alfresco BuildandCrowdin Bot 7a568baf72 New Crowdin translations by GitHub Action (#10928)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2025-06-12 08:18:48 -04:00
MichalKinasandMichaela f8a75d4af7 Viewer renderer stop loading when subsequent renderer throws error (#10931)
* Viewer renderer stop loading when subsequent renderer throws error

* Update lib/core/src/lib/viewer/components/viewer-render/viewer-render.component.spec.ts

* CR fix

---------

Co-authored-by: Michaela <85624192+mkrbr@users.noreply.github.com>
2025-06-12 11:47:22 +02:00
Michaela 31c2cb2162 AAE-35728 Add aria label to viewer loading bars (#10927)
* Adds loading state accessibility

Improves accessibility by adding screen reader support to loading indicators.

This ensures that users with disabilities are informed when the document is loading, improving the overall user experience.

* Trigger Build

* Fixes accessibility issue on loading spinner

Removes the redundant `attr.` prefix from the `aria-labelledby` attribute in the loading spinner.
This resolves an accessibility issue where the spinner's label was not correctly associated, enhancing the user experience for assistive technologies.

* Trigger Build
2025-06-11 17:20:51 +02:00
Michaela 2c4764f89e Adds loading state accessibility (#10926)
Improves accessibility by adding screen reader support to loading indicators.

This ensures that users with disabilities are informed when the document is loading, improving the overall user experience.
2025-06-11 15:48:08 +02:00
MichaelaandEugenio Romano e2693f9304 AAE-35668 Sending empty string instead of null after clearing value from numeric field (#10925)
* Handles null values in number widget

Ensures the number widget correctly handles null, undefined, and empty string values, setting the field value to null in these cases.

This change prevents unexpected behavior when the user clears the input field, ensuring data consistency.

* Adds test for readonly number widget

Adds a test case to verify the behavior of the number widget when it's in readonly mode.

The test checks if the displayValue is correctly set using the decimalNumberPipe when the readOnly property is true.

* Refactors number widget tests

Updates number widget tests to use `overrideComponent` for providing mocked dependencies. This approach ensures proper isolation and avoids potential issues with shared state between tests.
Additionally, it adds a test case to verify the `displayValue` is correctly set using the mocked `DecimalNumberPipe`.

---------

Co-authored-by: Eugenio Romano <eromano@users.noreply.github.com>
2025-06-11 11:53:56 +02:00
MichalKinas 5d9acaec0d [AAE-35649] Viewer renderer wait until subsequent renderers will finish (#10924)
* [AAE-35649] Viewer renderer wait until particular renderers are done

* [AAE-35649] Add docs and unit test coverage

* [AAE-35649] Add missing space
2025-06-11 09:28:07 +02:00
dependabot[bot] 0c7bf62097 build(deps-dev): bump @typescript-eslint/typescript-estree (#10916)
Bumps [@typescript-eslint/typescript-estree](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-estree) from 7.1.1 to 8.33.1.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/typescript-estree/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.33.1/packages/typescript-estree)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/typescript-estree"
  dependency-version: 8.33.1
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-09 16:46:11 +01:00
dependabot[bot] 84116ad2bf build(deps): bump github/codeql-action from 3.28.18 to 3.28.19 (#10918)
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.28.18 to 3.28.19.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/ff0a06e83cb2de871e5a09832bc6a81e7276941f...fca7ace96b7d713c7035871441bd52efbe39e27e)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-version: 3.28.19
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-09 16:26:19 +01:00
dependabot[bot] cd6c41305a build(deps): bump Alfresco/alfresco-build-tools from 8.22.1 to 8.23.0 (#10920)
Bumps [Alfresco/alfresco-build-tools](https://github.com/alfresco/alfresco-build-tools) from 8.22.1 to 8.23.0.
- [Release notes](https://github.com/alfresco/alfresco-build-tools/releases)
- [Commits](https://github.com/alfresco/alfresco-build-tools/compare/b3070acf733fdcfd2698065e99017d4969256e5b...f37c44cc085236178ebb8834eb634b0b4b550a40)

---
updated-dependencies:
- dependency-name: Alfresco/alfresco-build-tools
  dependency-version: 8.23.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-09 16:25:55 +01:00
Wojciech Duda 0c147513cc AAE-35521 Refactor AuthenticationService unit tests (#10922)
* AAE-35521 Refactor AuthenticationService

* AAE-35521 Remove last ajax call

* AAE-35521 Add missing test
2025-06-09 16:07:22 +01:00
dependabot[bot] ac14541c2e build(deps): bump crowdin/github-action from 2.7.0 to 2.7.1 (#10919)
Bumps [crowdin/github-action](https://github.com/crowdin/github-action) from 2.7.0 to 2.7.1.
- [Release notes](https://github.com/crowdin/github-action/releases)
- [Commits](https://github.com/crowdin/github-action/compare/b8012bd5491b8aa8578b73ab5b5f5e7c94aaa6e2...f214c8723025f41fc55b2ad26e67b60b80b1885d)

---
updated-dependencies:
- dependency-name: crowdin/github-action
  dependency-version: 2.7.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-09 10:55:32 +01:00
Wojciech Dudaandtomson 920b7d3585 AAE-34641 Fix ViewerRenderComponent hanging when in a mat-tab (#10913)
* AAE-34641 Fix ViewerRenderComponent hanging when in a mat-tab

Co-authored-by: tomson <tomasz.nastaly@hyland.com>

* AAE-34641 Fix pdf scaling

* AAE-34641 Remove RenderType refactoring

---------

Co-authored-by: tomson <tomasz.nastaly@hyland.com>
2025-06-06 14:21:10 +02:00
Domenico Sibilio 643b5f723a Revert "AAE-34641 Refactor viewer-render loading (#10868)" (#10912)
This reverts commit 413fce8cb7.
2025-06-04 18:44:53 +02:00
AleksanderSklorz a6ab5fcbdd [ACS-9696] fix failing upgrade rxjs from 7.8.1 to 7.8.2 (#10911)
* [ACS-9696] Upgrade rxjs version to fix faling upgrade PR in ACA

* [ACS-9696] Update package-lock.json

* [ACS-9696] Fixed unit tests
2025-06-03 13:54:30 +02:00
Wojciech Duda 35970b4278 AAE-21284 Add migration guide for Angular 17 to 18 (#10910)
* AAE-21284 Add migration guide for Angular 17 to 18

* AAE-21284 Unify doc file names

* AAE-21284 Redact
2025-06-03 13:39:51 +02:00
dependabot[bot] 6f8762f46e build(deps): bump Alfresco/alfresco-build-tools (#10908)
Bumps [Alfresco/alfresco-build-tools](https://github.com/alfresco/alfresco-build-tools) from 8.21.1 to 8.22.1.
- [Release notes](https://github.com/alfresco/alfresco-build-tools/releases)
- [Commits](https://github.com/alfresco/alfresco-build-tools/compare/95f68dc050fba62b3331d9b47bc659526cdfb343...b3070acf733fdcfd2698065e99017d4969256e5b)

---
updated-dependencies:
- dependency-name: Alfresco/alfresco-build-tools
  dependency-version: 8.22.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-02 16:04:49 +01:00
MichalKinas 379fbbb508 [MNT-25043] Skip adding json as content type for FormData body requests (#10903) 2025-06-02 15:49:58 +02:00
Alfresco BuildandCrowdin Bot 342f165b41 New Crowdin translations by GitHub Action (#10887)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2025-06-02 12:46:53 +01:00
dependabot[bot] ecba77dfa9 bump @angular-eslint/template-parser from 17.0.1 to 19.6.0 (#10907)
Bumps [@angular-eslint/template-parser](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/template-parser) from 17.0.1 to 19.6.0.
- [Release notes](https://github.com/angular-eslint/angular-eslint/releases)
- [Changelog](https://github.com/angular-eslint/angular-eslint/blob/main/packages/template-parser/CHANGELOG.md)
- [Commits](https://github.com/angular-eslint/angular-eslint/commits/v19.6.0/packages/template-parser)

---
updated-dependencies:
- dependency-name: "@angular-eslint/template-parser"
  dependency-version: 19.6.0
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-02 12:13:32 +01:00
dependabot[bot] a5b55c5861 bump postcss from 8.4.41 to 8.5.4 (#10906)
Bumps [postcss](https://github.com/postcss/postcss) from 8.4.41 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.4.41...8.5.4)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-02 12:10:59 +01:00
dependabot[bot] 2347ca68c4 build(deps): bump Alfresco/alfresco-build-tools from 8.21.1 to 8.22.1 (#10909)
Bumps [Alfresco/alfresco-build-tools](https://github.com/alfresco/alfresco-build-tools) from 8.21.1 to 8.22.1.
- [Release notes](https://github.com/alfresco/alfresco-build-tools/releases)
- [Commits](https://github.com/alfresco/alfresco-build-tools/compare/95f68dc050fba62b3331d9b47bc659526cdfb343...b3070acf733fdcfd2698065e99017d4969256e5b)

---
updated-dependencies:
- dependency-name: Alfresco/alfresco-build-tools
  dependency-version: 8.22.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-02 12:10:40 +01:00
AleksanderSklorz cdb65bf204 [ACS-9377] remove the join button for records management library for user s without permissions for that library (#10901)
* [ACS-9377] Added function for file plans to get file plan roles

* [ACS-9377] Types and documentation

* [ACS-9377] Unit tests

* [ACS-9377] Fixed sonar cloud issue
2025-06-02 10:15:19 +02:00
Enrico Hilgendorf 8cb7a1719f AAE-34656 Hide all counters in Workspace which do not provide value (#10896)
* Hide all counters in Workspace which do not provide value

* Fixed a copy & paste issue
2025-05-30 07:44:00 +02:00
dominikiwanekhyland 1971980216 [ACS-9619] Issues with trimming file's name in viewer (#10858) 2025-05-29 15:22:58 +02:00
Amedeo Lepore 467a19f3ec AAE-34959 Fix withCredentials can not be set by app.config.json (#10897)
* AAE-34959 Run security options loader when alfresco-api-v2-loader.serfvice is initialized because on content app the app-config.loader is run after AlfrescoApiLoaderService.init and the callback function that should setDefaultSecurityOption is not executed

* AAE-34959 Provide SecurityOptionsLoaderService in root to fix No Provider error
2025-05-29 10:24:17 +02:00
Mykyta Maliarchuk d1e48f9c33 [ACS-9247] Extend library column context (#10894)
* [ACS-9247] extend library column context

* [ACS-9247] cr fix
2025-05-29 10:11:07 +02:00
Soumyajit Chakraborty 79163cbae0 AAE-34482 Fixing label and alignment issues in forms (#10898)
* AAE-34482 fixing label and alignment issues in forms

* AAE-34482 fixing margin issues

* AAE-34482 adding span inside mat-label

* AAE-34482 fixing units

* AAE-34482 removing unwanted unit

* AAE-34482 fixing unit

* AAE-34482 fixing native element class in unit tests
2025-05-28 23:20:17 +05:30
dependabot[bot]andEugenio Romano 5bbb5c5716 build(deps-dev): bump stylelint from 16.8.2 to 16.19.1 (#10874)
Bumps [stylelint](https://github.com/stylelint/stylelint) from 16.8.2 to 16.19.1.
- [Release notes](https://github.com/stylelint/stylelint/releases)
- [Changelog](https://github.com/stylelint/stylelint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/stylelint/stylelint/compare/16.8.2...16.19.1)

---
updated-dependencies:
- dependency-name: stylelint
  dependency-version: 16.19.1
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Eugenio Romano <eromano@users.noreply.github.com>
2025-05-26 14:02:58 -04:00
dependabot[bot] 0018cd7f8f build(deps): bump formidable from 3.5.2 to 3.5.4 (#10895)
Bumps [formidable](https://github.com/node-formidable/formidable) from 3.5.2 to 3.5.4.
- [Release notes](https://github.com/node-formidable/formidable/releases)
- [Changelog](https://github.com/node-formidable/formidable/blob/master/CHANGELOG.md)
- [Commits](https://github.com/node-formidable/formidable/commits)

---
updated-dependencies:
- dependency-name: formidable
  dependency-version: 3.5.4
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-26 15:35:14 +02:00
Michael Couné 06921783bf AAE-33907 Adds input for 'Open next task' checkbox (#10823)
* [AAE-33907] Adds input for 'Open next task' checkbox

* Adds input for 'Open next task' checkbox

Adds an input to the task screen component to determine whether the "Open next task" checkbox is checked by default.

Also, adds an output that emits an event when the state of the "Open next task" checkbox changes.

* [AAE-33907] added condition for isNextTaskCheckboxChecked

* [AAE-33907] added showNextTaskCheckbox property and moved condition

* Adds next task checkbox functionality.

* Adds support for next task navigation

* Enhances screen cloud component testing

* Makes openNextTask optional for complete task

* removed tests

* Cleans up unnecessary blank lines in spec file

* fixed unit test
2025-05-23 11:50:38 +02:00
Enrico Hilgendorf 1462560e6e AAE-35057 Change position of adf-cloud-form-content-card-fullscreen to relative (#10888) 2025-05-23 07:00:18 +02:00
dependabot[bot] ecbfae5648 build(deps): bump @babel/runtime and @angular-devkit/build-angular (#10885)
Bumps [@babel/runtime](https://github.com/babel/babel/tree/HEAD/packages/babel-runtime) to 7.26.10 and updates ancestor dependency [@angular-devkit/build-angular](https://github.com/angular/angular-cli). These dependencies need to be updated together.


Updates `@babel/runtime` from 7.25.0 to 7.26.10
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.26.10/packages/babel-runtime)

Updates `@angular-devkit/build-angular` from 18.2.14 to 18.2.19
- [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.14...18.2.19)

---
updated-dependencies:
- dependency-name: "@babel/runtime"
  dependency-version: 7.26.10
  dependency-type: indirect
- dependency-name: "@angular-devkit/build-angular"
  dependency-version: 18.2.19
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-22 12:43:00 +01:00
Tomasz Nastaly 413fce8cb7 AAE-34641 Refactor viewer-render loading (#10868) 2025-05-22 10:07:26 +02:00
Bartosz Sekula f2fa458fe5 AAE-33909 Ensure onProcessFinish event triggers when invoked from onFormLoaded event (#10867)
* AAE-33909 Ensure onProcessFinish event triggers when invoked from onFormLoaded event

* clean code

* fix unit tests

* update outcomes buttons

* update
2025-05-21 16:01:05 +02:00
Swetha Balasubramaniam e37ef279e4 AAE-32986 Add custom-form-widget process to simpleapp (#10881)
* Update simpleapp.zip

* Update

* Update date-fns-utils.spec.ts

* Changes
2025-05-21 08:20:58 +01:00
AleksanderSklorz 2cc3ba4d6b [ACS-7706] create tags return promise tag paging instead of tag entry (#10869)
* [ACS-7706] Corrected returned type for createTags function

* [ACS-7706] Updated documentation for createTags and fixed unit tests
2025-05-21 08:08:49 +02:00
tomasz hanajandEugenio Romano 3fea334468 [AAE-34479] added class for custom outcome button (#10882)
Co-authored-by: Eugenio Romano <eromano@users.noreply.github.com>
2025-05-20 21:52:43 -04:00
dependabot[bot] 541ae4a266 build(deps): bump zgosalvez/github-actions-ensure-sha-pinned-actions (#10876)
Bumps [zgosalvez/github-actions-ensure-sha-pinned-actions](https://github.com/zgosalvez/github-actions-ensure-sha-pinned-actions) from 3.0.24 to 3.0.25.
- [Release notes](https://github.com/zgosalvez/github-actions-ensure-sha-pinned-actions/releases)
- [Commits](https://github.com/zgosalvez/github-actions-ensure-sha-pinned-actions/compare/2d6823da4039243036c86d76f503c84e2ded2517...fc87bb5b5a97953d987372e74478de634726b3e5)

---
updated-dependencies:
- dependency-name: zgosalvez/github-actions-ensure-sha-pinned-actions
  dependency-version: 3.0.25
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-20 21:51:14 -04:00
dependabot[bot] 8633641235 build(deps): bump github/codeql-action from 3.28.17 to 3.28.18 (#10877)
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.28.17 to 3.28.18.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/60168efe1c415ce0f5521ea06d5c2062adbeed1b...ff0a06e83cb2de871e5a09832bc6a81e7276941f)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-version: 3.28.18
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-20 21:50:57 -04:00
dependabot[bot] 206d83e84a build(deps): bump Alfresco/alfresco-build-tools from 8.20.0 to 8.21.1 (#10878)
Bumps [Alfresco/alfresco-build-tools](https://github.com/alfresco/alfresco-build-tools) from 8.20.0 to 8.21.1.
- [Release notes](https://github.com/alfresco/alfresco-build-tools/releases)
- [Commits](https://github.com/alfresco/alfresco-build-tools/compare/8cd8c3798c79d10540e2876ad7cf2a5311cbd1ae...95f68dc050fba62b3331d9b47bc659526cdfb343)

---
updated-dependencies:
- dependency-name: Alfresco/alfresco-build-tools
  dependency-version: 8.21.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-20 21:50:38 -04:00
dependabot[bot] 4a1e4544f4 build(deps): bump Alfresco/alfresco-build-tools (#10879)
Bumps [Alfresco/alfresco-build-tools](https://github.com/alfresco/alfresco-build-tools) from 8.20.0 to 8.21.1.
- [Release notes](https://github.com/alfresco/alfresco-build-tools/releases)
- [Commits](https://github.com/alfresco/alfresco-build-tools/compare/8cd8c3798c79d10540e2876ad7cf2a5311cbd1ae...95f68dc050fba62b3331d9b47bc659526cdfb343)

---
updated-dependencies:
- dependency-name: Alfresco/alfresco-build-tools
  dependency-version: 8.21.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-20 21:50:18 -04:00
Alfresco BuildandCrowdin Bot f70ba30b46 New Crowdin translations by GitHub Action (#10884)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2025-05-20 21:49:59 -04:00
Tomasz Gnyp b3900b96ed AAE-34972 Test PR for adf link (#10861) 2025-05-20 15:57:02 +02:00
Soumyajit ChakrabortyandEugenio Romano 2fd960bf5c AAE-34885 Form with tabs has incomplete frame in preview (#10880)
* AAE-34885 Form tabs preview frame size and width fix

* AAE-34885 fixing form preview in modeling app

* AAE-34485 workspace-app form scroll fix

* AAE-34485 fixing margin issues on the modeling app form preview

* fixing width issues on preview

---------

Co-authored-by: Eugenio Romano <eromano@users.noreply.github.com>
2025-05-19 15:40:06 +05:30
Bartosz Sekula 8b47434c37 AAE-33052 Deprecate custom theme (#10870) 2025-05-16 15:28:08 +01:00
Denys VuikaandEugenio Romano fe53c5d5a8 MNT-25095 Update the documentation (#10864)
* update the documentation

* update the documentation

---------

Co-authored-by: Eugenio Romano <eromano@users.noreply.github.com>
2025-05-15 19:11:29 -04:00
dependabot[bot]andEugenio Romano deefa948cd build(deps): bump undici in /.github/actions/print-affected-libs (#10866)
Bumps [undici](https://github.com/nodejs/undici) from 5.28.5 to 5.29.0.
- [Release notes](https://github.com/nodejs/undici/releases)
- [Commits](https://github.com/nodejs/undici/compare/v5.28.5...v5.29.0)

---
updated-dependencies:
- dependency-name: undici
  dependency-version: 5.29.0
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Eugenio Romano <eromano@users.noreply.github.com>
2025-05-15 19:06:54 -04:00
Amedeo Lepore 051b82684f AAE-34959 Allow disabling withCredentials for the identity providers that disallow credentials (#10859) 2025-05-15 21:27:22 +02:00
Eugenio RomanoandEhsan Rezaei b4eee9d631 AAE-34675 Fix default selection required (#10860)
* fix default selection required

* rename test

* dropdown form field return object

* dropdown form field return object

* dropdown form field return object

* fix test

* Update lib/core/src/lib/form/components/widgets/core/form-field.model.spec.ts

Co-authored-by: Ehsan Rezaei <ehsan.rezaei@hyland.com>

* Update lib/core/src/lib/form/components/widgets/core/form-field.model.ts

Co-authored-by: Ehsan Rezaei <ehsan.rezaei@hyland.com>

---------

Co-authored-by: Ehsan Rezaei <ehsan.rezaei@hyland.com>
2025-05-15 21:26:17 +02:00
dependabot[bot] 9c6a1901c6 build(deps-dev): bump http-proxy-middleware from 2.0.7 to 2.0.9 (#10863)
Bumps [http-proxy-middleware](https://github.com/chimurai/http-proxy-middleware) from 2.0.7 to 2.0.9.
- [Release notes](https://github.com/chimurai/http-proxy-middleware/releases)
- [Changelog](https://github.com/chimurai/http-proxy-middleware/blob/v2.0.9/CHANGELOG.md)
- [Commits](https://github.com/chimurai/http-proxy-middleware/compare/v2.0.7...v2.0.9)

---
updated-dependencies:
- dependency-name: http-proxy-middleware
  dependency-version: 2.0.9
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-15 16:51:53 +01:00
Ruggero Corsaletti 3ad13d3e38 AAE-34992 Improve crowdin update strategy (#10865) 2025-05-15 16:51:47 +01:00
Wojciech DudaandEhsan Rezaei efd6e5b1b0 AAE-34826 Incorrect scale for rendered pdf documents (#10857)
* AAE-34826 Fix missing class for pdf viewer

* AAE-34826 Remove double initial scale

* AAE-34826 Fix missing scale

* AAE-34826 Remove unnecessary condition

* AAE-34826 Remove surplus id

* AAE-34826 converted scale to string

---------

Co-authored-by: Ehsan Rezaei <ehsan.rezaei@hyland.com>
2025-05-15 12:50:36 +01:00
6257510056 Ng18 migration (#10683)
* [MIGRATION] - Angular 18

* [ci:force][MIGRATION] - fixed Apollo new import

* [MIGRATION] - rebased to lastest

* [MIGRATION] - updated style to use still material 2 and postpone material migration

* [AAE-32974] - sync lock with version 8

* [AAE-33014] - Fixed m2 material issue

* Rebased to latest

* Rebased to latest

* [ACS-9159] Upgraded node version (#10782)

* [MIGRATION] - Added missing package

* [MIGRATION] - check if hte module mapping hide the warning

* [MIGRATION] - Readded wrongly removed package

* Upgrade TS

---------

Co-authored-by: AleksanderSklorz <115619721+AleksanderSklorz@users.noreply.github.com>
Co-authored-by: DominikIwanek <dominik.iwanek@hyland.com>
2025-05-15 12:33:07 +01:00
Ehsan Rezaei 28137d8a09 Revert "AAE-34641 Fix form loading when tab is changed (#10843)" (#10862)
This reverts commit 685bc387b5.
2025-05-15 12:07:07 +02:00
Alfresco BuildandCrowdin Bot 81822a119d New Crowdin translations by GitHub Action (#10854)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2025-05-14 16:48:50 -04:00
dependabot[bot]andEugenio Romano 43d0c00feb build(deps): bump formidable from 3.5.1 to 3.5.4 in /lib/cli (#10833)
Bumps [formidable](https://github.com/node-formidable/formidable) from 3.5.1 to 3.5.4.
- [Release notes](https://github.com/node-formidable/formidable/releases)
- [Changelog](https://github.com/node-formidable/formidable/blob/master/CHANGELOG.md)
- [Commits](https://github.com/node-formidable/formidable/commits)

---
updated-dependencies:
- dependency-name: formidable
  dependency-version: 3.5.4
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Eugenio Romano <eromano@users.noreply.github.com>
2025-05-14 16:47:05 -04:00
dependabot[bot] 7c127888db build(deps): bump Alfresco/alfresco-build-tools from 8.19.0 to 8.20.0 (#10839)
Bumps [Alfresco/alfresco-build-tools](https://github.com/alfresco/alfresco-build-tools) from 8.19.0 to 8.20.0.
- [Release notes](https://github.com/alfresco/alfresco-build-tools/releases)
- [Commits](https://github.com/alfresco/alfresco-build-tools/compare/09293790e3d482b6376a602f607e009ef1025698...8cd8c3798c79d10540e2876ad7cf2a5311cbd1ae)

---
updated-dependencies:
- dependency-name: Alfresco/alfresco-build-tools
  dependency-version: 8.20.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-13 21:40:59 +02:00
Alfresco BuildandCrowdin Bot d342643bd8 New Crowdin translations by GitHub Action (#10852)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2025-05-13 19:07:47 +02:00
Soumyajit Chakraborty 58a5732043 AAE-34888 fixing padding issues in form widgets (#10853) 2025-05-13 18:28:40 +05:30
Tomasz Nastaly 685bc387b5 AAE-34641 Fix form loading when tab is changed (#10843) 2025-05-13 12:55:45 +02:00
Alexander Puschkin f0c90594ca AAE-34731 Hide the open next task checkbox for the Start Process view (#10842)
* Fix the "open next task" checkbox is not showing anymore in the process start section

* Add test

* adjust description of the test

* revert the format changes

* prettier

* rebase changes fix

* prettier

* fix tests
2025-05-13 11:16:35 +02:00
dependabot[bot] 65f6e8f4de build(deps-dev): bump vite from 5.4.18 to 5.4.19 (#10851)
Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 5.4.18 to 5.4.19.
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/v5.4.19/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v5.4.19/packages/vite)

---
updated-dependencies:
- dependency-name: vite
  dependency-version: 5.4.19
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-12 11:36:55 -04:00
Soumyajit Chakraborty ec47d8eac8 AAE-34869 fixing padding issue (#10850) 2025-05-12 20:19:47 +05:30
dependabot[bot] ca6e3969d8 build(deps): bump slackapi/slack-github-action from 2.0.0 to 2.1.0 (#10848)
Bumps [slackapi/slack-github-action](https://github.com/slackapi/slack-github-action) from 2.0.0 to 2.1.0.
- [Release notes](https://github.com/slackapi/slack-github-action/releases)
- [Commits](https://github.com/slackapi/slack-github-action/compare/485a9d42d3a73031f12ec201c457e2162c45d02d...b0fa283ad8fea605de13dc3f449259339835fc52)

---
updated-dependencies:
- dependency-name: slackapi/slack-github-action
  dependency-version: 2.1.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-12 10:21:28 -04:00
dependabot[bot] b4e8e4943a build(deps): bump zgosalvez/github-actions-ensure-sha-pinned-actions (#10849)
Bumps [zgosalvez/github-actions-ensure-sha-pinned-actions](https://github.com/zgosalvez/github-actions-ensure-sha-pinned-actions) from 3.0.23 to 3.0.24.
- [Release notes](https://github.com/zgosalvez/github-actions-ensure-sha-pinned-actions/releases)
- [Commits](https://github.com/zgosalvez/github-actions-ensure-sha-pinned-actions/compare/4830be28ce81da52ec70d65c552a7403821d98d4...2d6823da4039243036c86d76f503c84e2ded2517)

---
updated-dependencies:
- dependency-name: zgosalvez/github-actions-ensure-sha-pinned-actions
  dependency-version: 3.0.24
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-12 10:20:40 -04:00
dependabot[bot] 71b8dae86d build(deps): bump Alfresco/alfresco-build-tools (#10837)
Bumps [Alfresco/alfresco-build-tools](https://github.com/alfresco/alfresco-build-tools) from 8.18.3 to 8.20.0.
- [Release notes](https://github.com/alfresco/alfresco-build-tools/releases)
- [Commits](https://github.com/alfresco/alfresco-build-tools/compare/247f59bac145315d38078f8954c763e0db57d5f1...8cd8c3798c79d10540e2876ad7cf2a5311cbd1ae)

---
updated-dependencies:
- dependency-name: Alfresco/alfresco-build-tools
  dependency-version: 8.20.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-12 10:18:33 -04:00
dependabot[bot] 84e5a0fa4b build(deps): bump github/codeql-action from 3.28.16 to 3.28.17 (#10838)
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.28.16 to 3.28.17.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/28deaeda66b76a05916b6923827895f2b14ab387...60168efe1c415ce0f5521ea06d5c2062adbeed1b)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-version: 3.28.17
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-12 10:18:11 -04:00
Ewelina Dikta f2845a36c6 [AAE-29434] Adding process with process variables to simpleapp (#10845) 2025-05-12 09:03:50 +02:00
Soumyajit Chakraborty acf9e3e11c Improvement/aae 30909 enhance user experience with tab navigation within the form (#10844)
* AAE-30909 tab-header fixed at the top

* AAE-30909 fixing widh and scrolling issues in workspace and studio-hxp
2025-05-08 19:23:30 +05:30
Soumyajit Chakraborty adeb82c137 AAE-34335 fix for styling discrepancies in form-widgets (#10841) 2025-05-06 18:33:28 +05:30
Wojciech Duda 48defa2b5f AAE-34594 Remove redundant scroll bar from form renderer (#10840) 2025-05-06 10:19:09 +01:00
Robert Duda 9ee0e5ee3e AAE-19688 Persist feature flag overrides in session storage (#10832)
* AAE-19688 Persist feature flag overrides in session storage

* unit tests
2025-04-30 16:59:50 +02:00
dependabot[bot] 61a1fb64bf build(deps): bump Alfresco/alfresco-build-tools from 8.18.1 to 8.18.2 (#10805)
Bumps [Alfresco/alfresco-build-tools](https://github.com/alfresco/alfresco-build-tools) from 8.18.1 to 8.18.2.
- [Release notes](https://github.com/alfresco/alfresco-build-tools/releases)
- [Commits](https://github.com/alfresco/alfresco-build-tools/compare/45bb8b664779b691f8a21d9fd49e360916726c11...e524cd3bb34350e247b0348cc8e4a6e0b4fd6c42)

---
updated-dependencies:
- dependency-name: Alfresco/alfresco-build-tools
  dependency-version: 8.18.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-30 14:38:26 +01:00
Fabian Kindgen 0f1200b5a2 AAE-34514 Disable next task checkbox for forms (#10824) 2025-04-29 09:48:27 +02:00
dependabot[bot] 2c438760ea build(deps): bump Alfresco/alfresco-build-tools from 8.18.1 to 8.18.3 (#10827)
Bumps [Alfresco/alfresco-build-tools](https://github.com/alfresco/alfresco-build-tools) from 8.18.1 to 8.18.3.
- [Release notes](https://github.com/alfresco/alfresco-build-tools/releases)
- [Commits](https://github.com/alfresco/alfresco-build-tools/compare/45bb8b664779b691f8a21d9fd49e360916726c11...247f59bac145315d38078f8954c763e0db57d5f1)

---
updated-dependencies:
- dependency-name: Alfresco/alfresco-build-tools
  dependency-version: 8.18.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-28 13:46:30 -04:00
dependabot[bot] 56adef9d92 build(deps): bump github/codeql-action from 3.28.15 to 3.28.16 (#10826)
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.28.15 to 3.28.16.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/45775bd8235c68ba998cffa5171334d58593da47...28deaeda66b76a05916b6923827895f2b14ab387)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-version: 3.28.16
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-28 13:45:58 -04:00
dependabot[bot] 60a8cdb8b8 build(deps): bump Alfresco/alfresco-build-tools (#10828)
Bumps [Alfresco/alfresco-build-tools](https://github.com/alfresco/alfresco-build-tools) from 8.18.2 to 8.18.3.
- [Release notes](https://github.com/alfresco/alfresco-build-tools/releases)
- [Commits](https://github.com/alfresco/alfresco-build-tools/compare/e524cd3bb34350e247b0348cc8e4a6e0b4fd6c42...247f59bac145315d38078f8954c763e0db57d5f1)

---
updated-dependencies:
- dependency-name: Alfresco/alfresco-build-tools
  dependency-version: 8.18.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-28 13:45:37 -04:00
Denys Vuika 997e82a6b0 AAE-34543 Remove unused mat-selectors (#10830) 2025-04-28 13:34:35 -04:00
Denys Vuika b1113c51a7 AAE-34493 Improved internal mat-selectors (#10829) 2025-04-28 11:17:36 -04:00
Fabian Kindgen dc35ef8a6f AAE-34478 Hide Open next task checkbox on claim screen (#10822) 2025-04-25 14:16:31 +02:00
tomasz hanaj cb220968cf [AAE-34481] Field error message has preserved space (#10820)
* [AAE-34481] field error message has preserved space

* [AAE-34481] updated class name among components

* [AAE-34481] removed redundant code
2025-04-25 10:45:24 +02:00
AleksanderSklorz 50ad04aeb3 [ACS-9564] Corrected models after change of Knowledge Retrieval answer structure (#10817)
* [ACS-9564] Corrected models after change of Knowledge Retrieval answer structure

* [ACS-9564] Changed id

* [ACS-9564] Fixed unit tests
2025-04-25 08:56:12 +02:00
Denys Vuika b1fca8dd4b fix datetime picker theming (#10821) 2025-04-24 11:53:05 -04:00
Wojciech Duda 3d598cd0c2 AAE-34470 Ignore content type of fetched pdfjs worker (#10818)
* AAE-34470 Ignore content type of fetched pdfjs worker

* AAE-34470 Fix units

* AAE-34470 Harness instances of pdfjs worker

* AAE-34470 Harness instances of pdfjs worker

* AAE-34470 Clean docs up

* AAE-34470 Synchronize ngOnChanges

* AAE-34470 Flush not tick

* AAE-34470 Revert modern bundle for pdf_viewer.mjs
2025-04-24 16:18:11 +01:00
Denys Vuika 7b67c7cf3a AAE-34458 Cleanup deprecated styles, bug fixes (#10819) 2025-04-24 10:10:46 -04:00
Ehsan Rezaei f34bbf59be AAE-33589 Get task variables when preferences are updated (#10813) 2025-04-23 15:58:28 +01:00
Denys Vuika 9575fe633b AAE-34439 Cleanup Styles (#10815)
* cleanup variables

* cleanup reference variables

* cleanup component variables

* cleanup color schemes

* cleanup color schemes

* mark todos with jira refs [ci:force]
2025-04-23 13:41:02 +01:00
Adam Świderski c6652f32b2 [ACS-959] [E2E] updated e2eapp v2 (#10816) 2025-04-23 11:06:39 +02:00
swapnil-verma-gl d6317a7b87 [ACS-9227] Fixed interactive controls must not be nested issue in datatable.component.html (#10681) 2025-04-22 18:37:31 -04:00
Denys Vuika d829d8eefb AAE-34390 Clean old theming files (#10800) 2025-04-22 18:30:30 -04:00
Maurizio Vitale 4cfda763b6 Simulate a change to upstream adf (#10814) 2025-04-22 20:07:45 +01:00
Tomasz Gnyp ff0885c265 AAE-34328 Remove additional space in amount widget currency (#10812) 2025-04-22 15:07:46 +02:00
dependabot[bot] 5c99139e4d build(deps): bump actions/setup-node from 4.3.0 to 4.4.0 (#10806)
Bumps [actions/setup-node](https://github.com/actions/setup-node) from 4.3.0 to 4.4.0.
- [Release notes](https://github.com/actions/setup-node/releases)
- [Commits](https://github.com/actions/setup-node/compare/cdca7365b2dadb8aad0a33bc7601856ffabcc48e...49933ea5288caeca8642d1e84afbd3f7d6820020)

---
updated-dependencies:
- dependency-name: actions/setup-node
  dependency-version: 4.4.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-22 13:46:14 +01:00
Maurizio Vitale 068bcc89d3 Create a git tag for every release (#10811) 2025-04-22 13:25:50 +01:00
Adam Świderski 69f92bcc61 [ACS-9565] Updated e2e application (#10810) 2025-04-22 13:57:03 +02:00
dependabot[bot] 6a04484fa4 build(deps): bump Alfresco/alfresco-build-tools (#10808)
Bumps [Alfresco/alfresco-build-tools](https://github.com/alfresco/alfresco-build-tools) from 8.18.1 to 8.18.2.
- [Release notes](https://github.com/alfresco/alfresco-build-tools/releases)
- [Commits](https://github.com/alfresco/alfresco-build-tools/compare/45bb8b664779b691f8a21d9fd49e360916726c11...e524cd3bb34350e247b0348cc8e4a6e0b4fd6c42)

---
updated-dependencies:
- dependency-name: Alfresco/alfresco-build-tools
  dependency-version: 8.18.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-22 11:56:41 +01:00
dependabot[bot] 76309e3e7a build(deps): bump actions/setup-node in /.github/actions/setup (#10807)
Bumps [actions/setup-node](https://github.com/actions/setup-node) from 4.3.0 to 4.4.0.
- [Release notes](https://github.com/actions/setup-node/releases)
- [Commits](https://github.com/actions/setup-node/compare/cdca7365b2dadb8aad0a33bc7601856ffabcc48e...49933ea5288caeca8642d1e84afbd3f7d6820020)

---
updated-dependencies:
- dependency-name: actions/setup-node
  dependency-version: 4.4.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-22 10:46:28 +01:00
Vito Albano d0b2915c88 Revert "AAE-29010 GH actions rerun after approval (#10772) (#10774)" (#10809)
This reverts commit f6c446498a.
2025-04-22 10:33:09 +01:00
Wojciech Duda fdd4f6c081 AAE-22975 update to the latest version of pdfjs-dist library (#10780)
* AAE-30877 squash-merged improvement/AAE-30877-update-package-pdfjs-dist

* AAE-30877 statically import pdf_viewer

* AAE-30877 fix failing worker load

* AAE-22975 attempt without excessive logs

* AAE-22975 remove pdf_viewer from karma includes

* AAE-22975 remove incorrect firstValueFrom

* AAE-22975 await rendered event callback

* AAE-22975 change pdf mock code

* AAE-22975 change pdf mock code

* AAE-22975 mock pdfjs-dist package in tests to improve performance

* AAE-22975 fix pagesLoaded test

* AAE-22975 fix insights tests

* AAE-22975 un-focus pdf-viewer tests, remove logs

* AAE-22975 add defer block

* AAE-22975 add pdfjsLib injection token

* AAE-22975 remove defer block

* AAE-22975 change pdfjs import path

* AAE-22975 change pdfjsviewer import path

* AAE-22975 limit usage of direct PDFViewer

* AAE-22975 cleanup
2025-04-22 10:05:44 +02:00
Mykyta Maliarchuk 0dc45e95af [MNT-24715] App with APS does not show display value of dynamic table (#10799)
* [MNT-24715] App with APS does not show display value of dynamic table

* [MNT-24715] fix linting
2025-04-18 10:38:46 +02:00
Tomasz Gnyp 1f73f7fe40 AAE-33955 Add placeholder for data table widget (preview) (#10796)
* AAE-33955 Add placeholder for data table widget (preview)

* add unit test
2025-04-17 15:53:03 +02:00
MichalKinas 6fb9474d46 [ACS-9552] Add obsolete task list filters migration (#10798)
* [ACS-9552] Add obsolete task list filters migration

* [ACS-9552] Add missing unit tests

* [ACS-9552] CR fixes
2025-04-17 15:35:48 +02:00
dependabot[bot] ca90461345 build(deps): bump @babel/runtime and @angular-devkit/build-angular (#10792)
Bumps [@babel/runtime](https://github.com/babel/babel/tree/HEAD/packages/babel-runtime) to 7.26.10 and updates ancestor dependency [@angular-devkit/build-angular](https://github.com/angular/angular-cli). These dependencies need to be updated together.


Updates `@babel/runtime` from 7.23.7 to 7.26.10
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.26.10/packages/babel-runtime)

Updates `@angular-devkit/build-angular` from 17.1.4 to 17.3.16
- [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/17.1.4...17.3.16)

---
updated-dependencies:
- dependency-name: "@babel/runtime"
  dependency-version: 7.26.10
  dependency-type: indirect
- dependency-name: "@angular-devkit/build-angular"
  dependency-version: 17.3.16
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-16 11:47:24 -04:00
Alfresco BuildandCrowdin Bot 3e9ac6687f New Crowdin translations by GitHub Action (#10794)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2025-04-16 11:46:25 -04:00
Anna Karwatka 014fb9cfa8 AAE-34100 Add group-with-sections process to simpleapp (#10791) 2025-04-16 07:24:34 +02:00
dependabot[bot] 677e21d004 build(deps): bump github/codeql-action from 3.28.13 to 3.28.15 (#10789)
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.28.13 to 3.28.15.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/1b549b9259bda1cb5ddde3b41741a82a2d15a841...45775bd8235c68ba998cffa5171334d58593da47)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-version: 3.28.15
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-15 12:27:37 +01:00
Mykyta Maliarchuk a426338f94 [MNT-24950] Fix process file preview button state (#10790)
* [MNT-24950] Fix process file preview button state

* [MNT-24950] cr fix

* [MNT-24950] fix unit tests error
2025-04-15 10:05:55 +02:00
dominikiwanekhyland c8f9bd21ea [ACS-9454] Create upgrade guide for ADF 7.0.0 (#10779) 2025-04-15 07:24:12 +02:00
Alfresco BuildandCrowdin Bot d09b8daa3a New Crowdin translations by GitHub Action (#10777)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2025-04-14 10:04:28 +01:00
Jonas Wollweber baf0e4552e AAE-34135 add confirmation (#10783) 2025-04-14 06:42:37 +02:00
Jonas Wollweber 659805ab20 AAE-33090 Open Next Task Checkbox (#10757)
* [AAE-33090] Add optional checkbox for 'open next task' feature

* [AAE-33090] move translation to LABEL property

* [33090] add unit tests

* add tests for checkbox value

* [AAE-33090] remove some comments

* [AAE-33090] update documentation

* AAE-33090 kind of a typo

* AAE-33090 remove all comments
2025-04-09 10:14:06 +02:00
Alexander Puschkin f6c446498a AAE-29010 GH actions rerun after approval (#10772) (#10774)
* Add rerun function after first approval is there.

* Adjust pull request with github pr number as var

* Add check label step to check "do not merge" label

* cleanup
2025-04-09 07:16:26 +02:00
Wojciech Duda 137088d4f6 AAE-33939 Angular migration documentation (#10775)
* AAE-33939 15 to 16 first version for feedback

* AAE-33939 16 to 17 guide
2025-04-08 15:14:34 +01:00
dominikiwanekhyland 8eef4e6eec [ACS-9440] Language in lang attribute is not changed after changing language (#10776) 2025-04-08 13:25:12 +02:00
Mykyta Maliarchuk 82175bad80 [ACS-9435] Resolve a11y issues for 'Add use/group' dialog (#10773) 2025-04-08 10:01:39 +02:00
dependabot[bot] 2e75c164fc build(deps): bump Alfresco/alfresco-build-tools (#10770)
Bumps [Alfresco/alfresco-build-tools](https://github.com/alfresco/alfresco-build-tools) from 8.18.0 to 8.18.1.
- [Release notes](https://github.com/alfresco/alfresco-build-tools/releases)
- [Commits](https://github.com/alfresco/alfresco-build-tools/compare/a3d5beb67a8b8d96398435e01686a9a9185380ab...45bb8b664779b691f8a21d9fd49e360916726c11)

---
updated-dependencies:
- dependency-name: Alfresco/alfresco-build-tools
  dependency-version: 8.18.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-08 08:56:20 +01:00
dependabot[bot] 8c51134ef2 build(deps): bump Alfresco/alfresco-build-tools from 8.18.0 to 8.18.1 (#10769)
Bumps [Alfresco/alfresco-build-tools](https://github.com/alfresco/alfresco-build-tools) from 8.18.0 to 8.18.1.
- [Release notes](https://github.com/alfresco/alfresco-build-tools/releases)
- [Commits](https://github.com/alfresco/alfresco-build-tools/compare/a3d5beb67a8b8d96398435e01686a9a9185380ab...45bb8b664779b691f8a21d9fd49e360916726c11)

---
updated-dependencies:
- dependency-name: Alfresco/alfresco-build-tools
  dependency-version: 8.18.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-08 08:55:39 +01:00
dependabot[bot] 406192976a build(deps): bump crowdin/github-action from 2.6.1 to 2.7.0 (#10768)
Bumps [crowdin/github-action](https://github.com/crowdin/github-action) from 2.6.1 to 2.7.0.
- [Release notes](https://github.com/crowdin/github-action/releases)
- [Commits](https://github.com/crowdin/github-action/compare/2cc7959c565767d6bc118118d6df3b63bf361370...b8012bd5491b8aa8578b73ab5b5f5e7c94aaa6e2)

---
updated-dependencies:
- dependency-name: crowdin/github-action
  dependency-version: 2.7.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-08 08:55:08 +01:00
Mykyta Maliarchuk cd63f67e0a [ACS-5184] Show progress spinner on file navigation (#10596)
* [ACS-5184] show progress spinner on file navigation

* [ACS-5184] show spinner unitl content is ready

* [ACS-5184] unit test fix

* [ACS-5184] cr fix

* [ACS-5184] spelling error fix
2025-04-07 14:13:34 +02:00
tomasz hanaj 2d21340947 [AAE-33096] added rootProcessInstanceId to dynamic component (#10762) 2025-04-03 12:13:16 +02:00
dependabot[bot] 500d4be4a3 build(deps-dev): bump @nx/storybook from 17.3.1 to 20.6.4 (#10753)
Bumps [@nx/storybook](https://github.com/nrwl/nx/tree/HEAD/packages/storybook) from 17.3.1 to 20.6.4.
- [Release notes](https://github.com/nrwl/nx/releases)
- [Commits](https://github.com/nrwl/nx/commits/20.6.4/packages/storybook)

---
updated-dependencies:
- dependency-name: "@nx/storybook"
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-02 18:19:32 +01:00
dependabot[bot] a58a6a5369 build(deps): bump zgosalvez/github-actions-ensure-sha-pinned-actions (#10755)
Bumps [zgosalvez/github-actions-ensure-sha-pinned-actions](https://github.com/zgosalvez/github-actions-ensure-sha-pinned-actions) from 3.0.22 to 3.0.23.
- [Release notes](https://github.com/zgosalvez/github-actions-ensure-sha-pinned-actions/releases)
- [Commits](https://github.com/zgosalvez/github-actions-ensure-sha-pinned-actions/compare/25ed13d0628a1601b4b44048e63cc4328ed03633...4830be28ce81da52ec70d65c552a7403821d98d4)

---
updated-dependencies:
- dependency-name: zgosalvez/github-actions-ensure-sha-pinned-actions
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-02 18:18:09 +01:00
dependabot[bot] 5e9ef9c8a9 build(deps): bump github/codeql-action from 3.28.12 to 3.28.13 (#10756)
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.28.12 to 3.28.13.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/5f8171a638ada777af81d42b55959a643bb29017...1b549b9259bda1cb5ddde3b41741a82a2d15a841)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-02 18:15:39 +01:00
Mykyta Maliarchuk 8e0ea373f0 [ACS-9406] Add getContentRenditionTypePreview to process-content service (#10743)
* [ACS-9406] Add getContentRenditionTypePreview to process-content service

* [ACS-9406] remove extra space

* [ACS-9406] fix unit tests

* [ACS-9406] fix unit tests

* [ACS-9406] cr fixes
2025-04-02 14:07:20 +02:00
Alfresco BuildandCrowdin Bot c85245b241 New Crowdin translations by GitHub Action (#10759)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2025-04-01 21:28:24 +01:00
Robert Duda 90f5951cd8 AAE-33449 HXPMNT-748 Hidden dropdown validation (#10760) 2025-04-01 14:49:23 +02:00
Ehsan Rezaei 555e6c027f AAE-33025 Updated process definition type to support constant values (#10751) 2025-03-28 16:50:51 +01:00
Alfresco BuildandCrowdin Bot 28d8052726 New Crowdin translations by GitHub Action (#10748)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2025-03-27 15:22:28 +00:00
Bartosz Sekula 142c6ae754 AAE-33340 Async Form Enrichment - Spinner doesnt hide on process completion (#10749) 2025-03-27 14:59:09 +01:00
Tomasz Gnyp abaf7df9c6 AAE-33007 Display empty data table without error (#10744)
* AAE-33007 Display empty data table without error

* update translation key
2025-03-26 16:44:49 +01:00
Bartosz Sekula 9bbbc8193d AAE-33137 Asynchronous Form Enrichment does Not Populate Date Fields (#10746)
* AAE-33137 Asynchronous Form Enrichment does Not Populate Date Fields

* fix date time as well
2025-03-25 17:30:40 +01:00
dependabot[bot] 3c2d890a1e build(deps-dev): bump @nx/node from 17.3.1 to 20.6.2 (#10735)
Bumps [@nx/node](https://github.com/nrwl/nx/tree/HEAD/packages/node) from 17.3.1 to 20.6.2.
- [Release notes](https://github.com/nrwl/nx/releases)
- [Commits](https://github.com/nrwl/nx/commits/20.6.2/packages/node)

---
updated-dependencies:
- dependency-name: "@nx/node"
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-24 21:45:25 +00:00
dependabot[bot] 3743dc6fba build(deps): bump Alfresco/alfresco-build-tools (#10737)
Bumps [Alfresco/alfresco-build-tools](https://github.com/alfresco/alfresco-build-tools) from 8.16.0 to 8.18.0.
- [Release notes](https://github.com/alfresco/alfresco-build-tools/releases)
- [Commits](https://github.com/alfresco/alfresco-build-tools/compare/c1236aee36bb9b35c5972819fcf8a4d07572e6cd...a3d5beb67a8b8d96398435e01686a9a9185380ab)

---
updated-dependencies:
- dependency-name: Alfresco/alfresco-build-tools
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-24 11:26:51 +01:00
dependabot[bot] 2114ae75a1 build(deps): bump actions/setup-node in /.github/actions/setup (#10738)
Bumps [actions/setup-node](https://github.com/actions/setup-node) from 4.2.0 to 4.3.0.
- [Release notes](https://github.com/actions/setup-node/releases)
- [Commits](https://github.com/actions/setup-node/compare/1d0ff469b7ec7b3cb9d8673fde0c81c44821de2a...cdca7365b2dadb8aad0a33bc7601856ffabcc48e)

---
updated-dependencies:
- dependency-name: actions/setup-node
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-24 11:26:37 +01:00
dependabot[bot] 730033b78e build(deps): bump actions/cache in /.github/actions/setup (#10739)
Bumps [actions/cache](https://github.com/actions/cache) from 4.2.2 to 4.2.3.
- [Release notes](https://github.com/actions/cache/releases)
- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)
- [Commits](https://github.com/actions/cache/compare/d4323d4df104b026a6aa633fdb11d772146be0bf...5a3ec84eff668545956fd18022155c47e93e2684)

---
updated-dependencies:
- dependency-name: actions/cache
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-24 11:26:21 +01:00
dependabot[bot] 5f7d47fd9f build(deps): bump github/codeql-action from 3.28.11 to 3.28.12 (#10740)
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.28.11 to 3.28.12.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/6bb031afdd8eb862ea3fc1848194185e076637e5...5f8171a638ada777af81d42b55959a643bb29017)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-24 11:26:05 +01:00
dependabot[bot] 0597fbded0 build(deps): bump Alfresco/alfresco-build-tools from 8.16.0 to 8.18.0 (#10741)
Bumps [Alfresco/alfresco-build-tools](https://github.com/alfresco/alfresco-build-tools) from 8.16.0 to 8.18.0.
- [Release notes](https://github.com/alfresco/alfresco-build-tools/releases)
- [Commits](https://github.com/alfresco/alfresco-build-tools/compare/c1236aee36bb9b35c5972819fcf8a4d07572e6cd...a3d5beb67a8b8d96398435e01686a9a9185380ab)

---
updated-dependencies:
- dependency-name: Alfresco/alfresco-build-tools
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-24 11:25:52 +01:00
dependabot[bot] 3415472110 build(deps): bump actions/setup-node from 4.2.0 to 4.3.0 (#10742)
Bumps [actions/setup-node](https://github.com/actions/setup-node) from 4.2.0 to 4.3.0.
- [Release notes](https://github.com/actions/setup-node/releases)
- [Commits](https://github.com/actions/setup-node/compare/1d0ff469b7ec7b3cb9d8673fde0c81c44821de2a...cdca7365b2dadb8aad0a33bc7601856ffabcc48e)

---
updated-dependencies:
- dependency-name: actions/setup-node
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-24 11:25:39 +01:00
Denys Vuika eb2f543822 upgrade guide (#10732) 2025-03-21 13:19:04 -04:00
Michaela 6703b8b7da AAE-32763 Custom column visibility is not persistent after refresh (#10728)
* [AAE-32763] fixed retrieving preferences from local storage

* [AAE-32763] added a test

* [AAE-32763] Reverted to old implementation

* [AAE-32763] renamed test

* [AAE-32763] Be able to use getitems from local storage in the same way as cloud storage

* [AAE-32763] added more tests
2025-03-21 08:47:38 +01:00
Eugenio Romano 3475098f32 fix undefiend tooltip (#10731) 2025-03-20 16:33:59 +01:00
Alfresco BuildandCrowdin Bot 4249a856c9 New Crowdin translations by GitHub Action (#10730)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2025-03-20 14:12:44 +00:00
dependabot[bot] ce90117e28 build(deps-dev): bump @nx/eslint-plugin from 17.3.1 to 20.6.0 (#10723)
Bumps [@nx/eslint-plugin](https://github.com/nrwl/nx/tree/HEAD/packages/eslint-plugin) from 17.3.1 to 20.6.0.
- [Release notes](https://github.com/nrwl/nx/releases)
- [Commits](https://github.com/nrwl/nx/commits/20.6.0/packages/eslint-plugin)

---
updated-dependencies:
- dependency-name: "@nx/eslint-plugin"
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-20 11:20:27 +00:00
AleksanderSklorz 083755b41a [ACS-5190] document name text alignement and long name trim issue (#10715)
* [ACS-5190] Fixed trimming issue

* [ACS-5190] Unit tests

* [ACS-5190] Prevent issues when filename is not defined
2025-03-19 08:24:10 +01:00
AleksanderSklorz 015ce8a99e [ACS-9375] Transparent background for hovered spinner (#10691) 2025-03-19 08:23:10 +01:00
Ehsan Rezaei b643054a15 AAE-32999 Removed subscriptions-transport-ws feature flag (#10727)
* AAE-32999 Removed subscriptions-transport-ws feature flag

* AAE-32999 Fixing unit test

* AAE-32999 Fixing unit test

* AAE-32999 Fixing unit test
2025-03-18 19:37:58 +01:00
MichalKinas 838b3e78b7 [ACS-9398] Add snackbar notifications for favorite node directive (#10714)
* [ACS-9398] Add snackbar notifications for favorite node directive

* [ACS-9398] Fix sonarqube issues

* [ACS-9398] Add snackbar notifications for library favorite directive
2025-03-18 08:33:22 +01:00
MichalKinas e8d1328244 Post-release version bump (#10726)
* Post-release version bump

* Reset cache
2025-03-17 17:03:58 +01:00
1198 changed files with 25875 additions and 26397 deletions
+23
View File
@@ -0,0 +1,23 @@
name: Git tag creation
description: 'Creates a git tag in the specified repository for a given commit.'
inputs:
tagName:
description: 'The github tag to be created'
required: true
releaseNote:
description: 'The github release note to be created'
required: false
runs:
using: 'composite'
steps:
- uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1
name: Create git tag
env:
TAG_NAME: ${{ inputs.tagName }}
RELEASE_NOTE: ${{ inputs.releaseNote }}
with:
script: |
const createGitTag = require('./.github/actions/create-git-tag/create-git-tag.js');
await createGitTag({ core, github, context, tagName: process.env.TAG_NAME });
@@ -0,0 +1,42 @@
/*!
* @license
* Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
module.exports = async ({ github, context, core, tagName }) => {
const tagSHA = context.payload?.after ?? context.sha;
core.notice(`Creating tag with title: ${tagName}, and SHA: ${tagSHA}`);
const createdTag = await github.rest.git.createTag({
owner: context.repo.owner,
repo: context.repo.repo,
tag: tagName,
message: 'Release note',
object: tagSHA,
type: 'commit'
});
const createdRef = await github.rest.git.createRef({
owner: context.repo.owner,
repo: context.repo.repo,
ref: 'refs/tags/' + tagName,
sha: createdTag.data.sha
});
if (createdRef.status === 201) {
core.notice(`Tag ${tagName} was created successfully`);
}
};
@@ -1,21 +0,0 @@
name: "print affected libs"
description: "Retrive the affected libs based on the based and head input"
inputs:
base:
description: 'the base sha'
required: true
type: string
default: main
head:
description: 'the head sha'
required: true
type: string
default: HEAD
output:
affected:
description: 'the affected libs of the repo'
affected_is_empty:
description: 'true or false accondingly'
runs:
using: "node16"
main: 'dist/index.js'
File diff suppressed because it is too large Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
-521
View File
@@ -1,521 +0,0 @@
{
"name": "print-affected-libs",
"version": "1.0.0",
"lockfileVersion": 2,
"requires": true,
"packages": {
"": {
"name": "print-affected-libs",
"version": "1.0.0",
"license": "ISC",
"dependencies": {
"@actions/core": "^1.10.0",
"@actions/exec": "^1.1.1",
"@actions/github": "^6.0.0"
},
"devDependencies": {
"@vercel/ncc": "^0.36.1"
}
},
"node_modules/@actions/core": {
"version": "1.10.0",
"resolved": "https://registry.npmjs.org/@actions/core/-/core-1.10.0.tgz",
"integrity": "sha512-2aZDDa3zrrZbP5ZYg159sNoLRb61nQ7awl5pSvIq5Qpj81vwDzdMRKzkWJGJuwVvWpvZKx7vspJALyvaaIQyug==",
"dependencies": {
"@actions/http-client": "^2.0.1",
"uuid": "^8.3.2"
}
},
"node_modules/@actions/exec": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/@actions/exec/-/exec-1.1.1.tgz",
"integrity": "sha512-+sCcHHbVdk93a0XT19ECtO/gIXoxvdsgQLzb2fE2/5sIZmWQuluYyjPQtrtTHdU1YzTZ7bAPN4sITq2xi1679w==",
"dependencies": {
"@actions/io": "^1.0.1"
}
},
"node_modules/@actions/github": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/@actions/github/-/github-6.0.0.tgz",
"integrity": "sha512-alScpSVnYmjNEXboZjarjukQEzgCRmjMv6Xj47fsdnqGS73bjJNDpiiXmp8jr0UZLdUB6d9jW63IcmddUP+l0g==",
"license": "MIT",
"dependencies": {
"@actions/http-client": "^2.2.0",
"@octokit/core": "^5.0.1",
"@octokit/plugin-paginate-rest": "^9.0.0",
"@octokit/plugin-rest-endpoint-methods": "^10.0.0"
}
},
"node_modules/@actions/http-client": {
"version": "2.2.3",
"resolved": "https://registry.npmjs.org/@actions/http-client/-/http-client-2.2.3.tgz",
"integrity": "sha512-mx8hyJi/hjFvbPokCg4uRd4ZX78t+YyRPtnKWwIl+RzNaVuFpQHfmlGVfsKEJN8LwTCvL+DfVgAM04XaHkm6bA==",
"license": "MIT",
"dependencies": {
"tunnel": "^0.0.6",
"undici": "^5.25.4"
}
},
"node_modules/@actions/io": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/@actions/io/-/io-1.1.3.tgz",
"integrity": "sha512-wi9JjgKLYS7U/z8PPbco+PvTb/nRWjeoFlJ1Qer83k/3C5PHQi28hiVdeE2kHXmIL99mQFawx8qt/JPjZilJ8Q=="
},
"node_modules/@fastify/busboy": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.1.1.tgz",
"integrity": "sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==",
"license": "MIT",
"engines": {
"node": ">=14"
}
},
"node_modules/@octokit/auth-token": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-4.0.0.tgz",
"integrity": "sha512-tY/msAuJo6ARbK6SPIxZrPBms3xPbfwBrulZe0Wtr/DIY9lje2HeV1uoebShn6mx7SjCHif6EjMvoREj+gZ+SA==",
"license": "MIT",
"engines": {
"node": ">= 18"
}
},
"node_modules/@octokit/core": {
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/@octokit/core/-/core-5.2.0.tgz",
"integrity": "sha512-1LFfa/qnMQvEOAdzlQymH0ulepxbxnCYAKJZfMci/5XJyIHWgEYnDmgnKakbTh7CH2tFQ5O60oYDvns4i9RAIg==",
"license": "MIT",
"dependencies": {
"@octokit/auth-token": "^4.0.0",
"@octokit/graphql": "^7.1.0",
"@octokit/request": "^8.3.1",
"@octokit/request-error": "^5.1.0",
"@octokit/types": "^13.0.0",
"before-after-hook": "^2.2.0",
"universal-user-agent": "^6.0.0"
},
"engines": {
"node": ">= 18"
}
},
"node_modules/@octokit/endpoint": {
"version": "9.0.6",
"resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-9.0.6.tgz",
"integrity": "sha512-H1fNTMA57HbkFESSt3Y9+FBICv+0jFceJFPWDePYlR/iMGrwM5ph+Dd4XRQs+8X+PUFURLQgX9ChPfhJ/1uNQw==",
"license": "MIT",
"dependencies": {
"@octokit/types": "^13.1.0",
"universal-user-agent": "^6.0.0"
},
"engines": {
"node": ">= 18"
}
},
"node_modules/@octokit/graphql": {
"version": "7.1.0",
"resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-7.1.0.tgz",
"integrity": "sha512-r+oZUH7aMFui1ypZnAvZmn0KSqAUgE1/tUXIWaqUCa1758ts/Jio84GZuzsvUkme98kv0WFY8//n0J1Z+vsIsQ==",
"license": "MIT",
"dependencies": {
"@octokit/request": "^8.3.0",
"@octokit/types": "^13.0.0",
"universal-user-agent": "^6.0.0"
},
"engines": {
"node": ">= 18"
}
},
"node_modules/@octokit/openapi-types": {
"version": "23.0.1",
"resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-23.0.1.tgz",
"integrity": "sha512-izFjMJ1sir0jn0ldEKhZ7xegCTj/ObmEDlEfpFrx4k/JyZSMRHbO3/rBwgE7f3m2DHt+RrNGIVw4wSmwnm3t/g==",
"license": "MIT"
},
"node_modules/@octokit/plugin-paginate-rest": {
"version": "9.2.2",
"resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-9.2.2.tgz",
"integrity": "sha512-u3KYkGF7GcZnSD/3UP0S7K5XUFT2FkOQdcfXZGZQPGv3lm4F2Xbf71lvjldr8c1H3nNbF+33cLEkWYbokGWqiQ==",
"license": "MIT",
"dependencies": {
"@octokit/types": "^12.6.0"
},
"engines": {
"node": ">= 18"
},
"peerDependencies": {
"@octokit/core": "5"
}
},
"node_modules/@octokit/plugin-paginate-rest/node_modules/@octokit/openapi-types": {
"version": "20.0.0",
"resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-20.0.0.tgz",
"integrity": "sha512-EtqRBEjp1dL/15V7WiX5LJMIxxkdiGJnabzYx5Apx4FkQIFgAfKumXeYAqqJCj1s+BMX4cPFIFC4OLCR6stlnA==",
"license": "MIT"
},
"node_modules/@octokit/plugin-paginate-rest/node_modules/@octokit/types": {
"version": "12.6.0",
"resolved": "https://registry.npmjs.org/@octokit/types/-/types-12.6.0.tgz",
"integrity": "sha512-1rhSOfRa6H9w4YwK0yrf5faDaDTb+yLyBUKOCV4xtCDB5VmIPqd/v9yr9o6SAzOAlRxMiRiCic6JVM1/kunVkw==",
"license": "MIT",
"dependencies": {
"@octokit/openapi-types": "^20.0.0"
}
},
"node_modules/@octokit/plugin-rest-endpoint-methods": {
"version": "10.4.1",
"resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-10.4.1.tgz",
"integrity": "sha512-xV1b+ceKV9KytQe3zCVqjg+8GTGfDYwaT1ATU5isiUyVtlVAO3HNdzpS4sr4GBx4hxQ46s7ITtZrAsxG22+rVg==",
"license": "MIT",
"dependencies": {
"@octokit/types": "^12.6.0"
},
"engines": {
"node": ">= 18"
},
"peerDependencies": {
"@octokit/core": "5"
}
},
"node_modules/@octokit/plugin-rest-endpoint-methods/node_modules/@octokit/openapi-types": {
"version": "20.0.0",
"resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-20.0.0.tgz",
"integrity": "sha512-EtqRBEjp1dL/15V7WiX5LJMIxxkdiGJnabzYx5Apx4FkQIFgAfKumXeYAqqJCj1s+BMX4cPFIFC4OLCR6stlnA==",
"license": "MIT"
},
"node_modules/@octokit/plugin-rest-endpoint-methods/node_modules/@octokit/types": {
"version": "12.6.0",
"resolved": "https://registry.npmjs.org/@octokit/types/-/types-12.6.0.tgz",
"integrity": "sha512-1rhSOfRa6H9w4YwK0yrf5faDaDTb+yLyBUKOCV4xtCDB5VmIPqd/v9yr9o6SAzOAlRxMiRiCic6JVM1/kunVkw==",
"license": "MIT",
"dependencies": {
"@octokit/openapi-types": "^20.0.0"
}
},
"node_modules/@octokit/request": {
"version": "8.4.0",
"resolved": "https://registry.npmjs.org/@octokit/request/-/request-8.4.0.tgz",
"integrity": "sha512-9Bb014e+m2TgBeEJGEbdplMVWwPmL1FPtggHQRkV+WVsMggPtEkLKPlcVYm/o8xKLkpJ7B+6N8WfQMtDLX2Dpw==",
"license": "MIT",
"dependencies": {
"@octokit/endpoint": "^9.0.1",
"@octokit/request-error": "^5.1.0",
"@octokit/types": "^13.1.0",
"universal-user-agent": "^6.0.0"
},
"engines": {
"node": ">= 18"
}
},
"node_modules/@octokit/request-error": {
"version": "5.1.1",
"resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-5.1.1.tgz",
"integrity": "sha512-v9iyEQJH6ZntoENr9/yXxjuezh4My67CBSu9r6Ve/05Iu5gNgnisNWOsoJHTP6k0Rr0+HQIpnH+kyammu90q/g==",
"license": "MIT",
"dependencies": {
"@octokit/types": "^13.1.0",
"deprecation": "^2.0.0",
"once": "^1.4.0"
},
"engines": {
"node": ">= 18"
}
},
"node_modules/@octokit/types": {
"version": "13.8.0",
"resolved": "https://registry.npmjs.org/@octokit/types/-/types-13.8.0.tgz",
"integrity": "sha512-x7DjTIbEpEWXK99DMd01QfWy0hd5h4EN+Q7shkdKds3otGQP+oWE/y0A76i1OvH9fygo4ddvNf7ZvF0t78P98A==",
"license": "MIT",
"dependencies": {
"@octokit/openapi-types": "^23.0.1"
}
},
"node_modules/@vercel/ncc": {
"version": "0.36.1",
"resolved": "https://registry.npmjs.org/@vercel/ncc/-/ncc-0.36.1.tgz",
"integrity": "sha512-S4cL7Taa9yb5qbv+6wLgiKVZ03Qfkc4jGRuiUQMQ8HGBD5pcNRnHeYM33zBvJE4/zJGjJJ8GScB+WmTsn9mORw==",
"dev": true,
"bin": {
"ncc": "dist/ncc/cli.js"
}
},
"node_modules/before-after-hook": {
"version": "2.2.3",
"resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.3.tgz",
"integrity": "sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==",
"license": "Apache-2.0"
},
"node_modules/deprecation": {
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz",
"integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==",
"license": "ISC"
},
"node_modules/once": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
"integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
"license": "ISC",
"dependencies": {
"wrappy": "1"
}
},
"node_modules/tunnel": {
"version": "0.0.6",
"resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz",
"integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==",
"engines": {
"node": ">=0.6.11 <=0.7.0 || >=0.7.3"
}
},
"node_modules/undici": {
"version": "5.28.5",
"resolved": "https://registry.npmjs.org/undici/-/undici-5.28.5.tgz",
"integrity": "sha512-zICwjrDrcrUE0pyyJc1I2QzBkLM8FINsgOrt6WjA+BgajVq9Nxu2PbFFXUrAggLfDXlZGZBVZYw7WNV5KiBiBA==",
"license": "MIT",
"dependencies": {
"@fastify/busboy": "^2.0.0"
},
"engines": {
"node": ">=14.0"
}
},
"node_modules/universal-user-agent": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.1.tgz",
"integrity": "sha512-yCzhz6FN2wU1NiiQRogkTQszlQSlpWaw8SvVegAc+bDxbzHgh1vX8uIe8OYyMH6DwH+sdTJsgMl36+mSMdRJIQ==",
"license": "ISC"
},
"node_modules/uuid": {
"version": "8.3.2",
"resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz",
"integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==",
"bin": {
"uuid": "dist/bin/uuid"
}
},
"node_modules/wrappy": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
"integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
"license": "ISC"
}
},
"dependencies": {
"@actions/core": {
"version": "1.10.0",
"resolved": "https://registry.npmjs.org/@actions/core/-/core-1.10.0.tgz",
"integrity": "sha512-2aZDDa3zrrZbP5ZYg159sNoLRb61nQ7awl5pSvIq5Qpj81vwDzdMRKzkWJGJuwVvWpvZKx7vspJALyvaaIQyug==",
"requires": {
"@actions/http-client": "^2.0.1",
"uuid": "^8.3.2"
}
},
"@actions/exec": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/@actions/exec/-/exec-1.1.1.tgz",
"integrity": "sha512-+sCcHHbVdk93a0XT19ECtO/gIXoxvdsgQLzb2fE2/5sIZmWQuluYyjPQtrtTHdU1YzTZ7bAPN4sITq2xi1679w==",
"requires": {
"@actions/io": "^1.0.1"
}
},
"@actions/github": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/@actions/github/-/github-6.0.0.tgz",
"integrity": "sha512-alScpSVnYmjNEXboZjarjukQEzgCRmjMv6Xj47fsdnqGS73bjJNDpiiXmp8jr0UZLdUB6d9jW63IcmddUP+l0g==",
"requires": {
"@actions/http-client": "^2.2.0",
"@octokit/core": "^5.0.1",
"@octokit/plugin-paginate-rest": "^9.0.0",
"@octokit/plugin-rest-endpoint-methods": "^10.0.0"
}
},
"@actions/http-client": {
"version": "2.2.3",
"resolved": "https://registry.npmjs.org/@actions/http-client/-/http-client-2.2.3.tgz",
"integrity": "sha512-mx8hyJi/hjFvbPokCg4uRd4ZX78t+YyRPtnKWwIl+RzNaVuFpQHfmlGVfsKEJN8LwTCvL+DfVgAM04XaHkm6bA==",
"requires": {
"tunnel": "^0.0.6",
"undici": "^5.25.4"
}
},
"@actions/io": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/@actions/io/-/io-1.1.3.tgz",
"integrity": "sha512-wi9JjgKLYS7U/z8PPbco+PvTb/nRWjeoFlJ1Qer83k/3C5PHQi28hiVdeE2kHXmIL99mQFawx8qt/JPjZilJ8Q=="
},
"@fastify/busboy": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.1.1.tgz",
"integrity": "sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA=="
},
"@octokit/auth-token": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-4.0.0.tgz",
"integrity": "sha512-tY/msAuJo6ARbK6SPIxZrPBms3xPbfwBrulZe0Wtr/DIY9lje2HeV1uoebShn6mx7SjCHif6EjMvoREj+gZ+SA=="
},
"@octokit/core": {
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/@octokit/core/-/core-5.2.0.tgz",
"integrity": "sha512-1LFfa/qnMQvEOAdzlQymH0ulepxbxnCYAKJZfMci/5XJyIHWgEYnDmgnKakbTh7CH2tFQ5O60oYDvns4i9RAIg==",
"requires": {
"@octokit/auth-token": "^4.0.0",
"@octokit/graphql": "^7.1.0",
"@octokit/request": "^8.3.1",
"@octokit/request-error": "^5.1.0",
"@octokit/types": "^13.0.0",
"before-after-hook": "^2.2.0",
"universal-user-agent": "^6.0.0"
}
},
"@octokit/endpoint": {
"version": "9.0.6",
"resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-9.0.6.tgz",
"integrity": "sha512-H1fNTMA57HbkFESSt3Y9+FBICv+0jFceJFPWDePYlR/iMGrwM5ph+Dd4XRQs+8X+PUFURLQgX9ChPfhJ/1uNQw==",
"requires": {
"@octokit/types": "^13.1.0",
"universal-user-agent": "^6.0.0"
}
},
"@octokit/graphql": {
"version": "7.1.0",
"resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-7.1.0.tgz",
"integrity": "sha512-r+oZUH7aMFui1ypZnAvZmn0KSqAUgE1/tUXIWaqUCa1758ts/Jio84GZuzsvUkme98kv0WFY8//n0J1Z+vsIsQ==",
"requires": {
"@octokit/request": "^8.3.0",
"@octokit/types": "^13.0.0",
"universal-user-agent": "^6.0.0"
}
},
"@octokit/openapi-types": {
"version": "23.0.1",
"resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-23.0.1.tgz",
"integrity": "sha512-izFjMJ1sir0jn0ldEKhZ7xegCTj/ObmEDlEfpFrx4k/JyZSMRHbO3/rBwgE7f3m2DHt+RrNGIVw4wSmwnm3t/g=="
},
"@octokit/plugin-paginate-rest": {
"version": "9.2.2",
"resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-9.2.2.tgz",
"integrity": "sha512-u3KYkGF7GcZnSD/3UP0S7K5XUFT2FkOQdcfXZGZQPGv3lm4F2Xbf71lvjldr8c1H3nNbF+33cLEkWYbokGWqiQ==",
"requires": {
"@octokit/types": "^12.6.0"
},
"dependencies": {
"@octokit/openapi-types": {
"version": "20.0.0",
"resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-20.0.0.tgz",
"integrity": "sha512-EtqRBEjp1dL/15V7WiX5LJMIxxkdiGJnabzYx5Apx4FkQIFgAfKumXeYAqqJCj1s+BMX4cPFIFC4OLCR6stlnA=="
},
"@octokit/types": {
"version": "12.6.0",
"resolved": "https://registry.npmjs.org/@octokit/types/-/types-12.6.0.tgz",
"integrity": "sha512-1rhSOfRa6H9w4YwK0yrf5faDaDTb+yLyBUKOCV4xtCDB5VmIPqd/v9yr9o6SAzOAlRxMiRiCic6JVM1/kunVkw==",
"requires": {
"@octokit/openapi-types": "^20.0.0"
}
}
}
},
"@octokit/plugin-rest-endpoint-methods": {
"version": "10.4.1",
"resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-10.4.1.tgz",
"integrity": "sha512-xV1b+ceKV9KytQe3zCVqjg+8GTGfDYwaT1ATU5isiUyVtlVAO3HNdzpS4sr4GBx4hxQ46s7ITtZrAsxG22+rVg==",
"requires": {
"@octokit/types": "^12.6.0"
},
"dependencies": {
"@octokit/openapi-types": {
"version": "20.0.0",
"resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-20.0.0.tgz",
"integrity": "sha512-EtqRBEjp1dL/15V7WiX5LJMIxxkdiGJnabzYx5Apx4FkQIFgAfKumXeYAqqJCj1s+BMX4cPFIFC4OLCR6stlnA=="
},
"@octokit/types": {
"version": "12.6.0",
"resolved": "https://registry.npmjs.org/@octokit/types/-/types-12.6.0.tgz",
"integrity": "sha512-1rhSOfRa6H9w4YwK0yrf5faDaDTb+yLyBUKOCV4xtCDB5VmIPqd/v9yr9o6SAzOAlRxMiRiCic6JVM1/kunVkw==",
"requires": {
"@octokit/openapi-types": "^20.0.0"
}
}
}
},
"@octokit/request": {
"version": "8.4.0",
"resolved": "https://registry.npmjs.org/@octokit/request/-/request-8.4.0.tgz",
"integrity": "sha512-9Bb014e+m2TgBeEJGEbdplMVWwPmL1FPtggHQRkV+WVsMggPtEkLKPlcVYm/o8xKLkpJ7B+6N8WfQMtDLX2Dpw==",
"requires": {
"@octokit/endpoint": "^9.0.1",
"@octokit/request-error": "^5.1.0",
"@octokit/types": "^13.1.0",
"universal-user-agent": "^6.0.0"
}
},
"@octokit/request-error": {
"version": "5.1.1",
"resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-5.1.1.tgz",
"integrity": "sha512-v9iyEQJH6ZntoENr9/yXxjuezh4My67CBSu9r6Ve/05Iu5gNgnisNWOsoJHTP6k0Rr0+HQIpnH+kyammu90q/g==",
"requires": {
"@octokit/types": "^13.1.0",
"deprecation": "^2.0.0",
"once": "^1.4.0"
}
},
"@octokit/types": {
"version": "13.8.0",
"resolved": "https://registry.npmjs.org/@octokit/types/-/types-13.8.0.tgz",
"integrity": "sha512-x7DjTIbEpEWXK99DMd01QfWy0hd5h4EN+Q7shkdKds3otGQP+oWE/y0A76i1OvH9fygo4ddvNf7ZvF0t78P98A==",
"requires": {
"@octokit/openapi-types": "^23.0.1"
}
},
"@vercel/ncc": {
"version": "0.36.1",
"resolved": "https://registry.npmjs.org/@vercel/ncc/-/ncc-0.36.1.tgz",
"integrity": "sha512-S4cL7Taa9yb5qbv+6wLgiKVZ03Qfkc4jGRuiUQMQ8HGBD5pcNRnHeYM33zBvJE4/zJGjJJ8GScB+WmTsn9mORw==",
"dev": true
},
"before-after-hook": {
"version": "2.2.3",
"resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.3.tgz",
"integrity": "sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ=="
},
"deprecation": {
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz",
"integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ=="
},
"once": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
"integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
"requires": {
"wrappy": "1"
}
},
"tunnel": {
"version": "0.0.6",
"resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz",
"integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg=="
},
"undici": {
"version": "5.28.5",
"resolved": "https://registry.npmjs.org/undici/-/undici-5.28.5.tgz",
"integrity": "sha512-zICwjrDrcrUE0pyyJc1I2QzBkLM8FINsgOrt6WjA+BgajVq9Nxu2PbFFXUrAggLfDXlZGZBVZYw7WNV5KiBiBA==",
"requires": {
"@fastify/busboy": "^2.0.0"
}
},
"universal-user-agent": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.1.tgz",
"integrity": "sha512-yCzhz6FN2wU1NiiQRogkTQszlQSlpWaw8SvVegAc+bDxbzHgh1vX8uIe8OYyMH6DwH+sdTJsgMl36+mSMdRJIQ=="
},
"uuid": {
"version": "8.3.2",
"resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz",
"integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg=="
},
"wrappy": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
"integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="
}
}
}
@@ -1,20 +0,0 @@
{
"name": "print-affected-libs",
"version": "1.0.0",
"description": "",
"main": "dist/index.js",
"scripts": {
"build": "ncc build src/index.js -o dist --source-map"
},
"keywords": [],
"author": "",
"license": "ISC",
"dependencies": {
"@actions/core": "^1.10.0",
"@actions/exec": "^1.1.1",
"@actions/github": "^6.0.0"
},
"devDependencies": {
"@vercel/ncc": "^0.36.1"
}
}
@@ -1,32 +0,0 @@
const core = require('@actions/core');
const exec = require('@actions/exec');
async function run() {
const base = core.getInput('base', {required: false }) || '5288597580';
core.setOutput('affected_is_empty', 'true');
let affected = '';
let myError = '';
const options = {};
options.listeners = {
stdout: (data) => {
affected += data.toString()
},
stderr: (data) => {
myError += data.toString();
}
};
await exec.exec(`npx nx print-affected --target=build --select=tasks.target.project --base=${base} --head=${head}`, [], options)
const affectedTrimmed = affected.trim();
if (affectedTrimmed !== '') {
core.setOutput('affected_is_empty', 'false');
}
core.notice(`Retriving affected libs: ${affectedTrimmed}`);
core.setOutput('affected', affectedTrimmed);
}
run();
+4 -4
View File
@@ -20,18 +20,18 @@ runs:
using: "composite"
steps:
- name: install NPM
uses: actions/setup-node@1d0ff469b7ec7b3cb9d8673fde0c81c44821de2a # v4.2.0
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
with:
node-version-file: '.nvmrc'
cache-dependency-path: package-lock.json
- name: get latest tag sha
id: tag-sha
uses: Alfresco/alfresco-build-tools/.github/actions/git-latest-tag@c1236aee36bb9b35c5972819fcf8a4d07572e6cd # v8.16.0
uses: Alfresco/alfresco-build-tools/.github/actions/git-latest-tag@20d21f43addae05442096a7e935dc2b321361501 # v8.27.0
# CACHE
- name: Node Modules cache
id: node-modules-cache
if: ${{ inputs.enable-node-modules-cache == 'true' }}
uses: actions/cache@d4323d4df104b026a6aa633fdb11d772146be0bf # v4.2.2
uses: actions/cache@5a3ec84eff668545956fd18022155c47e93e2684 # v4.2.3
env:
cache-name: node-modules-cache
with:
@@ -43,7 +43,7 @@ runs:
node_modules-${{ runner.os }}-build-
node_modules-${{ runner.os }}-
- name: pip cache
uses: actions/cache@d4323d4df104b026a6aa633fdb11d772146be0bf # v4.2.2
uses: actions/cache@5a3ec84eff668545956fd18022155c47e93e2684 # v4.2.3
if: ${{ inputs.enable-cache == 'true' }}
with:
path: ~/.cache/pip
@@ -1,49 +0,0 @@
name: Identify the slack group
description: 'Identify the slack group area based on the affected'
inputs:
affected:
description: 'The name of the affected lib'
required: true
type: string
outputs:
groups:
description: "the slack groups"
value: ${{ steps.group.outputs.result }}
runs:
using: "composite"
steps:
- name: Append group
id: group
uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1
env:
affectedLib: ${{ inputs.affected }}
with:
script: |
const affectedLib = process.env.affectedLib;
core.info(`Input ${affectedLib}`);
const slackGroups = new Set();
const AlfrescoQAGroup = '@alfresco-testing-qa';
const HxpQAGroup = '@hxp-studio-qa-group';
const libs = affectedLib.split(' ')
if (libs.includes('content-services') || libs.includes('process-services')) {
slackGroups.add(AlfrescoQAGroup);
}
if (libs.includes('process-services-cloud')) {
slackGroups.add(HxpQAGroup);
}
if (libs.includes('core')) {
slackGroups.add(AlfrescoQAGroup);
slackGroups.add(HxpQAGroup);
}
const result = Array.from(slackGroups.values()).join(' ');
core.info(`Result ${result}`);
return result;
-8
View File
@@ -50,10 +50,6 @@ updates:
directory: "/.github/actions/npm-check-bundle"
schedule:
interval: "weekly"
- package-ecosystem: "github-actions"
directory: "/.github/actions/print-affected-libs"
schedule:
interval: "weekly"
- package-ecosystem: "github-actions"
directory: "/.github/actions/set-npm-tag"
schedule:
@@ -62,10 +58,6 @@ updates:
directory: "/.github/actions/setup"
schedule:
interval: "weekly"
- package-ecosystem: "github-actions"
directory: "/.github/actions/slack-group-area"
schedule:
interval: "weekly"
- package-ecosystem: "github-actions"
directory: "/.github/actions/upload-node-modules-and-artifacts"
schedule:
+3 -3
View File
@@ -30,7 +30,7 @@ jobs:
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@6bb031afdd8eb862ea3fc1848194185e076637e5 # v3.28.11
uses: github/codeql-action/init@181d5eefc20863364f96762470ba6f862bdef56b # v3.29.2
# Override language selection by uncommenting this and choosing your languages
with:
languages: javascript
@@ -39,7 +39,7 @@ jobs:
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
# If this step fails, then you should remove it and run the build manually (see below)
- name: Autobuild
uses: github/codeql-action/autobuild@6bb031afdd8eb862ea3fc1848194185e076637e5 # v3.28.11
uses: github/codeql-action/autobuild@181d5eefc20863364f96762470ba6f862bdef56b # v3.29.2
# ️ Command-line programs to run using the OS shell.
# 📚 https://git.io/JvXDl
@@ -53,4 +53,4 @@ jobs:
# make release
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@6bb031afdd8eb862ea3fc1848194185e076637e5 # v3.28.11
uses: github/codeql-action/analyze@181d5eefc20863364f96762470ba6f862bdef56b # v3.29.2
+1 -1
View File
@@ -65,7 +65,7 @@ jobs:
with:
dry-run-flag: ${{ inputs.dry-run-flag }}
- name: install NPM
uses: actions/setup-node@1d0ff469b7ec7b3cb9d8673fde0c81c44821de2a # v4.2.0
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
with:
node-version-file: '.nvmrc'
- name: "Release tag"
+1 -1
View File
@@ -10,7 +10,7 @@ jobs:
- name: Checkout
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- name: Pull translations from Crowdin
uses: crowdin/github-action@2cc7959c565767d6bc118118d6df3b63bf361370 # v2.6.1
uses: crowdin/github-action@9fd07c1c5b36b15f082d1d860dc399f16f849bd7 # v2.9.0
with:
upload_sources: false
download_translations: true
+9 -26
View File
@@ -64,7 +64,7 @@ jobs:
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- name: Ensure SHA pinned actions
uses: zgosalvez/github-actions-ensure-sha-pinned-actions@25ed13d0628a1601b4b44048e63cc4328ed03633 # v3.0.22
uses: zgosalvez/github-actions-ensure-sha-pinned-actions@fc87bb5b5a97953d987372e74478de634726b3e5 # v3.0.25
- name: Check package-lock.json version
run: |
@@ -84,10 +84,10 @@ jobs:
fetch-depth: 0
- name: Get branch name
uses: Alfresco/alfresco-build-tools/.github/actions/get-branch-name@c1236aee36bb9b35c5972819fcf8a4d07572e6cd # v8.16.0
uses: Alfresco/alfresco-build-tools/.github/actions/get-branch-name@20d21f43addae05442096a7e935dc2b321361501 # v8.27.0
- name: Save commit message
uses: Alfresco/alfresco-build-tools/.github/actions/get-commit-message@c1236aee36bb9b35c5972819fcf8a4d07572e6cd # v8.16.0
uses: Alfresco/alfresco-build-tools/.github/actions/get-commit-message@20d21f43addae05442096a7e935dc2b321361501 # v8.27.0
- name: ci:force flag parser
shell: bash
@@ -270,27 +270,10 @@ jobs:
name: Final Results
needs: [check-if-pr-is-approved, pre-checks, setup, unit-tests, lint, build-libs]
steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- name: identify-slack-group
id: groups
if: ${{ github.event_name == 'schedule' }}
uses: ./.github/actions/slack-group-area
with:
affected: ${{ steps.e2e-result.outputs.result }}
- uses: slackapi/slack-github-action@485a9d42d3a73031f12ec201c457e2162c45d02d # v2.0.0
name: Nofify QA failure
if: ${{ github.event_name == 'schedule' && contains(needs.*.result, 'failure') }}
env:
SLACK_BOT_TOKEN: ${{ secrets.SLACK_BOT_TOKEN }}
with:
channel-id: 'C016SMNNL8L' #guild-channel
slack-message: "🔴 Warning: The daily ADF cronjob failed\nWorkflow run : <https://github.com/Alfresco/alfresco-ng2-components/actions/runs/${{ github.run_id }}| here>\nDetails: ${{ steps.e2e-result.outputs.result }}\nArea: ${{ steps.groups.outputs.groups}}"
- name: workflow failure
- name: Check job execution status
if: >-
${{
contains(needs.*.result, 'failure')
|| contains(needs.*.result, 'cancelled')
}}
run: exit 1
if: ${{ contains(needs.*.result, 'failure') }}
- name: workflow canceled
run: exit 1
if: ${{ contains(needs.*.result, 'cancelled') }}
- name: workflow success
run: exit 0
if: ${{ contains(needs.*.result, 'success') }}
+4 -5
View File
@@ -97,10 +97,9 @@ jobs:
setMigrations();
- name: Build libraries
run: |
npx nx run-many --target=build --prod --exclude="demoshell" --skip-nx-cache
npx nx run-many --target=pretheme
npx nx run-many --target=build-schematics
- uses: actions/setup-node@1d0ff469b7ec7b3cb9d8673fde0c81c44821de2a # v4.2.0
npx nx run-many --target=build --prod --skip-nx-cache
npx nx run-many --target=build-schematics
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
name: release libraries GH registry
with:
node-version-file: '.nvmrc'
@@ -109,7 +108,7 @@ jobs:
- run: npx nx run-many --target=npm-publish --tag=branch|| exit 1
env:
NODE_AUTH_TOKEN: ${{ secrets.PAT_WRITE_PKG }}
- uses: actions/setup-node@1d0ff469b7ec7b3cb9d8673fde0c81c44821de2a # v4.2.0
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
name: release libraries Npm registry
with:
node-version-file: '.nvmrc'
+28 -13
View File
@@ -100,6 +100,8 @@ jobs:
release-npm:
needs: [setup]
outputs:
release_version: ${{ steps.set-version.outputs.release_version }}
timeout-minutes: 30
if: github.event.pull_request.merged == true || github.ref_name == 'master' || github.ref_name == 'master-patch-*'
runs-on: ubuntu-latest
@@ -121,6 +123,7 @@ jobs:
dry-run-flag: ${{ inputs.dry-run-flag }}
- uses: ./.github/actions/download-node-modules-and-artifacts
- name: Set libraries versions
id: set-version
run: |
set -u;
./scripts/github/build/bumpversion.sh
@@ -133,9 +136,8 @@ jobs:
- name: build libraries
run: |
npx nx run-many -t build --prod --skip-nx-cache
npx nx run-many -t pretheme
npx nx run-many -t build-schematics
- uses: actions/setup-node@1d0ff469b7ec7b3cb9d8673fde0c81c44821de2a # v4.2.0
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
name: release libraries GH registry
with:
node-version-file: '.nvmrc'
@@ -144,7 +146,7 @@ jobs:
- run: npx nx run-many -t npm-publish --tag=$TAG_NPM || exit 1
env:
NODE_AUTH_TOKEN: ${{ secrets.PAT_WRITE_PKG }}
- uses: actions/setup-node@1d0ff469b7ec7b3cb9d8673fde0c81c44821de2a # v4.2.0
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
name: release libraries Npm registry
with:
node-version-file: '.nvmrc'
@@ -154,6 +156,21 @@ jobs:
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_REGISTRY_TOKEN }}
create-git-tag:
runs-on: ubuntu-latest
needs: [setup, release-npm]
name: Create github tag
permissions:
contents: write
steps:
- name: Checkout repository
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
fetch-depth: 1
- uses: './.github/actions/create-git-tag'
with:
tagName: ${{ needs.release-npm.outputs.release_version }}
propagate:
needs: [release-npm]
if: ${{ contains(toJson(github.event.pull_request.labels.*.name), 'hxp-upstream') }}
@@ -198,7 +215,7 @@ jobs:
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- name: Push Source Files to Crowdin
uses: crowdin/github-action@2cc7959c565767d6bc118118d6df3b63bf361370 # v2.6.1
uses: crowdin/github-action@9fd07c1c5b36b15f082d1d860dc399f16f849bd7 # v2.9.0
with:
upload_sources: true
upload_sources_args: --delete-obsolete
@@ -211,12 +228,10 @@ jobs:
name: Final Results
needs: [release-storybook, release-npm, npm-check-bundle]
steps:
- uses: slackapi/slack-github-action@485a9d42d3a73031f12ec201c457e2162c45d02d # v2.0.0
name: Nofify FE eng-guild-front-end workflow failed
if: ${{ contains(toJson(needs.*.result), 'failure') }}
env:
SLACK_BOT_TOKEN: ${{ secrets.SLACK_BOT_TOKEN }}
with:
channel-id: 'C016SMNNL8L' #eng-guild-front-end
slack-message: "🔴 Warning: The release workflow of alfresco-ng2-components pipe failed\n Author username: ${{ github.event.pull_request.user.login }}\n Workflow run <https://github.com/Alfresco/alfresco-ng2-components/actions/runs/${{ github.run_id }}| here>\n>"
- name: Check job execution status
if: >-
${{
contains(needs.*.result, 'failure')
|| contains(needs.*.result, 'cancelled')
}}
run: exit 1
+3 -12
View File
@@ -1,33 +1,24 @@
/.angular/cache
*.log
node_modules
bundles
workspace.xml
.idea/
*.iml
.env.*
.env
dist
!./.github/actions/**/dist
e2e/.env.cloud
tmp
temp
/nxcache
*.npmrc
.history
/ng2-components/ng2-alfresco-core/prebuilt-themes/
.ng_pkg_build/
/lib/export-new.json
/lib/config/exportCheck.js
/docs/sourceinfo
/docs/docs.json
coverage/
/desktop.ini
out-tsc
/reports/
e2e-result-*
licenses.txt
.DS_Store
desktop.ini
.angular
NX
.nx
nxcache
.husky
+1 -1
View File
@@ -1 +1 @@
20.18.1
22.14.0
+1 -1
View File
@@ -8,6 +8,6 @@
"source": "/**/**/i18n/en.json",
"translation": "/%original_path%/%two_letters_code%.%file_extension%",
"export_only_approved": "true",
"update_option": "update_as_unapproved"
"update_option": "update_without_changes"
}
]
+2
View File
@@ -0,0 +1,2 @@
sourceinfo
docs.json
-1
View File
@@ -61,7 +61,6 @@ A few other pages of information are also available:
- [Localization in ADF](user-guide/localization.md)
- [Theming](user-guide/theming.md)
- [Transclusion](user-guide/transclusion.md)
- [Typography](user-guide/typography.md)
- [Walkthrough - adding indicators to highlight information about a node](user-guide/metadata-indicators.md)
<!--guide end-->
+109
View File
@@ -0,0 +1,109 @@
# Migrating from Angular 15 to Angular 16
This guide for migrating ADF from Angular version 15 to version 16. Follow these steps to ensure a smooth transition.
## 1. Update Nx
First, update the Nx development dependencies. Use the `nx migrate` command for this purpose.
```bash
npx nx migrate 16.10.0
```
Updated Nx dependencies:
```json
{
"nx": "16.10.0",
"@nx/angular": "16.10.0",
"@nx/eslint-plugin": "16.10.0",
"@nx/js": "16.10.0",
"@nx/node": "16.10.0",
"@nx/storybook": "19.6.2",
"@nx/workspace": "16.10.0"
}
```
**As of Nx 16 package scope has changed from `@nrwl/*` to `@nx/*`.**
Nx's migration scripts will replace all `@nrwl` references in the project with `@nx`. This includes any imports, configuration files, and scripts.
## 2. Run Nx migrations
After the initial update a `migrations.json` file will be created containing all the additional changes that need to be made. You can run the migration script to apply these changes.
```bash
npx nx migrate --run-migrations
```
Those migrations should update required packages to the Angular 16 compatible version including Angular itself, Storybook, and others.
```json
{
"@angular/animations": "16.2.9",
"@angular/cdk": "16.2.9",
"@angular/common": "16.2.9",
"@angular/compiler": "16.2.9",
"@angular/core": "16.2.9",
"@angular/forms": "16.2.9",
"@angular/material": "16.2.9",
"@angular/material-date-fns-adapter": "16.2.9",
"@angular/platform-browser": "16.2.9",
"@angular/platform-browser-dynamic": "16.2.9",
"@angular/router": "16.2.9",
"@schematics/angular": "16.2.9",
"ng-packagr": "16.2.3"
}
```
Reference `storybook-migration-summary.md` file for more details on Storybook migration.
## 3. Manually update other dependencies
There are a few dependencies that require manual update, here is the list:
```json
{
"dependencies": {
"angular-oauth2-oidc": "16.0.0",
"@apollo/client": "3.11.4",
"chart.js": "4.4.4",
"@mat-datetimepicker/core": "12.0.1"
},
"devDependencies": {
"@editorjs/editorjs": "2.30.5"
}
}
```
```bash
npm install --save angular-oauth2-oidc@16.0.0 @apollo/client@3.11.4 chart.js@4.4.4 @mat-datetimepicker/core@12.0.1
npm install --save-dev @editorjs/editorjs@2.30.5
```
## 4. Fixing CI/CD issues
### General migration issues
After running the migration script, you may need to manually fix some issues. Run common build targets to identify any problems.
```bash
npx nx run-many --target=build --skip-nx-cache
```
Work through all the problems topic by topic. If blocked by linting issues, disable the linting rules in the affected files. You can re-enable them in the next step.
### Lint jobs
After getting the build to work, run the lint jobs. Re-enable previously disabled linting rules and fix any issues that arise.
```bash
npx nx run-many --target=lint --skip-nx-cache
```
### Unit tests
Despite Angular 16 not introducing major breaking changes, you may still encounter issues with unit tests. Run the unit tests and fix any problems that arise.
```bash
npx nx run-many --target=test --skip-nx-cache
```
+144
View File
@@ -0,0 +1,144 @@
# Migrating from Angular 16 to Angular 17
This guide for migrating ADF from Angular version 16 to version 17. Follow these steps to ensure a smooth transition.
## 1. Run Nx migrate
Use the `nx migrate` command to automatically update Nx and Angular dependencies.
```bash
npx nx migrate 17.3.1
```
Updated Nx dependencies:
```json
{
"nx": "^20.0.0",
"@nx/angular": "17.3.1",
"@nx/eslint-plugin": "17.3.1",
"@nx/js": "17.3.1",
"@nx/node": "17.3.1",
"@nx/storybook": "17.3.1",
"@nx/workspace": "17.3.1"
}
```
Updated Angular dependencies
```json
{
"@angular/animations": "17.1.3",
"@angular/cdk": "17.1.2",
"@angular/common": "17.1.3",
"@angular/compiler": "17.1.3",
"@angular/core": "17.1.3",
"@angular/forms": "17.1.3",
"@angular/material": "17.1.2",
"@angular/material-date-fns-adapter": "17.1.2",
"@angular/platform-browser": "17.1.3",
"@angular/platform-browser-dynamic": "17.1.3",
"@angular/router": "17.1.3",
"zone.js": "0.14.8",
"ng-packagr": "17.1.2",
"@schematics/angular": "17.1.4"
}
```
## 2. Manually update other dependencies
There are a few dependencies that require manual update, here is the list:
```json
{
"dependencies": {
"apollo-angular": "6.0.0",
"@mat-datetimepicker/core": "13.0.2"
},
"devDependencies": {
"@typescript-eslint/eslint-plugin": "6.21.0",
"@typescript-eslint/parser": "6.21.0",
"@typescript-eslint/typescript-estree": "7.1.1",
"eslint-config-prettier": "9.1.0"
}
}
```
```bash
npm install --save apollo-angular@6.0.0 @mat-datetimepicker/core@13.0.2
npm install --save-dev @typescript-eslint/eslint-plugin@6.21.0 @typescript-eslint/parser@6.21.0 @typescript-eslint/typescript-estree@7.1.1 eslint-config-prettier@9.1.0
```
## 3. Migrating js-api from mocha to jest
In order to simplify the migration process, we are migrating the test runner from mocha to jest.
### Installing dependencies
```json
{
"jest": "^29.7.0",
"jest-environment-jsdom": "^29.7.0",
"jest-preset-angular": "14.4.2",
"@types/jest": "^29.5.14"
}
```
```bash
npm install --save-dev jest jest-environment-jsdom jest-preset-angular@14 @types/jest
```
### Performing the migration
It's recommended to use both test runners in parallel during the migration process. Nx project test jobs configuration:
```json
{
"test-old-mocha": {
"executor": "nx:run-commands",
"outputs": ["{workspaceRoot}/coverage/{projectRoot}"],
"options": {
"codeCoverage": true
}
},
"test": {
"executor": "@nx/jest:jest",
"outputs": ["{workspaceRoot}/coverage/{projectRoot}"],
"options": {
"jestConfig": "lib/js-api/jest.config.ts",
"passWithNoTests": true
}
}
}
```
- delete `.mocharc.json`
- delete `test-old-mocha` job from the project configuration
## 4. Fixing CI/CD issues
### General migration issues
After running the migration script, you may need to manually fix some issues. Run common build targets to identify any problems.
```bash
npx nx run-many --target=build --skip-nx-cache
```
Work through all the problems topic by topic. If blocked by linting issues, disable the linting rules in the affected files. You can re-enable them in the next step.
### Lint jobs
After getting the build to work, run the lint jobs. Re-enable previously disabled linting rules and fix any issues that arise.
```bash
npx nx run-many --target=lint --skip-nx-cache
```
### Unit tests
Despite Angular 16 not introducing major breaking changes, you may still encounter issues with unit tests. Run the unit tests and fix any problems that arise.
```bash
npx nx run-many --target=test --skip-nx-cache
```
+102
View File
@@ -0,0 +1,102 @@
# Migrating from Angular 17 to Angular 18
This guide describes how to migrate ADF from Angular version 17 to version 18. Follow these steps to ensure a smooth transition.
## 1. Update changed dependencies
Update the following packages in your `package.json`:
### dependencies
```json
{
"@angular/animations": "18.2.13",
"@angular/cdk": "18.2.14",
"@angular/common": "18.2.13",
"@angular/compiler": "18.2.13",
"@angular/core": "18.2.13",
"@angular/forms": "18.2.13",
"@angular/material": "18.2.14",
"@angular/material-date-fns-adapter": "18.2.14",
"@angular/platform-browser": "18.2.13",
"@angular/platform-browser-dynamic": "18.2.13",
"@angular/router": "18.2.13",
"@apollo/client": "3.13.1",
"@mat-datetimepicker/core": "14.0.0",
"apollo-angular": "10.0.3",
"minimatch-browser": "1.0.0",
"node-fetch": "^3.3.2",
"zone.js": "0.14.10"
}
```
### devDependencies
```json
{
"@angular-devkit/architect": "0.1802.13",
"@angular-devkit/build-angular": "18.2.14",
"@angular-devkit/core": "18.2.13",
"@angular-devkit/schematics": "18.2.13",
"@angular/compiler-cli": "18.2.13",
"@nx/angular": "19.2.0",
"@nx/js": "18.3.5",
"@nx/workspace": "18.3.5",
"@storybook/angular": "8.4.7",
"ng-packagr": "18.2.1",
"npm-run-all": "^4.1.5",
"postcss": "8.4.41",
"postcss-sass": "^0.5.0",
"tsconfig-paths": "^4.1.1",
"typescript": "5.5.4",
"webpack-cli": "^5.1.4"
}
```
## 2. Material mixins update
Angular Material 18 introduced Material 3 mixins as new default. As we are still using Material 2, we need to ensure that we are still using the Material 2 version.
In order to use Material 2 mixins, you need to add a `m2-` prefix to the mixins in your stylesheets. For example:
```scss
mat.define-typography-config()
mat.get-color-from-palette()
```
should be changed to:
```scss
mat.m2-define-typography-config()
mat.m2-get-color-from-palette()
```
## 3. Fixing CI/CD issues
After running the migration script, you may need to manually fix some issues. Run common build targets to identify any problems.
```bash
npx nx run-many --target=build --skip-nx-cache
```
If blocked by linting issues, disable the linting rules in the affected files. You can re-enable them in the next step.
### Lint jobs
After getting the build to work, run the lint jobs. Re-enable previously disabled linting rules and fix any issues that arise.
```bash
npx nx run-many --target=lint --skip-nx-cache
```
### Unit tests
Run the unit tests and fix any problems that arise.
```bash
npx nx run-many --target=test --skip-nx-cache
```
## 4. Review Angular 18 breaking changes
Angular 18 is a minor update with no major breaking changes for most projects. However, always review the [Angular 18 changelog](https://github.com/angular/angular/blob/main/CHANGELOG.md) and [official update guide](https://angular.dev/update-guide?v=17.0-18.0).
@@ -245,16 +245,17 @@ The Viewer supports dynamically-loaded viewer preview extensions, to know more a
You can define your own custom handler to override supported file formats or handle other file formats that are not yet supported by
the component. Below is an example that shows how to use the `adf-viewer-extension`
to handle 3D data files:
to handle 3D data files. `contentLoaded` should be an `EventEmitter` that will emit as soon as the component responsible for rendering finishes.
```html
<adf-alfresco-viewer [nodeId]="nodeId">
<ng-template #viewerExtensions>
<adf-viewer-extension [supportedExtensions]="['obj','3ds']" #extension>
<ng-template let-urlFileContent="urlFileContent" let-extension="extension">
<ng-template let-urlFileContent="urlFileContent" let-extension="extension" let-markAsLoaded="markAsLoaded">
<threed-viewer
[urlFile]="urlFileContent"
[extension]="extension">
[extension]="extension"
(contentLoaded)="markAsLoaded()">
</threed-viewer>
</ng-template>
</adf-viewer-extension>
@@ -270,17 +271,19 @@ You need to keep all instances of `adf-viewer-extension` inside `viewerExtension
<adf-alfresco-viewer [nodeId]="nodeId">
<ng-template #viewerExtensions>
<adf-viewer-extension [supportedExtensions]="['xls','xlsx']" #extension>
<ng-template let-urlFileContent="urlFileContent">
<ng-template let-urlFileContent="urlFileContent" let-markAsLoaded="markAsLoaded">
<my-custom-xls-component
urlFileContent="urlFileContent">
urlFileContent="urlFileContent"
(contentLoaded)="markAsLoaded()">
</my-custom-xls-component>
</ng-template>
</adf-viewer-extension>
<adf-viewer-extension [supportedExtensions]="['txt']" #extension>
<ng-template let-urlFileContent="urlFileContent" >
<ng-template let-urlFileContent="urlFileContent" let-markAsLoaded="markAsLoaded">
<my-custom-txt-component
urlFileContent="urlFileContent">
urlFileContent="urlFileContent"
(contentLoaded)="markAsLoaded()">
</my-custom-txt-component>
</ng-template>
</adf-viewer-extension>
@@ -15,7 +15,8 @@ Displays comments from users involved in a specified content and allows an invol
```html
<adf-node-comments
[nodeId]="YOUR_NODE_ID"
[readOnly]="YOUR_READ_ONLY_FLAG">
[readOnly]="YOUR_READ_ONLY_FLAG"
(commentAdded)="onCommentAdded($event)">
</adf-node-comments>
```
@@ -23,7 +24,13 @@ Displays comments from users involved in a specified content and allows an invol
### Properties
| Name | Type | Default value | Description |
| ---- | ---- | ------------- | ----------- |
| nodeId | `string` | | nodeId of the document that has comments |
| readOnly | `boolean` | | make the [comments component](../../core/components/comments.component.md) readOnly |
| Name | Type | Default value | Description |
| -------- | --------- | ------------- | ----------------------------------------------------------------------------------- |
| nodeId | `string` | | nodeId of the document that has comments |
| readOnly | `boolean` | | make the [comments component](../../core/components/comments.component.md) readOnly |
### Events
| Name | Type | Description |
| ------------ | ------------------------------------------------------------------------ | ------------------------------------------------- |
| commentAdded | [`EventEmitter`](https://angular.io/api/core/EventEmitter)<CommentModel> | Emitted when a new comment is successfully added. |
@@ -23,10 +23,10 @@ Manages tags in Content Services.
- _nodeId:_ `string` - Id of node to which tags should be assigned.
- _tags:_ `TagBody[]` - List of tags to create and assign or just assign if they already exist.
- **Returns** [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`TagPaging`](https://github.com/Alfresco/alfresco-js-api/blob/master/src/alfresco-core-rest-api/docs/TagPaging.md)`|`[`TagEntry`](https://github.com/Alfresco/alfresco-js-api/blob/master/src/alfresco-core-rest-api/docs/TagEntry.md)`>` - Just linked tags to node or single tag if linked only one tag.
- **createTags**(tags: `TagBody[]`): [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`TagEntry`](https://github.com/Alfresco/alfresco-js-api/blob/master/src/alfresco-core-rest-api/docs/TagEntry.md)`[]>`<br/>
- **createTags**(tags: `TagBody[]`): [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`TagEntry`](../../../lib/js-api/src/api/content-rest-api/docs/TagsApi.md#TagEntry) `|` [`TagPaging`](../../../lib/js-api/src/api/content-rest-api/docs/TagsApi.md#TagPaging)`>`<br/>
Creates tags.
- _tags:_ `TagBody[]` - list of tags to create.
- **Returns** [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`TagEntry`](https://github.com/Alfresco/alfresco-js-api/blob/master/src/alfresco-core-rest-api/docs/TagEntry.md)`[]>` - Created tags.
- **Returns** [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`TagEntry`](../../../lib/js-api/src/api/content-rest-api/docs/TagsApi.md#TagEntry) `|` [`TagPaging`](../../../lib/js-api/src/api/content-rest-api/docs/TagsApi.md#TagPaging)`>` - Created tags.
- **deleteTag**(tagId: `string`): [`Observable`](http://reactivex.io/documentation/observable.html)`<void>`<br/>
Deletes a tag with tagId. This will cause the tag to be removed from all nodes. You must have admin rights to delete a tag.
- _tagId:_ `string` - of the tag to be deleted
+392 -15
View File
@@ -2,55 +2,432 @@
Title: About Component
Added: v3.5.0
Status: Active
Last reviewed: 2022-11-11
Last reviewed: 2025-07-23
---
# [About Component](../../../lib/core/src/lib/about/about.component.ts "Defined in about.component.ts")
# About Component
Presentational component to display About information as a set of collapsible panels.
A flexible presentational component that displays information in collapsible accordion panels. The About Component is ideal for organizing application information, settings, or any content that benefits from a collapsible interface structure.
## Overview
The About Component creates an accordion-style interface using Angular Material's expansion panels. Each panel can contain any content and can be conditionally displayed. This component is commonly used for:
- Application information and version details
- Feature lists and documentation
- Settings panels
- Help and support sections
- Plugin or extension information
## Prerequisites
Before using the About Component, ensure you have imported the necessary modules:
```typescript
import { AboutComponent } from '@alfresco/adf-core';
import { CommonModule } from '@angular/common';
@Component({
selector: 'app-example',
imports: [CommonModule, AboutComponent],
template: `
<!-- Your template here -->
`
})
export class ExampleComponent {
// Component logic
}
```
## API Reference
### AboutComponent
| Property | Type | Description |
|----------|------|-------------|
| `panels` | `QueryList<AboutPanelDirective>` | Content children representing the panels to display |
### AboutPanelDirective (adf-about-panel)
| Property | Type | Required | Default | Description |
|----------|------|----------|---------|-------------|
| `label` | `string` | Yes | - | The title text displayed in the panel header |
| `automationId` | `string` | No | - | Data automation ID for testing purposes |
## Basic Usage
### Simple Panel Structure
```html
<adf-about>
<adf-about-panel [label]="'Panel 1'">
<adf-about-panel [label]="'Application Information'">
<ng-template>
<your-components></your-components>
<div class="about-content">
<h3>My Application</h3>
<p>Version: 1.0.0</p>
<p>Built with Angular and ADF</p>
</div>
</ng-template>
</adf-about-panel>
<adf-about-panel [label]="'Panel 2'">
<adf-about-panel [label]="'Features'">
<ng-template>
<your-components></your-components>
<ul>
<li>Document management</li>
<li>User authentication</li>
<li>Process workflows</li>
</ul>
</ng-template>
</adf-about-panel>
</adf-about>
```
## Conditional Display
You can wire each panel with the `*ngIf` conditions:
### Using Automation IDs for Testing
```html
<adf-about>
<adf-about-panel *ngIf="devMode" [label]="'Panel 1'">
<adf-about-panel
[label]="'System Information'"
automationId="system-info-panel">
<ng-template>
<your-components></your-components>
<your-system-info-component></your-system-info-component>
</ng-template>
</adf-about-panel>
</adf-about>
```
Where `devMode` is an example of an input property exposed by your component.
## Advanced Usage
Observables are also supported:
### Conditional Panel Display
You can control panel visibility using Angular's structural directives:
```html
<adf-about>
<adf-about-panel *ngIf="extensions$ | async as extensions" [label]="'ABOUT.PLUGINS.TITLE' | translate">
<!-- Show panel only in development mode -->
<adf-about-panel
*ngIf="isDevelopmentMode"
[label]="'Debug Information'"
automationId="debug-panel">
<ng-template>
<div class="debug-info">
<h4>Debug Tools</h4>
<button (click)="clearCache()">Clear Cache</button>
<button (click)="showLogs()">View Logs</button>
</div>
</ng-template>
</adf-about-panel>
<!-- Always visible panel -->
<adf-about-panel [label]="'General Information'">
<ng-template>
<app-general-info></app-general-info>
</ng-template>
</adf-about-panel>
</adf-about>
```
### Working with Observables and Async Data
```html
<adf-about>
<!-- Panel with async data -->
<adf-about-panel
*ngIf="extensions$ | async as extensions"
[label]="'ABOUT.PLUGINS.TITLE' | translate"
automationId="extensions-panel">
<ng-template>
<adf-about-extension-list [data]="extensions"></adf-about-extension-list>
</ng-template>
</adf-about-panel>
<!-- Panel with multiple conditions -->
<adf-about-panel
*ngIf="userPermissions$ | async as permissions; else noPermissions"
[label]="'User Permissions'"
automationId="permissions-panel">
<ng-template>
<div *ngFor="let permission of permissions" class="permission-item">
{{ permission.name }}: {{ permission.granted ? 'Granted' : 'Denied' }}
</div>
</ng-template>
</adf-about-panel>
<ng-template #noPermissions>
<adf-about-panel [label]="'Permissions'">
<ng-template>
<p>Loading permissions...</p>
</ng-template>
</adf-about-panel>
</ng-template>
</adf-about>
```
### Dynamic Panel Generation
```typescript
// Component logic
export class MyAboutComponent {
isDevelopmentMode = environment.production === false;
extensions$ = this.extensionService.getExtensions();
userPermissions$ = this.authService.getUserPermissions();
panels = [
{
label: 'System Info',
content: 'system-info',
show: true
},
{
label: 'Debug Tools',
content: 'debug-tools',
show: this.isDevelopmentMode
}
];
clearCache(): void {
// Clear cache implementation
}
showLogs(): void {
// Show logs implementation
}
}
```
```html
<!-- Template using dynamic panels -->
<adf-about>
<adf-about-panel
*ngFor="let panel of panels"
[label]="panel.label"
[automationId]="panel.content + '-panel'"
*ngIf="panel.show">
<ng-template>
<ng-container [ngSwitch]="panel.content">
<app-system-info *ngSwitchCase="'system-info'"></app-system-info>
<app-debug-tools *ngSwitchCase="'debug-tools'"></app-debug-tools>
</ng-container>
</ng-template>
</adf-about-panel>
</adf-about>
```
## Styling and Customization
### CSS Classes
The About Component uses these CSS classes that you can customize:
- `.adf-about-panel` - Main accordion container
- `.adf-about-panel-header` - Panel header styling
- `.adf-about-panel-header__title` - Panel title styling
### Custom Styling Example
```scss
// Custom panel styling
.adf-about-panel {
.mat-expansion-panel {
margin-bottom: 8px;
border-radius: 4px;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
&:not(.mat-expanded) {
.mat-expansion-panel-header {
background-color: #f5f5f5;
}
}
}
.adf-about-panel-header__title {
font-weight: 600;
color: #333;
}
}
// Custom content styling
.about-content {
padding: 16px 0;
h3 {
margin-top: 0;
color: #1976d2;
}
.permission-item {
padding: 4px 0;
border-bottom: 1px solid #eee;
&:last-child {
border-bottom: none;
}
}
}
```
## Accessibility Features
The About Component inherits accessibility features from Angular Material's expansion panels:
- **Keyboard Navigation**: Use Tab to navigate between panels, Enter/Space to expand/collapse
- **Screen Reader Support**: Panels are properly labeled and state changes are announced
- **ARIA Attributes**: Proper ARIA attributes are automatically applied
- **Focus Management**: Focus is managed correctly when panels are expanded/collapsed
### Enhancing Accessibility
```html
<adf-about>
<adf-about-panel
[label]="'System Information'"
automationId="system-info-panel"
role="region"
[attr.aria-label]="'System information panel'">
<ng-template>
<div role="tabpanel" aria-live="polite">
<h3 id="system-heading">Current System Status</h3>
<p aria-describedby="system-heading">
All systems are operational.
</p>
</div>
</ng-template>
</adf-about-panel>
</adf-about>
```
## Testing
### Unit Testing Example
```typescript
import { ComponentFixture, TestBed } from '@angular/core/testing';
import { AboutComponent } from '@alfresco/adf-core';
import { DebugElement } from '@angular/core';
import { By } from '@angular/platform-browser';
describe('AboutComponent', () => {
let component: AboutComponent;
let fixture: ComponentFixture<AboutComponent>;
beforeEach(async () => {
await TestBed.configureTestingModule({
imports: [AboutComponent]
}).compileComponents();
fixture = TestBed.createComponent(AboutComponent);
component = fixture.componentInstance;
});
it('should create', () => {
expect(component).toBeTruthy();
});
it('should display panels with correct labels', () => {
const panels = fixture.debugElement.queryAll(
By.css('[data-automation-id="system-info-panel"]')
);
expect(panels.length).toBeGreaterThan(0);
});
});
```
### E2E Testing with Automation IDs
```typescript
// Page object example
export class AboutPage {
async expandPanel(automationId: string): Promise<void> {
const panel = element(by.css(`[data-automation-id="${automationId}"]`));
const header = panel.element(by.css('.mat-expansion-panel-header'));
await header.click();
}
async isPanelExpanded(automationId: string): Promise<boolean> {
const panel = element(by.css(`[data-automation-id="${automationId}"]`));
const classes = await panel.getAttribute('class');
return classes.includes('mat-expanded');
}
}
```
## Best Practices
### 1. Use Descriptive Labels
```html
<!-- Good: Descriptive and clear -->
<adf-about-panel [label]="'Application Version Information'">
<!-- Avoid: Vague labels -->
<adf-about-panel [label]="'Info'">
```
### 2. Provide Automation IDs for Testing
```html
<!-- Always include automation IDs for testing -->
<adf-about-panel
[label]="'User Settings'"
automationId="user-settings-panel">
```
### 3. Handle Loading States
```html
<adf-about-panel
*ngIf="data$ | async as data; else loadingPanel"
[label]="'Dynamic Content'">
<ng-template>
<div>{{ data.content }}</div>
</ng-template>
</adf-about-panel>
<ng-template #loadingPanel>
<adf-about-panel [label]="'Loading...'">
<ng-template>
<mat-spinner diameter="20"></mat-spinner>
</ng-template>
</adf-about-panel>
</ng-template>
```
### 4. Organize Related Information
Group related information into logical panels to improve user experience and information architecture.
## Common Use Cases
### Application Information Dashboard
```html
<adf-about>
<adf-about-panel [label]="'Application Details'" automationId="app-details">
<ng-template>
<div class="app-info">
<h3>{{ appName }}</h3>
<p>Version: {{ appVersion }}</p>
<p>Build: {{ buildNumber }}</p>
<p>Environment: {{ environment }}</p>
</div>
</ng-template>
</adf-about-panel>
<adf-about-panel [label]="'Dependencies'" automationId="dependencies">
<ng-template>
<ul>
<li *ngFor="let dep of dependencies">
{{ dep.name }}: {{ dep.version }}
</li>
</ul>
</ng-template>
</adf-about-panel>
</adf-about>
```
## See Also
- [Angular Material Expansion Panel](https://material.angular.io/components/expansion/overview)
- [ADF Core Components](../README.md)
- [Accessibility Guidelines](../../user-guide/accessibility.md)
+10 -8
View File
@@ -15,7 +15,8 @@ Displays comments from users involved in a specified environment and allows an i
```html
<adf-comments
[id]="YOUR_ID"
[readOnly]="YOUR_READ_ONLY_FLAG">
[readOnly]="YOUR_READ_ONLY_FLAG"
(commentAdded)="onCommentAdded($event)">
</adf-comments>
```
@@ -23,13 +24,14 @@ Displays comments from users involved in a specified environment and allows an i
### Properties
| Name | Type | Default value | Description |
| ---- | ---- | ------------- | ----------- |
| id | `string` | | The numeric ID of the task. |
| readOnly | `boolean` | false | Are the comments read only? |
| Name | Type | Default value | Description |
| -------- | --------- | ------------- | --------------------------- |
| id | `string` | | The numeric ID of the task. |
| readOnly | `boolean` | false | Are the comments read only? |
### Events
| Name | Type | Description |
| ---- | ---- | ----------- |
| error | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<any>` | Emitted when an error occurs while displaying/adding a comment. |
| Name | Type | Description |
| ------------ | --------------------------------------------------------------------------- | --------------------------------------------------------------- |
| error | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<any>` | Emitted when an error occurs while displaying/adding a comment. |
| commentAdded | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<CommentModel>` | Emitted when a new comment is successfully added. |
@@ -64,6 +64,7 @@ Using with file [`Blob`](https://developer.mozilla.org/en-US/docs/Web/API/Blob):
| urlFile | `string` | "" | If you want to load an external file that does not come from ACS you can use this URL to specify where to load the file from. |
| viewerTemplateExtensions | [`TemplateRef`](https://angular.io/api/core/TemplateRef)`<any>` | null | Template containing ViewerExtensionDirective instances providing different viewer extensions based on supported file extension. |
| nodeId | `string` | null | Identifier of a node opened by a viewer. |
| customError | `string` | undefined | Custom error message to be displayed in the viewer. |
### Events
@@ -205,22 +206,24 @@ The Viewer supports dynamically-loaded viewer preview extensions, to know more a
#### Code extension mechanism
You can define your own custom handler to override supported file formats or handle other file formats that are not yet supported by
the [Viewer render component](viewer.component.md). In order to do that first you need to define a template containing at least one `adf-viewer-extension`:
the [Viewer render component](viewer.component.md). In order to do that first you need to define a template containing at least one `adf-viewer-extension`. `contentLoaded` should be an `EventEmitter` that will emit as soon as the component responsible for rendering finishes.
```html
<ng-template #viewerExtensions>
<adf-viewer-extension [supportedExtensions]="['xls','xlsx']" #extension>
<ng-template let-urlFileContent="urlFileContent">
<ng-template let-urlFileContent="urlFileContent" let-markAsLoaded="markAsLoaded">
<my-custom-xls-component
urlFileContent="urlFileContent">
urlFileContent="urlFileContent"
(contentLoaded)="markAsLoaded()">
</my-custom-xls-component>
</ng-template>
</adf-viewer-extension>
<adf-viewer-render-extension [supportedExtensions]="['txt']" #extension>
<ng-template let-urlFileContent="urlFileContent" >
<ng-template let-urlFileContent="urlFileContent" let-markAsLoaded="markAsLoaded">
<my-custom-txt-component
urlFileContent="urlFileContent">
urlFileContent="urlFileContent"
(contentLoaded)="markAsLoaded()">
</my-custom-txt-component>
</ng-template>
</adf-viewer-render-extension>
+15 -12
View File
@@ -90,6 +90,7 @@ See the [Custom layout](#custom-layout) section for full details of all availabl
| viewerExtensions | [`TemplateRef`](https://angular.io/api/core/TemplateRef)`<any>` | null | Template containing ViewerExtensionDirective instances providing different viewer extensions based on supported file extension. |
| nodeId | `string` | null | Identifier of a node opened by a viewer. |
| nodeMimeType | `string` | undefined | Original node mime type, should be provided when renditiona mime type is different. |
| customError | `string` | undefined | Custom error message to be displayed in the viewer. |
### Events
@@ -185,10 +186,9 @@ npm install pdfjs-dist
```ts
// PDF.js
require('pdfjs-dist/web/compatibility.js');
const pdfjsLib = require('pdfjs-dist');
pdfjsLib.PDFJS.workerSrc = './pdf.worker.js';
require('pdfjs-dist/web/pdf_viewer.js');
pdfjsLib.PDFJS.workerSrc = './pdf.worker.min.mjs';
require('pdfjs-dist/web/pdf_viewer.mjs');
```
- Update the `plugins` section of the `webpack.common.js` file with the following lines:
@@ -197,8 +197,8 @@ require('pdfjs-dist/web/pdf_viewer.js');
new CopyWebpackPlugin([
...
{
from: 'node_modules/pdfjs-dist/build/pdf.worker.js',
to: 'pdf.worker.js'
from: 'node_modules/pdfjs-dist/build/pdf.worker.min.mjs',
to: 'pdf.worker.min.mjs'
}
])
```
@@ -215,16 +215,17 @@ The Viewer supports dynamically-loaded viewer preview extensions, to know more a
You can define your own custom handler to override supported file formats or handle other file formats that are not yet supported by
the [Viewer component](viewer.component.md). Below is an example that shows how to use the `adf-viewer-extension`
to handle 3D data files:
to handle 3D data files. `contentLoaded` should be an `EventEmitter` that will emit as soon as the component responsible for rendering finishes.
```html
<adf-viewer [urlFile]="urlFile">
<ng-template #viewerExtensions>
<adf-viewer-extension [supportedExtensions]="['obj','3ds']" #extension>
<ng-template let-urlFileContent="urlFileContent" let-extension="extension">
<ng-template let-urlFileContent="urlFileContent" let-extension="extension" let-markAsLoaded="markAsLoaded">
<threed-viewer
[urlFile]="urlFileContent"
[extension]="extension">
[extension]="extension"
(contentLoaded)="markAsLoaded()">
</threed-viewer>
</ng-template>
</adf-viewer-extension>
@@ -239,17 +240,19 @@ You need to keep all instances of `adf-viewer-extension` inside `viewerExtension
<adf-viewer [urlFile]="urlFile">
<ng-template #viewerExtensions>
<adf-viewer-extension [supportedExtensions]="['xls','xlsx']" #extension>
<ng-template let-urlFileContent="urlFileContent">
<ng-template let-urlFileContent="urlFileContent" let-markAsLoaded="markAsLoaded">
<my-custom-xls-component
urlFileContent="urlFileContent">
urlFileContent="urlFileContent"
(contentLoaded)="markAsLoaded()">
</my-custom-xls-component>
</ng-template>
</adf-viewer-extension>
<adf-viewer-extension [supportedExtensions]="['txt']" #extension>
<ng-template let-urlFileContent="urlFileContent" >
<ng-template let-urlFileContent="urlFileContent" let-markAsLoaded="markAsLoaded" >
<my-custom-txt-component
urlFileContent="urlFileContent">
urlFileContent="urlFileContent"
(contentLoaded)="markAsLoaded()">
</my-custom-txt-component>
</ng-template>
</adf-viewer-extension>
+25 -71
View File
@@ -2,10 +2,10 @@
Title: Authentication Service
Added: v2.0.0
Status: Active
Last reviewed: 2019-03-19
Last reviewed: 2025-06-12
---
# [Authentication Service](../../../lib/core/src/lib/auth/services/authentication.service.ts "Defined in authentication.service.ts")
# Authentication Service
Provides authentication to ACS and APS.
@@ -13,103 +13,57 @@ Provides authentication to ACS and APS.
### Methods
- **addTokenToHeader**(headersArg?: `HttpHeaders`): [`Observable`](http://reactivex.io/documentation/observable.html)`<HttpHeaders>`<br/>
- **addTokenToHeader**(requestUrl: `string`, headersArg?: `HttpHeaders`): [`Observable`](http://reactivex.io/documentation/observable.html)`<HttpHeaders>`<br/>
Adds the auth token to an HTTP header using the 'bearer' scheme.
- _requestUrl:_ `string` - The URL of the request for which to set authentication headers.
- _headersArg:_ `HttpHeaders` - (Optional) Header that will receive the token
- **Returns** [`Observable`](http://reactivex.io/documentation/observable.html)`<HttpHeaders>` - The new header with the token added
- **getBearerExcludedUrls**()<br/>
Gets the set of URLs that the token bearer is excluded from.
- **getBpmLoggedUser**(): [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`UserRepresentation`](https://github.com/Alfresco/alfresco-js-api/blob/develop/src/api/activiti-rest-api/docs/UserRepresentation.md)`>`<br/>
Gets information about the user currently logged into APS.
- **Returns** [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`UserRepresentation`](https://github.com/Alfresco/alfresco-js-api/blob/develop/src/api/activiti-rest-api/docs/UserRepresentation.md)`>` - User information
- **getBpmUsername**(): `string`<br/>
Gets the BPM username
- **Returns** `string` - The BPM username
- **getEcmUsername**(): `string`<br/>
Gets the ECM username.
- **Returns** `string` - The ECM username
- **getRedirect**(): `string`<br/>
Gets the URL to redirect to after login.
- **Returns** `string` - The redirect URL
- **getTicketBpm**(): `string|null`<br/>
Gets the BPM ticket stored in the Storage.
- **Returns** `string|null` - The ticket or `null` if none was found
- **getTicketEcm**(): `string|null`<br/>
Gets the ECM ticket stored in the Storage.
- **Returns** `string|null` - The ticket or `null` if none was found
- **getTicketEcmBase64**(): `string|null`<br/>
Gets the BPM ticket from the Storage in Base 64 format.
- **Returns** `string|null` - The ticket or `null` if none was found
- **getToken**(): `string`<br/>
Gets the auth token.
- **Returns** `string` - Auth token string
- **handleError**(error: `any`): [`Observable`](http://reactivex.io/documentation/observable.html)`<any>`<br/>
Prints an error message in the console browser
- _error:_ `any` - Error message
- **Returns** [`Observable`](http://reactivex.io/documentation/observable.html)`<any>` - Object representing the error message
- **getUsername**(): `string`<br/>
Gets the username of the authenticated user.
- **Returns** `string` - Username of the authenticated user
- **getAuthHeaders**(requestUrl: `string`, headers: `HttpHeaders`): `HttpHeaders`<br/>
Gets and sets the necessary authentication headers for a given request URL.
- _requestUrl:_ `string` - The URL of the request for which to obtain authentication headers.
- _headers:_ `HttpHeaders` - The existing HTTP headers to which authentication details might be added.
- **Returns** `HttpHeaders` - The HTTP headers object, potentially updated with authentication tokens.
- **isALLProvider**(): `boolean`<br/>
Does the provider support both ECM and BPM?
- **Returns** `boolean` - True if both are supported, false otherwise
- **isAuthCodeFlow**(): `boolean`<br/>
- **Returns** `boolean` -
- **isBPMProvider**(): `boolean`<br/>
Does the provider support BPM?
- **Returns** `boolean` - True if supported, false otherwise
- **isBpmLoggedIn**(): `boolean`<br/>
Checks if the user is logged in on a BPM provider.
- **Returns** `boolean` - True if logged in, false otherwise
- **isECMProvider**(): `boolean`<br/>
Does the provider support ECM?
- **Returns** `boolean` - True if supported, false otherwise
- **isEcmLoggedIn**(): `boolean`<br/>
Checks if the user is logged in on an ECM provider.
- **Returns** `boolean` - True if logged in, false otherwise
- **isImplicitFlow**(): `boolean`<br/>
- **Returns** `boolean` -
- **isKerberosEnabled**(): `boolean`<br/>
Does kerberos enabled?
- **Returns** `boolean` - True if enabled, false otherwise
- **isLoggedIn**(): `boolean`<br/>
Checks if the user logged in.
- **Returns** `boolean` - True if logged in, false otherwise
- **isLoggedInWith**(provider: `string`): `boolean`<br/>
- _provider:_ `string` -
- **Returns** `boolean` -
- **isOauth**(): `boolean`<br/>
Does the provider support OAuth?
- **Returns** `boolean` - True if supported, false otherwise
- **isPublicUrl**(): `boolean`<br/>
- **Returns** `boolean` -
- **isRememberMeSet**(): `boolean`<br/>
Checks whether the "remember me" cookie was set or not.
- **Returns** `boolean` - True if set, false otherwise
- **login**(username: `string`, password: `string`, rememberMe: `boolean` = `false`): [`Observable`](http://reactivex.io/documentation/observable.html)`<Function>`<br/>
- **login**(username: `string`, password: `string`, rememberMe?: `boolean`): [`Observable`](http://reactivex.io/documentation/observable.html)`<{ type: string; ticket: any }>`<br/>
Logs the user in.
- _username:_ `string` - Username for the login
- _password:_ `string` - Password for the login
- _rememberMe:_ `boolean` - Stores the user's login details if true
- **Returns** [`Observable`](http://reactivex.io/documentation/observable.html)`<Function>` - Object with auth type ("ECM", "BPM" or "ALL") and auth ticket
- **logout**(): [`Observable`](http://reactivex.io/documentation/observable.html)`<any>`<br/>
Logs the user out.
- _rememberMe:_ `boolean` - (Optional) Stores the user's login details if true
- **Returns** [`Observable`](http://reactivex.io/documentation/observable.html)`<{ type: string; ticket: any }>` - An Observable that emits an object containing the authentication type (`type`) and the authentication ticket (`ticket`) upon successful login.
- **logout**(): [`Observable`](http://reactivex.io/documentation/observable.html)`<any>`<br/> Logs the user out.
- **Returns** [`Observable`](http://reactivex.io/documentation/observable.html)`<any>` - Response event called when logout is complete
- **reset**()<br/>
- **saveRememberMeCookie**(rememberMe: `boolean`)<br/>
Saves the "remember me" cookie as either a long-life cookie or a session cookie.
- _rememberMe:_ `boolean` - Enables a long-life cookie
- **setRedirect**(url?: [`RedirectionModel`](../../../lib/core/src/lib/auth/models/redirection.model.ts))<br/>
Sets the URL to redirect to after login.
- _url:_ [`RedirectionModel`](../../../lib/core/src/lib/auth/models/redirection.model.ts) - (Optional) URL to redirect to
- **ssoImplicitLogin**()<br/>
Logs the user in with SSO
- **reset**(): `void`<br/>Resets the authentication state of the service.
- **on**(event: `string`, listener: `Function`): `void`<br/> Adds an event listener for the specified event.
- **off**(event: `string`, listener?: `Function`): `void`<br/> Removes an event listener for the specified event.
- **once**(event: `string`, listener: `Function`): `void`<br/> Adds a one-time event listener for the specified event.
- **emit**(event: `string`, ...args: `any[]`): `void`<br/> Emits an event with optional arguments.
- **onLogin**: [`Subject`](https://reactivex.io/documentation/subject)`<any>`<br/> Emitted when the user logs in successfully.
- **onLogout**: [`Subject`](https://reactivex.io/documentation/subject)`<any>`<br/> Emitted when the user logs out.
- **onTokenReceived**: [`Subject`](https://reactivex.io/documentation/subject)`<any>`<br/> Emitted when an authentication token is received.
- **onError**: [`Observable`](http://reactivex.io/documentation/observable.html)`<any>`<br/> An Observable that emits an error object when an authentication-related error occurs.
## Details
@@ -40,6 +40,10 @@ Manipulates content related to a Process Instance or Task Instance in APS.
Gets the thumbnail for a related content file.
- _contentId:_ `number` - ID of the related content
- **Returns** [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`Blob`](https://developer.mozilla.org/en-US/docs/Web/API/Blob)`>` - Binary data of the thumbnail image
- **getContentRenditionTypePreview**(contentId: `number`): [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`Blob`](https://developer.mozilla.org/en-US/docs/Web/API/Blob)`>`<br/>
Gets the preview rendition for a related content file.
- _contentId:_ `number` - ID of the related content
- **Returns** [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`Blob`](https://developer.mozilla.org/en-US/docs/Web/API/Blob)`>` - Binary data of the related content
- **getFileContent**(contentId: `number`): [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`RelatedContentRepresentation`](https://github.com/Alfresco/alfresco-js-api/blob/master/src/alfresco-activiti-rest-api/docs/RelatedContentRepresentation.md)`>`<br/>
Gets the metadata for a related content item.
- _contentId:_ `number` - ID of the content item
@@ -325,6 +329,26 @@ The response looks like in this sample:
See `getProcessRelatedContent` and `getTaskRelatedContent` for how to get to the `contentId`.
#### getContentRenditionTypePreview(contentId: number): Observable`<Blob>`
Get the preview type rendition for a related content file. A content file might be for example an
MS Word document. This method would give you the PDF preview for this document,
if it has been generated:
```ts
const contentId = 1;
this.contentService.getContentRenditionTypePreview(contentId).subscribe(
res => {
console.log('Response Preview BLOB: ', res);
}, error => {
console.log('Error: ', error);
});
```
The preview BLOB response looks something like this:
`Blob(44101) {size: 44101, type: "application/pdf"}`
#### getProcessRelatedContent(processId: string): Observable`<any>`
Get related content items for passed in Process Instance ID, only metadata for related content is returned:
+1 -1
View File
@@ -55,4 +55,4 @@ The pages linked below contain the licenses for all third party dependencies of
- [ADF 7.0.0-alpha.6](license-info-7.0.0-alpha.6.md)
- [ADF 7.0.0-alpha.7](license-info-7.0.0-alpha.7.md)
- [ADF 7.0.0](license-info-7.0.0.md)
- [ADF 7.0.1](license-info-7.0.1.md)
- [ADF 8.0.0](license-info-8.0.0.md)
@@ -1,8 +1,8 @@
---
Title: License info, alfresco-ng2-components 7.0.1
Title: License info, alfresco-ng2-components 8.0.0
---
# License information for alfresco-ng2-components 7.0.1
# License information for alfresco-ng2-components 8.0.0
This page lists all third party libraries the project depends on.
@@ -10,23 +10,22 @@ This page lists all third party libraries the project depends on.
| Name | Version | License |
| --- | --- | --- |
| [@angular/animations](https://github.com/angular/angular) | 18.2.13 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@angular/cdk](https://github.com/angular/components) | 18.2.14 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@angular/common](https://github.com/angular/angular) | 18.2.13 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@angular/compiler](https://github.com/angular/angular) | 18.2.13 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@angular/core](https://github.com/angular/angular) | 18.2.13 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@angular/forms](https://github.com/angular/angular) | 18.2.13 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@angular/material-date-fns-adapter](https://github.com/angular/components) | 18.2.14 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@angular/material](https://github.com/angular/components) | 18.2.14 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@angular/platform-browser-dynamic](https://github.com/angular/angular) | 18.2.13 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@angular/platform-browser](https://github.com/angular/angular) | 18.2.13 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@angular/router](https://github.com/angular/angular) | 18.2.13 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@angular/animations](https://github.com/angular/angular) | 19.2.6 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@angular/cdk](https://github.com/angular/components) | 19.2.9 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@angular/common](https://github.com/angular/angular) | 19.2.6 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@angular/compiler](https://github.com/angular/angular) | 19.2.6 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@angular/core](https://github.com/angular/angular) | 19.2.6 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@angular/forms](https://github.com/angular/angular) | 19.2.6 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@angular/material-date-fns-adapter](https://github.com/angular/components) | 19.2.9 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@angular/material](https://github.com/angular/components) | 19.2.9 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@angular/platform-browser-dynamic](https://github.com/angular/angular) | 19.2.6 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@angular/platform-browser](https://github.com/angular/angular) | 19.2.6 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@angular/router](https://github.com/angular/angular) | 19.2.6 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@apollo/client](https://github.com/apollographql/apollo-client) | 3.13.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@cspell/eslint-plugin](https://github.com/streetsidesoftware/cspell) | 8.16.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@mat-datetimepicker/core](https://github.com/kuhnroyal/mat-datetimepicker) | 14.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@ngx-translate/core](https://github.com/ngx-translate/core) | 14.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@nx/webpack](https://github.com/nrwl/nx) | 20.4.6 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@valano/change-font-size](https://github.com/VitoAlbano/change-font-size) | 1.0.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@mat-datetimepicker/core](https://github.com/kuhnroyal/mat-datetimepicker) | 15.0.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| @ngx-translate/core | 16.0.4 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@nx/webpack](https://github.com/nrwl/nx) | 20.8.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [angular-oauth2-oidc-jwks](https://github.com/manfredsteyer/angular-oauth2-oidc) | 17.0.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [angular-oauth2-oidc](https://github.com/manfredsteyer/angular-oauth2-oidc) | 17.0.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [apollo-angular](https://github.com/kamilkisiela/apollo-angular) | 10.0.3 | [MIT](http://www.opensource.org/licenses/MIT) |
@@ -36,20 +35,16 @@ This page lists all third party libraries the project depends on.
| [dotenv-expand](https://github.com/motdotla/dotenv-expand) | 11.0.7 | [BSD-2-Clause](http://www.opensource.org/licenses/BSD-2-Clause) |
| dotenv-expand | 5.1.0 | [BSD-2-Clause](http://www.opensource.org/licenses/BSD-2-Clause) |
| [event-emitter](https://github.com/medikoo/event-emitter) | 0.3.5 | [MIT](http://www.opensource.org/licenses/MIT) |
| [graphql-ws](https://github.com/enisdenjo/graphql-ws) | 5.16.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [graphql-ws](https://github.com/enisdenjo/graphql-ws) | 6.0.5 | [MIT](http://www.opensource.org/licenses/MIT) |
| [material-icons](https://github.com/marella/material-icons) | 1.13.14 | [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0) |
| [minimatch](https://github.com/isaacs/minimatch) | 3.1.2 | [ISC](https://www.isc.org/downloads/software-support-policy/isc-license/) |
| [minimatch](https://github.com/isaacs/minimatch) | 5.1.6 | [ISC](https://www.isc.org/downloads/software-support-policy/isc-license/) |
| [minimatch](https://github.com/isaacs/minimatch) | 7.4.6 | [ISC](https://www.isc.org/downloads/software-support-policy/isc-license/) |
| [minimatch](https://github.com/isaacs/minimatch) | 9.0.3 | [ISC](https://www.isc.org/downloads/software-support-policy/isc-license/) |
| [minimatch](https://github.com/isaacs/minimatch) | 9.0.5 | [ISC](https://www.isc.org/downloads/software-support-policy/isc-license/) |
| [minimatch-browser](https://github.com/isaacs/minimatch) | 1.0.0 | [ISC](https://www.isc.org/downloads/software-support-policy/isc-license/) |
| [ng2-charts](https://github.com/valor-software/ng2-charts) | 4.1.1 | [ISC](https://www.isc.org/downloads/software-support-policy/isc-license/) |
| [node-fetch](https://github.com/node-fetch/node-fetch) | 3.3.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [pdfjs-dist](https://github.com/mozilla/pdf.js) | 5.1.91 | [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0) |
| [raphael](https://github.com/DmitryBaranovskiy/raphael) | 2.3.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [rxjs](https://github.com/reactivex/rxjs) | 7.8.1 | [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0) |
| [subscriptions-transport-ws](https://github.com/apollostack/subscriptions-transport-ws) | 0.11.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [rxjs](https://github.com/reactivex/rxjs) | 7.8.2 | [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0) |
| [superagent](https://github.com/ladjs/superagent) | 9.0.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [ts-morph](https://github.com/dsherret/ts-morph) | 20.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [ts-morph](https://github.com/dsherret/ts-morph) | 26.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [tslib](https://github.com/Microsoft/tslib) | 2.8.1 | [0BSD](http://landley.net/toybox/license.html) |
| [zone.js](https://github.com/angular/angular) | 0.14.10 | [MIT](http://www.opensource.org/licenses/MIT) |
| [zone.js](https://github.com/angular/angular) | 0.15.0 | [MIT](http://www.opensource.org/licenses/MIT) |
@@ -111,6 +111,7 @@ The template defined inside `empty-form` will be shown when no form definition i
| formSaved | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<`[`FormModel`](../../../lib/core/src/lib/form/components/widgets/core/form.model.ts)`>` | Emitted when the form is submitted with the `Save` or custom outcomes. |
| displayModeOn | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<`[`FormCloudDisplayModeConfiguration`](../../../lib/process-services-cloud/src/lib/services/form-fields.interfaces.ts)`>` | Emitted when a display mode configuration is turned on. |
| displayModeOff | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<`[`FormCloudDisplayModeConfiguration`](../../../lib/process-services-cloud/src/lib/services/form-fields.interfaces.ts)`>` | Emitted when a display mode configuration is turned off. |
| nextTaskCheckboxCheckedChanged | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<`[`MatCheckboxChange`](https://material.angular.io/components/checkbox/api#MatCheckboxChange)`>` | Emitted when the `Open next task` checkbox was toggled. |
## Details
@@ -37,6 +37,7 @@ export class YourService extends ScreenRenderingService {
[canClaimTask]="canClaimTask()"
[canUnclaimTask]="canUnclaimTask()"
[processInstanceId]="taskDetails.processInstanceId"
[rootProcessInstanceId]="taskDetails.rootProcessInstanceId"
[screenId]="screenId"
[showCancelButton]="showCancelButton"
[taskName]="taskDetails.name"
@@ -60,6 +61,7 @@ export class YourService extends ScreenRenderingService {
| canClaimTask | `boolean` | | Boolean informing if a task can be claimed. |
| canUnclaimTask | `boolean` | | Boolean informing if a task can be unclaimed. |
| processInstanceId | `string` | | Process Instance Id to fetch corresponding data. |
| rootProcessInstanceId | `string` | | Root Process Instance Id to fetch corresponding data. |
| readOnly | `boolean` | false | Toggle readonly state of the task. |
| showCancelButton | `boolean` | true | Toggle rendering of the `Cancel` button. |
| screenId | `string` | | Screen id to create dynamic component |
@@ -94,6 +96,7 @@ Dynamic component must implement logic for method switchToDisplayMode.
[canClaimTask]="canClaimTask()"
[canUnclaimTask]="canUnclaimTask()"
[processInstanceId]="taskDetails.processInstanceId"
[rootProcessInstanceId]="taskDetails.rootProcessInstanceId"
[screenId]="screenId"
[showCancelButton]="showCancelButton"
[taskName]="taskDetails.name"
@@ -33,34 +33,34 @@ Save and Complete buttons get disabled when at least one of the form's inputs ar
### Properties
| Name | Type | Default value | Description |
|---------------------------|---------------------------------------|---------------|---------------------------------------------------|
| appName | `string` | "" | App id to fetch corresponding form and values. |
| readOnly | `boolean` | false | Toggle readonly state of the task. |
| showCancelButton | `boolean` | true | Toggle rendering of the `Cancel` button. |
| showCompleteButton | `boolean` | true | Toggle rendering of the `Complete` button. |
| showRefreshButton | `boolean` | false | Toggle rendering of the `Refresh` button. |
| showTitle | `boolean` | true | Toggle rendering of the form title. |
| showValidationIcon | `boolean` | true | Toggle rendering of the `Validation` icon. |
| taskId | `string` | | Task id to fetch corresponding form and values. |
| displayModeConfigurations | `FormCloudDisplayModeConfiguration[]` | | The available display configurations for the form |
| Name | Type | Default value | Description |
| ------------------------- | ------------------------------------- | ------------- | ------------------------------------------------------------------- |
| appName | `string` | "" | App id to fetch corresponding form and values. |
| readOnly | `boolean` | false | Toggle readonly state of the task. |
| showCancelButton | `boolean` | true | Toggle rendering of the `Cancel` button. |
| showCompleteButton | `boolean` | true | Toggle rendering of the `Complete` button. |
| showRefreshButton | `boolean` | false | Toggle rendering of the `Refresh` button. |
| showTitle | `boolean` | true | Toggle rendering of the form title. |
| showValidationIcon | `boolean` | true | Toggle rendering of the `Validation` icon. |
| taskId | `string` | | Task id to fetch corresponding form and values. |
| displayModeConfigurations | `FormCloudDisplayModeConfiguration[]` | | The available display configurations for the form |
### Events
| Name | Type | Description |
|--------------------|---------------------------------------------------|--------------------------------------------------------------------------------------------------------|
| cancelClick | `EventEmitter<string>` | Emitted when the cancel button is clicked. |
| error | `EventEmitter<any>` | Emitted when any error occurs. |
| executeOutcome | `EventEmitter<FormOutcomeEvent>` | Emitted when any outcome is executed. Default behaviour can be prevented via `event.preventDefault()`. |
| formCompleted | `EventEmitter<FormModel>` | Emitted when the form is submitted with the `Complete` outcome. |
| formContentClicked | `EventEmitter<ContentLinkModel>` | Emitted when form content is clicked. |
| formSaved | `EventEmitter<FormModel>` | Emitted when the form is saved. |
| onTaskLoaded | `EventEmitter<TaskDetailsCloudModel>` | Emitted when a task is loaded. |
| taskClaimed | `EventEmitter<string>` | Emitted when the task is claimed. |
| taskCompleted | `EventEmitter<string>` | Emitted when the task is completed. |
| taskUnclaimed | `EventEmitter<string>` | Emitted when the task is unclaimed. |
| displayModeOn | `EventEmitter<FormCloudDisplayModeConfiguration>` | Emitted when a display mode configuration is turned on. |
| displayModeOff | `EventEmitter<FormCloudDisplayModeConfiguration>` | Emitted when a display mode configuration is turned off. |
| Name | Type | Description |
| ------------------------------ | ------------------------------------------------- | ------------------------------------------------------------------------------------------------------ |
| cancelClick | `EventEmitter<string>` | Emitted when the cancel button is clicked. |
| error | `EventEmitter<any>` | Emitted when any error occurs. |
| executeOutcome | `EventEmitter<FormOutcomeEvent>` | Emitted when any outcome is executed. Default behaviour can be prevented via `event.preventDefault()`. |
| formCompleted | `EventEmitter<FormModel>` | Emitted when the form is submitted with the `Complete` outcome. |
| formContentClicked | `EventEmitter<ContentLinkModel>` | Emitted when form content is clicked. |
| formSaved | `EventEmitter<FormModel>` | Emitted when the form is saved. |
| onTaskLoaded | `EventEmitter<TaskDetailsCloudModel>` | Emitted when a task is loaded. |
| taskClaimed | `EventEmitter<string>` | Emitted when the task is claimed. |
| taskCompleted | `EventEmitter<string>` | Emitted when the task is completed. |
| taskUnclaimed | `EventEmitter<string>` | Emitted when the task is unclaimed. |
| displayModeOn | `EventEmitter<FormCloudDisplayModeConfiguration>` | Emitted when a display mode configuration is turned on. |
| displayModeOff | `EventEmitter<FormCloudDisplayModeConfiguration>` | Emitted when a display mode configuration is turned off. |
#### Enabling fullscreen display for the form of the task
@@ -33,31 +33,33 @@ Based on property taskDetails: TaskDetailsCloudModel shows a form or a screen.
### Properties
| Name | Type | Default value | Description |
|---------------------------|---------------------------------------|---------------|---------------------------------------------------|
| appName | `string` | "" | App id to fetch corresponding form and values. |
| readOnly | `boolean` | false | Toggle readonly state of the task. |
| showCancelButton | `boolean` | true | Toggle rendering of the `Cancel` button. |
| showCompleteButton | `boolean` | true | Toggle rendering of the `Complete` button. |
| showTitle | `boolean` | true | Toggle rendering of the form title. |
| showValidationIcon | `boolean` | true | Toggle rendering of the `Validation` icon. |
| taskId | `string` | | Task id to fetch corresponding form and values. |
| displayModeConfigurations | `FormCloudDisplayModeConfiguration[]` | | The available display configurations for the form |
| Name | Type | Default value | Description |
| ------------------------- | ------------------------------------- | ------------- | ------------------------------------------------------------------- |
| appName | `string` | "" | App id to fetch corresponding form and values. |
| isNextTaskCheckboxChecked | `boolean` | false | Whether the `Open next task` checkbox is checked by default or not. |
| readOnly | `boolean` | false | Toggle readonly state of the task. |
| showCancelButton | `boolean` | true | Toggle rendering of the `Cancel` button. |
| showCompleteButton | `boolean` | true | Toggle rendering of the `Complete` button. |
| showNextTaskCheckbox | `boolean` | false | Toggle rendering of the `Open next task` checkbox. |
| showTitle | `boolean` | true | Toggle rendering of the form title. |
| showValidationIcon | `boolean` | true | Toggle rendering of the `Validation` icon. |
| taskId | `string` | | Task id to fetch corresponding form and values. |
| displayModeConfigurations | `FormCloudDisplayModeConfiguration[]` | | The available display configurations for the form |
### Events
| Name | Type | Description |
|--------------------|---------------------------------------------------|--------------------------------------------------------------------------------------------------------|
| cancelClick | `EventEmitter<string>` | Emitted when the cancel button is clicked. |
| error | `EventEmitter<any>` | Emitted when any error occurs. |
| executeOutcome | `EventEmitter<FormOutcomeEvent>` | Emitted when any outcome is executed. Default behaviour can be prevented via `event.preventDefault()`. |
| formContentClicked | `EventEmitter<ContentLinkModel>` | Emitted when form content is clicked. |
| formSaved | `EventEmitter<FormModel>` | Emitted when the form is saved. |
| onTaskLoaded | `EventEmitter<TaskDetailsCloudModel>` | Emitted when a task is loaded. |
| taskClaimed | `EventEmitter<string>` | Emitted when the task is claimed. |
| taskCompleted | `EventEmitter<string>` | Emitted when the task is completed. |
| taskUnclaimed | `EventEmitter<string>` | Emitted when the task is unclaimed. |
|
| Name | Type | Description |
| ------------------------------ | ------------------------------------- | ------------------------------------------------------------------------------------------------------ |
| cancelClick | `EventEmitter<string>` | Emitted when the cancel button is clicked. |
| error | `EventEmitter<any>` | Emitted when any error occurs. |
| executeOutcome | `EventEmitter<FormOutcomeEvent>` | Emitted when any outcome is executed. Default behaviour can be prevented via `event.preventDefault()`. |
| formContentClicked | `EventEmitter<ContentLinkModel>` | Emitted when form content is clicked. |
| formSaved | `EventEmitter<FormModel>` | Emitted when the form is saved. |
| nextTaskCheckboxCheckedChanged | `EventEmitter<MatCheckboxChange>` | Emitted when the `Open next task` checkbox was toggled. |
| onTaskLoaded | `EventEmitter<TaskDetailsCloudModel>` | Emitted when a task is loaded. |
| taskClaimed | `EventEmitter<string>` | Emitted when the task is claimed. |
| taskCompleted | `EventEmitter<string>` | Emitted when the task is completed. |
| taskUnclaimed | `EventEmitter<string>` | Emitted when the task is unclaimed. |
#### Enabling fullscreen display for the form of the task
@@ -30,8 +30,8 @@ Manage Task Filters, which are pre-configured Task Instance queries.
- _appId:_ `number` - ID of the target app
- _index:_ `number` - (Optional) of the filter (optional)
- **Returns** `UserTaskFilterRepresentation` - The newly created filter
- **getInvolvedTasksFilterInstance**(appId: `number`, index?: `number`): `UserTaskFilterRepresentation`<br/>
Creates and returns a filter for "Involved" task instances.
- **getOverdueTasksFilterInstance**(appId: `number`, index?: `number`): `UserTaskFilterRepresentation`<br/>
Creates and returns a filter for "Overdue" task instances.
- _appId:_ `number` - ID of the target app
- _index:_ `number` - (Optional) of the filter (optional)
- **Returns** `UserTaskFilterRepresentation` - The newly created filter
@@ -40,8 +40,8 @@ Manage Task Filters, which are pre-configured Task Instance queries.
- _appId:_ `number` - ID of the target app
- _index:_ `number` - (Optional) of the filter (optional)
- **Returns** `UserTaskFilterRepresentation` - The newly created filter
- **getQueuedTasksFilterInstance**(appId: `number`, index?: `number`): `UserTaskFilterRepresentation`<br/>
Creates and returns a filter for "Queued Tasks" task instances.
- **getUnassignedTasksFilterInstance**(appId: `number`, index?: `number`): `UserTaskFilterRepresentation`<br/>
Creates and returns a filter for "Unassigned Tasks" task instances.
- _appId:_ `number` - ID of the target app
- _index:_ `number` - (Optional) of the filter (optional)
- **Returns** `UserTaskFilterRepresentation` - The newly created filter
@@ -55,6 +55,11 @@ Manage Task Filters, which are pre-configured Task Instance queries.
- _taskName:_ `string` - Name of the filter
- _appId:_ `number` - (Optional) ID of the app for the filter
- **Returns** `ObservableUserTaskFilterRepresentation>` - Details of task filter
- **updateTaskFilter**(filterId: `number`, updatedFilter: `UserTaskFilterRepresentation`): `Observable<UserTaskFilterRepresentation>`<br/>
Updates the instance of the filter.
- filterId:_ `number` - ID of a filter to update
- updatedFilter:_ `UserTaskFilterRepresentation` - new filter body
- **Returns** `Observable<UserTaskFilterRepresentation>` - Updated filter instance.
- **getTaskListFilters**(appId?: `number`): `UserTaskFilterRepresentation[]>`<br/>
Gets all task filters for a process app.
- _appId:_ `number` - (Optional) Optional ID for a specific app
@@ -84,16 +89,16 @@ The response is an array of `UserTaskFilterRepresentation` objects:
filters:
0: {id: 10, appId: 2, name: "Involved Tasks", recent: true, icon: "glyphicon-align-left", …}
1: {id: 9, appId: 2, name: "My Tasks", recent: false, icon: "glyphicon-inbox", …}
2: {id: 11, appId: 2, name: "Queued Tasks", recent: false, icon: "glyphicon-record", …}
2: {id: 11, appId: 2, name: "Unassigned Tasks", recent: false, icon: "glyphicon-record", …}
3: {id: 12, appId: 2, name: "Completed Tasks", recent: false, icon: "glyphicon-ok-sign", …}
4: {id: 4004, appId: 2, name: "Completed Tasks", recent: false, icon: "glyphicon-ok-sign", …}
5: {id: 4005, appId: 2, name: "My Tasks", recent: false, icon: "glyphicon-inbox", …}
6: {id: 4006, appId: 2, name: "Queued Tasks", recent: false, icon: "glyphicon-record", …}
6: {id: 4006, appId: 2, name: "Unassigned Tasks", recent: false, icon: "glyphicon-record", …}
7: {id: 4007, appId: 2, name: "Involved Tasks", recent: false, icon: "glyphicon-align-left", …}
```
These filters can now be used to get matching task instances for the process app with ID 2,
such as 'Involved Tasks', 'My Tasks', 'Queued Tasks', and 'Completed Tasks'.
such as 'Involved Tasks', 'My Tasks', 'Unassigned Tasks', and 'Completed Tasks'.
### Importing
+1 -1
View File
@@ -9,7 +9,7 @@ The first **General Availability** release was v2.0.0.
## General Availability
- [7.0.1](RelNote-7.0.1.md)
- [8.0.0](RelNote-8.0.0.md)
- [7.0.0](RelNote-7.0.0.md)
- [7.0.0-alpha.7](RelNote-7.0.0-alpha.7.md)
- [7.0.0-alpha.6](RelNote-7.0.0-alpha.6.md)
-8
View File
@@ -1,8 +0,0 @@
---
Title: Changelog for alfresco-ng2-components v7.0.1
---
# Changelog
- [051b82684f](https://github.com/Alfresco/alfresco-ng2-components/commit/051b82684f) AAE-34959 Allow disabling withCredentials for the identity providers that disallow credentials (#10859)
- [b4eee9d631](https://github.com/Alfresco/alfresco-ng2-components/commit/b4eee9d631) AAE-34675 Fix default selection required (#10860)
+129
View File
@@ -0,0 +1,129 @@
---
Title: Changelog for alfresco-ng2-components v8.0.0
---
# Changelog
- [7aa07ef525](https://github.com/Alfresco/alfresco-ng2-components/commit/7aa07ef525) AAE-36614 new provideShell api (#11006)
- [2ebee4c024](https://github.com/Alfresco/alfresco-ng2-components/commit/2ebee4c024) AAE-36615 new provideI18N api (#11007)
- [b563e283c1](https://github.com/Alfresco/alfresco-ng2-components/commit/b563e283c1) [ACS-9789] Multiple styles issues for metadata sidebar (#11015)
- [f1bdbf63b0](https://github.com/Alfresco/alfresco-ng2-components/commit/f1bdbf63b0) AAE-36368 Fixing labels and form-fields on content-ee and apa (#10982)
- [0651dc25d5](https://github.com/Alfresco/alfresco-ng2-components/commit/0651dc25d5) [ACS-9790] Fix Tags and Categories content is missing during editing other panel (#11004)
- [ec145fb73c](https://github.com/Alfresco/alfresco-ng2-components/commit/ec145fb73c) [ADF-5583] Update style to make version visible outside dialog (#11005)
- [450a4a0a49](https://github.com/Alfresco/alfresco-ng2-components/commit/450a4a0a49) [ACS-9789] Multiple styles issues for metadata sidebar (#11002)
- [11cb2ea688](https://github.com/Alfresco/alfresco-ng2-components/commit/11cb2ea688) AAE-36484 improved standalone support for Core (#10998)
- [6a3623bd76](https://github.com/Alfresco/alfresco-ng2-components/commit/6a3623bd76) AAE-35676 Cleanup Open Next Task (#10952)
- [5438eef9db](https://github.com/Alfresco/alfresco-ng2-components/commit/5438eef9db) AAE-36260 global test setup (#10970)
- [e96f5b3c48](https://github.com/Alfresco/alfresco-ng2-components/commit/e96f5b3c48) [AAE-36397] ADF viewer image is no longer cropped (#10996)
- [54fd097fab](https://github.com/Alfresco/alfresco-ng2-components/commit/54fd097fab) [ACS-9327] Add prohibited symbols validation for Categories dialog (#10985)
- [9bed60befc](https://github.com/Alfresco/alfresco-ng2-components/commit/9bed60befc) AAE-30842 Fix rendering small devices again (#10986)
- [c863da0c5d](https://github.com/Alfresco/alfresco-ng2-components/commit/c863da0c5d) [MNT-24459] Aspect list get all aspects when not all were fetched by first call (#10980)
- [951b22e098](https://github.com/Alfresco/alfresco-ng2-components/commit/951b22e098) Angular 19 migration (#10795)
- [c7f28d54d6](https://github.com/Alfresco/alfresco-ng2-components/commit/c7f28d54d6) [ADF-5581] Reset filterValue when navigating to a new folder to ensur… (#10978)
- [d776c7c77d](https://github.com/Alfresco/alfresco-ng2-components/commit/d776c7c77d) AAE-35310 Displaying different text fields on an eform doesn&#39;t align vertically or horizontally (#10979)
- [6dafcb4447](https://github.com/Alfresco/alfresco-ng2-components/commit/6dafcb4447) [ADF-5580] emit commentAdded event from adf-comments component (#10966)
- [5d043e6987](https://github.com/Alfresco/alfresco-ng2-components/commit/5d043e6987) [PRODSEC-10305] Bump @nx/webpack &amp; webpack-dev-server (#10976)
- [57713dbe6e](https://github.com/Alfresco/alfresco-ng2-components/commit/57713dbe6e) [MNT-25175] configured scripts to execute are listed by node id and not by script name (#10969)
- [8b3b6ffbca](https://github.com/Alfresco/alfresco-ng2-components/commit/8b3b6ffbca) AAE-36173 switch to TranslatePipe (#10968)
- [16f42be08e](https://github.com/Alfresco/alfresco-ng2-components/commit/16f42be08e) AAE-35976 Adding auto required instead of manually handling styles manually (#10956)
- [dcab68d78a](https://github.com/Alfresco/alfresco-ng2-components/commit/dcab68d78a) AAE-35632 Priority filter unit tests (#10965)
- [f40107de33](https://github.com/Alfresco/alfresco-ng2-components/commit/f40107de33) AAE-34482 Modelling inconsistencies in mat form fields label alignments ii (#10929)
- [c16417cbff](https://github.com/Alfresco/alfresco-ng2-components/commit/c16417cbff) [ACS-9250] Adjust viewer to display properly under parent without overlay mode (#10950)
- [27502d5d67](https://github.com/Alfresco/alfresco-ng2-components/commit/27502d5d67) AAE-34902 Updating styles for input controls to maintain the ui consistency with studio hxp (#10900)
- [a4072aca74](https://github.com/Alfresco/alfresco-ng2-components/commit/a4072aca74) AAE-35694 Update section-start-form with Sections in Row (#10947)
- [22b62804d5](https://github.com/Alfresco/alfresco-ng2-components/commit/22b62804d5) AAE-35882 Studio modelling forms required dropdown has double asterisk (#10948)
- [eda59a1de8](https://github.com/Alfresco/alfresco-ng2-components/commit/eda59a1de8) [ACS-8746] yellow warning color (#10883)
- [3009fa6dec](https://github.com/Alfresco/alfresco-ng2-components/commit/3009fa6dec) AAE-35848 Fix dynamic viewer container scaling (#10932)
- [8cfc8d32f2](https://github.com/Alfresco/alfresco-ng2-components/commit/8cfc8d32f2) AAE-35855 Security fixes (#10933)
- [cdc7553915](https://github.com/Alfresco/alfresco-ng2-components/commit/cdc7553915) [MNT-24923] legal hold hold capabilities are not verified properly (#10930)
- [f8a75d4af7](https://github.com/Alfresco/alfresco-ng2-components/commit/f8a75d4af7) Viewer renderer stop loading when subsequent renderer throws error (#10931)
- [31c2cb2162](https://github.com/Alfresco/alfresco-ng2-components/commit/31c2cb2162) AAE-35728 Add aria label to viewer loading bars (#10927)
- [2c4764f89e](https://github.com/Alfresco/alfresco-ng2-components/commit/2c4764f89e) Adds loading state accessibility (#10926)
- [e2693f9304](https://github.com/Alfresco/alfresco-ng2-components/commit/e2693f9304) AAE-35668 Sending empty string instead of null after clearing value from numeric field (#10925)
- [5d9acaec0d](https://github.com/Alfresco/alfresco-ng2-components/commit/5d9acaec0d) [AAE-35649] Viewer renderer wait until subsequent renderers will finish (#10924)
- [0c147513cc](https://github.com/Alfresco/alfresco-ng2-components/commit/0c147513cc) AAE-35521 Refactor AuthenticationService unit tests (#10922)
- [920b7d3585](https://github.com/Alfresco/alfresco-ng2-components/commit/920b7d3585) AAE-34641 Fix ViewerRenderComponent hanging when in a mat-tab (#10913)
- [643b5f723a](https://github.com/Alfresco/alfresco-ng2-components/commit/643b5f723a) Revert &#34;AAE-34641 Refactor viewer-render loading (#10868)&#34; (#10912)
- [a6ab5fcbdd](https://github.com/Alfresco/alfresco-ng2-components/commit/a6ab5fcbdd) [ACS-9696] fix failing upgrade rxjs from 7.8.1 to 7.8.2 (#10911)
- [35970b4278](https://github.com/Alfresco/alfresco-ng2-components/commit/35970b4278) AAE-21284 Add migration guide for Angular 17 to 18 (#10910)
- [379fbbb508](https://github.com/Alfresco/alfresco-ng2-components/commit/379fbbb508) [MNT-25043] Skip adding json as content type for FormData body requests (#10903)
- [cdb65bf204](https://github.com/Alfresco/alfresco-ng2-components/commit/cdb65bf204) [ACS-9377] remove the join button for records management library for user s without permissions for that library (#10901)
- [8cb7a1719f](https://github.com/Alfresco/alfresco-ng2-components/commit/8cb7a1719f) AAE-34656 Hide all counters in Workspace which do not provide value (#10896)
- [1971980216](https://github.com/Alfresco/alfresco-ng2-components/commit/1971980216) [ACS-9619] Issues with trimming file&#39;s name in viewer (#10858)
- [467a19f3ec](https://github.com/Alfresco/alfresco-ng2-components/commit/467a19f3ec) AAE-34959 Fix withCredentials can not be set by app.config.json (#10897)
- [d1e48f9c33](https://github.com/Alfresco/alfresco-ng2-components/commit/d1e48f9c33) [ACS-9247] Extend library column context (#10894)
- [79163cbae0](https://github.com/Alfresco/alfresco-ng2-components/commit/79163cbae0) AAE-34482 Fixing label and alignment issues in forms (#10898)
- [06921783bf](https://github.com/Alfresco/alfresco-ng2-components/commit/06921783bf) AAE-33907 Adds input for &#39;Open next task&#39; checkbox (#10823)
- [1462560e6e](https://github.com/Alfresco/alfresco-ng2-components/commit/1462560e6e) AAE-35057 Change position of adf-cloud-form-content-card-fullscreen to relative (#10888)
- [413fce8cb7](https://github.com/Alfresco/alfresco-ng2-components/commit/413fce8cb7) AAE-34641 Refactor viewer-render loading (#10868)
- [f2fa458fe5](https://github.com/Alfresco/alfresco-ng2-components/commit/f2fa458fe5) AAE-33909 Ensure onProcessFinish event triggers when invoked from onFormLoaded event (#10867)
- [e37ef279e4](https://github.com/Alfresco/alfresco-ng2-components/commit/e37ef279e4) AAE-32986 Add custom-form-widget process to simpleapp (#10881)
- [2cc3ba4d6b](https://github.com/Alfresco/alfresco-ng2-components/commit/2cc3ba4d6b) [ACS-7706] create tags return promise tag paging instead of tag entry (#10869)
- [3fea334468](https://github.com/Alfresco/alfresco-ng2-components/commit/3fea334468) [AAE-34479] added class for custom outcome button (#10882)
- [b3900b96ed](https://github.com/Alfresco/alfresco-ng2-components/commit/b3900b96ed) AAE-34972 Test PR for adf link (#10861)
- [2fd960bf5c](https://github.com/Alfresco/alfresco-ng2-components/commit/2fd960bf5c) AAE-34885 Form with tabs has incomplete frame in preview (#10880)
- [8b47434c37](https://github.com/Alfresco/alfresco-ng2-components/commit/8b47434c37) AAE-33052 Deprecate custom theme (#10870)
- [fe53c5d5a8](https://github.com/Alfresco/alfresco-ng2-components/commit/fe53c5d5a8) MNT-25095 Update the documentation (#10864)
- [051b82684f](https://github.com/Alfresco/alfresco-ng2-components/commit/051b82684f) AAE-34959 Allow disabling withCredentials for the identity providers that disallow credentials (#10859)
- [b4eee9d631](https://github.com/Alfresco/alfresco-ng2-components/commit/b4eee9d631) AAE-34675 Fix default selection required (#10860)
- [3ad13d3e38](https://github.com/Alfresco/alfresco-ng2-components/commit/3ad13d3e38) AAE-34992 Improve crowdin update strategy (#10865)
- [efd6e5b1b0](https://github.com/Alfresco/alfresco-ng2-components/commit/efd6e5b1b0) AAE-34826 Incorrect scale for rendered pdf documents (#10857)
- [6257510056](https://github.com/Alfresco/alfresco-ng2-components/commit/6257510056) Ng18 migration (#10683)
- [28137d8a09](https://github.com/Alfresco/alfresco-ng2-components/commit/28137d8a09) Revert &#34;AAE-34641 Fix form loading when tab is changed (#10843)&#34; (#10862)
- [58a5732043](https://github.com/Alfresco/alfresco-ng2-components/commit/58a5732043) AAE-34888 fixing padding issues in form widgets (#10853)
- [685bc387b5](https://github.com/Alfresco/alfresco-ng2-components/commit/685bc387b5) AAE-34641 Fix form loading when tab is changed (#10843)
- [f0c90594ca](https://github.com/Alfresco/alfresco-ng2-components/commit/f0c90594ca) AAE-34731 Hide the open next task checkbox for the Start Process view (#10842)
- [ec47d8eac8](https://github.com/Alfresco/alfresco-ng2-components/commit/ec47d8eac8) AAE-34869 fixing padding issue (#10850)
- [f2845a36c6](https://github.com/Alfresco/alfresco-ng2-components/commit/f2845a36c6) [AAE-29434] Adding process with process variables to simpleapp (#10845)
- [acf9e3e11c](https://github.com/Alfresco/alfresco-ng2-components/commit/acf9e3e11c) Improvement/aae 30909 enhance user experience with tab navigation within the form (#10844)
- [adeb82c137](https://github.com/Alfresco/alfresco-ng2-components/commit/adeb82c137) AAE-34335 fix for styling discrepancies in form-widgets (#10841)
- [48defa2b5f](https://github.com/Alfresco/alfresco-ng2-components/commit/48defa2b5f) AAE-34594 Remove redundant scroll bar from form renderer (#10840)
- [9ee0e5ee3e](https://github.com/Alfresco/alfresco-ng2-components/commit/9ee0e5ee3e) AAE-19688 Persist feature flag overrides in session storage (#10832)
- [0f1200b5a2](https://github.com/Alfresco/alfresco-ng2-components/commit/0f1200b5a2) AAE-34514 Disable next task checkbox for forms (#10824)
- [997e82a6b0](https://github.com/Alfresco/alfresco-ng2-components/commit/997e82a6b0) AAE-34543 Remove unused mat-selectors (#10830)
- [b1113c51a7](https://github.com/Alfresco/alfresco-ng2-components/commit/b1113c51a7) AAE-34493 Improved internal mat-selectors (#10829)
- [dc35ef8a6f](https://github.com/Alfresco/alfresco-ng2-components/commit/dc35ef8a6f) AAE-34478 Hide Open next task checkbox on claim screen (#10822)
- [cb220968cf](https://github.com/Alfresco/alfresco-ng2-components/commit/cb220968cf) [AAE-34481] Field error message has preserved space (#10820)
- [50ad04aeb3](https://github.com/Alfresco/alfresco-ng2-components/commit/50ad04aeb3) [ACS-9564] Corrected models after change of Knowledge Retrieval answer structure (#10817)
- [b1fca8dd4b](https://github.com/Alfresco/alfresco-ng2-components/commit/b1fca8dd4b) fix datetime picker theming (#10821)
- [3d598cd0c2](https://github.com/Alfresco/alfresco-ng2-components/commit/3d598cd0c2) AAE-34470 Ignore content type of fetched pdfjs worker (#10818)
- [7b67c7cf3a](https://github.com/Alfresco/alfresco-ng2-components/commit/7b67c7cf3a) AAE-34458 Cleanup deprecated styles, bug fixes (#10819)
- [f34bbf59be](https://github.com/Alfresco/alfresco-ng2-components/commit/f34bbf59be) AAE-33589 Get task variables when preferences are updated (#10813)
- [9575fe633b](https://github.com/Alfresco/alfresco-ng2-components/commit/9575fe633b) AAE-34439 Cleanup Styles (#10815)
- [c6652f32b2](https://github.com/Alfresco/alfresco-ng2-components/commit/c6652f32b2) [ACS-959] [E2E] updated e2eapp v2 (#10816)
- [d6317a7b87](https://github.com/Alfresco/alfresco-ng2-components/commit/d6317a7b87) [ACS-9227] Fixed interactive controls must not be nested issue in datatable.component.html (#10681)
- [d829d8eefb](https://github.com/Alfresco/alfresco-ng2-components/commit/d829d8eefb) AAE-34390 Clean old theming files (#10800)
- [4cfda763b6](https://github.com/Alfresco/alfresco-ng2-components/commit/4cfda763b6) Simulate a change to upstream adf (#10814)
- [ff0885c265](https://github.com/Alfresco/alfresco-ng2-components/commit/ff0885c265) AAE-34328 Remove additional space in amount widget currency (#10812)
- [068bcc89d3](https://github.com/Alfresco/alfresco-ng2-components/commit/068bcc89d3) Create a git tag for every release (#10811)
- [69f92bcc61](https://github.com/Alfresco/alfresco-ng2-components/commit/69f92bcc61) [ACS-9565] Updated e2e application (#10810)
- [d0b2915c88](https://github.com/Alfresco/alfresco-ng2-components/commit/d0b2915c88) Revert &#34;AAE-29010 GH actions rerun after approval (#10772) (#10774)&#34; (#10809)
- [fdd4f6c081](https://github.com/Alfresco/alfresco-ng2-components/commit/fdd4f6c081) AAE-22975 update to the latest version of pdfjs-dist library (#10780)
- [0dc45e95af](https://github.com/Alfresco/alfresco-ng2-components/commit/0dc45e95af) [MNT-24715] App with APS does not show display value of dynamic table (#10799)
- [1f73f7fe40](https://github.com/Alfresco/alfresco-ng2-components/commit/1f73f7fe40) AAE-33955 Add placeholder for data table widget (preview) (#10796)
- [6fb9474d46](https://github.com/Alfresco/alfresco-ng2-components/commit/6fb9474d46) [ACS-9552] Add obsolete task list filters migration (#10798)
- [014fb9cfa8](https://github.com/Alfresco/alfresco-ng2-components/commit/014fb9cfa8) AAE-34100 Add group-with-sections process to simpleapp (#10791)
- [a426338f94](https://github.com/Alfresco/alfresco-ng2-components/commit/a426338f94) [MNT-24950] Fix process file preview button state (#10790)
- [c8f9bd21ea](https://github.com/Alfresco/alfresco-ng2-components/commit/c8f9bd21ea) [ACS-9454] Create upgrade guide for ADF 7.0.0 (#10779)
- [baf0e4552e](https://github.com/Alfresco/alfresco-ng2-components/commit/baf0e4552e) AAE-34135 add confirmation (#10783)
- [659805ab20](https://github.com/Alfresco/alfresco-ng2-components/commit/659805ab20) AAE-33090 Open Next Task Checkbox (#10757)
- [f6c446498a](https://github.com/Alfresco/alfresco-ng2-components/commit/f6c446498a) AAE-29010 GH actions rerun after approval (#10772) (#10774)
- [137088d4f6](https://github.com/Alfresco/alfresco-ng2-components/commit/137088d4f6) AAE-33939 Angular migration documentation (#10775)
- [8eef4e6eec](https://github.com/Alfresco/alfresco-ng2-components/commit/8eef4e6eec) [ACS-9440] Language in lang attribute is not changed after changing language (#10776)
- [82175bad80](https://github.com/Alfresco/alfresco-ng2-components/commit/82175bad80) [ACS-9435] Resolve a11y issues for &#39;Add use/group&#39; dialog (#10773)
- [cd63f67e0a](https://github.com/Alfresco/alfresco-ng2-components/commit/cd63f67e0a) [ACS-5184] Show progress spinner on file navigation (#10596)
- [2d21340947](https://github.com/Alfresco/alfresco-ng2-components/commit/2d21340947) [AAE-33096] added rootProcessInstanceId to dynamic component (#10762)
- [8e0ea373f0](https://github.com/Alfresco/alfresco-ng2-components/commit/8e0ea373f0) [ACS-9406] Add getContentRenditionTypePreview to process-content service (#10743)
- [90f5951cd8](https://github.com/Alfresco/alfresco-ng2-components/commit/90f5951cd8) AAE-33449 HXPMNT-748 Hidden dropdown validation (#10760)
- [555e6c027f](https://github.com/Alfresco/alfresco-ng2-components/commit/555e6c027f) AAE-33025 Updated process definition type to support constant values (#10751)
- [142c6ae754](https://github.com/Alfresco/alfresco-ng2-components/commit/142c6ae754) AAE-33340 Async Form Enrichment - Spinner doesnt hide on process completion (#10749)
- [abaf7df9c6](https://github.com/Alfresco/alfresco-ng2-components/commit/abaf7df9c6) AAE-33007 Display empty data table without error (#10744)
- [9bbbc8193d](https://github.com/Alfresco/alfresco-ng2-components/commit/9bbbc8193d) AAE-33137 Asynchronous Form Enrichment does Not Populate Date Fields (#10746)
- [eb2f543822](https://github.com/Alfresco/alfresco-ng2-components/commit/eb2f543822) upgrade guide (#10732)
- [6703b8b7da](https://github.com/Alfresco/alfresco-ng2-components/commit/6703b8b7da) AAE-32763 Custom column visibility is not persistent after refresh (#10728)
- [3475098f32](https://github.com/Alfresco/alfresco-ng2-components/commit/3475098f32) fix undefiend tooltip (#10731)
- [083755b41a](https://github.com/Alfresco/alfresco-ng2-components/commit/083755b41a) [ACS-5190] document name text alignement and long name trim issue (#10715)
- [015ce8a99e](https://github.com/Alfresco/alfresco-ng2-components/commit/015ce8a99e) [ACS-9375] Transparent background for hovered spinner (#10691)
- [b643054a15](https://github.com/Alfresco/alfresco-ng2-components/commit/b643054a15) AAE-32999 Removed subscriptions-transport-ws feature flag (#10727)
- [838b3e78b7](https://github.com/Alfresco/alfresco-ng2-components/commit/838b3e78b7) [ACS-9398] Add snackbar notifications for favorite node directive (#10714)
- [e8d1328244](https://github.com/Alfresco/alfresco-ng2-components/commit/e8d1328244) Post-release version bump (#10726)
-1
View File
@@ -10,7 +10,6 @@ Github only: true
| [**Prerequisites and the requirements**](creating-your-first-adf-application.md) | Basic | In this tutorial you are going to learn how to create a very basic (and almost “empty”) ADF-based application that you can start enriching with features, behaviors and customizations. The creation of this basic ADF-based application is possible through a scaffolding tool called [Yeoman]\(https://yeoman.io/ "https://yeoman.io/"), which makes this task very straightforward. |
| [**Creating your Alfresco JavaScript application**](creating-javascript-app-using-alfresco-js-api.md) | Basic | In this tutorial you will learn how to create an application in JavaScript from scratch to interact with Alfresco. |
| [**Using ADF Components**](using-components.md) | Basic | In this tutorial, you will learn how to extend, use, and configure ADF Components. |
| [**Basic theming**](basic-theming.md) | Beginner | In this tutorial you will see how to theme an ADF app by modifying the CSS. |
| [**Working with a Data Table**](working-with-data-table.md) | Intermediate | In this tutorial you will learn how to populate a DataTable component. |
| [**Working with the Nodes API Service**](working-with-nodes-api-service.md) | Intermediate | In this tutorial you will learn how to use the [`NodesApiService`](../core/services/nodes-api.service.md). |
| [**Working with Nodes using the JS API**](working-with-nodes-js-api.md) | Intermediate | In this tutorial you will learn how to use the [`AlfrescoCoreRestApi`](https://github.com/Alfresco/alfresco-js-api/tree/master/src/alfresco-core-rest-api). |
-91
View File
@@ -1,91 +0,0 @@
---
Title: Basic theming
Level: Beginner
---
# Basic theming
In this tutorial you will see how to theme an ADF app by modifying the CSS.
As detailed in the [user guide page about theming](../user-guide/theming.md), you can easily customize the [Cascading Style Sheets](https://en.wikipedia.org/wiki/Cascading_Style_Sheets) used by an ADF application. The focus of this tutorial is ADF apps built using Yeoman, but you can use the same principles to customize the themes in any ADF application.
## About the `adf-core` theming
As described in the [user guide about theming](../user-guide/theming.md), eveything happens in the `src/custom-style.scss` file defining the *primary*, the *accent* and the *warn* set of palettes. For a detailed description of the different types of palettes, check the [user guide about theming](../user-guide/theming.md).
As you can see directly in the `css` file, the sets of palettes are configured using some predefined variables used in the source code as described below.
$primary: mat-palette($alfresco-accent-orange);
$accent: mat-palette($alfresco-accent-purple);
$warn: mat-palette($alfresco-warn);
The `mat-palette` function is used to define the [Material Design](https://material.io/design/introduction/) Palettes from a collection of colors and `$alfresco-ecm-cyan`, `$alfresco-accent-purple` and `$alfresco-warn` are variables declared locally in the project to define the colors to be used in the application.
As you would expect, changing the parameter of the `mat-palette` function will change the colours of the entire application together.
All the available variables containing the set of palettes for the application can be found in the `node_modules/@alfresco/adf-core/_theming.css` file. In that file you can find:
- `$alfresco-ecm-cyan`
- `$alfresco-dev-teal`
- `$alfresco-ecm-blue`
- `$alfresco-bpm-green`
- `$alfresco-warn`
- `$alfresco-accent-purple`
- `$alfresco-accent-orange`
Check the `_theming.css` file to see the latest changes and how the variables are structured and defined.
## Changing the palette of your application
As an example, let's change the set of palettes for the primary colours. In the `src/custom-style.scss` file, change the `$primary` definition as follows.
$primary: mat-palette($alfresco-ecm-blue);
Once done, save the `custom-style.scss` file and you will see the application refreshed with different colours. That's all there is to it.
## Developing your own palette
In some cases you might want to do something more "customized", and you might want to choose your preferred colours for your application. In this case you simply need to develop your own palette in a local variable and use it as the primary, accent or warn palette.
As an example, let's edit the `src/custom-style.scss` file adding the following source code immediately before the definition of the `$primary` variable.
$my-own-brown: (
50: #f9f2ec,
100: #ecd9c6,
200: #dfbf9f,
300: #d2a679,
400: #c68c53,
500: #ac7339,
600: #86592d,
700: #604020,
800: #392613,
900: #130d06,
A100: #e6ccb3,
A200: #cc9966,
A400: #996633,
A700: #4d3319,
contrast: (
50: $black-87-opacity,
100: $black-87-opacity,
200: $black-87-opacity,
300: $black-87-opacity,
400: $black-87-opacity,
500: white,
600: white,
700: white,
800: $white-87-opacity,
900: $white-87-opacity,
A100: $black-87-opacity,
A200: white,
A400: white,
A700: white,
)
);
When you have done this, replace the `$primary` definition as follows and save the `custom-style.scss` file:
$primary: mat-palette($my-own-brown);
After a few seconds you will see the application refreshing with different colours in the upper menu. In the following screenshot you can see how the new palette looks:
![theming_palette](../docassets/images/theming_palette.png)
-6
View File
@@ -165,9 +165,3 @@ Inside the `<adf-login-footer/>` or `<adf-login-header/>` tags, we can put anyth
Are you up for a challenge? Explore the [Login component](../core/components/login.component.md)
docs to find out how you can change the logo and background image!
# Next steps
We have some tutorials for you to explore. Here are a few suggested ones to try next:
- [Basic theming](basic-theming.md)
+155
View File
@@ -0,0 +1,155 @@
---
Title: Upgrading from ADF v5.0 to v6.0
---
# Upgrading from ADF v6.0 to v6.9
This guide provides instructions on how to upgrade your v6.0.0 ADF projects to v6.9.0.
## Before you begin
Always perform upgrades on "clean" project state, backup your changes or make a project backup.
```shell
# Recommended clean up
nx reset && rm -rf .angular .nx dist node_modules nxcache tmp
```
## .env file
If you are using .env file, make sure to update it with the latest configuration:
```yaml
APP_CONFIG_OAUTH2_HOST="<oauth2_host>"
APP_CONFIG_ENABLE_MOBILE_APP_SWITCH=false
APP_CONFIG_PLUGIN_AOS=true
APP_CONFIG_PLUGIN_CONTENT_SERVICE=true
APP_CONFIG_PLUGIN_FOLDER_RULES=true
APP_CONFIG_ENABLE_DOWNLOAD_PROMPT=false
APP_CONFIG_ENABLE_DOWNLOAD_PROMPT_REMINDERS=false
APP_CONFIG_DOWNLOAD_PROMPT_DELAY=30
APP_CONFIG_DOWNLOAD_PROMPT_REMINDER_DELAY=30
APP_CONFIG_ENABLE_FILE_AUTO_DOWNLOAD=false
APP_CONFIG_FILE_AUTO_DOWNLOAD_SIZE_THRESHOLD_IN_MB=10
```
> [!IMPORTANT]
> The configuration values are for migration purposes only.
> Please refer to the documentation for more details on the configuration settings and values.
## Library versions
Update the `package.json` file with the latest library versions:
- Angular: 14.1.3
- Alfresco Component Libraries: 6.9.0
- Alfresco JS-API: 7.6.1
```json
{
"dependencies": {
"@alfresco/adf-core": "6.9.0",
"@alfresco/adf-content-services": "6.9.0",
"@alfresco/adf-process-services-cloud": "6.9.0",
"@alfresco/adf-insights": "6.9.0",
"@alfresco/js-api": "7.6.1"
}
}
```
> [!NOTE]
> You can also refer to the Alfresco Content Application [4.4.1 release](https://github.com/Alfresco/alfresco-content-app/blob/4.4.1/package.json) for the latest version of the libraries.
### Remove old dependencies
```json
{
"dependencies": {
"@angular/material-moment-adapter": "14.1.3",
"@mat-datetimepicker/moment": "^9.0.68",
"moment": "^2.29.4",
"moment-es6": "1.0.0",
"@angular/flex-layout": "^14.0.0-beta.40"
}
}
```
### Add extra dependencies
```json
{
"dependencies": {
"@angular/material-date-fns-adapter": "14.1.3",
"date-fns": "^2.30.0"
}
}
```
Reinstall your dependencies and make initial build
```sh
npm i --legacy-peer-deps
npm run build
```
### Update code
If you are using the `@alfresco/js-api` library, make sure to update the code according to the latest version:
| Before | After |
|------------------------|--------------------|
| MinimalNodeEntity | NodeEntry |
| SiteBody | SiteBodyCreate |
| MinimalNodeEntryEntity | Node |
| MinimalNode | Node |
| PathInfoEntity | PathInfo |
| SiteBody | SiteBodyCreate |
| FavoriteBody | FavoriteBodyCreate |
| PathElementEntity | PathElement |
#### NullInjectorError: No provider for RedirectAuthService!
If you are facing the `NullInjectorError: No provider for RedirectAuthService!` error, make sure to add the `AuthModule` to the `AppModule`:
```typescript
import { AuthModule } from '@alfresco/adf-core';
@NgModule({
imports: [
// other imports
AuthModule.forRoot({ useHash: true })
]
})
export class AppModule {}
```
For the development purposes, you may want to update the `app.config.json`:
```json5
{
"oauth2": {
// other configurations
"skipIssuerCheck": true,
"strictDiscoveryDocumentValidation": false
}
}
```
### Document List component
For document list components, remove the `display` property if used:
```html
[display]="documentDisplayMode$ | async"
```
## Final steps
After you have updated the code, make sure to test your application thoroughly to ensure that everything is working as expected.
You can build and run your application using the following commands:
```sh
npm run build
npm start content-ce
```
+183
View File
@@ -0,0 +1,183 @@
---
Title: Upgrading from ADF v6.9 to v7.0
---
# Upgrading from ADF v6.9 to v7.0
This guide provides instructions on how to upgrade your v6.9.0 ADF projects to v7.0.0.
## Before you begin
Always perform upgrades on "clean" project state, backup your changes or make a project backup.
```shell
# Recommended clean up
nx reset && rm -rf .angular .nx dist node_modules nxcache tmp
```
## Libraries updates
Node version used is now 20.18.1.
### Breaking changes with libraries:
- Angular: 17.1.3
- Angular Material: 17.1.2
- Typescript: 5.3.3
- RXJS: 7.8.1
- NX: 20.0.0
Angular updates can be done with "Update Guide" from Angular documentation.
### Added libraries:
- eslint-plugin-storybook
- jasmine-marbles
- @editorjs/paragraph
- editorjs-text-alignment-blocktune
- graphql-ws
### Deleted libraries:
- protractor
- selenium-webdriver
- webdriver-manager
- shx
- monaco-editor
- ngx-monaco-editor-v2
- @types/selenium-webdriver
- protractor-retry-angular-cli
- protractor-screenshoter-plugin
- protractor-smartrunner
Reinstall your dependencies and make initial build:
```shell
npm i
npm run build
```
Review your applications as some styles and classes of Angular Material components might have changed.
## Demo-Shell and e2e
Demo shell and its e2e tests have been deleted.
## Material module
Material module is deprecated and will be removed in a future release. Please import components and modules independently.
## Standalone components
Most components have been changed to "standalone" and their modules have been deleted. Please import components directly.
| Deleted modules |
|--------------------------------|
| AttachmentModule |
| AppsListModule |
| TaskListModule |
| ProcessListModule |
| ProcessUserInfoModule |
| TaskCommentsModule |
| ProcessCommentsModule |
| PeopleModule |
| DynamicTableModule |
| ContentWidgetModule |
| AnalyticsProcessModule |
| DiagramsModule |
| ButtonsMenuModule |
| SitesDropdownModule |
| DataColumnModule |
| ContentUserInfoModule |
| AppCardViewModule |
| AppCloudSharedModule |
| FileViewModule |
| AppProcessListModule |
| FolderDirectiveModule |
| ContentTypeModule |
| SortingPickerModule |
| ProcessServicesCloudPipeModule |
| StartTaskCloudModule |
| ProcessDirectiveModule |
| StartProcessCloudModule |
| TaskDirectiveModule |
## Removed components, directives and pipes
| Deleted components, directives and pipes |
|------------------------------------------|
| IsIncludedPipe |
| TabLabelsPipe |
| BooleanPipe |
| FilterOutArrayObjectsByPropPipe |
| LocalizedRolePipe |
| MimeTypeIconPipe |
| FilterStringPipe |
| ProcessNameCloudPipe |
| FormStylePipe |
| CancelProcessDirective |
| MomentDateTimePipe |
| MomentDatePipe |
## A11y changes
Components have been reviewed and changed to fix most important issues with accessibility. Please test your application thoroughly to ensure that everything is working as expected, as some components have changed their structure, html roles or attributes.
| Components changed | Description of changes |
|--------------------------------|----------------------------------------------------------------------|
| Tooltips | Tooltips have been changed from Angular Material to standard tooltip |
| Search Page and Search Filters | mat-chip-option replaced with mat-chip |
| Columns Selector | role attribute changes |
| DataTable | role attribute changes |
| Aspect List | structure of html changed |
## Guards
All guards have been converted to functional guards (using the new Angular functional route guard pattern). Please review any custom guards in your application and adapt them to the functional pattern as needed.
Example of converting a class-based guard to a functional guard:
```typescript
// Before (class-based)
@Injectable({
providedIn: 'root'
})
export class AuthGuard implements CanActivate {
constructor(private authService: AuthService, private router: Router) {}
canActivate() {
if (this.authService.isLoggedIn()) {
return true;
}
this.router.navigate(['/login']);
return false;
}
}
// After (functional)
export const authGuard = () => {
const authService = inject(AuthService);
const router = inject(Router);
if (authService.isLoggedIn()) {
return true;
}
return router.parseUrl('/login');
};
```
## Model and interface changes
Some models and interfaces have changed:
| Before | After | Notes |
|-------------------------------|-----------------------|------------------------------|
| TaskDetailsModel | TaskRepresentation | Rename all instances |
| IdentityUserFilterInterface | Removed | Use type definitions instead |
| IdentityUserServiceInterface | Removed | Use type definitions instead |
| TaskCloudServiceInterface | Removed | Use type definitions instead |
## Final steps
After you have updated the code, make sure to test your application thoroughly to ensure that everything is working as expected. Pay special attention to areas that use the renamed models or interfaces, and make sure all components are properly imported as standalone components.
If you encounter any issues during the upgrade process, refer to the Angular update guide or the ADF community for assistance.
+164
View File
@@ -0,0 +1,164 @@
---
Title: Upgrading from ADF v7.0 to v8.0
---
# Upgrading from ADF v7.0 to v8.0
This guide provides instructions for upgrading your v7.0.0 ADF projects to v8.0.0.
## Before you begin
Always perform upgrades on a "clean" project state. Back up your changes or create a full project backup before proceeding.
```shell
# Recommended clean up
nx reset && rm -rf .angular .nx dist node_modules nxcache tmp
```
## Libraries
Update your dependencies to the versions introduced in the 8.0.0 release:
```json
{
"dependencies": {
"@alfresco/adf-core": "8.0.0",
"@alfresco/adf-content-services": "8.0.0",
"@alfresco/adf-process-services-cloud": "8.0.0",
"@alfresco/adf-insights": "8.0.0",
"@alfresco/adf-extensions": "8.0.0",
"@alfresco/adf-cli": "8.0.0",
"@alfresco/eslint-plugin-eslint-angular": "8.0.0",
"@alfresco/adf-testing": "8.0.0",
"@alfresco/js-api": "9.0.0"
}
}
```
Currently used Node version: 22.14.0.
### Breaking changes
Major version updates have been applied to the following core libraries:
- Angular: 19.2.6
- Angular Material: 19.2.9
- Typescript: 5.8.2
> Details on Angular update can be found in *Update Guide* from Angular documentation.
### Added libraries
```json
{
"dependencies": {
"node-fetch": "^3.3.2"
},
"devDependencies": {
"resize-observer-polyfill": "^1.5.1",
"webdriver-manager": "12.1.9"
}
}
```
### Deleted libraries
```json
{
"devDependencies": {
"mini-css-extract-plugin": "X.X.X",
"css-loader": "X.X.X"
}
}
```
Reinstall your dependencies and perform an initial build:
```shell
npm i
npm run build
```
Review your applications as some styles and classes of Angular Material components might have changed.
## Deprecations
The following table lists deprecated features and modules that will be removed in upcoming releases. Consider replacing them as soon as you update ADF to minimize future technical debt.
| Name | Notes |
|-------------------------------|-----------------------------------------------------------------------------------------------|
| Custom Theme | Refer to [Custom Theme documentation](../../lib/core/custom-theme/README.md) |
| ShellModule | Refer to [Shell documentation](../../lib/core/shell/README.md) |
| FormBaseModule | Use standalone components instead. |
| CoreTestingModule | Use standalone components instead. |
| ProcessServicesCloudModule | Refer to [ProcessServicesCloudModule replacement](#processservicescloudmodule-replacement) |
### ProcessServicesCloudModule replacement
To replace this module, import the standalone components directly or use the following provider API to replicate its behavior:
```typescript
providers: [
provideTranslations('adf-process-services-cloud', 'assets/adf-process-services-cloud'),
provideCloudPreferences(),
provideCloudFormRenderer(),
{ provide: TASK_LIST_CLOUD_TOKEN, useClass: TaskListCloudService }
]
```
## New features and APIs
You can start using the new features and APIs introduced in the 8.0.0 release.
### XMLHttpRequest.withCredentials
Support for disabling the `withCredentials` property in `app.config.json` for identity providers that disallow credentials has been introduced. You can configure it as shown below:
```json
{
"auth": {
"withCredentials": false
}
}
```
### provideShell
The new provideShell API for providing the main application layout can replace the `withRoutes(routes: Routes | AppShellRoutesConfig)` method, as shown below.
```typescript
import { provideShell } from '@alfresco/adf-core/shell';
provideShell(
{
routes: [],
appService: AppService,
authGuard: AuthGuard,
navBar: {
minWidth: 0,
maxWidth: 100
}
}
)
```
### provideI18N
The new `provideI18N` API for providing translation can replace `provideTranslations('app', 'assets')` method, as shown below.
```typescript
import { provideI18N } from '@alfresco/adf-core';
provideI18N(
{
defaultLanguage: "en", // optional, defaults to "en"
assets: [['en', '/assets/i18n/en.json'], ['fr', '/assets/i18n/fr.json']]
}
)
```
## Final steps
After updating your code, thoroughly test your application to ensure everything works as expected.
If you encounter any issues during the upgrade process, refer to the Angular update guide or seek assistance from the ADF community.
-1
View File
@@ -20,7 +20,6 @@ on an item below to see the corresponding guide page.
- [Theming](theming.md)
- [Right-to-left language support](rtl-support.md)
- [Transclusion](transclusion.md)
- [Typography](typography.md)
- [Walkthrough - adding indicators to highlight information about a node](metadata-indicators.md)
- [kerberos](kerberos.md)
+26 -67
View File
@@ -4,16 +4,18 @@ Added: v4.1.0
---
## Form Extensibility for APA Form Widget
This page describes how you can customize ADF forms to your own specification.
## Contents
There are two ways to customize the form
- [Replace default form widgets with custom components](#replace-default-form-widgets-with-apa-form-widgets)
- [Replace custom form widget with custom components](#replace-custom-form-widgets-with-custom-components)
## Replace default form widgets with APA form widgets
This is an example of replacing the standard `Text` [widget](../../lib/testing/src/lib/core/pages/form/widgets/widget.ts) with a custom component for all APA forms rendered within the `<adf-form>` component.
This is an example of replacing the standard `Text` with a custom component for all APA forms rendered within the `<adf-form>` component.
1. Create a simple form with some `Text` widgets:
@@ -24,8 +26,10 @@ This is an example of replacing the standard `Text` [widget](../../lib/testing/s
```ts
import { Component } from '@angular/core';
import { WidgetComponent } from '@alfresco/adf-core';
@Component({
selector: 'custom-editor',
standalone: true,
template: `
<div style="color: red">Look, I'm a APA custom editor!</div>
`
@@ -33,40 +37,14 @@ This is an example of replacing the standard `Text` [widget](../../lib/testing/s
export class CustomEditorComponent extends WidgetComponent {}
```
2. Add it to the application module or any custom module that is imported into the application one:
2. Import the [`FormRenderingService`](../core/services/form-rendering.service.md) in the feature module, or application module (recommended: `ProcessServicesExtensionModule`), and override the default mapping:
```ts
import { NgModule } from '@angular/core';
import { CustomEditorComponent } from './custom-editor.component';
@NgModule({
declarations: [ CustomEditorComponent ],
exports: [ CustomEditorComponent ]
})
export class CustomEditorsModule {}
```
3. Every custom widget component should be added into the the collections `declarations` and `exports`. If you decided to store custom widgets in a separate dedicated module (and optionally as a separate re-distributable library) don't forget to import it into the main application:
```ts
@NgModule({
imports: [
// ...
CustomEditorsModule
// ...
],
providers: [],
bootstrap: [ AppComponent ]
})
export class AppModule {}
```
4. Import the [`FormRenderingService`](../core/services/form-rendering.service.md) into any of your Views and override the default mapping, for example:
```ts
import { Component } from '@angular/core';
import { CustomEditorComponent } from './custom-editor.component';
@Component({...})
export class MyView {
import { FormRenderingService } from '@alfresco/adf-core';
@NgModule({...})
export class ProcessServicesExtensionModule {
constructor(formRenderingService: FormRenderingService) {
this.formRenderingService.register({
'text': () => CustomEditorComponent
@@ -75,10 +53,12 @@ This is an example of replacing the standard `Text` [widget](../../lib/testing/s
}
```
5. At runtime the form should look similar to the following:
> [!IMPORTANT]
> The widget should be registered outside the custom widget component, otherwise the widget will not be registered correctly.
![custom text widget](../docassets/images/apa-simple-override-form.png)
At runtime the form should look similar to the following:
![custom text widget](../docassets/images/apa-simple-override-form.png)
## Replace custom form widgets with custom components
@@ -105,54 +85,30 @@ When displayed in a task, the field will look similar to the following:
To render the missing content:
1. Create an Angular component:
1. Create a standalone Angular component:
```ts
import { Component } from '@angular/core';
import { WidgetComponent } from '@alfresco/adf-core';
@Component({
selector: 'app-demo-widget',
standalone: true,
template: `<div style="color: green">ADF version of custom form widget</div>`
})
export class DemoWidgetComponent extends WidgetComponent {}
```
2. Place it inside the custom module:
2. Import the [`FormRenderingService`](../core/services/form-rendering.service.md) in the feature module, or application module (recommended: `ProcessServicesExtensionModule`), and override the default mapping:
```ts
import { NgModule } from '@angular/core';
import { DemoWidgetComponent } from './demo-widget.component';
@NgModule({
declarations: [ DemoWidgetComponent ],
exports: [ DemoWidgetComponent ]
})
export class CustomWidgetsModule {}
```
3. Import it into your Application Module:
```ts
@NgModule({
imports: [
// ...
CustomWidgetsModule
// ...
],
providers: [],
bootstrap: [ AppComponent ]
})
export class AppModule {}
```
4. Import the [`FormRenderingService`](../core/services/form-rendering.service.md) in any of your Views and provide the new mapping:
```ts
import { Component } from '@angular/core';
import { DemoWidgetComponent } from './demo-widget.component';
@Component({...})
export class MyView {
import { FormRenderingService } from '@alfresco/adf-core';
@NgModule({/*...*/})
export class ProcessServicesExtensionModule {
constructor(formRenderingService: FormRenderingService) {
this.formRenderingService.register({
formRenderingService.register({
'custom-editor': () => DemoWidgetComponent
});
}
@@ -163,6 +119,9 @@ At runtime you should now see your custom Angular component rendered in place of
![adf form widget runtime](../docassets/images/apa-resolved-widget.png)
> [!IMPORTANT]
> The widget should be registered outside the custom widget component, otherwise the widget will not be registered correctly.
## See Also
- [Extensibility](./extensibility.md)
+1 -33
View File
@@ -32,36 +32,6 @@ an [online palette design tool](http://mcg.mbitson.com/).
See the [Material Design Style page](https://material.io/guidelines/style/color.html#) for
more information about color concepts.
## Using a pre-built theme
Angular Material comes prepackaged with several pre-built theme css files. These theme files also
include all of the styles for core (styles common to all components), so you only have to include a
single css file for Angular Material in your app.
You can include a theme file directly into your application from
`@alfresco/adf-core/prebuilt-themes`
Available pre-built themes:
* `adf-blue-orange.css`
* `adf-blue-purple.css`
* `adf-cyan-orange.css`
* `adf-cyan-purple.css`
* `adf-green-orange.css`
* `adf-green-purple.css`
* `adf-indigo-pink.css`
* `adf-pink-bluegrey.css`
* `adf-purple-green.css`
If you're using Angular CLI you can include one of the prebuilt themes in your `styles.scss` file:
```css
@import '~@alfresco/adf-core/prebuilt-themes/adf-blue-orange.css';
```
Or you can add it directly in your index.html
```html
<link href="node_modules/ng2-alfresco-core/prebuilt-themes/adf-blue-orange.css" rel="stylesheet">
```
## Defining a custom theme
When you want more customization than a pre-built theme offers, you can create your own theme file. You only need to include the packages you actually use in your application.
@@ -92,8 +62,6 @@ $theme: mat.define-light-theme((
@include alfresco-material-theme($theme);
```
Notes: if you are using the Generator or the demo shell you need only to change the`/src/custom-style.scss` with your set of colors
### Multiple themes
You can create multiple themes for your application:
@@ -135,7 +103,7 @@ $dark-theme: mat.define-dark-theme((
...like above
}
```
Any component with the `add-dark-theme` class will use the dark theme, while other components will fall back to the default.
Any component with the `add-dark-theme` class will use the dark theme, while other components will fall back to the default.
## Default reusable class
-90
View File
@@ -1,90 +0,0 @@
---
Title: Typography
Added: v2.0.0
---
# ADF Typography
Typography configuration lets you change the style of the text in your ADF app.
## Customization
To get started you need to include your custom font in the `/src/index.html` header:
```html
<link href="https://fonts.googleapis.com/css?family=Muli" rel="stylesheet">
```
When adding custom typography, please be aware of angular material version
(there are two different versions of typography levels: 2014 and 2018). Current
version is 14.
After you need to change your `/src/custom-style.scss` to include the new font:
```scss
/*
* Include only packages that you are using (and core by default)
*/
@use '@angular/material' as mat;
@import '~@angular/material/theming';
@import '~ng2-alfresco-core/styles/theming';
@import '~ng2-alfresco-core/styles/index';
@import '~ng2-activiti-analytics/styles/index';
@import '~ng2-activiti-diagrams/styles/index';
@import '~ng2-activiti-form/styles/index';
@import '~ng2-activiti-processlist/styles/index';
@import '~ng2-activiti-tasklist/styles/index';
@import '~ng2-alfresco-datatable/styles/index';
@import '~ng2-alfresco-documentlist/styles/index';
@import '~ng2-alfresco-login/styles/index';
@import '~ng2-alfresco-upload/styles/index';
@import '~ng2-alfresco-userinfo/styles/index';
$custom-typography: mat.define-typography-config(
$font-family: 'Muli, Roboto, "Helvetica Neue", sans-serif',
$display-4: mat.define-typography-level(112px, 112px, 300),
$display-3: mat.define-typography-level(56px, 56px, 400),
$display-2: mat.define-typography-level(45px, 48px, 400),
$display-1: mat.define-typography-level(34px, 40px, 400),
$headline: mat.define-typography-level(24px, 32px, 400),
$title: mat.define-typography-level(20px, 32px, 500),
$subheading-2: mat.define-typography-level(16px, 28px, 400),
$subheading-1: mat.define-typography-level(15px, 24px, 400),
$body-2: mat.define-typography-level(14px, 24px, 500),
$body-1: mat.define-typography-level(14px, 20px, 400),
$caption: mat.define-typography-level(12px, 20px, 400),
$button: mat.define-typography-level(14px, 14px, 500),
$input: mat.define-typography-level(16px, 1.25, 400)
);
@include mat.core();
$primary: mat.define-palette($alfresco-accent-orange);
$accent: mat.define-palette($alfresco-accent-purple);
$warn: mat.define-palette($alfresco-warn);
$theme: mat.define-light-theme(
(
color: (
primary: $primary,
accent: $accent,
warn: $warn,
),
typography: $custom-typography
)
);
@include angular-material-theme($theme);
@include alfresco-core-theme($theme);
@include adf-analytics-theme($theme);
@include adf-diagrams-theme($theme);
@include adf-form-theme($theme);
@include adf-processlist-theme($theme);
@include adf-tasklist-theme($theme);
@include alfresco-datatable-theme($theme);
@include alfresco-documentlist-theme($theme);
@include alfresco-login-theme($theme);
@include alfresco-upload-theme($theme);
@include alfresco-userinfo-theme($theme);
```
for more details about typography refer to [Material 2 documentation](https://github.com/angular/material2/blob/master/guides/typography.md)
+1 -1
View File
@@ -52,4 +52,4 @@ The pages linked below contain the audit for all third party dependencies of ADF
- [ADF 7.0.0-alpha.6](audit-info-7.0.0-alpha.6.md)
- [ADF 7.0.0-alpha.7](audit-info-7.0.0-alpha.7.md)
- [ADF 7.0.0](audit-info-7.0.0.md)
- [ADF 7.0.1](audit-info-7.0.1.md)
- [ADF 8.0.0](audit-info-8.0.0.md)
-27
View File
@@ -1,27 +0,0 @@
---
Title: Audit info, alfresco-ng2-components 7.0.1
---
# Audit information for alfresco-ng2-components 7.0.1
This page lists the security audit of the dependencies this project depends on.
## Risks
- Critical risk: 0
- High risk: 1
- Moderate risk: 2
- Low risk: 1
Dependencies analyzed:
## Libraries
| Severity | Module | Vulnerable versions |
| --- | --- | --- |
|moderate | @babel/runtime | &#34;&lt;7.26.10&#34; |
|low | formidable | &#34;3.1.1-canary.20211030 - 3.5.2&#34; |
|moderate | http-proxy-middleware | &#34;1.3.0 - 2.0.8&#34; |
|high | pdfjs-dist | &#34;&lt;=4.1.392&#34; |
+23
View File
@@ -0,0 +1,23 @@
---
Title: Audit info, alfresco-ng2-components 8.0.0
---
# Audit information for alfresco-ng2-components 8.0.0
This page lists the security audit of the dependencies this project depends on.
## Risks
- Critical risk: 0
- High risk: 0
- Moderate risk: 0
- Low risk: 0
Dependencies analyzed:
## Libraries
| Severity | Module | Vulnerable versions |
| --- | --- | --- |
Binary file not shown.
-8
View File
@@ -37,14 +37,6 @@ process-services-cloud/**/*.d.ts
!config/karma-test-shim.js!
*.tgzf
core/prebuilt-themes/
/package/
/bundles/
index.d.ts
/.happypack
process-services/_theming.scss
content-services/_theming.scss
core/_theming.scss
insights/_theming.scss
process-services-cloud/_theming.scss
+42 -31
View File
@@ -1,20 +1,20 @@
{
"name": "@alfresco/adf-cli",
"version": "7.0.1",
"version": "9.0.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "@alfresco/adf-cli",
"version": "7.0.1",
"version": "9.0.0",
"license": "Apache-2.0",
"dependencies": {
"@alfresco/js-api": ">=8.0.0-alpha.7-0",
"@alfresco/js-api": ">=9.0.0",
"commander": "^6.2.1",
"ejs": "^3.1.9",
"license-checker": "^25.0.1",
"node-fetch": "^2.7.0",
"rxjs": "^6.6.6",
"rxjs": "7.8.2",
"shelljs": "^0.8.3",
"spdx-license-list": "^5.0.0"
},
@@ -30,15 +30,37 @@
}
},
"node_modules/@alfresco/js-api": {
"version": "8.0.0-alpha.7-12984503308",
"resolved": "https://registry.npmjs.org/@alfresco/js-api/-/js-api-8.0.0-alpha.7-12984503308.tgz",
"integrity": "sha512-ua8YgR6BHO751wKclLCQeJEByLJbLl5xmfQqEDJyRlnMvDCk+v7a5e2ibF58meQkmstR+CkIXi5ZlW9YhBKtZg==",
"version": "9.0.0",
"resolved": "https://registry.npmjs.org/@alfresco/js-api/-/js-api-9.0.0.tgz",
"integrity": "sha512-tkVc3vCmbyp1cAJOtga/c5kApWmkj7lBmnJk0M+Jx/aek5mUQkXvDKlpPBoE0QR8UHKEKgB6HgwmaOMumYQVAw==",
"license": "Apache-2.0",
"dependencies": {
"event-emitter": "^0.3.5",
"superagent": "^9.0.1",
"tslib": "^2.6.1"
}
},
"node_modules/@noble/hashes": {
"version": "1.8.0",
"resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz",
"integrity": "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==",
"license": "MIT",
"engines": {
"node": "^14.21.3 || >=16"
},
"funding": {
"url": "https://paulmillr.com/funding/"
}
},
"node_modules/@paralleldrive/cuid2": {
"version": "2.2.2",
"resolved": "https://registry.npmjs.org/@paralleldrive/cuid2/-/cuid2-2.2.2.tgz",
"integrity": "sha512-ZOBkgDwEdoYVlSeRbYYXs0S9MejQofiVYoTbKzy/6GQa39/q5tQU2IX46+shYnUkpEl3wc+J6wRlar7r2EK2xA==",
"license": "MIT",
"dependencies": {
"@noble/hashes": "^1.1.5"
}
},
"node_modules/@types/ejs": {
"version": "3.1.2",
"resolved": "https://registry.npmjs.org/@types/ejs/-/ejs-3.1.2.tgz",
@@ -435,14 +457,18 @@
}
},
"node_modules/formidable": {
"version": "3.5.1",
"resolved": "https://registry.npmjs.org/formidable/-/formidable-3.5.1.tgz",
"integrity": "sha512-WJWKelbRHN41m5dumb0/k8TeAx7Id/y3a+Z7QfhxP/htI9Js5zYaEDtG8uMgG0vM0lOlqnmjE99/kfpOYi/0Og==",
"version": "3.5.4",
"resolved": "https://registry.npmjs.org/formidable/-/formidable-3.5.4.tgz",
"integrity": "sha512-YikH+7CUTOtP44ZTnUhR7Ic2UASBPOqmaRkRKxRbywPTe5VxF7RRCck4af9wutiZ/QKM5nME9Bie2fFaPz5Gug==",
"license": "MIT",
"dependencies": {
"@paralleldrive/cuid2": "^2.2.2",
"dezalgo": "^1.0.4",
"hexoid": "^1.0.0",
"once": "^1.4.0"
},
"engines": {
"node": ">=14.0.0"
},
"funding": {
"url": "https://ko-fi.com/tunnckoCore/commissions"
}
@@ -576,14 +602,6 @@
"node": ">= 0.4"
}
},
"node_modules/hexoid": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/hexoid/-/hexoid-1.0.0.tgz",
"integrity": "sha512-QFLV0taWQOZtvIRIAdBChesmogZrtuXvVWsFHZTk2SU+anspqZ2vMnoLg7IE1+Uk16N19APic1BuF8bC8c2m5g==",
"engines": {
"node": ">=8"
}
},
"node_modules/hosted-git-info": {
"version": "2.8.9",
"resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz",
@@ -1035,21 +1053,14 @@
}
},
"node_modules/rxjs": {
"version": "6.6.7",
"resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz",
"integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==",
"version": "7.8.2",
"resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz",
"integrity": "sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==",
"license": "Apache-2.0",
"dependencies": {
"tslib": "^1.9.0"
},
"engines": {
"npm": ">=2.0.0"
"tslib": "^2.1.0"
}
},
"node_modules/rxjs/node_modules/tslib": {
"version": "1.14.1",
"resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
"integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
},
"node_modules/set-function-length": {
"version": "1.2.2",
"resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz",
+3 -3
View File
@@ -1,7 +1,7 @@
{
"name": "@alfresco/adf-cli",
"description": "Alfresco ADF cli and utils",
"version": "7.0.1",
"version": "9.0.0",
"author": "Hyland Software, Inc. and its affiliates",
"bin": {
"adf-cli": "bin/adf-cli",
@@ -20,12 +20,12 @@
"dist": "rm -rf ../../dist/libs/cli && npm run build && cp -R ./bin ../../dist/libs/cli && cp -R ./resources ../../dist/libs/cli && cp -R ./templates ../../dist/libs/cli && cp ./package.json ../../dist/libs/cli"
},
"dependencies": {
"@alfresco/js-api": ">=8.0.0-alpha.7",
"@alfresco/js-api": ">=9.0.0",
"commander": "^6.2.1",
"ejs": "^3.1.9",
"license-checker": "^25.0.1",
"node-fetch": "^2.7.0",
"rxjs": "^6.6.6",
"rxjs": "7.8.2",
"shelljs": "^0.8.3",
"spdx-license-list": "^5.0.0"
},
Binary file not shown.
-38
View File
@@ -1,38 +0,0 @@
function DisableOutputWebpackPlugin(options) {
if (options && options.test && !Array.isArray(options.test))
options.test = [options.test]
this.options = options
}
DisableOutputWebpackPlugin.prototype.apply = function(compiler) {
compiler.hooks.emit.tapAsync('DisableOutputWebpackPlugin', (compilation, callback) => {
if (this.options && this.options.test) {
if (Object.keys(compilation.assets).length === 0 ) {
throw Error ('Error: The asset pre-theme is not there!')
}
Object.keys(compilation.assets).forEach((asset) => {
let output = true
this.options.test.some((regex) => {
if (asset.match(regex) != null) {
output = false
return true
}
return false
})
if (!output)
delete compilation.assets[asset]
});
} else {
Object.keys(compilation.assets).forEach((asset) => {
delete compilation.assets[asset]
})
}
callback();
});
};
module.exports = DisableOutputWebpackPlugin;
-51
View File
@@ -1,51 +0,0 @@
const MiniCssExtractPlugin = require('mini-css-extract-plugin');
const DisableOutputWebpackPlugin = require('./index');
const path = require("path");
const CssMinimizerPlugin = require("css-minimizer-webpack-plugin");
module.exports = {
mode: 'production',
optimization: {
minimizer: [new CssMinimizerPlugin({})],
},
entry: {
'adf-blue-orange': './lib/core/src/lib/styles/prebuilt/adf-blue-orange.scss',
'adf-blue-purple': './lib/core/src/lib/styles/prebuilt/adf-blue-purple.scss',
'adf-cyan-orange': './lib/core/src/lib/styles/prebuilt/adf-cyan-orange.scss',
'adf-cyan-purple': './lib/core/src/lib/styles/prebuilt/adf-cyan-purple.scss',
'adf-green-purple': './lib/core/src/lib/styles/prebuilt/adf-green-purple.scss',
'adf-green-orange': './lib/core/src/lib/styles/prebuilt/adf-green-orange.scss',
'adf-pink-bluegrey': './lib/core/src/lib/styles/prebuilt/adf-pink-bluegrey.scss',
'adf-indigo-pink': './lib/core/src/lib/styles/prebuilt/adf-indigo-pink.scss',
'adf-purple-green': './lib/core/src/lib/styles/prebuilt/adf-purple-green.scss'
},
output: {
path: path.resolve(__dirname, '../../dist/libs/core/lib/prebuilt-themes/'),
},
module: {
rules: [{
test: /\.scss$/,
use: [MiniCssExtractPlugin.loader, "css-loader", "sass-loader"]
}]
},
plugins: [
new MiniCssExtractPlugin({
filename: "[name].css",
chunkFilename: "[id].css"
}),
new DisableOutputWebpackPlugin({
test: /\.js$/,
})
],
resolve: {
alias: {
'styles': path.resolve(__dirname, '../core/src/lib/styles'),
}
}
};
+9 -3
View File
@@ -10,7 +10,13 @@
"createDefaultProgram": true
},
"rules": {
"jsdoc/tag-lines": ["error", "any", {"startLines": 1}],
"jsdoc/tag-lines": [
"error",
"any",
{
"startLines": 1
}
],
"@typescript-eslint/naming-convention": "warn",
"@typescript-eslint/consistent-type-assertions": "warn",
"@typescript-eslint/prefer-for-of": "warn",
@@ -44,7 +50,6 @@
"style": "kebab-case"
}
],
"@angular-eslint/no-host-metadata-property": "off",
"@angular-eslint/no-input-prefix": "error",
"@typescript-eslint/consistent-type-definitions": "error",
"@typescript-eslint/dot-notation": "off",
@@ -75,7 +80,8 @@
"rxjs/no-subject-unsubscribe": "error",
"rxjs/no-subject-value": "error",
"rxjs/no-unsafe-takeuntil": "error",
"unicorn/filename-case": "error"
"unicorn/filename-case": "error",
"@angular-eslint/prefer-standalone": "off"
}
},
{
+3 -4
View File
@@ -9,9 +9,8 @@ module.exports = function (config) {
basePath: '../../',
files: [
{ pattern: 'node_modules/pdfjs-dist/build/pdf.js', included: true, watched: false },
{ pattern: 'node_modules/pdfjs-dist/build/pdf.worker.js', included: true, watched: false },
{ pattern: 'node_modules/pdfjs-dist/web/pdf_viewer.js', included: true, watched: false },
{ pattern: 'node_modules/pdfjs-dist/build/pdf.min.mjs', type: 'module', included: true, watched: false },
{ pattern: 'node_modules/pdfjs-dist/build/pdf.worker.min.mjs', type: 'module', included: true, watched: false },
{
pattern: 'node_modules/@angular/material/prebuilt-themes/indigo-pink.css',
included: true,
@@ -63,7 +62,7 @@ module.exports = function (config) {
},
mochaReporter: {
ignoreSkipped: process.env?.KARMA_IGNORE_SKIPPED === 'true'
ignoreSkipped: process.env.KARMA_IGNORE_SKIPPED === 'true'
},
coverageReporter: {
+4 -4
View File
@@ -1,7 +1,7 @@
{
"name": "@alfresco/adf-content-services",
"description": "Alfresco ADF content services",
"version": "7.0.1",
"version": "9.0.0",
"author": "Hyland Software, Inc. and its affiliates",
"repository": {
"type": "git",
@@ -21,9 +21,9 @@
"@angular/platform-browser": ">=14.1.3",
"@angular/platform-browser-dynamic": ">=14.1.3",
"@angular/router": ">=14.1.3",
"@alfresco/js-api": ">=8.0.0",
"@ngx-translate/core": ">=14.0.0",
"@alfresco/adf-core": ">=7.0.1"
"@alfresco/js-api": ">=10.0.0",
"@ngx-translate/core": ">=16.0.0",
"@alfresco/adf-core": ">=9.0.0"
},
"keywords": [
"content-services",
@@ -16,7 +16,6 @@
*/
import { TestBed } from '@angular/core/testing';
import { CoreTestingModule } from '@alfresco/adf-core';
import { AgentService } from './agent.service';
import { Agent, AgentPaging } from '@alfresco/js-api';
@@ -53,10 +52,6 @@ describe('AgentService', () => {
let agentService: AgentService;
beforeEach(() => {
TestBed.configureTestingModule({
imports: [CoreTestingModule]
});
agentService = TestBed.inject(AgentService);
});
@@ -19,7 +19,6 @@ import { Component } from '@angular/core';
@Component({
selector: 'adf-alfresco-icon',
standalone: true,
templateUrl: './alfresco-icon-component.svg'
})
export class AlfrescoIconComponent {}
@@ -1,66 +1,61 @@
@import 'styles/mat-selectors';
@use '../mat-selectors.scss' as ms;
adf-aspect-list-dialog {
display: block;
#{$mat-expansion-panel-body} {
#{ms.$mat-expansion-panel-body} {
margin-top: -2px;
}
}
.adf {
&-aspect-list-dialog-title {
font-size: large;
font-weight: 200;
margin-top: 0;
.adf-aspect-list-dialog-title {
font-size: large;
font-weight: 200;
margin-top: 0;
}
.adf-aspect-list-dialog-description {
font-size: small;
line-height: normal;
}
.adf-aspect-list-dialog-information {
display: flex;
justify-content: space-between;
padding-bottom: 4px;
padding-left: 4px;
padding-right: 4px;
font-size: small;
}
.adf-aspect-list-dialog {
justify-content: space-between;
padding-left: 4px;
padding-right: 4px;
padding-top: 0;
&::before {
display: none;
}
}
&-aspect-list-dialog-description {
font-size: small;
line-height: normal;
}
.adf-aspect-dialog-content {
padding: 0;
margin-bottom: 8px;
&-aspect-list-dialog-information {
display: flex;
justify-content: space-between;
padding-bottom: 4px;
padding-left: 4px;
padding-right: 4px;
font-size: small;
}
&-aspect-list-dialog {
justify-content: space-between;
padding-left: 4px;
padding-right: 4px;
padding-top: 0;
#{$mat-dialog-content} {
padding: 0;
.adf-aspect-property-table {
.adf-aspect-property-table-cell {
font-size: smaller;
color: var(--adf-theme-foreground-text-color-087);
}
&::before {
display: none;
}
}
&-aspect-dialog-content {
margin-bottom: 8px;
.adf-aspect-property-table {
.adf-aspect-property-table-cell {
font-size: smaller;
color: var(--adf-theme-foreground-text-color-087);
.adf-aspect-property-table-column {
&-name {
width: 30%;
}
.adf-aspect-property-table-column {
&-name {
width: 30%;
}
&-title {
width: 50%;
}
&-title {
width: 50%;
}
}
}
@@ -132,7 +132,9 @@ describe('AspectListDialogComponent', () => {
describe('Without passing node id', () => {
beforeEach(() => {
aspectListService = TestBed.inject(AspectListService);
spyOn(aspectListService, 'getAspects').and.returnValue(of(aspectListMock));
spyOn(aspectListService, 'getAllAspects').and.returnValue(
of({ standardAspectPaging: { list: { entries: aspectListMock } }, customAspectPaging: { list: { entries: customAspectListMock } } })
);
fixture.detectChanges();
});
@@ -247,9 +249,11 @@ describe('AspectListDialogComponent', () => {
data.nodeId = 'fake-node-id';
aspectListService = TestBed.inject(AspectListService);
nodeService = TestBed.inject(NodesApiService);
spyOn(aspectListService, 'getAspects').and.returnValue(of([...aspectListMock, ...customAspectListMock]));
spyOn(aspectListService, 'getAllAspects').and.returnValue(
of({ standardAspectPaging: { list: { entries: aspectListMock } }, customAspectPaging: { list: { entries: customAspectListMock } } })
);
spyOn(aspectListService, 'getVisibleAspects').and.returnValue(['frs:AspectOne']);
spyOn(aspectListService, 'getCustomAspects').and.returnValue(of(customAspectListMock));
spyOn(aspectListService, 'getAspects').and.returnValue(of({ list: { entries: customAspectListMock } }));
spyOn(nodeService, 'getNode').and.returnValue(
of(new Node({ id: 'fake-node-id', aspectNames: ['frs:AspectOne', 'cst:customAspect'] })).pipe(delay(0))
);
@@ -18,7 +18,7 @@
import { Component, Inject, OnInit, ViewEncapsulation } from '@angular/core';
import { MAT_DIALOG_DATA, MatDialogModule, MatDialogRef } from '@angular/material/dialog';
import { AspectListDialogComponentData } from './aspect-list-dialog-data.interface';
import { TranslateModule } from '@ngx-translate/core';
import { TranslatePipe } from '@ngx-translate/core';
import { MatButtonModule } from '@angular/material/button';
import { AspectListComponent } from './aspect-list.component';
import { AutoFocusDirective } from '../directives/auto-focus.directive';
@@ -26,8 +26,7 @@ import { CommonModule } from '@angular/common';
@Component({
selector: 'adf-aspect-list-dialog',
standalone: true,
imports: [CommonModule, MatDialogModule, TranslateModule, MatButtonModule, AspectListComponent, AutoFocusDirective],
imports: [CommonModule, MatDialogModule, TranslatePipe, MatButtonModule, AspectListComponent, AutoFocusDirective],
templateUrl: './aspect-list-dialog.component.html',
styleUrls: ['./aspect-list-dialog.component.scss'],
encapsulation: ViewEncapsulation.None
@@ -8,8 +8,7 @@
(click)="onCheckBoxClick($event)"
[aria-label]="getTitle(aspect)"
(change)="onChange($event, aspect?.entry?.id)"/>
<mat-expansion-panel
[id]="'aspect-list-'+getId(aspect)"
<mat-expansion-panel [id]="'aspect-list-'+getId(aspect)"
class="adf-accordion-aspect-list-expansion-panel"
(opened)="isPanelOpen[colIndex] = true"
(afterCollapse)="isPanelOpen[colIndex] = false"
@@ -1,4 +1,5 @@
@import 'styles/mat-selectors';
@use '../mat-selectors.scss' as ms;
$dialog-title-height: 100px;
$dialog-information-height: 44px;
$dialog-buttons-height: 68px;
@@ -49,7 +50,7 @@ $dialog-list-height: calc(65vh - ($dialog-title-height + $dialog-information-hei
box-shadow: none;
background: border-box;
#{$mat-checkbox-background} {
#{ms.$mat-checkbox-background} {
height: 16px;
width: 16px;
}
@@ -19,15 +19,16 @@ import { ComponentFixture, TestBed } from '@angular/core/testing';
import { NodesApiService } from '../common/services/nodes-api.service';
import { ContentTestingModule } from '../testing/content.testing.module';
import { AspectListComponent } from './aspect-list.component';
import { AspectListService } from './services/aspect-list.service';
import { AspectListService, CustomAspectsWhere, StandardAspectsWhere } from './services/aspect-list.service';
import { EMPTY, of } from 'rxjs';
import { AspectEntry } from '@alfresco/js-api';
import { AspectEntry, Pagination } from '@alfresco/js-api';
import { HarnessLoader } from '@angular/cdk/testing';
import { TestbedHarnessEnvironment } from '@angular/cdk/testing/testbed';
import { MatExpansionPanelHarness } from '@angular/material/expansion/testing';
import { MatTableHarness } from '@angular/material/table/testing';
import { MatCheckboxHarness } from '@angular/material/checkbox/testing';
import { MatProgressSpinnerHarness } from '@angular/material/progress-spinner/testing';
import { CustomAspectPaging } from './interfaces/custom-aspect-paging.interface';
const aspectListMock: AspectEntry[] = [
{
@@ -110,6 +111,11 @@ const customAspectListMock: AspectEntry[] = [
}
];
const allAspectsMock: CustomAspectPaging = {
standardAspectPaging: { list: { entries: aspectListMock } },
customAspectPaging: { list: { entries: customAspectListMock } }
};
describe('AspectListComponent', () => {
let loader: HarnessLoader;
let component: AspectListComponent;
@@ -122,17 +128,15 @@ describe('AspectListComponent', () => {
imports: [ContentTestingModule, AspectListComponent],
providers: [AspectListService]
});
fixture = TestBed.createComponent(AspectListComponent);
component = fixture.componentInstance;
nodeService = TestBed.inject(NodesApiService);
aspectListService = TestBed.inject(AspectListService);
loader = TestbedHarnessEnvironment.loader(fixture);
});
describe('Loading', () => {
beforeEach(() => {
fixture = TestBed.createComponent(AspectListComponent);
component = fixture.componentInstance;
nodeService = TestBed.inject(NodesApiService);
aspectListService = TestBed.inject(AspectListService);
loader = TestbedHarnessEnvironment.loader(fixture);
});
it('should show the loading spinner when result is loading', async () => {
spyOn(nodeService, 'getNode').and.returnValue(EMPTY);
spyOn(aspectListService, 'getAspects').and.returnValue(EMPTY);
@@ -144,16 +148,11 @@ describe('AspectListComponent', () => {
describe('When passing a node id', () => {
beforeEach(() => {
fixture = TestBed.createComponent(AspectListComponent);
component = fixture.componentInstance;
aspectListService = TestBed.inject(AspectListService);
spyOn(aspectListService, 'getAspects').and.returnValue(of([...aspectListMock, ...customAspectListMock]));
spyOn(aspectListService, 'getCustomAspects').and.returnValue(of(customAspectListMock));
spyOn(aspectListService, 'getAllAspects').and.returnValue(of(allAspectsMock));
spyOn(aspectListService, 'getAspects').and.returnValue(of({ list: { entries: customAspectListMock } }));
spyOn(aspectListService, 'getVisibleAspects').and.returnValue(['frs:AspectOne']);
nodeService = TestBed.inject(NodesApiService);
spyOn(nodeService, 'getNode').and.returnValue(of({ id: 'fake-node-id', aspectNames: ['frs:AspectOne', 'stored:aspect'] } as any));
component.nodeId = 'fake-node-id';
loader = TestbedHarnessEnvironment.loader(fixture);
});
afterEach(() => {
@@ -251,6 +250,13 @@ describe('AspectListComponent', () => {
expect(component.valueChanged.emit).toHaveBeenCalledWith(['frs:AspectOne', 'frs:SecondAspect', ...storedAspect]);
expect(component.updateCounter.emit).toHaveBeenCalledWith(2);
});
it('should load aspects with 0 skip count as pagination by default', () => {
expect(aspectListService.getAllAspects).toHaveBeenCalledWith(
{ where: StandardAspectsWhere, include: ['properties'], skipCount: 0, maxItems: 100 },
{ where: CustomAspectsWhere, include: ['properties'], skipCount: 0, maxItems: 100 }
);
});
});
describe('with excluded aspects', () => {
@@ -265,11 +271,7 @@ describe('AspectListComponent', () => {
describe('When no node id is passed', () => {
beforeEach(() => {
fixture = TestBed.createComponent(AspectListComponent);
component = fixture.componentInstance;
aspectListService = TestBed.inject(AspectListService);
spyOn(aspectListService, 'getAspects').and.returnValue(of(aspectListMock));
loader = TestbedHarnessEnvironment.loader(fixture);
spyOn(aspectListService, 'getAllAspects').and.returnValue(of(allAspectsMock));
});
afterEach(() => {
@@ -289,5 +291,38 @@ describe('AspectListComponent', () => {
expect(await loader.hasHarness(MatExpansionPanelHarness.with({ selector: '#aspect-list-FirstAspect' }))).toBeFalse();
expect(await loader.hasHarness(MatExpansionPanelHarness.with({ selector: '#aspect-list-SecondAspect' }))).toBeFalse();
});
it('should load aspects with 0 skip count as pagination by default', () => {
fixture.detectChanges();
expect(aspectListService.getAllAspects).toHaveBeenCalledWith(
{ where: StandardAspectsWhere, include: ['properties'], skipCount: 0, maxItems: 100 },
{ where: CustomAspectsWhere, include: ['properties'], skipCount: 0, maxItems: 100 }
);
});
});
it('should load next batch of aspects if not all items were returned by first call', (done) => {
fixture.detectChanges();
const moreItemsPagination: Pagination = { count: 2, hasMoreItems: true };
const allAspectsWithMoreItems: CustomAspectPaging = {
standardAspectPaging: { list: { entries: aspectListMock, pagination: moreItemsPagination } },
customAspectPaging: { list: { entries: customAspectListMock, pagination: moreItemsPagination } }
};
const getAspectsSpy = spyOn(aspectListService, 'getAllAspects').and.returnValues(of(allAspectsWithMoreItems), of(allAspectsMock));
spyOn(aspectListService, 'getAspects').and.returnValues(
of({ list: { entries: aspectListMock } }),
of({ list: { entries: customAspectListMock } })
);
component.aspects$.subscribe(() => {
expect(getAspectsSpy.calls.argsFor(0)[0]).toEqual({ where: StandardAspectsWhere, include: ['properties'], skipCount: 0, maxItems: 100 });
expect(getAspectsSpy.calls.argsFor(0)[1]).toEqual({ where: CustomAspectsWhere, include: ['properties'], skipCount: 0, maxItems: 100 });
expect(getAspectsSpy.calls.argsFor(1)[0]).toEqual({ where: StandardAspectsWhere, include: ['properties'], skipCount: 2, maxItems: 100 });
expect(getAspectsSpy.calls.argsFor(1)[1]).toEqual({ where: CustomAspectsWhere, include: ['properties'], skipCount: 2, maxItems: 100 });
done();
});
component.ngOnInit();
fixture.detectChanges();
});
});
@@ -17,22 +17,21 @@
import { Component, DestroyRef, EventEmitter, inject, Input, OnInit, Output, ViewEncapsulation } from '@angular/core';
import { NodesApiService } from '../common/services/nodes-api.service';
import { Observable, zip } from 'rxjs';
import { concatMap, map, tap } from 'rxjs/operators';
import { AspectListService } from './services/aspect-list.service';
import { EMPTY, Observable, zip } from 'rxjs';
import { concatMap, expand, map, reduce, take, tap } from 'rxjs/operators';
import { AspectListService, CustomAspectsWhere, StandardAspectsWhere } from './services/aspect-list.service';
import { MatCheckboxChange, MatCheckboxModule } from '@angular/material/checkbox';
import { AspectEntry } from '@alfresco/js-api';
import { AspectEntry, ContentPagingQuery, ListAspectsOpts } from '@alfresco/js-api';
import { CommonModule } from '@angular/common';
import { MatExpansionModule } from '@angular/material/expansion';
import { MatTableModule } from '@angular/material/table';
import { TranslateModule } from '@ngx-translate/core';
import { TranslatePipe } from '@ngx-translate/core';
import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
@Component({
selector: 'adf-aspect-list',
standalone: true,
imports: [CommonModule, MatExpansionModule, MatCheckboxModule, MatTableModule, TranslateModule, MatProgressSpinnerModule],
imports: [CommonModule, MatExpansionModule, MatCheckboxModule, MatTableModule, TranslatePipe, MatProgressSpinnerModule],
templateUrl: './aspect-list.component.html',
styleUrls: ['./aspect-list.component.scss'],
encapsulation: ViewEncapsulation.None
@@ -64,6 +63,10 @@ export class AspectListComponent implements OnInit {
private readonly destroyRef = inject(DestroyRef);
private customAspectsLoaded = 0;
private standardAspectsLoaded = 0;
private hasMoreAspects = false;
constructor(private aspectListService: AspectListService, private nodeApiService: NodesApiService) {}
ngOnInit(): void {
@@ -71,8 +74,13 @@ export class AspectListComponent implements OnInit {
if (this.nodeId) {
const node$ = this.nodeApiService.getNode(this.nodeId);
const customAspect$ = this.aspectListService
.getCustomAspects(this.aspectListService.getVisibleAspects())
.pipe(map((customAspects) => customAspects.flatMap((customAspect) => customAspect.entry.id)));
.getAspects(this.aspectListService.getVisibleAspects(), {
where: CustomAspectsWhere,
include: ['properties'],
skipCount: 0,
maxItems: 100
})
.pipe(map((customAspects) => customAspects?.list?.entries.flatMap((customAspect) => customAspect.entry.id)));
aspects$ = zip(node$, customAspect$).pipe(
tap(([node, customAspects]) => {
this.nodeAspects = node.aspectNames.filter(
@@ -85,13 +93,19 @@ export class AspectListComponent implements OnInit {
this.valueChanged.emit([...this.nodeAspects, ...this.notDisplayedAspects]);
this.updateCounter.emit(this.nodeAspects.length);
}),
concatMap(() => this.aspectListService.getAspects()),
concatMap(() => this.loadAspects({ skipCount: this.standardAspectsLoaded }, { skipCount: this.customAspectsLoaded })),
takeUntilDestroyed(this.destroyRef)
);
} else {
aspects$ = this.aspectListService.getAspects().pipe(takeUntilDestroyed(this.destroyRef));
aspects$ = this.loadAspects({ skipCount: this.standardAspectsLoaded }, { skipCount: this.customAspectsLoaded });
}
this.aspects$ = aspects$.pipe(map((aspects) => aspects.filter((aspect) => !this.excludedAspects.includes(aspect.entry.id))));
this.aspects$ = aspects$.pipe(
expand(() =>
this.hasMoreAspects ? this.loadAspects({ skipCount: this.standardAspectsLoaded }, { skipCount: this.customAspectsLoaded }) : EMPTY
),
map((aspects) => aspects.filter((aspect) => !this.excludedAspects.includes(aspect.entry.id))),
reduce((acc, aspects) => [...acc, ...aspects])
);
}
onCheckBoxClick(event: Event) {
@@ -142,4 +156,33 @@ export class AspectListComponent implements OnInit {
this.hasEqualAspect = this.nodeAspects.every((aspect) => this.nodeAspectStatus.includes(aspect));
}
}
private loadAspects(standardAspectsPagination?: ContentPagingQuery, customAspectsPagination?: ContentPagingQuery): Observable<AspectEntry[]> {
const standardAspectOpts: ListAspectsOpts = {
where: StandardAspectsWhere,
include: ['properties'],
skipCount: standardAspectsPagination?.skipCount ?? 0,
maxItems: 100
};
const customAspectOpts: ListAspectsOpts = {
where: CustomAspectsWhere,
include: ['properties'],
skipCount: customAspectsPagination?.skipCount ?? 0,
maxItems: 100
};
return this.aspectListService.getAllAspects(standardAspectOpts, customAspectOpts).pipe(
take(1),
tap((aspectsPaging) => {
this.customAspectsLoaded += aspectsPaging.customAspectPaging?.list?.pagination?.count ?? 0;
this.standardAspectsLoaded += aspectsPaging.standardAspectPaging?.list?.pagination?.count ?? 0;
this.hasMoreAspects =
aspectsPaging.customAspectPaging?.list?.pagination?.hasMoreItems ||
aspectsPaging.standardAspectPaging?.list?.pagination?.hasMoreItems;
}),
map((aspectsPaging) => [
...(aspectsPaging.standardAspectPaging?.list?.entries ?? []),
...(aspectsPaging.customAspectPaging?.list?.entries ?? [])
])
);
}
}
@@ -15,12 +15,9 @@
* limitations under the License.
*/
import { NgModule } from '@angular/core';
import { RichTextEditorComponent } from './rich-text-editor.component';
import { AspectPaging } from '@alfresco/js-api';
/** @deprecated use `RichTextEditorComponent` instead */
@NgModule({
imports: [RichTextEditorComponent],
exports: [RichTextEditorComponent]
})
export class RichTextEditorModule {}
export interface CustomAspectPaging {
standardAspectPaging: AspectPaging;
customAspectPaging: AspectPaging;
}
@@ -22,5 +22,6 @@ export * from './services/node-aspect.service';
export * from './services/dialog-aspect-list.service';
export * from './aspect-list-dialog-data.interface';
export * from './interfaces/custom-aspect-paging.interface';
export * from './aspect-list.module';
@@ -16,96 +16,172 @@
*/
import { TestBed } from '@angular/core/testing';
import { AspectListService } from './aspect-list.service';
import { AspectPaging, AspectsApi, AspectEntry } from '@alfresco/js-api';
import { HttpClientTestingModule } from '@angular/common/http/testing';
import { AspectListService, CustomAspectsWhere, StandardAspectsWhere } from './aspect-list.service';
import { AspectPaging, AspectsApi, AspectEntry, ListAspectsOpts } from '@alfresco/js-api';
import { provideHttpClientTesting } from '@angular/common/http/testing';
import { AlfrescoApiService } from '../../services';
import { provideHttpClient } from '@angular/common/http';
import { AppConfigService } from '@alfresco/adf-core';
const stdAspect1: AspectEntry = { entry: { id: 'std:standardAspectOne', description: 'Standard Aspect One', title: 'StandardAspectOne' } };
const stdAspect2: AspectEntry = { entry: { id: 'std:standardAspectTwo', description: 'Standard Aspect Two', title: 'StandardAspectTwo' } };
const stdAspect3: AspectEntry = { entry: { id: 'std:standardAspectThree', description: 'Standard Aspect Three', title: 'StandardAspectThree' } };
const standardAspectPagingMock: AspectPaging = { list: { entries: [stdAspect1, stdAspect2, stdAspect3] } };
const cstAspect1: AspectEntry = { entry: { id: 'cst:customAspectOne', description: 'Custom Aspect One', title: 'CustomAspectOne' } };
const cstAspect2: AspectEntry = { entry: { id: 'cst:customAspectTwo', description: 'Custom Aspect Two', title: 'CustomAspectTwo' } };
const cstAspect3: AspectEntry = { entry: { id: 'cst:customAspectThree', description: 'Custom Aspect Three', title: 'CustomAspectThree' } };
const customAspectPagingMock: AspectPaging = { list: { entries: [cstAspect1, cstAspect2, cstAspect3] } };
const aspectsOpts: ListAspectsOpts = {
where: StandardAspectsWhere,
include: ['properties'],
skipCount: 0,
maxItems: 100
};
const customAspectsOpts: ListAspectsOpts = {
where: CustomAspectsWhere,
include: ['properties'],
skipCount: 0,
maxItems: 100
};
let standardAspectPagingMock: AspectPaging;
let customAspectPagingMock: AspectPaging;
describe('AspectListService', () => {
let aspectListService: AspectListService;
let apiService: AlfrescoApiService;
let aspectsApi: AspectsApi;
let appConfigService: AppConfigService;
beforeEach(() => {
TestBed.configureTestingModule({
imports: [HttpClientTestingModule]
providers: [provideHttpClient(), provideHttpClientTesting()]
});
aspectListService = TestBed.inject(AspectListService);
appConfigService = TestBed.inject(AppConfigService);
apiService = TestBed.inject(AlfrescoApiService);
aspectsApi = new AspectsApi(apiService.getInstance());
spyOnProperty(aspectListService, 'aspectsApi', 'get').and.returnValue(aspectsApi);
standardAspectPagingMock = { list: { entries: [stdAspect1, stdAspect2, stdAspect3] } };
customAspectPagingMock = { list: { entries: [cstAspect1, cstAspect2, cstAspect3] } };
});
it('should get one standard aspect', (done) => {
const visibleAspects = ['std:standardAspectOne'];
spyOn(aspectsApi, 'listAspects').and.returnValue(Promise.resolve(standardAspectPagingMock));
aspectListService.getStandardAspects(visibleAspects).subscribe((response) => {
expect(response).toEqual([stdAspect1]);
done();
describe('When API returns error', () => {
const visibleAspects: string[] = [];
beforeEach(() => {
spyOn(aspectsApi, 'listAspects').and.returnValue(Promise.reject(new Error('API error')));
});
it('should return empty paging list for standard aspects when api returns error', (done) => {
aspectListService.getAspects(visibleAspects, aspectsOpts).subscribe((response) => {
expect(response.list.entries).toEqual([]);
done();
});
});
it('should return empty paging list for custom aspects when api returns error', (done) => {
aspectListService.getAspects(visibleAspects, aspectsOpts).subscribe((response) => {
expect(response.list.entries).toEqual([]);
done();
});
});
});
it('should get two standard aspects', (done) => {
const visibleAspects = ['std:standardAspectTwo', 'std:standardAspectThree'];
spyOn(aspectsApi, 'listAspects').and.returnValue(Promise.resolve(standardAspectPagingMock));
aspectListService.getStandardAspects(visibleAspects).subscribe((response) => {
expect(response).toEqual([stdAspect2, stdAspect3]);
done();
describe('When aspects are returned', () => {
beforeEach(() => {
spyOn(aspectsApi, 'listAspects').and.returnValue(Promise.resolve(standardAspectPagingMock));
});
it('should add custom pagination for aspects list request when provided', (done) => {
const visibleAspects: string[] = [];
const customPagination: ListAspectsOpts = { skipCount: 10, maxItems: 20 };
aspectListService.getAspects(visibleAspects, customPagination).subscribe(() => {
expect(aspectsApi.listAspects).toHaveBeenCalledWith(customPagination);
done();
});
});
it('should get one aspect', (done) => {
const visibleAspects = ['std:standardAspectOne'];
aspectListService.getAspects(visibleAspects, aspectsOpts).subscribe((response) => {
expect(response.list.entries).toEqual([stdAspect1]);
done();
});
});
it('should get two aspects', (done) => {
const visibleAspects = ['std:standardAspectTwo', 'std:standardAspectThree'];
aspectListService.getAspects(visibleAspects, aspectsOpts).subscribe((response) => {
expect(response.list.entries).toEqual([stdAspect2, stdAspect3]);
done();
});
});
it('should get all aspects (visible aspects as undefined)', (done) => {
const visibleAspects: string[] = undefined;
aspectListService.getAspects(visibleAspects, aspectsOpts).subscribe((response) => {
expect(response.list.entries).toEqual([stdAspect1, stdAspect2, stdAspect3]);
done();
});
});
it('should get all aspects (visible aspects as empty array)', (done) => {
const visibleAspects: string[] = [];
aspectListService.getAspects(visibleAspects, aspectsOpts).subscribe((response) => {
expect(response.list.entries).toEqual([stdAspect1, stdAspect2, stdAspect3]);
done();
});
});
});
it('should get one custom aspect', (done) => {
const visibleAspects = ['cst:customAspectTwo'];
spyOn(aspectsApi, 'listAspects').and.returnValue(Promise.resolve(customAspectPagingMock));
aspectListService.getCustomAspects(visibleAspects).subscribe((response) => {
expect(response).toEqual([cstAspect2]);
done();
describe('getAllAspects', () => {
beforeEach(() => {
spyOn(aspectsApi, 'listAspects').and.returnValues(Promise.resolve(standardAspectPagingMock), Promise.resolve(customAspectPagingMock));
});
it('should get all aspects (standard and custom) when visible aspects are empty', (done) => {
spyOn(appConfigService, 'get').and.returnValue(undefined);
aspectListService.getAllAspects(aspectsOpts, customAspectsOpts).subscribe((aspects) => {
expect(aspects.standardAspectPaging.list.entries).toEqual([stdAspect1, stdAspect2, stdAspect3]);
expect(aspects.customAspectPaging.list.entries).toEqual([cstAspect1, cstAspect2, cstAspect3]);
expect(aspectsApi.listAspects).toHaveBeenCalledTimes(2);
done();
});
});
it('should get all aspects (standard and custom) filtered by visible aspects', (done) => {
const visibleAspectConfig = {
standard: ['std:standardAspectOne', 'std:standardAspectTwo'],
custom: ['cst:customAspectOne']
};
spyOn(appConfigService, 'get').and.returnValue(visibleAspectConfig);
aspectListService.getAllAspects(aspectsOpts, customAspectsOpts).subscribe((aspects) => {
expect(aspects.standardAspectPaging.list.entries).toEqual([stdAspect1, stdAspect2]);
expect(aspects.customAspectPaging.list.entries).toEqual([cstAspect1]);
expect(aspectsApi.listAspects).toHaveBeenCalledTimes(2);
done();
});
});
});
it('should get two custom aspects', (done) => {
const visibleAspects = ['cst:customAspectOne', 'cst:customAspectThree'];
spyOn(aspectsApi, 'listAspects').and.returnValue(Promise.resolve(customAspectPagingMock));
aspectListService.getCustomAspects(visibleAspects).subscribe((response) => {
expect(response).toEqual([cstAspect1, cstAspect3]);
done();
describe('getVisibleAspects', () => {
it('should return empty array when visible aspects are not provided in the config', () => {
spyOn(appConfigService, 'get').and.returnValue(undefined);
const visibleAspects = aspectListService.getVisibleAspects();
expect(visibleAspects).toEqual([]);
});
});
it('should get all custom aspects (visible aspects as undefined)', (done) => {
const visibleAspects = undefined;
spyOn(aspectsApi, 'listAspects').and.returnValue(Promise.resolve(customAspectPagingMock));
aspectListService.getCustomAspects(visibleAspects).subscribe((response) => {
expect(response).toEqual([cstAspect1, cstAspect2, cstAspect3]);
done();
});
});
it('should get all custom aspects (visible aspects as empty array)', (done) => {
const visibleAspects = [];
spyOn(aspectsApi, 'listAspects').and.returnValue(Promise.resolve(customAspectPagingMock));
aspectListService.getCustomAspects(visibleAspects).subscribe((response) => {
expect(response).toEqual([cstAspect1, cstAspect2, cstAspect3]);
done();
});
});
it('should get all custom aspects (visible aspects not supplied)', (done) => {
spyOn(aspectsApi, 'listAspects').and.returnValue(Promise.resolve(customAspectPagingMock));
aspectListService.getCustomAspects().subscribe((response) => {
expect(response).toEqual([cstAspect1, cstAspect2, cstAspect3]);
done();
it('should return visible aspects from config when provided', () => {
const visibleAspectConfig = {
standard: ['std:standardAspectOne', 'std:standardAspectTwo'],
custom: ['cst:customAspectOne']
};
spyOn(appConfigService, 'get').and.returnValue(visibleAspectConfig);
const visibleAspects = aspectListService.getVisibleAspects();
expect(visibleAspects).toEqual(['std:standardAspectOne', 'std:standardAspectTwo', 'cst:customAspectOne']);
});
});
});
@@ -20,7 +20,11 @@ import { AlfrescoApiService } from '../../services/alfresco-api.service';
import { AppConfigService } from '@alfresco/adf-core';
import { from, Observable, of, zip } from 'rxjs';
import { catchError, map } from 'rxjs/operators';
import { AspectEntry, AspectPaging, AspectsApi } from '@alfresco/js-api';
import { AspectEntry, AspectPaging, AspectsApi, ListAspectsOpts } from '@alfresco/js-api';
import { CustomAspectPaging } from '../interfaces/custom-aspect-paging.interface';
export const StandardAspectsWhere = `(modelId in ('cm:contentmodel', 'emailserver:emailserverModel', 'smf:smartFolder', 'app:applicationmodel' ))`;
export const CustomAspectsWhere = `(not namespaceUri matches('http://www.alfresco.*'))`;
@Injectable({
providedIn: 'root'
@@ -34,37 +38,24 @@ export class AspectListService {
constructor(private alfrescoApiService: AlfrescoApiService, private appConfigService: AppConfigService) {}
getAspects(): Observable<AspectEntry[]> {
getAllAspects(standardOpts?: ListAspectsOpts, customOpts?: ListAspectsOpts): Observable<CustomAspectPaging> {
const visibleAspectList = this.getVisibleAspects();
const standardAspects$ = this.getStandardAspects(visibleAspectList);
const customAspects$ = this.getCustomAspects(visibleAspectList);
const standardAspects$ = this.getAspects(visibleAspectList, standardOpts);
const customAspects$ = this.getAspects(visibleAspectList, customOpts);
return zip(standardAspects$, customAspects$).pipe(
map(([standardAspectList, customAspectList]) => [...standardAspectList, ...customAspectList])
map(([standardAspectPaging, customAspectPaging]) => ({ standardAspectPaging, customAspectPaging }))
);
}
getStandardAspects(whiteList: string[]): Observable<AspectEntry[]> {
const where = `(modelId in ('cm:contentmodel', 'emailserver:emailserverModel', 'smf:smartFolder', 'app:applicationmodel' ))`;
const opts: any = {
where,
include: ['properties']
};
getAspects(whiteList: string[], opts?: ListAspectsOpts): Observable<AspectPaging> {
return from(this.aspectsApi.listAspects(opts)).pipe(
map((result: AspectPaging) => this.filterAspectByConfig(whiteList, result?.list?.entries)),
catchError(() => of([]))
);
}
getCustomAspects(whiteList?: string[]): Observable<AspectEntry[]> {
const where = `(not namespaceUri matches('http://www.alfresco.*'))`;
const opts: any = {
where,
include: ['properties']
};
return from(this.aspectsApi.listAspects(opts)).pipe(
map((result: AspectPaging) => this.filterAspectByConfig(whiteList, result?.list?.entries)),
catchError(() => of([]))
map((result) => {
if (result?.list?.entries) {
result.list.entries = this.filterAspectByConfig(whiteList, result.list.entries);
}
return result;
}),
catchError(() => of({ list: { entries: [] } }))
);
}
@@ -21,13 +21,12 @@ import { Node, PathElement } from '@alfresco/js-api';
import { DocumentListComponent } from '../document-list/components/document-list.component';
import { CommonModule } from '@angular/common';
import { MatIconModule } from '@angular/material/icon';
import { TranslateModule } from '@ngx-translate/core';
import { TranslatePipe } from '@ngx-translate/core';
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
@Component({
selector: 'adf-breadcrumb',
standalone: true,
imports: [CommonModule, MatIconModule, TranslateModule, MatSelectModule],
imports: [CommonModule, MatIconModule, TranslatePipe, MatSelectModule],
templateUrl: './breadcrumb.component.html',
styleUrls: ['./breadcrumb.component.scss'],
encapsulation: ViewEncapsulation.None,
@@ -1,4 +1,4 @@
@import 'styles/mat-selectors';
@use '../mat-selectors.scss' as ms;
$dropdown-horizontal-offset: 30px;
@@ -98,6 +98,6 @@ $dropdown-horizontal-offset: 30px;
}
}
#{$cdk-overlay-pane}:has(>.adf-breadcrumb-dropdown-panel){
#{ms.$cdk-overlay-pane}:has(> .adf-breadcrumb-dropdown-panel) {
min-width: fit-content;
}
@@ -21,12 +21,11 @@ import { PathElement, Node } from '@alfresco/js-api';
import { BreadcrumbComponent } from './breadcrumb.component';
import { CommonModule } from '@angular/common';
import { MatIconModule } from '@angular/material/icon';
import { TranslateModule } from '@ngx-translate/core';
import { TranslatePipe } from '@ngx-translate/core';
@Component({
selector: 'adf-dropdown-breadcrumb',
standalone: true,
imports: [CommonModule, MatIconModule, MatSelectModule, TranslateModule],
imports: [CommonModule, MatIconModule, MatSelectModule, TranslatePipe],
templateUrl: './dropdown-breadcrumb.component.html',
styleUrls: ['./dropdown-breadcrumb.component.scss'],
encapsulation: ViewEncapsulation.None,
@@ -6,7 +6,7 @@
placeholder="{{'CATEGORIES_MANAGEMENT.CATEGORIES_SEARCH_PLACEHOLDER' | translate }}"
adf-auto-focus
/>
<mat-error *ngIf="categoryNameControl.invalid">{{ categoryNameErrorMessageKey | translate }}</mat-error>
<mat-error *ngIf="categoryNameControl.invalid && categoryNameControl.touched">{{ categoryNameErrorMessageKey | translate }}</mat-error>
</div>
<div class="adf-categories-list" *ngIf="categories?.length > 0" [class.adf-categories-list-fixed]="!categoryNameControlVisible">
<span
@@ -1,4 +1,4 @@
@import 'styles/mat-selectors';
@use '../../mat-selectors.scss' as ms;
.adf-categories-management {
.adf-category-name-field {
@@ -20,7 +20,7 @@
box-sizing: content-box;
}
#{$mat-form-field-error} {
#{ms.$mat-form-field-error} {
padding-top: 5px;
}
}
@@ -56,7 +56,7 @@
background-color: inherit;
color: inherit;
&:not(#{$mat-list-item-disabled}):hover {
&:not(#{ms.$mat-list-item-disabled}):hover {
cursor: pointer;
background: var(--adf-theme-mat-grey-color-a200);
}
@@ -86,7 +86,7 @@
overflow-wrap: anywhere;
}
#{$mat-list-item-disabled} #{$mat-list-item-primary-text} {
#{ms.$mat-list-item-disabled} #{ms.$mat-list-item-primary-text} {
opacity: 1;
}
}
@@ -303,12 +303,6 @@ describe('CategoriesManagementComponent', () => {
expect(component.categoryNameControl.hasValidator(Validators.required)).toBeFalse();
});
it('should display validation error when searching for empty category', fakeAsync(() => {
typeCategory(' ');
expect(getFirstError()).toBe('CATEGORIES_MANAGEMENT.ERRORS.EMPTY_CATEGORY');
}));
it('should clear categories and hide category control when classifiable aspect is removed', () => {
const controlVisibilityChangeSpy = spyOn(component.categoryNameControlVisibleChange, 'emit').and.callThrough();
classifiableChangedSubject.next();
@@ -523,6 +517,30 @@ describe('CategoriesManagementComponent', () => {
expect(getCreateCategoryLabel().hidden).toBeTrue();
}));
it('should display validation error when prohibited symbol entered', fakeAsync(() => {
typeCategory('category:name');
component.categoryNameControl.markAsTouched();
fixture.detectChanges();
expect(getFirstError()).toBe('CATEGORIES_MANAGEMENT.ERRORS.SPECIAL_CHARACTERS');
}));
it('should display validation error when dot placed in the end', fakeAsync(() => {
typeCategory('category.');
component.categoryNameControl.markAsTouched();
fixture.detectChanges();
expect(getFirstError()).toBe('CATEGORIES_MANAGEMENT.ERRORS.ENDS_WITH_DOT');
}));
it('should not display validation error when dot used in positions other than the end', fakeAsync(() => {
typeCategory('.category.name');
component.categoryNameControl.markAsTouched();
fixture.detectChanges();
expect(component.categoryNameControl.valid).toBeTrue();
}));
});
});
});
@@ -35,7 +35,7 @@ import { debounce, first, map, tap } from 'rxjs/operators';
import { CategoriesManagementMode } from './categories-management-mode';
import { CategoryService } from '../services/category.service';
import { CommonModule } from '@angular/common';
import { TranslateModule } from '@ngx-translate/core';
import { TranslatePipe } from '@ngx-translate/core';
import { AutoFocusDirective } from '../../directives';
import { MatFormFieldModule } from '@angular/material/form-field';
import { MatButtonModule } from '@angular/material/button';
@@ -49,14 +49,15 @@ interface CategoryNameControlErrors {
duplicatedCategory?: boolean;
emptyCategory?: boolean;
required?: boolean;
specialCharacters?: boolean;
endsWithDot?: boolean;
}
@Component({
selector: 'adf-categories-management',
standalone: true,
imports: [
CommonModule,
TranslateModule,
TranslatePipe,
AutoFocusDirective,
ReactiveFormsModule,
MatFormFieldModule,
@@ -74,14 +75,22 @@ export class CategoriesManagementComponent implements OnInit, OnDestroy {
['duplicatedExistingCategory', 'ALREADY_EXISTS'],
['duplicatedCategory', 'DUPLICATED_CATEGORY'],
['emptyCategory', 'EMPTY_CATEGORY'],
['required', 'REQUIRED']
['required', 'REQUIRED'],
['specialCharacters', 'SPECIAL_CHARACTERS'],
['endsWithDot', 'ENDS_WITH_DOT']
]);
private existingCategoryLoaded$ = new Subject<void>();
private cancelExistingCategoriesLoading$ = new Subject<void>();
private _categoryNameControl = new FormControl<string>(
'',
[this.validateIfNotAlreadyAdded.bind(this), this.validateEmptyCategory, Validators.required],
[
this.validateIfNotAlreadyAdded.bind(this),
this.validateEmptyCategory,
this.validateSpecialCharacters,
this.validateEndsWithDot,
Validators.required
],
this.validateIfNotAlreadyCreated.bind(this)
);
private _existingCategories: Category[];
@@ -359,6 +368,15 @@ export class CategoriesManagementComponent implements OnInit, OnDestroy {
return categoryNameControl.value.length && !categoryNameControl.value.trim() ? { emptyCategory: true } : null;
}
private validateSpecialCharacters(categoryNameControl: FormControl<string>): CategoryNameControlErrors | null {
const specialSymbolsRegex = /[:"\\|<>/?*]/;
return categoryNameControl.value.length && specialSymbolsRegex.test(categoryNameControl.value) ? { specialCharacters: true } : null;
}
private validateEndsWithDot(categoryNameControl: FormControl<string>): CategoryNameControlErrors | null {
return categoryNameControl.value.trim().endsWith('.') ? { endsWithDot: true } : null;
}
private setCategoryNameControlErrorMessageKey() {
this._categoryNameErrorMessageKey = this.categoryNameControl.invalid
? `CATEGORIES_MANAGEMENT.ERRORS.${this.nameErrorMessagesByErrors.get(
@@ -18,7 +18,7 @@
import { fakeAsync, TestBed } from '@angular/core/testing';
import { CategoryService } from '../services/category.service';
import { CategoryServiceMock } from '../mock/category-mock.service';
import { TreeNodeType, TreeResponse } from '../../tree';
import { TreeNodeType } from '../../tree';
import { EMPTY, of } from 'rxjs';
import { Pagination } from '@alfresco/js-api';
import { CategoryTreeDatasourceService } from './category-tree-datasource.service';
@@ -39,7 +39,7 @@ describe('CategoryTreeDatasourceService', () => {
it('should get root level categories', fakeAsync(() => {
spyOn(categoryTreeDatasourceService, 'getParentNode').and.returnValue(undefined);
categoryTreeDatasourceService.getSubNodes(null, 0, 100).subscribe((treeResponse: TreeResponse<CategoryNode>) => {
categoryTreeDatasourceService.getSubNodes(null, 0, 100).subscribe((treeResponse) => {
expect(treeResponse.entries.length).toBe(1);
expect(treeResponse.entries[0].level).toBe(0);
expect(treeResponse.entries[0].nodeType).toBe(TreeNodeType.RegularNode);
@@ -57,7 +57,7 @@ describe('CategoryTreeDatasourceService', () => {
nodeType: TreeNodeType.RegularNode
};
spyOn(categoryTreeDatasourceService, 'getParentNode').and.returnValue(parentNode);
categoryTreeDatasourceService.getSubNodes(parentNode.id, 0, 100).subscribe((treeResponse: TreeResponse<CategoryNode>) => {
categoryTreeDatasourceService.getSubNodes(parentNode.id, 0, 100).subscribe((treeResponse) => {
expect(treeResponse.entries.length).toBe(2);
expect(treeResponse.entries[0].parentId).toBe(parentNode.id);
expect(treeResponse.entries[0].level).toBe(1);
@@ -19,7 +19,6 @@ import { Injectable } from '@angular/core';
import { TreeNodeType, TreeResponse, TreeService } from '../../tree';
import { CategoryNode } from '../models/category-node.interface';
import { CategoryService } from './category.service';
import { CategoryEntry, CategoryPaging } from '@alfresco/js-api';
import { from, Observable } from 'rxjs';
import { map, mergeMap, toArray } from 'rxjs/operators';
@@ -32,9 +31,9 @@ export class CategoryTreeDatasourceService extends TreeService<CategoryNode> {
public getSubNodes(parentNodeId: string, skipCount?: number, maxItems?: number, name?: string): Observable<TreeResponse<CategoryNode>> {
return !name
? this.categoryService.getSubcategories(parentNodeId, skipCount, maxItems).pipe(
map((response: CategoryPaging) => {
const parentNode: CategoryNode = this.getParentNode(parentNodeId);
const nodesList: CategoryNode[] = response.list.entries.map((entry: CategoryEntry) => ({
map((response) => {
const parentNode = this.getParentNode(parentNodeId);
const nodesList: CategoryNode[] = response.list.entries.map((entry) => ({
id: entry.entry.id,
nodeName: entry.entry.name,
parentId: entry.entry.parentId,
@@ -55,8 +54,7 @@ export class CategoryTreeDatasourceService extends TreeService<CategoryNode> {
};
nodesList.push(loadMoreNode);
}
const treeResponse: TreeResponse<CategoryNode> = { entries: nodesList, pagination: response.list.pagination };
return treeResponse;
return { entries: nodesList, pagination: response.list.pagination };
})
)
: this.categoryService.searchCategories(name, skipCount, maxItems).pipe(
@@ -15,7 +15,7 @@
* limitations under the License.
*/
import { AppConfigService, NoopTranslateModule, UserPreferencesService } from '@alfresco/adf-core';
import { AppConfigService, UserPreferencesService } from '@alfresco/adf-core';
import {
CategoryBody,
CategoryEntry,
@@ -44,10 +44,6 @@ describe('CategoryService', () => {
const fakeCategoriesLinkBodies: CategoryLinkBody[] = [{ categoryId: fakeCategoryId }];
beforeEach(() => {
TestBed.configureTestingModule({
imports: [NoopTranslateModule]
});
categoryService = TestBed.inject(CategoryService);
userPreferencesService = TestBed.inject(UserPreferencesService);
});
@@ -156,7 +156,7 @@ describe('ContentService', () => {
});
it('should take current logged user id if userId undefined ', () => {
spyOn(authService, 'getEcmUsername').and.returnValue('user1');
spyOn(authService, 'getUsername').and.returnValue('user1');
const permissionNode = new Node({
permissions: {
inherited: [
@@ -84,7 +84,7 @@ export class ContentService {
*/
hasPermissions(node: Node, permission: PermissionsEnum | string, userId?: string): boolean {
let hasPermissions = false;
userId = userId ?? this.authService.getEcmUsername();
userId = userId ?? this.authService.getUsername();
const permissions = [...(node.permissions?.locallySet || []), ...(node.permissions?.inherited || [])].filter(
(currentPermission) => currentPermission.authorityId === userId
@@ -16,8 +16,7 @@
*/
import { TestBed } from '@angular/core/testing';
import { HttpClientTestingModule } from '@angular/common/http/testing';
import { CoreTestingModule, RedirectAuthService } from '@alfresco/adf-core';
import { RedirectAuthService } from '@alfresco/adf-core';
import { EMPTY, firstValueFrom, of } from 'rxjs';
import { JobIdBodyEntry, SizeDetails, SizeDetailsEntry } from '@alfresco/js-api';
import { NodesApiService } from './nodes-api.service';
@@ -46,7 +45,6 @@ describe('NodesApiService', () => {
beforeEach(() => {
TestBed.configureTestingModule({
imports: [HttpClientTestingModule, CoreTestingModule],
providers: [
NodesApiService,
{ provide: AlfrescoApiService, useClass: AlfrescoApiServiceMock },
@@ -27,12 +27,11 @@ import { MatCardModule } from '@angular/material/card';
import { ContentMetadataComponent } from '../content-metadata/content-metadata.component';
import { MatButtonModule } from '@angular/material/button';
import { MatIconModule } from '@angular/material/icon';
import { TranslateModule } from '@ngx-translate/core';
import { TranslatePipe } from '@ngx-translate/core';
@Component({
selector: 'adf-content-metadata-card',
standalone: true,
imports: [CommonModule, MatCardModule, ContentMetadataComponent, MatButtonModule, MatIconModule, TranslateModule],
imports: [CommonModule, MatCardModule, ContentMetadataComponent, MatButtonModule, MatIconModule, TranslatePipe],
templateUrl: './content-metadata-card.component.html',
styleUrls: ['./content-metadata-card.component.scss'],
encapsulation: ViewEncapsulation.None,
@@ -19,30 +19,30 @@ import { CommonModule } from '@angular/common';
import { Component, Input, ViewEncapsulation } from '@angular/core';
import { MatExpansionModule } from '@angular/material/expansion';
import { MatIconModule } from '@angular/material/icon';
import { TranslateModule } from '@ngx-translate/core';
import { TranslatePipe } from '@ngx-translate/core';
@Component({
standalone: true,
imports: [CommonModule, MatIconModule, MatExpansionModule, TranslateModule],
imports: [CommonModule, MatIconModule, MatExpansionModule, TranslatePipe],
selector: 'adf-content-metadata-header',
encapsulation: ViewEncapsulation.None,
styles: [
`
adf-content-metadata-header {
display: flex;
align-items: center;
width: 100%;
}
adf-content-metadata-header {
display: flex;
align-items: center;
width: 100%;
}
.adf-metadata-properties-title {
display: block;
overflow: hidden;
text-overflow: ellipsis;
font-weight: 700;
font-size: 15px;
padding-left: 12px;
}
`
.adf-metadata-properties-title {
display: block;
overflow: hidden;
text-overflow: ellipsis;
font-weight: 700;
font-size: 15px;
padding-left: 12px;
}
`
],
template: `
<ng-container>
@@ -98,7 +98,7 @@
</div>
</adf-content-metadata-header>
</mat-expansion-panel-header>
<div *ngIf="currentPanel.panelTitle === DefaultPanels.TAGS && !editing"
<div *ngIf="currentPanel.panelTitle === DefaultPanels.TAGS && editedPanelTitle !== DefaultPanels.TAGS"
class="adf-metadata-properties-tags">
<adf-dynamic-chip-list [chips]="tagsToDisplay" [showDelete]="false" />
</div>
@@ -161,7 +161,7 @@
</div>
</adf-content-metadata-header>
</mat-expansion-panel-header>
<div *ngIf="currentPanel.panelTitle === DefaultPanels.CATEGORIES && !editing">
<div *ngIf="currentPanel.panelTitle === DefaultPanels.CATEGORIES && editedPanelTitle !== DefaultPanels.CATEGORIES">
<p *ngFor="let category of categories" class="adf-metadata-categories">{{ category.name }}</p>
</div>
<div *ngIf="showEmptyCategoryMessage" class="adf-metadata-no-item-added">
@@ -241,7 +241,7 @@
</div>
</adf-content-metadata-header>
</mat-expansion-panel-header>
<div *ngIf="!showGroup(group) && group.editable && !editing" class="adf-metadata-no-item-added">
<div *ngIf="!showGroup(group) && group.editable && editedPanelTitle !== group.title" class="adf-metadata-no-item-added">
{{ 'METADATA.BASIC.NO_ITEMS_MESSAGE' | translate : { groupTitle: group.title | translate } }}
</div>
<adf-card-view
@@ -1,4 +1,4 @@
@import 'styles/mat-selectors';
@use '../../../mat-selectors.scss' as ms;
$panel-properties-height: 56px !default;
@@ -11,11 +11,11 @@ $panel-properties-height: 56px !default;
margin: 12px;
adf-card-view-textitem {
#{$mat-form-field-subscript-wrapper} {
#{ms.$mat-form-field-subscript-wrapper} {
display: none;
}
#{$mat-form-field-infix} {
#{ms.$mat-form-field-infix} {
padding-bottom: 0;
}
}
@@ -47,7 +47,7 @@ $panel-properties-height: 56px !default;
}
}
#{$mat-expansion-panel-body} {
#{ms.$mat-expansion-panel-body} {
padding-top: 16px;
input {
@@ -64,7 +64,7 @@ $panel-properties-height: 56px !default;
color: var(--adf-theme-foreground-text-color-054);
}
#{$mat-chip} {
#{ms.$mat-chip} {
&.metadata-properties-tag-chip {
// TODO: bug open https://github.com/angular/components/issues/26584
/* stylelint-disable selector-class-pattern */
@@ -18,7 +18,14 @@
import { Category, CategoryPaging, ClassesApi, Node, Tag, TagBody, TagEntry, TagPaging, TagPagingList } from '@alfresco/js-api';
import { ContentMetadataComponent } from './content-metadata.component';
import { ContentMetadataService } from '../../services/content-metadata.service';
import { AppConfigService, CardViewBaseItemModel, CardViewComponent, NotificationService, UpdateNotification } from '@alfresco/adf-core';
import {
AppConfigService,
CardViewBaseItemModel,
CardViewComponent,
NotificationService,
UpdateNotification,
UnitTestingUtils
} from '@alfresco/adf-core';
import { NodesApiService } from '../../../common/services/nodes-api.service';
import { TestbedHarnessEnvironment } from '@angular/cdk/testing/testbed';
import { MatChipHarness } from '@angular/material/chips/testing';
@@ -36,7 +43,7 @@ import { CategoryService } from '../../../category/services/category.service';
import { CardViewContentUpdateService } from '../../../common/services/card-view-content-update.service';
import { ComponentFixture, discardPeriodicTasks, fakeAsync, flush, TestBed, tick } from '@angular/core/testing';
import { By } from '@angular/platform-browser';
import { SimpleChange } from '@angular/core';
import { DebugElement, SimpleChange } from '@angular/core';
describe('ContentMetadataComponent', () => {
let component: ContentMetadataComponent;
@@ -48,6 +55,7 @@ describe('ContentMetadataComponent', () => {
let folderNode: Node;
let tagService: TagService;
let categoryService: CategoryService;
let testingUtils: UnitTestingUtils;
let getClassSpy: jasmine.Spy;
let notificationService: NotificationService;
let getGroupedPropertiesSpy: jasmine.Spy;
@@ -154,6 +162,8 @@ describe('ContentMetadataComponent', () => {
const queryDom = (properties = 'properties') => fixture.debugElement.query(By.css(`[data-automation-id="adf-metadata-group-${properties}"]`));
const getEmptyPanelMessage = (): DebugElement => testingUtils.getByCSS('.adf-metadata-no-item-added');
/**
* Get metadata categories
*
@@ -196,6 +206,7 @@ describe('ContentMetadataComponent', () => {
});
fixture = TestBed.createComponent(ContentMetadataComponent);
component = fixture.componentInstance;
testingUtils = new UnitTestingUtils(fixture.debugElement);
contentMetadataService = TestBed.inject(ContentMetadataService);
updateService = TestBed.inject(CardViewContentUpdateService);
nodesApiService = TestBed.inject(NodesApiService);
@@ -1484,6 +1495,36 @@ describe('ContentMetadataComponent', () => {
const noEditableTagsContainer = fixture.debugElement.query(By.css('div.adf-metadata-properties-tags'));
expect(noEditableTagsContainer).toBeNull();
});
it('should show existing tags when editing another panel and viewing tags panel', async () => {
component.displayTags = true;
component.readOnly = false;
fixture.detectChanges();
spyOn(tagService, 'getTagsByNodeId').and.returnValue(of(tagPaging));
component.ngOnChanges({
node: new SimpleChange(undefined, node, false)
});
toggleEditModeForGeneralInfo();
expandTagsPanel();
const tagElements = await findTagElements();
expect(tagElements).toHaveSize(2);
expect(component.showEmptyTagMessage).toBeFalse();
});
it('should show empty tag message when editing another panel and viewing tags panel', () => {
component.displayTags = true;
component.readOnly = false;
fixture.detectChanges();
toggleEditModeForGeneralInfo();
expandTagsPanel();
fixture.detectChanges();
expect(getEmptyPanelMessage()).toBeTruthy();
expect(component.showEmptyTagMessage).toBeTrue();
});
});
describe('Tags creator', () => {
@@ -1677,6 +1718,35 @@ describe('ContentMetadataComponent', () => {
toggleEditModeForCategories();
expect(getCategories().length).toBe(0);
});
it('should show existing categories when editing another panel and viewing categories panel', async () => {
component.displayCategories = true;
component.readOnly = false;
fixture.detectChanges();
component.ngOnChanges({
node: new SimpleChange(undefined, node, false)
});
toggleEditModeForGeneralInfo();
expandCategoriesPanel();
const categories = getCategories();
expect(categories).toHaveSize(2);
expect(component.showEmptyCategoryMessage).toBeFalse();
});
it('should show empty categories message when editing another panel and viewing categories panel', () => {
component.displayCategories = true;
component.readOnly = false;
fixture.detectChanges();
toggleEditModeForGeneralInfo();
expandCategoriesPanel();
fixture.detectChanges();
expect(getEmptyPanelMessage()).toBeTruthy();
expect(component.showEmptyCategoryMessage).toBeTrue();
});
});
describe('Categories management', () => {
@@ -49,7 +49,7 @@ import { DynamicExtensionComponent } from '@alfresco/adf-extensions';
import { MatProgressBarModule } from '@angular/material/progress-bar';
import { TagsCreatorComponent } from '../../../tag';
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
import { TranslateModule } from '@ngx-translate/core';
import { TranslatePipe } from '@ngx-translate/core';
import { ContentMetadataHeaderComponent } from './content-metadata-header.component';
import { CategoriesManagementComponent } from '../../../category/categories-management/categories-management.component';
@@ -63,13 +63,12 @@ enum DefaultPanels {
@Component({
selector: 'adf-content-metadata',
standalone: true,
imports: [
CommonModule,
MatExpansionModule,
ContentMetadataHeaderComponent,
MatButtonModule,
TranslateModule,
TranslatePipe,
MatIconModule,
MatChipsModule,
CategoriesManagementComponent,
@@ -342,11 +341,11 @@ export class ContentMetadataComponent implements OnChanges, OnInit {
}
get showEmptyTagMessage(): boolean {
return this.tags?.length === 0 && this.currentPanel.panelTitle === 'Tags' && !this.editing;
return this.tags?.length === 0 && !this.isPanelEditing('Tags');
}
get showEmptyCategoryMessage(): boolean {
return this.categories?.length === 0 && this.currentPanel.panelTitle === 'Categories' && !this.editing;
return this.categories?.length === 0 && !this.isPanelEditing('Categories');
}
toggleGroupEditing(panelTitle: string, event?: MouseEvent) {

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