Compare commits

...
70 Commits
Author SHA1 Message Date
Ehsan Rezaei 6c9c5576ba Release 6.7.0 (#9392) 2024-03-01 14:06:48 +01:00
DominikIwanek f7d83195f9 [ACS-6888] - The root folder of breadcrumbs is misplaced when viewed from a folder view (#9389) 2024-02-28 12:20:53 +01:00
dependabot[bot] 60605b482a build(deps): bump es5-ext from 0.10.62 to 0.10.63 in /lib/testing (#9385)
Bumps [es5-ext](https://github.com/medikoo/es5-ext) from 0.10.62 to 0.10.63.
- [Release notes](https://github.com/medikoo/es5-ext/releases)
- [Changelog](https://github.com/medikoo/es5-ext/blob/main/CHANGELOG.md)
- [Commits](https://github.com/medikoo/es5-ext/compare/v0.10.62...v0.10.63)

---
updated-dependencies:
- dependency-name: es5-ext
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-02-27 12:28:14 -05:00
dependabot[bot] b98d67e816 build(deps): bump es5-ext from 0.10.62 to 0.10.63 in /tools/doc (#9386)
Bumps [es5-ext](https://github.com/medikoo/es5-ext) from 0.10.62 to 0.10.63.
- [Release notes](https://github.com/medikoo/es5-ext/releases)
- [Changelog](https://github.com/medikoo/es5-ext/blob/main/CHANGELOG.md)
- [Commits](https://github.com/medikoo/es5-ext/compare/v0.10.62...v0.10.63)

---
updated-dependencies:
- dependency-name: es5-ext
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-02-27 12:27:56 -05:00
dependabot[bot] 3af4e79424 build(deps): bump es5-ext from 0.10.62 to 0.10.63 in /lib/cli (#9384)
Bumps [es5-ext](https://github.com/medikoo/es5-ext) from 0.10.62 to 0.10.63.
- [Release notes](https://github.com/medikoo/es5-ext/releases)
- [Changelog](https://github.com/medikoo/es5-ext/blob/main/CHANGELOG.md)
- [Commits](https://github.com/medikoo/es5-ext/compare/v0.10.62...v0.10.63)

---
updated-dependencies:
- dependency-name: es5-ext
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-02-27 12:24:48 -05:00
dependabot[bot] a5332bf808 build(deps): bump es5-ext from 0.10.62 to 0.10.63 (#9387)
Bumps [es5-ext](https://github.com/medikoo/es5-ext) from 0.10.62 to 0.10.63.
- [Release notes](https://github.com/medikoo/es5-ext/releases)
- [Changelog](https://github.com/medikoo/es5-ext/blob/main/CHANGELOG.md)
- [Commits](https://github.com/medikoo/es5-ext/compare/v0.10.62...v0.10.63)

---
updated-dependencies:
- dependency-name: es5-ext
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-02-27 12:24:21 -05:00
Ehsan Rezaei 83d470ab23 Release 6.7.0 (#9380) 2024-02-27 16:24:03 +01:00
Bartosz Sekula bd9a9bb901 [AAE-19610] Fix duplicated buttons for date-time filter widget (#9382) 2024-02-26 14:20:26 +01:00
Wojciech Duda 672f70ac43 AAE-20791 fix task from spinner misaligned to the left (#9381) 2024-02-26 12:09:59 +01:00
MichalKinasandAleksander Sklorz f7dcab7adb [ACS-6831] Property panel refactoring (#9372)
* [ACS-6831] Refactor property panel feature to mitigate bugs and increase code quality

* [ACS-6831] Introduce new interace for metadata panel

* ACS-6831 Corrected tests

* ACS-6831 Fixed unit tests

* ACS-6831 Fixed unit tests

* ACS-6831 Cleaning code

* ACS-6831 Added tests

* ACS-6831 Replaced fdescribe with describe

* [ACS-6831] Use default properties enum, fix editing state

* [ACS-6831] Expand correct section based on displayAspect property

* [ACS-6831] Lint fix

---------

Co-authored-by: Aleksander Sklorz <Aleksander.Sklorz@hyland.com>
2024-02-26 08:47:56 +01:00
dependabot[bot] 872abc3dc0 build(deps-dev): bump webpack from 5.88.2 to 5.90.3 (#9371)
Bumps [webpack](https://github.com/webpack/webpack) from 5.88.2 to 5.90.3.
- [Release notes](https://github.com/webpack/webpack/releases)
- [Commits](https://github.com/webpack/webpack/compare/v5.88.2...v5.90.3)

---
updated-dependencies:
- dependency-name: webpack
  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>
2024-02-22 13:35:49 -05:00
Wojciech Duda 71ef7b940a AAE-20791 fixed task form spinner alignment (#9369) 2024-02-22 17:52:51 +00:00
dependabot[bot] ca6b596741 build(deps): bump ip from 2.0.0 to 2.0.1 (#9364)
Bumps [ip](https://github.com/indutny/node-ip) from 2.0.0 to 2.0.1.
- [Commits](https://github.com/indutny/node-ip/compare/v2.0.0...v2.0.1)

---
updated-dependencies:
- dependency-name: ip
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-02-22 09:52:03 -05:00
DominikIwanek 7e68ed9ceb [ACS-6817] Size and Modified by is not displayed after editing file/folder properties (#9367) 2024-02-22 10:33:09 +01:00
DominikIwanek e20f8536cb [MNT-22836] -Docs for Support of PKCE (#9368) 2024-02-22 10:31:48 +01:00
Wojciech Duda 86710eb589 AAE-14726 add missing style file link (#9359) 2024-02-20 10:10:24 +00:00
MichalKinas b5b3ff6674 [ACS-6812] Add new chip only when input value is valid (#9358)
* [ACS-6812] Add new chip only when input value is valid

* [ACS-6812] CR fixes

* [ACS-6812] Expectations fixed in unit tests

* [ACS-6812] Remove code duplications

* [ACS-6812] Remove fdescribe

* [ACS-6812] Duplications removal

* [ACS-6812] Remove duplicated tests

* [ACS-6812] Missing semicolon
2024-02-20 10:13:33 +01:00
Tommaso D'Alessandro 37d96e4507 AAE-19565 add a new custom UI in simpleapp to test GitHub action HylandSoftware/hx-studio-customui-action (#9347) 2024-02-19 17:17:58 +01:00
Mykyta Maliarchuk d7fa4143bf [ACS-5994] perform node deletion in order (#9357) 2024-02-19 14:10:47 +01:00
jacekpluta 34a399e398 [ACS-6565] ADW - Document List View Header - UX Bugs - icon fix (#9349) 2024-02-19 13:11:56 +01:00
Denys Vuika 4c75a6748c Linting fixes (#9348)
* linting fixes

* lint fixes

* linting and spellcheck fixes

* code fixes
2024-02-16 11:04:49 -05:00
StephenDunn 9b0104fcf5 (#9307) Fix filterExcludedPreset of adf-content-metadata-card configuration to include all excluded properties (#9309)
* fix filterExcludedPreset to include all configurations instead of only the first with exclusions. (#9307)

* New test for property exclusion in layout-oriented-config.service (9307)
2024-02-16 08:25:48 -05:00
Wiktor Danielewski 1331a6d7ce AAE-20420 Update package.json for editor.js (#9344)
* AAE-20420 Update package.json

* AAE-20420 Update general package.json

* AAE-20420 Update inner package.json

* AAE-20420 Update order

* AAE-20420 Update inner package with node 18

* AAE-20420 Add .nvmrc
2024-02-16 13:47:37 +01:00
Ehsan Rezaei 05d23bc8a5 AAE-20140 Removing material locators from unit tests part 1 (#9345)
* AAE-20140 Removing material locators from unit tests part 1

* AAE-20140: Fixed lint and test issues
2024-02-16 13:43:49 +01:00
DominikIwanek 40d64d299f [HXCS-2818] - fix issues with ERROR RangeError: Invalid time value (#9340) 2024-02-16 10:15:14 +01:00
Grzegorz Jaśkowski a8d547c7b4 [ACS-6722] aca custom aspect property of d date type breaks application (#9331)
* [ACS-6722] fix custom date property parsing, delete reduntant function calls in templates

* [ACS-6722] add unit test
2024-02-15 17:06:03 -05:00
MichalKinas 8d5f3c9884 [ACS-6805] getNodeContent allows adding additional options (#9343) 2024-02-15 20:49:17 +01:00
MichalKinas 1d3a7b1573 [ACS-6804] Fix upload API file placement when relative path is undefined (#9342) 2024-02-15 12:15:23 -05:00
Maurizio Vitaleandwiktord2000 6468298bb0 AAE-20420 - Use latest editorjs and fix storybook (#9336)
* Use latest editorjs and fix storybook

* Remove unit with haveBeenCalled

* AAE-20420 Fix for broken tests

---------

Co-authored-by: wiktord2000 <wiktor.danielewski@hyland.com>
2024-02-15 13:56:34 +00:00
Bartosz Sekula 16005ef298 Create a new widget for decimal type (#9335)
* [AAE-19481] Create a new widget for decimal type

* update

* CR

* unit for decimal widgets

* added test for positibe validator

* added decimal validator tests

* cr
2024-02-15 14:23:55 +01:00
DominikIwanek 300d46dc7e [MNT-24151] - ADW: Users can see some actions Edit Offline" and "Upload New Version" for the declared record - fix (#9339) 2024-02-15 13:55:37 +01:00
AleksanderSklorz 213a73fc36 [ACS-5483] group details view general info and list of assigned users (#9329)
* ACS-5483 Added possibility to load and update group

* ACS-5483 Implemented unsaved changes dialog

* ACS-5483 Removed console log

* ACS-5483 Made dynamic chip list reusable

* ACS-5483 Fix for more than one row chips

* ACS-5483 Fix for pagination

* ACS-5483 Added some fixes

* ACS-5483 Fixed displaying tags for node

* ACS-5483 Renamed css classes

* ACS-5483 Fixed resizing when chips have pagination

* ACS-5483 Clearing code

* ACS-5483 Documentation for dynamic chip list component

* ACS-5483 Documentation for unsaved changes dialog and guard

* ACS-5483 Documentation for group service

* ACS-5483 Unit tests for GroupService

* ACS-5483 Unit tests for dynamic chip list component

* ACS-5483 Changed fdescribe to describe

* ACS-5483 Unit tests for tag node list component

* ACS-5483 Unit tests for unsaved changes dialog component

* ACS-5483 Unit tests for unsaved changes guard

* ACS-5483 Added description field to group models

* ACS-5483 Correction for updating with description

* ACS-5483 Fixed lint issues

* ACS-5483 Addressed PR comments

* ACS-5483 Reduced complexity

* ACS-5483 Reduced complexity

* ACS-5483 Addressed PR comments
2024-02-15 13:02:24 +01:00
DominikIwanek 8363d09e79 [ACS-6585] - [ACC] Removing a to be created tag, while the create tag input field has a 'Tag already exists' error, removes the error (#9338) 2024-02-15 09:58:41 +01:00
Anna KarwatkaandAnna Karwatka 31073805e7 [AAE-19913] Add data table process to simpleapp (#9337)
Co-authored-by: Anna Karwatka <anna.karwatka@hylamd.com>
2024-02-15 08:53:45 +01:00
Robert Duda 1b3b419f72 AAE-20282 fix submit button enabled when required people/groups widget empty (#9334) 2024-02-14 16:25:30 +01:00
DominikIwanek 2175b4bdab [AAE-20428] - Admin application - header is missing name of the app and user menu (#9333) 2024-02-14 10:17:56 +01:00
DominikIwanek 378b125993 [ACS-6140] - search-tab-content does not show when changing tab multiple times (#9332) 2024-02-13 11:37:44 +01:00
Wojciech Duda 8df2113ce8 [AAE-20250] fixed label overlapping input for readonly cardview textitem (#9312)
* [AAE-20250] fixed label overlapping input for readonly cardview textitem

* [AAE-20250] reverting position changes

* [AAE-20250] adjust padding
2024-02-12 15:12:27 +00:00
Michał Fidor 58f4be437d [AAE-18758] Consistency with deploy payload in be uats (#9330) 2024-02-12 14:39:38 +01:00
tamaragruszka c1d933ee96 [ACS-6643] remove constant max-width value (#9310) 2024-02-09 18:49:26 +01:00
tamaragruszka 01b6bc6417 [ACS-5704][Community request] ObjectDataTableAdapter sorting (#9272)
* [ACS-5704] change table sorting

* [ACS-5704] change table sorting

* [ACS-5704] change table sorting

* [ci:force] fix integer mapping

* [ACS-5704] set alphanumeric sorting as default
2024-02-09 11:07:19 -05:00
LeoMattioli cddbcc0700 Updated links in release notes doc to be browsable via Web (#9316) 2024-02-09 11:06:13 -05:00
DominikIwanek 6d93d011c9 [ACS-6140] - Remove references to internal Angular Material CSS classes (#9271) 2024-02-09 08:22:01 +01:00
Wiktor Danielewski 9343fe65a6 [AAE-19968] Field visibility condition using Integer and greater than not working (#9305)
* [AAE-19968] Fix

* [AAE-19968] Tests with small update

* [AAE-19968] Update

* [AAE-19968] Revert

* [AAE-19968] Small refactor

* [AAE-19968] Add test

* [AAE-19968] Tests

* [AAE-19968] Update model

* [AAE-19968] Small update

* [AAE-19968] Update

* Fix for failing unit tests

* [AAE-19968] Refactor

* [AAE-19968] Refactor

* [AAE-19968] Refactor

* [AAE-19968] Add test

* [AAE-19968] Refactor
2024-02-08 15:19:32 +01:00
Diogo Bastos a893fafa07 [AAE-19762] Add nonceStateSeparator to authConfig (#9311) 2024-02-08 10:37:59 +00:00
DominikIwanek 7238df106c [MNT-24151] - ADW: Users can see some actions Edit Offline" and "Upload New Version" for the declared record (#9295)
* [MNT-24151] - ADW: Users can see some actions Edit Offline" and "Upload New Version" for the declared record

* [MNT-24151] - add unit tests
2024-02-07 13:49:50 -05:00
Maurizio Vitale 186dab3a4c Add concurrency on release (#9306) 2024-02-07 13:02:46 +00:00
dependabot[bot] 590f5e2af5 build(deps): bump highlight.js and typedoc in /tools/doc (#9279)
Removes [highlight.js](https://github.com/highlightjs/highlight.js). It's no longer used after updating ancestor dependency [typedoc](https://github.com/TypeStrong/TypeDoc). These dependencies need to be updated together.


Removes `highlight.js`

Updates `typedoc` from 0.15.8 to 0.25.7
- [Release notes](https://github.com/TypeStrong/TypeDoc/releases)
- [Changelog](https://github.com/TypeStrong/typedoc/blob/master/CHANGELOG.md)
- [Commits](https://github.com/TypeStrong/TypeDoc/compare/v0.15.8...v0.25.7)

---
updated-dependencies:
- dependency-name: highlight.js
  dependency-type: indirect
- dependency-name: typedoc
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-02-07 10:52:00 +00:00
dependabot[bot] f262baaea2 build(deps): bump github/codeql-action from 3.23.0 to 3.24.0 (#9301)
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.23.0 to 3.24.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/e5f05b81d5b6ff8cfa111c80c22c5fd02a384118...e8893c57a1f3a2b659b6b55564fdfdbbd2982911)

---
updated-dependencies:
- dependency-name: github/codeql-action
  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>
2024-02-07 09:23:39 +00:00
dependabot[bot] 81332c62e8 build(deps): bump Alfresco/alfresco-build-tools from 5.11.1 to 5.13.1 (#9287)
Bumps [Alfresco/alfresco-build-tools](https://github.com/alfresco/alfresco-build-tools) from 5.11.1 to 5.13.1.
- [Release notes](https://github.com/alfresco/alfresco-build-tools/releases)
- [Commits](https://github.com/alfresco/alfresco-build-tools/compare/e75b58f8772ae86fc67fe2d48ff05392d9021393...469ed8f7c8198c4f8476392d944b2568e4043c5a)

---
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>
2024-02-07 09:23:05 +00:00
dependabot[bot] 92f511624a build(deps): bump Alfresco/alfresco-build-tools (#9285)
Bumps [Alfresco/alfresco-build-tools](https://github.com/alfresco/alfresco-build-tools) from 5.11.1 to 5.13.1.
- [Release notes](https://github.com/alfresco/alfresco-build-tools/releases)
- [Commits](https://github.com/alfresco/alfresco-build-tools/compare/e75b58f8772ae86fc67fe2d48ff05392d9021393...469ed8f7c8198c4f8476392d944b2568e4043c5a)

---
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>
2024-02-07 09:22:50 +00:00
dependabot[bot] d12aab3e7e build(deps): bump slackapi/slack-github-action from 1.24.0 to 1.25.0 (#9289)
Bumps [slackapi/slack-github-action](https://github.com/slackapi/slack-github-action) from 1.24.0 to 1.25.0.
- [Release notes](https://github.com/slackapi/slack-github-action/releases)
- [Commits](https://github.com/slackapi/slack-github-action/compare/e28cf165c92ffef168d23c5c9000cffc8a25e117...6c661ce58804a1a20f6dc5fbee7f0381b469e001)

---
updated-dependencies:
- dependency-name: slackapi/slack-github-action
  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>
2024-02-07 09:22:43 +00:00
Adriano CostaandAdriano Costa efd8e8d0ed [HXCS-2818] CardViewDateItem component ignore timezone when displaying dates (#9304)
* [HXCS-2818] card-view-dateitem interpret dates as local, store them as utc

* [HXCS-2818] refactoring

---------

Co-authored-by: Adriano Costa <Adriano.Costa@hyland.comgit>
2024-02-05 16:52:27 +01:00
Bartosz Sekula 47d1165d5f [AAE-19928] Add storage prefix factory (#9303)
* [AAE-19928] Add storage prefix factory

* fix names

* CR

* CR
2024-02-05 13:01:33 +01:00
Bartosz Sekula 311be13f95 [AAE-20016] ADF CVE-2024-21626 - update to GHA to use ubuntu-latest (#9297) 2024-02-01 13:52:46 +00:00
jacekpluta 81c17da099 [ACS-6565] ADW - Document List View Header - UX Bugs (#9269) 2024-01-31 08:41:20 +01:00
Eugenio Romano cb7f4ffda2 [AAE-13305] remove unused authpath (#9294) 2024-01-30 15:23:56 +00:00
Eugenio Romano 9e05baf4a7 [AAE-17971] removed unused dep (#9292)
Remove github-api unused dep
2024-01-30 14:29:36 +00:00
Wojciech Duda a54b2bd450 [AAE-15294] add missing token class to cloud group component (#9293) 2024-01-30 11:43:06 +00:00
Wojciech Duda 3aaf8f1fe5 [AAE-15206] add missing label to task assignment filter (#9291)
* [AAE-15206] add missing label to task assignment filter

* [AAE-15206] template fix
2024-01-30 09:38:54 +00:00
Adriano CostaandAdriano Costa 2e4afa07fe [HXCS-2988] fix dates in CardViweDateItemComponent (#9276)
* [HXCS-2988] fix dates in CardViweDateItemComponent

* [HXCS-2988] remove utc conversion + refactoring

* [HXCS-2988] force property.value to be Date object(s)

* [HXCS-2988] format dates

* [HXCS-2988] revert last commit

* [HXCS-2988] update date-only tests

---------

Co-authored-by: Adriano Costa <Adriano.Costa@hyland.comgit>
2024-01-27 00:45:05 +00:00
tomasz hanajandEhsan Rezaei 9473f7681b [AAE-15298] added tokens to HeaderLayout (#9074)
* [AAE-15298] added tokens to HeaderLayout

* [AAE-15298] removed obsolete class

* AAE-15298: Code improvement

* AAE-15298: Updated unit tests

* AAE-15298: Removed duplicate keys

---------

Co-authored-by: Ehsan Rezaei <ehsan.rezaei@hyland.com>
2024-01-26 11:21:16 +01:00
Denys Vuika 3b2da78617 [APPS-2230] fix documentation tools builds (#9277)
* fix typescript version

* fix package versions

* fix package versions

* [ci:force] fix code
2024-01-25 20:15:29 +00:00
MichalKinas 2c627f1166 [ACS-6620] Proper viewer extension template projection to viewer renderer (#9273)
* [ACS-6620] Proper viewer extension template projection to viewer renderer

* [ACS-6620] Use extensions instead of content for viewer config

* [ACS-6620] Lint fix
2024-01-25 19:36:59 +01:00
Denys Vuika 5ec8228504 [ACS-6659] cleanup unused docs utils (#9274)
* remove unused scripts

* remove unused scripts

* remove unused scripts

* remove unused libs

* remove unused code

* remove unused code and libs, fix linting issues

* code cleanup

* linting fixes

* linting fixes
2024-01-25 15:22:05 +00:00
elena-grosu-h 69f24a17ff AAE-19600 Inconsistency between UI model name and name stored in json file (#9252) 2024-01-25 15:21:44 +00:00
DominikIwanekandGrzegorz Jaskowski d61c20cf13 ACS-5975 change getting tasks in tasklist component and service (#8987)
Co-authored-by: Grzegorz Jaskowski <grzegorz.jaskowski@hyland.com>
2024-01-25 15:33:34 +01:00
MichalKinas a7e7934505 [ACA-4729] Add infinite scroll to version list (#9248)
* [ACA-4729] Add infinite scroll to version list

* [ACA-4729] CR fixes

* [ACA-4729] CR fixes

* [ACA-4729] Items count fix for infinite scroll datasource
2024-01-25 09:23:03 +01:00
MichalKinas 2c0ad7137a [ACS-6489] Add resizable option for column data model (#9220)
* [ACS-6489] Add resizable option for column data model

* [ACS-6489] CR fixes
2024-01-25 08:35:17 +01:00
Amedeo Lepore 62bc8423a3 [AAE-19542] Fix infinite loop when code flow is enabled (#9193)
* [AAE-12531] Bump angular-oauth-oidc to version 15, fixed a lot of critical bugs and ready for angular 15

* [AAE-12531] Remove commented code

* [AAE-12531] Fix window.location.search is empty when loginCallback is called

* [AAE-12521] Provide guard in root

* [AAE-12521] move navigation to the guard to fix infinite loop issue with code flow auth

* [AAE-12521] allow to set the preventClearHashAfterLogin value by forRoot method to choose if clear hash fragment after the lib read the token

* [AAE-12531] Set angular-oauth-oidc version to 14, since version 15 doesn't work with angular v14

* Revert "[AAE-12531] Set angular-oauth-oidc version to 14, since version 15 doesn't work with angular v14"

This reverts commit 4e2a39bf6a.

* Revert "[AAE-12531] Bump angular-oauth-oidc to version 15, fixed a lot of critical bugs and ready for angular 15"

This reverts commit 9ae308a7f8.
2024-01-23 19:12:10 +01:00
396 changed files with 10223 additions and 6165 deletions
+1 -1
View File
@@ -26,7 +26,7 @@ runs:
cache-dependency-path: package-lock.json
- name: get latest tag sha
id: tag-sha
uses: Alfresco/alfresco-build-tools/.github/actions/git-latest-tag@e75b58f8772ae86fc67fe2d48ff05392d9021393 # v5.11.1
uses: Alfresco/alfresco-build-tools/.github/actions/git-latest-tag@469ed8f7c8198c4f8476392d944b2568e4043c5a # v5.13.1
# CACHE
- name: Node Modules cache
id: node-modules-cache
+3 -3
View File
@@ -30,7 +30,7 @@ jobs:
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@e5f05b81d5b6ff8cfa111c80c22c5fd02a384118 # v3.23.0
uses: github/codeql-action/init@e8893c57a1f3a2b659b6b55564fdfdbbd2982911 # v3.24.0
# 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@e5f05b81d5b6ff8cfa111c80c22c5fd02a384118 # v3.23.0
uses: github/codeql-action/autobuild@e8893c57a1f3a2b659b6b55564fdfdbbd2982911 # v3.24.0
# ️ 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@e5f05b81d5b6ff8cfa111c80c22c5fd02a384118 # v3.23.0
uses: github/codeql-action/analyze@e8893c57a1f3a2b659b6b55564fdfdbbd2982911 # v3.24.0
+1 -1
View File
@@ -91,7 +91,7 @@ jobs:
needs: release
timeout-minutes: 20
name: "Release tag"
runs-on: ubuntu-22.04
runs-on: ubuntu-latest
env:
GITHUB_TOKEN: $BOT_GITHUB_TOKEN
steps:
+11 -11
View File
@@ -95,7 +95,7 @@ env:
jobs:
pre-checks:
runs-on: ubuntu-22.04
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
@@ -113,7 +113,7 @@ jobs:
fi
check-if-pr-is-approved:
runs-on: ubuntu-22.04
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
@@ -121,10 +121,10 @@ jobs:
fetch-depth: 0
- name: Get branch name
uses: Alfresco/alfresco-build-tools/.github/actions/get-branch-name@e75b58f8772ae86fc67fe2d48ff05392d9021393 # v5.11.1
uses: Alfresco/alfresco-build-tools/.github/actions/get-branch-name@469ed8f7c8198c4f8476392d944b2568e4043c5a # v5.13.1
- name: Save commit message
uses: Alfresco/alfresco-build-tools/.github/actions/get-commit-message@e75b58f8772ae86fc67fe2d48ff05392d9021393 # v5.11.1
uses: Alfresco/alfresco-build-tools/.github/actions/get-commit-message@469ed8f7c8198c4f8476392d944b2568e4043c5a # v5.13.1
- name: ci:force flag parser
shell: bash
@@ -195,7 +195,7 @@ jobs:
# long timeout required when cache has to be recreated
timeout-minutes: 30
name: "Setup"
runs-on: ubuntu-22.04
runs-on: ubuntu-latest
needs: [check-if-pr-is-approved, pre-checks]
steps:
- name: Checkout repository
@@ -214,7 +214,7 @@ jobs:
unit-tests:
timeout-minutes: 30
name: "Unit tests: ${{ matrix.unit-tests.name }}"
runs-on: ubuntu-22.04
runs-on: ubuntu-latest
needs: [setup]
strategy:
fail-fast: false
@@ -248,7 +248,7 @@ jobs:
# long timeout required when cache has to be recreated
timeout-minutes: 30
name: "Lint"
runs-on: ubuntu-22.04
runs-on: ubuntu-latest
needs: [setup]
steps:
- name: Checkout repository
@@ -263,7 +263,7 @@ jobs:
# long timeout required when cache has to be recreated
timeout-minutes: 30
name: "Build libs"
runs-on: ubuntu-22.04
runs-on: ubuntu-latest
needs: [setup]
steps:
- name: Checkout repository
@@ -281,7 +281,7 @@ jobs:
timeout-minutes: 20
name: "e2e: storybook"
needs: [build-libs, lint, unit-tests]
runs-on: ubuntu-22.04
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
@@ -300,7 +300,7 @@ jobs:
timeout-minutes: 90
name: "e2e: ${{ matrix.e2e-test.description }}"
needs: [build-libs, lint, unit-tests]
runs-on: ubuntu-22.04
runs-on: ubuntu-latest
strategy:
fail-fast: false
# max-parallel: 4
@@ -498,7 +498,7 @@ jobs:
uses: ./.github/actions/slack-group-area
with:
affected: ${{ steps.e2e-result.outputs.result }}
- uses: slackapi/slack-github-action@e28cf165c92ffef168d23c5c9000cffc8a25e117 # v1.24.0
- uses: slackapi/slack-github-action@6c661ce58804a1a20f6dc5fbee7f0381b469e001 # v1.25.0
name: Nofify QA failure
if: ${{ github.event_name == 'schedule' && contains(needs.*.result, 'failure') }}
env:
+3 -3
View File
@@ -78,7 +78,7 @@ jobs:
setup:
timeout-minutes: 20
name: "Setup"
runs-on: ubuntu-22.04
runs-on: ubuntu-latest
steps:
- name: set TAG_NPM BRANCH
shell: bash
@@ -104,7 +104,7 @@ jobs:
release-npm:
needs: [setup]
timeout-minutes: 30
runs-on: ubuntu-22.04
runs-on: ubuntu-latest
permissions:
contents: read
packages: write
@@ -150,7 +150,7 @@ jobs:
npm-check-bundle:
needs: [release-npm]
timeout-minutes: 15
runs-on: ubuntu-22.04
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
+10 -6
View File
@@ -16,6 +16,10 @@ on:
- develop-patch*
- master-patch*
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: false
env:
BASE_REF: ${{ github.base_ref }}
HEAD_REF: ${{ github.head_ref }}
@@ -85,7 +89,7 @@ jobs:
timeout-minutes: 20
if: github.event.pull_request.merged == true || github.ref_name == 'master' || github.ref_name == 'master-patch-*'
name: "Setup"
runs-on: ubuntu-22.04
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
@@ -106,7 +110,7 @@ jobs:
needs: [setup]
timeout-minutes: 15
if: github.event.pull_request.merged == true || github.ref_name == 'master' || github.ref_name == 'master-patch-*'
runs-on: ubuntu-22.04
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
@@ -132,7 +136,7 @@ jobs:
needs: [setup]
timeout-minutes: 15
if: github.event.pull_request.merged == true || github.ref_name == 'master' || github.ref_name == 'master-patch-*'
runs-on: ubuntu-22.04
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
@@ -159,7 +163,7 @@ jobs:
needs: [setup]
timeout-minutes: 30
if: github.event.pull_request.merged == true || github.ref_name == 'master' || github.ref_name == 'master-patch-*'
runs-on: ubuntu-22.04
runs-on: ubuntu-latest
permissions:
contents: read
packages: write
@@ -206,7 +210,7 @@ jobs:
needs: [release-npm]
timeout-minutes: 15
if: github.event.pull_request.merged == true || github.ref_name == 'master' || github.ref_name == 'master-patch-*'
runs-on: ubuntu-22.04
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
@@ -219,7 +223,7 @@ jobs:
needs: [release-demoshell, release-storybook, release-npm, npm-check-bundle]
steps:
- uses: slackapi/slack-github-action@e28cf165c92ffef168d23c5c9000cffc8a25e117 # v1.24.0
- uses: slackapi/slack-github-action@6c661ce58804a1a20f6dc5fbee7f0381b469e001 # v1.25.0
name: Nofify FE eng-guild-front-end workflow failed
if: ${{ contains(toJson(needs.*.result), 'failure') }}
env:
+3 -2
View File
@@ -77,7 +77,6 @@
"lastname",
"listgrid",
"mapitem",
"markdownlint",
"mimetype",
"mincount",
"minlength",
@@ -142,7 +141,9 @@
"Whitespaces",
"xdescribe",
"xsrf",
"BPMECM"
"BPMECM",
"berseria",
"zestiria"
],
"dictionaries": [
"html",
+1 -1
View File
@@ -49,7 +49,7 @@ npm start
This command compiles and starts the project in watch mode.
Browser will automatically reload upon changes.
Upon start you can navigate to `http://localhost:3000` with your preferred browser.
Upon start, you can navigate to `http://localhost:3000` with your preferred browser.
### Important notes
+1 -1
View File
@@ -1,7 +1,7 @@
{
"name": "Alfresco-ADF-Angular-Demo",
"description": "Demo shell for Alfresco Angular components",
"version": "6.6.0",
"version": "6.7.0",
"author": "Hyland Software, Inc. and its affiliates",
"repository": {
"type": "git",
@@ -114,17 +114,17 @@ export class CardViewComponent implements OnInit, OnDestroy {
}),
new CardViewDateItemModel({
label: 'CardView Date Item',
value: new Date(1983, 11, 24, 10, 0, 30),
value: new Date('1983-11-24T00:00:00Z'),
key: 'date',
default: new Date(1983, 11, 24, 10, 0, 30),
default: new Date('1983-11-24T00:00:00Z'),
format: 'shortDate',
editable: this.isEditable
}),
new CardViewDateItemModel({
label: 'CardView Date Item - Multivalue (chips)',
value: [new Date(1983, 11, 24, 10, 0, 30)],
value: [new Date('1983-11-24T00:00:00Z')],
key: 'date',
default: new Date(1983, 11, 24, 10, 0, 30),
default: new Date('1983-11-24T00:00:00Z'),
format: 'shortDate',
editable: this.isEditable,
multivalued: true
+1 -1
View File
@@ -5,7 +5,7 @@
"features": {
"viewer": {
"content": []
"extensions": []
},
"documentList": {
+4
View File
@@ -93,6 +93,7 @@ for more information about installing and using the source code.
| [Comments Component](core/components/comments.component.md) | Displays comments from users involved in a specified environment and allows an involved user to add a comment to a environment. | [Source](../lib/core/src/lib/comments/comments.component.ts) |
| [Data Column Component](core/components/data-column.component.md) | Defines column properties for DataTable, Tasklist, Document List and other components. | [Source](../lib/core/src/lib/datatable/data-column/data-column.component.ts) |
| [DataTable component](core/components/datatable.component.md) | Displays data as a table with customizable columns and presentation. | [Source](../lib/core/src/lib/datatable/components/datatable/datatable.component.ts) |
| [Dynamic Chip List component](core/components/dynamic-chip-list.component.md) | This component shows dynamic list of chips which render depending on free space. | [Source](../lib/core/src/lib/dynamic-chip-list/dynamic-chip-list.component.ts) |
| [Empty Content Component](core/components/empty-content.component.md) | Provides a generic "Empty Content" placeholder for components. | [Source](../lib/core/src/lib/templates/empty-content/empty-content.component.ts) |
| [Empty list component](core/components/empty-list.component.md) | Displays a message indicating that a list is empty. | [Source](../lib/core/src/lib/datatable/components/empty-list/empty-list.component.ts) |
| [Error Content Component](core/components/error-content.component.md) | Displays info about a specific error. | [Source](../lib/core/src/lib/templates/error-content/error-content.component.ts) |
@@ -144,6 +145,7 @@ for more information about installing and using the source code.
| Name | Description | Source link |
| ---- | ----------- | ----------- |
| [Edit JSON Dialog](core/dialogs/edit-json.dialog.md) | Allows a user to preview or edit a JSON content in a dialog. | [Source](../lib/testing/src/lib/core/dialog/edit-json-dialog.ts) |
| [Unsaved Changes Dialog](core/dialogs/unsaved-changes-dialog.component.md) | Dialog which informs about unsaved changes. Allows discard them and proceed or close dialog and stop proceeding. | [Source](../lib/core/src/lib/dialogs/unsaved-changes-dialog/unsaved-changes-dialog.component.ts) |
### Interfaces
@@ -238,6 +240,7 @@ The model to update the DataTable require the ID of the row you want change and
| [Storage service](core/services/storage.service.md) | Stores items in the form of key-value pairs. | [Source](../lib/core/src/lib/common/services/storage.service.ts) |
| [Thumbnail service](core/services/thumbnail.service.md) | Retrieves an SVG thumbnail image to represent a document type. | [Source](../lib/core/src/lib/common/services/thumbnail.service.ts) |
| [Translation service](core/services/translation.service.md) | Supports localisation. | [Source](../lib/core/src/lib/translation/translation.service.ts) |
| [Unsaved Changes guard](core/services/unsaved-changes.guard.md) | This guard prevents deactivating route if page has any unsaved changes. User needs intentionally discard changes through displayed modal to leave actual route. | [Source](../lib/core/src/lib/dialogs/unsaved-changes-dialog/unsaved-changes.guard.ts) |
| [Upload Service](core/services/upload.service.md) | Provides access to various APIs related to file upload features. | [Source](../lib/content-services/src/lib/common/services/upload.service.ts) |
| [User access service](core/services/user-access.service.md) | Checks the global and application access of a user | [Source](../lib/core/src/lib/auth/services/user-access.service.ts) |
| [User Preferences Service](core/services/user-preferences.service.md) | Stores preferences for the app and for individual components. | [Source](../lib/core/src/lib/common/services/user-preferences.service.ts) |
@@ -387,6 +390,7 @@ for more information about installing and using the source code.
| [Document Actions service](content-services/services/document-actions.service.md) | Implements the document menu actions for the Document List component. | [Source](../lib/content-services/src/lib/document-list/services/document-actions.service.ts) |
| [Document List service](content-services/services/document-list.service.md) | Implements node operations used by the Document List component. | [Source](../lib/content-services/src/lib/document-list/services/document-list.service.ts) |
| [Folder Actions service](content-services/services/folder-actions.service.md) | Implements the folder menu actions for the Document List component. | [Source](../lib/content-services/src/lib/document-list/services/folder-actions.service.ts) |
| [Group Service](content-services/services/group.service.md) | Manages groups. | [Source](../lib/content-services/src/lib/group/services/group.service.ts) |
| [New Version Uploader service](content-services/services/new-version-uploader.dialog.service.md) | Display a dialog that allows to upload new file version or to manage the current node versions. | [Source](../lib/content-services/src/lib/new-version-uploader/new-version-uploader.service.ts) |
| [Node Comments Service](content-services/services/node-comments.service.md) | Adds and retrieves comments for nodes in Content Services. | [Source](../lib/content-services/src/lib/node-comments/services/node-comments.service.ts) |
| [Node permission dialog service](content-services/services/node-permission-dialog.service.md) | Displays dialogs to let the user set node permissions. | [Source](../lib/content-services/src/lib/permission-manager/services/node-permission-dialog.service.ts) |
@@ -237,47 +237,48 @@ The Viewer supports dynamically-loaded viewer preview extensions, to know more a
#### Code extension mechanism]
You can define your own custom handler to handle other file formats that are not yet supported by
You can define your own custom handler to override supported file formats or handle other file formats that are not yet supported by
the [Alfresco Viewer component](viewer.component.md). Below is an example that shows how to use the `adf-viewer-extension`
to handle 3D data files:
```html
<adf-alfresco-viewer [nodeId]="nodeId">
<adf-viewer-extension [supportedExtensions]="['obj','3ds']" #extension>
<ng-template let-urlFileContent="urlFileContent" let-extension="extension">
<threed-viewer
[urlFile]="urlFileContent"
[extension]="extension">
</threed-viewer>
</ng-template>
</adf-viewer-extension>
<ng-template #viewerExtensions>
<adf-viewer-extension [supportedExtensions]="['obj','3ds']" #extension>
<ng-template let-urlFileContent="urlFileContent" let-extension="extension">
<threed-viewer
[urlFile]="urlFileContent"
[extension]="extension">
</threed-viewer>
</ng-template>
</adf-viewer-extension>
</ng-template>
</adf-alfresco-viewer>
```
Note: you need to add the `ng2-3d-editor` dependency to your `package.json` file to make the example above work.
You can define multiple `adf-viewer-extension` templates if required:
You need to keep all instances of `adf-viewer-extension` inside `viewerExtensions` template, also you can define multiple `adf-viewer-extension` templates if required:
```html
<adf-alfresco-viewer [nodeId]="nodeId">
<ng-template #viewerExtensions>
<adf-viewer-extension [supportedExtensions]="['xls','xlsx']" #extension>
<ng-template let-urlFileContent="urlFileContent">
<my-custom-xls-component
urlFileContent="urlFileContent">
</my-custom-xls-component>
</ng-template>
</adf-viewer-extension>
<adf-viewer-extension [supportedExtensions]="['xls','xlsx']" #extension>
<ng-template let-urlFileContent="urlFileContent">
<my-custom-xls-component
urlFileContent="urlFileContent">
</my-custom-xls-component>
</ng-template>
</adf-viewer-extension>
<adf-viewer-extension [supportedExtensions]="['txt']" #extension>
<ng-template let-urlFileContent="urlFileContent" >
<my-custom-txt-component
urlFileContent="urlFileContent">
</my-custom-txt-component>
</ng-template>
</adf-viewer-extension>
<adf-viewer-extension [supportedExtensions]="['txt']" #extension>
<ng-template let-urlFileContent="urlFileContent" >
<my-custom-txt-component
urlFileContent="urlFileContent">
</my-custom-txt-component>
</ng-template>
</adf-viewer-extension>
</ng-template>
</adf-alfresco-viewer>
```
@@ -0,0 +1,66 @@
---
Title: Infinite Scroll Datasource
Added: v6.6.0
Status: Active
Last reviewed: 2024-01-15
---
# [Infinite Scroll Datasource](../../../lib/content-services/src/lib/infinite-scroll-datasource/infinite-scroll-datasource.ts "Defined in infinite-scroll-datasource.ts")
Contains abstract class acting as a baseline for various datasources for infinite scrolls.
## Basic Usage
First step to use infinite scroll datasource in any component is creating a datasource class extending `InfiniteScrollDatasource` using specific source of data e.g. one of the content endpoints.
```ts
export class VersionListDataSource extends InfiniteScrollDatasource<VersionEntry> {
constructor(private versionsApi: VersionsApi, private node: Node) {
super();
}
getNextBatch(pagingOptions: ContentPagingQuery): Observable<VersionEntry[]> {
return from(this.versionsApi.listVersionHistory(this.node.id, pagingOptions)).pipe(
take(1),
map((versionPaging) => versionPaging.list.entries)
);
}
}
```
Then in component that will have the infinite scroll define the datasource as instance of a class created in previous step, optionally you can set custom size of the items batch or listen to loading state changes:
```ts
this.versionsDataSource = new VersionListDataSource(this.versionsApi, this.node);
this.versionsDataSource.batchSize = 50;
this.versionsDataSource.isLoading.pipe(takeUntil(this.onDestroy$)).subscribe((isLoading) => this.isLoading = isLoading);
```
Final step is to add the [CdkVirtualScrollViewport](https://material.angular.io/cdk/scrolling/api#CdkVirtualScrollViewport) with [CdkVirtualFor](https://material.angular.io/cdk/scrolling/api#CdkVirtualForOf) loop displaying items from the datasource.
```html
<cdk-virtual-scroll-viewport appendOnly itemSize="88">
<div *cdkVirtualFor="let version of versionsDataSource"></div>
</cdk-virtual-scroll-viewport>
```
When user will scroll down to the bottom of the list next batch of items will be fetched until all items are visible.
## Class members
### Properties
| Name | Type | Default value | Description |
| ---- | ---- | ------------- | ----------- |
| batchSize | `number` | 100 | Determines how much items will be fetched within one batch. |
| firstItem | `T` | | Returns the first item ever fetched. |
| isLoading | [`Observable`](https://rxjs.dev/api/index/class/Observable)`<boolean>` | | Observable representing the state of loading the first batch. |
| itemsCount | `number` | | Number of items fetched so far. |
### Methods
- **connect**(collectionViewer: [`CollectionViewer`](https://material.angular.io/cdk/collections/api)): [`Observable`](https://rxjs.dev/api/index/class/Observable)`<T>`<br/>
Called by the virtual scroll viewport to receive a stream that emits the data array that should be rendered.
- collectionViewer:_ [`CollectionViewer`](https://material.angular.io/cdk/collections/api) - collection viewer providing view changes that are listened to so that next batch can be fetched
- **Returns** [`Observable`](https://rxjs.dev/api/index/class/Observable)`<T>` - Data stream containing fetched items.
- **disconnect**(): void<br/>
Called when viewport is destroyed, disconnects the datasource, unsubscribes from the view changes.
- **reset**(): void<br/>
Resets the datasource by fetching the first batch.
@@ -33,7 +33,7 @@ Shows tags for a node.
| Name | Type | Description |
| ---- | ---- | ----------- |
| results | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<any>` | Emitted when a tag is selected. |
| results | [`EventEmitter`](https://angular.io/api/core/EventEmitter)[`<TagEntry>`](../../../lib/js-api/src/api/content-rest-api/model/tagEntry.ts)`[]` | Emitted when a tag is selected. |
## Details
@@ -49,3 +49,7 @@ To limit number of tags initially displayed set `limitTagsDisplayed` to `true`.
```
Now when tag chips will exceed the size of the container number of displayed chips will be limited to as much as fits together with view more button. At least one tag will always be displayed, when one tag and view more button won't fit into one line the button will be displayed under the tag.
## See Also
- [Dynamic Chip List component](../../core/components/dynamic-chip-list.component.md)
@@ -12,8 +12,7 @@ Specifies required properties for custom metadata panel to be displayed in [Cont
## Basic usage
```ts
export interface ContentMetadataCustomPanel {
panelTitle: string;
export interface ContentMetadataCustomPanel extends ContentMetadataPanel {
component: string;
}
```
@@ -22,10 +21,10 @@ export interface ContentMetadataCustomPanel {
| Name | Type | Default value | Description |
| ---- | ---- | ------------- | ----------- |
| panelTitle | `string` | | Title for the panel the will be displayed in expansion panel header. |
| component | `string` | | Id of the registered [Dynamic component](../../extensions/components/dynamic.component.md) to be displayed inside expansion panel. |
## See also
- [ContentMetadataCardComponent](../components/content-metadata-card.component.md)
- [Dynamic Component](../../extensions/components/dynamic.component.md)
- [Content Metadata Panel intergace](./content-metadata-panel.interface.md)
@@ -0,0 +1,32 @@
---
Title: Content Metadata Panel interface
Added: v6.7.0
Status: Active
Last reviewed: 2024-02-22
---
# [Content Metadata Panel interface](../../../lib/content-services/src/lib/content-metadata/interfaces/content-metadata-panel.interface.ts "Defined in content-metadata-panel.interface.ts")
Specifies required properties for metadata panel to be displayed in [ContentMetadataCardComponent](../components/content-metadata-card.component.md).
## Basic usage
```ts
export interface ContentMetadataPanel {
panelTitle: string;
expanded?: boolean;
}
```
### Properties
| Name | Type | Default value | Description |
| ---- | ---- | ------------- | ----------- |
| panelTitle | `string` | | Title for the panel the will be displayed in expansion panel header. |
| expanded | `boolean` | | Specifies if given panel is expanded. |
## See also
- [ContentMetadataCardComponent](../components/content-metadata-card.component.md)
- [Dynamic Component](../../extensions/components/dynamic.component.md)
- [Content Metadata Custom panel interface](./content-metadata-custom-panel.interface.md)
@@ -0,0 +1,25 @@
---
Title: Group Service
Added: v6.6.0
Status: Active
Last reviewed: 2024-02-07
---
# [Group Service](../../../lib/content-services/src/lib/group/services/group.service.ts "Defined in group.service.ts")
Manages groups.
## Class members
### Methods
- **getGroup**(id: `string`, opts?: [`ContentIncludeQuery`](../../../lib/js-api/src/api/content-rest-api/api/types.ts)): [`Observable`](https://rxjs.dev/guide/observable)`<`[`GroupEntry`](../../../lib/js-api/src/api/content-rest-api/model/groupEntry.ts)`>`<br/>
Returns group for specified id.
- _id:_ `string` - id of group to return.
- _opts:_ [`ContentIncludeQuery`](../../../lib/js-api/src/api/content-rest-api/api/types.ts) - additional query parameters.
- **Returns** [`Observable`](https://rxjs.dev/guide/observable)`<`[`GroupEntry`](../../../lib/js-api/src/api/content-rest-api/model/groupEntry.ts)`>` - group for specified id.
- **updateGroup**(group: [`Group`](../../../lib/js-api/src/api/content-rest-api/docs/Group.md), opts?: [`ContentIncludeQuery`](../../../lib/js-api/src/api/content-rest-api/api/types.ts)): [`Observable`](https://rxjs.dev/guide/observable)`<`[`GroupEntry`](../../../lib/js-api/src/api/content-rest-api/model/groupEntry.ts)`>`<br/>
Updates specified group.
- _group:_ [`Group`](../../../lib/js-api/src/api/content-rest-api/docs/Group.md) - group to update.
- _opts:_ [`ContentIncludeQuery`](../../../lib/js-api/src/api/content-rest-api/api/types.ts) - additional query parameters.
- **Returns** [`Observable`](https://rxjs.dev/guide/observable)`<`[`GroupEntry`](../../../lib/js-api/src/api/content-rest-api/model/groupEntry.ts)`>` - updated group.
@@ -48,6 +48,7 @@ Defines column properties for DataTable, Tasklist, Document List and other compo
| cssClass | `string` | | Additional CSS class to be applied to column (header and cells). |
| customData | `any` | | You can specify any custom data which can be used by any specific feature |
| draggable | `boolean` | false | Enable drag and drop for header column |
| resizable | `boolean` | true | Enable column resizing |
| editable | `boolean` | false | Toggles the editing support of the column data. |
| focus | `boolean` | true | Enable or disable cell focus |
| format | `string` | | Value format (if supported by the parent component), for example format of the date. |
@@ -0,0 +1,57 @@
---
Title: Dynamic Chip List component
Added: v6.6.0
Status: Active
Last reviewed: 2024-02-06
---
# [Dynamic Chip List component](../../../lib/core/src/lib/dynamic-chip-list/dynamic-chip-list.component.ts "Defined in dynamic-chip-list.component.ts")
This component shows dynamic list of chips which render depending on free space.
![List of chips](../../docassets/images/dynamic-chip-list.png)
## Basic Usage
```html
<adf-dynamic-chip-list
[chips]="chips"
[limitChipsDisplayed]="true"
[showDelete]="true"
(displayNext)="onDisplayNext()"
(removedChip)="onRemovedChip($event)">
</adf-dynamic-chip-list>
```
## Class members
### Properties
| Name | Type | Default value | Description |
|---------------------|---------------------------------------------------------------------------------|---------------|---------------------------------------------|
| limitChipsDisplayed | `boolean` | false | Should limit number of chips displayed. |
| showDelete | `boolean` | true | Show delete button. |
| pagination | [`Pagination`](../../../lib/js-api/src/api/content-rest-api/docs/Pagination.md) | | Provide if you want to use paginated chips. |
| chips | [`Chip`](../../../lib/core/src/lib/dynamic-chip-list/chip.ts)`[]` | | List of chips to display. |
### Events
| Name | Type | Description |
|-------------|----------------------------------------------------------------------|-----------------------------------------------|
| displayNext | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<void>` | Emitted when button for view more is clicked. |
| removedChip | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<string>` | Emitted when any chip is removed. |
## Details
### Limit number of chips displayed initially
To limit number of chips initially displayed set `limitChipsDisplayed` to `true`.
```html
<adf-dynamic-chip-list
[chips]="chips"
[limitChipsDisplayed]="true">
</adf-dynamic-chip-list>
```
Now when chips will exceed the size of the container number of displayed chips will be limited to as much as fits together with view more button. At least one chip will always be displayed, when one chip and view more button won't fit into one line the button will be displayed under the chip.
-1
View File
@@ -195,7 +195,6 @@ You can access an external provider to get an auth token for a user:
{
"oauth2" : {
"host": "http://myhost.com",
"authPath": "/my-custom-auth/token",
"clientId": "my-client-id",
"secret": ""
}
+22 -26
View File
@@ -62,6 +62,7 @@ Using with file [`Blob`](https://developer.mozilla.org/en-US/docs/Web/API/Blob):
| thumbnailsTemplate | [`TemplateRef`](https://angular.io/api/core/TemplateRef)`<any>` | null | The template for the pdf thumbnails. |
| tracks | [`Track`](../../../lib/core/src/lib/viewer/models/viewer.model.ts)`[]` | \[] | media subtitles for the media player |
| 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. |
### Events
@@ -200,34 +201,13 @@ The [Viewer render component](viewer.component.md) should now be able to display
The Viewer supports dynamically-loaded viewer preview extensions, to know more about it [Preview Extension component](../../extensions/components/preview-extension.component.md). This
#### Code extension mechanism]
#### Code extension mechanism
You can define your own custom handler to handle other file formats that are not yet supported by
the [Viewer render component](viewer.component.md). Below is an example that shows how to use the `adf-viewer-render-extension`
to handle 3D data files:
```html
<adf-viewer-render [nodeId]="nodeId">
<adf-viewer-extension [supportedExtensions]="['obj','3ds']" #extension>
<ng-template let-urlFileContent="urlFileContent" let-extension="extension">
<threed-viewer
[urlFile]="urlFileContent"
[extension]="extension">
</threed-viewer>
</ng-template>
</adf-viewer-extension>
</adf-viewer-render>
```
Note: you need to add the `ng2-3d-editor` dependency to your `package.json` file to make the example above work.
You can define multiple `adf-viewer-render-extension` templates if required:
```html
<adf-viewer-render [nodeId]="nodeId">
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`:
```html
<ng-template #viewerExtensions>
<adf-viewer-extension [supportedExtensions]="['xls','xlsx']" #extension>
<ng-template let-urlFileContent="urlFileContent">
<my-custom-xls-component
@@ -243,6 +223,22 @@ You can define multiple `adf-viewer-render-extension` templates if required:
</my-custom-txt-component>
</ng-template>
</adf-viewer-render-extension>
</ng-template>
```
Next in your component you need to get a reference of created template
```ts
@ViewChild('viewerExtensions')
viewerTemplateExtensions: TemplateRef<any>;
```
and pass it via `viewerTemplateExtensions` input:
```html
<adf-viewer-render>
...
[viewerTemplateExtensions]="viewerTemplateExtensions"
</adf-viewer-render>
```
+29 -28
View File
@@ -85,6 +85,7 @@ See the [Custom layout](#custom-layout) section for full details of all availabl
| sidebarRightTemplateContext | | null | Context object available for binding by the local sidebarRightTemplate with let declarations. |
| tracks | [`Track`](../../../lib/core/src/lib/viewer/models/viewer.model.ts)`[]` | \[] | media subtitles for the media player |
| 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. |
| viewerExtensions | [`TemplateRef`](https://angular.io/api/core/TemplateRef)`<any>` | null | Template containing ViewerExtensionDirective instances providing different viewer extensions based on supported file extension. |
### Events
@@ -209,47 +210,47 @@ The Viewer supports dynamically-loaded viewer preview extensions, to know more a
#### Code extension mechanism]
You can define your own custom handler to handle other file formats that are not yet supported by
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:
```html
<adf-viewer [urlFile]="urlFile">
<adf-viewer-extension [supportedExtensions]="['obj','3ds']" #extension>
<ng-template let-urlFileContent="urlFileContent" let-extension="extension">
<threed-viewer
[urlFile]="urlFileContent"
[extension]="extension">
</threed-viewer>
</ng-template>
</adf-viewer-extension>
<ng-template #viewerExtensions>
<adf-viewer-extension [supportedExtensions]="['obj','3ds']" #extension>
<ng-template let-urlFileContent="urlFileContent" let-extension="extension">
<threed-viewer
[urlFile]="urlFileContent"
[extension]="extension">
</threed-viewer>
</ng-template>
</adf-viewer-extension>
</ng-template>
</adf-viewer>
```
Note: you need to add the `ng2-3d-editor` dependency to your `package.json` file to make the example above work.
You can define multiple `adf-viewer-extension` templates if required:
You need to keep all instances of `adf-viewer-extension` inside `viewerExtensions` template, also you can define multiple `adf-viewer-extension` templates if required:
```html
<adf-viewer [urlFile]="urlFile">
<ng-template #viewerExtensions>
<adf-viewer-extension [supportedExtensions]="['xls','xlsx']" #extension>
<ng-template let-urlFileContent="urlFileContent">
<my-custom-xls-component
urlFileContent="urlFileContent">
</my-custom-xls-component>
</ng-template>
</adf-viewer-extension>
<adf-viewer-extension [supportedExtensions]="['xls','xlsx']" #extension>
<ng-template let-urlFileContent="urlFileContent">
<my-custom-xls-component
urlFileContent="urlFileContent">
</my-custom-xls-component>
</ng-template>
</adf-viewer-extension>
<adf-viewer-extension [supportedExtensions]="['txt']" #extension>
<ng-template let-urlFileContent="urlFileContent" >
<my-custom-txt-component
urlFileContent="urlFileContent">
</my-custom-txt-component>
</ng-template>
</adf-viewer-extension>
<adf-viewer-extension [supportedExtensions]="['txt']" #extension>
<ng-template let-urlFileContent="urlFileContent" >
<my-custom-txt-component
urlFileContent="urlFileContent">
</my-custom-txt-component>
</ng-template>
</adf-viewer-extension>
</ng-template>
</adf-viewer>
```
@@ -0,0 +1,27 @@
---
Title: Unsaved Changes Dialog component
Added: v6.6.0
Status: Active
Last reviewed: 2024-02-06
---
# [Unsaved Changes Dialog component](../../../lib/core/src/lib/dialogs/unsaved-changes-dialog/unsaved-changes-dialog.component.ts "Defined in unsaved-changes-dialog.component.ts")
Dialog which informs about unsaved changes. Allows discard them and proceed or close dialog and stop proceeding.
![Unsaved Changes Dialog](../../docassets/images/unsaved-changes-dialog.png)
## Basic Usage
```ts
this.dialog.open(UnsavedChangesDialogComponent);
```
## Details
### Detecting if changes should be discarded.
To detect if changes should be discarded you need to check value passed on dialog's close. If value is true then changes should be discard, false otherwise.
## See also
- [Unsaved Changes guard](../services/unsaved-changes.guard.md)
@@ -35,10 +35,10 @@ Get the data value from a specific table cell.
`getSorting():`[`DataSorting`](../../../lib/core/src/lib/datatable/data/data-sorting.model.ts)`;`<br/>
`setSorting(sorting: DataSorting): void;`<br/>
Get/set the sorting key and direction (ascending or descending).
Get/set the sorting key, direction (ascending or descending) and options (eg. numeric).
`sort(key?: string, direction?: string): void;`<br/>
Sort the table with a specified key and direction (ascending or descending).
`sort(key?: string, direction?: string, options?: Intl.CollatorOptions): void;`<br/>
Sort the table with a specified key, direction (ascending or descending) and options (eg. numeric).
## Details
@@ -0,0 +1,22 @@
---
Title: Unsaved Changes guard
Added: v6.6.0
Status: Active
Last reviewed: 2024-02-06
---
# [Unsaved Changes guard](../../../lib/core/src/lib/dialogs/unsaved-changes-dialog/unsaved-changes.guard.ts "Defined in unsaved-changes.guard.ts")
This guard prevents deactivating route if page has any unsaved changes. User needs intentionally discard changes through displayed modal to leave actual route.
## Class members
### Methods
- **canDeactivate**(): `boolean` | [`Observable`](https://rxjs.dev/guide/observable)`<boolean>`<br/>
Allows to deactivate route when there is no unsaved changes, otherwise displays dialog to confirm discarding changes.
- **Returns** `boolean` | [`Observable`](https://rxjs.dev/guide/observable)`<boolean>` - true when there is no unsaved changes or changes can be discarded, false otherwise.
## See also
- [Unsaved Changes Dialog component](../dialogs/unsaved-changes-dialog.component.md)
Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 65 KiB

+1
View File
@@ -45,3 +45,4 @@ The pages linked below contain the licenses for all third party dependencies of
- [ADF 6.5.1](license-info-6.5.1.md)
- [ADF 6.5.2](license-info-6.5.2.md)
- [ADF 6.6.0](license-info-6.6.0.md)
- [ADF 6.7.0](license-info-6.7.0.md)
+570
View File
@@ -0,0 +1,570 @@
---
Title: License info, alfresco-ng2-components 6.7.0
---
# License information for alfresco-ng2-components 6.7.0
This page lists all third party libraries the project depends on.
## Libraries
| Name | Version | License |
| --- | --- | --- |
| [@alfresco/js-api](https://github.com/Alfresco/alfresco-js-api) | 7.2.0 | [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0) |
| [@angular/animations](https://github.com/angular/angular) | 14.1.3 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@angular/cdk](https://github.com/angular/components) | 14.1.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@angular/common](https://github.com/angular/angular) | 14.1.3 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@angular/compiler](https://github.com/angular/angular) | 14.1.3 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@angular/core](https://github.com/angular/angular) | 14.1.3 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@angular/forms](https://github.com/angular/angular) | 14.1.3 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@angular/material-date-fns-adapter](https://github.com/angular/components) | 14.1.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@angular/material](https://github.com/angular/components) | 14.1.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@angular/platform-browser-dynamic](https://github.com/angular/angular) | 14.1.3 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@angular/platform-browser](https://github.com/angular/angular) | 14.1.3 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@angular/router](https://github.com/angular/angular) | 14.1.3 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@apollo/client](https://github.com/apollographql/apollo-client) | 3.8.4 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@aw-web-design/x-default-browser](https://github.com/The-Code-Monkey/TechStack) | 1.4.126 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@babel/code-frame](https://github.com/babel/babel) | 7.22.13 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@babel/generator](https://github.com/babel/babel) | 7.23.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@babel/generator](https://github.com/babel/babel) | 7.23.6 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@babel/helper-environment-visitor](https://github.com/babel/babel) | 7.22.20 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@babel/helper-function-name](https://github.com/babel/babel) | 7.23.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@babel/helper-hoist-variables](https://github.com/babel/babel) | 7.22.5 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@babel/helper-split-export-declaration](https://github.com/babel/babel) | 7.22.6 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@babel/helper-string-parser](https://github.com/babel/babel) | 7.23.4 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@babel/helper-validator-identifier](https://github.com/babel/babel) | 7.22.20 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@babel/highlight](https://github.com/babel/babel) | 7.22.20 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@babel/parser](https://github.com/babel/babel) | 7.23.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@babel/runtime](https://github.com/babel/babel) | 7.21.5 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@babel/template](https://github.com/babel/babel) | 7.22.15 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@babel/traverse](https://github.com/babel/babel) | 7.23.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@babel/types](https://github.com/babel/babel) | 7.23.6 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@colors/colors](https://github.com/DABH/colors.js) | 1.5.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@cspell/cspell-bundled-dicts](https://github.com/streetsidesoftware/cspell) | 7.3.6 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@cspell/cspell-pipe](https://github.com/streetsidesoftware/cspell) | 7.3.6 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@cspell/cspell-resolver](https://github.com/streetsidesoftware/cspell) | 7.3.6 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@cspell/cspell-service-bus](https://github.com/streetsidesoftware/cspell) | 7.3.6 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@cspell/cspell-types](https://github.com/streetsidesoftware/cspell) | 7.3.6 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@cspell/dict-ada](https://github.com/streetsidesoftware/cspell-dicts) | 4.0.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@cspell/dict-aws](https://github.com/streetsidesoftware/cspell-dicts) | 4.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@cspell/dict-bash](https://github.com/streetsidesoftware/cspell-dicts) | 4.1.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@cspell/dict-companies](https://github.com/streetsidesoftware/cspell-dicts) | 3.0.24 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@cspell/dict-cpp](https://github.com/streetsidesoftware/cspell-dicts) | 5.0.5 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@cspell/dict-cryptocurrencies](https://github.com/streetsidesoftware/cspell-dicts) | 4.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@cspell/dict-csharp](https://github.com/streetsidesoftware/cspell-dicts) | 4.0.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@cspell/dict-css](https://github.com/streetsidesoftware/cspell-dicts) | 4.0.9 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@cspell/dict-dart](https://github.com/streetsidesoftware/cspell-dicts) | 2.0.3 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@cspell/dict-data-science](https://github.com/streetsidesoftware/cspell-dicts) | 1.0.11 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@cspell/dict-django](https://github.com/streetsidesoftware/cspell-dicts) | 4.1.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@cspell/dict-docker](https://github.com/streetsidesoftware/cspell-dicts) | 1.1.7 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@cspell/dict-dotnet](https://github.com/streetsidesoftware/cspell-dicts) | 5.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@cspell/dict-elixir](https://github.com/streetsidesoftware/cspell-dicts) | 4.0.3 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@cspell/dict-en-common-misspellings](https://github.com/streetsidesoftware/cspell-dicts) | 1.0.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@cspell/dict-en-gb](https://github.com/streetsidesoftware/cspell-dicts) | 1.1.33 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@cspell/dict-en_us](https://github.com/streetsidesoftware/cspell-dicts) | 4.3.8 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@cspell/dict-filetypes](https://github.com/streetsidesoftware/cspell-dicts) | 3.0.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@cspell/dict-fonts](https://github.com/streetsidesoftware/cspell-dicts) | 4.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@cspell/dict-fsharp](https://github.com/streetsidesoftware/cspell-dicts) | 1.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@cspell/dict-fullstack](https://github.com/streetsidesoftware/cspell-dicts) | 3.1.5 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@cspell/dict-gaming-terms](https://github.com/streetsidesoftware/cspell-dicts) | 1.0.4 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@cspell/dict-git](https://github.com/streetsidesoftware/cspell-dicts) | 2.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@cspell/dict-golang](https://github.com/streetsidesoftware/cspell-dicts) | 6.0.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@cspell/dict-haskell](https://github.com/streetsidesoftware/cspell-dicts) | 4.0.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@cspell/dict-html-symbol-entities](https://github.com/streetsidesoftware/cspell-dicts) | 4.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@cspell/dict-html](https://github.com/streetsidesoftware/cspell-dicts) | 4.0.4 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@cspell/dict-java](https://github.com/streetsidesoftware/cspell-dicts) | 5.0.6 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@cspell/dict-k8s](https://github.com/streetsidesoftware/cspell-dicts) | 1.0.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@cspell/dict-latex](https://github.com/streetsidesoftware/cspell-dicts) | 4.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@cspell/dict-lorem-ipsum](https://github.com/streetsidesoftware/cspell-dicts) | 4.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@cspell/dict-lua](https://github.com/streetsidesoftware/cspell-dicts) | 4.0.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@cspell/dict-node](https://github.com/streetsidesoftware/cspell-dicts) | 4.0.3 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@cspell/dict-npm](https://github.com/streetsidesoftware/cspell-dicts) | 5.0.9 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@cspell/dict-php](https://github.com/streetsidesoftware/cspell-dicts) | 4.0.3 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@cspell/dict-powershell](https://github.com/streetsidesoftware/cspell-dicts) | 5.0.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@cspell/dict-public-licenses](https://github.com/streetsidesoftware/cspell-dicts) | 2.0.4 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@cspell/dict-python](https://github.com/streetsidesoftware/cspell-dicts) | 4.1.8 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@cspell/dict-r](https://github.com/streetsidesoftware/cspell-dicts) | 2.0.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@cspell/dict-ruby](https://github.com/streetsidesoftware/cspell-dicts) | 5.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@cspell/dict-rust](https://github.com/streetsidesoftware/cspell-dicts) | 4.0.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@cspell/dict-scala](https://github.com/streetsidesoftware/cspell-dicts) | 5.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@cspell/dict-software-terms](https://github.com/streetsidesoftware/cspell-dicts) | 3.3.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@cspell/dict-sql](https://github.com/streetsidesoftware/cspell-dicts) | 2.1.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@cspell/dict-svelte](https://github.com/streetsidesoftware/cspell-dicts) | 1.0.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@cspell/dict-swift](https://github.com/streetsidesoftware/cspell-dicts) | 2.0.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@cspell/dict-typescript](https://github.com/streetsidesoftware/cspell-dicts) | 3.1.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@cspell/dict-vue](https://github.com/streetsidesoftware/cspell-dicts) | 3.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@cspell/dynamic-import](https://github.com/streetsidesoftware/cspell) | 7.3.6 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@cspell/eslint-plugin](https://github.com/streetsidesoftware/cspell) | 7.3.6 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@cspell/strong-weak-map](https://github.com/streetsidesoftware/cspell) | 7.3.6 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@discoveryjs/json-ext](https://github.com/discoveryjs/json-ext) | 0.5.7 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@esbuild/darwin-arm64](https://github.com/evanw/esbuild) | 0.18.20 | [MIT](http://www.opensource.org/licenses/MIT) |
| @fal-works/esbuild-plugin-global-externals | 2.1.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@graphql-typed-document-node/core](https://github.com/dotansimha/graphql-typed-document-node) | 3.2.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@isaacs/cliui](https://github.com/yargs/cliui) | 8.0.2 | [ISC](https://www.isc.org/downloads/software-support-policy/isc-license/) |
| [@jridgewell/gen-mapping](https://github.com/jridgewell/gen-mapping) | 0.3.3 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@jridgewell/resolve-uri](https://github.com/jridgewell/resolve-uri) | 3.1.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@jridgewell/set-array](https://github.com/jridgewell/set-array) | 1.1.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@jridgewell/sourcemap-codec](https://github.com/jridgewell/sourcemap-codec) | 1.4.15 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@jridgewell/trace-mapping](https://github.com/jridgewell/trace-mapping) | 0.3.22 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@kurkle/color](https://github.com/kurkle/color) | 0.3.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@mat-datetimepicker/core](https://github.com/kuhnroyal/mat-datetimepicker) | 10.1.1 | [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) |
| [@nodelib/fs.scandir](https://github.com/nodelib/nodelib/tree/master/packages/fs/fs.scandir) | 2.1.5 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@nodelib/fs.stat](https://github.com/nodelib/nodelib/tree/master/packages/fs/fs.stat) | 2.0.5 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@nodelib/fs.walk](https://github.com/nodelib/nodelib/tree/master/packages/fs/fs.walk) | 1.2.8 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@pkgjs/parseargs](https://github.com/pkgjs/parseargs) | 0.11.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@pkgr/utils](https://github.com/un-ts/pkgr) | 2.4.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@storybook/builder-manager](https://github.com/storybookjs/storybook) | 7.6.5 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@storybook/channels](https://github.com/storybookjs/storybook) | 7.6.5 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@storybook/client-logger](https://github.com/storybookjs/storybook) | 7.6.5 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@storybook/core-common](https://github.com/storybookjs/storybook) | 7.6.5 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@storybook/core-events](https://github.com/storybookjs/storybook) | 7.6.5 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@storybook/core-server](https://github.com/storybookjs/storybook) | 7.6.5 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@storybook/csf-tools](https://github.com/storybookjs/storybook) | 7.6.5 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@storybook/csf](https://github.com/ComponentDriven/csf) | 0.1.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@storybook/docs-mdx](https://github.com/storybookjs/docs-mdx) | 0.1.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@storybook/global](https://github.com/storybookjs/global) | 5.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@storybook/manager](https://github.com/storybookjs/storybook) | 7.6.5 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@storybook/node-logger](https://github.com/storybookjs/storybook) | 7.6.5 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@storybook/preview-api](https://github.com/storybookjs/storybook) | 7.6.5 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@storybook/telemetry](https://github.com/storybookjs/storybook) | 7.6.5 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@storybook/types](https://github.com/storybookjs/storybook) | 7.6.5 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@types/babel__core](https://github.com/DefinitelyTyped/DefinitelyTyped) | 7.20.3 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@types/babel__generator](https://github.com/DefinitelyTyped/DefinitelyTyped) | 7.6.6 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@types/babel__template](https://github.com/DefinitelyTyped/DefinitelyTyped) | 7.4.3 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@types/babel__traverse](https://github.com/DefinitelyTyped/DefinitelyTyped) | 7.20.3 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@types/body-parser](https://github.com/DefinitelyTyped/DefinitelyTyped) | 1.19.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@types/connect](https://github.com/DefinitelyTyped/DefinitelyTyped) | 3.4.35 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@types/detect-port](https://github.com/DefinitelyTyped/DefinitelyTyped) | 1.3.5 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@types/ejs](https://github.com/DefinitelyTyped/DefinitelyTyped) | 3.1.5 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@types/estree](https://github.com/DefinitelyTyped/DefinitelyTyped) | 1.0.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@types/express-serve-static-core](https://github.com/DefinitelyTyped/DefinitelyTyped) | 4.17.34 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@types/express](https://github.com/DefinitelyTyped/DefinitelyTyped) | 4.17.17 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@types/find-cache-dir](https://github.com/DefinitelyTyped/DefinitelyTyped) | 3.2.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@types/mime](https://github.com/DefinitelyTyped/DefinitelyTyped) | 1.3.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@types/node-fetch](https://github.com/DefinitelyTyped/DefinitelyTyped) | 2.6.9 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped) | 18.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@types/normalize-package-data](https://github.com/DefinitelyTyped/DefinitelyTyped) | 2.4.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@types/pretty-hrtime](https://github.com/DefinitelyTyped/DefinitelyTyped) | 1.0.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@types/qs](https://github.com/DefinitelyTyped/DefinitelyTyped) | 6.9.7 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@types/range-parser](https://github.com/DefinitelyTyped/DefinitelyTyped) | 1.2.4 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@types/semver](https://github.com/DefinitelyTyped/DefinitelyTyped) | 7.3.13 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@types/send](https://github.com/DefinitelyTyped/DefinitelyTyped) | 0.17.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@types/serve-static](https://github.com/DefinitelyTyped/DefinitelyTyped) | 1.15.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@wry/context](https://github.com/benjamn/wryware) | 0.7.3 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@wry/equality](https://github.com/benjamn/wryware) | 0.5.6 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@wry/trie](https://github.com/benjamn/wryware) | 0.4.3 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@yarnpkg/esbuild-plugin-pnp](https://github.com/yarnpkg/berry) | 3.0.0-rc.15 | [BSD-2-Clause](http://www.opensource.org/licenses/BSD-2-Clause) |
| [accepts](https://github.com/jshttp/accepts) | 1.3.8 | [MIT](http://www.opensource.org/licenses/MIT) |
| [address](https://github.com/node-modules/address) | 1.2.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [alfresco-ng2-components](https://github.com/Alfresco/alfresco-ng2-components) | 6.7.0 | [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0) |
| [angular-oauth2-oidc-jwks](https://github.com/manfredsteyer/angular-oauth2-oidc) | 15.0.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [angular-oauth2-oidc](https://github.com/manfredsteyer/angular-oauth2-oidc) | 13.0.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [ansi-regex](https://github.com/chalk/ansi-regex) | 5.0.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [ansi-regex](https://github.com/chalk/ansi-regex) | 6.0.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [ansi-styles](https://github.com/chalk/ansi-styles) | 3.2.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [ansi-styles](https://github.com/chalk/ansi-styles) | 4.3.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [ansi-styles](https://github.com/chalk/ansi-styles) | 6.2.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [apollo-angular](https://github.com/kamilkisiela/apollo-angular) | 5.0.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [app-root-dir](https://github.com/philidem/node-app-root-dir) | 1.0.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [argparse](https://github.com/nodeca/argparse) | 2.0.1 | [Python-2.0](http://www.opensource.org/licenses/Python-2.0) |
| [array-flatten](https://github.com/blakeembrey/array-flatten) | 1.1.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [array-timsort](https://github.com/kaelzhang/node-array-timsort) | 1.0.3 | [MIT](http://www.opensource.org/licenses/MIT) |
| [array-union](https://github.com/sindresorhus/array-union) | 2.1.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [asap](https://github.com/kriskowal/asap) | 2.0.6 | [MIT](http://www.opensource.org/licenses/MIT) |
| [assert](https://github.com/browserify/commonjs-assert) | 2.1.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [ast-types](https://github.com/benjamn/ast-types) | 0.16.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [async](https://github.com/caolan/async) | 3.2.4 | [MIT](http://www.opensource.org/licenses/MIT) |
| [asynckit](https://github.com/alexindigo/asynckit) | 0.4.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [available-typed-arrays](https://github.com/inspect-js/available-typed-arrays) | 1.0.5 | [MIT](http://www.opensource.org/licenses/MIT) |
| [backo2](https://github.com/mokesmokes/backo) | 1.0.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [balanced-match](https://github.com/juliangruber/balanced-match) | 1.0.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [better-opn](https://github.com/ExiaSR/better-opn) | 3.0.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [big-integer](https://github.com/peterolson/BigInteger.js) | 1.6.52 | [Unlicense](http://unlicense.org/) |
| [body-parser](https://github.com/expressjs/body-parser) | 1.20.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [bplist-parser](https://github.com/nearinfinity/node-bplist-parser) | 0.2.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [brace-expansion](https://github.com/juliangruber/brace-expansion) | 1.1.11 | [MIT](http://www.opensource.org/licenses/MIT) |
| [brace-expansion](https://github.com/juliangruber/brace-expansion) | 2.0.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [braces](https://github.com/micromatch/braces) | 3.0.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [browser-assert](https://github.com/socialally/browser-assert) | 1.2.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [bundle-name](https://github.com/sindresorhus/bundle-name) | 3.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [bytes](https://github.com/visionmedia/bytes.js) | 3.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [bytes](https://github.com/visionmedia/bytes.js) | 3.1.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [call-bind](https://github.com/ljharb/call-bind) | 1.0.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [callsites](https://github.com/sindresorhus/callsites) | 3.1.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [chalk](https://github.com/chalk/chalk) | 2.4.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [chalk](https://github.com/chalk/chalk) | 4.1.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [chart.js](https://github.com/chartjs/Chart.js) | 4.3.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [clear-module](https://github.com/sindresorhus/clear-module) | 4.1.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [cli-table3](https://github.com/cli-table/cli-table3) | 0.6.3 | [MIT](http://www.opensource.org/licenses/MIT) |
| [color-convert](https://github.com/Qix-/color-convert) | 1.9.3 | [MIT](http://www.opensource.org/licenses/MIT) |
| [color-convert](https://github.com/Qix-/color-convert) | 2.0.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [color-name](https://github.com/dfcreative/color-name) | 1.1.3 | [MIT](http://www.opensource.org/licenses/MIT) |
| [color-name](https://github.com/colorjs/color-name) | 1.1.4 | [MIT](http://www.opensource.org/licenses/MIT) |
| [combined-stream](https://github.com/felixge/node-combined-stream) | 1.0.8 | [MIT](http://www.opensource.org/licenses/MIT) |
| [comment-json](https://github.com/kaelzhang/node-comment-json) | 4.2.3 | [MIT](http://www.opensource.org/licenses/MIT) |
| [commondir](https://github.com/substack/node-commondir) | 1.0.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [component-emitter](https://github.com/component/emitter) | 1.3.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [compressible](https://github.com/jshttp/compressible) | 2.0.18 | [MIT](http://www.opensource.org/licenses/MIT) |
| [compression](https://github.com/expressjs/compression) | 1.7.4 | [MIT](http://www.opensource.org/licenses/MIT) |
| [concat-map](https://github.com/substack/node-concat-map) | 0.0.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [configstore](https://github.com/yeoman/configstore) | 6.0.0 | [BSD-2-Clause](http://www.opensource.org/licenses/BSD-2-Clause) |
| [content-disposition](https://github.com/jshttp/content-disposition) | 0.5.4 | [MIT](http://www.opensource.org/licenses/MIT) |
| [content-type](https://github.com/jshttp/content-type) | 1.0.5 | [MIT](http://www.opensource.org/licenses/MIT) |
| [cookie-signature](https://github.com/visionmedia/node-cookie-signature) | 1.0.6 | [MIT](http://www.opensource.org/licenses/MIT) |
| [cookie](https://github.com/jshttp/cookie) | 0.5.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [cookiejar](https://github.com/bmeck/node-cookiejar) | 2.1.4 | [MIT](http://www.opensource.org/licenses/MIT) |
| [core-util-is](https://github.com/isaacs/core-util-is) | 1.0.3 | [MIT](http://www.opensource.org/licenses/MIT) |
| [cosmiconfig](https://github.com/davidtheclark/cosmiconfig) | 8.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [cropperjs](https://github.com/fengyuanchen/cropperjs) | 1.5.13 | [MIT](http://www.opensource.org/licenses/MIT) |
| [cross-spawn](https://github.com/moxystudio/node-cross-spawn) | 7.0.3 | [MIT](http://www.opensource.org/licenses/MIT) |
| [crypto-random-string](https://github.com/sindresorhus/crypto-random-string) | 4.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [cspell-dictionary](https://github.com/streetsidesoftware/cspell) | 7.3.6 | [MIT](http://www.opensource.org/licenses/MIT) |
| [cspell-glob](https://github.com/streetsidesoftware/cspell) | 7.3.6 | [MIT](http://www.opensource.org/licenses/MIT) |
| [cspell-grammar](https://github.com/streetsidesoftware/cspell) | 7.3.6 | [MIT](http://www.opensource.org/licenses/MIT) |
| [cspell-io](https://github.com/streetsidesoftware/cspell) | 7.3.6 | [MIT](http://www.opensource.org/licenses/MIT) |
| [cspell-lib](https://github.com/streetsidesoftware/cspell) | 7.3.6 | [MIT](http://www.opensource.org/licenses/MIT) |
| [cspell-trie-lib](https://github.com/streetsidesoftware/cspell) | 7.3.6 | [MIT](http://www.opensource.org/licenses/MIT) |
| [d](https://github.com/medikoo/d) | 1.0.1 | [ISC](https://www.isc.org/downloads/software-support-policy/isc-license/) |
| [date-fns](https://github.com/date-fns/date-fns) | 2.30.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [debug](https://github.com/visionmedia/debug) | 2.6.9 | [MIT](http://www.opensource.org/licenses/MIT) |
| [debug](https://github.com/debug-js/debug) | 4.3.4 | [MIT](http://www.opensource.org/licenses/MIT) |
| [default-browser-id](https://github.com/sindresorhus/default-browser-id) | 3.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [default-browser](https://github.com/sindresorhus/default-browser) | 4.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [define-lazy-prop](https://github.com/sindresorhus/define-lazy-prop) | 2.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [define-lazy-prop](https://github.com/sindresorhus/define-lazy-prop) | 3.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [define-properties](https://github.com/ljharb/define-properties) | 1.2.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [delayed-stream](https://github.com/felixge/node-delayed-stream) | 1.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [depd](https://github.com/dougwilson/nodejs-depd) | 2.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [dequal](https://github.com/lukeed/dequal) | 2.0.3 | [MIT](http://www.opensource.org/licenses/MIT) |
| [destroy](https://github.com/stream-utils/destroy) | 1.2.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [detect-package-manager](https://github.com/egoist/detect-package-manager) | 2.0.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [detect-port](https://github.com/node-modules/detect-port) | 1.5.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [dezalgo](https://github.com/npm/dezalgo) | 1.0.4 | [ISC](https://www.isc.org/downloads/software-support-policy/isc-license/) |
| [dir-glob](https://github.com/kevva/dir-glob) | 3.0.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [dot-prop](https://github.com/sindresorhus/dot-prop) | 6.0.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [dotenv-expand](https://github.com/motdotla/dotenv-expand) | 10.0.0 | [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) |
| [dotenv](https://github.com/motdotla/dotenv) | 16.1.3 | [BSD-2-Clause](http://www.opensource.org/licenses/BSD-2-Clause) |
| [eastasianwidth](https://github.com/komagata/eastasianwidth) | 0.2.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [ee-first](https://github.com/jonathanong/ee-first) | 1.1.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [ejs](https://github.com/mde/ejs) | 3.1.9 | [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0) |
| [emoji-regex](https://github.com/mathiasbynens/emoji-regex) | 8.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [emoji-regex](https://github.com/mathiasbynens/emoji-regex) | 9.2.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [encodeurl](https://github.com/pillarjs/encodeurl) | 1.0.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [encoding](https://github.com/andris9/encoding) | 0.1.13 | [MIT](http://www.opensource.org/licenses/MIT) |
| [error-ex](https://github.com/qix-/node-error-ex) | 1.3.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [es5-ext](https://github.com/medikoo/es5-ext) | 0.10.62 | [ISC](https://www.isc.org/downloads/software-support-policy/isc-license/) |
| [es6-iterator](https://github.com/medikoo/es6-iterator) | 2.0.3 | [MIT](http://www.opensource.org/licenses/MIT) |
| [es6-symbol](https://github.com/medikoo/es6-symbol) | 3.1.3 | [ISC](https://www.isc.org/downloads/software-support-policy/isc-license/) |
| [esbuild-plugin-alias](https://github.com/igoradamenko/esbuild-plugin-alias) | 0.2.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| esbuild-register | 3.5.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [esbuild](https://github.com/evanw/esbuild) | 0.14.49 | [MIT](http://www.opensource.org/licenses/MIT) |
| [esbuild](https://github.com/evanw/esbuild) | 0.18.20 | [MIT](http://www.opensource.org/licenses/MIT) |
| [escape-html](https://github.com/component/escape-html) | 1.0.3 | [MIT](http://www.opensource.org/licenses/MIT) |
| [escape-string-regexp](https://github.com/sindresorhus/escape-string-regexp) | 1.0.5 | [MIT](http://www.opensource.org/licenses/MIT) |
| [esprima](https://github.com/jquery/esprima) | 4.0.1 | [BSD-2-Clause](http://www.opensource.org/licenses/BSD-2-Clause) |
| [estree-walker](https://github.com/Rich-Harris/estree-walker) | 3.0.3 | [MIT](http://www.opensource.org/licenses/MIT) |
| [etag](https://github.com/jshttp/etag) | 1.8.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [eve-raphael](https://github.com/tomasAlabes/eve) | 0.5.0 | [Apache](http://www.apache.org/licenses/LICENSE-2.0) |
| [event-emitter](https://github.com/medikoo/event-emitter) | 0.3.5 | [MIT](http://www.opensource.org/licenses/MIT) |
| [eventemitter3](https://github.com/primus/eventemitter3) | 3.1.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [execa](https://github.com/sindresorhus/execa) | 5.1.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [execa](https://github.com/sindresorhus/execa) | 7.2.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [express](https://github.com/expressjs/express) | 4.18.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [ext](https://github.com/medikoo/es5-ext.git#ext) | 1.7.0 | [ISC](https://www.isc.org/downloads/software-support-policy/isc-license/) |
| [fast-equals](https://github.com/planttheidea/fast-equals) | 4.0.3 | [MIT](http://www.opensource.org/licenses/MIT) |
| [fast-equals](https://github.com/planttheidea/fast-equals) | 5.0.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [fast-glob](https://github.com/mrmlnc/fast-glob) | 3.2.12 | [MIT](http://www.opensource.org/licenses/MIT) |
| [fast-glob](https://github.com/mrmlnc/fast-glob) | 3.3.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [fast-safe-stringify](https://github.com/davidmarkclements/fast-safe-stringify) | 2.1.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [fast-sha256](https://github.com/dchest/fast-sha256-js) | 1.3.0 | [Unlicense](http://unlicense.org/) |
| [fastq](https://github.com/mcollina/fastq) | 1.15.0 | [ISC](https://www.isc.org/downloads/software-support-policy/isc-license/) |
| [fetch-retry](https://github.com/jonbern/fetch-retry) | 5.0.6 | [MIT](http://www.opensource.org/licenses/MIT) |
| [file-system-cache](https://github.com/philcockfield/file-system-cache) | 2.3.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [filelist](https://github.com/mde/filelist) | 1.0.4 | [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0) |
| [fill-range](https://github.com/jonschlinkert/fill-range) | 7.0.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [finalhandler](https://github.com/pillarjs/finalhandler) | 1.2.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [find-cache-dir](https://github.com/avajs/find-cache-dir) | 3.3.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [find-up](https://github.com/sindresorhus/find-up) | 4.1.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [find-up](https://github.com/sindresorhus/find-up) | 5.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [find-up](https://github.com/sindresorhus/find-up) | 6.3.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [for-each](https://github.com/Raynos/for-each) | 0.3.3 | [MIT](http://www.opensource.org/licenses/MIT) |
| [foreground-child](https://github.com/tapjs/foreground-child) | 3.1.1 | [ISC](https://www.isc.org/downloads/software-support-policy/isc-license/) |
| [form-data](https://github.com/form-data/form-data) | 4.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [formidable](https://github.com/node-formidable/formidable) | 2.1.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [forwarded](https://github.com/jshttp/forwarded) | 0.2.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [fresh](https://github.com/jshttp/fresh) | 0.5.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [fs-extra](https://github.com/jprichardson/node-fs-extra) | 11.1.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [fs-extra](https://github.com/jprichardson/node-fs-extra) | 11.2.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [function-bind](https://github.com/Raynos/function-bind) | 1.1.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [gensequence](https://github.com/streetsidesoftware/GenSequence) | 6.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [get-intrinsic](https://github.com/ljharb/get-intrinsic) | 1.2.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [get-stream](https://github.com/sindresorhus/get-stream) | 6.0.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [glob-parent](https://github.com/gulpjs/glob-parent) | 5.1.2 | [ISC](https://www.isc.org/downloads/software-support-policy/isc-license/) |
| [glob-to-regexp](https://github.com/fitzgen/glob-to-regexp) | 0.4.1 | [BSD-2-Clause](http://www.opensource.org/licenses/BSD-2-Clause) |
| [glob](https://github.com/isaacs/node-glob) | 10.3.10 | [ISC](https://www.isc.org/downloads/software-support-policy/isc-license/) |
| [global-dirs](https://github.com/sindresorhus/global-dirs) | 3.0.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [globals](https://github.com/sindresorhus/globals) | 11.12.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [globby](https://github.com/sindresorhus/globby) | 11.1.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [gopd](https://github.com/ljharb/gopd) | 1.0.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [graceful-fs](https://github.com/isaacs/node-graceful-fs) | 4.2.11 | [ISC](https://www.isc.org/downloads/software-support-policy/isc-license/) |
| [graphql-tag](https://github.com/apollographql/graphql-tag) | 2.12.6 | [MIT](http://www.opensource.org/licenses/MIT) |
| [graphql](https://github.com/graphql/graphql-js) | 16.8.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [handlebars](https://github.com/wycats/handlebars.js) | 4.7.7 | [MIT](http://www.opensource.org/licenses/MIT) |
| [has-flag](https://github.com/sindresorhus/has-flag) | 3.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [has-flag](https://github.com/sindresorhus/has-flag) | 4.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [has-own-prop](https://github.com/sindresorhus/has-own-prop) | 2.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [has-property-descriptors](https://github.com/inspect-js/has-property-descriptors) | 1.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [has-symbols](https://github.com/inspect-js/has-symbols) | 1.0.3 | [MIT](http://www.opensource.org/licenses/MIT) |
| [has-tostringtag](https://github.com/inspect-js/has-tostringtag) | 1.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [has](https://github.com/tarruda/has) | 1.0.3 | [MIT](http://www.opensource.org/licenses/MIT) |
| [hexoid](https://github.com/lukeed/hexoid) | 1.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [hoist-non-react-statics](https://github.com/mridgway/hoist-non-react-statics) | 3.3.2 | [BSD-3-Clause](http://www.opensource.org/licenses/BSD-3-Clause) |
| [hosted-git-info](https://github.com/npm/hosted-git-info) | 2.8.9 | [ISC](https://www.isc.org/downloads/software-support-policy/isc-license/) |
| [http-errors](https://github.com/jshttp/http-errors) | 2.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [human-signals](https://github.com/ehmicky/human-signals) | 2.1.0 | [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0) |
| [human-signals](https://github.com/ehmicky/human-signals) | 4.3.1 | [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0) |
| [iconv-lite](https://github.com/ashtuchkin/iconv-lite) | 0.4.24 | [MIT](http://www.opensource.org/licenses/MIT) |
| [iconv-lite](https://github.com/ashtuchkin/iconv-lite) | 0.6.3 | [MIT](http://www.opensource.org/licenses/MIT) |
| [ignore](https://github.com/kaelzhang/node-ignore) | 5.2.4 | [MIT](http://www.opensource.org/licenses/MIT) |
| [import-fresh](https://github.com/sindresorhus/import-fresh) | 3.3.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [import-meta-resolve](https://github.com/wooorm/import-meta-resolve) | 3.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [imurmurhash](https://github.com/jensyt/imurmurhash-js) | 0.1.4 | [MIT](http://www.opensource.org/licenses/MIT) |
| [inherits](https://github.com/isaacs/inherits) | 2.0.4 | [ISC](https://www.isc.org/downloads/software-support-policy/isc-license/) |
| [ini](https://github.com/isaacs/ini) | 2.0.0 | [ISC](https://www.isc.org/downloads/software-support-policy/isc-license/) |
| [ip](https://github.com/indutny/node-ip) | 2.0.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [ipaddr.js](https://github.com/whitequark/ipaddr.js) | 1.9.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [is-arguments](https://github.com/inspect-js/is-arguments) | 1.1.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [is-arrayish](https://github.com/qix-/node-is-arrayish) | 0.2.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [is-callable](https://github.com/inspect-js/is-callable) | 1.2.7 | [MIT](http://www.opensource.org/licenses/MIT) |
| [is-core-module](https://github.com/inspect-js/is-core-module) | 2.12.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [is-docker](https://github.com/sindresorhus/is-docker) | 2.2.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [is-docker](https://github.com/sindresorhus/is-docker) | 3.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [is-extglob](https://github.com/jonschlinkert/is-extglob) | 2.1.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [is-fullwidth-code-point](https://github.com/sindresorhus/is-fullwidth-code-point) | 3.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [is-generator-function](https://github.com/inspect-js/is-generator-function) | 1.0.10 | [MIT](http://www.opensource.org/licenses/MIT) |
| [is-glob](https://github.com/micromatch/is-glob) | 4.0.3 | [MIT](http://www.opensource.org/licenses/MIT) |
| [is-inside-container](https://github.com/sindresorhus/is-inside-container) | 1.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [is-nan](https://github.com/es-shims/is-nan) | 1.3.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [is-number](https://github.com/jonschlinkert/is-number) | 7.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [is-obj](https://github.com/sindresorhus/is-obj) | 2.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [is-stream](https://github.com/sindresorhus/is-stream) | 2.0.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [is-stream](https://github.com/sindresorhus/is-stream) | 3.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [is-typed-array](https://github.com/inspect-js/is-typed-array) | 1.1.10 | [MIT](http://www.opensource.org/licenses/MIT) |
| [is-typedarray](https://github.com/hughsk/is-typedarray) | 1.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [is-wsl](https://github.com/sindresorhus/is-wsl) | 2.2.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [isexe](https://github.com/isaacs/isexe) | 2.0.0 | [ISC](https://www.isc.org/downloads/software-support-policy/isc-license/) |
| [iterall](https://github.com/leebyron/iterall) | 1.3.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [jackspeak](https://github.com/isaacs/jackspeak) | 2.3.6 | BlueOak-1.0.0 |
| [jake](https://github.com/jakejs/jake) | 10.8.7 | [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0) |
| [js-tokens](https://github.com/lydell/js-tokens) | 4.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [js-yaml](https://github.com/nodeca/js-yaml) | 4.1.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [jsesc](https://github.com/mathiasbynens/jsesc) | 2.5.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [json-parse-even-better-errors](https://github.com/npm/json-parse-even-better-errors) | 2.3.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [jsonfile](https://github.com/jprichardson/node-jsonfile) | 6.1.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [jsrsasign](https://github.com/kjur/jsrsasign) | 10.8.6 | [MIT](http://www.opensource.org/licenses/MIT) |
| [kleur](https://github.com/lukeed/kleur) | 3.0.3 | [MIT](http://www.opensource.org/licenses/MIT) |
| [lazy-universal-dotenv](https://github.com/storybooks/lazy-universal-dotenv) | 4.0.0 | [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0) |
| [lines-and-columns](https://github.com/eventualbuddha/lines-and-columns) | 1.2.4 | [MIT](http://www.opensource.org/licenses/MIT) |
| [locate-path](https://github.com/sindresorhus/locate-path) | 5.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [locate-path](https://github.com/sindresorhus/locate-path) | 6.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [locate-path](https://github.com/sindresorhus/locate-path) | 7.2.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [lodash-es](https://github.com/lodash/lodash) | 4.17.21 | [MIT](http://www.opensource.org/licenses/MIT) |
| [lodash](https://github.com/lodash/lodash) | 4.17.21 | [MIT](http://www.opensource.org/licenses/MIT) |
| [loose-envify](https://github.com/zertosh/loose-envify) | 1.4.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [lru-cache](https://github.com/isaacs/node-lru-cache) | 10.0.1 | [ISC](https://www.isc.org/downloads/software-support-policy/isc-license/) |
| [lru-cache](https://github.com/isaacs/node-lru-cache) | 6.0.0 | [ISC](https://www.isc.org/downloads/software-support-policy/isc-license/) |
| [make-dir](https://github.com/sindresorhus/make-dir) | 3.1.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [map-or-similar](https://github.com/thinkloop/map-or-similar) | 1.5.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [material-icons](https://github.com/marella/material-icons) | 1.13.12 | [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0) |
| [media-typer](https://github.com/jshttp/media-typer) | 0.3.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [memoizerific](https://github.com/thinkloop/memoizerific) | 1.11.3 | [MIT](http://www.opensource.org/licenses/MIT) |
| [merge-descriptors](https://github.com/component/merge-descriptors) | 1.0.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [merge-stream](https://github.com/grncdr/merge-stream) | 2.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [merge2](https://github.com/teambition/merge2) | 1.4.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [methods](https://github.com/jshttp/methods) | 1.1.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [micromatch](https://github.com/micromatch/micromatch) | 4.0.5 | [MIT](http://www.opensource.org/licenses/MIT) |
| [mime-db](https://github.com/jshttp/mime-db) | 1.52.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [mime-types](https://github.com/jshttp/mime-types) | 2.1.35 | [MIT](http://www.opensource.org/licenses/MIT) |
| [mime](https://github.com/broofa/node-mime) | 1.6.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [mime](https://github.com/broofa/mime) | 2.6.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [mimic-fn](https://github.com/sindresorhus/mimic-fn) | 2.1.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [mimic-fn](https://github.com/sindresorhus/mimic-fn) | 4.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [minimatch-browser](https://github.com/isaacs/minimatch) | 1.0.0 | [ISC](https://www.isc.org/downloads/software-support-policy/isc-license/) |
| [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) | 9.0.3 | [ISC](https://www.isc.org/downloads/software-support-policy/isc-license/) |
| [minimist](https://github.com/minimistjs/minimist) | 1.2.8 | [MIT](http://www.opensource.org/licenses/MIT) |
| [minipass](https://github.com/isaacs/minipass) | 7.0.4 | [ISC](https://www.isc.org/downloads/software-support-policy/isc-license/) |
| [monaco-editor](https://github.com/microsoft/monaco-editor) | 0.33.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [ms](https://github.com/zeit/ms) | 2.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [ms](https://github.com/zeit/ms) | 2.1.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [ms](https://github.com/vercel/ms) | 2.1.3 | [MIT](http://www.opensource.org/licenses/MIT) |
| [negotiator](https://github.com/jshttp/negotiator) | 0.6.3 | [MIT](http://www.opensource.org/licenses/MIT) |
| [neo-async](https://github.com/suguru03/neo-async) | 2.6.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [next-tick](https://github.com/medikoo/next-tick) | 1.1.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/) |
| [ngx-monaco-editor-v2](https://github.com/miki995/ngx-monaco-editor-v2) | 14.0.4 | [MIT](http://www.opensource.org/licenses/MIT) |
| [node-fetch](https://github.com/bitinn/node-fetch) | 2.7.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [normalize-package-data](https://github.com/npm/normalize-package-data) | 2.5.0 | [BSD-2-Clause](http://www.opensource.org/licenses/BSD-2-Clause) |
| [npm-run-path](https://github.com/sindresorhus/npm-run-path) | 4.0.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [npm-run-path](https://github.com/sindresorhus/npm-run-path) | 5.1.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [object-assign](https://github.com/sindresorhus/object-assign) | 4.1.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [object-inspect](https://github.com/inspect-js/object-inspect) | 1.12.3 | [MIT](http://www.opensource.org/licenses/MIT) |
| [object-is](https://github.com/es-shims/object-is) | 1.1.5 | [MIT](http://www.opensource.org/licenses/MIT) |
| [object-keys](https://github.com/ljharb/object-keys) | 1.1.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [object.assign](https://github.com/ljharb/object.assign) | 4.1.4 | [MIT](http://www.opensource.org/licenses/MIT) |
| [on-finished](https://github.com/jshttp/on-finished) | 2.4.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [on-headers](https://github.com/jshttp/on-headers) | 1.0.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [once](https://github.com/isaacs/once) | 1.4.0 | [ISC](https://www.isc.org/downloads/software-support-policy/isc-license/) |
| [onetime](https://github.com/sindresorhus/onetime) | 5.1.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [onetime](https://github.com/sindresorhus/onetime) | 6.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [open](https://github.com/sindresorhus/open) | 8.4.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [open](https://github.com/sindresorhus/open) | 9.1.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [optimism](https://github.com/benjamn/optimism) | 0.17.5 | [MIT](http://www.opensource.org/licenses/MIT) |
| [p-limit](https://github.com/sindresorhus/p-limit) | 2.3.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [p-limit](https://github.com/sindresorhus/p-limit) | 3.1.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [p-limit](https://github.com/sindresorhus/p-limit) | 4.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [p-locate](https://github.com/sindresorhus/p-locate) | 4.1.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [p-locate](https://github.com/sindresorhus/p-locate) | 5.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [p-locate](https://github.com/sindresorhus/p-locate) | 6.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [p-try](https://github.com/sindresorhus/p-try) | 2.2.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [parent-module](https://github.com/sindresorhus/parent-module) | 1.0.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [parent-module](https://github.com/sindresorhus/parent-module) | 2.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [parse-json](https://github.com/sindresorhus/parse-json) | 5.2.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [parse5](https://github.com/inikulin/parse5) | 5.1.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [parseurl](https://github.com/pillarjs/parseurl) | 1.3.3 | [MIT](http://www.opensource.org/licenses/MIT) |
| [path-exists](https://github.com/sindresorhus/path-exists) | 4.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [path-exists](https://github.com/sindresorhus/path-exists) | 5.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [path-key](https://github.com/sindresorhus/path-key) | 3.1.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [path-key](https://github.com/sindresorhus/path-key) | 4.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [path-parse](https://github.com/jbgutierrez/path-parse) | 1.0.7 | [MIT](http://www.opensource.org/licenses/MIT) |
| [path-scurry](https://github.com/isaacs/path-scurry) | 1.10.1 | BlueOak-1.0.0 |
| [path-to-regexp](https://github.com/component/path-to-regexp) | 0.1.7 | [MIT](http://www.opensource.org/licenses/MIT) |
| [path-type](https://github.com/sindresorhus/path-type) | 4.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [path2d-polyfill](https://github.com/nilzona/path2d-polyfill) | 2.0.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [pdfjs-dist](https://github.com/mozilla/pdfjs-dist) | 3.3.122 | [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0) |
| [picocolors](https://github.com/alexeyraspopov/picocolors) | 1.0.0 | [ISC](https://www.isc.org/downloads/software-support-policy/isc-license/) |
| [picomatch](https://github.com/micromatch/picomatch) | 2.3.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [pkg-dir](https://github.com/sindresorhus/pkg-dir) | 4.2.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [pkg-dir](https://github.com/sindresorhus/pkg-dir) | 5.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [pretty-hrtime](https://github.com/robrich/pretty-hrtime) | 1.0.3 | [MIT](http://www.opensource.org/licenses/MIT) |
| [process](https://github.com/shtylman/node-process) | 0.11.10 | [MIT](http://www.opensource.org/licenses/MIT) |
| [prompts](https://github.com/terkelg/prompts) | 2.4.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [prop-types](https://github.com/facebook/prop-types) | 15.8.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [proxy-addr](https://github.com/jshttp/proxy-addr) | 2.0.7 | [MIT](http://www.opensource.org/licenses/MIT) |
| [qs](https://github.com/ljharb/qs) | 6.11.0 | [BSD-3-Clause](http://www.opensource.org/licenses/BSD-3-Clause) |
| [qs](https://github.com/ljharb/qs) | 6.11.1 | [BSD-3-Clause](http://www.opensource.org/licenses/BSD-3-Clause) |
| [queue-microtask](https://github.com/feross/queue-microtask) | 1.2.3 | [MIT](http://www.opensource.org/licenses/MIT) |
| [ramda](https://github.com/ramda/ramda) | 0.29.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [range-parser](https://github.com/jshttp/range-parser) | 1.2.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [raphael](https://github.com/DmitryBaranovskiy/raphael) | 2.3.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [raw-body](https://github.com/stream-utils/raw-body) | 2.5.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [react-dom](https://github.com/facebook/react) | 16.14.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [react-is](https://github.com/facebook/react) | 16.13.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [react](https://github.com/facebook/react) | 16.14.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [read-pkg-up](https://github.com/sindresorhus/read-pkg-up) | 7.0.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [read-pkg](https://github.com/sindresorhus/read-pkg) | 5.2.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [recast](https://github.com/benjamn/recast) | 0.23.4 | [MIT](http://www.opensource.org/licenses/MIT) |
| [regenerator-runtime](https://github.com/facebook/regenerator/tree/main/packages/runtime) | 0.13.11 | [MIT](http://www.opensource.org/licenses/MIT) |
| [repeat-string](https://github.com/jonschlinkert/repeat-string) | 1.6.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [resolve-from](https://github.com/sindresorhus/resolve-from) | 4.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [resolve-from](https://github.com/sindresorhus/resolve-from) | 5.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [resolve](https://github.com/browserify/resolve) | 1.22.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [response-iterator](https://github.com/kmalakoff/response-iterator) | 0.2.6 | [MIT](http://www.opensource.org/licenses/MIT) |
| [reusify](https://github.com/mcollina/reusify) | 1.0.4 | [MIT](http://www.opensource.org/licenses/MIT) |
| [run-applescript](https://github.com/sindresorhus/run-applescript) | 5.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [run-parallel](https://github.com/feross/run-parallel) | 1.2.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [rxjs](https://github.com/reactivex/rxjs) | 6.6.6 | [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0) |
| [safe-buffer](https://github.com/feross/safe-buffer) | 5.1.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [safe-buffer](https://github.com/feross/safe-buffer) | 5.2.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [safer-buffer](https://github.com/ChALkeR/safer-buffer) | 2.1.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [scheduler](https://github.com/facebook/react) | 0.19.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [semver](https://github.com/npm/node-semver) | 5.7.2 | [ISC](https://www.isc.org/downloads/software-support-policy/isc-license/) |
| [semver](https://github.com/npm/node-semver) | 6.3.1 | [ISC](https://www.isc.org/downloads/software-support-policy/isc-license/) |
| [semver](https://github.com/npm/node-semver) | 7.3.7 | [ISC](https://www.isc.org/downloads/software-support-policy/isc-license/) |
| [semver](https://github.com/npm/node-semver) | 7.5.4 | [ISC](https://www.isc.org/downloads/software-support-policy/isc-license/) |
| [send](https://github.com/pillarjs/send) | 0.18.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [serve-static](https://github.com/expressjs/serve-static) | 1.15.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [setprototypeof](https://github.com/wesleytodd/setprototypeof) | 1.2.0 | [ISC](https://www.isc.org/downloads/software-support-policy/isc-license/) |
| [shebang-command](https://github.com/kevva/shebang-command) | 2.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [shebang-regex](https://github.com/sindresorhus/shebang-regex) | 3.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [side-channel](https://github.com/ljharb/side-channel) | 1.0.4 | [MIT](http://www.opensource.org/licenses/MIT) |
| [signal-exit](https://github.com/tapjs/signal-exit) | 3.0.7 | [ISC](https://www.isc.org/downloads/software-support-policy/isc-license/) |
| [signal-exit](https://github.com/tapjs/signal-exit) | 4.1.0 | [ISC](https://www.isc.org/downloads/software-support-policy/isc-license/) |
| [sisteransi](https://github.com/terkelg/sisteransi) | 1.0.5 | [MIT](http://www.opensource.org/licenses/MIT) |
| [slash](https://github.com/sindresorhus/slash) | 3.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [source-map](https://github.com/mozilla/source-map) | 0.6.1 | [BSD-3-Clause](http://www.opensource.org/licenses/BSD-3-Clause) |
| [spdx-correct](https://github.com/jslicense/spdx-correct.js) | 3.2.0 | [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0) |
| [spdx-exceptions](https://github.com/kemitchell/spdx-exceptions.json) | 2.3.0 | [CC-BY-3.0](http://creativecommons.org/licenses/by/3.0/legalcode) |
| [spdx-expression-parse](https://github.com/jslicense/spdx-expression-parse.js) | 3.0.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [spdx-license-ids](https://github.com/jslicense/spdx-license-ids) | 3.0.13 | [CC0-1.0](http://creativecommons.org/publicdomain/zero/1.0/legalcode) |
| [statuses](https://github.com/jshttp/statuses) | 2.0.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [string-width](https://github.com/sindresorhus/string-width) | 4.2.3 | [MIT](http://www.opensource.org/licenses/MIT) |
| [string-width](https://github.com/sindresorhus/string-width) | 5.1.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [strip-ansi](https://github.com/chalk/strip-ansi) | 6.0.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [strip-ansi](https://github.com/chalk/strip-ansi) | 7.1.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [strip-final-newline](https://github.com/sindresorhus/strip-final-newline) | 2.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [strip-final-newline](https://github.com/sindresorhus/strip-final-newline) | 3.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [subscriptions-transport-ws](https://github.com/apollostack/subscriptions-transport-ws) | 0.11.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [superagent](https://github.com/ladjs/superagent) | 8.1.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [supports-color](https://github.com/chalk/supports-color) | 5.5.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [supports-color](https://github.com/chalk/supports-color) | 7.2.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [supports-preserve-symlinks-flag](https://github.com/inspect-js/node-supports-preserve-symlinks-flag) | 1.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [symbol-observable](https://github.com/blesh/symbol-observable) | 1.2.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [symbol-observable](https://github.com/blesh/symbol-observable) | 4.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [synchronous-promise](https://github.com/fluffynuts/synchronous-promise) | 2.0.17 | [BSD-3-Clause](http://www.opensource.org/licenses/BSD-3-Clause) |
| [synckit](https://github.com/un-ts/synckit) | 0.8.5 | [MIT](http://www.opensource.org/licenses/MIT) |
| [telejson](https://github.com/storybookjs/telejson) | 7.2.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [tiny-invariant](https://github.com/alexreardon/tiny-invariant) | 1.3.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [titleize](https://github.com/sindresorhus/titleize) | 3.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [to-fast-properties](https://github.com/sindresorhus/to-fast-properties) | 2.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [to-regex-range](https://github.com/micromatch/to-regex-range) | 5.0.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [toidentifier](https://github.com/component/toidentifier) | 1.0.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [tr46](https://github.com/Sebmaster/tr46.js) | 0.0.3 | [MIT](http://www.opensource.org/licenses/MIT) |
| [ts-dedent](https://github.com/tamino-martinius/node-ts-dedent) | 2.2.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [ts-invariant](https://github.com/apollographql/invariant-packages) | 0.10.3 | [MIT](http://www.opensource.org/licenses/MIT) |
| [tslib](https://github.com/Microsoft/tslib) | 1.14.1 | [0BSD](http://landley.net/toybox/license.html) |
| [tslib](https://github.com/Microsoft/tslib) | 2.6.2 | [0BSD](http://landley.net/toybox/license.html) |
| [type-fest](https://github.com/sindresorhus/type-fest) | 0.6.0 | ([MIT](http://www.opensource.org/licenses/MIT) OR [CC0-1.0](http://creativecommons.org/publicdomain/zero/1.0/legalcode)) |
| [type-fest](https://github.com/sindresorhus/type-fest) | 0.8.1 | ([MIT](http://www.opensource.org/licenses/MIT) OR [CC0-1.0](http://creativecommons.org/publicdomain/zero/1.0/legalcode)) |
| [type-fest](https://github.com/sindresorhus/type-fest) | 1.4.0 | ([MIT](http://www.opensource.org/licenses/MIT) OR [CC0-1.0](http://creativecommons.org/publicdomain/zero/1.0/legalcode)) |
| [type-fest](https://github.com/sindresorhus/type-fest) | 2.19.0 | ([MIT](http://www.opensource.org/licenses/MIT) OR [CC0-1.0](http://creativecommons.org/publicdomain/zero/1.0/legalcode)) |
| [type-is](https://github.com/jshttp/type-is) | 1.6.18 | [MIT](http://www.opensource.org/licenses/MIT) |
| [type](https://github.com/medikoo/type) | 1.2.0 | [ISC](https://www.isc.org/downloads/software-support-policy/isc-license/) |
| [type](https://github.com/medikoo/type) | 2.7.2 | [ISC](https://www.isc.org/downloads/software-support-policy/isc-license/) |
| [typedarray-to-buffer](https://github.com/feross/typedarray-to-buffer) | 3.1.5 | [MIT](http://www.opensource.org/licenses/MIT) |
| [uglify-js](https://github.com/mishoo/UglifyJS) | 3.17.4 | [BSD-2-Clause](http://www.opensource.org/licenses/BSD-2-Clause) |
| [unique-string](https://github.com/sindresorhus/unique-string) | 3.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [universalify](https://github.com/RyanZim/universalify) | 2.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [unpipe](https://github.com/stream-utils/unpipe) | 1.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [untildify](https://github.com/sindresorhus/untildify) | 4.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [util-deprecate](https://github.com/TooTallNate/util-deprecate) | 1.0.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [util](https://github.com/browserify/node-util) | 0.12.5 | [MIT](http://www.opensource.org/licenses/MIT) |
| [utils-merge](https://github.com/jaredhanson/utils-merge) | 1.0.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [validate-npm-package-license](https://github.com/kemitchell/validate-npm-package-license.js) | 3.0.4 | [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0) |
| [vary](https://github.com/jshttp/vary) | 1.1.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [vscode-languageserver-textdocument](https://github.com/Microsoft/vscode-languageserver-node) | 1.0.8 | [MIT](http://www.opensource.org/licenses/MIT) |
| [vscode-uri](https://github.com/microsoft/vscode-uri) | 3.0.7 | [MIT](http://www.opensource.org/licenses/MIT) |
| [watchpack](https://github.com/webpack/watchpack) | 2.4.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [web-streams-polyfill](https://github.com/MattiasBuelens/web-streams-polyfill) | 3.2.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [webidl-conversions](https://github.com/jsdom/webidl-conversions) | 3.0.1 | [BSD-2-Clause](http://www.opensource.org/licenses/BSD-2-Clause) |
| [whatwg-url](https://github.com/jsdom/whatwg-url) | 5.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [which-typed-array](https://github.com/inspect-js/which-typed-array) | 1.1.9 | [MIT](http://www.opensource.org/licenses/MIT) |
| [which](https://github.com/isaacs/node-which) | 2.0.2 | [ISC](https://www.isc.org/downloads/software-support-policy/isc-license/) |
| [wordwrap](https://github.com/substack/node-wordwrap) | 1.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [wrap-ansi](https://github.com/chalk/wrap-ansi) | 7.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [wrap-ansi](https://github.com/chalk/wrap-ansi) | 8.1.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [wrappy](https://github.com/npm/wrappy) | 1.0.2 | [ISC](https://www.isc.org/downloads/software-support-policy/isc-license/) |
| [write-file-atomic](https://github.com/npm/write-file-atomic) | 3.0.3 | [ISC](https://www.isc.org/downloads/software-support-policy/isc-license/) |
| [ws](https://github.com/websockets/ws) | 7.5.9 | [MIT](http://www.opensource.org/licenses/MIT) |
| [ws](https://github.com/websockets/ws) | 8.13.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [xdg-basedir](https://github.com/sindresorhus/xdg-basedir) | 5.1.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [yallist](https://github.com/isaacs/yallist) | 4.0.0 | [ISC](https://www.isc.org/downloads/software-support-policy/isc-license/) |
| [yocto-queue](https://github.com/sindresorhus/yocto-queue) | 0.1.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [yocto-queue](https://github.com/sindresorhus/yocto-queue) | 1.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [zen-observable-ts](https://github.com/apollographql/zen-observable-ts) | 1.2.5 | [MIT](http://www.opensource.org/licenses/MIT) |
| [zen-observable](https://github.com/zenparsing/zen-observable) | 0.8.15 | [MIT](http://www.opensource.org/licenses/MIT) |
| [zone.js](https://github.com/angular/angular) | 0.11.8 | [MIT](http://www.opensource.org/licenses/MIT) |
@@ -60,19 +60,15 @@ Manages Task Instances.
Fetches the Task Audit information in PDF format.
- _taskId:_ `string` - ID of the target task
- **Returns** [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`Blob`](https://developer.mozilla.org/en-US/docs/Web/API/Blob)`>` - Binary PDF data
- **findAllTaskByState**(requestNode: [`TaskQueryRequestRepresentationModel`](../../../lib/process-services/src/lib/task-list/models/filter.model.ts), state?: `string`): [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`TaskListModel`](../../../lib/process-services/src/lib/task-list/models/task-list.model.ts)`>`<br/>
- **findAllTasksByState**(requestNode: [`TaskQueryRequestRepresentationModel`](../../../lib/process-services/src/lib/task-list/models/filter.model.ts), state?: `string`): [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`TaskListModel`](../../../lib/process-services/src/lib/task-list/models/task-list.model.ts)`>`<br/>
Gets all tasks matching a query and state value.
- _requestNode:_ [`TaskQueryRequestRepresentationModel`](../../../lib/process-services/src/lib/task-list/models/filter.model.ts) - Query to search for tasks.
- _state:_ `string` - (Optional) Task state. Can be "open" or "completed".
- **Returns** [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`TaskListModel`](../../../lib/process-services/src/lib/task-list/models/task-list.model.ts)`>` - List of tasks
- **findAllTasksWithoutState**(requestNode: [`TaskQueryRequestRepresentationModel`](../../../lib/process-services/src/lib/task-list/models/filter.model.ts)): [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`TaskListModel`](../../../lib/process-services/src/lib/task-list/models/task-list.model.ts)`>`<br/>
Gets all tasks matching the supplied query but ignoring the task state.
- _requestNode:_ [`TaskQueryRequestRepresentationModel`](../../../lib/process-services/src/lib/task-list/models/filter.model.ts) - Query to search for tasks
- _state:_ `string` - (Optional) Task state. Can be "open" or "completed". State "all" applies to both "active" and "completed" tasks.
- **Returns** [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`TaskListModel`](../../../lib/process-services/src/lib/task-list/models/task-list.model.ts)`>` - List of tasks
- **findTasksByState**(requestNode: [`TaskQueryRequestRepresentationModel`](../../../lib/process-services/src/lib/task-list/models/filter.model.ts), state?: `string`): [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`TaskListModel`](../../../lib/process-services/src/lib/task-list/models/task-list.model.ts)`>`<br/>
Gets tasks matching a query and state value.
- _requestNode:_ [`TaskQueryRequestRepresentationModel`](../../../lib/process-services/src/lib/task-list/models/filter.model.ts) - Query to search for tasks
- _state:_ `string` - (Optional) Task state. Can be "open" or "completed".
- _state:_ `string` - (Optional) Task state. Can be "open" or "completed". State "all" applies to both "active" and "completed" tasks.
- **Returns** [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`TaskListModel`](../../../lib/process-services/src/lib/task-list/models/task-list.model.ts)`>` - List of tasks
- **getFilterForTaskById**(taskId: `string`, filterList: [`FilterRepresentationModel`](../../../lib/process-services/src/lib/task-list/models/filter.model.ts)`[]`): [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`FilterRepresentationModel`](../../../lib/process-services/src/lib/task-list/models/filter.model.ts)`>`<br/>
Gets all the filters in the list that belong to a task.
+1
View File
@@ -9,6 +9,7 @@ The first **General Availability** release was v2.0.0.
## General Availability
- [6.7.0](RelNote-6.7.0.md)
- [6.6.0](RelNote-6.6.0.md)
- [6.5.2](RelNote-6.5.2.md)
- [6.5.1](RelNote-6.5.1.md)
+44 -44
View File
@@ -46,50 +46,50 @@ For a complete list of changes, supported browsers and new feature please refer
## Changelog
- [727365025](git@github.com:Alfresco/alfresco-ng2-components/commit/727365025) [ACS-5310] Removed dead link from angular.json for demo-shell (#8596)
- [735521603](git@github.com:Alfresco/alfresco-ng2-components/commit/735521603) [AAE-14759] Fixed image viewer when going to full screen mode (#8609)
- [46efc4f7e](git@github.com:Alfresco/alfresco-ng2-components/commit/46efc4f7e) [AAE-14850] Fix outcome buttons position (#8610)
- [be9a0a08a](git@github.com:Alfresco/alfresco-ng2-components/commit/be9a0a08a) [ADF-5544] Missing Vulnerabilities in adf-cli audit (#8604)
- [32f244d93](git@github.com:Alfresco/alfresco-ng2-components/commit/32f244d93) [ADF-5517] Reverted extra bug fixes changes (#8605)
- [3ee2b387a](git@github.com:Alfresco/alfresco-ng2-components/commit/3ee2b387a) [AAE-14030] Fix header custom color (#8595)
- [2f8b7b2bd](git@github.com:Alfresco/alfresco-ng2-components/commit/2f8b7b2bd) [ADF-5532] ADF Upgrade guide(upgrade411-50.md) (#8516)
- [2429bb426](git@github.com:Alfresco/alfresco-ng2-components/commit/2429bb426) [AAE-14030] Custom header text color is not working on apa (#8592)
- [507c6498a](git@github.com:Alfresco/alfresco-ng2-components/commit/507c6498a) [AAE-14376] Spinner is not aligned after opening task details (#8591)
- [a799743bb](git@github.com:Alfresco/alfresco-ng2-components/commit/a799743bb) [ADF-5540] Enable C277288 e2e (#8587)
- [3660f7347](git@github.com:Alfresco/alfresco-ng2-components/commit/3660f7347) [AAE-14168] Fixed outcome buttons position in start process (#8586)
- [5abb6fbee](git@github.com:Alfresco/alfresco-ng2-components/commit/5abb6fbee) [AAE-14061] Fix spinner disappearing too early in task lists (#8577)
- [e4965ece6](git@github.com:Alfresco/alfresco-ng2-components/commit/e4965ece6) [ADF-5517] Add unit test to test clicking anywhere on a row in a datatable (#8287)
- [65dfd446f](git@github.com:Alfresco/alfresco-ng2-components/commit/65dfd446f) [ADF-5542] Update JS-API and ADF libs versions to use caret (#8570)
- [b3e824143](git@github.com:Alfresco/alfresco-ng2-components/commit/b3e824143) [ACS-5272] security fixes for ADF CLI (#8567)
- [7e1ff2006](git@github.com:Alfresco/alfresco-ng2-components/commit/7e1ff2006) Update datatable.component.md documentation (#8525)
- [c431d0c6f](git@github.com:Alfresco/alfresco-ng2-components/commit/c431d0c6f) [ACS-5171] Facets section - UI changes (#8563)
- [b10a4370c](git@github.com:Alfresco/alfresco-ng2-components/commit/b10a4370c) [AAE-14032] - fixed style for attach button (#8566)
- [b5d410b75](git@github.com:Alfresco/alfresco-ng2-components/commit/b5d410b75) [ACS-5137] Fixed navigation between images (#8534)
- [3b1842f03](git@github.com:Alfresco/alfresco-ng2-components/commit/3b1842f03) [ADF-5505] deprecate angular flex layout library (#8562)
- [7e2a7f5b2](git@github.com:Alfresco/alfresco-ng2-components/commit/7e2a7f5b2) [AAE-14332] Fix export in FormCloudModule (#8565)
- [baf010db6](git@github.com:Alfresco/alfresco-ng2-components/commit/baf010db6) cleanup ADF readme (#8543)
- [d0b74cfbc](git@github.com:Alfresco/alfresco-ng2-components/commit/d0b74cfbc) [ACS-5165] Remove old upstream workflow (#8559)
- [4bd05bb46](git@github.com:Alfresco/alfresco-ng2-components/commit/4bd05bb46) [AAE-12764] simpleapp widget name fix (#8560)
- [d24726c88](git@github.com:Alfresco/alfresco-ng2-components/commit/d24726c88) [AAE-13661] Modify init-aae-env file to accept env parameter (#8489)
- [a729852f3](git@github.com:Alfresco/alfresco-ng2-components/commit/a729852f3) [AAE-12764] Add new process and form to simpleapp (#8558)
- [d5e1ca45f](git@github.com:Alfresco/alfresco-ng2-components/commit/d5e1ca45f) fix JS-API peer dependencies for libs (#8551)
- [3dc1f1149](git@github.com:Alfresco/alfresco-ng2-components/commit/3dc1f1149) [ACS-5155] tags message about required field displayed after discarding changes (#8550)
- [42322f8a9](git@github.com:Alfresco/alfresco-ng2-components/commit/42322f8a9) [AAE-13566] changed select input&#39;s position (#8471)
- [2b8f81dfe](git@github.com:Alfresco/alfresco-ng2-components/commit/2b8f81dfe) [AAE-11270] replaced error message with shorter version (#8487)
- [5d5fb299e](git@github.com:Alfresco/alfresco-ng2-components/commit/5d5fb299e) [AAE-12763] Unit test - C588832 Should not be able to upload a file … (#8512)
- [50f9a2776](git@github.com:Alfresco/alfresco-ng2-components/commit/50f9a2776) [AAE-13971] changed color to accent contrast (#8501)
- [00ede54e3](git@github.com:Alfresco/alfresco-ng2-components/commit/00ede54e3) [AAE-14184] App key as parameter when fetching roles (#8541)
- [88d4408db](git@github.com:Alfresco/alfresco-ng2-components/commit/88d4408db) [ADF-5509] fix core dependency on datetimepicker (#8539)
- [9cf166c3a](git@github.com:Alfresco/alfresco-ng2-components/commit/9cf166c3a) [ACS-5148] Corrected first tag position and removed extra scrollbar when spinner is visible (#8535)
- [23149cae5](git@github.com:Alfresco/alfresco-ng2-components/commit/23149cae5) [AAE-13800] - Avoid reloading task/process list when column visibility changes (#8499)
- [94c23171d](git@github.com:Alfresco/alfresco-ng2-components/commit/94c23171d) [ADF-5509] Migrate to Node 18 (#8531)
- [42a2a3cd1](git@github.com:Alfresco/alfresco-ng2-components/commit/42a2a3cd1) [AAE-14166] - fixing script for version (#8532)
- [5d6a1ea6a](git@github.com:Alfresco/alfresco-ng2-components/commit/5d6a1ea6a) [ACS-5143] Tree component expand/collapse fix (#8528)
- [895d4189f](git@github.com:Alfresco/alfresco-ng2-components/commit/895d4189f) [AAE-14166] - fixing dependencies for editorjs (#8526)
- [4966bb2d4](git@github.com:Alfresco/alfresco-ng2-components/commit/4966bb2d4) [HXOR-200] Standardize dry run flags as dry-run-flag: ${{ inputs.dry-run-flag }} (#8506)
- [74a33e9d8](git@github.com:Alfresco/alfresco-ng2-components/commit/74a33e9d8) ACS-5147 Fixed typo (#8522)
- [2d55bbf58](git@github.com:Alfresco/alfresco-ng2-components/commit/2d55bbf58) AAE-12240: Form save button enable/disable management (#8502)
- [bcd0b66c9](git@github.com:Alfresco/alfresco-ng2-components/commit/bcd0b66c9) [ACS-5135] Tree component emit pagination only when top level entries change (#8519)
- [727365025](https://github.com/Alfresco/alfresco-ng2-components/commit/727365025) [ACS-5310] Removed dead link from angular.json for demo-shell (#8596)
- [735521603](https://github.com/Alfresco/alfresco-ng2-components/commit/735521603) [AAE-14759] Fixed image viewer when going to full screen mode (#8609)
- [46efc4f7e](https://github.com/Alfresco/alfresco-ng2-components/commit/46efc4f7e) [AAE-14850] Fix outcome buttons position (#8610)
- [be9a0a08a](https://github.com/Alfresco/alfresco-ng2-components/commit/be9a0a08a) [ADF-5544] Missing Vulnerabilities in adf-cli audit (#8604)
- [32f244d93](https://github.com/Alfresco/alfresco-ng2-components/commit/32f244d93) [ADF-5517] Reverted extra bug fixes changes (#8605)
- [3ee2b387a](https://github.com/Alfresco/alfresco-ng2-components/commit/3ee2b387a) [AAE-14030] Fix header custom color (#8595)
- [2f8b7b2bd](https://github.com/Alfresco/alfresco-ng2-components/commit/2f8b7b2bd) [ADF-5532] ADF Upgrade guide(upgrade411-50.md) (#8516)
- [2429bb426](https://github.com/Alfresco/alfresco-ng2-components/commit/2429bb426) [AAE-14030] Custom header text color is not working on apa (#8592)
- [507c6498a](https://github.com/Alfresco/alfresco-ng2-components/commit/507c6498a) [AAE-14376] Spinner is not aligned after opening task details (#8591)
- [a799743bb](https://github.com/Alfresco/alfresco-ng2-components/commit/a799743bb) [ADF-5540] Enable C277288 e2e (#8587)
- [3660f7347](https://github.com/Alfresco/alfresco-ng2-components/commit/3660f7347) [AAE-14168] Fixed outcome buttons position in start process (#8586)
- [5abb6fbee](https://github.com/Alfresco/alfresco-ng2-components/commit/5abb6fbee) [AAE-14061] Fix spinner disappearing too early in task lists (#8577)
- [e4965ece6](https://github.com/Alfresco/alfresco-ng2-components/commit/e4965ece6) [ADF-5517] Add unit test to test clicking anywhere on a row in a datatable (#8287)
- [65dfd446f](https://github.com/Alfresco/alfresco-ng2-components/commit/65dfd446f) [ADF-5542] Update JS-API and ADF libs versions to use caret (#8570)
- [b3e824143](https://github.com/Alfresco/alfresco-ng2-components/commit/b3e824143) [ACS-5272] security fixes for ADF CLI (#8567)
- [7e1ff2006](https://github.com/Alfresco/alfresco-ng2-components/commit/7e1ff2006) Update datatable.component.md documentation (#8525)
- [c431d0c6f](https://github.com/Alfresco/alfresco-ng2-components/commit/c431d0c6f) [ACS-5171] Facets section - UI changes (#8563)
- [b10a4370c](https://github.com/Alfresco/alfresco-ng2-components/commit/b10a4370c) [AAE-14032] - fixed style for attach button (#8566)
- [b5d410b75](https://github.com/Alfresco/alfresco-ng2-components/commit/b5d410b75) [ACS-5137] Fixed navigation between images (#8534)
- [3b1842f03](https://github.com/Alfresco/alfresco-ng2-components/commit/3b1842f03) [ADF-5505] deprecate angular flex layout library (#8562)
- [7e2a7f5b2](https://github.com/Alfresco/alfresco-ng2-components/commit/7e2a7f5b2) [AAE-14332] Fix export in FormCloudModule (#8565)
- [baf010db6](https://github.com/Alfresco/alfresco-ng2-components/commit/baf010db6) cleanup ADF readme (#8543)
- [d0b74cfbc](https://github.com/Alfresco/alfresco-ng2-components/commit/d0b74cfbc) [ACS-5165] Remove old upstream workflow (#8559)
- [4bd05bb46](https://github.com/Alfresco/alfresco-ng2-components/commit/4bd05bb46) [AAE-12764] simpleapp widget name fix (#8560)
- [d24726c88](https://github.com/Alfresco/alfresco-ng2-components/commit/d24726c88) [AAE-13661] Modify init-aae-env file to accept env parameter (#8489)
- [a729852f3](https://github.com/Alfresco/alfresco-ng2-components/commit/a729852f3) [AAE-12764] Add new process and form to simpleapp (#8558)
- [d5e1ca45f](https://github.com/Alfresco/alfresco-ng2-components/commit/d5e1ca45f) fix JS-API peer dependencies for libs (#8551)
- [3dc1f1149](https://github.com/Alfresco/alfresco-ng2-components/commit/3dc1f1149) [ACS-5155] tags message about required field displayed after discarding changes (#8550)
- [42322f8a9](https://github.com/Alfresco/alfresco-ng2-components/commit/42322f8a9) [AAE-13566] changed select input&#39;s position (#8471)
- [2b8f81dfe](https://github.com/Alfresco/alfresco-ng2-components/commit/2b8f81dfe) [AAE-11270] replaced error message with shorter version (#8487)
- [5d5fb299e](https://github.com/Alfresco/alfresco-ng2-components/commit/5d5fb299e) [AAE-12763] Unit test - C588832 Should not be able to upload a file … (#8512)
- [50f9a2776](https://github.com/Alfresco/alfresco-ng2-components/commit/50f9a2776) [AAE-13971] changed color to accent contrast (#8501)
- [00ede54e3](https://github.com/Alfresco/alfresco-ng2-components/commit/00ede54e3) [AAE-14184] App key as parameter when fetching roles (#8541)
- [88d4408db](https://github.com/Alfresco/alfresco-ng2-components/commit/88d4408db) [ADF-5509] fix core dependency on datetimepicker (#8539)
- [9cf166c3a](https://github.com/Alfresco/alfresco-ng2-components/commit/9cf166c3a) [ACS-5148] Corrected first tag position and removed extra scrollbar when spinner is visible (#8535)
- [23149cae5](https://github.com/Alfresco/alfresco-ng2-components/commit/23149cae5) [AAE-13800] - Avoid reloading task/process list when column visibility changes (#8499)
- [94c23171d](https://github.com/Alfresco/alfresco-ng2-components/commit/94c23171d) [ADF-5509] Migrate to Node 18 (#8531)
- [42a2a3cd1](https://github.com/Alfresco/alfresco-ng2-components/commit/42a2a3cd1) [AAE-14166] - fixing script for version (#8532)
- [5d6a1ea6a](https://github.com/Alfresco/alfresco-ng2-components/commit/5d6a1ea6a) [ACS-5143] Tree component expand/collapse fix (#8528)
- [895d4189f](https://github.com/Alfresco/alfresco-ng2-components/commit/895d4189f) [AAE-14166] - fixing dependencies for editorjs (#8526)
- [4966bb2d4](https://github.com/Alfresco/alfresco-ng2-components/commit/4966bb2d4) [HXOR-200] Standardize dry run flags as dry-run-flag: ${{ inputs.dry-run-flag }} (#8506)
- [74a33e9d8](https://github.com/Alfresco/alfresco-ng2-components/commit/74a33e9d8) ACS-5147 Fixed typo (#8522)
- [2d55bbf58](https://github.com/Alfresco/alfresco-ng2-components/commit/2d55bbf58) AAE-12240: Form save button enable/disable management (#8502)
- [bcd0b66c9](https://github.com/Alfresco/alfresco-ng2-components/commit/bcd0b66c9) [ACS-5135] Tree component emit pagination only when top level entries change (#8519)
## See Also
+76 -76
View File
@@ -49,82 +49,82 @@ For a complete list of changes, supported browsers and new feature please refer
## Changelog
- [620911cf7](git@github.com:Alfresco/alfresco-ng2-components/commit/620911cf7) Protractor cleanup for demo shell (#9019)
- [fa7eb8722](git@github.com:Alfresco/alfresco-ng2-components/commit/fa7eb8722) fix linting for ADF (#9036)
- [b84738324](git@github.com:Alfresco/alfresco-ng2-components/commit/b84738324) [ACS-6222] Fixed missing display name for groups (#9034)
- [2d3175ef4](git@github.com:Alfresco/alfresco-ng2-components/commit/2d3175ef4) [ACS-6227] cleanup error handling and fix typing issues (#9035)
- [53ad9f729](git@github.com:Alfresco/alfresco-ng2-components/commit/53ad9f729) AAE-15874 enable local development option for simpleapp (#9031)
- [ba96ed14b](git@github.com:Alfresco/alfresco-ng2-components/commit/ba96ed14b) [ACS-6196] await-thenable rule for ESLint, fix issues (#9027)
- [7ebdce787](git@github.com:Alfresco/alfresco-ng2-components/commit/7ebdce787) [APPS-2108] break direct dependency on moment.js (#9032)
- [abf369bc3](git@github.com:Alfresco/alfresco-ng2-components/commit/abf369bc3) [ACS-6189] Moved date adapter from module to component (#9029)
- [67f1a4c50](git@github.com:Alfresco/alfresco-ng2-components/commit/67f1a4c50) [ACS-6189] broken decision table dates after deprecation of moment date adapter 3 (#9026)
- [e6bc457d2](git@github.com:Alfresco/alfresco-ng2-components/commit/e6bc457d2) [ACS-5831] Adding generic error to Library Modal. (#9025)
- [8bd24dbb7](git@github.com:Alfresco/alfresco-ng2-components/commit/8bd24dbb7) [ACS-6190] prefer-promise-reject-errors rule and fixes (#9021)
- [a73e72fac](git@github.com:Alfresco/alfresco-ng2-components/commit/a73e72fac) [ACS-6189] Corrected date format (#9016)
- [f366cf7c0](git@github.com:Alfresco/alfresco-ng2-components/commit/f366cf7c0) [ACS-5645] metadata fixes for encapsulation and host classes (#9018)
- [879c5a6d2](git@github.com:Alfresco/alfresco-ng2-components/commit/879c5a6d2) [ACS-5645] card view dateitem parse fix (#9017)
- [36c6e6d8e](git@github.com:Alfresco/alfresco-ng2-components/commit/36c6e6d8e) [ACS-5566] - Add configurable columns to document list (#8968)
- [3912a652d](git@github.com:Alfresco/alfresco-ng2-components/commit/3912a652d) [AAE-16369] use layout-bp mixin where applicable (#8945)
- [f6f74f466](git@github.com:Alfresco/alfresco-ng2-components/commit/f6f74f466) [AAE-16982] Add default ui with custom theme to simpleapp (#9014)
- [33f114767](git@github.com:Alfresco/alfresco-ng2-components/commit/33f114767) [AAE-16962] Handle number data table column type (#9013)
- [7c4304a1e](git@github.com:Alfresco/alfresco-ng2-components/commit/7c4304a1e) Fix AAE-16968 BC (#9010)
- [6644f539f](git@github.com:Alfresco/alfresco-ng2-components/commit/6644f539f) [AAE-16964] Handle amount data table cloumn type (#8984)
- [962a2be69](git@github.com:Alfresco/alfresco-ng2-components/commit/962a2be69) [ACS-6126] Fixed accessibility issues (#9007)
- [d13db2560](git@github.com:Alfresco/alfresco-ng2-components/commit/d13db2560) [ACS-6136] cleanup e2e files (protractor) (#9009)
- [b49c86fda](git@github.com:Alfresco/alfresco-ng2-components/commit/b49c86fda) [AAE-16968] Add boolean type (#8972)
- [cda12730f](git@github.com:Alfresco/alfresco-ng2-components/commit/cda12730f) [APPS-2255] documentation on date adapters (#9008)
- [d500bc67d](git@github.com:Alfresco/alfresco-ng2-components/commit/d500bc67d) [ACS-5831] Added Generic Error to Library Dialog. (#9005)
- [678df4298](git@github.com:Alfresco/alfresco-ng2-components/commit/678df4298) [APPS-2108] migrate cardview and task filters to date-fns (#9006)
- [7d5fbecf3](git@github.com:Alfresco/alfresco-ng2-components/commit/7d5fbecf3) [APPS-2136] migrate search-datetime-range to date-fns (#9004)
- [e6d625253](git@github.com:Alfresco/alfresco-ng2-components/commit/e6d625253) [APPS-2132] migrate components to date-fns (#9001)
- [f7b054417](git@github.com:Alfresco/alfresco-ng2-components/commit/f7b054417) [ACS-6019] Added node-fetch to adf-cli package.json (#9003)
- [ef285a1f1](git@github.com:Alfresco/alfresco-ng2-components/commit/ef285a1f1) [ACS-6019] [ACS-6021] [ACS-6023] Replaced request with node-fetch (#8999)
- [82fafff11](git@github.com:Alfresco/alfresco-ng2-components/commit/82fafff11) Remove demo shell protractor TreeView e2e (#9000)
- [462166293](git@github.com:Alfresco/alfresco-ng2-components/commit/462166293) Remove useless protractor tests (#8998)
- [2f36da576](git@github.com:Alfresco/alfresco-ng2-components/commit/2f36da576) [APPS-2108] date-fns adapter for datetime pickers, many datetime parsing and validation fixes (#8992)
- [c637f3eb2](git@github.com:Alfresco/alfresco-ng2-components/commit/c637f3eb2) [ACS-5611] Add the option to initially expand custom panel (#8986)
- [96d0a617a](git@github.com:Alfresco/alfresco-ng2-components/commit/96d0a617a) [APPS-2108] migrate unit tests to date-fns (#8991)
- [03a52dc10](git@github.com:Alfresco/alfresco-ng2-components/commit/03a52dc10) [APPS-2108] migrate form field validators to date-fns (#8988)
- [2f28ec9b6](git@github.com:Alfresco/alfresco-ng2-components/commit/2f28ec9b6) [ACS-5877] Migrate widget-visibility service do date-fns (#8870)
- [a86b9e625](git@github.com:Alfresco/alfresco-ng2-components/commit/a86b9e625) [APPS-2108] migrate analytics report to date-fns (#8985)
- [f6d48cb85](git@github.com:Alfresco/alfresco-ng2-components/commit/f6d48cb85) [ACS-5348] Fixed accessibility issues for the Date facet (#8982)
- [ce549249e](git@github.com:Alfresco/alfresco-ng2-components/commit/ce549249e) [APPS-2108] ADF date-fns adapter implementation (#8983)
- [4cc4498b0](git@github.com:Alfresco/alfresco-ng2-components/commit/4cc4498b0) [ACS-5611] Add custom metadata side panels to metadata card component (#8974)
- [3a374ad2a](git@github.com:Alfresco/alfresco-ng2-components/commit/3a374ad2a) [APPS-2108] migrate date widget to Angular date picker (#8975)
- [e42e0869b](git@github.com:Alfresco/alfresco-ng2-components/commit/e42e0869b) [APPS-2108] Switch search date range to the material date adapter (#8973)
- [93f45062f](git@github.com:Alfresco/alfresco-ng2-components/commit/93f45062f) migrate node lock dialog to date-fns (#8970)
- [ea6575666](git@github.com:Alfresco/alfresco-ng2-components/commit/ea6575666) [APPS-2157][APPS-2158][APPS-2161][APPS-2162][APPS-2165] Migration from moment to date-fns (#8965)
- [ecbee581a](git@github.com:Alfresco/alfresco-ng2-components/commit/ecbee581a) [APPS-2133] migration of dependency from moment to date-fns in start-task.component (#8844)
- [93fe29503](git@github.com:Alfresco/alfresco-ng2-components/commit/93fe29503) [ACS-6002] Add permissions displaying Site Permissions outside of Sites (#8952)
- [11b4f5186](git@github.com:Alfresco/alfresco-ng2-components/commit/11b4f5186) [AAE-16969] Remove force casting of all types to text (#8963)
- [43242b118](git@github.com:Alfresco/alfresco-ng2-components/commit/43242b118) pre angular 15 cleanup (#8961)
- [e638b54fc](git@github.com:Alfresco/alfresco-ng2-components/commit/e638b54fc) [MNT-23648] Clicking on Load More button no longer causes scroll position to reset to top (#8951)
- [034e9574d](git@github.com:Alfresco/alfresco-ng2-components/commit/034e9574d) [AAE-16884] revert request removal (#8959)
- [94baaf7d3](git@github.com:Alfresco/alfresco-ng2-components/commit/94baaf7d3) [AAE-16884] init aae script fixes (#8957)
- [e21ad3ca0](git@github.com:Alfresco/alfresco-ng2-components/commit/e21ad3ca0) [AAE-15316] - Refactored UserInfoComponent to get typography from theme (#8937)
- [21a029163](git@github.com:Alfresco/alfresco-ng2-components/commit/21a029163) [ACS-5878] implemented migration using the convertor approach (#8953)
- [d72eb5ebd](git@github.com:Alfresco/alfresco-ng2-components/commit/d72eb5ebd) [ACS-6071] fix jsdoc warnings and errors (#8948)
- [501516c8f](git@github.com:Alfresco/alfresco-ng2-components/commit/501516c8f) [ACS-6003] - waitRendition in rendition.service.ts not working (#8936)
- [d78dcd215](git@github.com:Alfresco/alfresco-ng2-components/commit/d78dcd215) [ACS-6071] fix docs for process cloud (#8947)
- [a48438e1c](git@github.com:Alfresco/alfresco-ng2-components/commit/a48438e1c) [ACS-5613] Renamed name to task name (#8946)
- [b03011c3d](git@github.com:Alfresco/alfresco-ng2-components/commit/b03011c3d) [ACS-6071] documentation fixes for process lib (#8943)
- [016e5ec08](git@github.com:Alfresco/alfresco-ng2-components/commit/016e5ec08) Revert &#34;[AAE-16369] use layout-bp mixin where applicable&#34; (#8944)
- [65d70bffb](git@github.com:Alfresco/alfresco-ng2-components/commit/65d70bffb) [ACS-6071] fix JSDoc issues for Core lib (#8942)
- [d7e0bb6cd](git@github.com:Alfresco/alfresco-ng2-components/commit/d7e0bb6cd) [AAE-16369] use layout-bp mixin where applicable (#8896)
- [a0c79e6c6](git@github.com:Alfresco/alfresco-ng2-components/commit/a0c79e6c6) [ACS-5601] Add getProcessesAndTasksOnContent to process content service (#8940)
- [094acf77c](git@github.com:Alfresco/alfresco-ng2-components/commit/094acf77c) [ACS-5613] process preview on popup displaying the details of selected running process on the popup (#8933)
- [44694c0ee](git@github.com:Alfresco/alfresco-ng2-components/commit/44694c0ee) [ACS-5748] The file gets unshared when setting the past expiration date (#8876)
- [4786a2632](git@github.com:Alfresco/alfresco-ng2-components/commit/4786a2632) Revert &#34;[APPS-2157] [APPS-2158] [APPS-2161] [APPS-2162] [APPS-2165] migration of e2e test cases from moment to date-fns (#8864)&#34; (#8938)
- [8f684a9f6](git@github.com:Alfresco/alfresco-ng2-components/commit/8f684a9f6) [ACS-5987] improved security for shell scripts (#8889)
- [83b2d9f8b](git@github.com:Alfresco/alfresco-ng2-components/commit/83b2d9f8b) [APPS-2202] Added custom utils for syncing moment and date-fns formats (#8934)
- [0933e2dad](git@github.com:Alfresco/alfresco-ng2-components/commit/0933e2dad) [APPS-2159] [APPS-2163] Replaced from moment.js to date-fns (#8878)
- [926347b8f](git@github.com:Alfresco/alfresco-ng2-components/commit/926347b8f) [ACS-5878] Migrated moment occurrences to date-fns equivalent in ProcessService (#8879)
- [3638ed06e](git@github.com:Alfresco/alfresco-ng2-components/commit/3638ed06e) [APPS-2157] [APPS-2158] [APPS-2161] [APPS-2162] [APPS-2165] migration of e2e test cases from moment to date-fns (#8864)
- [f48852075](git@github.com:Alfresco/alfresco-ng2-components/commit/f48852075) [APPS-2164] migration of dependency from moment to date-fns in task-list-properties.e2e.ts (#8873)
- [ef551a9c7](git@github.com:Alfresco/alfresco-ng2-components/commit/ef551a9c7) Improved ESLint configuration, integrated spellcheck and error fixes (#8931)
- [8370a3de6](git@github.com:Alfresco/alfresco-ng2-components/commit/8370a3de6) [MNT-23560] TIFF PDF Renderer Error (#8921)
- [534583874](git@github.com:Alfresco/alfresco-ng2-components/commit/534583874) [AAE-16353] - Refactoring error component to get typography from theme (#8932)
- [16ab6e330](git@github.com:Alfresco/alfresco-ng2-components/commit/16ab6e330) [ACS-5271] - replace deprecated &#39;request&#39; library (#8916)
- [620911cf7](https://github.com/Alfresco/alfresco-ng2-components/commit/620911cf7) Protractor cleanup for demo shell (#9019)
- [fa7eb8722](https://github.com/Alfresco/alfresco-ng2-components/commit/fa7eb8722) fix linting for ADF (#9036)
- [b84738324](https://github.com/Alfresco/alfresco-ng2-components/commit/b84738324) [ACS-6222] Fixed missing display name for groups (#9034)
- [2d3175ef4](https://github.com/Alfresco/alfresco-ng2-components/commit/2d3175ef4) [ACS-6227] cleanup error handling and fix typing issues (#9035)
- [53ad9f729](https://github.com/Alfresco/alfresco-ng2-components/commit/53ad9f729) AAE-15874 enable local development option for simpleapp (#9031)
- [ba96ed14b](https://github.com/Alfresco/alfresco-ng2-components/commit/ba96ed14b) [ACS-6196] await-thenable rule for ESLint, fix issues (#9027)
- [7ebdce787](https://github.com/Alfresco/alfresco-ng2-components/commit/7ebdce787) [APPS-2108] break direct dependency on moment.js (#9032)
- [abf369bc3](https://github.com/Alfresco/alfresco-ng2-components/commit/abf369bc3) [ACS-6189] Moved date adapter from module to component (#9029)
- [67f1a4c50](https://github.com/Alfresco/alfresco-ng2-components/commit/67f1a4c50) [ACS-6189] broken decision table dates after deprecation of moment date adapter 3 (#9026)
- [e6bc457d2](https://github.com/Alfresco/alfresco-ng2-components/commit/e6bc457d2) [ACS-5831] Adding generic error to Library Modal. (#9025)
- [8bd24dbb7](https://github.com/Alfresco/alfresco-ng2-components/commit/8bd24dbb7) [ACS-6190] prefer-promise-reject-errors rule and fixes (#9021)
- [a73e72fac](https://github.com/Alfresco/alfresco-ng2-components/commit/a73e72fac) [ACS-6189] Corrected date format (#9016)
- [f366cf7c0](https://github.com/Alfresco/alfresco-ng2-components/commit/f366cf7c0) [ACS-5645] metadata fixes for encapsulation and host classes (#9018)
- [879c5a6d2](https://github.com/Alfresco/alfresco-ng2-components/commit/879c5a6d2) [ACS-5645] card view dateitem parse fix (#9017)
- [36c6e6d8e](https://github.com/Alfresco/alfresco-ng2-components/commit/36c6e6d8e) [ACS-5566] - Add configurable columns to document list (#8968)
- [3912a652d](https://github.com/Alfresco/alfresco-ng2-components/commit/3912a652d) [AAE-16369] use layout-bp mixin where applicable (#8945)
- [f6f74f466](https://github.com/Alfresco/alfresco-ng2-components/commit/f6f74f466) [AAE-16982] Add default ui with custom theme to simpleapp (#9014)
- [33f114767](https://github.com/Alfresco/alfresco-ng2-components/commit/33f114767) [AAE-16962] Handle number data table column type (#9013)
- [7c4304a1e](https://github.com/Alfresco/alfresco-ng2-components/commit/7c4304a1e) Fix AAE-16968 BC (#9010)
- [6644f539f](https://github.com/Alfresco/alfresco-ng2-components/commit/6644f539f) [AAE-16964] Handle amount data table cloumn type (#8984)
- [962a2be69](https://github.com/Alfresco/alfresco-ng2-components/commit/962a2be69) [ACS-6126] Fixed accessibility issues (#9007)
- [d13db2560](https://github.com/Alfresco/alfresco-ng2-components/commit/d13db2560) [ACS-6136] cleanup e2e files (protractor) (#9009)
- [b49c86fda](https://github.com/Alfresco/alfresco-ng2-components/commit/b49c86fda) [AAE-16968] Add boolean type (#8972)
- [cda12730f](https://github.com/Alfresco/alfresco-ng2-components/commit/cda12730f) [APPS-2255] documentation on date adapters (#9008)
- [d500bc67d](https://github.com/Alfresco/alfresco-ng2-components/commit/d500bc67d) [ACS-5831] Added Generic Error to Library Dialog. (#9005)
- [678df4298](https://github.com/Alfresco/alfresco-ng2-components/commit/678df4298) [APPS-2108] migrate cardview and task filters to date-fns (#9006)
- [7d5fbecf3](https://github.com/Alfresco/alfresco-ng2-components/commit/7d5fbecf3) [APPS-2136] migrate search-datetime-range to date-fns (#9004)
- [e6d625253](https://github.com/Alfresco/alfresco-ng2-components/commit/e6d625253) [APPS-2132] migrate components to date-fns (#9001)
- [f7b054417](https://github.com/Alfresco/alfresco-ng2-components/commit/f7b054417) [ACS-6019] Added node-fetch to adf-cli package.json (#9003)
- [ef285a1f1](https://github.com/Alfresco/alfresco-ng2-components/commit/ef285a1f1) [ACS-6019] [ACS-6021] [ACS-6023] Replaced request with node-fetch (#8999)
- [82fafff11](https://github.com/Alfresco/alfresco-ng2-components/commit/82fafff11) Remove demo shell protractor TreeView e2e (#9000)
- [462166293](https://github.com/Alfresco/alfresco-ng2-components/commit/462166293) Remove useless protractor tests (#8998)
- [2f36da576](https://github.com/Alfresco/alfresco-ng2-components/commit/2f36da576) [APPS-2108] date-fns adapter for datetime pickers, many datetime parsing and validation fixes (#8992)
- [c637f3eb2](https://github.com/Alfresco/alfresco-ng2-components/commit/c637f3eb2) [ACS-5611] Add the option to initially expand custom panel (#8986)
- [96d0a617a](https://github.com/Alfresco/alfresco-ng2-components/commit/96d0a617a) [APPS-2108] migrate unit tests to date-fns (#8991)
- [03a52dc10](https://github.com/Alfresco/alfresco-ng2-components/commit/03a52dc10) [APPS-2108] migrate form field validators to date-fns (#8988)
- [2f28ec9b6](https://github.com/Alfresco/alfresco-ng2-components/commit/2f28ec9b6) [ACS-5877] Migrate widget-visibility service do date-fns (#8870)
- [a86b9e625](https://github.com/Alfresco/alfresco-ng2-components/commit/a86b9e625) [APPS-2108] migrate analytics report to date-fns (#8985)
- [f6d48cb85](https://github.com/Alfresco/alfresco-ng2-components/commit/f6d48cb85) [ACS-5348] Fixed accessibility issues for the Date facet (#8982)
- [ce549249e](https://github.com/Alfresco/alfresco-ng2-components/commit/ce549249e) [APPS-2108] ADF date-fns adapter implementation (#8983)
- [4cc4498b0](https://github.com/Alfresco/alfresco-ng2-components/commit/4cc4498b0) [ACS-5611] Add custom metadata side panels to metadata card component (#8974)
- [3a374ad2a](https://github.com/Alfresco/alfresco-ng2-components/commit/3a374ad2a) [APPS-2108] migrate date widget to Angular date picker (#8975)
- [e42e0869b](https://github.com/Alfresco/alfresco-ng2-components/commit/e42e0869b) [APPS-2108] Switch search date range to the material date adapter (#8973)
- [93f45062f](https://github.com/Alfresco/alfresco-ng2-components/commit/93f45062f) migrate node lock dialog to date-fns (#8970)
- [ea6575666](https://github.com/Alfresco/alfresco-ng2-components/commit/ea6575666) [APPS-2157][APPS-2158][APPS-2161][APPS-2162][APPS-2165] Migration from moment to date-fns (#8965)
- [ecbee581a](https://github.com/Alfresco/alfresco-ng2-components/commit/ecbee581a) [APPS-2133] migration of dependency from moment to date-fns in start-task.component (#8844)
- [93fe29503](https://github.com/Alfresco/alfresco-ng2-components/commit/93fe29503) [ACS-6002] Add permissions displaying Site Permissions outside of Sites (#8952)
- [11b4f5186](https://github.com/Alfresco/alfresco-ng2-components/commit/11b4f5186) [AAE-16969] Remove force casting of all types to text (#8963)
- [43242b118](https://github.com/Alfresco/alfresco-ng2-components/commit/43242b118) pre angular 15 cleanup (#8961)
- [e638b54fc](https://github.com/Alfresco/alfresco-ng2-components/commit/e638b54fc) [MNT-23648] Clicking on Load More button no longer causes scroll position to reset to top (#8951)
- [034e9574d](https://github.com/Alfresco/alfresco-ng2-components/commit/034e9574d) [AAE-16884] revert request removal (#8959)
- [94baaf7d3](https://github.com/Alfresco/alfresco-ng2-components/commit/94baaf7d3) [AAE-16884] init aae script fixes (#8957)
- [e21ad3ca0](https://github.com/Alfresco/alfresco-ng2-components/commit/e21ad3ca0) [AAE-15316] - Refactored UserInfoComponent to get typography from theme (#8937)
- [21a029163](https://github.com/Alfresco/alfresco-ng2-components/commit/21a029163) [ACS-5878] implemented migration using the convertor approach (#8953)
- [d72eb5ebd](https://github.com/Alfresco/alfresco-ng2-components/commit/d72eb5ebd) [ACS-6071] fix jsdoc warnings and errors (#8948)
- [501516c8f](https://github.com/Alfresco/alfresco-ng2-components/commit/501516c8f) [ACS-6003] - waitRendition in rendition.service.ts not working (#8936)
- [d78dcd215](https://github.com/Alfresco/alfresco-ng2-components/commit/d78dcd215) [ACS-6071] fix docs for process cloud (#8947)
- [a48438e1c](https://github.com/Alfresco/alfresco-ng2-components/commit/a48438e1c) [ACS-5613] Renamed name to task name (#8946)
- [b03011c3d](https://github.com/Alfresco/alfresco-ng2-components/commit/b03011c3d) [ACS-6071] documentation fixes for process lib (#8943)
- [016e5ec08](https://github.com/Alfresco/alfresco-ng2-components/commit/016e5ec08) Revert &#34;[AAE-16369] use layout-bp mixin where applicable&#34; (#8944)
- [65d70bffb](https://github.com/Alfresco/alfresco-ng2-components/commit/65d70bffb) [ACS-6071] fix JSDoc issues for Core lib (#8942)
- [d7e0bb6cd](https://github.com/Alfresco/alfresco-ng2-components/commit/d7e0bb6cd) [AAE-16369] use layout-bp mixin where applicable (#8896)
- [a0c79e6c6](https://github.com/Alfresco/alfresco-ng2-components/commit/a0c79e6c6) [ACS-5601] Add getProcessesAndTasksOnContent to process content service (#8940)
- [094acf77c](https://github.com/Alfresco/alfresco-ng2-components/commit/094acf77c) [ACS-5613] process preview on popup displaying the details of selected running process on the popup (#8933)
- [44694c0ee](https://github.com/Alfresco/alfresco-ng2-components/commit/44694c0ee) [ACS-5748] The file gets unshared when setting the past expiration date (#8876)
- [4786a2632](https://github.com/Alfresco/alfresco-ng2-components/commit/4786a2632) Revert &#34;[APPS-2157] [APPS-2158] [APPS-2161] [APPS-2162] [APPS-2165] migration of e2e test cases from moment to date-fns (#8864)&#34; (#8938)
- [8f684a9f6](https://github.com/Alfresco/alfresco-ng2-components/commit/8f684a9f6) [ACS-5987] improved security for shell scripts (#8889)
- [83b2d9f8b](https://github.com/Alfresco/alfresco-ng2-components/commit/83b2d9f8b) [APPS-2202] Added custom utils for syncing moment and date-fns formats (#8934)
- [0933e2dad](https://github.com/Alfresco/alfresco-ng2-components/commit/0933e2dad) [APPS-2159] [APPS-2163] Replaced from moment.js to date-fns (#8878)
- [926347b8f](https://github.com/Alfresco/alfresco-ng2-components/commit/926347b8f) [ACS-5878] Migrated moment occurrences to date-fns equivalent in ProcessService (#8879)
- [3638ed06e](https://github.com/Alfresco/alfresco-ng2-components/commit/3638ed06e) [APPS-2157] [APPS-2158] [APPS-2161] [APPS-2162] [APPS-2165] migration of e2e test cases from moment to date-fns (#8864)
- [f48852075](https://github.com/Alfresco/alfresco-ng2-components/commit/f48852075) [APPS-2164] migration of dependency from moment to date-fns in task-list-properties.e2e.ts (#8873)
- [ef551a9c7](https://github.com/Alfresco/alfresco-ng2-components/commit/ef551a9c7) Improved ESLint configuration, integrated spellcheck and error fixes (#8931)
- [8370a3de6](https://github.com/Alfresco/alfresco-ng2-components/commit/8370a3de6) [MNT-23560] TIFF PDF Renderer Error (#8921)
- [534583874](https://github.com/Alfresco/alfresco-ng2-components/commit/534583874) [AAE-16353] - Refactoring error component to get typography from theme (#8932)
- [16ab6e330](https://github.com/Alfresco/alfresco-ng2-components/commit/16ab6e330) [ACS-5271] - replace deprecated &#39;request&#39; library (#8916)
## See Also
+5 -5
View File
@@ -15,11 +15,11 @@ You can find release artifacts on [GitHub](https://github.com/Alfresco/alfresco-
## Changelog
- [f2df3c414](git@github.com:Alfresco/alfresco-ng2-components/commit/f2df3c414) [AAE-17909][AAE-17964] fix silent-refresh url is not set with the value - fix background image set to undefined (#9080)
- [168bb0b6c](git@github.com:Alfresco/alfresco-ng2-components/commit/168bb0b6c) [AAE-17258] Update storybook for datatable and datacolumn (#9052)
- [c0194029c](git@github.com:Alfresco/alfresco-ng2-components/commit/c0194029c) [AAE-17865] Remove few already covered e2es from ADF (#9078)
- [625cf2b85](git@github.com:Alfresco/alfresco-ng2-components/commit/625cf2b85) [ADF-5561] Remove unused dep (#9064)
- [f0a11fdab](git@github.com:Alfresco/alfresco-ng2-components/commit/f0a11fdab) [ACS-6140] migrate tests to harness (#9071)
- [f2df3c414](https://github.com/Alfresco/alfresco-ng2-components/commit/f2df3c414) [AAE-17909][AAE-17964] fix silent-refresh url is not set with the value - fix background image set to undefined (#9080)
- [168bb0b6c](https://github.com/Alfresco/alfresco-ng2-components/commit/168bb0b6c) [AAE-17258] Update storybook for datatable and datacolumn (#9052)
- [c0194029c](https://github.com/Alfresco/alfresco-ng2-components/commit/c0194029c) [AAE-17865] Remove few already covered e2es from ADF (#9078)
- [625cf2b85](https://github.com/Alfresco/alfresco-ng2-components/commit/625cf2b85) [ADF-5561] Remove unused dep (#9064)
- [f0a11fdab](https://github.com/Alfresco/alfresco-ng2-components/commit/f0a11fdab) [ACS-6140] migrate tests to harness (#9071)
## See Also
+7 -7
View File
@@ -15,13 +15,13 @@ You can find release artifacts on [GitHub](https://github.com/Alfresco/alfresco-
## Changelog
- [22d3179a5](git@github.com:Alfresco/alfresco-ng2-components/commit/22d3179a5) Revert &#34;[AAE-18105] Fix release workflow: release-npm step doesn&#39;t publish al…&#34; (#9092)
- [17323b0ab](git@github.com:Alfresco/alfresco-ng2-components/commit/17323b0ab) [AAE-18105] Fix release workflow: release-npm step doesn&#39;t publish all the packages (#9091)
- [81787d520](git@github.com:Alfresco/alfresco-ng2-components/commit/81787d520) [MNT-23166] Add resize flag to document list with option to disable blur (#9090)
- [e5ca7d206](git@github.com:Alfresco/alfresco-ng2-components/commit/e5ca7d206) [AAE-18057] Fix token is not refreshed after silent-refresh is called. Get another token from the auth server. (#9089)
- [6787ef458](git@github.com:Alfresco/alfresco-ng2-components/commit/6787ef458) [ACS-6225] Removed extra gray area around share link dialog (#9086)
- [6988c1f45](git@github.com:Alfresco/alfresco-ng2-components/commit/6988c1f45) [ACS-6067] viewer thumbnails not refresh on file change (#9075)
- [15fdbc7e2](git@github.com:Alfresco/alfresco-ng2-components/commit/15fdbc7e2) [ACS-4794] ES query migration changes (#8773)
- [22d3179a5](https://github.com/Alfresco/alfresco-ng2-components/commit/22d3179a5) Revert &#34;[AAE-18105] Fix release workflow: release-npm step doesn&#39;t publish al…&#34; (#9092)
- [17323b0ab](https://github.com/Alfresco/alfresco-ng2-components/commit/17323b0ab) [AAE-18105] Fix release workflow: release-npm step doesn&#39;t publish all the packages (#9091)
- [81787d520](https://github.com/Alfresco/alfresco-ng2-components/commit/81787d520) [MNT-23166] Add resize flag to document list with option to disable blur (#9090)
- [e5ca7d206](https://github.com/Alfresco/alfresco-ng2-components/commit/e5ca7d206) [AAE-18057] Fix token is not refreshed after silent-refresh is called. Get another token from the auth server. (#9089)
- [6787ef458](https://github.com/Alfresco/alfresco-ng2-components/commit/6787ef458) [ACS-6225] Removed extra gray area around share link dialog (#9086)
- [6988c1f45](https://github.com/Alfresco/alfresco-ng2-components/commit/6988c1f45) [ACS-6067] viewer thumbnails not refresh on file change (#9075)
- [15fdbc7e2](https://github.com/Alfresco/alfresco-ng2-components/commit/15fdbc7e2) [ACS-4794] ES query migration changes (#8773)
## See Also
+83 -83
View File
@@ -4,88 +4,88 @@ Title: Changelog for alfresco-ng2-components v6.6.0
# Changelog
- [fdab441d45](git@github.com:Alfresco/alfresco-ng2-components/commit/fdab441d45) [AAE-19610] Submit query on change event for search date range tabbed widget (#9256)
- [720fbb98ca](git@github.com:Alfresco/alfresco-ng2-components/commit/720fbb98ca) [AAE-19708] Fix breaking change for actions/upload-artifact v4.1.0 (#9270)
- [4ec8ca9aa5](git@github.com:Alfresco/alfresco-ng2-components/commit/4ec8ca9aa5) [AAE-18281] Update uat-be-default-app with subprocess-parallel (#9253)
- [ca38f05f30](git@github.com:Alfresco/alfresco-ng2-components/commit/ca38f05f30) [ACS-6584] Added validation for illegal characters when creating a tag (#9251)
- [e1fcaed12d](git@github.com:Alfresco/alfresco-ng2-components/commit/e1fcaed12d) [AAE-19610] Add specific date range settings to search filter (#9250)
- [b46d468f76](git@github.com:Alfresco/alfresco-ng2-components/commit/b46d468f76) [ACS-6212] Fix overlaping labels and incorrect color for warning (#9219)
- [7a40a614a4](git@github.com:Alfresco/alfresco-ng2-components/commit/7a40a614a4) [ACS-6596] - verify ticket on app loading (#9244)
- [d95e46e485](git@github.com:Alfresco/alfresco-ng2-components/commit/d95e46e485) [AAE-19621] Fix icon cut off in attach file button (#9249)
- [9c570701e2](git@github.com:Alfresco/alfresco-ng2-components/commit/9c570701e2) [AAE-19604] fix unwanted notification error (#9246)
- [bbd41715b0](git@github.com:Alfresco/alfresco-ng2-components/commit/bbd41715b0) [AAE-17674] Solve deprecation warning in the theme creation (#9247)
- [e982b7db71](git@github.com:Alfresco/alfresco-ng2-components/commit/e982b7db71) [AAE-19343] Fix attach file widget advanced properties are not properly displayed (#9225)
- [bb3dd978d2](git@github.com:Alfresco/alfresco-ng2-components/commit/bb3dd978d2) [AAE-17674] Solve deprecation warning in the theme creation (#9222)
- [4e328ea726](git@github.com:Alfresco/alfresco-ng2-components/commit/4e328ea726) Revert &#34;[AAE-19372] fix assignee input not being clickable&#34; (#9230)
- [f685f92a62](git@github.com:Alfresco/alfresco-ng2-components/commit/f685f92a62) [AAE-19372] fix assignee input not being clickable (#9228)
- [daa8183598](git@github.com:Alfresco/alfresco-ng2-components/commit/daa8183598) [AAE-19365] Fix for changelog generation (#9226)
- [9515e0e879](git@github.com:Alfresco/alfresco-ng2-components/commit/9515e0e879) [AAE-19325] Update uat-be-default-app (#9223)
- [9c421a8858](git@github.com:Alfresco/alfresco-ng2-components/commit/9c421a8858) [AAE-14726] apply design tokens for ProcessHeaderCloudComponent (#9189)
- [03647f6697](git@github.com:Alfresco/alfresco-ng2-components/commit/03647f6697) [AAE-15206] apply design tokens for TaskAssignmentFilterCloudComponent (#9172)
- [551bfeb841](git@github.com:Alfresco/alfresco-ng2-components/commit/551bfeb841) [AAE-15294] applied design tokens for GroupCloudComponent (#9168)
- [595856cb8d](git@github.com:Alfresco/alfresco-ng2-components/commit/595856cb8d) [ADF-5556] Compatibility matrix document update. (#9205)
- [4ff46642fb](git@github.com:Alfresco/alfresco-ng2-components/commit/4ff46642fb) [ADF-5563][ADF-5565][ADF-5566]Removed !important from &#39;task-form&#39;,&#39;cloud-form-demo&#39; and &#39;add-permission-panel&#39; component (#9187)
- [d4d731b275](git@github.com:Alfresco/alfresco-ng2-components/commit/d4d731b275) [ADF-5562][ADF-5564]Removed !important from from and version list component (#9142)
- [5054679f6c](git@github.com:Alfresco/alfresco-ng2-components/commit/5054679f6c) [ACS-6211] Fixed UI alignment issues in create rules screen (CardView and child components) (#9101)
- [bd5e3799f0](git@github.com:Alfresco/alfresco-ng2-components/commit/bd5e3799f0) [ADF-5568] Removed important property from &#39;card-view-dateitem.component.scss&#39; in ADF (#9206)
- [b0dae85689](git@github.com:Alfresco/alfresco-ng2-components/commit/b0dae85689) [ADF-5567] Removed important property from &#39;permission-list.component.scss&#39; in ADF (#9184)
- [e65b5430a1](git@github.com:Alfresco/alfresco-ng2-components/commit/e65b5430a1) [MNT-23433] configure position for close button on Viewer (#9143)
- [6549235dae](git@github.com:Alfresco/alfresco-ng2-components/commit/6549235dae) [ACS-6412] - Some operations are broken when executed on file created from template (#9207)
- [a1b4c54b16](git@github.com:Alfresco/alfresco-ng2-components/commit/a1b4c54b16) Allow to use extension value in addition to passing JSON file name (#9192)
- [e9c769bc30](git@github.com:Alfresco/alfresco-ng2-components/commit/e9c769bc30) [ACS-6399] - ACA search properties facet clear button do not clear search filter (#9191)
- [b9d3065810](git@github.com:Alfresco/alfresco-ng2-components/commit/b9d3065810) [ADF-5569] removed important (#9190)
- [c4d5f5dae1](git@github.com:Alfresco/alfresco-ng2-components/commit/c4d5f5dae1) [ACS-6325] Persisting configuration of document list columns size, visibility and order (#9170)
- [a900dd2551](git@github.com:Alfresco/alfresco-ng2-components/commit/a900dd2551) [ACS-5645] Property Panel Feature (#8995)
- [0191860950](git@github.com:Alfresco/alfresco-ng2-components/commit/0191860950) [AAE-15295] added design tokens to PeopleCloudComponent (#9162)
- [7c924e0e28](git@github.com:Alfresco/alfresco-ng2-components/commit/7c924e0e28) [AAE-19026] Fix app permissions (#9171)
- [0932a3ed10](git@github.com:Alfresco/alfresco-ng2-components/commit/0932a3ed10) [AAE-18459] Fix invalidateSession is called when auth is not initilized by js-api (#9152)
- [1f5af31ad0](git@github.com:Alfresco/alfresco-ng2-components/commit/1f5af31ad0) [AAE-19026] Fix app permissions (#9169)
- [2ca1c75b76](git@github.com:Alfresco/alfresco-ng2-components/commit/2ca1c75b76) [AAE-19005] Pin 18.18.2 node version (#9167)
- [6e848d129b](git@github.com:Alfresco/alfresco-ng2-components/commit/6e848d129b) Revert &#34;Revert &#34;build(deps): bump actions/setup-node in /.github/actions/setup (#9125)&#34; (#9165)&#34; (#9166)
- [7121e72f83](git@github.com:Alfresco/alfresco-ng2-components/commit/7121e72f83) Revert &#34;Check js api unit test issue (#9163)&#34; (#9164)
- [ce93a7cc04](git@github.com:Alfresco/alfresco-ng2-components/commit/ce93a7cc04) Revert &#34;build(deps): bump actions/setup-node in /.github/actions/setup (#9125)&#34; (#9165)
- [25418c22cd](git@github.com:Alfresco/alfresco-ng2-components/commit/25418c22cd) Check js api unit test issue (#9163)
- [6d4197412f](git@github.com:Alfresco/alfresco-ng2-components/commit/6d4197412f) [AAE-18893] Update application by process sequentialusertask (#9160)
- [bed9e4b1f8](git@github.com:Alfresco/alfresco-ng2-components/commit/bed9e4b1f8) [MNT-24098] fixes for pdf with HTTP (#9155)
- [468c32691d](git@github.com:Alfresco/alfresco-ng2-components/commit/468c32691d) [AAE-17666] Remove date cell e2es covered by unit tests (#9153)
- [cd33bb6c92](git@github.com:Alfresco/alfresco-ng2-components/commit/cd33bb6c92) [ACS-6323] dynamic content list changing columns order with drag drop (#9146)
- [064c1fd216](git@github.com:Alfresco/alfresco-ng2-components/commit/064c1fd216) [MNT-23166] Make tasks and processes lists resizeable (#9145)
- [f47fb2a7e9](git@github.com:Alfresco/alfresco-ng2-components/commit/f47fb2a7e9) [ACS-6107] Replaced SearchDateRange component with SearchDateRangeAdvanced Component (#9023)
- [88ab336d05](git@github.com:Alfresco/alfresco-ng2-components/commit/88ab336d05) [AAE-18450] fixed form value not updating instantly on radio change (#9141)
- [8fa37a54a7](git@github.com:Alfresco/alfresco-ng2-components/commit/8fa37a54a7) [ACS-6031] Minimum width and tooltip added for column header (#9093)
- [a3fa0f316b](git@github.com:Alfresco/alfresco-ng2-components/commit/a3fa0f316b) [ADF-5570][ADF-5571]Removed important property from &#39;toolbar.component.scss&#39; and &#39;pagination.component.scss&#39; in ADF (#9134)
- [e78bc460de](git@github.com:Alfresco/alfresco-ng2-components/commit/e78bc460de) [AAE-17481] Fix mapping for process leave-request (#9140)
- [db9c3d4cb4](git@github.com:Alfresco/alfresco-ng2-components/commit/db9c3d4cb4) [AAE-17481] Fix processes for the new tests (#9137)
- [e0260d821f](git@github.com:Alfresco/alfresco-ng2-components/commit/e0260d821f) [AAE-17475] Fix processes for Call Activities tests (#9136)
- [c1ad165ef9](git@github.com:Alfresco/alfresco-ng2-components/commit/c1ad165ef9) [AAE-18541] - OAuth - redirect does not work (#9135)
- [065829ef01](git@github.com:Alfresco/alfresco-ng2-components/commit/065829ef01) [ACS-5600] AlfrescoViewerComponent shows the original mimetype (#9095)
- [8a184efc6c](git@github.com:Alfresco/alfresco-ng2-components/commit/8a184efc6c) [AAE-8556] Convert attach file manual test case to unit test (#9108)
- [500c5581f6](git@github.com:Alfresco/alfresco-ng2-components/commit/500c5581f6) [AAE-18541] - OAuth - redirect does not work (#9133)
- [7793aba89e](git@github.com:Alfresco/alfresco-ng2-components/commit/7793aba89e) [ACS-6252] support disabling the tags and categories feature in the applications (#9106)
- [979bf3ac59](git@github.com:Alfresco/alfresco-ng2-components/commit/979bf3ac59) [ACS-6396] cleanup unused CLI code (#9132)
- [7300f74add](git@github.com:Alfresco/alfresco-ng2-components/commit/7300f74add) Fix dependabot.yml (#9120)
- [38a7dc6cb7](git@github.com:Alfresco/alfresco-ng2-components/commit/38a7dc6cb7) ADF release - Notify correct channel (#9116)
- [4313869127](git@github.com:Alfresco/alfresco-ng2-components/commit/4313869127) [ACS-6370] fix js-api version bump (#9119)
- [3daecb1b1c](git@github.com:Alfresco/alfresco-ng2-components/commit/3daecb1b1c) [AAE-18117] Use SHA for GitHub actions (#9113)
- [3cf2ffa7bd](git@github.com:Alfresco/alfresco-ng2-components/commit/3cf2ffa7bd) [AAE-18464] fix bundle check for js-api (#9117)
- [2824b7be50](git@github.com:Alfresco/alfresco-ng2-components/commit/2824b7be50) bump js-api version to 7.4.0 (#9115)
- [3677bfb78e](git@github.com:Alfresco/alfresco-ng2-components/commit/3677bfb78e) [ACS-6370] switch js-api builds to original node.js (#9114)
- [dbe3a7c7db](git@github.com:Alfresco/alfresco-ng2-components/commit/dbe3a7c7db) [ACS-6370] temporary pin ADF cli to js-api 7.2.0 (#9112)
- [869f0296d0](git@github.com:Alfresco/alfresco-ng2-components/commit/869f0296d0) Trigger a new release (#9111)
- [2a7fd89af0](git@github.com:Alfresco/alfresco-ng2-components/commit/2a7fd89af0) [PRODENG-211] fix js-api version bump (#9110)
- [6759e2e9bb](git@github.com:Alfresco/alfresco-ng2-components/commit/6759e2e9bb) [AAE-16041] Removing unneeded tests (#9109)
- [3309ea63f6](git@github.com:Alfresco/alfresco-ng2-components/commit/3309ea63f6) [PRODENG-211] improved ADF CLI compilation (#9105)
- [e97333aabd](git@github.com:Alfresco/alfresco-ng2-components/commit/e97333aabd) [PRODENG-211] reworked version updating (#9104)
- [aa05fc28b5](git@github.com:Alfresco/alfresco-ng2-components/commit/aa05fc28b5) [AAE-18175] Unable to Import Descriptor in HXP Environment (#9097)
- [4b3e101586](git@github.com:Alfresco/alfresco-ng2-components/commit/4b3e101586) [PRODENG-211] update npm bundle check (#9103)
- [8687e86cf6](git@github.com:Alfresco/alfresco-ng2-components/commit/8687e86cf6) [PRODENG-211] update js-api deps (#9102)
- [8839c9563a](git@github.com:Alfresco/alfresco-ng2-components/commit/8839c9563a) bump local js-api to 7.3.0
- [ea2c0ce229](git@github.com:Alfresco/alfresco-ng2-components/commit/ea2c0ce229) [PRODENG-211] integrate JS-API with monorepo (part 1) (#9081)
- [804fa2ffd4](git@github.com:Alfresco/alfresco-ng2-components/commit/804fa2ffd4) [AAE-17480] update application (#9100)
- [d14c116747](git@github.com:Alfresco/alfresco-ng2-components/commit/d14c116747) [MNT-22836] - support PKCE code flow in SSO (#8884)
- [eb8aaecef6](git@github.com:Alfresco/alfresco-ng2-components/commit/eb8aaecef6) [ACS-6328] fix oauth config loading (#9098)
- [001d6ee83d](git@github.com:Alfresco/alfresco-ng2-components/commit/001d6ee83d) [AAE-17859] Convert manual C309872 to unit test (#9077)
- [606abdb4fd](git@github.com:Alfresco/alfresco-ng2-components/commit/606abdb4fd) [AAE-17103] Handle icon type (#9012)
- [4af945123b](git@github.com:Alfresco/alfresco-ng2-components/commit/4af945123b) Revert &#34;[ACS-5311] Notification History Bug Fix (#9011)&#34; (#9096)
- [fdab441d45](https://github.com/Alfresco/alfresco-ng2-components/commit/fdab441d45) [AAE-19610] Submit query on change event for search date range tabbed widget (#9256)
- [720fbb98ca](https://github.com/Alfresco/alfresco-ng2-components/commit/720fbb98ca) [AAE-19708] Fix breaking change for actions/upload-artifact v4.1.0 (#9270)
- [4ec8ca9aa5](https://github.com/Alfresco/alfresco-ng2-components/commit/4ec8ca9aa5) [AAE-18281] Update uat-be-default-app with subprocess-parallel (#9253)
- [ca38f05f30](https://github.com/Alfresco/alfresco-ng2-components/commit/ca38f05f30) [ACS-6584] Added validation for illegal characters when creating a tag (#9251)
- [e1fcaed12d](https://github.com/Alfresco/alfresco-ng2-components/commit/e1fcaed12d) [AAE-19610] Add specific date range settings to search filter (#9250)
- [b46d468f76](https://github.com/Alfresco/alfresco-ng2-components/commit/b46d468f76) [ACS-6212] Fix overlaping labels and incorrect color for warning (#9219)
- [7a40a614a4](https://github.com/Alfresco/alfresco-ng2-components/commit/7a40a614a4) [ACS-6596] - verify ticket on app loading (#9244)
- [d95e46e485](https://github.com/Alfresco/alfresco-ng2-components/commit/d95e46e485) [AAE-19621] Fix icon cut off in attach file button (#9249)
- [9c570701e2](https://github.com/Alfresco/alfresco-ng2-components/commit/9c570701e2) [AAE-19604] fix unwanted notification error (#9246)
- [bbd41715b0](https://github.com/Alfresco/alfresco-ng2-components/commit/bbd41715b0) [AAE-17674] Solve deprecation warning in the theme creation (#9247)
- [e982b7db71](https://github.com/Alfresco/alfresco-ng2-components/commit/e982b7db71) [AAE-19343] Fix attach file widget advanced properties are not properly displayed (#9225)
- [bb3dd978d2](https://github.com/Alfresco/alfresco-ng2-components/commit/bb3dd978d2) [AAE-17674] Solve deprecation warning in the theme creation (#9222)
- [4e328ea726](https://github.com/Alfresco/alfresco-ng2-components/commit/4e328ea726) Revert &#34;[AAE-19372] fix assignee input not being clickable&#34; (#9230)
- [f685f92a62](https://github.com/Alfresco/alfresco-ng2-components/commit/f685f92a62) [AAE-19372] fix assignee input not being clickable (#9228)
- [daa8183598](https://github.com/Alfresco/alfresco-ng2-components/commit/daa8183598) [AAE-19365] Fix for changelog generation (#9226)
- [9515e0e879](https://github.com/Alfresco/alfresco-ng2-components/commit/9515e0e879) [AAE-19325] Update uat-be-default-app (#9223)
- [9c421a8858](https://github.com/Alfresco/alfresco-ng2-components/commit/9c421a8858) [AAE-14726] apply design tokens for ProcessHeaderCloudComponent (#9189)
- [03647f6697](https://github.com/Alfresco/alfresco-ng2-components/commit/03647f6697) [AAE-15206] apply design tokens for TaskAssignmentFilterCloudComponent (#9172)
- [551bfeb841](https://github.com/Alfresco/alfresco-ng2-components/commit/551bfeb841) [AAE-15294] applied design tokens for GroupCloudComponent (#9168)
- [595856cb8d](https://github.com/Alfresco/alfresco-ng2-components/commit/595856cb8d) [ADF-5556] Compatibility matrix document update. (#9205)
- [4ff46642fb](https://github.com/Alfresco/alfresco-ng2-components/commit/4ff46642fb) [ADF-5563][ADF-5565][ADF-5566]Removed !important from &#39;task-form&#39;,&#39;cloud-form-demo&#39; and &#39;add-permission-panel&#39; component (#9187)
- [d4d731b275](https://github.com/Alfresco/alfresco-ng2-components/commit/d4d731b275) [ADF-5562][ADF-5564]Removed !important from from and version list component (#9142)
- [5054679f6c](https://github.com/Alfresco/alfresco-ng2-components/commit/5054679f6c) [ACS-6211] Fixed UI alignment issues in create rules screen (CardView and child components) (#9101)
- [bd5e3799f0](https://github.com/Alfresco/alfresco-ng2-components/commit/bd5e3799f0) [ADF-5568] Removed important property from &#39;card-view-dateitem.component.scss&#39; in ADF (#9206)
- [b0dae85689](https://github.com/Alfresco/alfresco-ng2-components/commit/b0dae85689) [ADF-5567] Removed important property from &#39;permission-list.component.scss&#39; in ADF (#9184)
- [e65b5430a1](https://github.com/Alfresco/alfresco-ng2-components/commit/e65b5430a1) [MNT-23433] configure position for close button on Viewer (#9143)
- [6549235dae](https://github.com/Alfresco/alfresco-ng2-components/commit/6549235dae) [ACS-6412] - Some operations are broken when executed on file created from template (#9207)
- [a1b4c54b16](https://github.com/Alfresco/alfresco-ng2-components/commit/a1b4c54b16) Allow to use extension value in addition to passing JSON file name (#9192)
- [e9c769bc30](https://github.com/Alfresco/alfresco-ng2-components/commit/e9c769bc30) [ACS-6399] - ACA search properties facet clear button do not clear search filter (#9191)
- [b9d3065810](https://github.com/Alfresco/alfresco-ng2-components/commit/b9d3065810) [ADF-5569] removed important (#9190)
- [c4d5f5dae1](https://github.com/Alfresco/alfresco-ng2-components/commit/c4d5f5dae1) [ACS-6325] Persisting configuration of document list columns size, visibility and order (#9170)
- [a900dd2551](https://github.com/Alfresco/alfresco-ng2-components/commit/a900dd2551) [ACS-5645] Property Panel Feature (#8995)
- [0191860950](https://github.com/Alfresco/alfresco-ng2-components/commit/0191860950) [AAE-15295] added design tokens to PeopleCloudComponent (#9162)
- [7c924e0e28](https://github.com/Alfresco/alfresco-ng2-components/commit/7c924e0e28) [AAE-19026] Fix app permissions (#9171)
- [0932a3ed10](https://github.com/Alfresco/alfresco-ng2-components/commit/0932a3ed10) [AAE-18459] Fix invalidateSession is called when auth is not initilized by js-api (#9152)
- [1f5af31ad0](https://github.com/Alfresco/alfresco-ng2-components/commit/1f5af31ad0) [AAE-19026] Fix app permissions (#9169)
- [2ca1c75b76](https://github.com/Alfresco/alfresco-ng2-components/commit/2ca1c75b76) [AAE-19005] Pin 18.18.2 node version (#9167)
- [6e848d129b](https://github.com/Alfresco/alfresco-ng2-components/commit/6e848d129b) Revert &#34;Revert &#34;build(deps): bump actions/setup-node in /.github/actions/setup (#9125)&#34; (#9165)&#34; (#9166)
- [7121e72f83](https://github.com/Alfresco/alfresco-ng2-components/commit/7121e72f83) Revert &#34;Check js api unit test issue (#9163)&#34; (#9164)
- [ce93a7cc04](https://github.com/Alfresco/alfresco-ng2-components/commit/ce93a7cc04) Revert &#34;build(deps): bump actions/setup-node in /.github/actions/setup (#9125)&#34; (#9165)
- [25418c22cd](https://github.com/Alfresco/alfresco-ng2-components/commit/25418c22cd) Check js api unit test issue (#9163)
- [6d4197412f](https://github.com/Alfresco/alfresco-ng2-components/commit/6d4197412f) [AAE-18893] Update application by process sequentialusertask (#9160)
- [bed9e4b1f8](https://github.com/Alfresco/alfresco-ng2-components/commit/bed9e4b1f8) [MNT-24098] fixes for pdf with HTTP (#9155)
- [468c32691d](https://github.com/Alfresco/alfresco-ng2-components/commit/468c32691d) [AAE-17666] Remove date cell e2es covered by unit tests (#9153)
- [cd33bb6c92](https://github.com/Alfresco/alfresco-ng2-components/commit/cd33bb6c92) [ACS-6323] dynamic content list changing columns order with drag drop (#9146)
- [064c1fd216](https://github.com/Alfresco/alfresco-ng2-components/commit/064c1fd216) [MNT-23166] Make tasks and processes lists resizeable (#9145)
- [f47fb2a7e9](https://github.com/Alfresco/alfresco-ng2-components/commit/f47fb2a7e9) [ACS-6107] Replaced SearchDateRange component with SearchDateRangeAdvanced Component (#9023)
- [88ab336d05](https://github.com/Alfresco/alfresco-ng2-components/commit/88ab336d05) [AAE-18450] fixed form value not updating instantly on radio change (#9141)
- [8fa37a54a7](https://github.com/Alfresco/alfresco-ng2-components/commit/8fa37a54a7) [ACS-6031] Minimum width and tooltip added for column header (#9093)
- [a3fa0f316b](https://github.com/Alfresco/alfresco-ng2-components/commit/a3fa0f316b) [ADF-5570][ADF-5571]Removed important property from &#39;toolbar.component.scss&#39; and &#39;pagination.component.scss&#39; in ADF (#9134)
- [e78bc460de](https://github.com/Alfresco/alfresco-ng2-components/commit/e78bc460de) [AAE-17481] Fix mapping for process leave-request (#9140)
- [db9c3d4cb4](https://github.com/Alfresco/alfresco-ng2-components/commit/db9c3d4cb4) [AAE-17481] Fix processes for the new tests (#9137)
- [e0260d821f](https://github.com/Alfresco/alfresco-ng2-components/commit/e0260d821f) [AAE-17475] Fix processes for Call Activities tests (#9136)
- [c1ad165ef9](https://github.com/Alfresco/alfresco-ng2-components/commit/c1ad165ef9) [AAE-18541] - OAuth - redirect does not work (#9135)
- [065829ef01](https://github.com/Alfresco/alfresco-ng2-components/commit/065829ef01) [ACS-5600] AlfrescoViewerComponent shows the original mimetype (#9095)
- [8a184efc6c](https://github.com/Alfresco/alfresco-ng2-components/commit/8a184efc6c) [AAE-8556] Convert attach file manual test case to unit test (#9108)
- [500c5581f6](https://github.com/Alfresco/alfresco-ng2-components/commit/500c5581f6) [AAE-18541] - OAuth - redirect does not work (#9133)
- [7793aba89e](https://github.com/Alfresco/alfresco-ng2-components/commit/7793aba89e) [ACS-6252] support disabling the tags and categories feature in the applications (#9106)
- [979bf3ac59](https://github.com/Alfresco/alfresco-ng2-components/commit/979bf3ac59) [ACS-6396] cleanup unused CLI code (#9132)
- [7300f74add](https://github.com/Alfresco/alfresco-ng2-components/commit/7300f74add) Fix dependabot.yml (#9120)
- [38a7dc6cb7](https://github.com/Alfresco/alfresco-ng2-components/commit/38a7dc6cb7) ADF release - Notify correct channel (#9116)
- [4313869127](https://github.com/Alfresco/alfresco-ng2-components/commit/4313869127) [ACS-6370] fix js-api version bump (#9119)
- [3daecb1b1c](https://github.com/Alfresco/alfresco-ng2-components/commit/3daecb1b1c) [AAE-18117] Use SHA for GitHub actions (#9113)
- [3cf2ffa7bd](https://github.com/Alfresco/alfresco-ng2-components/commit/3cf2ffa7bd) [AAE-18464] fix bundle check for js-api (#9117)
- [2824b7be50](https://github.com/Alfresco/alfresco-ng2-components/commit/2824b7be50) bump js-api version to 7.4.0 (#9115)
- [3677bfb78e](https://github.com/Alfresco/alfresco-ng2-components/commit/3677bfb78e) [ACS-6370] switch js-api builds to original node.js (#9114)
- [dbe3a7c7db](https://github.com/Alfresco/alfresco-ng2-components/commit/dbe3a7c7db) [ACS-6370] temporary pin ADF cli to js-api 7.2.0 (#9112)
- [869f0296d0](https://github.com/Alfresco/alfresco-ng2-components/commit/869f0296d0) Trigger a new release (#9111)
- [2a7fd89af0](https://github.com/Alfresco/alfresco-ng2-components/commit/2a7fd89af0) [PRODENG-211] fix js-api version bump (#9110)
- [6759e2e9bb](https://github.com/Alfresco/alfresco-ng2-components/commit/6759e2e9bb) [AAE-16041] Removing unneeded tests (#9109)
- [3309ea63f6](https://github.com/Alfresco/alfresco-ng2-components/commit/3309ea63f6) [PRODENG-211] improved ADF CLI compilation (#9105)
- [e97333aabd](https://github.com/Alfresco/alfresco-ng2-components/commit/e97333aabd) [PRODENG-211] reworked version updating (#9104)
- [aa05fc28b5](https://github.com/Alfresco/alfresco-ng2-components/commit/aa05fc28b5) [AAE-18175] Unable to Import Descriptor in HXP Environment (#9097)
- [4b3e101586](https://github.com/Alfresco/alfresco-ng2-components/commit/4b3e101586) [PRODENG-211] update npm bundle check (#9103)
- [8687e86cf6](https://github.com/Alfresco/alfresco-ng2-components/commit/8687e86cf6) [PRODENG-211] update js-api deps (#9102)
- [8839c9563a](https://github.com/Alfresco/alfresco-ng2-components/commit/8839c9563a) bump local js-api to 7.3.0
- [ea2c0ce229](https://github.com/Alfresco/alfresco-ng2-components/commit/ea2c0ce229) [PRODENG-211] integrate JS-API with monorepo (part 1) (#9081)
- [804fa2ffd4](https://github.com/Alfresco/alfresco-ng2-components/commit/804fa2ffd4) [AAE-17480] update application (#9100)
- [d14c116747](https://github.com/Alfresco/alfresco-ng2-components/commit/d14c116747) [MNT-22836] - support PKCE code flow in SSO (#8884)
- [eb8aaecef6](https://github.com/Alfresco/alfresco-ng2-components/commit/eb8aaecef6) [ACS-6328] fix oauth config loading (#9098)
- [001d6ee83d](https://github.com/Alfresco/alfresco-ng2-components/commit/001d6ee83d) [AAE-17859] Convert manual C309872 to unit test (#9077)
- [606abdb4fd](https://github.com/Alfresco/alfresco-ng2-components/commit/606abdb4fd) [AAE-17103] Handle icon type (#9012)
- [4af945123b](https://github.com/Alfresco/alfresco-ng2-components/commit/4af945123b) Revert &#34;[ACS-5311] Notification History Bug Fix (#9011)&#34; (#9096)
+62
View File
@@ -0,0 +1,62 @@
---
Title: Changelog for alfresco-ng2-components v6.7.0
---
# Changelog
- [bd9a9bb90](https://github.com/Alfresco/alfresco-ng2-components/commit/bd9a9bb90) [AAE-19610] Fix duplicated buttons for date-time filter widget (#9382)
- [672f70ac4](https://github.com/Alfresco/alfresco-ng2-components/commit/672f70ac4) AAE-20791 fix task from spinner misaligned to the left (#9381)
- [f7dcab7ad](https://github.com/Alfresco/alfresco-ng2-components/commit/f7dcab7ad) [ACS-6831] Property panel refactoring (#9372)
- [71ef7b940](https://github.com/Alfresco/alfresco-ng2-components/commit/71ef7b940) AAE-20791 fixed task form spinner alignment (#9369)
- [7e68ed9ce](https://github.com/Alfresco/alfresco-ng2-components/commit/7e68ed9ce) [ACS-6817] Size and Modified by is not displayed after editing file/folder properties (#9367)
- [e20f8536c](https://github.com/Alfresco/alfresco-ng2-components/commit/e20f8536c) [MNT-22836] -Docs for Support of PKCE (#9368)
- [86710eb58](https://github.com/Alfresco/alfresco-ng2-components/commit/86710eb58) AAE-14726 add missing style file link (#9359)
- [b5b3ff667](https://github.com/Alfresco/alfresco-ng2-components/commit/b5b3ff667) [ACS-6812] Add new chip only when input value is valid (#9358)
- [37d96e450](https://github.com/Alfresco/alfresco-ng2-components/commit/37d96e450) AAE-19565 add a new custom UI in simpleapp to test GitHub action HylandSoftware/hx-studio-customui-action (#9347)
- [d7fa4143b](https://github.com/Alfresco/alfresco-ng2-components/commit/d7fa4143b) [ACS-5994] perform node deletion in order (#9357)
- [34a399e39](https://github.com/Alfresco/alfresco-ng2-components/commit/34a399e39) [ACS-6565] ADW - Document List View Header - UX Bugs - icon fix (#9349)
- [4c75a6748](https://github.com/Alfresco/alfresco-ng2-components/commit/4c75a6748) Linting fixes (#9348)
- [9b0104fcf](https://github.com/Alfresco/alfresco-ng2-components/commit/9b0104fcf) (#9307) Fix filterExcludedPreset of adf-content-metadata-card configuration to include all excluded properties (#9309)
- [1331a6d7c](https://github.com/Alfresco/alfresco-ng2-components/commit/1331a6d7c) AAE-20420 Update package.json for editor.js (#9344)
- [05d23bc8a](https://github.com/Alfresco/alfresco-ng2-components/commit/05d23bc8a) AAE-20140 Removing material locators from unit tests part 1 (#9345)
- [40d64d299](https://github.com/Alfresco/alfresco-ng2-components/commit/40d64d299) [HXCS-2818] - fix issues with ERROR RangeError: Invalid time value (#9340)
- [a8d547c7b](https://github.com/Alfresco/alfresco-ng2-components/commit/a8d547c7b) [ACS-6722] aca custom aspect property of d date type breaks application (#9331)
- [8d5f3c988](https://github.com/Alfresco/alfresco-ng2-components/commit/8d5f3c988) [ACS-6805] getNodeContent allows adding additional options (#9343)
- [1d3a7b157](https://github.com/Alfresco/alfresco-ng2-components/commit/1d3a7b157) [ACS-6804] Fix upload API file placement when relative path is undefined (#9342)
- [6468298bb](https://github.com/Alfresco/alfresco-ng2-components/commit/6468298bb) AAE-20420 - Use latest editorjs and fix storybook (#9336)
- [16005ef29](https://github.com/Alfresco/alfresco-ng2-components/commit/16005ef29) Create a new widget for decimal type (#9335)
- [300d46dc7](https://github.com/Alfresco/alfresco-ng2-components/commit/300d46dc7) [MNT-24151] - ADW: Users can see some actions Edit Offline&#34; and &#34;Upload New Version&#34; for the declared record - fix (#9339)
- [213a73fc3](https://github.com/Alfresco/alfresco-ng2-components/commit/213a73fc3) [ACS-5483] group details view general info and list of assigned users (#9329)
- [8363d09e7](https://github.com/Alfresco/alfresco-ng2-components/commit/8363d09e7) [ACS-6585] - [ACC] Removing a to be created tag, while the create tag input field has a &#39;Tag already exists&#39; error, removes the error (#9338)
- [31073805e](https://github.com/Alfresco/alfresco-ng2-components/commit/31073805e) [AAE-19913] Add data table process to simpleapp (#9337)
- [1b3b419f7](https://github.com/Alfresco/alfresco-ng2-components/commit/1b3b419f7) AAE-20282 fix submit button enabled when required people/groups widget empty (#9334)
- [2175b4bda](https://github.com/Alfresco/alfresco-ng2-components/commit/2175b4bda) [AAE-20428] - Admin application - header is missing name of the app and user menu (#9333)
- [378b12599](https://github.com/Alfresco/alfresco-ng2-components/commit/378b12599) [ACS-6140] - search-tab-content does not show when changing tab multiple times (#9332)
- [8df2113ce](https://github.com/Alfresco/alfresco-ng2-components/commit/8df2113ce) [AAE-20250] fixed label overlapping input for readonly cardview textitem (#9312)
- [58f4be437](https://github.com/Alfresco/alfresco-ng2-components/commit/58f4be437) [AAE-18758] Consistency with deploy payload in be uats (#9330)
- [c1d933ee9](https://github.com/Alfresco/alfresco-ng2-components/commit/c1d933ee9) [ACS-6643] remove constant max-width value (#9310)
- [01b6bc641](https://github.com/Alfresco/alfresco-ng2-components/commit/01b6bc641) [ACS-5704][Community request] ObjectDataTableAdapter sorting (#9272)
- [cddbcc070](https://github.com/Alfresco/alfresco-ng2-components/commit/cddbcc070) Updated links in release notes doc to be browsable via Web (#9316)
- [6d93d011c](https://github.com/Alfresco/alfresco-ng2-components/commit/6d93d011c) [ACS-6140] - Remove references to internal Angular Material CSS classes (#9271)
- [9343fe65a](https://github.com/Alfresco/alfresco-ng2-components/commit/9343fe65a) [AAE-19968] Field visibility condition using Integer and greater than not working (#9305)
- [a893fafa0](https://github.com/Alfresco/alfresco-ng2-components/commit/a893fafa0) [AAE-19762] Add nonceStateSeparator to authConfig (#9311)
- [7238df106](https://github.com/Alfresco/alfresco-ng2-components/commit/7238df106) [MNT-24151] - ADW: Users can see some actions Edit Offline&#34; and &#34;Upload New Version&#34; for the declared record (#9295)
- [186dab3a4](https://github.com/Alfresco/alfresco-ng2-components/commit/186dab3a4) Add concurrency on release (#9306)
- [efd8e8d0e](https://github.com/Alfresco/alfresco-ng2-components/commit/efd8e8d0e) [HXCS-2818] CardViewDateItem component ignore timezone when displaying dates (#9304)
- [47d1165d5](https://github.com/Alfresco/alfresco-ng2-components/commit/47d1165d5) [AAE-19928] Add storage prefix factory (#9303)
- [311be13f9](https://github.com/Alfresco/alfresco-ng2-components/commit/311be13f9) [AAE-20016] ADF CVE-2024-21626 - update to GHA to use ubuntu-latest (#9297)
- [81c17da09](https://github.com/Alfresco/alfresco-ng2-components/commit/81c17da09) [ACS-6565] ADW - Document List View Header - UX Bugs (#9269)
- [cb7f4ffda](https://github.com/Alfresco/alfresco-ng2-components/commit/cb7f4ffda) [AAE-13305] remove unused authpath (#9294)
- [9e05baf4a](https://github.com/Alfresco/alfresco-ng2-components/commit/9e05baf4a) [AAE-17971] removed unused dep (#9292)
- [a54b2bd45](https://github.com/Alfresco/alfresco-ng2-components/commit/a54b2bd45) [AAE-15294] add missing token class to cloud group component (#9293)
- [3aaf8f1fe](https://github.com/Alfresco/alfresco-ng2-components/commit/3aaf8f1fe) [AAE-15206] add missing label to task assignment filter (#9291)
- [2e4afa07f](https://github.com/Alfresco/alfresco-ng2-components/commit/2e4afa07f) [HXCS-2988] fix dates in CardViweDateItemComponent (#9276)
- [9473f7681](https://github.com/Alfresco/alfresco-ng2-components/commit/9473f7681) [AAE-15298] added tokens to HeaderLayout (#9074)
- [3b2da7861](https://github.com/Alfresco/alfresco-ng2-components/commit/3b2da7861) [APPS-2230] fix documentation tools builds (#9277)
- [2c627f116](https://github.com/Alfresco/alfresco-ng2-components/commit/2c627f116) [ACS-6620] Proper viewer extension template projection to viewer renderer (#9273)
- [5ec822850](https://github.com/Alfresco/alfresco-ng2-components/commit/5ec822850) [ACS-6659] cleanup unused docs utils (#9274)
- [69f24a17f](https://github.com/Alfresco/alfresco-ng2-components/commit/69f24a17f) AAE-19600 Inconsistency between UI model name and name stored in json file (#9252)
- [d61c20cf1](https://github.com/Alfresco/alfresco-ng2-components/commit/d61c20cf1) ACS-5975 change getting tasks in tasklist component and service (#8987)
- [a7e793450](https://github.com/Alfresco/alfresco-ng2-components/commit/a7e793450) [ACA-4729] Add infinite scroll to version list (#9248)
- [2c0ad7137](https://github.com/Alfresco/alfresco-ng2-components/commit/2c0ad7137) [ACS-6489] Add resizable option for column data model (#9220)
- [62bc8423a](https://github.com/Alfresco/alfresco-ng2-components/commit/62bc8423a) [AAE-19542] Fix infinite loop when code flow is enabled (#9193)
+12
View File
@@ -12,6 +12,7 @@ backend services have been tested with each released version of ADF.
## Versions
- [v6.7.0](#v670)
- [v6.4.0](#v640)
- [v6.2.0](#v620)
- [v6.1.0](#v610)
@@ -44,6 +45,17 @@ backend services have been tested with each released version of ADF.
- [v2.1.0](#v210)
- [v2.0.0](#v200)
## v6.7.0
<!--670 start-->
- [Dynamic Chip List component](core/components/dynamic-chip-list.component.md)
- [Unsaved Changes Dialog component](core/dialogs/unsaved-changes-dialog.component.md)
- [Unsaved Changes guard](core/services/unsaved-changes.guard.md)
- [Group Service](content-services/services/group.service.md)
<!--670 end-->
## v6.4.0
<!--v640 start-->
+1
View File
@@ -42,3 +42,4 @@ The pages linked below contain the audit for all third party dependencies of ADF
- [ADF 6.5.1](audit-info-6.5.1.md)
- [ADF 6.5.2](audit-info-6.5.2.md)
- [ADF 6.6.0](audit-info-6.6.0.md)
- [ADF 6.7.0](audit-info-6.7.0.md)
+26
View File
@@ -0,0 +1,26 @@
---
Title: Audit info, alfresco-ng2-components 6.7.0
---
# Audit information for alfresco-ng2-components 6.7.0
This page lists the security audit of the dependencies this project depends on.
## Risks
- Critical risk: 0
- High risk: 2
- Moderate risk: 1
- Low risk: 0
Dependencies analyzed:
## Libraries
| Severity | Module | Vulnerable versions |
| --- | --- | --- |
|high | angular-oauth2-oidc-jwks | &#34;*&#34; |
|high | jsrsasign | &#34;&lt;11.0.0&#34; |
|moderate | semver | &#34;7.0.0 - 7.5.1&#34; |
Binary file not shown.
Binary file not shown.
+29 -9
View File
@@ -1,15 +1,15 @@
{
"name": "@alfresco/adf-cli",
"version": "6.6.0",
"version": "6.7.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "@alfresco/adf-cli",
"version": "6.6.0",
"version": "6.7.0",
"license": "Apache-2.0",
"dependencies": {
"@alfresco/js-api": ">=7.2.0",
"@alfresco/js-api": ">=7.5.0",
"commander": "^6.2.1",
"ejs": "^3.1.9",
"license-checker": "^25.0.1",
@@ -30,9 +30,9 @@
}
},
"node_modules/@alfresco/js-api": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/@alfresco/js-api/-/js-api-7.2.0.tgz",
"integrity": "sha512-/Tr88IO1s1cV8RC6X9EZ2jixPJ5IQQZWR6heN406l0/eqHxroXUGShRfNZxNLZBkMn0b3uiqnAxjNo2HmB+xug==",
"version": "7.5.0",
"resolved": "https://registry.npmjs.org/@alfresco/js-api/-/js-api-7.5.0.tgz",
"integrity": "sha512-zDjqeEF5zX8DfnSAjM/e+uOf0PdVb67vDWF0Zv/lWjxtezerRdLW/P6BHjxqTscE1VAeGUdALzX5R7e+RZcHDw==",
"dependencies": {
"event-emitter": "^0.3.5",
"superagent": "^8.0.9",
@@ -267,13 +267,14 @@
}
},
"node_modules/es5-ext": {
"version": "0.10.62",
"resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.62.tgz",
"integrity": "sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA==",
"version": "0.10.63",
"resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.63.tgz",
"integrity": "sha512-hUCZd2Byj/mNKjfP9jXrdVZ62B8KuA/VoK7X8nUh5qT+AxDmcbvZz041oDVZdbIN1qW6XY9VDNwzkvKnZvK2TQ==",
"hasInstallScript": true,
"dependencies": {
"es6-iterator": "^2.0.3",
"es6-symbol": "^3.1.3",
"esniff": "^2.0.1",
"next-tick": "^1.1.0"
},
"engines": {
@@ -307,6 +308,25 @@
"node": ">=0.8.0"
}
},
"node_modules/esniff": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/esniff/-/esniff-2.0.1.tgz",
"integrity": "sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg==",
"dependencies": {
"d": "^1.0.1",
"es5-ext": "^0.10.62",
"event-emitter": "^0.3.5",
"type": "^2.7.2"
},
"engines": {
"node": ">=0.10"
}
},
"node_modules/esniff/node_modules/type": {
"version": "2.7.2",
"resolved": "https://registry.npmjs.org/type/-/type-2.7.2.tgz",
"integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw=="
},
"node_modules/event-emitter": {
"version": "0.3.5",
"resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz",
+2 -2
View File
@@ -1,7 +1,7 @@
{
"name": "@alfresco/adf-cli",
"description": "Alfresco ADF cli and utils",
"version": "6.6.0",
"version": "6.7.0",
"author": "Hyland Software, Inc. and its affiliates",
"bin": {
"adf-cli": "./bin/adf-cli",
@@ -20,7 +20,7 @@
"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": ">=7.5.0",
"@alfresco/js-api": ">=7.6.0",
"commander": "^6.2.1",
"ejs": "^3.1.9",
"license-checker": "^25.0.1",
+1 -1
View File
@@ -214,7 +214,7 @@ export const ACTIVITI_CLOUD_APPS: any = {
},
security: [
{ role: 'ACTIVITI_ADMIN', groups: [], users: ['processadminuser'] },
{ role: 'ACTIVITI_USER', groups: [], users: ['hruser', 'salesuser', 'testadmin', 'testuser'] }
{ role: 'ACTIVITI_USER', groups: ['sales', 'testgroup'], users: ['hruser', 'salesuser', 'testadmin', 'testuser'] }
]
}
};
+3 -3
View File
@@ -1,7 +1,7 @@
{
"name": "@alfresco/adf-content-services",
"description": "Alfresco ADF content services",
"version": "6.6.0",
"version": "6.7.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": ">=7.5.0",
"@alfresco/js-api": ">=7.6.0",
"@ngx-translate/core": ">=14.0.0",
"@alfresco/adf-core": ">=6.6.0"
"@alfresco/adf-core": ">=6.7.0"
},
"keywords": [
"content-services",
@@ -13,7 +13,7 @@
</adf-aspect-list>
</mat-dialog-content>
<mat-dialog-actions>
<mat-dialog-actions class="adf-aspect-list-dialog">
<div>
<button mat-button (click)="aspectList.reset()" id="aspect-list-dialog-actions-reset"
data-automation-id="aspect-list-dialog-actions-reset">{{
@@ -19,21 +19,25 @@
}
&-aspect-list-dialog {
.mat-dialog-actions {
justify-content: space-between;
}
justify-content: space-between;
}
&-aspect-dialog-content {
padding-top: 3px;
.adf-aspect-property-table {
.mat-cell {
.adf-aspect-property-table-cell {
font-size: smaller;
}
.mat-column-name {
width: 30%;
.adf-aspect-property-table-column {
&-name {
width: 30%;
}
&-title {
width: 50%;
}
}
}
}
@@ -1,8 +1,11 @@
<div id="aspect-list-container" class="adf-aspect-list-container" *ngIf="aspects$ | async as aspects; else loading">
<mat-accordion class="adf-accordion-aspect-list">
<mat-expansion-panel *ngFor="let aspect of aspects; let colIndex = index" [id]="'aspect-list-'+getId(aspect)">
<mat-expansion-panel-header [id]="'aspect-list-'+(getId(aspect))+'header'">
<mat-panel-title>
<mat-expansion-panel *ngFor="let aspect of aspects; let colIndex = index"
[id]="'aspect-list-'+getId(aspect)"
class="adf-accordion-aspect-list-expansion-panel">
<mat-expansion-panel-header class='adf-accordion-aspect-list-expansion-panel-header'
[id]="'aspect-list-'+(getId(aspect))+'header'">
<mat-panel-title class="adf-accordion-aspect-list-expansion-panel-header-title">
<mat-checkbox class="adf-aspect-list-check-button" [id]="'aspect-list-'+colIndex+'-check'"
[checked]="nodeAspects?.includes(aspect?.entry?.id)"
(click)="onCheckBoxClick($event)"
@@ -10,8 +13,10 @@
<p class="adf-aspect-list-element-title">{{getTitle(aspect)}}</p>
</mat-checkbox>
</mat-panel-title>
<mat-panel-description [id]="'aspect-list-'+colIndex+'-title'"
[matTooltip]="getTitle(aspect)">
<mat-panel-description
class="adf-accordion-aspect-list-expansion-panel-header-description"
[id]="'aspect-list-'+colIndex+'-title'"
[matTooltip]="getTitle(aspect)">
{{getTitle(aspect)}}
</mat-panel-description>
</mat-expansion-panel-header>
@@ -19,16 +24,16 @@
<table mat-table [dataSource]="aspect?.entry?.properties" *ngIf="aspect?.entry?.properties?.length > 0" class="adf-aspect-property-table" [id]="'aspect-list-'+colIndex+'-properties-table'">
<ng-container matColumnDef="name">
<th mat-header-cell *matHeaderCellDef> {{'ADF-ASPECT-LIST.PROPERTY_NAME' | translate}} </th>
<td mat-cell *matCellDef="let property"> {{property.id}} </td>
<th class="adf-aspect-property-table-column-name" mat-header-cell *matHeaderCellDef> {{'ADF-ASPECT-LIST.PROPERTY_NAME' | translate}} </th>
<td class="adf-aspect-property-table-column-name adf-aspect-property-table-cell" mat-cell *matCellDef="let property"> {{property.id}} </td>
</ng-container>
<ng-container matColumnDef="title">
<th mat-header-cell *matHeaderCellDef> {{'ADF-ASPECT-LIST.DESCRIPTION' | translate}} </th>
<td mat-cell *matCellDef="let property"> {{property.title}} </td>
<th class="adf-aspect-property-table-column-title" mat-header-cell *matHeaderCellDef> {{'ADF-ASPECT-LIST.DESCRIPTION' | translate}} </th>
<td class="adf-aspect-property-table-column-title adf-aspect-property-table-cell" mat-cell *matCellDef="let property"> {{property.title}} </td>
</ng-container>
<ng-container matColumnDef="dataType">
<th mat-header-cell *matHeaderCellDef> {{'ADF-ASPECT-LIST.DATA_TYPE' | translate}} </th>
<td mat-cell *matCellDef="let property"> {{property.dataType}} </td>
<th class="adf-aspect-property-table-column-data-type" mat-header-cell *matHeaderCellDef> {{'ADF-ASPECT-LIST.DATA_TYPE' | translate}} </th>
<td class="adf-aspect-property-table-column-data-type adf-aspect-property-table-cell" mat-cell *matCellDef="let property"> {{property.dataType}} </td>
</ng-container>
<tr mat-header-row *matHeaderRowDef="propertyColumns"></tr>
<tr mat-row *matRowDef="let row; columns: propertyColumns;"></tr>
@@ -23,20 +23,18 @@
align-items: center;
}
.adf-accordion-aspect-list {
.mat-expansion-panel-spacing {
margin: 0;
}
.adf-accordion-aspect-list-expansion-panel {
margin: 0;
.mat-expansion-panel-header {
&-header {
font-size: smaller;
}
.mat-expansion-panel-header-title {
&-header-title {
flex: 1 1 0;
}
.mat-expansion-panel-header-description {
&-header-description {
justify-content: flex-start;
align-items: center;
flex: 1 1 0;
@@ -50,17 +48,19 @@
&-aspect-property-table {
width: 100%;
.mat-column-name {
width: 15%;
}
.adf-aspect-property-table-column {
&-name {
width: 15%;
}
.mat-column-description {
width: 65%;
}
&-title {
width: 65%;
}
.mat-column-type {
width: 20%;
padding-left: 10px;
&-data-type {
width: 20%;
padding-left: 10px;
}
}
}
}
@@ -23,10 +23,6 @@
height: 0;
overflow: hidden;
margin-top: 35px;
&.mat-select {
width: 0;
}
}
&-trigger {
@@ -100,18 +96,6 @@
font-size: var(--theme-adf-icon-1-font-size);
}
&.mat-primary {
color: var(--theme-primary-color);
}
&.mat-accent {
color: var(--theme-accent-color);
}
&.mat-warn {
color: var(--theme-warn-color);
}
&-anchor {
box-sizing: border-box;
color: inherit;
@@ -122,7 +106,7 @@
text-overflow: ellipsis;
overflow: hidden;
flex: 0 1 auto;
padding: 0 2px;
padding: 0;
text-align: center;
&:focus {
@@ -9,15 +9,16 @@
(click)="open()"
[attr.aria-label]="'BREADCRUMB.ARIA-LABEL.DROPDOWN' | translate"
data-automation-id="dropdown-breadcrumb-trigger">
<mat-icon [class.adf-isRoot]="!hasPreviousNodes()">folder</mat-icon>
<mat-icon class="adf-dropdown-breadcrumb-icon" [class.adf-isRoot]="!hasPreviousNodes()">folder</mat-icon>
</button>
<mat-icon class="adf-dropdown-breadcrumb-item-chevron">chevron_right</mat-icon>
<mat-icon class="adf-dropdown-breadcrumb-icon adf-dropdown-breadcrumb-item-chevron">chevron_right</mat-icon>
<div class="adf-dropdown-breadcrumb-path">
<mat-select
#dropdown
*ngIf="hasPreviousNodes()"
class="adf-dropdown-breadcrumb-path-select"
tabindex="-1"
data-automation-id="dropdown-breadcrumb-path"
aria-labelledby="dropdown-breadcrumb-button">
@@ -26,7 +27,7 @@
*ngFor="let node of previousNodes;"
(click)="onRoutePathClick(node, $event)"
(onSelectionChange)="onRouteClick(node)"
class="adf-dropdown-breadcrumb-path-option"
class="adf-dropdown-breadcrumb-path-option adf-dropdown-breadcrumb-path-option-node"
data-automation-class="dropdown-breadcrumb-path-option"
[disabled]="readOnly">
{{ node.name | translate }}
@@ -12,7 +12,7 @@ $dropdown-horizontal-offset: 30px;
overflow: hidden;
margin-top: 10px;
.mat-icon {
&-icon {
height: 35px;
}
@@ -49,7 +49,7 @@ $dropdown-horizontal-offset: 30px;
overflow: hidden;
margin-top: 35px;
&.mat-select {
&-select {
width: 0;
}
}
@@ -63,18 +63,18 @@ $dropdown-horizontal-offset: 30px;
color: var(--adf-theme-foreground-text-color);
}
&-dropdown-breadcrumb-path-option.mat-option {
&-dropdown-breadcrumb-path-option.adf-dropdown-breadcrumb-path-option-node {
height: 28px;
line-height: 28px;
padding: 0 12px;
font-size: var(--theme-caption-font-size);
}
&-dropdown-breadcrumb-path-option.mat-option:first-child {
&-dropdown-breadcrumb-path-option.adf-dropdown-breadcrumb-path-option-node:first-child {
padding-top: 4px;
}
&-dropdown-breadcrumb-path-option.mat-option:last-child {
&-dropdown-breadcrumb-path-option.adf-dropdown-breadcrumb-path-option-node:last-child {
padding-bottom: 4px;
}
}
@@ -43,24 +43,25 @@
<p class="adf-existing-categories-label">
{{ existingCategoriesMsg | translate }}
</p>
<mat-selection-list
<mat-list
[disabled]="isCRUDMode"
(selectionChange)="addCategoryToAssign($event)">
<mat-list-option
class="adf-categories-management-list">
<mat-list-item
*ngFor="let category of existingCategories"
class="adf-category"
[value]="category">
(click)='addCategoryToAssign(category)'>
{{ category.name }}
</mat-list-option>
</mat-list-item>
<p *ngIf="!existingCategories?.length && !existingCategoriesLoading"
data-automation-id="no-categories-message">
{{ 'CATEGORIES_MANAGEMENT.NO_EXISTING_CATEGORIES' | translate }}
</p>
</mat-selection-list>
</mat-list>
</ng-container>
<mat-spinner
*ngIf="existingCategoriesLoading"
[diameter]="50"
class="adf-categories-management-spinner"
[attr.aria-label]="'CATEGORIES_MANAGEMENT.LOADING' | translate">
</mat-spinner>
</div>
@@ -37,26 +37,20 @@
}
.adf-categories-list {
.mat-list-base .mat-list-item,
.mat-list-base .mat-list-option {
.adf-categories-management-list .adf-category {
display: flex;
height: 100%;
overflow-wrap: anywhere;
padding: 5px 0;
font-size: 14px;
&.mat-list-item-disabled {
background-color: inherit;
color: inherit;
&:hover {
cursor: pointer;
background: var(--adf-theme-mat-grey-color-a200);
}
.mat-list-item-content,
.mat-list-item-content-reverse {
& span {
padding: 0;
.mat-pseudo-checkbox {
display: none;
}
}
}
@@ -66,7 +60,7 @@
margin-bottom: 2px;
}
mat-spinner {
.adf-categories-management-spinner {
margin: auto;
}
}
@@ -19,7 +19,7 @@ import { Category, CategoryPaging, ResultNode, ResultSetPaging } from '@alfresco
import { ComponentFixture, discardPeriodicTasks, fakeAsync, flush, TestBed, tick } from '@angular/core/testing';
import { Validators } from '@angular/forms';
import { MatError } from '@angular/material/form-field';
import { MatListOption, MatSelectionList } from '@angular/material/list';
import { MatList } from '@angular/material/list';
import { By } from '@angular/platform-browser';
import { TranslateModule } from '@ngx-translate/core';
import { of, Subject } from 'rxjs';
@@ -91,8 +91,8 @@ describe('CategoriesManagementComponent', () => {
*
* @returns list of material option element
*/
function getExistingCategoriesList(): MatListOption[] {
return fixture.debugElement.queryAll(By.directive(MatListOption))?.map((debugElem) => debugElem.componentInstance);
function getExistingCategoriesList(): HTMLElement[] {
return fixture.debugElement.queryAll(By.css('.adf-category'))?.map((debugElem) => debugElem.nativeElement);
}
/**
@@ -129,8 +129,8 @@ describe('CategoriesManagementComponent', () => {
*
* @returns material selection list
*/
function getSelectionList(): MatSelectionList {
return fixture.debugElement.query(By.directive(MatSelectionList)).componentInstance;
function getSelectionList(): MatList {
return fixture.debugElement.query(By.directive(MatList)).componentInstance;
}
/**
@@ -159,7 +159,7 @@ describe('CategoriesManagementComponent', () => {
* @returns native element
*/
function getCreateCategoryLabel(): HTMLSpanElement {
return fixture.debugElement.query(By.css('.adf-existing-categories-panel span'))?.nativeElement;
return fixture.debugElement.query(By.css('.adf-create-category-label'))?.nativeElement;
}
/**
@@ -323,7 +323,7 @@ describe('CategoriesManagementComponent', () => {
it('should not display create category label', fakeAsync(() => {
typeCategory('test');
fixture.detectChanges();
expect(getCreateCategoryLabel()).toBeUndefined();
}));
@@ -338,7 +338,7 @@ describe('CategoriesManagementComponent', () => {
typeCategory('test');
const options = getExistingCategoriesList();
// eslint-disable-next-line no-underscore-dangle
options[0]._handleClick();
options[0].click();
expect(component.categories.length).toBe(3);
expect(component.categories[2].name).toBe('testCat');
@@ -352,7 +352,7 @@ describe('CategoriesManagementComponent', () => {
typeCategory('test');
const options = getExistingCategoriesList();
// eslint-disable-next-line no-underscore-dangle
options[0]._handleClick();
options[0].click();
fixture.detectChanges();
const categoriesChangeSpy = spyOn(component.categoriesChange, 'emit').and.callThrough();
@@ -18,7 +18,6 @@
import { Category } from '@alfresco/js-api';
import { Component, ElementRef, EventEmitter, Input, OnDestroy, OnInit, Output, ViewChild, ViewEncapsulation } from '@angular/core';
import { FormControl, Validators } from '@angular/forms';
import { MatSelectionListChange } from '@angular/material/list';
import { EMPTY, Observable, Subject, timer } from 'rxjs';
import { debounce, first, map, takeUntil, tap } from 'rxjs/operators';
import { CategoriesManagementMode } from './categories-management-mode';
@@ -229,10 +228,10 @@ export class CategoriesManagementComponent implements OnInit, OnDestroy {
/**
* Adds existing category to categories list and removes it from existing categories list.
*
* @param change - selection list change containing selected category
* @param category - selection list change containing selected category
*/
addCategoryToAssign(change: MatSelectionListChange) {
const selectedCategory: Category = change.options[0].value;
addCategoryToAssign(category: Category) {
const selectedCategory: Category = category;
this.categories.push(selectedCategory);
this._existingCategories.splice(this._existingCategories.indexOf(selectedCategory), 1);
this.categoryNameControl.updateValueAndValidity();
@@ -133,23 +133,25 @@ describe('ContentService', () => {
describe('Node Icons', () => {
let node: Node;
node = {
isFolder: true,
isFile: false,
createdByUser: { id: 'admin', displayName: 'Administrator' },
modifiedAt: new Date('2017-05-24T15:08:55.640Z'),
nodeType: 'cm:content',
content: {
mimeType: 'application/rtf',
mimeTypeName: 'Rich Text Format',
sizeInBytes: 14530
},
createdAt: new Date('2017-05-24T15:08:55.640Z'),
modifiedByUser: { id: 'admin', displayName: 'Administrator' },
name: 'b_txt_file.rtf',
id: 'test node 1',
aspectNames: ['']
} as Node;
beforeEach(() => {
node = {
isFolder: true,
isFile: false,
createdByUser: { id: 'admin', displayName: 'Administrator' },
modifiedAt: new Date('2017-05-24T15:08:55.640Z'),
nodeType: 'cm:content',
content: {
mimeType: 'application/rtf',
mimeTypeName: 'Rich Text Format',
sizeInBytes: 14530
},
createdAt: new Date('2017-05-24T15:08:55.640Z'),
modifiedByUser: { id: 'admin', displayName: 'Administrator' },
name: 'b_txt_file.rtf',
id: 'test node 1',
aspectNames: ['']
} as Node;
});
it('should resolve folder icon', () => {
expect(contentService.getNodeIcon(node)).toContain('assets/images/ft_ic_folder.svg');
@@ -1,5 +1,5 @@
<mat-card *ngIf="node">
<mat-card-content>
<mat-card *ngIf="node" class="adf-content-metadata-card-view">
<mat-card-content class="adf-content-metadata-card-view-content">
<adf-content-metadata
[displayDefaultProperties]="displayDefaultProperties"
[expanded]="expanded"
@@ -14,7 +14,7 @@
[customPanels]="customPanels">
</adf-content-metadata>
</mat-card-content>
<mat-card-footer class="adf-content-metadata-card-footer">
<mat-card-footer class="adf-content-metadata-card-footer adf-content-metadata-card-view-footer">
<div>
<button *ngIf="isEditAspectSupported()"
mat-icon-button
@@ -1,13 +1,13 @@
.adf-content-metadata-card {
.mat-card {
.adf-content-metadata-card-view {
padding: 0;
.mat-card-content {
.adf-content-metadata-card-view-content {
margin-bottom: 0;
}
}
&-footer.mat-card-footer {
&-footer.adf-content-metadata-card-view-footer {
margin: 0;
padding: 8px 12px;
border-top: 1px solid var(--adf-theme-foreground-text-color-007);
@@ -31,10 +31,13 @@ import { TranslateModule } from '@ngx-translate/core';
adf-content-metadata-header {
display: flex;
align-items: center;
flex: 1;
width: 100%;
}
.adf-metadata-properties-title {
display: block;
overflow: hidden;
text-overflow: ellipsis;
font-weight: 700;
font-size: 15px;
padding-left: 12px;
@@ -44,7 +47,7 @@ import { TranslateModule } from '@ngx-translate/core';
template: `
<ng-container>
<mat-icon>{{ expanded ? 'expand_more' : 'chevron_right' }}</mat-icon>
<mat-panel-title *ngIf="title" class="adf-metadata-properties-title">{{ title | translate }}</mat-panel-title>
<mat-panel-title *ngIf="title" class="adf-metadata-properties-title" [title]="title | translate">{{ title | translate }}</mat-panel-title>
<ng-content></ng-content>
</ng-container>
`
@@ -2,43 +2,53 @@
<mat-expansion-panel
*ngIf="displayDefaultProperties"
class="adf-content-metadata-panel"
[(expanded)]="isGeneralPanelExpanded"
[expanded]="currentPanel.panelTitle === DefaultPanels.PROPERTIES && currentPanel.expanded"
(opened)="expandPanel(DefaultPanels.PROPERTIES)"
(closed)="closePanel(DefaultPanels.PROPERTIES)"
[attr.data-automation-id]="'adf-metadata-group-properties'"
hideToggle>
<mat-expansion-panel-header>
<adf-content-metadata-header [title]="'CORE.METADATA.BASIC.HEADER'" [expanded]="isGeneralPanelExpanded">
<button *ngIf="canEditGeneralInfo"
mat-icon-button
(click)="onToggleGeneralInfoEdit($event)"
[attr.title]="'CORE.METADATA.ACTIONS.EDIT' | translate"
[attr.aria-label]="'CORE.METADATA.ACCESSIBILITY.EDIT' | translate"
data-automation-id="meta-data-general-info-edit"
class="adf-edit-icon-buttons">
<mat-expansion-panel-header
class="adf-metadata-properties-header"
[class.adf-metadata-properties-header-expanded]="currentPanel.panelTitle === DefaultPanels.PROPERTIES && currentPanel.expanded">
<adf-content-metadata-header
[title]="'CORE.METADATA.BASIC.HEADER'"
[expanded]="currentPanel.panelTitle === DefaultPanels.PROPERTIES && currentPanel.expanded">
<button
*ngIf="!readOnly && !isPanelEditing(DefaultPanels.PROPERTIES)"
mat-icon-button
(click)="toggleGroupEditing(DefaultPanels.PROPERTIES, $event)"
[attr.title]="'CORE.METADATA.ACTIONS.EDIT' | translate"
[attr.aria-label]="'CORE.METADATA.ACCESSIBILITY.EDIT' | translate"
data-automation-id="meta-data-general-info-edit"
class="adf-edit-icon-buttons">
<mat-icon>mode_edit</mat-icon>
</button>
<div *ngIf="isEditingGeneralInfo" class="adf-metadata-action-buttons">
<button mat-icon-button
[attr.title]="'CORE.METADATA.ACTIONS.CANCEL' | translate"
(click)="onCancelGeneralInfoEdit($event)"
data-automation-id="reset-metadata"
class="adf-metadata-action-buttons-clear">
<div *ngIf="isPanelEditing(DefaultPanels.PROPERTIES)" class="adf-metadata-action-buttons">
<button
mat-icon-button
[attr.title]="'CORE.METADATA.ACTIONS.CANCEL' | translate"
(click)="cancelGroupEditing(DefaultPanels.PROPERTIES, $event)"
data-automation-id="reset-metadata"
class="adf-metadata-action-buttons-clear">
<mat-icon>clear</mat-icon>
</button>
<button mat-icon-button
[attr.title]="'CORE.METADATA.ACTIONS.SAVE' | translate"
(click)="onSaveGeneralInfoChanges($event)"
color="primary"
data-automation-id="save-general-info-metadata"
[disabled]="!hasMetadataChanged">
<button
mat-icon-button
[attr.title]="'CORE.METADATA.ACTIONS.SAVE' | translate"
(click)="saveChanges($event)"
color="primary"
data-automation-id="save-general-info-metadata"
[disabled]="!hasMetadataChanged">
<mat-icon>check</mat-icon>
</button>
</div>
</adf-content-metadata-header>
</mat-expansion-panel-header>
<adf-card-view
class="adf-metadata-properties-expansion-panel"
(keydown)="keyDown($event)"
[properties]="basicProperties$ | async"
[editable]="isEditingModeGeneralInfo"
[editable]="!readOnly && isPanelEditing(DefaultPanels.PROPERTIES)"
[displayEmpty]="displayEmpty"
[copyToClipboardAction]="copyToClipboardAction"
[useChipsForMultiValueProperty]="useChipsForMultiValueProperty"
@@ -47,47 +57,58 @@
</mat-expansion-panel>
<ng-container *ngIf="displayTags">
<mat-expansion-panel hideToggle [(expanded)]="isTagPanelExpanded" class="adf-content-metadata-panel">
<mat-expansion-panel-header>
<adf-content-metadata-header [title]="'METADATA.BASIC.TAGS'" [expanded]="isTagPanelExpanded">
<button *ngIf="canEditTags"
mat-icon-button
(click)="onToggleTagsEdit($event)"
[attr.title]="'CORE.METADATA.ACTIONS.EDIT' | translate"
[attr.aria-label]="'CORE.METADATA.ACCESSIBILITY.EDIT' | translate"
data-automation-id="showing-tag-input-button"
class="adf-edit-icon-buttons">
<mat-expansion-panel
hideToggle
[expanded]="currentPanel.panelTitle === DefaultPanels.TAGS && currentPanel.expanded"
(opened)="expandPanel(DefaultPanels.TAGS)"
(closed)="closePanel(DefaultPanels.TAGS)"
class="adf-content-metadata-panel"
data-automation-id="adf-content-metadata-tags-panel">
<mat-expansion-panel-header
class="adf-metadata-properties-header"
[class.adf-metadata-properties-header-expanded]="currentPanel.panelTitle === DefaultPanels.TAGS && currentPanel.expanded">
<adf-content-metadata-header [title]="'METADATA.BASIC.TAGS'" [expanded]="currentPanel.panelTitle === DefaultPanels.TAGS && currentPanel.expanded">
<button
*ngIf="!readOnly && !isPanelEditing(DefaultPanels.TAGS)"
mat-icon-button
(click)="toggleGroupEditing(DefaultPanels.TAGS, $event)"
[attr.title]="'CORE.METADATA.ACTIONS.EDIT' | translate"
[attr.aria-label]="'CORE.METADATA.ACCESSIBILITY.EDIT' | translate"
data-automation-id="showing-tag-input-button"
class="adf-edit-icon-buttons">
<mat-icon>mode_edit</mat-icon>
</button>
<div *ngIf="isEditingTags" class="adf-metadata-action-buttons">
<button mat-icon-button
[attr.title]="'CORE.METADATA.ACTIONS.CANCEL' | translate"
(click)="onCancelTagsEdit($event)"
data-automation-id="reset-tags-metadata"
class="adf-metadata-action-buttons-clear">
<div *ngIf="isPanelEditing(DefaultPanels.TAGS)" class="adf-metadata-action-buttons">
<button
mat-icon-button
[attr.title]="'CORE.METADATA.ACTIONS.CANCEL' | translate"
(click)="cancelGroupEditing(DefaultPanels.TAGS, $event)"
data-automation-id="reset-tags-metadata"
class="adf-metadata-action-buttons-clear">
<mat-icon>clear</mat-icon>
</button>
<button mat-icon-button
[attr.title]="'CORE.METADATA.ACTIONS.SAVE' | translate"
(click)="onSaveTagsChanges($event)"
color="primary"
data-automation-id="save-tags-metadata"
[disabled]="!hasMetadataChanged">
<button
mat-icon-button
[attr.title]="'CORE.METADATA.ACTIONS.SAVE' | translate"
(click)="saveChanges($event)"
color="primary"
data-automation-id="save-tags-metadata"
[disabled]="!hasMetadataChanged">
<mat-icon>check</mat-icon>
</button>
</div>
</adf-content-metadata-header>
</adf-content-metadata-header>
</mat-expansion-panel-header>
<div *ngIf="!isEditingModeTags" class="adf-metadata-properties-tags">
<div *ngIf="currentPanel.panelTitle === DefaultPanels.TAGS && !editing" class="adf-metadata-properties-tags">
<span *ngFor="let tag of tags" class="adf-metadata-properties-tag">{{ tag }}</span>
</div>
<div *ngIf="showEmptyTagMessage" class="adf-metadata-no-item-added">
{{ 'METADATA.BASIC.NO_TAGS_ADDED' | translate }}
</div>
<adf-tags-creator
*ngIf="isEditingModeTags"
*ngIf="!readOnly && isPanelEditing(DefaultPanels.TAGS)"
class="adf-metadata-properties-tags"
[tagNameControlVisible]="tagNameControlVisible"
[tagNameControlVisible]="editing"
(tagsChange)="storeTagsToAssign($event)"
[mode]="tagsCreatorMode"
[tags]="assignedTags"
@@ -97,47 +118,60 @@
</ng-container>
<ng-container *ngIf="displayCategories">
<mat-expansion-panel hideToggle [(expanded)]="isCategoriesPanelExpanded" class="adf-content-metadata-panel">
<mat-expansion-panel-header>
<adf-content-metadata-header [title]="'CATEGORIES_MANAGEMENT.CATEGORIES_TITLE'" [expanded]="isCategoriesPanelExpanded">
<button *ngIf="canEditCategories"
mat-icon-button
(click)="onToggleCategoriesEdit($event)"
[attr.title]="'CORE.METADATA.ACTIONS.EDIT' | translate"
[attr.aria-label]="'CORE.METADATA.ACCESSIBILITY.EDIT' | translate"
data-automation-id="meta-data-categories-edit"
class="adf-categories-button adf-edit-icon-buttons">
<mat-expansion-panel
hideToggle
[expanded]="currentPanel.panelTitle === DefaultPanels.CATEGORIES && currentPanel.expanded"
(opened)="expandPanel(DefaultPanels.CATEGORIES)"
(closed)="closePanel(DefaultPanels.CATEGORIES)"
class="adf-content-metadata-panel"
data-automation-id="adf-content-metadata-categories-panel">
<mat-expansion-panel-header
class="adf-metadata-properties-header"
[class.adf-metadata-properties-header-expanded]="currentPanel.panelTitle === DefaultPanels.CATEGORIES && currentPanel.expanded">
<adf-content-metadata-header
[title]="'CATEGORIES_MANAGEMENT.CATEGORIES_TITLE'"
[expanded]="currentPanel.panelTitle === DefaultPanels.CATEGORIES && currentPanel.expanded">
<button
*ngIf="!readOnly && !isPanelEditing(DefaultPanels.CATEGORIES)"
mat-icon-button
(click)="toggleGroupEditing(DefaultPanels.CATEGORIES, $event)"
[attr.title]="'CORE.METADATA.ACTIONS.EDIT' | translate"
[attr.aria-label]="'CORE.METADATA.ACCESSIBILITY.EDIT' | translate"
data-automation-id="meta-data-categories-edit"
class="adf-categories-button adf-edit-icon-buttons">
<mat-icon>mode_edit</mat-icon>
</button>
<div *ngIf="isEditingCategories" class="adf-metadata-action-buttons">
<button mat-icon-button
[attr.title]="'CORE.METADATA.ACTIONS.CANCEL' | translate"
(click)="onCancelCategoriesEdit($event)"
data-automation-id="reset-metadata"
class="adf-metadata-action-buttons-clear">
<div *ngIf="isPanelEditing(DefaultPanels.CATEGORIES)" class="adf-metadata-action-buttons">
<button
mat-icon-button
[attr.title]="'CORE.METADATA.ACTIONS.CANCEL' | translate"
(click)="cancelGroupEditing(DefaultPanels.CATEGORIES, $event)"
data-automation-id="reset-metadata"
class="adf-metadata-action-buttons-clear">
<mat-icon>clear</mat-icon>
</button>
<button mat-icon-button
[attr.title]="'CORE.METADATA.ACTIONS.SAVE' | translate"
(click)="onSaveCategoriesChanges($event)"
color="primary"
data-automation-id="save-categories-metadata"
[disabled]="!hasMetadataChanged">
<button
mat-icon-button
[attr.title]="'CORE.METADATA.ACTIONS.SAVE' | translate"
(click)="saveChanges($event)"
color="primary"
data-automation-id="save-categories-metadata"
[disabled]="!hasMetadataChanged">
<mat-icon>check</mat-icon>
</button>
</div>
</adf-content-metadata-header>
</mat-expansion-panel-header>
<div *ngIf="!isEditingModeCategories">
<div *ngIf="currentPanel.panelTitle === DefaultPanels.CATEGORIES && !editing">
<p *ngFor="let category of categories" class="adf-metadata-categories">{{ category.name }}</p>
</div>
<div *ngIf="showEmptyCategoryMessage" class="adf-metadata-no-item-added">
{{ 'CATEGORIES_MANAGEMENT.NO_CATEGORIES_ADDED' | translate }}
</div>
<adf-categories-management
*ngIf="isEditingModeCategories"
*ngIf="!readOnly && isPanelEditing(DefaultPanels.CATEGORIES)"
class="adf-metadata-categories-header"
[(categoryNameControlVisible)]="categoryControlVisible"
[categoryNameControlVisible]="editing"
[disableRemoval]="saving"
[categories]="categories"
[managementMode]="categoriesManagementMode"
@@ -149,65 +183,74 @@
<mat-expansion-panel
*ngFor="let customPanel of customPanels"
[expanded]="canExpandTheCard(customPanel.panelTitle)"
(opened)="customPanel.expanded = true"
(closed)="customPanel.expanded = false"
[expanded]="currentPanel.panelTitle === customPanel.panelTitle && currentPanel.expanded"
(opened)="expandPanel(customPanel.panelTitle)"
(closed)="closePanel(customPanel.panelTitle)"
class="adf-content-metadata-panel"
hideToggle>
<mat-expansion-panel-header>
<adf-content-metadata-header class="adf-metadata-custom-panel-title" [title]="customPanel.panelTitle" [expanded]="customPanel.expanded">
<mat-expansion-panel-header
class="adf-metadata-properties-header"
[class.adf-metadata-properties-header-expanded]="currentPanel.panelTitle === customPanel.panelTitle && currentPanel.expanded">
<adf-content-metadata-header
class="adf-metadata-custom-panel-title"
[title]="customPanel.panelTitle"
[expanded]="currentPanel.panelTitle === customPanel.panelTitle && currentPanel.expanded">
</adf-content-metadata-header>
</mat-expansion-panel-header>
<adf-dynamic-component [id]="customPanel.component" [data]="{ node }"></adf-dynamic-component>
</mat-expansion-panel>
<ng-container *ngIf="groupedProperties$ | async; else loading; let groupedProperties">
<div *ngFor="let group of groupedProperties; let first = first;"
class="adf-metadata-grouped-properties-container">
<div *ngFor="let group of groupedProperties; let first = first" class="adf-metadata-grouped-properties-container">
<mat-expansion-panel
[attr.data-automation-id]="'adf-metadata-group-' + group.title"
[expanded]="canExpandTheCard(group.title) || !displayDefaultProperties && first || group.expanded"
(opened)="group.expanded = true"
(closed)="group.expanded = false"
[expanded]="currentPanel.panelTitle === group.title && currentPanel.expanded"
(opened)="expandPanel(group.title)"
(closed)="closePanel(group.title)"
class="adf-content-metadata-panel"
hideToggle>
<mat-expansion-panel-header>
<adf-content-metadata-header [title]="group.title" [expanded]="group.expanded">
<button *ngIf="hasGroupToggleEdit(group)"
mat-icon-button
[attr.title]="'CORE.METADATA.ACTIONS.EDIT' | translate"
[attr.aria-label]="'CORE.METADATA.ACCESSIBILITY.EDIT' | translate"
data-automation-id="meta-data-card-toggle-edit"
class="adf-edit-icon-buttons"
(click)="onToggleGroupEdit(group, $event)">
<mat-expansion-panel-header
class="adf-metadata-properties-header"
[class.adf-metadata-properties-header-expanded]="currentPanel.panelTitle === group.title && currentPanel.expanded">
<adf-content-metadata-header [title]="group.title" [expanded]="currentPanel.panelTitle === group.title && currentPanel.expanded">
<button
*ngIf="group.editable && !this.readOnly && !isPanelEditing(group.title)"
mat-icon-button
[attr.title]="'CORE.METADATA.ACTIONS.EDIT' | translate"
[attr.aria-label]="'CORE.METADATA.ACCESSIBILITY.EDIT' | translate"
data-automation-id="meta-data-card-toggle-edit"
class="adf-edit-icon-buttons"
(click)="toggleGroupEditing(group.title, $event)">
<mat-icon>mode_edit</mat-icon>
</button>
<div class="adf-metadata-action-buttons" *ngIf="isGroupToggleEditing(group)">
<button mat-icon-button
[attr.title]="'CORE.METADATA.ACTIONS.CANCEL' | translate"
(click)="onCancelGroupEdit(group, $event)"
data-automation-id="reset-metadata"
class="adf-metadata-action-buttons-clear">
<div class="adf-metadata-action-buttons" *ngIf="group.editable && isPanelEditing(group.title)">
<button
mat-icon-button
[attr.title]="'CORE.METADATA.ACTIONS.CANCEL' | translate"
(click)="cancelGroupEditing(group.title, $event)"
data-automation-id="reset-metadata"
class="adf-metadata-action-buttons-clear">
<mat-icon>clear</mat-icon>
</button>
<button mat-icon-button
[attr.title]="'CORE.METADATA.ACTIONS.SAVE' | translate"
(click)="onSaveGroupChanges(group, $event)"
color="primary"
data-automation-id="save-metadata"
[disabled]="!hasMetadataChanged">
<button
mat-icon-button
[attr.title]="'CORE.METADATA.ACTIONS.SAVE' | translate"
(click)="saveChanges($event)"
color="primary"
data-automation-id="save-metadata"
[disabled]="!hasMetadataChanged">
<mat-icon>check</mat-icon>
</button>
</div>
</adf-content-metadata-header>
</mat-expansion-panel-header>
<div *ngIf="!showGroup(group) && !group.editable" class="adf-metadata-no-item-added">
{{ 'METADATA.BASIC.NO_ITEMS_MESSAGE' | translate: { groupTitle: group.title | translate } }}
{{ 'METADATA.BASIC.NO_ITEMS_MESSAGE' | translate : { groupTitle: group.title | translate } }}
</div>
<adf-card-view
(keydown)="keyDown($event)"
[properties]="group.properties"
[editable]="group.editable"
[editable]="!readOnly && group.editable && isPanelEditing(group.title)"
[displayEmpty]="displayEmpty"
[copyToClipboardAction]="copyToClipboardAction"
[useChipsForMultiValueProperty]="useChipsForMultiValueProperty"
@@ -219,7 +262,6 @@
</ng-container>
<ng-template #loading>
<mat-progress-bar mode="indeterminate" [attr.aria-label]="'DATA_LOADING' | translate">
</mat-progress-bar>
<mat-progress-bar mode="indeterminate" [attr.aria-label]="'DATA_LOADING' | translate"> </mat-progress-bar>
</ng-template>
</mat-accordion>
@@ -9,36 +9,25 @@ $panel-properties-height: 56px !default;
margin: 12px;
.adf-property-list .adf-property .adf-property-field {
.mat-input-element {
.adf-property-value:not(.adf-card-view-selectitem .adf-property-value) {
margin-top: 20px;
}
.mat-form-field-label {
transform: translateY(-1.3437em) scale(1);
label {
font-size: 19px;
line-height: 20px;
}
}
}
mat-expansion-panel-header {
.adf-metadata-properties-header {
height: $panel-properties-height;
padding: 0 12px;
border-radius: 12px 12px 0 0;
&.mat-expanded {
height: $panel-properties-height;
&.adf-metadata-properties-header-expanded {
border-bottom: 1px solid var(--adf-metadata-property-panel-border-color);
}
.mat-content {
display: contents;
margin-right: 0;
}
}
.mat-expansion-panel-content {
.mat-expansion-panel-body {
padding: 0 12px 12px;
}
}
.adf-edit-icon-buttons {
@@ -35,7 +35,7 @@ import {
UpdateNotification
} from '@alfresco/adf-core';
import { ContentMetadataService } from '../../services/content-metadata.service';
import { CardViewGroup, PresetConfig, ContentMetadataCustomPanel } from '../../interfaces/content-metadata.interfaces';
import { CardViewGroup, PresetConfig, ContentMetadataCustomPanel, ContentMetadataPanel } from '../../interfaces/content-metadata.interfaces';
import { catchError, debounceTime, map, takeUntil } from 'rxjs/operators';
import { CardViewContentUpdateService } from '../../../common/services/card-view-content-update.service';
import { NodesApiService } from '../../../common/services/nodes-api.service';
@@ -48,6 +48,12 @@ import { ContentService } from '../../../common/services/content.service';
const DEFAULT_SEPARATOR = ', ';
enum DefaultPanels {
PROPERTIES = 'Properties',
TAGS = 'Tags',
CATEGORIES = 'Categories'
}
@Component({
selector: 'adf-content-metadata',
templateUrl: './content-metadata.component.html',
@@ -124,26 +130,23 @@ export class ContentMetadataComponent implements OnChanges, OnInit, OnDestroy {
private classifiableChangedSubject = new Subject<void>();
private _saving = false;
DefaultPanels = DefaultPanels;
multiValueSeparator: string;
basicProperties$: Observable<CardViewItem[]>;
groupedProperties$: Observable<CardViewGroup[]>;
changedProperties = {};
hasMetadataChanged = false;
tagNameControlVisible = false;
assignedCategories: Category[] = [];
categories: Category[] = [];
categoriesManagementMode = CategoriesManagementMode.ASSIGN;
categoryControlVisible = false;
classifiableChanged = this.classifiableChangedSubject.asObservable();
isGeneralPanelExpanded = true;
isTagPanelExpanded: boolean;
isCategoriesPanelExpanded: boolean;
currentGroup: CardViewGroup;
isEditingModeGeneralInfo = false;
isEditingModeTags = false;
isEditingModeCategories = false;
editing = false;
editedPanelTitle = '';
currentPanel: ContentMetadataPanel = {
expanded: false,
panelTitle: ''
};
constructor(
private contentMetadataService: ContentMetadataService,
@@ -180,9 +183,8 @@ export class ContentMetadataComponent implements OnChanges, OnInit, OnDestroy {
this.loadProperties(this.node);
this.verifyAllowableOperations();
if (this.displayAspect === 'Properties') {
this.isGeneralPanelExpanded = true;
}
this.currentPanel.panelTitle = this.displayAspect ?? this.DefaultPanels.PROPERTIES;
this.currentPanel.expanded = true;
}
private verifyAllowableOperations() {
@@ -207,6 +209,10 @@ export class ContentMetadataComponent implements OnChanges, OnInit, OnDestroy {
return this._saving;
}
isPanelEditing(panelTitle: string): boolean {
return this.editing && ((this.currentPanel.panelTitle === panelTitle && this.editedPanelTitle === panelTitle) || this.editedPanelTitle === panelTitle);
}
protected handleUpdateError(error: Error) {
let statusCode = 0;
@@ -230,10 +236,17 @@ export class ContentMetadataComponent implements OnChanges, OnInit, OnDestroy {
if (changes.node && !changes.node.firstChange) {
this.loadProperties(changes.node.currentValue);
}
if(changes?.readOnly && changes?.readOnly?.currentValue) {
this.cancelEditing();
this.groupedProperties$ = this.contentMetadataService.getGroupedProperties(this.node, this.preset);
if (changes.readOnly?.currentValue) {
this.resetEditing();
this.loadProperties(this.node);
}
if (changes.displayAspect?.currentValue) {
this.currentPanel.panelTitle = changes.displayAspect.currentValue;
this.currentPanel.expanded = true;
}
}
ngOnDestroy() {
@@ -254,35 +267,10 @@ export class ContentMetadataComponent implements OnChanges, OnInit, OnDestroy {
});
}
private onSave(event?: MouseEvent) {
saveChanges(event?: MouseEvent) {
event?.stopPropagation();
this.onSaveChanges();
this.cancelEditing();
}
onSaveGeneralInfoChanges(event?: MouseEvent) {
this.onSave(event);
}
onSaveTagsChanges(event?: MouseEvent) {
this.onSave(event);
}
onSaveCategoriesChanges(event?: MouseEvent) {
this.onSave(event);
}
onSaveGroupChanges(group: CardViewGroup, event?: MouseEvent) {
this.onSave(event);
group.editable = false;
}
private onSaveChanges() {
this.resetEditing();
this._saving = true;
this.tagNameControlVisible = false;
this.categoryControlVisible = false;
if (this.hasContentTypeChanged(this.changedProperties)) {
this.contentMetadataService.openConfirmDialog(this.changedProperties).subscribe(() => {
@@ -318,172 +306,52 @@ export class ContentMetadataComponent implements OnChanges, OnInit, OnDestroy {
revertChanges() {
this.changedProperties = {};
this.hasMetadataChanged = false;
this.tagNameControlVisible = false;
this.categoryControlVisible = false;
}
// Returns the editing state of the panel
isEditingPanel(): boolean {
return (
(this.isEditingModeGeneralInfo || this.isEditingModeTags || this.isEditingModeCategories || this.currentGroup?.editable) && this.hasMetadataChanged
);
}
onToggleGeneralInfoEdit(event?: MouseEvent) {
event?.stopPropagation();
if (this.isEditingPanel()) {
this.notificationService.showError('METADATA.BASIC.SAVE_OR_DISCARD_CHANGES');
return;
}
const currentMode = this.isEditingModeGeneralInfo;
this.cancelEditing();
this.isEditingModeGeneralInfo = !currentMode;
this.isGeneralPanelExpanded = true;
this.groupedProperties$ = this.contentMetadataService.getGroupedProperties(this.node, this.preset);
}
onToggleTagsEdit(event?: MouseEvent) {
event?.stopPropagation();
if (this.isEditingPanel()) {
this.notificationService.showError('METADATA.BASIC.SAVE_OR_DISCARD_CHANGES');
return;
}
const currentValue = this.isEditingModeTags;
this.cancelEditing();
this.isEditingModeTags = !currentValue;
this.isTagPanelExpanded = this.isEditingModeTags;
this.tagNameControlVisible = true;
this.groupedProperties$ = this.contentMetadataService.getGroupedProperties(this.node, this.preset);
}
private cancelEditing() {
this.isEditingModeGeneralInfo = false;
this.isEditingModeCategories = false;
this.isEditingModeTags = false;
}
onCancelGeneralInfoEdit(event?: MouseEvent) {
event?.stopPropagation();
this.cancelEditing();
this.revertChanges();
this.basicProperties$ = this.getProperties(this.node);
}
onCancelCategoriesEdit(event?: MouseEvent) {
event?.stopPropagation();
this.cancelEditing();
this.revertChanges();
this.loadCategoriesForNode(this.node.id);
const aspectNames = this.node.aspectNames || [];
if (!aspectNames.includes('generalclassifiable')) {
this.categories = [];
this.classifiableChangedSubject.next();
}
}
onCancelTagsEdit(event?: MouseEvent) {
event?.stopPropagation();
this.cancelEditing();
this.revertChanges();
this.basicProperties$ = this.getProperties(this.node);
this.loadTagsForNode(this.node.id);
}
onCancelGroupEdit(group: CardViewGroup, event?: MouseEvent) {
event?.stopPropagation();
this.cancelEditing();
this.revertChanges();
group.editable = false;
this.groupedProperties$ = this.contentMetadataService.getGroupedProperties(this.node, this.preset);
}
onToggleCategoriesEdit(event?: MouseEvent) {
event?.stopPropagation();
if (this.isEditingPanel()) {
this.notificationService.showError('METADATA.BASIC.SAVE_OR_DISCARD_CHANGES');
return;
}
const currentValue = this.isEditingModeCategories;
this.cancelEditing();
this.isEditingModeCategories = !currentValue;
this.isCategoriesPanelExpanded = this.isEditingModeCategories;
this.categoryControlVisible = true;
this.groupedProperties$ = this.contentMetadataService.getGroupedProperties(this.node, this.preset);
}
onToggleGroupEdit(group: CardViewGroup, event?: MouseEvent) {
event?.stopPropagation();
if (this.isEditingPanel()) {
this.notificationService.showError('METADATA.BASIC.SAVE_OR_DISCARD_CHANGES');
return;
}
this.cancelEditing();
if (this.currentGroup && this.currentGroup.title !== group.title) {
this.currentGroup.editable = false;
}
group.editable = !group.editable;
this.currentGroup = group.editable ? group : null;
if (group.editable) {
group.expanded = true;
}
}
get showEmptyTagMessage(): boolean {
return this.tags?.length === 0 && !this.isEditingModeTags;
return this.tags?.length === 0 && this.currentPanel.panelTitle === 'Tags' && !this.editing;
}
get showEmptyCategoryMessage(): boolean {
return this.categories?.length === 0 && !this.isEditingModeCategories;
return this.categories?.length === 0 && this.currentPanel.panelTitle === 'Categories' && !this.editing;
}
get canEditGeneralInfo(): boolean {
return !this.isEditingModeGeneralInfo && !this.readOnly;
toggleGroupEditing(panelTitle: string, event?: MouseEvent) {
event?.stopPropagation();
if (this.editing && this.hasMetadataChanged) {
this.notificationService.showError('METADATA.BASIC.SAVE_OR_DISCARD_CHANGES');
return;
}
this.editing = true;
this.editedPanelTitle = panelTitle;
this.expandPanel(panelTitle);
}
get isEditingGeneralInfo(): boolean {
return this.isEditingModeGeneralInfo && !this.readOnly;
cancelGroupEditing(panelTitle: string, event?: MouseEvent) {
event?.stopPropagation();
this.resetEditing();
this.revertChanges();
const loadBasicProps = panelTitle === this.DefaultPanels.PROPERTIES;
const loadTags = panelTitle === this.DefaultPanels.TAGS;
const loadCategories = panelTitle === this.DefaultPanels.CATEGORIES;
const loadGroupedProps = !loadBasicProps && !loadTags && !loadCategories;
this.loadProperties(this.node, loadBasicProps, loadGroupedProps, loadTags, loadCategories);
}
get canEditTags(): boolean {
return !this.isEditingModeTags && !this.readOnly;
expandPanel(panelTitle: string) {
this.currentPanel.panelTitle = panelTitle;
this.currentPanel.expanded = true;
}
get isEditingTags(): boolean {
return this.isEditingModeTags && !this.readOnly;
closePanel(panelTitle: string) {
if (this.currentPanel.panelTitle === panelTitle) {
this.currentPanel.expanded = false;
}
}
get canEditCategories(): boolean {
return !this.isEditingModeCategories && !this.readOnly;
}
get isEditingCategories(): boolean {
return this.isEditingModeCategories && !this.readOnly;
}
hasGroupToggleEdit(group: CardViewGroup): boolean {
return !group.editable && !this.readOnly;
}
isGroupToggleEditing(group: CardViewGroup): boolean {
return group.editable && !this.readOnly;
resetEditing() {
this.editing = false;
this.editedPanelTitle = '';
}
showGroup(group: CardViewGroup): boolean {
@@ -492,10 +360,6 @@ export class ContentMetadataComponent implements OnChanges, OnInit, OnDestroy {
return properties.length > 0;
}
canExpandTheCard(groupTitle: string): boolean {
return groupTitle === this.displayAspect;
}
keyDown(event: KeyboardEvent) {
if (event.keyCode === 37 || event.keyCode === 39) { // ArrowLeft && ArrowRight
event.stopPropagation();
@@ -513,6 +377,7 @@ export class ContentMetadataComponent implements OnChanges, OnInit, OnDestroy {
this.cardViewContentUpdateService.updateElement(this.targetProperty);
this.handleUpdateError(err);
this._saving = false;
this.loadProperties(this.node);
return of(null);
})
)
@@ -548,16 +413,20 @@ export class ContentMetadataComponent implements OnChanges, OnInit, OnDestroy {
}
}
private loadProperties(node: Node) {
private loadProperties(node: Node, loadBasicProps = true, loadGroupedProps = true, loadTags = true, loadCategories = true) {
if (node) {
this.basicProperties$ = this.getProperties(node);
this.groupedProperties$ = this.contentMetadataService.getGroupedProperties(node, this.preset);
if (loadBasicProps) {
this.basicProperties$ = this.getProperties(node);
}
if (loadGroupedProps) {
this.groupedProperties$ = this.contentMetadataService.getGroupedProperties(node, this.preset);
}
if (this.displayTags) {
if (this.displayTags && loadTags) {
this.loadTagsForNode(node.id);
}
if (this.displayCategories) {
if (this.displayCategories && loadCategories) {
this.loadCategoriesForNode(node.id);
const aspectNames = node.aspectNames || [];
@@ -20,6 +20,6 @@ import { CardViewItem } from '@alfresco/adf-core';
export interface CardViewGroup {
title: string;
properties: CardViewItem[];
editable?: boolean;
editable: boolean;
expanded?: boolean;
}
@@ -15,8 +15,8 @@
* limitations under the License.
*/
export interface ContentMetadataCustomPanel {
panelTitle: string;
import { ContentMetadataPanel } from './content-metadata-panel.interface';
export interface ContentMetadataCustomPanel extends ContentMetadataPanel {
component: string;
expanded?: boolean;
}
@@ -0,0 +1,21 @@
/*!
* @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.
*/
export interface ContentMetadataPanel {
panelTitle: string;
expanded?: boolean;
}
@@ -25,3 +25,4 @@ export * from './indifferent-config.interface';
export * from './layout-oriented-config.interface';
export * from './preset-config.interface';
export * from './content-metadata-custom-panel.interface';
export * from './content-metadata-panel.interface';
@@ -16,21 +16,14 @@
*/
import { LayoutOrientedConfigService } from './layout-oriented-config.service';
import {
LayoutOrientedConfig,
Property,
OrganisedPropertyGroup,
PropertyGroupContainer
} from '../../interfaces/content-metadata.interfaces';
import { LayoutOrientedConfig, Property, OrganisedPropertyGroup, PropertyGroupContainer } from '../../interfaces/content-metadata.interfaces';
describe('LayoutOrientedConfigService', () => {
let configService: LayoutOrientedConfigService;
const createConfigService = (configObj: LayoutOrientedConfig) => new LayoutOrientedConfigService(configObj);
describe('isGroupAllowed', () => {
const testCases = [
{
config: [],
@@ -48,11 +41,15 @@ describe('LayoutOrientedConfigService', () => {
groupNameToQuery: 'berseria'
},
{
config: [{
title: 'Deamons', items: [
{ aspect: 'zestiria', properties: '*' }, { aspect: 'berseria', properties: '*' }
]
}],
config: [
{
title: 'Deamons',
items: [
{ aspect: 'zestiria', properties: '*' },
{ aspect: 'berseria', properties: '*' }
]
}
],
expectation: true,
groupNameToQuery: 'berseria'
},
@@ -73,9 +70,7 @@ describe('LayoutOrientedConfigService', () => {
groupNameToQuery: 'phantasia'
},
{
config: [
{ title: 'Deamons', includeAll: true, items: [{ aspect: 'zestiria', properties: '*' }] }
],
config: [{ title: 'Deamons', includeAll: true, items: [{ aspect: 'zestiria', properties: '*' }] }],
expectation: true,
groupNameToQuery: 'phantasia'
}
@@ -93,7 +88,6 @@ describe('LayoutOrientedConfigService', () => {
});
describe('reorganiseByConfig', () => {
interface TestCase {
name: string;
config: LayoutOrientedConfig;
@@ -123,94 +117,81 @@ describe('LayoutOrientedConfigService', () => {
name: 'First property of a group in one item',
config: [
{
title: 'First group', items: [
{ aspect: 'berseria', properties: ['property1'] }
]
title: 'First group',
items: [{ aspect: 'berseria', properties: ['property1'] }]
}
],
expectations: [
{ title: 'First group', properties: [property1] }
]
expectations: [{ title: 'First group', properties: [property1] }]
},
{
name: 'Second property of a group in one item',
config: [
{
title: 'First group', items: [
{ aspect: 'berseria', properties: ['property2'] }
]
title: 'First group',
items: [{ aspect: 'berseria', properties: ['property2'] }]
}
],
expectations: [
{ title: 'First group', properties: [property2] }
]
expectations: [{ title: 'First group', properties: [property2] }]
},
{
name: 'Properties with editable flag',
config: [
{
title: 'Editable property', items: [
title: 'Editable property',
items: [
{ aspect: 'otherTales', properties: ['property5'], editable: true },
{ aspect: 'otherTales', properties: ['property6'], editable: false }
]
}
],
expectations: [
{ title: 'Editable property', properties: [property5, property6] }
]
expectations: [{ title: 'Editable property', properties: [property5, property6] }]
},
{
name: 'More properties from one group in one item',
config: [
{
title: 'First group', items: [
{ aspect: 'berseria', properties: ['property2', 'property1'] }
]
title: 'First group',
items: [{ aspect: 'berseria', properties: ['property2', 'property1'] }]
}
],
expectations: [
{ title: 'First group', properties: [property2, property1] }
]
expectations: [{ title: 'First group', properties: [property2, property1] }]
},
{
name: 'First property of the second group in one item',
config: [
{
title: 'First group', items: [
{ aspect: 'zestiria', properties: ['property4'] }
]
title: 'First group',
items: [{ aspect: 'zestiria', properties: ['property4'] }]
}
],
expectations: [
{ title: 'First group', properties: [property4] }
]
expectations: [{ title: 'First group', properties: [property4] }]
},
{
name: 'One-one properties from multiple groups in one item',
config: [
{
title: 'First group', items: [
title: 'First group',
items: [
{ aspect: 'zestiria', properties: ['property4'] },
{ aspect: 'berseria', properties: ['property1'] }
]
}
],
expectations: [
{ title: 'First group', properties: [property4, property1] }
]
expectations: [{ title: 'First group', properties: [property4, property1] }]
},
{
name: 'Multiple properties mixed from multiple groups in multiple items',
config: [
{
title: 'First group', items: [
title: 'First group',
items: [
{ aspect: 'zestiria', properties: ['property4'] },
{ type: 'berseria', properties: ['property1'] }
]
},
{
title: 'Second group', items: [
title: 'Second group',
items: [
{ aspect: 'zestiria', properties: ['property3'] },
{ type: 'berseria', properties: ['property2', 'property1'] },
{ aspect: 'zestiria', properties: ['property4'] }
@@ -226,15 +207,15 @@ describe('LayoutOrientedConfigService', () => {
name: 'Multiple properties mixed from multiple groups in multiple items with "*"',
config: [
{
title: 'First group', items: [
title: 'First group',
items: [
{ aspect: 'zestiria', properties: '*' },
{ type: 'berseria', properties: ['property1'] }
]
},
{
title: 'Second group', items: [
{ type: 'berseria', properties: ['property2', 'property1'] }
]
title: 'Second group',
items: [{ type: 'berseria', properties: ['property2', 'property1'] }]
}
],
expectations: [
@@ -246,22 +227,22 @@ describe('LayoutOrientedConfigService', () => {
name: 'Not existing property',
config: [
{
title: 'First group', items: [
title: 'First group',
items: [
{ aspect: 'zestiria', properties: '*' },
{ type: 'berseria', properties: ['not-existing-property'] },
{ type: 'berseria', properties: ['property2'] }
]
}
],
expectations: [
{ title: 'First group', properties: [property3, property4, property2] }
]
expectations: [{ title: 'First group', properties: [property3, property4, property2] }]
},
{
name: 'Not existing group',
config: [
{
title: 'First group', items: [
title: 'First group',
items: [
{ aspect: 'zestiria', properties: '*' },
{ type: 'not-existing-group', properties: '*' },
{ type: 'berseria', properties: ['property2'] },
@@ -269,9 +250,7 @@ describe('LayoutOrientedConfigService', () => {
]
}
],
expectations: [
{ title: 'First group', properties: [property3, property4, property2] }
]
expectations: [{ title: 'First group', properties: [property3, property4, property2] }]
},
{
name: 'Custom Title',
@@ -297,7 +276,6 @@ describe('LayoutOrientedConfigService', () => {
}
]
}
];
testCases.forEach((testCase) => {
@@ -308,7 +286,7 @@ describe('LayoutOrientedConfigService', () => {
expect(organisedPropertyGroups.length).toBe(testCase.expectations.length, 'Group count should match');
testCase.expectations.forEach((expectation, i) => {
expect(organisedPropertyGroups[i].title).toBe(expectation.title, 'Group\'s title should match');
expect(organisedPropertyGroups[i].title).toBe(expectation.title, 'Group title should match');
expect(organisedPropertyGroups[i].properties.length).toBe(
expectation.properties.length,
`Property count for "${organisedPropertyGroups[i].title}" group should match.`
@@ -320,5 +298,31 @@ describe('LayoutOrientedConfigService', () => {
});
});
});
it('should include all exclusions passed to filterExcludedPreset', () => {
const properties: OrganisedPropertyGroup[] = [
{
name: 'propGroup',
title: 'propGroup',
properties: [
{ name: 'property1', title: 'Custom title', editable: true } as Property,
{ name: 'property2', title: 'Custom title', editable: true } as Property,
{ name: 'property3', title: 'Custom title', editable: true } as Property,
{ name: 'property4', title: 'Custom title', editable: true } as Property
]
}
];
configService = createConfigService([
{ title: 'Property group', items: [{ aspect: 'berseria', properties: ['property1', 'property2', 'property3', 'property4'] }] },
{ title: 'Exclude group 1', items: [{ exclude: ['property1'], properties: [] }] },
{ title: 'Exclude group 2', items: [{ exclude: ['property2'], properties: [] }] },
{ title: 'Exclude group 3', items: [{ exclude: ['property3'], properties: [] }] }
]);
const result = configService.filterExcludedPreset(properties);
expect(result.length).toBe(1);
});
});
});
@@ -75,7 +75,8 @@ export class LayoutOrientedConfigService implements ContentMetadataConfig {
public filterExcludedPreset(propertyGroups: OrganisedPropertyGroup[]): OrganisedPropertyGroup[] {
let excludedConfig = this.config
.map((config) => config.exclude)
.find((exclude) => exclude !== undefined);
.filter((exclude) => exclude !== undefined)
.flat();
if (excludedConfig === undefined) {
excludedConfig = [];
@@ -84,7 +84,8 @@ describe('PropertyGroupTranslatorService', () => {
dataType: 'd:text',
defaultValue: 'defaultValue',
mandatory: false,
multiValued: false
multiValued: false,
editable: true
},
{
name: 'FAS:ALOY',
@@ -98,10 +99,11 @@ describe('PropertyGroupTranslatorService', () => {
propertyValues = { 'FAS:PLAGUE': 'The Chariot Line' };
const cardViewGroup = service.translateToCardViewGroups(propertyGroups, propertyValues, null);
expect(cardViewGroup[0].properties.length).toBe(2);
expect(cardViewGroup[0].properties[0] instanceof CardViewTextItemModel).toBeTruthy('First property should be instance of CardViewTextItemModel');
expect(cardViewGroup[0].properties[1] instanceof CardViewTextItemModel).toBeTruthy('Second property should be instance of CardViewTextItemModel');
const cardViewGroup = service.translateToCardViewGroups(propertyGroups, propertyValues, null)[0];
expect(cardViewGroup.properties.length).toBe(2);
expect(cardViewGroup.properties[0] instanceof CardViewTextItemModel).toBeTruthy('First property should be instance of CardViewTextItemModel');
expect(cardViewGroup.properties[1] instanceof CardViewTextItemModel).toBeTruthy('Second property should be instance of CardViewTextItemModel');
expect(cardViewGroup.editable).toBeTrue();
});
it('should translate EVERY property in EVERY group properly', () => {
@@ -113,7 +115,8 @@ describe('PropertyGroupTranslatorService', () => {
dataType: 'd:text',
defaultValue: 'defaultvalue',
mandatory: false,
multiValued: false
multiValued: false,
editable: false
}]
}),
Object.assign({}, propertyGroup, {
@@ -123,17 +126,20 @@ describe('PropertyGroupTranslatorService', () => {
dataType: 'd:text',
defaultValue: 'defaultvalue',
mandatory: false,
multiValued: false
multiValued: false,
editable: false
}]
})
);
propertyValues = { 'FAS:PLAGUE': 'The Chariot Line' };
const cardViewGroup = service.translateToCardViewGroups(propertyGroups, propertyValues, null);
expect(cardViewGroup.length).toBe(2);
expect(cardViewGroup[0].properties[0] instanceof CardViewTextItemModel).toBeTruthy('First group\'s property should be instance of CardViewTextItemModel');
expect(cardViewGroup[1].properties[0] instanceof CardViewTextItemModel).toBeTruthy('Second group\'s property should be instance of CardViewTextItemModel');
const cardViewGroups = service.translateToCardViewGroups(propertyGroups, propertyValues, null);
expect(cardViewGroups.length).toBe(2);
const firstCardViewGroup = cardViewGroups[0];
expect(firstCardViewGroup.properties[0] instanceof CardViewTextItemModel).toBeTruthy('First group\'s property should be instance of CardViewTextItemModel');
expect(cardViewGroups[1].properties[0] instanceof CardViewTextItemModel).toBeTruthy('Second group\'s property should be instance of CardViewTextItemModel');
expect(firstCardViewGroup.editable).toBeFalse();
});
it('should log an error if unrecognised type is found', () => {
@@ -64,6 +64,7 @@ export class PropertyGroupTranslatorService {
return propertyGroups.map((propertyGroup) => {
const translatedPropertyGroup: any = Object.assign({}, propertyGroup);
translatedPropertyGroup.properties = this.translateArray(propertyGroup.properties, propertyValues, definition);
translatedPropertyGroup.editable = translatedPropertyGroup.properties.some((property) => property.editable);
return translatedPropertyGroup;
});
}
@@ -13,12 +13,11 @@ h2.adf-search-results-label {
color: var(--adf-theme-foreground-text-color-087);
}
.adf-toolbar .mat-toolbar {
max-height: 48px;
border-bottom-width: 0;
font-size: var(--theme-body-1-font-size);
&.mat-toolbar-single-row {
.adf-content-node-selector-panel {
.adf-toolbar .adf-toolbar-container.adf-toolbar-container-row {
max-height: 48px;
border-bottom-width: 0;
font-size: var(--theme-body-1-font-size);
height: auto;
}
}
@@ -48,13 +47,8 @@ h2.adf-search-results-label {
}
}
.mat-form-field-underline .mat-form-field-ripple {
height: 1px;
transition: none;
}
.adf-site-dropdown-container {
.mat-form-field {
.adf-sites-dropdown-form-field {
display: block;
margin-bottom: 15px;
}
@@ -64,7 +58,7 @@ h2.adf-search-results-label {
width: 100%;
margin-bottom: 0;
.mat-select-trigger {
.adf-sites-dropdown-select-trigger {
font-size: var(--theme-body-1-font-size);
}
}
@@ -73,7 +67,7 @@ h2.adf-search-results-label {
.adf-dropdown-breadcrumb-trigger {
outline: none;
.mat-icon {
.adf-dropdown-breadcrumb-icon {
color: var(--adf-theme-foreground-base-color-045);
&:hover {
@@ -81,7 +75,7 @@ h2.adf-search-results-label {
}
}
&:focus .mat-icon {
&:focus .adf-dropdown-breadcrumb-icon {
color: var(--theme-primary-color);
}
}
@@ -1,77 +1,82 @@
<h1 mat-dialog-title data-automation-id="content-node-selector-title">{{title}}</h1>
<mat-tab-group class="adf-content-node-selector-dialog-content"
mat-align-tabs="start"
(selectedIndexChange)="onTabSelectionChange($event)"
[class.adf-content-node-selector-headless-tabs]="!canPerformLocalUpload()">
<mat-tab label="{{ 'NODE_SELECTOR.REPOSITORY' | translate }}">
<adf-content-node-selector-panel
[currentFolderId]="data?.currentFolderId"
[restrictRootToCurrentFolderId]="data?.restrictRootToCurrentFolderId"
[dropdownHideMyFiles]="data?.dropdownHideMyFiles"
[dropdownSiteList]="data?.dropdownSiteList"
[rowFilter]="data?.rowFilter"
[imageResolver]="data?.imageResolver"
[isSelectionValid]="data?.isSelectionValid"
[breadcrumbTransform]="data?.breadcrumbTransform"
[excludeSiteContent]="data?.excludeSiteContent"
[selectionMode]="data?.selectionMode"
[where]="data?.where"
[showSearch]="data?.showSearch"
[showDropdownSiteList]="data?.showDropdownSiteList"
[showFilesInResult]="data?.showFilesInResult"
[showNodeCounter]="isCounterVisible()"
(currentFolder)="onCurrentFolder($event)"
(folderLoaded)="onFolderLoaded()"
(select)="onSelect($event)"
(showingSearch)="onShowingSearch($event)"
(siteChange)="onSiteChange($event)"
(navigationChange)="onNavigationChange($event)">
</adf-content-node-selector-panel>
</mat-tab>
<mat-tab *ngIf="canPerformLocalUpload()"
[disabled]="isNotAllowedToUpload()">
<div class="adf-content-node-selector-local-upload-container">
<div class="adf-content-node-selector-local-upload-header">
<adf-toolbar>
<adf-toolbar-title>
<adf-dropdown-breadcrumb
class="adf-content-node-selector-content-breadcrumb"
[folderNode]="breadcrumbFolderNode"
[rootId]="data?.currentFolderId"
[readOnly]="true"
data-automation-id="content-node-selector-upload-breadcrumb"
></adf-dropdown-breadcrumb>
<ng-container *ngIf="isCounterVisible()" [adf-node-counter]="getSelectedCount()"></ng-container>
</adf-toolbar-title>
</adf-toolbar>
<ng-template mat-tab-label>
{{ 'NODE_SELECTOR.UPLOAD_FROM_DEVICE' | translate }}
<mat-icon *ngIf="hasUploadError()"
data-automation-id="adf-content-node-selector-disabled-tab-info-icon"
matTooltip="{{ getWarningMessage() | translate }}">info
</mat-icon>
</ng-template>
</div>
<div class="adf-content-node-selector-local-upload-content">
<adf-upload-drag-area [rootFolderId]="currentDirectoryId">
<div [class.adf-upload-dialog-container]="uploadStarted">
<adf-file-uploading-dialog [alwaysVisible]="true"></adf-file-uploading-dialog>
</div>
<adf-empty-list data-automation-id="adf-empty-list" *ngIf="!uploadStarted">
<div class="adf-empty-list_template adf-empty-folder">
<div class="adf-empty-folder-drag-drop">{{ 'ADF-DATATABLE.EMPTY.DRAG-AND-DROP.TITLE' | translate }}</div>
<div class="adf-empty-folder-any-files-here-to-add">{{ 'ADF-DATATABLE.EMPTY.DRAG-AND-DROP.SUBTITLE' | translate }}</div>
<img [alt]="'ADF-DATATABLE.EMPTY.DRAG-AND-DROP.TITLE' | translate" class="adf-empty-folder-image"
[src]="emptyFolderImageUrl">
<h1 mat-dialog-title class="adf-content-node-selector-dialog-title" data-automation-id="content-node-selector-title">{{title}}</h1>
<ng-container *ngIf="canPerformLocalUpload(); else contentNodePanel">
<mat-tab-group class="adf-content-node-selector-dialog-content"
mat-align-tabs="start"
(selectedIndexChange)="onTabSelectionChange($event)">
<mat-tab label="{{ 'NODE_SELECTOR.REPOSITORY' | translate }}">
<ng-container *ngTemplateOutlet='contentNodePanel'></ng-container>
</mat-tab>
<mat-tab [disabled]="isNotAllowedToUpload()">
<div class="adf-content-node-selector-local-upload-container">
<div class="adf-content-node-selector-local-upload-header">
<adf-toolbar>
<adf-toolbar-title>
<adf-dropdown-breadcrumb
class="adf-content-node-selector-content-breadcrumb"
[folderNode]="breadcrumbFolderNode"
[rootId]="data?.currentFolderId"
[readOnly]="true"
data-automation-id="content-node-selector-upload-breadcrumb"
></adf-dropdown-breadcrumb>
<ng-container *ngIf="isCounterVisible()" [adf-node-counter]="getSelectedCount()"></ng-container>
</adf-toolbar-title>
</adf-toolbar>
<ng-template mat-tab-label>
{{ 'NODE_SELECTOR.UPLOAD_FROM_DEVICE' | translate }}
<mat-icon *ngIf="hasUploadError()"
data-automation-id="adf-content-node-selector-disabled-tab-info-icon"
matTooltip="{{ getWarningMessage() | translate }}">info
</mat-icon>
</ng-template>
</div>
<div class="adf-content-node-selector-local-upload-content">
<adf-upload-drag-area [rootFolderId]="currentDirectoryId">
<div [class.adf-upload-dialog-container]="uploadStarted">
<adf-file-uploading-dialog [alwaysVisible]="true"></adf-file-uploading-dialog>
</div>
</adf-empty-list>
</adf-upload-drag-area>
<adf-empty-list data-automation-id="adf-empty-list" *ngIf="!uploadStarted">
<div class="adf-empty-list_template adf-empty-folder">
<div class="adf-empty-folder-drag-drop">{{ 'ADF-DATATABLE.EMPTY.DRAG-AND-DROP.TITLE' | translate }}</div>
<div class="adf-empty-folder-any-files-here-to-add">{{ 'ADF-DATATABLE.EMPTY.DRAG-AND-DROP.SUBTITLE' | translate }}</div>
<img [alt]="'ADF-DATATABLE.EMPTY.DRAG-AND-DROP.TITLE' | translate" class="adf-empty-folder-image"
[src]="emptyFolderImageUrl">
</div>
</adf-empty-list>
</adf-upload-drag-area>
</div>
</div>
</div>
</mat-tab>
</mat-tab-group>
</mat-tab>
</mat-tab-group>
</ng-container>
<mat-dialog-actions>
<ng-template #contentNodePanel>
<adf-content-node-selector-panel
[currentFolderId]="data?.currentFolderId"
[restrictRootToCurrentFolderId]="data?.restrictRootToCurrentFolderId"
[dropdownHideMyFiles]="data?.dropdownHideMyFiles"
[dropdownSiteList]="data?.dropdownSiteList"
[rowFilter]="data?.rowFilter"
[imageResolver]="data?.imageResolver"
[isSelectionValid]="data?.isSelectionValid"
[breadcrumbTransform]="data?.breadcrumbTransform"
[excludeSiteContent]="data?.excludeSiteContent"
[selectionMode]="data?.selectionMode"
[where]="data?.where"
[showSearch]="data?.showSearch"
[showDropdownSiteList]="data?.showDropdownSiteList"
[showFilesInResult]="data?.showFilesInResult"
[showNodeCounter]="isCounterVisible()"
(currentFolder)="onCurrentFolder($event)"
(folderLoaded)="onFolderLoaded()"
(select)="onSelect($event)"
(showingSearch)="onShowingSearch($event)"
(siteChange)="onSiteChange($event)"
(navigationChange)="onNavigationChange($event)">
</adf-content-node-selector-panel>
</ng-template>
<mat-dialog-actions class="adf-content-node-selector-dialog-actions">
<div>
<ng-container *ngIf="isUploadEnabled()">
<adf-upload-button
@@ -1,10 +1,4 @@
adf-content-node-selector {
.adf-content-node-selector-headless-tabs {
.mat-tab-header {
display: none;
}
}
.adf-upload-dialog {
box-shadow: none;
@@ -46,14 +40,7 @@ adf-content-node-selector {
}
.adf-content-node-selector-dialog {
&-content {
padding-left: 24px;
padding-right: 24px;
}
.mat-dialog-title {
margin-left: 24px;
margin-right: 24px;
.adf-content-node-selector-dialog-title {
font-size: var(--theme-title-font-size);
font-weight: 600;
font-style: normal;
@@ -68,17 +55,7 @@ adf-content-node-selector {
}
}
.mat-dialog-container {
padding-left: 0;
padding-right: 0;
}
.mat-dialog-content {
margin: 0;
overflow: hidden;
}
.mat-dialog-actions {
.adf-content-node-selector-dialog-actions {
padding: 8px;
height: 61px;
background-color: var(--theme-background-color);
@@ -102,10 +79,10 @@ adf-content-node-selector {
}
}
}
}
@media screen and (max-width: 768px) {
.mat-dialog-container {
height: 100vh;
}
@media screen and (max-width: 768px) {
.adf-content-node-selector-dialog {
height: 100vh;
}
}
@@ -35,6 +35,9 @@ import { NodeAction } from '../document-list/models/node-action.enum';
import { SitesService } from '../common/services/sites.service';
import { NodesApiService } from '../common/services/nodes-api.service';
import { ContentService } from '../common/services/content.service';
import { HarnessLoader } from '@angular/cdk/testing';
import { TestbedHarnessEnvironment } from '@angular/cdk/testing/testbed';
import { MatTabGroupHarness } from '@angular/material/tabs/testing';
describe('ContentNodeSelectorComponent', () => {
let component: ContentNodeSelectorComponent;
@@ -42,6 +45,7 @@ describe('ContentNodeSelectorComponent', () => {
let data: any;
let uploadService: UploadService;
let dialog: MatDialogRef<ContentNodeSelectorComponent>;
let loader: HarnessLoader;
beforeEach(() => {
data = {
@@ -86,6 +90,7 @@ describe('ContentNodeSelectorComponent', () => {
fixture = TestBed.createComponent(ContentNodeSelectorComponent);
component = fixture.componentInstance;
loader = TestbedHarnessEnvironment.loader(fixture);
const contentService = TestBed.inject(ContentService);
spyOn(contentService, 'hasAllowableOperations').and.returnValue(true);
@@ -121,13 +126,11 @@ describe('ContentNodeSelectorComponent', () => {
component.isLoading = false;
};
const getTabLabel = (idx: number) => fixture.debugElement.queryAll(By.css('.mat-tab-label'))[idx];
const selectTabByIndex = async (tabIndex: number): Promise<void> => {
const tabGroup = await loader.getHarness(MatTabGroupHarness.with({ selector: '.adf-content-node-selector-dialog-content' }));
const tabToSelect = (await tabGroup.getTabs())[tabIndex];
const selectTabByIndex = (tabIndex: number) => {
const uploadFromLocalTab = getTabLabel(tabIndex);
const attributes = uploadFromLocalTab.nativeNode.attributes as NamedNodeMap;
const tabPositionInSet = Number(attributes.getNamedItem('aria-posinset').value) - 1;
component.onTabSelectionChange(tabPositionInSet);
return tabToSelect.select();
};
describe('Data injecting with the "Material dialog way"', () => {
@@ -260,39 +263,38 @@ describe('ContentNodeSelectorComponent', () => {
describe('Upload button', () => {
const getUploadButton = () => fixture.debugElement.query(By.css('adf-upload-button button'))?.nativeElement as HTMLButtonElement;
it('Should not be able to upload a file whilst a search is still running', () => {
it('Should not be able to upload a file whilst a search is still running', async () => {
enableLocalUpload();
fixture.detectChanges();
const tabGroup = await loader.getHarness(MatTabGroupHarness.with({ selector: '.adf-content-node-selector-dialog-content' }));
const uploadFromLocalTab = (await tabGroup.getTabs())[1];
let infoMatIcon = getTabInfoButton();
let uploadFromLocalTab = getTabLabel(1);
expect(uploadFromLocalTab.nativeElement.getAttribute('aria-disabled')).toBe('false');
expect(await uploadFromLocalTab.isDisabled()).toBeFalse();
expect(infoMatIcon).toBeFalsy();
component.showingSearch = true;
fixture.detectChanges();
uploadFromLocalTab = getTabLabel(1);
infoMatIcon = getTabInfoButton();
expect(uploadFromLocalTab.nativeElement.getAttribute('aria-disabled')).toBe('true');
expect(await uploadFromLocalTab.isDisabled()).toBeTrue();
expect(infoMatIcon).toBeTruthy();
expect(component.getWarningMessage()).toEqual('NODE_SELECTOR.UPLOAD_BUTTON_SEARCH_WARNING_MESSAGE');
component.showingSearch = false;
fixture.detectChanges();
uploadFromLocalTab = getTabLabel(1);
infoMatIcon = getTabInfoButton();
expect(uploadFromLocalTab.nativeElement.getAttribute('aria-disabled')).toBe('false');
expect(await uploadFromLocalTab.isDisabled()).toBeFalse();
expect(infoMatIcon).toBeFalsy();
});
it('should be able to show upload button if showLocalUploadButton set to true', async () => {
enableLocalUpload();
selectTabByIndex(1);
await selectTabByIndex(1);
fixture.detectChanges();
const adfUploadButton = fixture.debugElement.query(By.css('adf-upload-button'));
@@ -301,8 +303,8 @@ describe('ContentNodeSelectorComponent', () => {
expect(adfUploadButton.nativeElement.textContent).toEqual('file_uploadFORM.FIELD.UPLOAD');
});
it('should be able to disable UploadButton if showingSearch set to true', () => {
selectTabByIndex(1);
it('should be able to disable UploadButton if showingSearch set to true', async () => {
await selectTabByIndex(1);
component.showingSearch = true;
component.hasAllowableOperations = true;
@@ -313,8 +315,8 @@ describe('ContentNodeSelectorComponent', () => {
expect(adfUploadButton.disabled).toBe(true);
});
it('should be able to enable UploadButton if showingSearch set to false', () => {
selectTabByIndex(1);
it('should be able to enable UploadButton if showingSearch set to false', async () => {
await selectTabByIndex(1);
component.showingSearch = false;
component.hasAllowableOperations = true;
@@ -325,11 +327,11 @@ describe('ContentNodeSelectorComponent', () => {
expect(adfUploadButton.disabled).toBe(false);
});
it('should be able to show warning message while searching', () => {
it('should be able to show warning message while searching', async () => {
component.data.showLocalUploadButton = true;
component.showingSearch = true;
component.hasAllowableOperations = false;
selectTabByIndex(1);
await selectTabByIndex(1);
fixture.detectChanges();
const infoMatIcon = getTabInfoButton();
@@ -351,9 +353,11 @@ describe('ContentNodeSelectorComponent', () => {
expect(warningMessage).toBeNull();
});
it('should be able to disable UploadButton if user does not have allowable operations', () => {
it('should be able to disable UploadButton if user does not have allowable operations', async () => {
component.hasAllowableOperations = false;
selectTabByIndex(1);
await selectTabByIndex(1);
component.onTabSelectionChange(1);
fixture.detectChanges();
const adfUploadButton = getUploadButton();
@@ -362,8 +366,8 @@ describe('ContentNodeSelectorComponent', () => {
expect(adfUploadButton.disabled).toBe(true);
});
it('should be able to enable UploadButton if user has allowable operations', () => {
selectTabByIndex(1);
it('should be able to enable UploadButton if user has allowable operations', async () => {
await selectTabByIndex(1);
component.hasAllowableOperations = true;
fixture.detectChanges();
@@ -373,21 +377,21 @@ describe('ContentNodeSelectorComponent', () => {
expect(adfUploadButton.disabled).toBe(false);
});
it('should not be able to show warning message if user has allowable operations', () => {
it('should not be able to show warning message if user has allowable operations', async () => {
enableLocalUpload();
selectTabByIndex(1);
await selectTabByIndex(1);
fixture.detectChanges();
const warningMessage = fixture.debugElement.query(By.css('.adf-content-node-upload-button-warning-message span'));
expect(warningMessage).toBeNull();
});
it('should be able to show warning message if user does not have allowable operations', () => {
it('should be able to show warning message if user does not have allowable operations', async () => {
component.data.showLocalUploadButton = true;
component.hasAllowableOperations = false;
component.showingSearch = false;
component.isLoading = false;
selectTabByIndex(1);
await selectTabByIndex(1);
fixture.detectChanges();
const infoMatIcon = getTabInfoButton();
@@ -412,15 +416,15 @@ describe('ContentNodeSelectorComponent', () => {
});
describe('Tabs', () => {
it('should isFileServerTabSelected return true when tabIndex 0 is selected', () => {
selectTabByIndex(0);
it('should isFileServerTabSelected return true when tabIndex 0 is selected', async () => {
await selectTabByIndex(0);
expect(component.isFileServerTabSelected()).toEqual(true);
});
it('should isLocalUploadTabSelected return true when tabIndex 1 is selected', () => {
it('should isLocalUploadTabSelected return true when tabIndex 1 is selected', async () => {
enableLocalUpload();
selectTabByIndex(1);
await selectTabByIndex(1);
expect(component.isLocalUploadTabSelected()).toEqual(true);
});
@@ -428,9 +432,11 @@ describe('ContentNodeSelectorComponent', () => {
it('should tabs be headless when local upload is not enabled', () => {
component.data.showLocalUploadButton = false;
fixture.detectChanges();
const tabGroup = fixture.debugElement.queryAll(By.css('.adf-content-node-selector-headless-tabs'))[0];
const tabGroup = fixture.debugElement.queryAll(By.css('.adf-content-node-selector-dialog-content'))[0];
const nodePanel = fixture.debugElement.queryAll(By.css('.adf-content-node-selector-panel'))[0];
expect(tabGroup).not.toBe(undefined);
expect(tabGroup).toBeUndefined();
expect(nodePanel).not.toBeUndefined();
});
it('should tabs show headers when local upload is enabled', () => {
@@ -458,8 +464,7 @@ describe('ContentNodeSelectorComponent', () => {
it('should show drag and drop area with the empty list template when no upload has started', async () => {
enableLocalUpload();
const uploadFromLocalTab = getTabLabel(1);
uploadFromLocalTab.nativeElement.click();
await selectTabByIndex(1);
fixture.detectChanges();
await fixture.whenRenderingDone();
@@ -473,8 +478,7 @@ describe('ContentNodeSelectorComponent', () => {
it('should not show the empty list template when an upload has started', async () => {
enableLocalUpload();
const uploadFromLocalTab = getTabLabel(1);
uploadFromLocalTab.nativeElement.click();
await selectTabByIndex(1);
component.uploadStarted = true;
fixture.detectChanges();
@@ -112,7 +112,7 @@
</form>
<hr class="adf-share-link__separation-line" />
</mat-dialog-content>
<div mat-dialog-actions>
<div class="adf-share-link__actions" mat-dialog-actions>
<button data-automation-id="adf-share-dialog-close" mat-button color="primary" mat-dialog-close>
{{ 'SHARE.CLOSE' | translate }}
</button>
@@ -97,20 +97,14 @@
.adf-full-width {
width: 100%;
background-color: var(--theme-grey-text-background-color);
border-radius: 6px;
padding-top: 8px;
}
.adf-sharable-link {
margin-left: 8px;
}
.mat-form-field-infix {
border-top: unset;
}
.mat-dialog-actions {
.adf-share-link__actions {
justify-content: flex-end;
padding: 0;
margin: 8px 0 0;
@@ -121,37 +115,4 @@
margin-right: 12px;
}
}
.mat-form-field-flex {
align-items: center;
}
.mat-dialog-container {
padding: 0;
}
.mat-form-field-appearance-legacy .mat-form-field-underline {
display: none;
}
.mat-form-field-appearance-legacy .mat-form-field-wrapper {
padding-bottom: 8px;
margin-right: 8px;
margin-left: 8px;
}
@media screen and (max-width: 380px) {
.mat-dialog-container {
padding: 0 15px;
}
.mat-dialog-actions {
margin-bottom: 0;
padding: 2px 0;
}
.mat-form-field-suffix {
padding-left: 8px;
}
}
}
@@ -1,14 +1,10 @@
.adf {
&-content-type-dialog {
.mat-expansion-panel {
margin-bottom: 10px;
& .adf-content-type-accordion {
margin: 10px;
}
}
&-content-type-accordion {
margin: 10px;
}
&-content-type-dialog-title {
font-size: large;
font-weight: 200;
@@ -24,6 +24,10 @@ import { ContentTypeDialogComponent } from './content-type-dialog.component';
import { ContentTypeService } from './content-type.service';
import { ContentTypeDialogComponentData } from './content-type-metadata.interface';
import { TypeEntry } 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';
const elementCustom: TypeEntry = {
entry: {
@@ -82,6 +86,7 @@ describe('Content Type Dialog Component', () => {
let fixture: ComponentFixture<ContentTypeDialogComponent>;
let contentTypeService: ContentTypeService;
let data: ContentTypeDialogComponentData;
let loader: HarnessLoader;
beforeEach(async () => {
data = {
@@ -116,6 +121,7 @@ describe('Content Type Dialog Component', () => {
contentTypeService = TestBed.inject(ContentTypeService);
spyOn(contentTypeService, 'getContentTypeByPrefix').and.returnValue(of(elementCustom));
fixture = TestBed.createComponent(ContentTypeDialogComponent);
loader = TestbedHarnessEnvironment.loader(fixture);
fixture.detectChanges();
});
@@ -147,13 +153,11 @@ describe('Content Type Dialog Component', () => {
});
it('should show the property with the aspect prefix not the inherited ones', async () => {
const showPropertyAccordion: HTMLButtonElement = fixture.nativeElement.querySelector('.adf-content-type-accordion .mat-expansion-panel-header');
expect(showPropertyAccordion).toBeDefined();
showPropertyAccordion.click();
fixture.detectChanges();
await fixture.whenStable();
const propertyShowed: NodeList = fixture.nativeElement.querySelectorAll('.adf-content-type-table .mat-row');
expect(propertyShowed.length).toBe(3);
await (await loader.getHarness(MatExpansionPanelHarness)).toggle();
const table = await loader.getHarness(MatTableHarness.with({ selector: '.adf-content-type-table' }));
expect((await table.getRows()).length).toBe(3);
});
it('should emit true when apply is clicked', (done) => {
@@ -8,7 +8,7 @@
<span *ngIf="showName" id="adf-userinfo-ecm-name-display" class="adf-userinfo-name">
{{ecmUser | fullName}}
</span>
<button mat-button [matMenuTriggerFor]="menu" class="adf-userinfo-menu_button"
<button mat-button [matMenuTriggerFor]="menu" class="adf-userinfo-menu_button adf-content-userinfo-button"
data-automation-id="adf-user-profile">
<div class="adf-userinfo-button-profile" id="user-profile">
<div *ngIf="identityUser; else showEcmUserImage" id="identity-user-image">
@@ -38,72 +38,64 @@
<mat-menu #menu="matMenu" id="user-profile-lists" [xPosition]="menuPositionX" [yPosition]="menuPositionY"
[overlapTrigger]="false" class="adf-userinfo-menu">
<mat-tab-group id="tab-group-env" (click)="stopClosing($event)" selectedIndex="0" role="menuitem"
class="adf-userinfo-tab adf-hide-tab">
<mat-tab label="{{ 'USER_PROFILE.TAB.CS' | translate }}" role="dialog"
*ngIf="mode === userInfoMode.CONTENT">
<mat-card class="adf-userinfo-card">
<mat-card-header class="adf-userinfo-card-header"
[style.background-image]="'url(' + ecmBackgroundImage + ')'">
<div *ngIf="ecmUser.avatarId; else initialTemplate"
class="adf-userinfo-profile-container adf-hide-small">
<img class="adf-userinfo-profile-picture" id="ecm-user-detail-image"
alt="ecm-profile-image" [src]="getEcmAvatar(ecmUser.avatarId)"/>
</div>
<ng-template #initialTemplate>
<div
[outerHTML]="ecmUser | usernameInitials:'adf-userinfo-profile-initials adf-hide-small'"></div>
</ng-template>
<mat-card *ngIf="mode === userInfoMode.CONTENT" class="adf-userinfo-card adf-content-userinfo-card">
<mat-card-header class="adf-userinfo-card-header"
[style.background-image]="'url(' + ecmBackgroundImage + ')'">
<div *ngIf="ecmUser.avatarId; else initialTemplate"
class="adf-userinfo-profile-container adf-hide-small">
<img class="adf-userinfo-profile-picture" id="ecm-user-detail-image"
alt="ecm-profile-image" [src]="getEcmAvatar(ecmUser.avatarId)"/>
</div>
<ng-template #initialTemplate>
<div
[outerHTML]="ecmUser | usernameInitials:'adf-userinfo-profile-initials adf-hide-small'"></div>
</ng-template>
<div class="mat-title" id="ecm-username">{{ecmUser | fullName}}</div>
</mat-card-header>
<mat-card-content>
<div class="adf-userinfo-supporting-text">
<div class="adf-userinfo-detail">
<h2 id="ecm-full-name"
class="adf-userinfo__detail-title">{{ecmUser | fullName}}</h2>
<span id="ecm-email"> {{ecmUser.email}} </span>
<a href="#/profile">
{{ 'USER_PROFILE.LABELS.MY_PROFILE' | translate }}</a>
</div>
<div class="adf-userinfo-detail">
<div class="mat-title" id="ecm-username">{{ecmUser | fullName}}</div>
</mat-card-header>
<mat-card-content>
<div class="adf-userinfo-supporting-text">
<div class="adf-userinfo-detail">
<h2 id="ecm-full-name"
class="adf-userinfo__detail-title">{{ecmUser | fullName}}</h2>
<span id="ecm-email"> {{ecmUser.email}} </span>
<a href="#/profile">
{{ 'USER_PROFILE.LABELS.MY_PROFILE' | translate }}</a>
</div>
<div class="adf-userinfo-detail">
<span class="adf-userinfo__secondary-info" id="ecm-job-title-label">
{{ 'USER_PROFILE.LABELS.ECM.JOB_TITLE' | translate }}
<span id="ecm-job-title"> {{ ecmUser.jobTitle ? ecmUser.jobTitle : 'N/A' }} </span>
</span>
</div>
</div>
</mat-card-content>
</mat-card>
</mat-tab>
<mat-tab id="identity-panel" role="dialog" *ngIf="mode === userInfoMode.CONTENT_SSO">
<mat-card class="adf-userinfo-card">
<mat-card-header class="adf-userinfo-card-header"
[style.background-image]="'url(' + bpmBackgroundImage + ')'">
<div *ngIf="ecmUser.avatarId; else initialTemplate"
class="adf-userinfo-profile-container adf-hide-small">
<img class="adf-userinfo-profile-picture" id="ecm-user-detail-image"
alt="ecm-profile-image" [src]="getEcmAvatar(ecmUser.avatarId)"/>
</div>
<ng-template #initialTemplate>
<div
[outerHTML]="identityUser | usernameInitials:'adf-userinfo-profile-initials adf-hide-small'"></div>
</ng-template>
<div class="mat-title" id="identity-username">{{identityUser | fullName}}</div>
</mat-card-header>
<mat-card-content>
<div class="adf-userinfo-supporting-text">
<div class="adf-userinfo-detail">
<h2 id="identity-full-name"
class="adf-userinfo__detail-title">{{identityUser | fullName}}</h2>
<span id="identity-email"> {{identityUser.email}} </span>
<a href="#/profile">
{{ 'USER_PROFILE.LABELS.MY_PROFILE' | translate }}</a>
</div>
</div>
</mat-card-content>
</mat-card>
</mat-tab>
</mat-tab-group>
</div>
</div>
</mat-card-content>
</mat-card>
<mat-card *ngIf="mode === userInfoMode.CONTENT_SSO" class="adf-userinfo-card adf-content-userinfo-card">
<mat-card-header class="adf-userinfo-card-header"
[style.background-image]="'url(' + bpmBackgroundImage + ')'">
<div *ngIf="ecmUser.avatarId; else initialTemplate"
class="adf-userinfo-profile-container adf-hide-small">
<img class="adf-userinfo-profile-picture" id="ecm-user-detail-image"
alt="ecm-profile-image" [src]="getEcmAvatar(ecmUser.avatarId)"/>
</div>
<ng-template #initialTemplate>
<div
[outerHTML]="identityUser | usernameInitials:'adf-userinfo-profile-initials adf-hide-small'"></div>
</ng-template>
<div class="mat-title" id="identity-username">{{identityUser | fullName}}</div>
</mat-card-header>
<mat-card-content>
<div class="adf-userinfo-supporting-text">
<div class="adf-userinfo-detail">
<h2 id="identity-full-name"
class="adf-userinfo__detail-title">{{identityUser | fullName}}</h2>
<span id="identity-email"> {{identityUser.email}} </span>
<a href="#/profile">
{{ 'USER_PROFILE.LABELS.MY_PROFILE' | translate }}</a>
</div>
</div>
</mat-card-content>
</mat-card>
</mat-menu>
</div>
@@ -49,7 +49,7 @@
display: inline-block;
}
&-userinfo-menu_button.mat-button {
&-userinfo-menu_button.adf-content-userinfo-button {
margin-right: 0;
border-radius: 90%;
padding: 0;
@@ -57,21 +57,6 @@
height: 40px;
}
&-userinfo-tab .mat-tab-header {
align-self: center;
width: 100%;
min-width: 250px;
}
&-userinfo-tab .mat-tab-label {
flex: auto;
font-weight: 500;
font-size: var(--theme-body-1-font-size);
text-transform: uppercase;
line-height: 48px;
text-align: center;
}
&-userinfo-card-header {
align-items: center;
display: flex;
@@ -81,7 +66,7 @@
box-sizing: border-box;
}
&-userinfo-card.mat-card {
&-userinfo-card.adf-content-userinfo-card {
padding: 0;
}
@@ -146,14 +131,10 @@
&-userinfo-detail {
text-align: left;
}
&-hide-tab .mat-tab-label-active {
display: none !important;
}
}
@media only screen and (min-device-width: 480px) {
.mat-menu-panel.adf-userinfo-menu {
.adf-content-userinfo-menu.adf-userinfo-menu {
max-height: 450px;
min-width: 450px;
overflow: auto;
@@ -161,6 +142,6 @@
}
}
.mat-menu-panel.adf-userinfo-menu .mat-menu-content {
.adf-content-userinfo-menu.adf-userinfo-menu > div {
padding: 0;
}
@@ -217,14 +217,6 @@ describe('ContentUserInfoComponent', () => {
expect(ecmJobTitle.nativeElement.textContent).toContain('N/A');
});
it('should not show the tabs', () => {
const imageButton = element.querySelector<HTMLButtonElement>('[data-automation-id="user-initials-image"]');
imageButton.click();
fixture.detectChanges();
const tabHeader = fixture.debugElement.query(By.css('#tab-group-env'));
expect(tabHeader.classes['adf-hide-tab']).toBeTruthy();
});
it('should display the current user Initials if the user dose not have avatarId', () => {
fixture.detectChanges();
const pipe = new InitialUsernamePipe(new FakeSanitizer());
@@ -10,9 +10,9 @@
</mat-dialog-content>
<mat-dialog-actions>
<span class="adf-dialog-spacer" data-automation-id="adf-confirm-dialog-spacer"></span>
<button id="adf-confirm-accept" mat-button color="primary" data-automation-id="adf-confirm-dialog-confirmation"
<button id="adf-confirm-accept" class="adf-confirm-dialog-button" mat-button color="primary" data-automation-id="adf-confirm-dialog-confirmation"
[mat-dialog-close]="true">{{ yesLabel | translate }}</button>
<button id="adf-confirm-all" mat-button *ngIf="thirdOptionLabel" [mat-dialog-close]="thirdOptionLabel" data-automation-id="adf-confirm-dialog-confirm-all">{{ thirdOptionLabel | translate }}</button>
<button id="adf-confirm-cancel" mat-button [mat-dialog-close]="false" data-automation-id="adf-confirm-dialog-reject"
<button id="adf-confirm-all" class="adf-confirm-dialog-button" mat-button *ngIf="thirdOptionLabel" [mat-dialog-close]="thirdOptionLabel" data-automation-id="adf-confirm-dialog-confirm-all">{{ thirdOptionLabel | translate }}</button>
<button id="adf-confirm-cancel" class="adf-confirm-dialog-button" mat-button [mat-dialog-close]="false" data-automation-id="adf-confirm-dialog-reject"
cdkFocusInitial>{{ noLabel | translate }}</button>
</mat-dialog-actions>
@@ -2,6 +2,8 @@
flex: 1 1 auto;
}
.adf-confirm-dialog .mat-dialog-actions .mat-button-wrapper {
text-transform: uppercase;
.adf-confirm-dialog {
& .adf-confirm-dialog-button {
text-transform: uppercase;
}
}
@@ -3,7 +3,7 @@
<mat-progress-bar color="primary" mode="indeterminate"></mat-progress-bar>
</div>
<mat-dialog-actions align="end">
<button mat-button color="primary" id="cancel-button" (click)="cancelDownload()">
<button class="adf-download-zip-dialog-button" mat-button color="primary" id="cancel-button" (click)="cancelDownload()">
{{ 'CORE.DIALOG.DOWNLOAD_ZIP.ACTIONS.CANCEL' | translate }}
</button>
</mat-dialog-actions>
@@ -1,3 +1,3 @@
.adf-download-zip-dialog .mat-dialog-actions .mat-button-wrapper {
.adf-download-zip-dialog-button {
text-transform: uppercase;
}
@@ -15,7 +15,7 @@
* limitations under the License.
*/
import { DownloadBodyCreate, DownloadEntry, Node } from '@alfresco/js-api';
import { DownloadBodyCreate, DownloadEntry, DownloadsApi, Node } from '@alfresco/js-api';
import { from, Observable, of, ReplaySubject, Subject } from 'rxjs';
import { catchError } from 'rxjs/internal/operators/catchError';
import { zipNode, downloadEntry } from './download-zip-data.mock';
@@ -40,7 +40,7 @@ class AlfrescoApiMock {
}
export class ContentApiMock {
getContentUrl = (_: string, _1?: boolean, _2?: string): string => zipNode.entry.contentUrl;
getContentUrl = (): string => zipNode.entry.contentUrl;
}
class CoreMock {
@@ -49,19 +49,19 @@ class CoreMock {
}
export class NodesApiMock {
getNode = (_: string, _2?: any): any => of(zipNode.entry);
getNode = (): any => of(zipNode.entry);
}
class DownloadsApiMock {
createDownload = (_: DownloadBodyCreate, _2?: any): Promise<DownloadEntry> => Promise.resolve(downloadEntry);
class DownloadsApiMock extends DownloadsApi {
createDownload = (): Promise<DownloadEntry> => Promise.resolve(downloadEntry);
getDownload = (_: string, _2?: any): Promise<DownloadEntry> => Promise.resolve(downloadEntry);
cancelDownload(_: string) {}
getDownload = (): Promise<DownloadEntry> => Promise.resolve(downloadEntry);
cancelDownload = () => Promise.resolve(true);
}
export class DownloadZipMockService {
private _downloadsApi: DownloadsApiMock;
get downloadsApi(): DownloadsApiMock {
private _downloadsApi: DownloadsApi;
get downloadsApi(): DownloadsApi {
this._downloadsApi = this._downloadsApi ?? new DownloadsApiMock();
return this._downloadsApi;
}
@@ -1,4 +1,4 @@
<h2 data-automation-id="adf-folder-dialog-title" mat-dialog-title>
<h2 data-automation-id="adf-folder-dialog-title" class="adf-folder-dialog-title" mat-dialog-title>
{{ (editing ? editTitle : createTitle) | translate }}
</h2>
@@ -6,21 +6,6 @@
width: 100%;
}
.adf-lock-file-name {
.mat-checkbox-layout {
width: 100%;
}
.mat-checkbox-label {
text-overflow: ellipsis;
overflow: hidden;
}
.mat-checkbox-inner-container {
margin: auto 8px auto 0;
}
}
.adf-dialog-buttons button {
text-transform: uppercase;
}
@@ -34,11 +19,7 @@
}
@media screen and (max-width: 380px) {
.mat-form-field {
font-size: 6px;
}
.mat-dialog-title {
.adf-folder-dialog-title {
margin: 0;
}
@@ -2,7 +2,7 @@
<mat-dialog-content>
<form novalidate [formGroup]="form" (submit)="submit()">
<mat-form-field>
<mat-form-field class="adf-library-dialog-form-field">
<input
placeholder="{{ 'LIBRARY.DIALOG.FORM.NAME' | translate }}"
required
@@ -28,7 +28,7 @@
</mat-error>
</mat-form-field>
<mat-form-field>
<mat-form-field class="adf-library-dialog-form-field">
<input
required
placeholder="{{ 'LIBRARY.DIALOG.FORM.SITE_ID' | translate }}"
@@ -46,7 +46,7 @@
</mat-error>
</mat-form-field>
<mat-form-field>
<mat-form-field class="adf-library-dialog-form-field">
<textarea
matInput
placeholder="{{ 'LIBRARY.DIALOG.FORM.DESCRIPTION' | translate }}"
@@ -60,12 +60,14 @@
</mat-form-field>
<mat-radio-group
class="adf-library-dialog-radio-group"
[ngModelOptions]="{ standalone: true }"
[(ngModel)]="visibilityOption"
(change)="visibilityChangeHandler($event)"
>
<mat-radio-button
color="primary"
class="adf-library-dialog-radio-group-button"
[disabled]="option.disabled"
*ngFor="let option of visibilityOptions"
[attr.data-automation-id]="option.value"
@@ -79,12 +81,13 @@
</mat-dialog-content>
<mat-dialog-actions class="adf-action-buttons">
<button mat-button mat-dialog-close data-automation-id="cancel-library-id">
<button class="adf-action-button" mat-button mat-dialog-close data-automation-id="cancel-library-id">
{{ 'LIBRARY.DIALOG.CANCEL' | translate }}
</button>
<button
color="primary"
class="adf-action-button"
mat-button
(click)="submit()"
[disabled]="!form.valid || disableCreateButton"
@@ -1,19 +1,16 @@
.adf-library-dialog {
.mat-radio-group {
.adf-library-dialog-radio-group {
display: flex;
flex-direction: column;
margin: 0 0 20px;
}
.mat-radio-group .mat-radio-button {
.adf-library-dialog-radio-group .adf-library-dialog-radio-group-button {
margin: 10px 0;
}
.mat-form-field {
.adf-library-dialog-form-field {
width: 100%;
}
mat-form-field {
padding-top: 20px;
}
@@ -22,7 +19,7 @@
flex-direction: row;
justify-content: flex-end;
.mat-button {
.adf-action-button {
text-transform: uppercase;
}
}
@@ -199,7 +199,7 @@ export class LibraryDialogComponent implements OnInit, OnDestroy {
}
private handleError(error: any): any {
let errorMessage = 'CORE.MESSAGES.ERRORS.GENERIC';
const errorMessage = 'CORE.MESSAGES.ERRORS.GENERIC';
try {
const {
@@ -912,15 +912,15 @@ describe('DocumentList', () => {
documentList.dataTable.columnsWidthChanged.emit(newColumnWidth as DataColumn[]);
expect(documentList.onColumnsWidthChange).toHaveBeenCalledWith(newColumnWidth);
expect(documentList.columnsWidthChanged.emit).toHaveBeenCalledWith({'tag': 65, 'name': 77});
expect(documentList.columnsWidthChanged.emit).toHaveBeenCalledWith({tag: 65, name: 77});
});
it('should emit new columns visibility', () => {
const newColumnsVisisbility = [{key: 'key', type: 'text', id: 'tag', isHidden: true}, {key: 'key1', type: 'text', id: 'name'}];
const newColumnsVisibility = [{key: 'key', type: 'text', id: 'tag', isHidden: true}, {key: 'key1', type: 'text', id: 'name'}];
spyOn(documentList.columnsVisibilityChanged, 'emit');
documentList.onColumnsVisibilityChange(newColumnsVisisbility as DataColumn[]);
documentList.onColumnsVisibilityChange(newColumnsVisibility as DataColumn[]);
expect(documentList.columnsVisibilityChanged.emit).toHaveBeenCalledWith({'tag': false});
expect(documentList.columnsVisibilityChanged.emit).toHaveBeenCalledWith({tag: false});
});
it('should perform folder navigation on single click', () => {
@@ -108,7 +108,7 @@ export class ShareDataRow implements DataRow {
}
getValue(key: string): any {
if (this.cache[key] !== undefined) {
if (this.cache[key]) {
return this.cache[key];
}
return ObjectUtils.getValue(this.obj.entry, key);
@@ -101,7 +101,7 @@ export class ShareDataTableAdapter implements DataTableAdapter {
}
const dataRow = row as ShareDataRow;
const value: any = row.getValue(col.key);
if (dataRow.cache[col.key] !== undefined) {
if (dataRow.cache[col.key]) {
return dataRow.cache[col.key];
}
@@ -139,7 +139,7 @@ export class CustomResourcesService {
language: 'afts'
},
filterQueries,
include: ['path', 'properties', 'allowableOperations'],
include: ['path', 'properties', 'allowableOperations', 'aspectNames'],
sort: [
{
type: 'FIELD',
@@ -0,0 +1,134 @@
/*!
* @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.
*/
import { TestBed } from '@angular/core/testing';
import { ContentTestingModule } from '../../testing/content.testing.module';
import { GroupService } from '@alfresco/adf-content-services';
import { ContentIncludeQuery, GroupEntry } from '@alfresco/js-api';
describe('GroupService', () => {
let service: GroupService;
let group: GroupEntry;
let returnedGroup: GroupEntry;
let opts: ContentIncludeQuery;
beforeEach(() => {
TestBed.configureTestingModule({
imports: [ContentTestingModule]
});
service = TestBed.inject(GroupService);
group = {
entry: {
id: 'some id',
displayName: 'some name',
description: 'some description'
}
};
returnedGroup = JSON.parse(JSON.stringify(group));
opts = {
include: ['description']
};
});
describe('getGroup', () => {
it('should return group returned by GroupsApi', (done) => {
spyOn(service.groupsApi, 'getGroup').and.returnValue(Promise.resolve(returnedGroup));
service.getGroup(group.entry.id, opts).subscribe((groupEntry) => {
expect(groupEntry).toBe(returnedGroup);
expect(service.groupsApi.getGroup).toHaveBeenCalledWith(group.entry.id, {
include: ['description']
});
done();
});
});
it('should return group returned by GroupsApi when description is not supplied', (done) => {
returnedGroup.entry.description = undefined;
spyOn(service.groupsApi, 'getGroup').and.returnValue(Promise.resolve(returnedGroup));
service.getGroup(group.entry.id, opts).subscribe((groupEntry) => {
expect(groupEntry).toEqual({
entry: {
id: returnedGroup.entry.id,
displayName: returnedGroup.entry.displayName,
description: ''
}
});
expect(service.groupsApi.getGroup).toHaveBeenCalledWith(group.entry.id, {
include: ['description']
});
done();
});
});
});
describe('updateGroup', () => {
it('should return updated Group', (done) => {
spyOn(service.groupsApi, 'updateGroup').and.returnValue(Promise.resolve(returnedGroup));
service.updateGroup(group.entry, opts).subscribe((groupEntry) => {
expect(groupEntry).toEqual(returnedGroup);
expect(service.groupsApi.updateGroup).toHaveBeenCalledWith(group.entry.id, {
displayName: group.entry.displayName,
description: group.entry.description
}, {
include: ['description']
});
done();
});
});
it('should return updated Group when description is not supplied', (done) => {
returnedGroup.entry.description = undefined;
spyOn(service.groupsApi, 'updateGroup').and.returnValue(Promise.resolve(returnedGroup));
service.updateGroup(group.entry, opts).subscribe((groupEntry) => {
expect(groupEntry).toEqual({
entry: {
id: returnedGroup.entry.id,
displayName: returnedGroup.entry.displayName,
description: ''
}
});
expect(service.groupsApi.updateGroup).toHaveBeenCalledWith(group.entry.id, {
displayName: group.entry.displayName,
description: group.entry.description
}, {
include: ['description']
});
done();
});
});
it('should allow to update only description', (done) => {
spyOn(service.groupsApi, 'updateGroup').and.returnValue(Promise.resolve(returnedGroup));
group.entry.displayName = undefined;
service.updateGroup(group.entry, opts).subscribe((groupEntry) => {
expect(groupEntry).toEqual(returnedGroup);
expect(service.groupsApi.updateGroup).toHaveBeenCalledWith(group.entry.id, {
displayName: group.entry.displayName,
description: group.entry.description
}, {
include: ['description']
});
done();
});
});
});
});

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