Compare commits

...
Author SHA1 Message Date
Marco Carrozzo 0447a30b38 token fix 2023-03-09 16:54:48 +01:00
Marco Carrozzo b6e6237b45 token fix 2023-03-09 16:03:52 +01:00
Marco Carrozzo 6dd3fc61fc debug 2023-03-09 15:30:31 +01:00
tomasz hanaj a39480bc48 [AAE-12872] custom css variables replaced with theme related variables (#8332)
* AAE-12872 replaced global variables related to foreground text

* AAE-12872 replaced global css variables related to foreground

* AAE-12872 replaced global css variables related to background,palette colors
2023-03-08 23:40:48 +00:00
AleksanderSklorz 9863149a28 [ACS-4592] missing right click menu on row and left click is only allow on indicator rotate (#8327)
* ACS-4592 Displaying context menu for tree list row and allow to expand row by clicking at label

* ACS-4592 Added clicking on label for load more button

* ACS-4592 Unit tests

* ACS-4592 Added documentation for context menu for tree component and fixed lint issues

* ACS-4592 Trigger stuck check
2023-03-08 08:11:48 -05:00
Amedeo Lepore 41f9974919 [AAE-13016] Fix errors: can't resolve 'angular-oauth2-oidc' and 'angular-oauth2-oidc-jwks' (#8345) 2023-03-08 12:12:00 +01:00
dependabot[bot] 997fa81c59 Bump eslint from 8.30.0 to 8.35.0 (#8341)
Bumps [eslint](https://github.com/eslint/eslint) from 8.30.0 to 8.35.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v8.30.0...v8.35.0)

---
updated-dependencies:
- dependency-name: eslint
  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>
2023-03-08 10:46:17 +01:00
Eugenio Romano 8db863219c [AAE-12723] Move rich text editor in Process cloud (#8283)
* move rich text editor in Process cloud

* fix import

* fix

* fix
2023-03-07 14:12:36 +01:00
Denys Vuika 29132ec5c8 Revert "cleanup"
This reverts commit 3711eecca4.
2023-03-07 11:00:04 +00:00
Denys Vuika 3711eecca4 cleanup 2023-03-07 10:58:57 +00:00
f4a8084f0c [AAE-12511] implement OIDC authentication capabilities in ADF (#7856)
* feat: add custom AlfrescoApiHttpClient [ci:force]

* feat: update configs

* feat: move api to follow second entry point structure

* feat: add auth module [ci:force]

* Fix rebasing issues

* Isolate oidc package as subfolder

* Canary mode

* [AAE-12498] Fix unit test should load external settings: resolve reponse data instead returning default config

* [AAE-12498] Set @nrwl/eslint-plugin-nx@14.5.4 version to fix lint job that failed because of the 14.8.6 version (https://github.com/Alfresco/alfresco-ng2-components/actions/runs/4165060892/jobs/7207651856\#step:5:3379)

* [AAE-12498] Fix stories:build-storybook:ci issues

* [AAE-7991] cherry-pick e935f7b0b1 from repo https://github.com/Alfresco/alfresco-ng2-components/pull/7818: send onLogin to initialize acs version to fix [C362242] on canary configuration

* [AAE-12498] Fix security hotspot: fix unsafe pseudorandom number generator

* test: add missing tests for oidc-auth.guard

* test: fix lint issues

* chore: remove assignment in return

* [AAE-12498] Remove warning comment because we already know we're doing breaking changes

* [AAE-12498] Add auth-config.service unit tests

* [AAE-12498] Remove getUserProfile from auth service

---------

Co-authored-by: Andras Popovics <popovics@ndras.hu>
Co-authored-by: Amedeo Lepore <amedeo.lepore@hyland.com>
2023-03-07 09:53:11 +01:00
Ehsan Rezaei dd91f2eeb6 AAE-12245: Migrated from event cancelBubble to stopPropagation (#8311) 2023-03-06 21:57:51 +01:00
dependabot[bot] cb69f34aa7 Bump eslint-plugin-import from 2.26.0 to 2.27.5 (#8322)
Bumps [eslint-plugin-import](https://github.com/import-js/eslint-plugin-import) from 2.26.0 to 2.27.5.
- [Release notes](https://github.com/import-js/eslint-plugin-import/releases)
- [Changelog](https://github.com/import-js/eslint-plugin-import/blob/main/CHANGELOG.md)
- [Commits](https://github.com/import-js/eslint-plugin-import/compare/v2.26.0...v2.27.5)

---
updated-dependencies:
- dependency-name: eslint-plugin-import
  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>
2023-03-06 17:24:01 +01:00
Maurizio Vitale 63886d5262 Use the right path for testing (#8343) 2023-03-06 16:18:27 +00:00
Maurizio Vitale 8567b147be Use as default prod (#8342)
* Use as default prod

* remove restricted
2023-03-06 15:54:49 +00:00
Maurizio Vitale 52a733d2a2 [AAE-12870] use gh action to publish (#8317)
* use gh action to publish

* revert and rely on action

* Use token as part of workflow

* Use token as part of workflow

* remove useless file
2023-03-06 15:12:44 +00:00
Gloria Camino ad150bf610 LOC-411 - Also related to PRODDEL-6965 - updated strings for ADF 6.0 in 16 languages (#8339) 2023-03-06 10:21:52 +00:00
Ehsan Rezaei 77fde1ab65 [AAE-12840] - Fix saving preference when columns width or order changes (#8331)
* AAE-12840: Fixed saving preference when column widths change in tasks and processes list

* AAE-12840: Fixed saving preference when columns order change in tasks and processes list

* AAE-12840: Fixed lint issue

* AAE-12840: fixed lint issue
2023-03-03 18:05:29 +01:00
Ehsan Rezaei 005b26c54f AAE-12839: Improved column resize handle clickable area (#8325)
* AAE-12839: Improved column resize handle clickable area

* AAE-12839: Fixed lint issue
2023-03-03 17:44:02 +01:00
Marco Carrozzo 97253bba85 [HXOR-164] pr check job (#8337)
* HXOR-164 pr check job
2023-03-02 15:58:44 +01:00
Maurizio Cacace 1049de9825 fix release npm (#8334) 2023-03-01 15:00:35 +00:00
Maurizio Cacace 5d92a08f1e fix release npm (#8333) 2023-03-01 14:19:02 +00:00
Ardit Domi 8ab4e15daf Release of 6.0.0-A.3 (#8330) 2023-03-01 13:29:00 +00:00
Ardit Domi 99db02b9db Fix typo in ADF cli changelog command (#8328) 2023-02-28 15:52:13 +00:00
maurizio-cacace b156e866b2 quick fix username adf 2023-02-28 16:13:27 +01:00
maurizio-cacace aa6b5089bb quick fix branch 2023-02-28 15:58:04 +01:00
Maurizio Cacace fc224713f2 AAE-11918A - remove travis env var (#8312)
* AAE-11918 - travis_branch env removal

* AAE-11918 - travis_branch env removal

* event_type and travis_pull_request_branch  env removal

* e travis_build_dir, travis_build_number, travis_commit  env removal

* rename scripts path

* remove .travis file

* remove .travis file

* remove .travis file

* just a commit

* trying to fix e2e test

* fix e2e issue

* remove action load travis env

* with action travis env var load

* remove action travis load env vars

* remove action travis load env vars

* remove action travis load env vars

* last check

* test release flow in dry-run

* final check for review

* fix env variables

* fix env variables

* fix env variables

* remove devel flag

* revert renaming action facade

* git mv commit

* git mv commit
2023-02-28 15:36:22 +01:00
Ardit Domi 2bc74f012d Regenerate package lock with lock file version 1 (#8326) 2023-02-28 13:36:18 +00:00
Marco Carrozzo c890999c80 AAE-12860-build errors on cron
skip nxcache exchange between jobs, changed node modules cache key
2023-02-27 12:52:43 +01:00
Jatin Chugh 713320b01d [ACS-4270] Content overlaps other content at 400% zoom width equivalent issue fixed (#8264) 2023-02-23 21:19:12 +00:00
Aayush Rohila 2f3c9f1658 [ACS-4290] Changed filter icon to generic filter icon instead of the custom icon that was being used so far (#8237) 2023-02-23 21:18:02 +00:00
Aayush Rohila b5310f6b89 [ACS-4294] Added title to clear button and changed its icon type to clear from close (#8270)
* Added label to clear button and changed icon from close to clear

* Added the label to icon

* changed from property binding to attribute binding
2023-02-23 21:16:24 +00:00
AleksanderSklorz 7028910616 [ACS-4670] Removed View 0 More tags button when chip takes more than on… (#8307)
* ACS-4670 Removed View 0 More tags button when chip takes more than one line

* ACS-4670 Removed async and import reduction
2023-02-23 21:15:36 +00:00
Nikita Maliarchuk d26593e4d8 [ACS-4571] Move SecurityControlsService to ADF Content Lib (#8286)
* [ACS-4571] move SecurityControlsService to ADF content lib

* [ACS-4571] build fix

* [ACS-4571] build fix

* [ACS-4571] build fix

* [ACS-4571] resolved ts-ignore in unit-tests

* [ACS-4571] renamed AdminCcSecurityControlsServicesModule to SecurityControlsServiceModule

* [ACS-4571] return types added

* [ACS-4571] added docs for SecurityControlsService

* [ACS-4571] docs typo fix

* [ACS-4571] docs typo fix

* [ACS-4571] linting

* [ACS-4571] fixed failing test

* [ACS-4571] added missing unit tests

* [ACS-4571] linting

* [ACS-4571] set the default maxItems to UserPreferencesService.paginationSize

* [ACS-4571] changed createSecurityMarks() return type

* [ACS-4571] moved import line up

* [ACS-4571] finish loading status in some functions
2023-02-23 17:44:32 +00:00
Nikita Maliarchuk 25d85c7890 [ACS-4331] Add deleteTag method to tag service (#8126)
* ACS-4331 - added deleteTag method to tag service

* ACS-4331 - docs + unit test

* ACS-4331 - docs correction

* ACS-4331 - docs alignment fix

* ACS-4331 - applied small fixes

* ACS-4331 - updated docs

* [ACS-4331] removed extra spaces
2023-02-23 17:38:57 +00:00
Maurizio Vitale 2dccde9e6b publish on gh first (#8314) 2023-02-23 17:06:17 +00:00
Maurizio Vitale 7d02ea61a2 Publish the adf pkgs on gh pkg registry (#8313) 2023-02-23 16:33:48 +00:00
Alfresco BuildandVito Albano 33d7fca2cf Update branch for JS-API PR#657 (#8310)
* [ci:force][auto-commit] Update JS-API to 5.4.0-657 for branch: update-js-api originated from JS-API PR: 262

* Fixed package-lock

---------

Co-authored-by: Vito Albano <vito.albano@alfresco.com>
2023-02-23 15:20:33 +00:00
Ehsan Rezaei e7bb097be6 Updated datatable component docs (#8309) 2023-02-23 09:35:41 +01:00
Maurizio Vitaleandalfresco-build 90c8cb3add Cron - Separate cron e2e from upstream and for different repo (#8300)
* separate cron e2e from upstream and for different repo

* remove useless env

---------

Co-authored-by: alfresco-build <alfresco-build@hyland.com>
2023-02-22 14:30:29 +00:00
Aayush Rohila 8625a49df7 [ACS-4281] removed heading role from breadcrumbs. (#8278) 2023-02-22 14:20:09 +00:00
Maurizio Cacace d412579836 fix concurrency: only on PR workflow (#8306) 2023-02-22 15:05:16 +01:00
Vito Albano fbccbb5a98 Fixed error on custom style and added doc for BC (#8297) 2023-02-22 14:37:07 +01:00
dependabot[bot] bac4d786bc Bump eslint-plugin-jsdoc from 39.3.6 to 40.0.0 (#8293)
Bumps [eslint-plugin-jsdoc](https://github.com/gajus/eslint-plugin-jsdoc) from 39.3.6 to 40.0.0.
- [Release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases)
- [Changelog](https://github.com/gajus/eslint-plugin-jsdoc/blob/main/.releaserc)
- [Commits](https://github.com/gajus/eslint-plugin-jsdoc/compare/v39.3.6...v40.0.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-02-22 14:36:07 +01:00
dependabot[bot] 0d4049b333 Bump @editorjs/underline from 1.0.0 to 1.1.0 (#8292)
Bumps [@editorjs/underline](https://github.com/editor-js/underline) from 1.0.0 to 1.1.0.
- [Release notes](https://github.com/editor-js/underline/releases)
- [Commits](https://github.com/editor-js/underline/commits)

---
updated-dependencies:
- dependency-name: "@editorjs/underline"
  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>
2023-02-22 12:05:10 +01:00
Maurizio Cacace 69689876af HXOR-109 - add json checker in PR workflow (#8304)
* HXOR-109-json-checker version:2 test

* HXOR-109-json-checker version:2 test

* HXOR-109-json-checker version:2 test

* HXOR-109-json-checker version:1 test

* HXOR-109-json-checker version:1 test

* remove personal branch
2023-02-22 10:17:33 +01:00
Eugenio Romanoanddependabot[bot] 55ec15e174 Bump lint-staged from 13.1.0 to 13.1.2 (#8302)
* Bump lint-staged from 13.1.0 to 13.1.2

Bumps [lint-staged](https://github.com/okonet/lint-staged) from 13.1.0 to 13.1.2.
- [Release notes](https://github.com/okonet/lint-staged/releases)
- [Commits](https://github.com/okonet/lint-staged/compare/v13.1.0...v13.1.2)

---
updated-dependencies:
- dependency-name: lint-staged
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* fix

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-02-22 10:14:59 +01:00
Marco Carrozzo c89714be83 AAE-12767 (#8299) 2023-02-22 10:00:08 +01:00
Alfresco Build 6e7b1808cc [ci:force][auto-commit] Update JS-API to 5.4.0-655 for branch: update-js-api originated from JS-API PR: 260 (#8276) 2023-02-21 15:49:01 +01:00
Jatin Chugh 8e3d5a9b9f [ACS-4326] Content was overlapping with other contents and some elements were missing when we zoom at 400% or 320px equivalent which is fixed (#8191)
* content was overlapping earlier and some of the elements were lost at 400% or 320px equivalent which is fixed now

* extra space removal

* content overlapping verified upto 400% zoom including all other zooms i.e 200% 300% etc

* length-zero-no-unit issue fixed - stylelint
2023-02-20 15:59:25 +00:00
AleksanderSklorz 02dcd4fb48 [ACS-4565] add search for categories tree in admin cc (#8279)
* ACS-4565 Added possibility to search categories

* ACS-4565 Fixed unit test

* ACS-4565 Fixed lint issue

* ACS-4565 Removed extra empty line

* ACS-4565 Replaced tags label with categories label in unit tests

* ACS-4565 Replaced tags label with categories label in doc
2023-02-20 15:53:22 +00:00
tomasz hanajandEhsan Rezaei 477d49eaee AAE-12578 added fn to save col width with preferences (#8296)
* AAE-12578 added fn to save col width with preferences Resolved Conflict

* AAE-12578 fixed formatting issues

* Empty-Commit

* AAE-12578 added resizing column feature to process list

* AAE-12578: Removed duplicate component entry

---------

Co-authored-by: Ehsan Rezaei <ehsan.rezaei@hyland.com>
2023-02-20 16:11:16 +01:00
Maurizio Vitaleandalfresco-build b876102098 trigger upstream daily for hxp monorepo (#8298)
* trigger upstream daily for hxp monorepo

* add a develop test

* add a trigger

* Fix inputs

* [trigger adf]

* check value

* remove develop and merge

---------

Co-authored-by: alfresco-build <alfresco-build@hyland.com>
2023-02-20 14:36:04 +00:00
Ehsan Rezaei f76e10ff09 AAE-12274: Added support for column resizing to process and task lists (#8275)
* AAE-12274: Added support for column resizing to process and task lists

* AAE-12274: trigger travis
2023-02-20 14:42:25 +01:00
Ehsan Rezaei 4aa2e0eb87 AAE-12273: Implemented column resizing directive (#8272)
* AAE-12273: Implemented column resizing directive

* AAE-12273: Updated datatable component docs with column resizing feature

* AAE-12273: Fixed lint errors

* AAE-12273: Fixed spell check and lint errors

* AAE-12273: Fixing lint issues

* AAE-12273: Excluded failing e2e

* AAE-12273: Excluded more failing E2Es

* AAE-12273: Excluded more failing e2e

* AAE-12273: Code Improvement

* AAE-12273: Fixed datatable column flex item shrink

* AAE-12273: Fixed unit tests of column header resizing flex item shrink
2023-02-20 10:45:03 +01:00
Nikita Maliarchuk 058cd9e01c [AAE-10594] Run unit tests in headless mode (#8141)
* AAE-10594 - changed karma configs to run unit tests in headless mode

* AAE-10594 - removed commets

* [AAE-10594] fixed failing test
2023-02-17 11:08:16 +00:00
Eugenio Romano 2062d4744c add content-app option in update ADF workflow 2023-02-17 10:10:55 +00:00
alfresco-build 6cd6eefc92 export empty var 2023-02-16 15:10:16 +00:00
alfresco-build 561f8c38d4 being able to update only apps 2023-02-16 15:02:51 +00:00
Maurizio Cacace f8f6d145f3 AAE-12721-PR-closed-check (#8282) 2023-02-16 15:03:59 +01:00
tomasz hanaj c00c7643b1 AAE-12716 updated the typography documentation (#8277)
* AAE-12716 updated the typography documentation

* tests trigger
2023-02-16 13:38:34 +00:00
Eugenio Romano 05e2033633 [AAE-12675] update pdfjs version to fix sign problem (#8266)
* update pdfjs version to fix sign problem
2023-02-16 13:37:13 +00:00
Maurizio Vitaleandalfresco-build 384628197e Being able to upstream alfresco-apps or alfresco-applications (#8280)
* Being able to upstream alfresco-apps or alfresco-applications

* Use alpha as default

---------

Co-authored-by: alfresco-build <alfresco-build@hyland.com>
2023-02-16 13:18:47 +00:00
tomasz hanaj f18fd94085 [AAE-12668] refactored typography for themes (#8268)
* AAE-12668 refactored typography for themes

* AAE-12668 added missing spaces

* AAE-12668 removed parenthesis causing lint error
2023-02-16 00:46:41 +00:00
MichalKinas 41f135df0f [ACS-4634] Add ADF and JS API upstream to applications repo (#8274)
* [ACS-4634] Add ADF and JS API upstream to applications repo
2023-02-15 17:14:21 +01:00
Artur Cichoń 9014a85eda [AAE-12662] Get rid of multiplicity of "more than one element found for locator" warnings in tests caused by redundant click (#8273)
* [AAE-12662] Get rid of multiplicity of 'more than one element found for locator' warnings

* trigger travis
2023-02-15 16:11:06 +01:00
Diogo Bastos 96075ae456 [AAE-10779] User info component refactor (#8187)
* [AAE-10779] Update documentation

* [AAE-10779] Update demo-shell user-info component call

* [AAE-10779] Ecm user info component

* [AAE-10779] Identity user info component

* [AAE-10779] Bpm user info component

* [AAE-10779] Remove ecm-panel id references

* [AAE-10779] add stories and remove old component

* [AAE-10779] Update doc version and remove leftover html tag

* trigger travis

* [AAE-10779] rename ecm-user-info to content-user-info and bpm-user-info to process-user-info

* [AAE-10779] update docs

* [AAE-10779] fix demo-shell user-info

* [AAE-10779] add docs
2023-02-15 14:47:43 +00:00
Kasia Biernat c5710c0e61 [AAE-12134] unit test: Should be able to set number of columns for Header widget (#8267) 2023-02-15 11:35:15 +01:00
Alfresco Build 54bb8e24e5 [ci:force][auto-commit] Update JS-API to 5.4.0-643 for branch: update-js-api originated from JS-API PR: 643 (#8269) 2023-02-15 09:41:28 +00:00
swapnil-verma-glandsuneet-gupta 275d30b043 [ACS-4257] - Resolved a11y issue around jumping focus (#8168)
* ACS-4257 - Clicking on filter buttons on search results no longer switches focus from button to first element

* [ACS-4257] Added key listeners to open and close the menus to improve keyboard only usability

* ACS-4257 - Clicking on filter buttons on search results no longer switches focus from button to first element

* [ACS-4257] Added key listeners to open and close the menus to improve keyboard only usability

---------

Co-authored-by: suneet-gupta <suneet.gupta@hyland.com>
2023-02-14 22:01:12 +05:30
Eugenio Romano a1ec61f857 use one bucket variable to avoid: (#8263)
Can be miss configured with different buckets
We need to maintain two variables:
They seems to be used in different ways because one contain s3:// the other not
2023-02-14 15:26:26 +00:00
Alfresco Build 3b7ac02098 [ci:force][auto-commit] Update JS-API to 5.4.0-639 for branch: update-js-api originated from JS-API PR: 639 (#8255) 2023-02-14 14:48:58 +00:00
Denys Vuika 0ba076722f [ACS-3742] extra cfg support for shell navbar (#8256) 2023-02-14 14:22:56 +00:00
swapnil-verma-gl bcfa488940 [ACS-4252] Resolved accessibility issues around inherited permissions popover (#8222)
* [ACS-4252] Inherited permissions popover can now be opened and closed by enter key press. Added configurableFocusTrap to popover when it is opened.

* [ACS-4252] Removed console.log statement
2023-02-14 14:16:10 +00:00
MichalKinas b1311c6966 [ACS-4124] Display only as much tags as fits container in tag node list (#8247)
* [ACS-4124] Display only as much tags as fits container in tag node list

* [ACS-4124] CR fixes

* [ACS-4124] Add hidden, lint fixes, event propagation stopped
2023-02-14 11:04:07 +01:00
Jatin Chugh 6e99dd663a [ACS-4322] content overlap issue fixed at 400% zoom and close button which was earlier not visible at 400% zoom is visible now. (#8201)
* content overlap issue fixed at 400% zoom and close button which was earlier not visible at 400% zoom fixed

* adjusting the contents at 400% zoom by reducing the padding of mat-dialog-container

* linting change of zero-no-unit
2023-02-13 16:07:18 +05:30
Denys Vuika 5ce8553901 upgrade js-editor to drop cypress dependency (#8249)
* upgrade js-editor to drop cypress dependency

* upgrade caniuse-lite
2023-02-10 19:09:37 +00:00
Alfresco Build d2f9523053 [ci:force][auto-commit] Update JS-API to 5.4.0-620 for branch: update-js-api originated from JS-API PR: 620 (#8250) 2023-02-10 16:13:48 +00:00
Eugenio Romano 99015fee87 Update dependabot.yml (#8252) 2023-02-10 15:51:10 +00:00
Vito Albano e16bed611c [AAE-12260] - fixing form field mapping (#8243)
* [AAE-12260] - reverting form field mapping to fix wrong behaivour

* [AAE-12260] - fixed readonly radiobutton

* [AAE-12260] - fixed valid check for rest options when multiple choice is made

* [AAE-12260] - fixed name for array elements

* [ci skip]

* start ci
2023-02-10 13:16:08 +00:00
swapnil-verma-gl 5d2dddee28 [ACS-4254] Delete permissions button is now keyboard interact-able (enter key) (#8216) 2023-02-09 21:13:40 +00:00
Alfresco Build cae2d70637 [ci:force][auto-commit] Update JS-API to 5.4.0-619 for branch: update-js-api originated from JS-API PR: 619 (#8231) 2023-02-09 19:43:07 +00:00
Maurizio Cacace d873306c7c AAE-12192 - adding upload artifacts action (#8172)
* fix conflict

* AAE-12192 upload artifact action

* AAE-12192 upload artifact action

* AAE-12192 upload artifact action

* fix conflict

* skip check approved

* testing artifact upload

* testing artifact upload

* put devel flag again
2023-02-09 17:14:57 +01:00
AleksanderSklorz dd1feeec6e [ACS-4296] adding mapping in tags service (#8240)
* ACS-4296 Adding mapping in tags service

* ACS-4296 Correct lint issue

* ACS-4296 Excluded failing e2e

* ACS-4296 Trigger build

* ACS-4296 Trigger build

* ACS-4296 Reverted excluded tests
2023-02-08 22:19:16 +01:00
Eugenio Romano 08b4cc7939 Update rebase.yml 2023-02-08 16:55:20 +00:00
Amedeo Lepore 7c6ce0a5fe [AAE-12558] Fix load content-services translation resources (#8241)
* Fix load content-services tranlsation resources

* [ACS-4595] exclude failed e2es

* Reverted excluded tests
2023-02-08 17:20:44 +01:00
tomasz hanaj b9c53e586d AAE-12139 disabled start process btn when clicked and api call in pro… (#8160)
* AAE-12139 disabled start process btn when clicked and api call in progress

* AAE-12139 improved unit tests

* AAE-12139 added return type

* AAE-12139 removed ngOnInit from unit tests
2023-02-08 16:55:15 +01:00
Denys Vuika cd84be9712 Fix cli compilation (#8244)
* fix cli compilation

* [ci:force] latest libs

* [ci:force] delete old mergify config
2023-02-08 12:54:26 +01:00
Thomas Hunter 1a00249f6a [ADF-5514] Fix red dot still present after filter being cleared (#8181)
* [ADF-5514] Fix red dot still present after filter being cleared

* Add unit test

* Added statement clearing filter after each test so the ordering doesn't cause the unit test to fail
2023-02-08 09:18:14 +00:00
Amedeo Lepore 4c7e500ea8 Move search-input-text from content-services to core (#8239)
* Move search-input-text from content-services to core

* Move SearchConfigurationInterface into the content-services since is content related

* Rename search-configuration.interface file to search-component.interface

* Update import SearchConfigurationInterface from content-services

* Decouple SearchComponentInterface from js-api

* Decaplre NodeEntry instead using type any

* Remove comment

* Update component import to fix unit test

* Import SearchTextModule into core
2023-02-06 18:40:28 +01:00
Kasia Biernat c12b4284ef [AAE-12249] add description field (#8226) 2023-02-06 14:57:45 +01:00
Marco Carrozzo a0333b1d9c [AAE-12412] bot & schedule check fix 2023-02-03 16:35:29 +01:00
Marco Carrozzo 857f9bd2b4 [AAE-12532] remove pipelines from travis.yml (#8229) 2023-02-03 12:24:51 +01:00
Raviraj Bahirsheth e59176d393 [ACS-4274] Add role heading and aria level in header template (#8192)
* [ACS-4274] Add role heading and aria level in header template

* [ACS-4274] add link role

* Added header tag to title
2023-02-03 12:15:06 +05:30
Alfresco Build 49c6cb5ad3 [ci:force][auto-commit] Update JS-API to 5.4.0-566 for branch: update-js-api originated from JS-API PR: 566 (#8215) 2023-02-03 01:41:05 +00:00
Jatin Chugh 65e0c2405a [ACS-4051] Copy to clipboard button is now accessible through the keyboard (#8225) 2023-02-02 20:53:30 +00:00
Amedeo Lepore d50aa91922 Fix alfresco-apps upstream build 260285240: export search-text-input.model from content-services (#8227) 2023-02-02 18:39:22 +01:00
AleksanderSklorz e0dfc9a8e9 [ACS-4296] changes required after removing tags service from apps (#8223)
* ACS-4296 Added getCountersForTags and findTagByName functions to TagService

* ACS-4296 Import correct
2023-02-02 16:09:08 +00:00
Jatin Chugh 3f8293b64c Revert "[ACS-4051] Copy to clipboard button is now accessible through the keyboard enter earlier which was only accessible through mouse click (#8165)" (#8224)
This reverts commit 11c3a02acc.
2023-02-02 18:23:25 +05:30
Jatin Chugh e8a3d109d4 Label is not persistent as placeholder is being used as the only visual label for a text field (#8221) 2023-02-02 11:07:48 +05:30
4043d55fc4 [AAE-10778] Refactor Viewer (#7992)
* refactor version 1 many todo

* split render from viewer
move alfresco render in content pack

* refactor part 2

* test fixed

* fix doc

* [AAE-10778] Fix lint issues

* [AAE-10778] Fix lint issue: remove duplicated declaration

* [AAE-10778] Fix lint issue: use flex shorthand rule

* [AAE-10778] Fix FormService and WidgetComponent imports

* [AAE-10778] Fix import FormModel, FormService, FormFieldModel from adf-core

* [AAE-10778] Implement missing oninit, onchanges and ondestroy

* [AAE-10778] Replace adf-viewer with adf-alfresco-viewer, update escape command to close the viewer

* [AAE-10778] Fix unit test: fix the class name to match the 'adf-viewer-render.image-viewer-scaling' get from the appConfigService

* [AAE-10778] Fix image-viewer unit tests: replace ContentService with UrlService

* [AAE-10778] Fix unit test 'should if the extension change extension Change event be fired': emit file extension when the filename extension change

* [AAE-10778] Fix unit test: expect for internalFileName value instead of display-name id because the display name logic has been moved to the alfresco-viewer.component

* [AAE-10778] Fix unit test: remove display name it because the unknown display name value is no longer handled after refactoring

* [AAE-10778] Fix e2e: [C260096] Should the Viewer able to accept a customToolbar

* [AAE-10778] Update selector to fix e2e: '[C362265] Should the Viewer be able to download a previous version of a file'

* [AAE-10778] Update selector to fix e2e: '[C260038] Should display first page, toolbar and pagination when opening a .pdf file'

* fix aftrer rebase

* fix unit test

* [AAE-10778] Add adf viewer component that is node agnostic, show adf-alfresco-viewer or adf-viewer into file-view-component if blob or node are set

* [AAE-10778] Update viewer export path

* [AAE-10778] Update selectors since have been updated in the viewer component

* [AAE-10778] Call adf-viewer from alfresco-viewer, project adf-alfresco-viewer content to adf-viewer

* [AAE-10778] Remove full screen unit tests from alfresco-viewer component becase that logic is handled in the viewer.component

* [AAE-10778] Export toolbar custom actions component

* [AAE-10778] Pass mimeType as input to adf-viewer to update mime icon

* [AAE-10778] Remove e2e because the custom name behaviour has been removed from the file-view.component (https://github.com/Alfresco/alfresco-ng2-components/pull/7992/commits/9f21b6dc69e0cd044344b28c9e6c47d7a2d34f0c\#diff-4b438dc59784dce9eb7634cfeca6d8db61362966343bd3d6895a3edafdf4cfd5L129)

* [AAE-10778] Use two-way binding for showViewer change to fix C260100

* [AAE-10778] Update prefix css selectors to adf-viewer because are related to the adf-viewer component

* [AAE-10778] Update prefix css selectors to adf-viewer in the unit tests because are related to the adf-viewer component

* [AAE-10778] Update the output name to showViewerChange to navigate to primary url after closing the viewer

* [AAE-10778] Pass right and left sidebar template context to viewer component (fix C362242)

* [AAE-10778] Add allowFullScreen input to disable/enable full screen behaviour

* [AAE-10778] Handle loading visualization only inside the viewer-render component

* [AAE-10778] PDF viewer: fix mat-progress-bar is not showed during the pdf loading, center progress bar

* [AAE-10778] Remove isLoading from unit tests because no longer exists

* [AAE-10778] Remove viewerType input from adf-viewer, viewerType will be handled by viewer-render

* [AAE-10778] Remove console.log

* [AAE-10778] Remove check full screen button is not displayed on the media file because is not needed anymore, we don't need to check for the fullscreen button in the viewer component

* [AAE-10778] Check for node rendtion before to assign to urlFileContent and mimeType

* [AAE-10778] Process Services Cloud: register file-viewer widget that uses adf-alfresco-viewer component to display content from ACS

* [AAE-10778] Core: rename file-viewer widget into base-viewer, base-viewer no longer accept nodeId, but will accept urlFile and blobFile

* [AAE-10778] Process Services: register file-viewer widget that uses adf-alfresco-viewer component to display content from ACS

* [AAE-10778] Base viewer widget: show viewer only if there's a file input

* [AAE-10778] Viewer component: check for fileName when urlFile is provided as Input

* [AAE-10778] Viewer component documentation

* [AAE-10778] Update upgrade guide with viewer changes

* [AAE-10778] Fix double quote lint issue after rebase

---------

Co-authored-by: Amedeo Lepore <amedeo.lepore@hyland.com>
Co-authored-by: Amedeo Lepore <amedeo.lepore85@gmail.com>
2023-02-01 17:25:43 +01:00
MichalKinas 52520bb61e [ACS-4364] Move tree component and categories service to ADF (#8156)
* [ACS-4364] Add tree component and categories service

* [ACS-4364] Add tree component to public api

* [ACS-4364] Refine tree unit tests

* [ACS-4364] Intergrate adding and deleting category

* [ACS-4364] Restyle load more button in tree component

* [ACS-4364] Missing semicolon

* [ACS-4364] Fix code styling

* [ACS-4364] Add docs for tree component and category service

* [ACS-4364] CR fixes

* [ACS-4364] Hide header row when displayName is not provided

* [ACS-4364] Docs fixes

* [ACS-4364] Add helper methods, code cleanup, unit tests for new methods

* [ACS-4364] Add missing semicolon
2023-02-01 15:42:40 +01:00
Jatin Chugh afb22bbc02 Revert "[ACS-4307] Label is not persistent as placeholder is being used as the only visual label for a text field (#8213)" (#8220)
This reverts commit a720edd2cf.
2023-02-01 16:16:50 +05:30
Maurizio Cacace ca49693bd6 AAE-12452 - Version published in NPM should have PR number id in the name not gh-run_id (#8218)
* AAE-11884 change tag sha action (#8118)

* AAE-12452 change npm id
2023-02-01 10:29:07 +01:00
Jatin Chugh a720edd2cf [ACS-4307] Label is not persistent as placeholder is being used as the only visual label for a text field (#8213)
* Label is not persistent as placeholder is being used as the only visual label for a text field so added title in from and to form fields

* review comments addressed
2023-02-01 14:28:10 +05:30
Diogo Bastos 1f450c0593 [AAE-11654] Fix default option being selectable when parent dropdown … (#8146)
* [AAE-11654] Fix default option being selectable when parent dropdown has no option selected

* [AAE-11654] Remove comment
2023-01-31 15:44:31 +00:00
Diogo Bastos 0ab39e28fd [AAE-12179] Remove process-services and content-services dependencies… (#8161)
* [AAE-12179] Remove process-services and content-services dependencies from core comment-list component

* [AAE-12179] Remove comment-list injection token

* [AAE-12179] remove token injection in task module and node module
2023-01-31 15:21:01 +00:00
Jatin Chugh 11c3a02acc [ACS-4051] Copy to clipboard button is now accessible through the keyboard enter earlier which was only accessible through mouse click (#8165)
* Copy to clipboard button is now accessible through the keyboard enter earlier which was only accessible through mouse click

* review comments addressed
2023-01-31 18:28:03 +05:30
Eugenio Romano 4f25426c25 [AAE-10777] Move in common service the real common services (#8203)
* Move in common service the real common services
remove Pagination js-api dependencies
move search-input component in content

* fix unit

* fix lint

* fix

* fix
2023-01-30 23:42:29 +00:00
Bartosz Sekula 89b79c9e45 [AAE-12146] Update getFeature typings (#8167)
* [AAE-11463] Update getFeature typings

* added tests
2023-01-30 19:51:47 +01:00
Marco Carrozzo 71e7fc0bf6 AAE-12412 alfresco-build user whitelisted (#8214) 2023-01-30 17:00:09 +00:00
Marco Carrozzo d6e8e7a3b3 AAE-12412 - dependabot actor check (#8210)
* AAE-12412

* AAE-12412
2023-01-30 15:34:38 +00:00
Alfresco Build 49237fee2d [ci:force][auto-commit] Update JS-API to 5.4.0-561 for branch: update-js-api originated from JS-API PR: 561 (#8190) 2023-01-28 17:18:16 +00:00
Marco Carrozzo 2d386c5890 AAE-12357: update unit test name (#8197) 2023-01-28 17:17:53 +00:00
Denys Vuika 2a45c1e7a3 fix the private access to the service variables (#8202)
* fix the private access to the service variables

* fix issues with unit tests
2023-01-28 17:17:09 +00:00
Nikita Maliarchuk b503773475 [ACS-4411] updateTag method added to tags service (#8200)
* [ACS-4411] added updateTag method to tags service & tests & docs

* [ACS-4411] docs formatting fix

* [ACS-4411] unit test fix
2023-01-27 18:06:33 +00:00
Jatin Chugh efb2558c3f Exclue snackbar from screen reader (#8199) 2023-01-27 21:35:26 +05:30
Rafal Szmit 266d3aa9b0 [AAE-11700] add process to simpleapp (#8198)
* [AAE-11700] add process to simpleapp

* trigger ci
2023-01-27 14:44:22 +01:00
Raviraj Bahirsheth b6cf14c844 [ACS-4263] Add 'aria-pressed' attribute for reset button on content viewer page (#8183) 2023-01-27 16:21:44 +05:30
Pablo Martinez Garcia 4a3bc568ad [AAE-11708] Fix changelog author filtering programatically (#8178) 2023-01-26 17:23:23 +01:00
Denys Vuika 42dbfe25ac fix gha warnings for outdated actions (#8194) 2023-01-26 15:58:44 +00:00
Ehsan Rezaei 2c248a611f [AAE-8306] - Managed to disable complete/claim/release buttons on first click (#8166)
* AAE-8306: Managed to disable complete/save/claim buttons on user click

* AAE-8306: reverted back save button disable

* AAE-8306: Managed to disable unclaim or release button on user click

* AAE-8306: Fixed formatting issues

* AAE-8306: Fixed formatting issues
2023-01-26 10:29:19 +01:00
Ehsan Rezaei 588ffe0fa0 AAE-10979: Added support to display html icon for mht file format (#8133)
* AAE-10979: Added support to display html icon for multipart related mime type

* AAE-10979: excluded failing e2e tests

* AAE-10979: Removed extra comma
2023-01-26 08:44:18 +01:00
Kasia Biernat 61a3e30c31 [AAE-12127] Test: The aspect added in config is displayed even if inc… (#8158)
* [AAE-12127] Test: The aspect added in config is displayed even if includeAll is set to false

* [AAE-12128][AAE-12129][AAE-12131] content metadata tests

* [AAE-12132][AAE-12133] content metadata exif tests

* [AAE-12130] Test: The aspects excluded in config are not displayed when includeAll is set to true
2023-01-25 10:11:37 +01:00
kritagya09 facc4f6b03 visible label are associated (#8176) 2023-01-25 09:04:04 +05:30
tomasz hanaj 3df6bcea26 AAE-12063 removed startCreatedProcess with relevant unit tests (#8131)
* AAE-12063 removed startCreatedProcess with relevant unit tests

* AAE-12063 removed createProcess with relevant unit tests
2023-01-24 17:26:04 +00:00
Ehsan Rezaei f02272ac68 AAE-12239: Managed to populate processInstanceId in service tasks filters when navigating from process instances view (#8174) 2023-01-24 17:25:34 +00:00
swapnil-verma-gl 1746fcf653 [ACS-4253] - Added aria-label to form element (#8170) 2023-01-24 17:07:11 +00:00
Alfresco Build 011f78ac43 [ci:force][auto-commit] Update JS-API to 5.4.0-550 for branch: update-js-api originated from JS-API PR: 550 (#8175) 2023-01-24 17:05:37 +00:00
Nikita Maliarchuk 46717cdd4b [ACS-4413] Upgrade CodeQL analysis to v2 (#8184) 2023-01-24 17:04:58 +00:00
Marco Carrozzo d71eb6291a AAE-12304 (#8186) 2023-01-23 15:48:10 +00:00
Marco Carrozzo ad9ffeb17d AAE-12304 (#8185) 2023-01-23 15:39:08 +00:00
Denys Vuika 44538015fa Release 6.0.0-A.2 (#8179)
* bump versions

* sync lib dependency versions

* audit and security reports

* release notes and changelog

* update release notes
2023-01-23 14:54:03 +01:00
Gloria Camino 4f7f5b0afb LOC-405 - Updated string in process-services-cloud in 16 languages for ADF 6.0 (#8177) 2023-01-21 15:37:34 +00:00
Artur Cichoń a5a9a1e45b [AAE-12135] Added process ui to subprocess app (#8173) 2023-01-19 17:19:47 +01:00
AleksanderSklorz 570bfb235c [ACA-4650] Use NodeCommentsService for ADF_COMMENTS_SERVICE (#8169)
* ACA-4650 Use NodeCommentsService for ADF_COMMENTS_SERVICE

* ACA-4650 Register services at component level
2023-01-19 14:48:55 +00:00
Alfresco Build 491d16f562 [ci:force][auto-commit] Update JS-API to 5.3.0-539 for branch: update-js-api originated from JS-API PR: 539 (#8163) 2023-01-19 10:22:53 +00:00
Maurizio Vitale eb8bad1f96 [AAE-12124] Use a function to remove js files (#8157)
* Use a function to remove js files

* try to check the asset
2023-01-17 14:47:50 +00:00
Alfresco Build 35721b0279 [ci:force][auto-commit] Update JS-API to 5.3.0-537 for branch: update-js-api originated from JS-API PR: 537 (#8148) 2023-01-17 14:13:57 +00:00
Rafal SzmitandMaurizio Cacace 59df5c661d enable e2e: C260040 (#8155)
* AAE-11884 change tag sha action (#8118)

* test execution

* test execution

* test execution

* test execution

* test execution

* fix buildLibs

* enable e2e: C260040

* fix C280007 to not depend on C280006

* trigger travis

Co-authored-by: Maurizio Cacace <Maurizio.Cacace@hyland.com>
2023-01-17 14:18:14 +01:00
Maurizio Cacace bd9127d960 AAE-11884 change tag sha action (#8118) 2023-01-16 17:17:22 +01:00
Denys Vuika 32e4564e14 Revert "[ACS-4051] Copy to clipboard button is now accessible through the keyboard enter earlier which was only accessible through mouse click (#8119)" (#8159)
This reverts commit 067d4e9369.
2023-01-16 15:57:47 +00:00
maurizio-cacace cc33c5dec1 adjust cron condition 2023-01-16 14:50:52 +01:00
Marco Carrozzo 6138c16f42 AAE-12123 TAG_NPM fix 2023-01-16 14:08:25 +01:00
Marco Carrozzo a412b45300 [AAE-12057] add description to unit tests 2023-01-16 14:07:37 +01:00
Maurizio Cacace b99a574f94 AAE-12046 - add pre-condition on approval (#8145)
* add pre-condition on approval

* adjustment

* add approval check

* devel check false

* devel check true

* restyling

* check with PR approved
2023-01-16 12:41:58 +01:00
AleksanderSklorz 616ae95c23 [ACS-4118] create a tag from tags list (#8143)
* ACS-4118 Update service for tags creation

* ACS-4118 Added unit tests and documentation

* ACS-4118 Added function in tag service for searching tags

* ACS-4118 Moved imported class to new line

* ACS-4118 Use UserPreferencesService for setting maxItems

* ACS-4118 Allow to specify maxItems

* ACS-4118 Added missing type

* ACS-4118 Increased js-api version
2023-01-16 09:50:30 +01:00
Marco Carrozzo bbee01a809 [AAE-12123] env var interpolation bugfix 2023-01-16 09:48:32 +01:00
jatin2008 067d4e9369 [ACS-4051] Copy to clipboard button is now accessible through the keyboard enter earlier which was only accessible through mouse click (#8119)
* 880196 CSV issue addressed

* unit test cases for clipboard directive
2023-01-13 17:18:01 +00:00
Alfresco Build db38ccda7a [ci:force][auto-commit] Update JS-API to 5.3.0-528 for branch: update-js-api originated from JS-API PR: 528 (#8142) 2023-01-13 16:32:42 +00:00
maurizio-cacace 8a2f73ec2f correct run 2023-01-13 14:53:04 +01:00
maurizio-cacace 55b146044e add pre-condition on approved PR 2023-01-13 14:49:46 +01:00
Tomasz Gnyp 73e1953418 [AAE-11989] Automate C586839 - Should be able to see the tooltip for form widget (#8138) 2023-01-12 16:44:19 +00:00
Marco Carrozzo 0b9fb82de2 force e2e only after build-libs, lint, unit-tests (#8136) 2023-01-12 16:22:55 +00:00
Maurizio Vitale f654fdf008 [AAE-1274] CI opt - Build only core/content/process storybook (#8139)
* Build only core/content/process storybook

* Use a target and run only if affected

* Do not run any storybook e2e
2023-01-12 16:18:38 +00:00
Amedeo Lepore 34e5508076 [AAE-11992] pass only the processInstanceId as Input instead of the entire taskFilter object (#8140) 2023-01-12 17:16:15 +01:00
Marco Carrozzoandalfresco-build 9d143cf945 AAE-12037 git-tag stage (#8124)
* tag release from master branch

* dry run message

Co-authored-by: alfresco-build <build@alfresco.com>
2023-01-12 11:31:08 +00:00
Maurizio Cacace fe65f7c201 AAE-11940 - fix upstream flow - update-project script and upstream trigger (#8125)
* fix conflict

* fix conflict

* fix conflict

* change pipe name

* change PR name env variable

* update PR title

* fix pr condition

* fix pr condition

* final check
2023-01-12 12:04:19 +01:00
Marco Carrozzo f6fd813a29 [AAE-12057] unit tests fix (#8130)
* [AAE-12057] unit tests & storybook rename
2023-01-12 11:23:22 +01:00
Amedeo Lepore 93edda2263 [AAE-11992] fix processInstanceId filter empty: set taskFilter as input to check for the processInstanceId changes to set the filter (#8128) 2023-01-12 09:54:10 +00:00
Alfresco Build 3ab91806c3 [ci:force][auto-commit] Update JS-API to 5.3.0-527 for branch: update-js-api originated from JS-API PR: 527 (#8129) 2023-01-12 09:42:45 +00:00
Maurizio Cacace 2bf1832fec AAE-11940 - npm err fix in trigger-adf workflow (#8122)
* fix npm err

* fix npm err

* fix conflict

* fix conflict

* check e2e execution

* fix conflict

* remove personal branch

* remove dry-run
2023-01-11 16:25:33 +00:00
Marco Carrozzo 9f77d4187b removed test tag (#8127) 2023-01-11 15:42:06 +00:00
maurizio-cacace e7624f031a enabling dry run 2023-01-11 12:19:29 +01:00
Alfresco Build c4dbda49eb [ci:force][auto-commit] Update JS-API to 5.3.0-525 for branch: update-js-api originated from JS-API PR: 525 (#8123) 2023-01-11 10:43:08 +00:00
AleksanderSklorzandtomek.hanaj 1791534ec6 [ACA-4647] Fix for e2e (#8104)
* [ci:force] ACA-4647 Fix for e2e

* ACA-4647 added missing parameters to unit test

* ACA-4647 added unit test to cover changes in startProcess

* ACA-4647 changed property name to fix build error

* ACA-4647 changed json to object to avoid lint errors

* ACA-4647 added missing semicolon

Co-authored-by: tomek.hanaj <tomek.hanaj@hyland.com>
2023-01-10 19:05:35 +00:00
Marco Carrozzo fd6f881eab [AAE-11817] release fix eval condition 2023-01-10 17:42:08 +01:00
dependabot[bot] 28b20afc16 build(deps-dev): bump dotenv from 10.0.0 to 16.0.3 (#8111)
Bumps [dotenv](https://github.com/motdotla/dotenv) from 10.0.0 to 16.0.3.
- [Release notes](https://github.com/motdotla/dotenv/releases)
- [Changelog](https://github.com/motdotla/dotenv/blob/master/CHANGELOG.md)
- [Commits](https://github.com/motdotla/dotenv/compare/v10.0.0...v16.0.3)

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

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-01-10 16:34:43 +00:00
dependabot[bot] 01678a4fc7 build(deps-dev): bump @editorjs/inline-code from 1.3.1 to 1.4.0 (#8112)
Bumps [@editorjs/inline-code](https://github.com/editor-js/inline-code) from 1.3.1 to 1.4.0.
- [Release notes](https://github.com/editor-js/inline-code/releases)
- [Commits](https://github.com/editor-js/inline-code/commits)

---
updated-dependencies:
- dependency-name: "@editorjs/inline-code"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-01-10 16:31:59 +00:00
743 changed files with 36649 additions and 25131 deletions
-1
View File
@@ -17,7 +17,6 @@ demo-shell/resources/
/angular.json
/desktop.ini
/cspell.json
/.travis.yml
/CODE_OF_CONDUCT.md
/.stylelintignore
/ALFRESCOCORS.md
+6 -6
View File
@@ -8,7 +8,7 @@ inputs:
default: 'false'
runs:
using: "composite"
steps:
steps:
- name: Before install
if: ${{ ! env.ACT }}
shell: bash
@@ -22,7 +22,7 @@ runs:
echo "GIT_HASH=$(git rev-parse HEAD)";
echo "BASE_HASH=$(git merge-base origin/${GITHUB_BASE_REF} HEAD)";
echo "HEAD_HASH=HEAD";
echo "HEAD_COMMIT_HASH=${TRAVIS_PULL_REQUEST_SHA:-${TRAVIS_COMMIT}}";
echo "HEAD_COMMIT_HASH=${GH_COMMIT}";
echo "NX_CALCULATION_FLAGS=--all";
echo "BUILD_OPTS=--configuration production";
echo CI_FORCE_RUN=false;
@@ -35,7 +35,7 @@ runs:
run: |
echo "Setting up CI to run with commit flag [affected:*] flag."
echo "BREAK_ACTION=true" >> $GITHUB_ENV
- name: ci:force flag parser
shell: bash
if: ${{ contains(github.event.head_commit.message , '[ci:force]') }}
@@ -45,7 +45,7 @@ runs:
echo "BREAK_ACTION=true" >> $GITHUB_ENV
- name: PULL_REQUEST event
if: ${{ env.BREAK_ACTION == false && github.event_name == 'pull_request' }}
if: ${{ env.BREAK_ACTION == false && github.event_name == 'pull_request' && !github.event.pull_request.merged }}
shell: bash
run: |
echo "Setting up CI flags for Pull Request event"
@@ -76,8 +76,8 @@ runs:
- name: SCHEDULE event
if: ${{ github.event_name == 'schedule' }}
shell: bash
env:
EV_NAME: ${{ github.event_name }}
env:
EV_NAME: ${{ github.event_name }}
run: |
echo "Setting up CI to run on SCHEDULE"
echo "NX_CALCULATION_FLAGS=--all" >> $GITHUB_ENV
+17 -9
View File
@@ -60,9 +60,9 @@ runs:
run: |
set -u;
mkdir -p "${SMART_RUNNER_PATH}"
if [[ $(aws s3 ls "${S3_BUILD_BUCKET}/adf/${REMOTE_PATH}" > /dev/null; echo $?) -eq 0 ]]; then
if [[ $(aws s3 ls "s3://${S3_BUILD_BUCKET_SHORT_NAME}/adf/${REMOTE_PATH}" > /dev/null; echo $?) -eq 0 ]]; then
echo "downloading test files"
aws s3 cp "${S3_BUILD_BUCKET}/adf/${REMOTE_PATH}" .;
aws s3 cp "s3://${S3_BUILD_BUCKET_SHORT_NAME}/adf/${REMOTE_PATH}" .;
tar xzf ${{ inputs.e2e-tar-name }};
else
echo "nothing to download";
@@ -134,7 +134,7 @@ runs:
PROVIDER: "${{ inputs.e2e-test-provider }}"
AUTH_TYPE: "${{ inputs.e2e-test-auth }}"
E2E_TEST_ID: "${{ inputs.e2e-test-id }}"
uses: nick-fields/retry@v2.8.2
with:
timeout_minutes: 40
@@ -144,16 +144,24 @@ runs:
command: |
set -u;
export GH_ACTION_RETRY_COUNT=$(cat ${GITHUB_OUTPUT} | grep -E '^[0-9]{1,2}$' | tail -n1)
echo "RETRY GH_ACTION_RETRY_COUNT = <$GH_ACTION_RETRY_COUNT>"
echo "RETRY GH_ACTION_RETRY_COUNT = <$GH_ACTION_RETRY_COUNT>"
if [[ ${{ inputs.e2e-test-folder }} == 'content-services/upload' ]]; then
export DISPLAY=:99
chromedriver --url-base=/wd/hub &
sudo Xvfb -ac :99 -screen 0 1280x1024x24 > /dev/null 2>&1 & # optional
bash ./scripts/travis/e2e/e2e.sh "$E2E_TEST_ID" "browser" || exit 1
sudo Xvfb -ac :99 -screen 0 1280x1024x24 > /dev/null 2>&1 & # optional
bash ./scripts/github/e2e/e2e.sh "$E2E_TEST_ID" "browser" || exit 1
else
bash ./scripts/travis/e2e/e2e.sh "$E2E_TEST_ID" || exit 1
bash ./scripts/github/e2e/e2e.sh "$E2E_TEST_ID" || exit 1
fi
- name: upload smartrunner tests results on s3 to cache tests
- name: upload artifacts on gh
id: upload_gh
uses: actions/upload-artifact@v3
with:
name: e2e-artifact-output
path: /home/runner/work/alfresco-ng2-components/alfresco-ng2-components/e2e-output-*
- name: upload smart-runner tests results on s3 to cache tests
shell: bash
if: always()
env:
@@ -161,4 +169,4 @@ runs:
# description: always upload newer results
run: |
tar czf "${{ inputs.e2e-tar-name }}" "${SMART_RUNNER_PATH}"
aws s3 cp "${{ inputs.e2e-tar-name }}" "${S3_BUILD_BUCKET}/adf/$REMOTE_PATH"
aws s3 cp "${{ inputs.e2e-tar-name }}" "s3://${S3_BUILD_BUCKET_SHORT_NAME}/adf/${REMOTE_PATH}"
+16 -7
View File
@@ -1,19 +1,28 @@
name: 'Check NPM bundle'
description: 'check npm bundle'
outputs:
tag_sha:
description: "long sha of the tag"
value: ${{ steps.sha_out.outputs.tag_sha }}
inputs:
branch_name:
description: "override GITHUB_REF_NAME"
required: false
default: $GITHUB_REF_NAME
runs:
using: "composite"
steps:
- name: load "NPM TAG"
uses: ./.github/actions/set-npm-tag
with:
branch_name: ${{ inputs.branch_name }}
- name: check npm bundle
shell: bash
id: sha_out
run: |
ADF_VERSION=$(npm view @alfresco/adf-core@${TAG_NPM} version)
echo "check bundle on TAG_NPM='${TAG_NPM}' and ADF_VERSION='${ADF_VERSION}'"
./scripts/travis/build/npm-check-bundles.sh -v ${ADF_VERSION}
if [[ -z $TAG_NPM ]]; then
echo "TAG_NPM not set, aborting"
exit 1
fi
ADF_VERSION=$(npm view @alfresco/adf-core@${TAG_NPM} version)
echo "check bundle on TAG_NPM='${TAG_NPM}' and ADF_VERSION='${ADF_VERSION}'"
./scripts/github/build/npm-check-bundles.sh -v ${ADF_VERSION}
+37
View File
@@ -0,0 +1,37 @@
name: "set npm tag"
description: "se NPM tag"
inputs:
event_name:
description: "override github.event_name"
required: false
default: ${{ github.event_name }}
branch_name:
description: "override GITHUB_REF_NAME"
required: false
default: $GITHUB_REF_NAME
runs:
using: "composite"
steps:
- name: set TAG_NPM
shell: bash
run: |
TAG_NPM="alpha"
VERSION_IN_PACKAGE_JSON=$(node -p "require('./package.json')".version)
echo "version in package.json=${VERSION_IN_PACKAGE_JSON}"
if [[ ${{ inputs.branch_name }} =~ ^master(-patch.*)?$ ]]; then
# Pre-release versions
if [[ $VERSION_IN_PACKAGE_JSON =~ ^[0-9]*\.[0-9]*\.[0-9]*-A\.[0-9]*$ ]];
then
TAG_NPM=next
# Stable major versions
else
TAG_NPM=latest
fi
fi
if [[ ${{ inputs.branch_name }} =~ ^develop(-patch.*)?$ ]]; then
TAG_NPM=alpha
fi
echo "TAG_NPM=${TAG_NPM}" >> $GITHUB_ENV
+6 -27
View File
@@ -10,7 +10,7 @@ inputs:
description: 'enable caching for node modules'
required: false
type: boolean
default: 'true'
default: 'true'
act:
description: 'enable act debug'
required: false
@@ -26,24 +26,8 @@ runs:
cache-dependency-path: package-lock.json
- name: get latest tag sha
id: tag-sha
uses: ./.github/actions/get-latest-tag-sha
uses: Alfresco/alfresco-build-tools/.github/actions/git-latest-tag@v1.29.0
# CACHE
- name: Node cache
id: node-cache
if: ${{ inputs.enable-cache == 'true' }}
uses: actions/cache@v3
env:
cache-name: node-cache
with:
path: |
~/.npm
nxcache
dist
key: .npm-${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }}-${{ steps.tag-sha.outputs.tag_sha }}
restore-keys: |
node-${{ runner.os }}-build-${{ env.cache-name }}-
node-${{ runner.os }}-build-
node-${{ runner.os }}-
- name: Node Modules cache
id: node-modules-cache
if: ${{ inputs.enable-node-modules-cache == 'true' }}
@@ -53,11 +37,11 @@ runs:
with:
path: |
node_modules
key: .npm-${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }}-${{ steps.tag-sha.outputs.tag_sha }}
key: .npm-${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
node_modules-${{ runner.os }}-build-${{ env.cache-name }}-
node_modules-${{ runner.os }}-build-
node_modules-${{ runner.os }}-
node_modules-${{ runner.os }}-
- name: pip cache
uses: actions/cache@v3
if: ${{ inputs.enable-cache == 'true' }}
@@ -66,13 +50,8 @@ runs:
key: ${{ runner.os }}-pip-
restore-keys: |
${{ runner.os }}
# ENV LOAD
- name: load .travis.yml env.global variables
uses: Alfresco/alfresco-build-tools/.github/actions/travis-env-load@v1.17.0
with:
yml_path: .travis.yml
- name: load "TRAVIS_EVENT_TYPE"
uses: ./.github/actions/travis-env-var-facade
- name: load "NPM TAG"
uses: ./.github/actions/set-npm-tag
- name: before install script
uses: ./.github/actions/before-install
with:
@@ -1,45 +0,0 @@
# TRAVIS_EVENT_TYPE= Indicates how the build was triggered. One of push, pull_request, api, cron
name: "travis-event-type-env-var"
description: "Mimic loading of a TRAVIS_EVENT_TYPE env var"
inputs:
event_name:
description: "override github.event_name"
required: false
default: ${{ github.event_name }}
runs:
using: "composite"
steps:
- name: Parse env global
shell: bash
run: |
EVENT_TYPE=""
TRAVIS_PULL_REQUEST_BRANCH=""
TRAVIS_BRANCH=""
TAG_NPM=""
REGEX="(repository|workflow)_dispatch"
if [[ "${{ inputs.event_name }}" == "schedule" ]]; then
EVENT_TYPE="cron";
elif [[ "${{ inputs.event_name }}" == "pull_request" ]]; then
EVENT_TYPE="pull_request";
TRAVIS_BRANCH=${GITHUB_BASE_REF}
TRAVIS_PULL_REQUEST_BRANCH=${GITHUB_BASE_REF}
elif [[ "${{ inputs.event_name }}" == "push" ]]; then
EVENT_TYPE="push";
TRAVIS_BRANCH=${GITHUB_REF##*/}
elif [[ "${{ inputs.event_name }}" =~ $REGEX ]]; then
EVENT_TYPE="api";
fi
if [[ GITHUB_REF_NAME == "master" ]]; then
echo "Set up TAG_NPM to latest on master branch"
TAG_NPM="latest"
fi
if [[ GITHUB_REF_NAME == "develop" ]]; then
echo "Set up TAG_NPM to alpha on develop branch"
TAG_NPM="alpha"
fi
echo "TAG_NPM=${TAG_NPM}" >> $GITHUB_ENV
echo "TRAVIS_EVENT_TYPE=${EVENT_TYPE}" >> $GITHUB_ENV
echo "TRAVIS_PULL_REQUEST_BRANCH=${TRAVIS_PULL_REQUEST_BRANCH}" >> $GITHUB_ENV
echo "TRAVIS_BRANCH=${TRAVIS_BRANCH}" >> $GITHUB_ENV
@@ -1,28 +0,0 @@
# TRAVIS_EVENT_TYPE= Indicates how the build was triggered. One of push, pull_request, api, cron
name: "travis-event-type-env-var"
description: "Mimic loading of a TRAVIS_EVENT_TYPE env var"
inputs:
event_name:
description: "override github.event_name"
required: false
default: ${{ github.event_name }}
runs:
using: "composite"
steps:
- name: Parse env global
run: |
EVENT_TYPE=""
REGEX="(repository|workflow)_dispatch"
if [[ "${{ inputs.event_name }}" == "schedule" ]]; then
EVENT_TYPE="cron";
elif [[ "${{ inputs.event_name }}" == "pull_request" ]]; then
EVENT_TYPE="pull_request";
elif [[ "${{ inputs.event_name }}" == "push" ]]; then
EVENT_TYPE="push";
elif [[ "${{ inputs.event_name }}" =~ $REGEX ]]; then
EVENT_TYPE="api";
fi
echo "TRAVIS_EVENT_TYPE=${EVENT_TYPE}" >> $GITHUB_ENV
echo "exporting TRAVIS_EVENT_TYPE=${EVENT_TYPE}"
shell: bash
@@ -7,13 +7,13 @@ runs:
- name: tar and upload artifacts
shell: bash
env:
REMOTE_PATH: "alfresco-ng2-components/build-cache/${{ github.run_id }}"
REMOTE_PATH: "alfresco-ng2-components/build-cache/${{ github.run_id }}"
run: |
packages=( dist nxcache node_modules )
for i in "${packages[@]}"; do
time tar czf $i.tar.gz $i
du -h $i.tar.gz
time aws s3 cp --no-progress $i.tar.gz s3://${S3_BUILD_BUCKET_SHORT_NAME}/${REMOTE_PATH}/$i.tar.gz
time aws s3 cp --no-progress $i.tar.gz "s3://${S3_BUILD_BUCKET_SHORT_NAME}/${REMOTE_PATH}/$i.tar.gz"
done
+1
View File
@@ -5,6 +5,7 @@ updates:
schedule:
interval: "weekly"
day: "sunday"
time: "07:00"
open-pull-requests-limit: 5
target-branch: develop
ignore:
+42 -15
View File
@@ -1,7 +1,13 @@
name: "alpha-adf"
name: "upstream adf"
on:
workflow_call:
on:
workflow_call:
inputs:
repo_to_update:
description: Repository to update
type: string
required: false
default: alfresco-applications
workflow_dispatch:
inputs:
cluster_operation:
@@ -9,18 +15,29 @@ on:
type: choice
required: true
options:
- TRIGGER_ALPHA_ADF
- TRIGGER_ALPHA_ADF
default: TRIGGER_ALPHA_ADF
repo_to_update:
description: Repository to update
type: choice
required: true
options:
- all
- alfresco-content-app
- alfresco-applications
- alfresco-apps
default: all
env:
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
GITHUB_BRANCH: ${{ github.ref_name }}
GH_TOKEN: ${{ secrets.BOT_GITHUB_TOKEN }}
TRAVIS_BUILD_DIR: ${{ github.workspace }}
TRAVIS_COMMIT: ${{ github.sha }}
GH_BUILD_DIR: ${{ github.workspace }}
GH_COMMIT: ${{ github.sha }}
BUILD_ID: ${{ github.run_id }}
TRAVIS_RUN_NUMBER: ${{ github.run_attempt }}
TRAVIS_BUILD_NUMBER: github-run-${{ github.run_id }}
GH_RUN_NUMBER: ${{ github.run_attempt }}
GH_BUILD_NUMBER: ${{ github.run_id }}
JOB_ID: ${{ github.run_id }}
PROXY_HOST_BPM: ${{ secrets.E2E_HOST }}
E2E_HOST_APA: ${{ secrets.E2E_HOST_APA }}
@@ -55,20 +72,30 @@ env:
DOCKER_REPOSITORY_STORYBOOK: "${{ secrets.DOCKER_REPOSITORY_DOMAIN }}/alfresco/storybook"
DOCKER_REPOSITORY: "${{ secrets.DOCKER_REPOSITORY_DOMAIN }}/alfresco/demo-shell"
NODE_OPTIONS: "--max-old-space-size=5120"
GH_PACKAGES_READ_ONLY_TOKEN: ${{ secrets.HYLAND_GH_PACKAGES_READ_ONLY_TOKEN }}
jobs:
trigger_adf:
name: trigger adf test
runs-on: ubuntu-latest
steps:
name: trigger adf
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v3
with:
fetch-depth: 0
- name: install NPM
uses: actions/setup-node@v3
with:
node-version: 14
cache-dependency-path: package-lock.json
# - name: Debug on failure
# uses: mxschmitt/action-tmate@v3
# with:
# timeout-minutes: 60
# limit-access-to-actor: true
- name: Trigger Alpha ADF child build
shell: bash
if: ${{ contains(github.event.head_commit.message, '[trigger adf]') || inputs.cluster_operation == 'TRIGGER_ALPHA_ADF' || github.event.schedule == '0 11 * * *' }}
if: ${{ contains(github.event.head_commit.message, '[trigger adf]') || inputs.cluster_operation == 'TRIGGER_ALPHA_ADF' || github.event.schedule == '0 12 * * *' }}
run: |
npm install github-api
./scripts/travis/update/update-project.sh -p $TRAVIS_BUILD_NUMBER -t $GH_TOKEN -v alpha -c $TRAVIS_COMMIT -d
npm install github-api
./scripts/github/update/update-project.sh -p $GH_BUILD_NUMBER -t $GH_TOKEN -v alpha -c $GH_COMMIT -r ${{ inputs.repo_to_update }}
+4 -9
View File
@@ -16,20 +16,15 @@ jobs:
steps:
- name: Checkout repository
uses: actions/checkout@v2
uses: actions/checkout@v3
with:
# We must fetch at least the immediate parents so that if this is
# a pull request then we can checkout the head.
fetch-depth: 2
# If this run was triggered by a pull request event, then checkout
# the head of the pull request instead of the merge commit.
- run: git checkout HEAD^2
if: ${{ github.event_name == 'pull_request' }}
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@v1
uses: github/codeql-action/init@v2
# Override language selection by uncommenting this and choosing your languages
with:
languages: javascript
@@ -37,7 +32,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@v1
uses: github/codeql-action/autobuild@v2
# ️ Command-line programs to run using the OS shell.
# 📚 https://git.io/JvXDl
@@ -51,4 +46,4 @@ jobs:
# make release
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v1
uses: github/codeql-action/analyze@v2
@@ -1,18 +1,20 @@
name: "cron schedule"
name: "cron e2e daily"
on:
schedule:
- cron: '0 11 * * *'
- cron: '0 12 * * *'
env:
BASE_REF: ${{ github.base_ref }}
HEAD_REF: ${{ github.head_ref }}
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
GITHUB_BRANCH: ${{ github.ref_name }}
TRAVIS_BUILD_DIR: ${{ github.workspace }}
TRAVIS_COMMIT: ${{ github.sha }}
GH_BUILD_DIR: ${{ github.workspace }}
GH_COMMIT: ${{ github.sha }}
BUILD_ID: ${{ github.run_id }}
TRAVIS_RUN_NUMBER: ${{ github.run_attempt }}
TRAVIS_BUILD_NUMBER: github-run-${{ github.run_id }}
GH_RUN_NUMBER: ${{ github.run_attempt }}
GH_BUILD_NUMBER: ${{ github.run_id }}
JOB_ID: ${{ github.run_id }}
PROXY_HOST_BPM: ${{ secrets.E2E_HOST }}
E2E_HOST_APA: ${{ secrets.E2E_HOST_APA }}
@@ -21,9 +23,9 @@ env:
E2E_PASSWORD: ${{ secrets.E2E_PASSWORD }}
E2E_ADMIN_EMAIL_IDENTITY: ${{ secrets.E2E_ADMIN_EMAIL_IDENTITY }}
E2E_ADMIN_PASSWORD_IDENTITY: ${{ secrets.E2E_ADMIN_PASSWORD_IDENTITY }}
USERNAME_ADF: ${{ secrets.E2E_USERNAME }}
USERNAME_ADF: ${{ secrets.E2E_ADMIN_EMAIL_IDENTITY }}
PASSWORD_ADF: ${{ secrets.E2E_PASSWORD }}
URL_HOST_ADF: ${{ secrets.URL_HOST_ADF }}
URL_HOST_ADF: "http://localhost:4200"
IDENTITY_ADMIN_EMAIL: ${{ secrets.E2E_ADMIN_EMAIL_IDENTITY }}
IDENTITY_ADMIN_PASSWORD: ${{ secrets.E2E_ADMIN_PASSWORD_IDENTITY }}
AWS_S3_BUCKET_ACTIVITI_LICENSE: ${{ secrets.AWS_S3_BUCKET_ACTIVITI_LICENSE }}
@@ -39,21 +41,33 @@ env:
PASSWORD_SUPER_ADMIN_ADF: ${{ secrets.PASSWORD_SUPER_ADMIN_ADF }}
HR_USER: ${{ secrets.HR_USER }}
HR_USER_PASSWORD: ${{ secrets.HR_USER_PASSWORD }}
NPM_REGISTRY_ADDRESS: ${{ secrets.NPM_REGISTRY_ADDRESS }}
NPM_REGISTRY_TOKEN: ${{ secrets.NPM_REGISTRY_TOKEN }}
SMART_RUNNER_PATH: ".protractor-smartrunner"
S3_DBP_PATH: ${{ secrets.S3_DBP_PATH }}
S3_BUILD_BUCKET_SHORT_NAME: ${{ secrets.S3_BUILD_BUCKET_SHORT_NAME }}
NODE_OPTIONS: "--max-old-space-size=5120"
DOCKER_REPOSITORY_DOMAIN: ${{ secrets.DOCKER_REPOSITORY_DOMAIN }}
DOCKER_REPOSITORY_USER: ${{ secrets.DOCKER_REPOSITORY_USER }}
DOCKER_REPOSITORY_PASSWORD: ${{ secrets.DOCKER_REPOSITORY_PASSWORD }}
DOCKER_REPOSITORY_DOMAIN: ${{ secrets.DOCKER_REPOSITORY_DOMAIN }}
DOCKER_REPOSITORY_STORYBOOK: "${{ secrets.DOCKER_REPOSITORY_DOMAIN }}/alfresco/storybook"
DOCKER_REPOSITORY: "${{ secrets.DOCKER_REPOSITORY_DOMAIN }}/alfresco/demo-shell"
NODE_OPTIONS: "--max-old-space-size=5120"
REPO_OWNER: "Alfresco"
REPO_NAME: "alfresco-ng2-components"
DEMO_SHELL_DIR: "./dist/demo-shell"
STORYBOOK_DIR: "./dist/storybook/stories"
BUILT_LIBS_DIR: "./dist/libs"
NODE_MODULES_DIR: "./node_modules"
SMART_RUNNER_DIRECTORY: ".protractor-smartrunner"
SAVE_SCREENSHOT: true
REDIRECT_URI: /
BROWSER_RUN: false
MAXINSTANCES: 2
PLAYWRIGHT_WORKERS: 2
PLAYWRIGHT_STORYBOOK_E2E_HOST: http://localhost
PLAYWRIGHT_STORYBOOK_E2E_PORT: 4400
PROXY_HOST_ECM: ${{ secrets.E2E_HOST }}
jobs:
run-e2e:
name: run e2e
uses: ./.github/workflows/pull-request.yml
secrets: inherit
adf-alpha-test:
name: trigger alpha test
uses: ./.github/workflows/adf_alpha.yml
+27
View File
@@ -0,0 +1,27 @@
name: "cron upstream daily"
on:
schedule:
- cron: '0 12 * * *'
jobs:
adf-upstream-alpha-alfresco-aca:
name: trigger upstream alpha for alfresco-content-app
uses: ./.github/workflows/adf_alpha.yml
secrets: inherit
with:
repo_to_update: alfresco-content-app
adf-upstream-alpha-alfresco-apps:
name: trigger upstream alpha for alfresco-applications
uses: ./.github/workflows/adf_alpha.yml
secrets: inherit
with:
repo_to_update: alfresco-applications
adf-upstream-alpha-hxp:
name: trigger upstream alpha for hxp monorepo
uses: ./.github/workflows/adf_alpha.yml
secrets: inherit
with:
repo_to_update: alfresco-apps
+16
View File
@@ -0,0 +1,16 @@
name: pr-workflow
on:
push:
branches:
- "devops/*"
jobs:
adf-upstream-alpha-hxp:
name: trigger upstream alpha for hxp monorepo
uses: ./.github/workflows/adf_alpha.yml
secrets: inherit
with:
repo_to_update: alfresco-apps
+111
View File
@@ -0,0 +1,111 @@
name: "git-tag"
on:
workflow_call:
inputs:
dry-run-release:
description: 'enable dry-run on artifact push'
required: false
type: boolean
default: true
push:
branches:
- master
- master-patch-*
env:
BASE_REF: ${{ github.base_ref }}
HEAD_REF: ${{ github.head_ref }}
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
GITHUB_BRANCH: ${{ github.ref_name }}
GH_BUILD_DIR: ${{ github.workspace }}
GH_COMMIT: ${{ github.sha }}
BUILD_ID: ${{ github.run_id }}
GH_RUN_NUMBER: ${{ github.run_attempt }}
GH_BUILD_NUMBER: ${{ github.run_id }}
JOB_ID: ${{ github.run_id }}
PROXY_HOST_BPM: ${{ secrets.E2E_HOST }}
E2E_HOST_APA: ${{ secrets.E2E_HOST_APA }}
E2E_HOST: ${{ secrets.E2E_HOST }}
E2E_USERNAME: ${{ secrets.E2E_ADMIN_EMAIL_IDENTITY }}
E2E_PASSWORD: ${{ secrets.E2E_PASSWORD }}
E2E_ADMIN_EMAIL_IDENTITY: ${{ secrets.E2E_ADMIN_EMAIL_IDENTITY }}
E2E_ADMIN_PASSWORD_IDENTITY: ${{ secrets.E2E_ADMIN_PASSWORD_IDENTITY }}
USERNAME_ADF: ${{ secrets.E2E_ADMIN_EMAIL_IDENTITY }}
PASSWORD_ADF: ${{ secrets.E2E_PASSWORD }}
URL_HOST_ADF: "http://localhost:4200"
IDENTITY_ADMIN_EMAIL: ${{ secrets.E2E_ADMIN_EMAIL_IDENTITY }}
IDENTITY_ADMIN_PASSWORD: ${{ secrets.E2E_ADMIN_PASSWORD_IDENTITY }}
AWS_S3_BUCKET_ACTIVITI_LICENSE: ${{ secrets.AWS_S3_BUCKET_ACTIVITI_LICENSE }}
HOST_SSO: ${{ secrets.HOST_SSO }}
LOG_LEVEL: "ERROR"
E2E_LOG_LEVEL: "ERROR"
E2E_MODELER_USERNAME: ${{ secrets.E2E_MODELER_USERNAME }}
E2E_MODELER_PASSWORD: ${{ secrets.E2E_MODELER_PASSWORD }}
EXTERNAL_ACS_HOST: ${{ secrets.EXTERNAL_ACS_HOST }}
E2E_DEVOPS_USERNAME: ${{ secrets.E2E_DEVOPS_USERNAME }}
E2E_DEVOPS_PASSWORD: ${{ secrets.E2E_DEVOPS_PASSWORD }}
USERNAME_SUPER_ADMIN_ADF: ${{ secrets.USERNAME_SUPER_ADMIN_ADF }}
PASSWORD_SUPER_ADMIN_ADF: ${{ secrets.PASSWORD_SUPER_ADMIN_ADF }}
HR_USER: ${{ secrets.HR_USER }}
HR_USER_PASSWORD: ${{ secrets.HR_USER_PASSWORD }}
SMART_RUNNER_PATH: ".protractor-smartrunner"
S3_DBP_PATH: ${{ secrets.S3_DBP_PATH }}
S3_BUILD_BUCKET_SHORT_NAME: ${{ secrets.S3_BUILD_BUCKET_SHORT_NAME }}
NODE_OPTIONS: "--max-old-space-size=5120"
DOCKER_REPOSITORY_DOMAIN: ${{ secrets.DOCKER_REPOSITORY_DOMAIN }}
DOCKER_REPOSITORY_USER: ${{ secrets.DOCKER_REPOSITORY_USER }}
DOCKER_REPOSITORY_PASSWORD: ${{ secrets.DOCKER_REPOSITORY_PASSWORD }}
DOCKER_REPOSITORY_STORYBOOK: "${{ secrets.DOCKER_REPOSITORY_DOMAIN }}/alfresco/storybook"
DOCKER_REPOSITORY: "${{ secrets.DOCKER_REPOSITORY_DOMAIN }}/alfresco/demo-shell"
NPM_REGISTRY_ADDRESS: ${{ secrets.NPM_REGISTRY_ADDRESS }}
NPM_REGISTRY_TOKEN: ${{ secrets.NPM_REGISTRY_TOKEN }}
GITHUB_TOKEN: ${{ secrets.BOT_GITHUB_TOKEN }}
REPO_OWNER: "Alfresco"
REPO_NAME: "alfresco-ng2-components"
DEMO_SHELL_DIR: "./dist/demo-shell"
STORYBOOK_DIR: "./dist/storybook/stories"
BUILT_LIBS_DIR: "./dist/libs"
NODE_MODULES_DIR: "./node_modules"
SMART_RUNNER_DIRECTORY: ".protractor-smartrunner"
SAVE_SCREENSHOT: true
REDIRECT_URI: /
BROWSER_RUN: false
MAXINSTANCES: 2
PLAYWRIGHT_WORKERS: 2
PLAYWRIGHT_STORYBOOK_E2E_HOST: http://localhost
PLAYWRIGHT_STORYBOOK_E2E_PORT: 4400
PROXY_HOST_ECM: ${{ secrets.E2E_HOST }}
jobs:
release:
uses: ./.github/workflows/release.yml
secrets: inherit
with:
dry-run-release: false
setup:
needs: release
timeout-minutes: 20
name: "Release tag"
runs-on: ubuntu-22.04
env:
GITHUB_TOKEN: $GH_TOKEN
steps:
- name: Checkout repository
uses: actions/checkout@v3
- id: set-dryrun
uses: ./.github/actions/enable-dryrun
with:
dry-run-flag: ${{ inputs.dry-run-release }}
- name: install NPM
uses: actions/setup-node@v3
with:
node-version: 14
- name: "Release tag"
run: |
git fetch --all --quiet
BRANCH=${GITHUB_REF##*/} ./scripts/github/release/git-tag.sh ${{ steps.set-dryrun.outputs.dryrun }}
+178 -21
View File
@@ -8,6 +8,11 @@ on:
required: false
type: boolean
default: true
devel:
description: 'devel'
required: false
type: string
default: false
pull_request:
types: [opened, synchronize, reopened]
branches:
@@ -16,17 +21,21 @@ on:
- develop-patch*
- master-patch*
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
env:
BASE_REF: ${{ github.base_ref }}
HEAD_REF: ${{ github.head_ref }}
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
GITHUB_BRANCH: ${{ github.ref_name }}
TRAVIS_BUILD_DIR: ${{ github.workspace }}
TRAVIS_COMMIT: ${{ github.sha }}
GH_BUILD_DIR: ${{ github.workspace }}
GH_COMMIT: ${{ github.sha }}
BUILD_ID: ${{ github.run_id }}
TRAVIS_RUN_NUMBER: ${{ github.run_attempt }}
TRAVIS_BUILD_NUMBER: ${{ github.run_id }}
GH_RUN_NUMBER: ${{ github.run_attempt }}
GH_BUILD_NUMBER: ${{ github.run_id }}
JOB_ID: ${{ github.run_id }}
PROXY_HOST_BPM: ${{ secrets.E2E_HOST }}
E2E_HOST_APA: ${{ secrets.E2E_HOST_APA }}
@@ -35,9 +44,9 @@ env:
E2E_PASSWORD: ${{ secrets.E2E_PASSWORD }}
E2E_ADMIN_EMAIL_IDENTITY: ${{ secrets.E2E_ADMIN_EMAIL_IDENTITY }}
E2E_ADMIN_PASSWORD_IDENTITY: ${{ secrets.E2E_ADMIN_PASSWORD_IDENTITY }}
USERNAME_ADF: ${{ secrets.E2E_USERNAME }}
USERNAME_ADF: ${{ secrets.E2E_ADMIN_EMAIL_IDENTITY }}
PASSWORD_ADF: ${{ secrets.E2E_PASSWORD }}
URL_HOST_ADF: ${{ secrets.URL_HOST_ADF }}
URL_HOST_ADF: "http://localhost:4200"
IDENTITY_ADMIN_EMAIL: ${{ secrets.E2E_ADMIN_EMAIL_IDENTITY }}
IDENTITY_ADMIN_PASSWORD: ${{ secrets.E2E_ADMIN_PASSWORD_IDENTITY }}
AWS_S3_BUCKET_ACTIVITI_LICENSE: ${{ secrets.AWS_S3_BUCKET_ACTIVITI_LICENSE }}
@@ -55,7 +64,6 @@ env:
HR_USER_PASSWORD: ${{ secrets.HR_USER_PASSWORD }}
SMART_RUNNER_PATH: ".protractor-smartrunner"
S3_DBP_PATH: ${{ secrets.S3_DBP_PATH }}
S3_BUILD_BUCKET: ${{ secrets.S3_BUILD_BUCKET }}
S3_BUILD_BUCKET_SHORT_NAME: ${{ secrets.S3_BUILD_BUCKET_SHORT_NAME }}
NODE_OPTIONS: "--max-old-space-size=5120"
DOCKER_REPOSITORY_DOMAIN: ${{ secrets.DOCKER_REPOSITORY_DOMAIN }}
@@ -63,13 +71,89 @@ env:
DOCKER_REPOSITORY_PASSWORD: ${{ secrets.DOCKER_REPOSITORY_PASSWORD }}
DOCKER_REPOSITORY_STORYBOOK: "${{ secrets.DOCKER_REPOSITORY_DOMAIN }}/alfresco/storybook"
DOCKER_REPOSITORY: "${{ secrets.DOCKER_REPOSITORY_DOMAIN }}/alfresco/demo-shell"
REPO_OWNER: "Alfresco"
REPO_NAME: "alfresco-ng2-components"
DEMO_SHELL_DIR: "./dist/demo-shell"
STORYBOOK_DIR: "./dist/storybook/stories"
BUILT_LIBS_DIR: "./dist/libs"
NODE_MODULES_DIR: "./node_modules"
SMART_RUNNER_DIRECTORY: ".protractor-smartrunner"
SAVE_SCREENSHOT: true
REDIRECT_URI: /
BROWSER_RUN: false
MAXINSTANCES: 2
PLAYWRIGHT_WORKERS: 2
PLAYWRIGHT_STORYBOOK_E2E_HOST: http://localhost
PLAYWRIGHT_STORYBOOK_E2E_PORT: 4400
PROXY_HOST_ECM: ${{ secrets.E2E_HOST }}
jobs:
main:
check-package-lock:
runs-on: ubuntu-22.04
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Check package-lock.json version
run: |
if [[ $(jq '.lockfileVersion == 2' package-lock.json) == "true" ]] ; then
echo -e "\033[31mpackage-lock must be version 1\033[0m"
exit 1
else
echo -e "\033[32mpackage-lock.json has a correct version\033[0m"
fi
check-if-pr-is-approved:
runs-on: ubuntu-22.04
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Check if PR is approved
id: action
if: ${{ github.event_name != 'schedule' }}
uses: kamatama41/get-pr-number-action@5c77b38a1b4974ebf8a9521a689f38a5898eadd6
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
- name: check if pr is approved
env:
DEVEL_FLAG: ${{ inputs.devel }}
GH_TOKEN: ${{ github.token }}
skip_check: "false"
run: |
if [ "${{ github.actor }}" == "dependabot[bot]" ] || [ "${{ github.actor }}" == "alfresco-build" ]; then
echo -e "\033[32mCommit by ${{ github.actor }}. No need for approval.\033[0m"
skip_check="true"
fi
if [ "${{ github.event_name }}" == "schedule" ]; then
echo -e "\033[32mSchedule event\033[0m"
skip_check="true"
fi
if [[ "$DEVEL_FLAG" == "true" ]]; then
echo -e "\033[32mDevel flag\033[0m"
skip_check="true"
fi
if [ "$skip_check" == "false" ]; then
echo "Checking PR approval"
prNumber=${{ steps.action.outputs.number }}
checkApproval=$(gh api /repos/Alfresco/alfresco-ng2-components/pulls/$prNumber/reviews | jq '.[] | select(.state == "APPROVED") | .user.login')
if [[ $checkApproval ]]; then
echo -e "\033[32mPR approved\033[0m"
else
echo -e "\033[31mPR NOT approved\033[0m"
exit 1
fi
fi
setup:
# long timeout required when cache has to be recreated
timeout-minutes: 30
name: "Build Components"
name: "Setup"
runs-on: ubuntu-22.04
needs: [check-if-pr-is-approved, check-package-lock]
steps:
- name: Checkout repository
uses: actions/checkout@v3
@@ -81,17 +165,75 @@ jobs:
npm ci
nx run cli:bundle
nx run testing:bundle
- run: nx print-affected $NX_CALCULATION_FLAGS
- uses: ./.github/actions/upload-node-modules-and-artifacts
unit-tests:
timeout-minutes: 30
name: "Unit tests: ${{ matrix.unit-tests.name }}"
runs-on: ubuntu-22.04
needs: [setup]
strategy:
fail-fast: false
# max-parallel: 4
matrix:
unit-tests:
- name: content-services
exclude: "insights,core,extensions,process-services,process-services-cloud"
- name: core
exclude: "insights,content-services,process-services,process-services-cloud"
- name: insights and process-services
exclude: "core,extensions,content-services,process-services-cloud"
- name: process-cloud
exclude: "insights,core,extensions,content-services,process-services"
steps:
- name: Checkout repository
uses: actions/checkout@v3
with:
fetch-depth: 0 # Fetch all history for all tags and branches
- uses: ./.github/actions/setup
- uses: ./.github/actions/download-node-modules-and-artifacts
- name: Run unit tests
run: |
/usr/bin/xvfb-run --auto-servernum nx affected:test $NX_CALCULATION_FLAGS --exclude=${{ matrix.unit-tests.exclude }}
lint:
# long timeout required when cache has to be recreated
timeout-minutes: 30
name: "Lint"
runs-on: ubuntu-22.04
needs: [setup]
steps:
- name: Checkout repository
uses: actions/checkout@v3
with:
fetch-depth: 0 # Fetch all history for all tags and branches
- uses: ./.github/actions/setup
- uses: ./.github/actions/download-node-modules-and-artifacts
- run: nx affected --target=lint $NX_CALCULATION_FLAGS
- run: /usr/bin/xvfb-run --auto-servernum nx affected:test $NX_CALCULATION_FLAGS --exclude="insights,core,extensions,process-services,process-services-cloud" }}
build-libs:
# long timeout required when cache has to be recreated
timeout-minutes: 30
name: "Build libs"
runs-on: ubuntu-22.04
needs: [setup]
steps:
- name: Checkout repository
uses: actions/checkout@v3
with:
fetch-depth: 0 # Fetch all history for all tags and branches
- uses: ./.github/actions/setup
- uses: ./.github/actions/download-node-modules-and-artifacts
- run: nx affected:build $NX_CALCULATION_FLAGS --prod
- run: nx build demoshell --configuration production
- run: nx run stories:build-storybook --configuration ci
- uses: ./.github/actions/upload-cache-and-artifacts
- run: nx affected --target=build-storybook $NX_CALCULATION_FLAGS --configuration ci
- uses: ./.github/actions/upload-node-modules-and-artifacts
playwright:
e2e-storybook:
timeout-minutes: 20
name: "playwright"
needs: [main]
name: "e2e: storybook"
needs: [build-libs, lint, unit-tests]
runs-on: ubuntu-22.04
steps:
- name: Checkout repository
@@ -99,18 +241,18 @@ jobs:
with:
fetch-depth: 0 # Fetch all history for all
- uses: ./.github/actions/setup
- uses: ./.github/actions/download-cache-and-artifacts
- uses: ./.github/actions/download-node-modules-and-artifacts
- name: Process Cloud Storybook Playwright
run: |
npx playwright install chromium
sudo sysctl -w fs.inotify.max_user_watches=524288
npx playwright test --config='e2e-playwright/playwright.config.ts' || exit 1
- uses: ./.github/actions/upload-cache-and-artifacts
npx nx affected --target=e2e-playwright $NX_CALCULATION_FLAGS || exit 1
- uses: ./.github/actions/upload-node-modules-and-artifacts
e2e:
timeout-minutes: 90
name: "e2e: ${{ matrix.e2e-test.description }}"
needs: [playwright]
needs: [build-libs, lint, unit-tests]
runs-on: ubuntu-22.04
strategy:
fail-fast: false
@@ -238,7 +380,7 @@ jobs:
with:
enable-cache: "true"
enable-node-modules-cache: "true"
- uses: ./.github/actions/download-cache-and-artifacts
- uses: ./.github/actions/download-node-modules-and-artifacts
- name: setup chrome
uses: ./.github/actions/setup-chrome
- name: e2e
@@ -253,4 +395,19 @@ jobs:
check-ps-cloud-env: ${{ matrix.e2e-test.check-ps-cloud-env }}
check-external-cs-env: ${{ matrix.e2e-test.check-external-cs-env }}
apa-proxy: ${{ matrix.e2e-test.apa-proxy }}
#
finalize:
if: ${{ always() }}
runs-on: ubuntu-latest
name: Final Results
needs: [check-if-pr-is-approved, check-package-lock, unit-tests, build-libs, e2e, e2e-storybook]
steps:
- name: workflow failure
run: exit 1
if: ${{ contains(needs.*.result, 'failure') }}
- name: workflow canceled
run: exit 1
if: ${{ contains(needs.*.result, 'cancelled') }}
- name: workflow success
run: exit 0
if: ${{ contains(needs.*.result, 'success') }}
+3 -3
View File
@@ -1,4 +1,4 @@
on:
on:
issue_comment:
types: [created]
name: Automatic Rebase
@@ -9,10 +9,10 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout the latest code
uses: actions/checkout@v2
uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Automatic Rebase
uses: cirrus-actions/rebase@1.3.1
uses: cirrus-actions/rebase@1.8
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+74 -29
View File
@@ -22,11 +22,11 @@ env:
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
GITHUB_BRANCH: ${{ github.ref_name }}
TRAVIS_BUILD_DIR: ${{ github.workspace }}
TRAVIS_COMMIT: ${{ github.sha }}
GH_BUILD_DIR: ${{ github.workspace }}
GH_COMMIT: ${{ github.sha }}
BUILD_ID: ${{ github.run_id }}
TRAVIS_RUN_NUMBER: ${{ github.run_attempt }}
TRAVIS_BUILD_NUMBER: ${{ github.run_id }}
GH_RUN_NUMBER: ${{ github.run_attempt }}
GH_BUILD_NUMBER: ${{ github.run_id }}
JOB_ID: ${{ github.run_id }}
PROXY_HOST_BPM: ${{ secrets.E2E_HOST }}
E2E_HOST_APA: ${{ secrets.E2E_HOST_APA }}
@@ -35,9 +35,10 @@ env:
E2E_PASSWORD: ${{ secrets.E2E_PASSWORD }}
E2E_ADMIN_EMAIL_IDENTITY: ${{ secrets.E2E_ADMIN_EMAIL_IDENTITY }}
E2E_ADMIN_PASSWORD_IDENTITY: ${{ secrets.E2E_ADMIN_PASSWORD_IDENTITY }}
USERNAME_ADF: ${{ secrets.E2E_USERNAME }}
#USERNAME_ADF: ${{ secrets.E2E_USERNAME }}
USERNAME_ADF: ${{ secrets.E2E_ADMIN_EMAIL_IDENTITY }}
PASSWORD_ADF: ${{ secrets.E2E_PASSWORD }}
URL_HOST_ADF: ${{ secrets.URL_HOST_ADF }}
URL_HOST_ADF: "http://localhost:4200"
IDENTITY_ADMIN_EMAIL: ${{ secrets.E2E_ADMIN_EMAIL_IDENTITY }}
IDENTITY_ADMIN_PASSWORD: ${{ secrets.E2E_ADMIN_PASSWORD_IDENTITY }}
AWS_S3_BUCKET_ACTIVITI_LICENSE: ${{ secrets.AWS_S3_BUCKET_ACTIVITI_LICENSE }}
@@ -55,7 +56,6 @@ env:
HR_USER_PASSWORD: ${{ secrets.HR_USER_PASSWORD }}
SMART_RUNNER_PATH: ".protractor-smartrunner"
S3_DBP_PATH: ${{ secrets.S3_DBP_PATH }}
S3_BUILD_BUCKET: ${{ secrets.S3_BUILD_BUCKET }}
S3_BUILD_BUCKET_SHORT_NAME: ${{ secrets.S3_BUILD_BUCKET_SHORT_NAME }}
NODE_OPTIONS: "--max-old-space-size=5120"
DOCKER_REPOSITORY_DOMAIN: ${{ secrets.DOCKER_REPOSITORY_DOMAIN }}
@@ -63,9 +63,21 @@ env:
DOCKER_REPOSITORY_PASSWORD: ${{ secrets.DOCKER_REPOSITORY_PASSWORD }}
DOCKER_REPOSITORY_STORYBOOK: "${{ secrets.DOCKER_REPOSITORY_DOMAIN }}/alfresco/storybook"
DOCKER_REPOSITORY: "${{ secrets.DOCKER_REPOSITORY_DOMAIN }}/alfresco/demo-shell"
NPM_REGISTRY_ADDRESS: ${{ secrets.NPM_REGISTRY_ADDRESS }}
NPM_REGISTRY_TOKEN: ${{ secrets.NPM_REGISTRY_TOKEN }}
GITHUB_TOKEN: ${{ secrets.BOT_GITHUB_TOKEN }}
REPO_OWNER: "Alfresco"
REPO_NAME: "alfresco-ng2-components"
DEMO_SHELL_DIR: "./dist/demo-shell"
STORYBOOK_DIR: "./dist/storybook/stories"
BUILT_LIBS_DIR: "./dist/libs"
NODE_MODULES_DIR: "./node_modules"
SMART_RUNNER_DIRECTORY: ".protractor-smartrunner"
SAVE_SCREENSHOT: true
REDIRECT_URI: /
BROWSER_RUN: false
MAXINSTANCES: 2
PLAYWRIGHT_WORKERS: 2
PLAYWRIGHT_STORYBOOK_E2E_HOST: http://localhost
PLAYWRIGHT_STORYBOOK_E2E_PORT: 4400
jobs:
setup:
@@ -79,12 +91,15 @@ jobs:
with:
fetch-depth: 0
- uses: ./.github/actions/setup
with:
enable-cache: false
enable-node-modules-cache: false
- name: install
run: |
npm ci
nx run cli:bundle
nx run testing:bundle
- uses: ./.github/actions/upload-cache-and-artifacts
- uses: ./.github/actions/upload-node-modules-and-artifacts
release-demoshell:
needs: [setup]
@@ -99,18 +114,18 @@ jobs:
- run: git fetch --all
- id: set-dryrun
uses: ./.github/actions/enable-dryrun
with:
with:
dry-run-flag: ${{ inputs.dry-run-release }}
- uses: ./.github/actions/setup
with:
with:
enable-cache: false
enable-node-modules-cache: false
- uses: ./.github/actions/download-cache-and-artifacts
- uses: ./.github/actions/download-node-modules-and-artifacts
- name: release Demoshell docker
run: |
nx build demoshell --configuration production
. ./scripts/travis/release/docker-tag.sh
./scripts/travis/release/release-demoshell-docker.sh ${{ steps.set-dryrun.outputs.dryrun }}
. ./scripts/github/release/docker-tag.sh
./scripts/github/release/release-demoshell-docker.sh ${{ steps.set-dryrun.outputs.dryrun }}
release-storybook:
needs: [setup]
@@ -125,47 +140,77 @@ jobs:
- run: git fetch --all
- id: set-dryrun
uses: ./.github/actions/enable-dryrun
with:
with:
dry-run-flag: ${{ inputs.dry-run-release }}
- uses: ./.github/actions/setup
with:
with:
enable-cache: false
enable-node-modules-cache: false
act: ${{ inputs.dry-run-release }}
- uses: ./.github/actions/download-cache-and-artifacts
- uses: ./.github/actions/download-node-modules-and-artifacts
- name: release Storybook docker
run: |
nx run stories:build-storybook --configuration ci
. ./scripts/travis/release/docker-tag.sh
./scripts/travis/release/release-storybook-docker.sh ${{ steps.set-dryrun.outputs.dryrun }}
. ./scripts/github/release/docker-tag.sh
./scripts/github/release/release-storybook-docker.sh ${{ steps.set-dryrun.outputs.dryrun }}
release-npm:
needs: [setup]
timeout-minutes: 15
if: github.event.pull_request.merged == true || ${{ inputs.dry-run-release }}
runs-on: ubuntu-22.04
permissions:
contents: read
packages: write
steps:
- name: Checkout repository
uses: actions/checkout@v3
with:
fetch-depth: 0
- uses: ./.github/actions/setup
with:
with:
enable-cache: false
enable-node-modules-cache: false
- id: set-dryrun
uses: ./.github/actions/enable-dryrun
with:
dry-run-flag: ${{ inputs.dry-run-release }}
- uses: ./.github/actions/download-cache-and-artifacts
with:
dry-run-flag: ${{ inputs.dry-run-release }}
- uses: ./.github/actions/download-node-modules-and-artifacts
- name: check PR number
id: action
uses: kamatama41/get-pr-number-action@v0
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
- name: save PR number
env:
GH_TOKEN: ${{ github.token }}
shell: bash
run: |
echo "PR_NUMBER=${{ steps.action.outputs.number }}" >> $GITHUB_ENV
- name: build libraries
run: |
set -u;
./scripts/travis/build/bumpversion.sh
nx affected:build $NX_CALCULATION_FLAGS --prod --exclude="demoshell"
./scripts/github/build/bumpversion.sh
nx affected:build $NX_CALCULATION_FLAGS --prod --exclude="demoshell" --skip-nx-cache
nx affected $NX_CALCULATION_FLAGS --target=pretheme
- name: release libraries
run: ./scripts/travis/release/release-npm.sh ${{ steps.set-dryrun.outputs.dryrun }}
- uses: actions/setup-node@v3
name: release libraries GH registry
with:
node-version: 14
registry-url: 'https://npm.pkg.github.com'
scope: '@alfresco'
- run: nx affected --target=npm-publish $NX_CALCULATION_FLAGS --tag=$TAG_NPM || exit 1
env:
NODE_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- uses: actions/setup-node@v3
name: release libraries Npm registry
with:
node-version: 14
registry-url: 'https://${{ vars.NPM_REGISTRY_ADDRESS }}'
scope: '@alfresco'
- run: nx affected --target=npm-publish $NX_CALCULATION_FLAGS --tag=$TAG_NPM || exit 1
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_REGISTRY_TOKEN }}
npm-check-bundle:
needs: [release-npm]
-20
View File
@@ -1,20 +0,0 @@
pull_request_rules:
- name: automatic merge for Dependabot pull requests
conditions:
- author=dependabot-preview[bot]
- status-success=continuous-integration/travis-ci/pr
- status-success=security/snyk - package.json (eromano (GitHub marketplace))
actions:
merge:
method: merge
- name: merge when all requested reviews are valid
conditions:
- status-success=continuous-integration/travis-ci/pr
- status-success=security/snyk - package.json (eromano (GitHub marketplace))
- '#approved-reviews-by>=1'
- '#changes-requested-reviews-by=0'
- '#commented-reviews-by=0'
- label!="do not merge"
actions:
merge:
method: merge
-622
View File
@@ -1,622 +0,0 @@
import:
- source: Alfresco/alfresco-build-tools:.travis.docker_hub_login.yml@v1.1.1
git:
depth: false
quiet: true
language: node_js
arch: arm64-graviton2
dist: bionic
node_js:
- '14'
before_install: . ./scripts/ci/job_hooks/before_install.sh
install: ./scripts/ci/job_hooks/install.sh
env:
global:
# REPOSITORY
- REPO_OWNER="Alfresco"
- REPO_NAME="alfresco-ng2-components"
- S3_DBP_PATH="s3://alfresco-travis-builds/adf"
- DEMO_SHELL_DIR="./dist/demo-shell"
- STORYBOOK_DIR="./dist/storybook/stories"
- BUILT_LIBS_DIR="./dist/libs"
- NODE_MODULES_DIR="./node_modules"
- SMART_RUNNER_DIRECTORY=".protractor-smartrunner"
#E2E VARIABLES
- SAVE_SCREENSHOT=true
- REDIRECT_URI=/
- BROWSER_RUN=false
- MAXINSTANCES=2
- PROXY_HOST_ECM=$E2E_HOST
- PROXY_HOST_BPM=$E2E_HOST
- HOST_SSO=$HOST_SSO
- USERNAME_ADF=$E2E_USERNAME
- PASSWORD_ADF=$E2E_PASSWORD
- IDENTITY_ADMIN_EMAIL=$E2E_ADMIN_EMAIL_IDENTITY
- IDENTITY_ADMIN_PASSWORD=$E2E_ADMIN_PASSWORD_IDENTITY
- URL_HOST_ADF="http://localhost:4200"
#PLAYWRIGHT VARIABLES
- PLAYWRIGHT_WORKERS=2
- PLAYWRIGHT_STORYBOOK_E2E_HOST=http://localhost
- PLAYWRIGHT_STORYBOOK_E2E_PORT=4400
branches:
only:
- /^master(-patch.*)?$/
- /^develop(-patch.*)?$/
- master
- develop
- /.*old-env.*/
- /.*next-release.*/
- /.*beta.*/
stages:
- name: Prerequisite
- name: Setup
- name: "Build"
if: tag IS blank AND (type = pull_request OR type = cron OR type = api)
- name: "Trigger Alpha ADF child build"
if: type = cron OR (type = api AND commit_message =~ /\[trigger adf\]/)
- name: "Release"
if: type = push
- name: "Unit test Lib"
if: type = pull_request OR type = cron OR type = api
- name: "e2e Test"
if: type = pull_request OR type = cron OR type = api
- name: "Release tag"
if: branch =~ /^master(-patch.*)?$/
- name: "Check bundle"
if: type = push AND tag IS blank OR (type = cron || type = api)
- name: "Deprecate develop builds"
if: branch =~ /^master(-patch.*)?$/
addons:
chrome: stable
before_script:
- export GIT_HASH=`git rev-parse HEAD`
services:
- xvfb
jobs:
include:
# Big Bang ===================
- stage: Prerequisite
name: "Before anything unnece$$ary happens..."
if: type == pull_request
language: python
python: 3.8
install: echo "no install here"
script: ./scripts/ci/jobs/dbpci-build-guard-check $TRAVIS_PULL_REQUEST || exit 1
# Setup ======================
- stage: Setup
name: "Node modules cache preparation"
script: echo "Only here for setting up the shared node_modules"
workspaces:
create:
name: node_modules_cache
paths:
- "$NODE_MODULES_DIR"
use: node_modules_cache
- stage: "Build"
name: "Lib::Build"
install: echo "no install"
script: $(npm bin)/nx affected:build $NX_CALCULATION_FLAGS --prod --exclude="demoshell"
workspaces:
create:
name: built_libs_cache
paths:
- "$BUILT_LIBS_DIR"
- "$NODE_MODULES_DIR"
use: node_modules_cache
- stage: "Build"
name: "Lint"
install: echo "no install"
script: $(npm bin)/nx affected:lint $NX_CALCULATION_FLAGS --parallel=5
workspaces:
use: node_modules_cache
- stage: "Build"
name: "Demo Shell::Build"
install: echo "no install"
script: $(npm bin)/nx build demoshell --configuration production
workspaces:
create:
name: built_demo_shell_cache
paths:
- "$DEMO_SHELL_DIR"
use:
- node_modules_cache
- stage: "Build"
name: "Storybook::Build"
install: echo "no install"
script: $(npm bin)/nx run stories:build-storybook --configuration ci
workspaces:
create:
name: built_storybook_cache
paths:
- "$STORYBOOK_DIR"
use:
- node_modules_cache
- stage: "Unit test Lib"
name: "content::unit"
install: echo "no install"
script: $(npm bin)/nx affected:test $NX_CALCULATION_FLAGS --exclude="insights,core,extensions,process-services,process-services-cloud"
workspaces:
use: built_libs_cache
- stage: "Unit test Lib"
name: "core-extension::unit"
install: echo "no install"
script: $(npm bin)/nx affected:test $NX_CALCULATION_FLAGS --exclude="insights,content-services,process-services,process-services-cloud"
workspaces:
use: built_libs_cache
- stage: "Unit test Lib"
name: "process-insights::unit"
install: echo "no install"
script: $(npm bin)/nx affected:test $NX_CALCULATION_FLAGS --exclude="core,extensions,content-services,process-services-cloud"
workspaces:
use: built_libs_cache
- stage: "Unit test Lib"
name: "process-cloud::unit"
install: echo "no install"
script: $(npm bin)/nx affected:test $NX_CALCULATION_FLAGS --exclude="insights,core,extensions,content-services,process-services"
workspaces:
use: built_libs_cache
- stage: "Trigger Alpha ADF child build"
name: "Trigger Alpha ADF child build"
script: ./scripts/travis/update/update-project.sh -p $TRAVIS_BUILD_NUMBER -t $GITHUB_TOKEN -v alpha -c $TRAVIS_COMMIT
workspaces:
use: built_libs_cache
- stage: "Release"
name: "release libs::npm"
install: echo "no install"
script:
- ./scripts/travis/build/bumpversion.sh || travis_terminate 1
- $(npm bin)/nx affected:build $NX_CALCULATION_FLAGS --prod --exclude="demoshell" || travis_terminate 1
- $(npm bin)/nx affected $NX_CALCULATION_FLAGS --target=pretheme || travis_terminate 1
- ./scripts/travis/release/release-npm.sh || travis_terminate 1
workspaces:
use: node_modules_cache
- stage: "Release"
name: "release demoshell::docker"
install: echo "no install"
script:
- $(npm bin)/nx build demoshell --configuration production || travis_terminate 1
- . ./scripts/travis/release/docker-tag.sh || travis_terminate 1
- ./scripts/travis/release/release-demoshell-docker.sh
workspaces:
use: node_modules_cache
- stage: "Release"
name: "release storybook::docker"
install: echo "no install"
script:
- $(npm bin)/nx run stories:build-storybook --configuration ci || travis_terminate 1
- . ./scripts/travis/release/docker-tag.sh || travis_terminate 1
- ./scripts/travis/release/release-storybook-docker.sh || travis_terminate 1
workspaces:
use: node_modules_cache
- stage: "Release tag"
script: ./scripts/travis/release/git-tag.sh
- stage: "Deprecate develop builds"
script:
- ADF_VERSION=$(npm view @alfresco/adf-core@${TAG_NPM} version)
- ./scripts/travis/release/deprecate-develop-build.sh -v ${ADF_VERSION}
- stage: "e2e Test"
name: "Process Cloud: Storybook Playwright"
install: echo "no install"
before_script: ./scripts/ci/jobs/dbpci-before-playwright
script: ./scripts/travis/storybook-testing/storybook-test.sh
workspaces:
use:
- built_libs_cache
- built_demo_shell_cache
- stage: "e2e Test"
name: "Core"
install: echo "no install"
before_script:
- ./scripts/ci/job_hooks/before_e2e.sh
- ./scripts/ci/check-env/check-cs-env.sh || travis_terminate 1
- ./scripts/ci/check-env/check-ps-env.sh || travis_terminate 1
script: ./scripts/travis/e2e/e2e.sh "core"
after_script: ./scripts/ci/job_hooks/after_e2e.sh
workspaces:
create:
name: e2e_cache
paths:
- "$SMART_RUNNER_DIRECTORY"
use:
- built_libs_cache
- built_demo_shell_cache
- e2e_cache
env:
- FOLDER="core"
- PROVIDER='ALL'
- AUTH_TYPE='OAUTH'
- stage: "e2e Test"
name: "Content: Components"
install: echo "no install"
before_script:
- ./scripts/ci/job_hooks/before_e2e.sh
- ./scripts/ci/check-env/check-cs-env.sh || travis_terminate 1
script: ./scripts/travis/e2e/e2e.sh "content-services"
after_script: ./scripts/ci/job_hooks/after_e2e.sh
workspaces:
create:
name: e2e_cache
paths:
- "$SMART_RUNNER_DIRECTORY"
use:
- built_libs_cache
- built_demo_shell_cache
- e2e_cache
env:
- FOLDER="content-services/components"
- PROVIDER="ECM"
- AUTH_TYPE="BASIC"
- stage: "e2e Test"
name: "Content: Directives"
install: echo "no install"
before_script:
- ./scripts/ci/job_hooks/before_e2e.sh
- ./scripts/ci/check-env/check-cs-env.sh || travis_terminate 1
script: ./scripts/travis/e2e/e2e.sh "content-services"
after_script: ./scripts/ci/job_hooks/after_e2e.sh
workspaces:
create:
name: e2e_cache
paths:
- "$SMART_RUNNER_DIRECTORY"
use:
- built_libs_cache
- built_demo_shell_cache
- e2e_cache
env:
- FOLDER="content-services/directives"
- PROVIDER="ECM"
- AUTH_TYPE="BASIC"
- stage: "e2e Test"
name: "Content: Document List"
install: echo "no install"
before_script:
- ./scripts/ci/job_hooks/before_e2e.sh
- ./scripts/ci/check-env/check-cs-env.sh || travis_terminate 1
script: ./scripts/travis/e2e/e2e.sh "content-services"
after_script: ./scripts/ci/job_hooks/after_e2e.sh
workspaces:
create:
name: e2e_cache
paths:
- "$SMART_RUNNER_DIRECTORY"
use:
- built_libs_cache
- built_demo_shell_cache
- e2e_cache
env:
- FOLDER="content-services/document-list"
- PROVIDER="ECM"
- AUTH_TYPE="BASIC"
- stage: "e2e Test"
name: "Content: Metadata"
install: echo "no install"
before_script:
- ./scripts/ci/job_hooks/before_e2e.sh
- ./scripts/ci/check-env/check-cs-env.sh || travis_terminate 1
script: ./scripts/travis/e2e/e2e.sh "content-services"
after_script: ./scripts/ci/job_hooks/after_e2e.sh
workspaces:
create:
name: e2e_cache
paths:
- "$SMART_RUNNER_DIRECTORY"
use:
- built_libs_cache
- built_demo_shell_cache
- e2e_cache
env:
- FOLDER="content-services/metadata"
- PROVIDER="ECM"
- AUTH_TYPE="BASIC"
- stage: "e2e Test"
name: "Content: Upload and Versioning"
install: echo "no install"
before_script:
- ./scripts/ci/job_hooks/before_e2e.sh
- ./scripts/ci/check-env/check-cs-env.sh || travis_terminate 1
script: ./scripts/travis/e2e/e2e.sh "content-services" "browser"
after_script: ./scripts/ci/job_hooks/after_e2e.sh
workspaces:
create:
name: e2e_cache
paths:
- "$SMART_RUNNER_DIRECTORY"
use:
- built_libs_cache
- built_demo_shell_cache
- e2e_cache
env:
- FOLDER="content-services/upload"
- PROVIDER="ECM"
- AUTH_TYPE="BASIC"
- stage: "e2e Test"
name: "Search"
install: echo "no install"
before_script:
- ./scripts/ci/job_hooks/before_e2e.sh
- ./scripts/ci/check-env/check-cs-env.sh || travis_terminate 1
script: ./scripts/travis/e2e/e2e.sh "content-services"
after_script: ./scripts/ci/job_hooks/after_e2e.sh
workspaces:
create:
name: e2e_cache
paths:
- "$SMART_RUNNER_DIRECTORY"
use:
- built_libs_cache
- built_demo_shell_cache
- e2e_cache
env:
- FOLDER="search"
- PROVIDER="ECM"
- AUTH_TYPE="BASIC"
- stage: "e2e Test"
name: "Process: Form"
install: echo "no install"
before_script:
- ./scripts/ci/job_hooks/before_e2e.sh
- ./scripts/ci/check-env/check-ps-env.sh || travis_terminate 1
- ./scripts/ci/check-env/check-external-cs-env.sh || travis_terminate 1
script: ./scripts/travis/e2e/e2e.sh "process-services"
after_script: ./scripts/ci/job_hooks/after_e2e.sh
workspaces:
create:
name: e2e_cache
paths:
- "$SMART_RUNNER_DIRECTORY"
use:
- built_libs_cache
- built_demo_shell_cache
- e2e_cache
env:
- FOLDER="process-services/form"
- PROVIDER="BPM"
- AUTH_TYPE="OAUTH"
- stage: "e2e Test"
name: "Process: Process"
install: echo "no install"
before_script:
- ./scripts/ci/job_hooks/before_e2e.sh
- ./scripts/ci/check-env/check-ps-env.sh || travis_terminate 1
- ./scripts/ci/check-env/check-external-cs-env.sh || travis_terminate 1
script: ./scripts/travis/e2e/e2e.sh "process-services"
after_script: ./scripts/ci/job_hooks/after_e2e.sh
workspaces:
create:
name: e2e_cache
paths:
- "$SMART_RUNNER_DIRECTORY"
use:
- built_libs_cache
- built_demo_shell_cache
- e2e_cache
env:
- FOLDER="process-services/process"
- PROVIDER="BPM"
- AUTH_TYPE="OAUTH"
- stage: "e2e Test"
name: "Process: Tasks"
install: echo "no install"
before_script:
- ./scripts/ci/job_hooks/before_e2e.sh
- ./scripts/ci/check-env/check-ps-env.sh || travis_terminate 1
- ./scripts/ci/check-env/check-external-cs-env.sh || travis_terminate 1
script: ./scripts/travis/e2e/e2e.sh "process-services"
after_script: ./scripts/ci/job_hooks/after_e2e.sh
workspaces:
create:
name: e2e_cache
paths:
- "$SMART_RUNNER_DIRECTORY"
use:
- built_libs_cache
- built_demo_shell_cache
- e2e_cache
env:
- FOLDER="process-services/tasks"
- PROVIDER="BPM"
- AUTH_TYPE="OAUTH"
- stage: "e2e Test"
name: "Process: Widgets"
install: echo "no install"
before_script:
- ./scripts/ci/job_hooks/before_e2e.sh
- ./scripts/ci/check-env/check-ps-env.sh || travis_terminate 1
- ./scripts/ci/check-env/check-external-cs-env.sh || travis_terminate 1
script: ./scripts/travis/e2e/e2e.sh "process-services"
after_script: ./scripts/ci/job_hooks/after_e2e.sh
workspaces:
create:
name: e2e_cache
paths:
- "$SMART_RUNNER_DIRECTORY"
use:
- built_libs_cache
- built_demo_shell_cache
- e2e_cache
env:
- FOLDER="process-services/widgets"
- PROVIDER="BPM"
- AUTH_TYPE="OAUTH"
- stage: "e2e Test"
name: "Process Cloud : Form"
install: echo "no install"
before_script:
- ./scripts/ci/job_hooks/before_e2e.sh
- ./scripts/ci/check-env/check-cs-env.sh || travis_terminate 1
- ./scripts/ci/check-env/check-ps-cloud-env.sh || travis_terminate 1
script: ./scripts/travis/e2e/e2e.sh "process-services-cloud"
after_script: ./scripts/ci/job_hooks/after_e2e.sh
workspaces:
create:
name: e2e_cache
paths:
- "$SMART_RUNNER_DIRECTORY"
use:
- built_libs_cache
- built_demo_shell_cache
- e2e_cache
env:
- FOLDER="process-services-cloud/form-field"
- PROVIDER="ALL"
- AUTH_TYPE="OAUTH"
- PROXY_HOST_BPM=$E2E_HOST_APA
- stage: "e2e Test"
name: "Process Cloud : People"
before_script:
- ./scripts/ci/job_hooks/before_e2e.sh
- ./scripts/ci/check-env/check-cs-env.sh || travis_terminate 1
- ./scripts/ci/check-env/check-ps-cloud-env.sh || travis_terminate 1
script: ./scripts/travis/e2e/e2e.sh "process-services-cloud"
after_script: ./scripts/ci/job_hooks/after_e2e.sh
workspaces:
create:
name: e2e_cache
paths:
- "$SMART_RUNNER_DIRECTORY"
use:
- built_libs_cache
- built_demo_shell_cache
- e2e_cache
env:
- FOLDER="process-services-cloud/people"
- PROVIDER="ALL"
- AUTH_TYPE="OAUTH"
- PROXY_HOST_BPM=$E2E_HOST_APA
- stage: "e2e Test"
name: "Process Cloud : Process"
install: echo "no install"
before_script:
- ./scripts/ci/job_hooks/before_e2e.sh
- ./scripts/ci/check-env/check-cs-env.sh || travis_terminate 1
- ./scripts/ci/check-env/check-ps-cloud-env.sh || travis_terminate 1
script: ./scripts/travis/e2e/e2e.sh "process-services-cloud"
after_script: ./scripts/ci/job_hooks/after_e2e.sh
workspaces:
create:
name: e2e_cache
paths:
- "$SMART_RUNNER_DIRECTORY"
use:
- built_libs_cache
- built_demo_shell_cache
- e2e_cache
env:
- FOLDER="process-services-cloud/process"
- PROVIDER="ALL"
- AUTH_TYPE="OAUTH"
- PROXY_HOST_BPM=$E2E_HOST_APA
- stage: "e2e Test"
name: "Process Cloud : Start Task"
install: echo "no install"
before_script:
- ./scripts/ci/job_hooks/before_e2e.sh
- ./scripts/ci/check-env/check-cs-env.sh || travis_terminate 1
- ./scripts/ci/check-env/check-ps-cloud-env.sh || travis_terminate 1
script: ./scripts/travis/e2e/e2e.sh "process-services-cloud"
after_script: ./scripts/ci/job_hooks/after_e2e.sh
workspaces:
create:
name: e2e_cache
paths:
- "$SMART_RUNNER_DIRECTORY"
use:
- built_libs_cache
- built_demo_shell_cache
- e2e_cache
env:
- FOLDER="process-services-cloud/start-task"
- PROVIDER="ALL"
- AUTH_TYPE="OAUTH"
- PROXY_HOST_BPM=$E2E_HOST_APA
- stage: "e2e Test"
name: "Process Cloud : Tasks List"
install: echo "no install"
before_script:
- ./scripts/ci/job_hooks/before_e2e.sh
- ./scripts/ci/check-env/check-cs-env.sh || travis_terminate 1
- ./scripts/ci/check-env/check-ps-cloud-env.sh || travis_terminate 1
script: ./scripts/travis/e2e/e2e.sh "process-services-cloud"
after_script: ./scripts/ci/job_hooks/after_e2e.sh
workspaces:
create:
name: e2e_cache
paths:
- "$SMART_RUNNER_DIRECTORY"
use:
- built_libs_cache
- built_demo_shell_cache
- e2e_cache
env:
- FOLDER="process-services-cloud/task-list"
- PROVIDER="ALL"
- AUTH_TYPE="OAUTH"
- PROXY_HOST_BPM=$E2E_HOST_APA
- stage: Check bundle
install: echo "no install"
script:
- ADF_VERSION=$(npm view @alfresco/adf-core@${TAG_NPM} version)
- ./scripts/travis/build/npm-check-bundles.sh -v ${ADF_VERSION}
workspaces:
use: built_libs_cache
notifications:
slack:
on_pull_requests: false
rooms:
secure: "qcTP/+rhVweMSZZAQMPz4sW7boS8XC0RX1SPYgg7hIfxBr9747WpRLkJ1sirkVaXI/6XfYAyl42CTfPmTuJxIC+co/NSnEDknwVsnKZd0O/ykTpo+mxIN4BTZX8dm+gELR5IEYQPs+Yki3ZnD9b+0mCK1yD8JallKCQeE2U9BhzZhP/Fn0ce35EulybNp3QQDaox0XC+7gadMdxlvK8mzP1scw76wRLtx25QLxxV+OwEw0bzyh8y3onfjHfnoDcUQWRTNdnjapzmgf1LNdC202A5kwp5sJggfSDr+ActRqaMvv4BbMsFpdan34B6zPQJfyZL1r8IB8O8BEKcAaOUVcTjnZAOom8kHS8F07/mo5xnNYmV8oNX2/egr1CiG4U0EAGF2XGqM+vetYnF88LTEzy84kVxmSwKGVfzlGOyTplMXJ1iCENndtfWm1AXhAFj5RSsSAZg6IStTM+mcpnC75moEwQtj8bTenwehHz1HQAjQX7xeTQo27SxDc7oqp1ReyXCllMjKxckjVGmp2j6yxn1Jl55kivBj57vluLtEtziOGluVELP5E2fV0VAuErNhnjLm4LJARVN76PQaTOXYwATVVJJDhb/77TesvxQsr3VfiROEKm7QB7IDFjghjLLisSX67JQ5+7K/qMlqf9+9hNw4n0v1eMylVjt+gyxspc="
on_failure: always
on_success: change
template:
- "Repo `%{repository_slug}` *%{result}* build (<%{build_url}|#%{build_number}>) for commit (<%{compare_url}|%{commit}>) on branch `%{branch}`."
- "Author: %{author} Execution time: *%{duration}*"
- "Message: %{message}"
cache:
npm: false
directories:
- tmp
+6 -6
View File
@@ -2,8 +2,8 @@
| branch | status |
| --- | --- |
| master | [![Build Status](https://travis-ci.com/Alfresco/alfresco-ng2-components.svg?branch=master)](https://travis-ci.com/Alfresco/alfresco-ng2-components) |
| develop | [![Build Status](https://travis-ci.com/Alfresco/alfresco-ng2-components.svg?branch=develop)](https://travis-ci.com/Alfresco/alfresco-ng2-components) |
| master | [![git-tag](https://github.com/Alfresco/alfresco-ng2-components/actions/workflows/git-tag.yml/badge.svg)](https://github.com/Alfresco/alfresco-ng2-components/actions/workflows/git-tag.yml) |
| develop | [![cron schedule](https://github.com/Alfresco/alfresco-ng2-components/actions/workflows/cron.yml/badge.svg)](https://github.com/Alfresco/alfresco-ng2-components/actions/workflows/cron.yml)|
[![Codacy Badge](https://api.codacy.com/project/badge/Grade/d9eb873741da403bb3284778102372e7)](https://www.codacy.com/app/Alfresco/alfresco-ng2-components?utm_source=github.com&utm_medium=referral&utm_content=Alfresco/alfresco-ng2-components&utm_campaign=badger)
[![Join the chat at https://gitter.im/Alfresco/alfresco-ng2-components](https://badges.gitter.im/Alfresco/alfresco-ng2-components.svg)](https://gitter.im/Alfresco/alfresco-ng2-components?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
@@ -39,8 +39,8 @@ ADF Libraries list:
- [Insights](https://github.com/Alfresco/alfresco-ng2-components/tree/develop/lib/insights)
- [Process Service Cloud](https://github.com/Alfresco/alfresco-ng2-components/tree/develop/lib/process-services-cloud)
- [Process service](https://github.com/Alfresco/alfresco-ng2-components/tree/develop/lib/process-services)
- [Stories](https://github.com/Alfresco/alfresco-ng2-components/tree/develop/lib/stories)
- [Stories](https://github.com/Alfresco/alfresco-ng2-components/tree/develop/lib/stories)
## Demo Application
A separate application showcasing integration of components can be found
@@ -49,7 +49,7 @@ The app has examples of basic interaction for both APS and ACS components.
## Yeoman generators
To speed up the development of your ADF application, use the
To speed up the development of your ADF application, use the
[Yeoman Generator](https://github.com/Alfresco/generator-ng2-alfresco-app).
This will create a full working project with all the right libraries and tools.
@@ -69,6 +69,6 @@ All components are supported in the following browsers:
|Edge |13, 14 |
|Internet Explorer |11 |
* Due to a [known issue](https://bugzilla.mozilla.org/show_bug.cgi?id=1188880) in Firefox, the Alfresco Upload Component does not currently support folder upload functionality on Firefox.
* Due to a [known issue](https://bugzilla.mozilla.org/show_bug.cgi?id=1188880) in Firefox, the Alfresco Upload Component does not currently support folder upload functionality on Firefox.
See the [Browser Support](BROWSER-SUPPORT.md) article for more details.
+175 -17
View File
@@ -167,7 +167,8 @@
"demo-shell/src/assets/fonts/muli/muli.css",
"demo-shell/src/styles.scss",
"demo-shell/src/custom-style-dev.scss",
"node_modules/cropperjs/dist/cropper.min.css"
"node_modules/cropperjs/dist/cropper.min.css",
"node_modules/pdfjs-dist/web/pdf_viewer.css"
],
"scripts": [
"node_modules/pdfjs-dist/build/pdf.js",
@@ -204,6 +205,14 @@
}
]
},
"canary": {
"fileReplacements": [
{
"replace": "demo-shell/src/environments/environment.ts",
"with": "demo-shell/src/environments/environment.canary.ts"
}
]
},
"e2e": {
"budgets": [
{
@@ -241,6 +250,9 @@
"production": {
"browserTarget": "demoshell:build:production"
},
"canary": {
"browserTarget": "demoshell:build:canary"
},
"e2e": {
"browserTarget": "demoshell:build:e2e"
}
@@ -357,7 +369,8 @@
"demo-shell/src/assets/fonts/muli/muli.css",
"demo-shell/src/styles.scss",
"demo-shell/src/custom-style-dev.scss",
"node_modules/cropperjs/dist/cropper.min.css"
"node_modules/cropperjs/dist/cropper.min.css",
"node_modules/pdfjs-dist/web/pdf_viewer.css"
]
},
"configurations": {
@@ -378,7 +391,8 @@
"demo-shell/src/assets/fonts/muli/muli.css",
"demo-shell/src/styles.scss",
"demo-shell/src/custom-style-dev.scss",
"node_modules/cropperjs/dist/cropper.min.css"
"node_modules/cropperjs/dist/cropper.min.css",
"node_modules/pdfjs-dist/web/pdf_viewer.css"
]
},
"configurations": {
@@ -422,10 +436,25 @@
"options": {
"commands": [
{
"command": "$(npm bin)/webpack -- --config ./lib/config/webpack.style.js --progress --profile --bail && rm ./dist/libs/core/lib/prebuilt-themes/*.js"
"command": "$(npm bin)/webpack -- --config ./lib/config/webpack.style.js --progress --profile --bail"
}
]
}
},
"npm-publish": {
"executor": "nx:run-commands",
"dependsOn": [
"build"
],
"options": {
"cwd": "dist/libs/core",
"commands": [
{
"command": "npm publish --tag {args.tag}",
"forwardAllArgs": true
}
]
}
}
}
},
@@ -446,7 +475,8 @@
"project": "lib/content-services/ng-package.json",
"tsConfig": "lib/content-services/tsconfig.lib.prod.json"
}
}
},
"defaultConfiguration": "production"
},
"test": {
"builder": "@angular-devkit/build-angular:karma",
@@ -478,7 +508,8 @@
"demo-shell/src/assets/fonts/muli/muli.css",
"demo-shell/src/styles.scss",
"demo-shell/src/custom-style-dev.scss",
"node_modules/cropperjs/dist/cropper.min.css"
"node_modules/cropperjs/dist/cropper.min.css",
"node_modules/pdfjs-dist/web/pdf_viewer.css"
]
},
"configurations": {
@@ -499,7 +530,8 @@
"demo-shell/src/assets/fonts/muli/muli.css",
"demo-shell/src/styles.scss",
"demo-shell/src/custom-style-dev.scss",
"node_modules/cropperjs/dist/cropper.min.css"
"node_modules/cropperjs/dist/cropper.min.css",
"node_modules/pdfjs-dist/web/pdf_viewer.css"
]
},
"configurations": {
@@ -527,6 +559,21 @@
}
]
}
},
"npm-publish": {
"executor": "nx:run-commands",
"dependsOn": [
"build"
],
"options": {
"cwd": "dist/libs/content-services",
"commands": [
{
"command": "npm publish --tag {args.tag}",
"forwardAllArgs": true
}
]
}
}
}
},
@@ -547,7 +594,8 @@
"project": "lib/process-services/ng-package.json",
"tsConfig": "lib/process-services/tsconfig.lib.prod.json"
}
}
},
"defaultConfiguration": "production"
},
"test": {
"builder": "@angular-devkit/build-angular:karma",
@@ -596,6 +644,21 @@
}
]
}
},
"npm-publish": {
"executor": "nx:run-commands",
"dependsOn": [
"build"
],
"options": {
"cwd": "dist/libs/process-services",
"commands": [
{
"command": "npm publish --tag {args.tag}",
"forwardAllArgs": true
}
]
}
}
}
},
@@ -616,7 +679,8 @@
"project": "lib/process-services-cloud/ng-package.json",
"tsConfig": "lib/process-services-cloud/tsconfig.lib.prod.json"
}
}
},
"defaultConfiguration": "production"
},
"test": {
"builder": "@angular-devkit/build-angular:karma",
@@ -648,7 +712,8 @@
"demo-shell/src/assets/fonts/muli/muli.css",
"demo-shell/src/styles.scss",
"demo-shell/src/custom-style-dev.scss",
"node_modules/cropperjs/dist/cropper.min.css"
"node_modules/cropperjs/dist/cropper.min.css",
"node_modules/pdfjs-dist/web/pdf_viewer.css"
]
},
"configurations": {
@@ -669,7 +734,8 @@
"demo-shell/src/assets/fonts/muli/muli.css",
"demo-shell/src/styles.scss",
"demo-shell/src/custom-style-dev.scss",
"node_modules/cropperjs/dist/cropper.min.css"
"node_modules/cropperjs/dist/cropper.min.css",
"node_modules/pdfjs-dist/web/pdf_viewer.css"
]
},
"configurations": {
@@ -678,6 +744,17 @@
}
}
},
"e2e-playwright": {
"executor": "nx:run-commands",
"options": {
"commands": [
{
"command": "$(npm bin)/playwright test --config='e2e-playwright/playwright.config.ts'"
}
]
}
},
"spellcheck": {
"executor": "nx:run-commands",
"options": {
@@ -697,6 +774,21 @@
}
]
}
},
"npm-publish": {
"executor": "nx:run-commands",
"dependsOn": [
"build"
],
"options": {
"cwd": "dist/libs/process-services-cloud",
"commands": [
{
"command": "npm publish --tag {args.tag}",
"forwardAllArgs": true
}
]
}
}
}
},
@@ -717,7 +809,8 @@
"project": "lib/insights/ng-package.json",
"tsConfig": "lib/insights/tsconfig.lib.prod.json"
}
}
},
"defaultConfiguration": "production"
},
"test": {
"builder": "@angular-devkit/build-angular:karma",
@@ -756,6 +849,21 @@
}
]
}
},
"npm-publish": {
"executor": "nx:run-commands",
"dependsOn": [
"build"
],
"options": {
"cwd": "dist/libs/insights",
"commands": [
{
"command": "npm publish --tag {args.tag}",
"forwardAllArgs": true
}
]
}
}
}
},
@@ -775,7 +883,8 @@
"production": {
"tsConfig": "lib/extensions/tsconfig.lib.prod.json"
}
}
},
"defaultConfiguration": "production"
},
"test": {
"builder": "@angular-devkit/build-angular:karma",
@@ -805,6 +914,21 @@
}
]
}
},
"npm-publish": {
"executor": "nx:run-commands",
"dependsOn": [
"build"
],
"options": {
"cwd": "dist/libs/extensions",
"commands": [
{
"command": "npm publish --tag {args.tag}",
"forwardAllArgs": true
}
]
}
}
}
},
@@ -837,7 +961,8 @@
"generatePackageJson" : true,
"tsConfig": "lib/testing/tsconfig.lib.prod.json"
}
}
},
"defaultConfiguration": "production"
},
"lint": {
"builder": "@nrwl/linter:eslint",
@@ -876,6 +1001,21 @@
"target": "build"
}
]
},
"npm-publish": {
"executor": "nx:run-commands",
"dependsOn": [
"build"
],
"options": {
"cwd": "dist/libs/testing",
"commands": [
{
"command": "npm publish --tag {args.tag}",
"forwardAllArgs": true
}
]
}
}
}
},
@@ -896,7 +1036,8 @@
"production": {
"tsConfig": "lib/cli/tsconfig.json"
}
}
},
"defaultConfiguration": "production"
},
"bundle": {
"executor": "nx:run-commands",
@@ -935,6 +1076,21 @@
"lib/cli/**/*.html"
]
}
},
"npm-publish": {
"executor": "nx:run-commands",
"dependsOn": [
"build"
],
"options": {
"cwd": "dist/libs/cli",
"commands": [
{
"command": "npm publish --tag {args.tag}",
"forwardAllArgs": true
}
]
}
}
}
},
@@ -955,7 +1111,8 @@
"demo-shell/src/assets/fonts/muli/muli.css",
"demo-shell/src/styles.scss",
"demo-shell/src/custom-style-dev.scss",
"node_modules/cropperjs/dist/cropper.min.css"
"node_modules/cropperjs/dist/cropper.min.css",
"node_modules/pdfjs-dist/web/pdf_viewer.css"
]
},
"configurations": {
@@ -976,7 +1133,8 @@
"demo-shell/src/assets/fonts/muli/muli.css",
"demo-shell/src/styles.scss",
"demo-shell/src/custom-style-dev.scss",
"node_modules/cropperjs/dist/cropper.min.css"
"node_modules/cropperjs/dist/cropper.min.css",
"node_modules/pdfjs-dist/web/pdf_viewer.css"
]
},
"configurations": {
+6 -2
View File
@@ -27,6 +27,7 @@
"CSRF",
"datacolumn",
"datarow",
"Datasource",
"datatable",
"dateitem",
"datepicker",
@@ -62,9 +63,11 @@
"highlightable",
"hotfix",
"imgpreview",
"Inplace",
"intitem",
"jira",
"jsons",
"jwks",
"keycodes",
"keyvaluepairs",
"keyvaluepairsitem",
@@ -76,15 +79,15 @@
"mincount",
"minlength",
"minmax",
"jsons",
"Inplace",
"MLTEXT",
"mousedrag",
"mouseenter",
"multiselect",
"mysites",
"nginx",
"numbervisibilityprocess",
"OAUTHCONFIG",
"oidc",
"pdfjs",
"penta",
"printf",
@@ -121,6 +124,7 @@
"uncheck",
"Unclaim",
"unfavorite",
"unlisten",
"unshare",
"UPDATEPERMISSIONS",
"uploader",
+1 -1
View File
@@ -50,7 +50,7 @@ module.exports = function (config) {
colors: true,
logLevel: config.LOG_INFO,
autoWatch: true,
browsers: ['Chrome'],
browsers: ['ChromeHeadless'],
singleRun: false
});
};
+1 -1
View File
@@ -1,7 +1,7 @@
{
"name": "Alfresco-ADF-Angular-Demo",
"description": "Demo shell for Alfresco Angular components",
"version": "6.0.0-A.1",
"version": "6.0.0-A.3",
"author": "Alfresco Software, Ltd.",
"repository": {
"type": "git",
+25 -2
View File
@@ -1,5 +1,28 @@
{
"APP": {
"HOST_SETTINGS": {
"TYPE-AUTH": "نوع المصادقة",
"BASIC": "مصادقة أساسية",
"SSO": "SSO",
"IMPLICIT-FLOW": "تدفق ضمني",
"PROVIDER": "موفر",
"REQUIRED": "هذا الحقل مطلوب",
"CS_URL_ERROR": "لا يتطابق عنوان Content Services مع تنسيق URL",
"PS_URL_ERROR": "لا يتطابق عنوان Process Services مع تنسيق URL",
"TITLE": "الإعدادات",
"CS-HOST": "عنوان URL لـ Content Services",
"BP-HOST": "عنوان URL لـ Process Services",
"BACK": "عودة",
"APPLY": "تطبيق",
"NOT_VALID": "لم يتم التعرف على http(s)://host|ip:port(/path)، جرّب عنوان URL مختلفًا.",
"REDIRECT": "إعادة توجيه URI",
"REDIRECT_LOGOUT": "إعادة توجيه خروج URI",
"SILENT": "دخول صامت",
"SCOPE": "نطاق",
"CLIENT": "معرف العميل",
"PUBLIC_URLS": "عناوين url العامة لتسجيل الدخول الصامت",
"SECRET": "سر"
},
"ABOUT": {
"DEVELOPMENT": "وضع التطوير"
},
@@ -44,7 +67,7 @@
"VERSION": {
"NO_PERMISSION": "ليس لديك إذن لإدارة إصدارات هذا المحتوى",
"NO_PERMISSION_EVENT": "ليس لديك إذن ${event.permission} ل${event.action} ${event.type}",
"CHOOSE_FILE": "تحديد ملف لرؤية إصداراته",
"CHOOSE_FILE": "حدد ملف لرؤية إصداراته",
"DIALOG": {
"CLOSE": "إغلاق",
"TITLE": "إدارة الإصدارات"
@@ -164,7 +187,7 @@
"DELETE": "حذف",
"FAVORITES": "إضافة إلى المفضلات",
"SHARE": "مشاركة",
"THEME": "تحديد نسق",
"THEME": "حدد نسق",
"SHOW_VERSION": "إظهار الإصدار",
"HIDE_VERSION": "إخفاء الإصدار",
"LISTVIEW": "وضع عرض القائمة",
+23
View File
@@ -1,5 +1,28 @@
{
"APP": {
"HOST_SETTINGS": {
"TYPE-AUTH": "Typ ověřování",
"BASIC": "Základní ověřování",
"SSO": "Jednotné přihlášení",
"IMPLICIT-FLOW": "Implicitní tok",
"PROVIDER": "Poskytovatel",
"REQUIRED": "Toto pole je povinné",
"CS_URL_ERROR": "Adresa Content Services neodpovídá formátu adresy URL",
"PS_URL_ERROR": "Adresa Process Services neodpovídá formátu adresy URL",
"TITLE": "Nastavení",
"CS-HOST": "Adresa URL pro Content Services",
"BP-HOST": "Adresa URL pro Process Services",
"BACK": "Zpět",
"APPLY": "Použít",
"NOT_VALID": "http(s)://host|ip:port(/path) nelze rozeznat. Použijte jinou adresu URL.",
"REDIRECT": "URI pro přesměrování",
"REDIRECT_LOGOUT": "URI pro přesměrování (odhlášení)",
"SILENT": "Přihlášení na pozadí",
"SCOPE": "Rozsah",
"CLIENT": "ID klienta",
"PUBLIC_URLS": "Veřejné adresy URL pro přihlášení na pozadí",
"SECRET": "Tajné"
},
"ABOUT": {
"DEVELOPMENT": "Režim pro vývojáře"
},
+23
View File
@@ -1,5 +1,28 @@
{
"APP": {
"HOST_SETTINGS": {
"TYPE-AUTH": "Godkendelsestype",
"BASIC": "Grundlæggende godkendelse",
"SSO": "SSO",
"IMPLICIT-FLOW": "Implicit flow",
"PROVIDER": "Udbyder",
"REQUIRED": "Dette felt er påkrævet",
"CS_URL_ERROR": "Content Services-adressen matcher ikke URL-formatet",
"PS_URL_ERROR": "Process Services-adressen matcher ikke URL-adresseformatet",
"TITLE": "Indstillinger",
"CS-HOST": "Content Services-URL",
"BP-HOST": "Process Services-URL",
"BACK": "Tilbage",
"APPLY": "Anvend",
"NOT_VALID": "http(s)://vært|ip-adresse:port(/sti) blev ikke genkendt. Prøv en anden URL-adresse.",
"REDIRECT": "URI til omdirigering",
"REDIRECT_LOGOUT": "Omdiriger URI til aflogning",
"SILENT": "Uovervåget login",
"SCOPE": "Omfang",
"CLIENT": "Klient-id",
"PUBLIC_URLS": "Uovervåget login til offentlige URL-adresser",
"SECRET": "Hemmelig"
},
"ABOUT": {
"DEVELOPMENT": "Udv. model"
},
+23
View File
@@ -1,5 +1,28 @@
{
"APP": {
"HOST_SETTINGS": {
"TYPE-AUTH": "Authentifizierungstyp",
"BASIC": "Basisauthentifizierung",
"SSO": "SSO",
"IMPLICIT-FLOW": "Impliziter Fluss",
"PROVIDER": "Provider",
"REQUIRED": "Dieses Feld ist erforderlich",
"CS_URL_ERROR": "Content Services-Adresse nicht im richtigen URL-Format",
"PS_URL_ERROR": "Process Services-Adresse nicht im richtigen URL-Format",
"TITLE": "Einstellungen",
"CS-HOST": "URL für Content Services",
"BP-HOST": "URL für Process Services",
"BACK": "Zurück",
"APPLY": "Anwenden",
"NOT_VALID": "http(s)://host|ip:port(/path) nicht erkannt. Probieren Sie es mit einer anderen URL.",
"REDIRECT": "Umleitungs-URI",
"REDIRECT_LOGOUT": "Umleitungs-URI zum Abmelden",
"SILENT": "Automatische Anmeldung",
"SCOPE": "Bereich",
"CLIENT": "Client-ID",
"PUBLIC_URLS": "Öffentliche URLs für automatische Anmeldung",
"SECRET": "Geheimnis"
},
"ABOUT": {
"DEVELOPMENT": "Entwicklermodus"
},
+23
View File
@@ -1,5 +1,28 @@
{
"APP": {
"HOST_SETTINGS": {
"TYPE-AUTH": "Todennustyyppi",
"BASIC": "Perustodennus",
"SSO": "Kertakirjautuminen",
"IMPLICIT-FLOW": "Epäsuora kulku",
"PROVIDER": "Palvelu",
"REQUIRED": "Tämä kenttä on pakollinen",
"CS_URL_ERROR": "Content Services -osoite ei täsmää URL-muodon kanssa",
"PS_URL_ERROR": "Process Services -osoite ei täsmää URL-muodon kanssa",
"TITLE": "Asetukset",
"CS-HOST": "Content Servicesin URL-osoite",
"BP-HOST": "Process Servicesin URL-osoite",
"BACK": "Takaisin",
"APPLY": "Käytä",
"NOT_VALID": "Osoitetta http(s)://host|ip:port(/path) ei tunnisteta. Kokeile toista URL-osoitetta.",
"REDIRECT": "Uudelleenohjauksen URI-osoite",
"REDIRECT_LOGOUT": "Uudelleenohjauksen URI-osoite uloskirjautuminen",
"SILENT": "Hiljainen kirjautuminen",
"SCOPE": "Laajuus",
"CLIENT": "Asiakastunnus",
"PUBLIC_URLS": "Yleisten url-osoitteiden hiljainen sisäänkirjaus",
"SECRET": "Salainen"
},
"ABOUT": {
"DEVELOPMENT": "Kehitystapa"
},
+27 -4
View File
@@ -1,5 +1,28 @@
{
"APP": {
"HOST_SETTINGS": {
"TYPE-AUTH": "Type d'authentification",
"BASIC": "Authentification de base",
"SSO": "SSO",
"IMPLICIT-FLOW": "Flux implicite",
"PROVIDER": "Fournisseur",
"REQUIRED": "Ce champ est obligatoire",
"CS_URL_ERROR": "L'adresse Content Services ne correspond pas au format d'URL",
"PS_URL_ERROR": "L'adresse Process Services ne correspond pas au format d'URL",
"TITLE": "Paramètres",
"CS-HOST": "URL de Content Services",
"BP-HOST": "URL de Process Services",
"BACK": "Retour",
"APPLY": "Appliquer",
"NOT_VALID": "Adresse http(s)://host|ip:port(/path) non reconnue, essayez une autre URL.",
"REDIRECT": "URI de redirection",
"REDIRECT_LOGOUT": "Déconnexion URI de redirection",
"SILENT": "Connexion en mode silencieux",
"SCOPE": "Etendue",
"CLIENT": "ID client",
"PUBLIC_URLS": "URL publiques pour connexion en mode silencieux",
"SECRET": "Secret"
},
"ABOUT": {
"DEVELOPMENT": "Mode développement"
},
@@ -83,7 +106,7 @@
"FORM_LOADING": "Chargement du formulaire",
"UPLOADER": "Chargeur",
"WEBSCRIPT": "Script Web",
"TAG": "Balise",
"TAG": "Tag",
"PIPES": "Tuyaux",
"TRASHCAN": "Corbeille",
"SOCIAL": "Réseaux sociaux",
@@ -146,7 +169,7 @@
"COLUMNS": {
"DISPLAY_NAME": "Nom affiché",
"IS_LOCKED": "Verrouiller",
"TAG": "Balise",
"TAG": "Tag",
"NODE_ID": "ID du nœud",
"CREATED_BY": "Créé par",
"CREATED_ON": "Créé le",
@@ -271,9 +294,9 @@
"RATING": "Composant d'évaluation"
},
"TAG": {
"LIST": "Liste de balises Content Services",
"LIST": "Liste des tags Content Services",
"INSERT": "Insérer l'ID du nœud",
"NODE_LIST": "Liste de balises par ID de nœud"
"NODE_LIST": "Liste des tags par ID de nœud"
},
"DEMO_PERMISSION": {
"INHERIT_PERMISSION_BUTTON": "Hériter des droits d'accès",
+23
View File
@@ -1,5 +1,28 @@
{
"APP": {
"HOST_SETTINGS": {
"TYPE-AUTH": "Tipo di autenticazione",
"BASIC": "Autenticazione di base",
"SSO": "SSO",
"IMPLICIT-FLOW": "Flusso implicito",
"PROVIDER": "Fornitore",
"REQUIRED": "Questo campo è obbligatorio",
"CS_URL_ERROR": "L'indirizzo Content Services non corrisponde al formato dell'URL",
"PS_URL_ERROR": "L'indirizzo Process Services non corrisponde al formato dell'URL",
"TITLE": "Impostazioni",
"CS-HOST": "URL Content Services",
"BP-HOST": "URL Process Services",
"BACK": "Indietro",
"APPLY": "Applica",
"NOT_VALID": "http(s)://host|ip:port(/path) non riconosciuto, provare un URL diverso.",
"REDIRECT": "Reindirizza URI",
"REDIRECT_LOGOUT": "Reindirizza logout URI",
"SILENT": "Login invisibile",
"SCOPE": "Ambito",
"CLIENT": "ID client",
"PUBLIC_URLS": "URL pubblici per login invisibile",
"SECRET": "Segreto"
},
"ABOUT": {
"DEVELOPMENT": "Modalità sviluppo"
},
+26 -3
View File
@@ -1,5 +1,28 @@
{
"APP": {
"HOST_SETTINGS": {
"TYPE-AUTH": "認証タイプ",
"BASIC": "基本認証",
"SSO": "SSO",
"IMPLICIT-FLOW": "暗黙的フロー",
"PROVIDER": "プロバイダ",
"REQUIRED": "このフィールドは必須です",
"CS_URL_ERROR": "Content Services のアドレスが URL 形式と一致しません",
"PS_URL_ERROR": "Process Services のアドレスが URL 形式と一致しません",
"TITLE": "設定",
"CS-HOST": "Content Services の URL",
"BP-HOST": "Process Services の URL",
"BACK": "戻る",
"APPLY": "適用",
"NOT_VALID": "http(s)://host|ip:port(/path) が認識されません。別の URL を指定してください。",
"REDIRECT": "リダイレクト URI",
"REDIRECT_LOGOUT": "リダイレクト URI のログアウト",
"SILENT": "サイレントログイン",
"SCOPE": "範囲",
"CLIENT": "クライアント ID",
"PUBLIC_URLS": "サイレントログインのパブリック URL",
"SECRET": "シークレット"
},
"ABOUT": {
"DEVELOPMENT": "開発モード"
},
@@ -248,7 +271,7 @@
"RESULTS": "検索結果",
"NO_RESULT": "一致するアイテムはありません",
"FACET_FIELDS": {
"TYPE": "1:種類",
"TYPE": "1:タイプ",
"SIZE": "2:サイズ",
"CREATOR": "3:作成者",
"MODIFIER": "4:変更者",
@@ -257,7 +280,7 @@
"FACET_QUERIES": {
"MY_FACET_QUERIES": "あなたのファセットクエリ",
"CREATED_THIS_YEAR": "1.今年作成",
"MIMETYPE": "2.種類: HTML",
"MIMETYPE": "2.タイプ: HTML",
"XTRASMALL": "3.サイズ: 極小",
"SMALL": "4.サイズ: 小",
"MEDIUM": "5.サイズ: 中",
@@ -293,7 +316,7 @@
},
"PROCESS_LIST_DEMO": {
"ERROR_MESSAGE": {
"APP_ID_REQUIRED_ERROR": "アプリケーション ID を挿入してください",
"APP_ID_REQUIRED_ERROR": "アプリケーション ID を挿入する",
"APP_ID_TYPE_ERROR": "アプリケーション ID は数字でなければなりません",
"NUMBER_GREATER_THAN": "値は {{ value }} 以上でなければなりません"
},
+23
View File
@@ -1,5 +1,28 @@
{
"APP": {
"HOST_SETTINGS": {
"TYPE-AUTH": "Godkjenningstype",
"BASIC": "Grunnleggende godkjenning",
"SSO": "SSO",
"IMPLICIT-FLOW": "Implisitt flyt",
"PROVIDER": "Leverandør",
"REQUIRED": "Dette feltet er påkrevd",
"CS_URL_ERROR": "Adressen til innholdstjenesten stemmer ikke med URL-formatet",
"PS_URL_ERROR": "Adressen til prosesstjenestene stemmer ikke med URL-formatet",
"TITLE": "Innstillinger",
"CS-HOST": "URL tinnholdstjenester",
"BP-HOST": "URL prosesstjenester",
"BACK": "Tilbake",
"APPLY": "Bruk",
"NOT_VALID": "http(s)://host|ip:port(/path) ikke gjenkjent, prøv en annen URL.",
"REDIRECT": "Omdirigerings-URI",
"REDIRECT_LOGOUT": "Omdirigerings-URI avlogging",
"SILENT": "Stille pålogging",
"SCOPE": "Område",
"CLIENT": "Klient-ID",
"PUBLIC_URLS": "Offentlige URL-er for stille pålogging",
"SECRET": "Hemmelig"
},
"ABOUT": {
"DEVELOPMENT": "Utvikl.modus"
},
+23
View File
@@ -1,5 +1,28 @@
{
"APP": {
"HOST_SETTINGS": {
"TYPE-AUTH": "Verificatietype",
"BASIC": "Basisverificatie",
"SSO": "SSO",
"IMPLICIT-FLOW": "Impliciete stroom",
"PROVIDER": "Provider",
"REQUIRED": "Dit veld is vereist",
"CS_URL_ERROR": "Content Services-adres komt niet overeen met de URL-indeling",
"PS_URL_ERROR": "Process Services-adres komt niet overeen met de URL-indeling",
"TITLE": "Instellingen",
"CS-HOST": "Content Services-URL",
"BP-HOST": "Process Services-URL",
"BACK": "Terug",
"APPLY": "Toepassen",
"NOT_VALID": "http(s)://host|ip:port(/path) niet herkend, probeer een andere URL.",
"REDIRECT": "Omleidings-URI",
"REDIRECT_LOGOUT": "Omleidings-URI afmelden",
"SILENT": "Stille aanmelding",
"SCOPE": "Bereik",
"CLIENT": "Client-id",
"PUBLIC_URLS": "Openbare URL's voor stille aanmelding",
"SECRET": "Geheim"
},
"ABOUT": {
"DEVELOPMENT": "Ontwikkelaarsmodus"
},
+23
View File
@@ -1,5 +1,28 @@
{
"APP": {
"HOST_SETTINGS": {
"TYPE-AUTH": "Typ uwierzytelnienia",
"BASIC": "Uwierzytelnienie podstawowe",
"SSO": "Logowanie jednokrotne",
"IMPLICIT-FLOW": "Niejawny przepływ",
"PROVIDER": "Dostawca",
"REQUIRED": "To pole jest wymagane.",
"CS_URL_ERROR": "Adres usług Content Services jest niezgodny z formatem adresu URL.",
"PS_URL_ERROR": "Adres usług Process Services jest niezgodny z formatem adresu URL.",
"TITLE": "Ustawienia",
"CS-HOST": "Adres URL usług Content Services",
"BP-HOST": "Adres URL usług Process Services",
"BACK": "Wstecz",
"APPLY": "Zastosuj",
"NOT_VALID": "Nie rozpoznano adresu http(s)://host|ip:port(/path). Spróbuj użyć innego adresu URL.",
"REDIRECT": "Identyfikator URI przekierowania",
"REDIRECT_LOGOUT": "Identyfikator URI przekierowania — wylogowanie",
"SILENT": "Ciche logowanie",
"SCOPE": "Zakres",
"CLIENT": "Identyfikator klienta",
"PUBLIC_URLS": "Publiczne URL do cichego logowania",
"SECRET": "Klucz tajny"
},
"ABOUT": {
"DEVELOPMENT": "Tryb progr."
},
+23
View File
@@ -1,5 +1,28 @@
{
"APP": {
"HOST_SETTINGS": {
"TYPE-AUTH": "Tipo de autenticação",
"BASIC": "Autenticação básica",
"SSO": "SSO",
"IMPLICIT-FLOW": "Fluxo implícito",
"PROVIDER": "Provedor",
"REQUIRED": "Este campo é obrigatório",
"CS_URL_ERROR": "O endereço do Content Services não corresponde ao formato de URL",
"PS_URL_ERROR": "O endereço do Process Services não corresponde ao formato de URL",
"TITLE": "Configurações",
"CS-HOST": "URL do Content Services",
"BP-HOST": "URL do Process Services",
"BACK": "Voltar",
"APPLY": "Aplicar",
"NOT_VALID": "http(s)://host|ip:port(/path) não reconhecida, tente uma URL diferente.",
"REDIRECT": "Redirecionar URI",
"REDIRECT_LOGOUT": "Redirecionar logout de URI",
"SILENT": "Login silencioso",
"SCOPE": "Escopo",
"CLIENT": "ID de cliente",
"PUBLIC_URLS": "Login silencioso de URLs públicas",
"SECRET": "Segredo"
},
"ABOUT": {
"DEVELOPMENT": "Modo de desenvolvimento"
},
+23
View File
@@ -1,5 +1,28 @@
{
"APP": {
"HOST_SETTINGS": {
"TYPE-AUTH": "Тип авторизации",
"BASIC": "Базовая авторизация",
"SSO": "SSO",
"IMPLICIT-FLOW": "Неявный поток",
"PROVIDER": "Поставщик",
"REQUIRED": "Поле обязательно для заполнения",
"CS_URL_ERROR": "Адрес Content Services не соответствует формату URL",
"PS_URL_ERROR": "Адрес Process Services не соответствует формату URL",
"TITLE": "Параметры",
"CS-HOST": "URL-адрес Content Services",
"BP-HOST": "URL-адрес Process Services",
"BACK": "Назад",
"APPLY": "Применить",
"NOT_VALID": "http(s)://host|ip:port(/path) не распознан, используйте другой URL-адрес.",
"REDIRECT": "URI перенаправления",
"REDIRECT_LOGOUT": "Выход URI перенаправления",
"SILENT": "Автоматический вход",
"SCOPE": "Область применения",
"CLIENT": "Идентификатор клиента",
"PUBLIC_URLS": "Общедоступные URL-адреса с автоматическим входом",
"SECRET": "Секретный"
},
"ABOUT": {
"DEVELOPMENT": "Режим разработки"
},
+23
View File
@@ -1,5 +1,28 @@
{
"APP": {
"HOST_SETTINGS": {
"TYPE-AUTH": "Autentiseringstyp",
"BASIC": "Grundläggande autentisering",
"SSO": "SSO",
"IMPLICIT-FLOW": "Implicit flöde",
"PROVIDER": "Leverantör",
"REQUIRED": "Detta fält krävs",
"CS_URL_ERROR": "Content Services-adressen matchar inte URL-formatet",
"PS_URL_ERROR": "Process Services-adressen matchar inte URL-formatet",
"TITLE": "Inställningar",
"CS-HOST": "Content Services-URL",
"BP-HOST": "Process Services-URL",
"BACK": "Tillbaka",
"APPLY": "Tillämpa",
"NOT_VALID": "http(s)://host|ip:port(/path) kändes inte igen, testa annan URL.",
"REDIRECT": "Omdirigera URI",
"REDIRECT_LOGOUT": "Omdirigera URI-utloggning",
"SILENT": "Tyst inloggning",
"SCOPE": "Definitionsområde",
"CLIENT": "Klient-ID",
"PUBLIC_URLS": "Offentliga url:er för tyst inloggning",
"SECRET": "Hemlig"
},
"ABOUT": {
"DEVELOPMENT": "Utvecklarläge"
},
+28 -5
View File
@@ -1,5 +1,28 @@
{
"APP": {
"HOST_SETTINGS": {
"TYPE-AUTH": "身份验证类型",
"BASIC": "基本身份验证",
"SSO": "SSO",
"IMPLICIT-FLOW": "隐式流",
"PROVIDER": "提供程序",
"REQUIRED": "此字段为必填字段",
"CS_URL_ERROR": "Content Services 地址与 URL 格式不匹配",
"PS_URL_ERROR": "Process Services 地址与 URL 格式不匹配",
"TITLE": "设置",
"CS-HOST": "Content Services URL",
"BP-HOST": "Process Services URL",
"BACK": "返回",
"APPLY": "应用",
"NOT_VALID": "http(s)://host|ip:port(/path) 无法识别,请使用其他 URL。",
"REDIRECT": "重定向 URI",
"REDIRECT_LOGOUT": "重定向 URI 注销",
"SILENT": "静默登录",
"SCOPE": "范围",
"CLIENT": "客户端 ID",
"PUBLIC_URLS": "用于静默登录的公共 URL",
"SECRET": "机密"
},
"ABOUT": {
"DEVELOPMENT": "Dev 模式"
},
@@ -103,7 +126,7 @@
"PEOPLE_GROUPS_CLOUD": "人员/一组云",
"TASK_HEADER_CLOUD": {
"COMPONENT_NAME": "云的任务标题",
"APP_NAME_INPUT": "应用程序名称",
"APP_NAME_INPUT": "App 名称",
"TASK_ID_INPUT": "任务 id",
"FIND_TASK_BUTTON": "查找任务"
},
@@ -281,8 +304,8 @@
},
"TASK_LIST_DEMO": {
"ERROR_MESSAGE": {
"APP_ID_REQUIRED_ERROR": "插入应用程序 ID",
"APP_ID_TYPE_ERROR": "应用程序 ID 必须为数字",
"APP_ID_REQUIRED_ERROR": "插入 App ID",
"APP_ID_TYPE_ERROR": "App ID 必须为数字",
"NUMBER_TYPE_ERROR": "值必须是数字",
"NUMBER_GREATER_THAN": "值必须大于或等于 {{ value }}"
},
@@ -293,8 +316,8 @@
},
"PROCESS_LIST_DEMO": {
"ERROR_MESSAGE": {
"APP_ID_REQUIRED_ERROR": "插入应用程序 ID",
"APP_ID_TYPE_ERROR": "应用程序 ID 必须为数字",
"APP_ID_REQUIRED_ERROR": "插入 App ID",
"APP_ID_TYPE_ERROR": "App ID 必须为数字",
"NUMBER_GREATER_THAN": "值必须大于或等于 {{ value }}"
},
"PROCESS_CONTEXT_MENU": "流程列表上下文菜单"
+9
View File
@@ -1327,6 +1327,15 @@
"title": "ADF_CLOUD_TASK_LIST.PROPERTIES.LAST_MODIFIED",
"sortable": true,
"format": "timeAgo"
},
{
"id": "description",
"key": "description",
"type": "text",
"title": "ADF_CLOUD_TASK_LIST.PROPERTIES.DESCRIPTION",
"sortable": false,
"draggable": false,
"isHidden": true
}
]
}
+5 -6
View File
@@ -20,7 +20,7 @@ import { APP_INITIALIZER, NgModule } from '@angular/core';
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
import { FlexLayoutModule } from '@angular/flex-layout';
import { ChartsModule } from 'ng2-charts';
import { HttpClientModule, HTTP_INTERCEPTORS } from '@angular/common/http';
import { HttpClientModule } from '@angular/common/http';
import { BrowserAnimationsModule, NoopAnimationsModule } from '@angular/platform-browser/animations';
import { TranslateModule } from '@ngx-translate/core';
import {
@@ -29,7 +29,7 @@ import {
DebugAppConfigService,
CoreModule,
CoreAutomationService,
AuthBearerInterceptor
AuthModule
} from '@alfresco/adf-core';
import { ExtensionsModule } from '@alfresco/adf-extensions';
import { AppComponent } from './app.component';
@@ -115,6 +115,7 @@ import localeSv from '@angular/common/locales/sv';
import { setupAppNotifications } from './services/app-notifications-factory';
import { AppNotificationsService } from './services/app-notifications.service';
import { SearchFilterChipsComponent } from './components/search/search-filter-chips.component';
import { UserInfoComponent } from './components/app-layout/user-info/user-info.component';
registerLocaleData(localeFr);
registerLocaleData(localeDe);
@@ -139,6 +140,7 @@ registerLocaleData(localeSv);
environment.e2e ? NoopAnimationsModule : BrowserAnimationsModule,
ReactiveFormsModule,
RouterModule.forRoot(appRoutes, { useHash: true, relativeLinkResolution: 'legacy' }),
...(environment.oidc ? [AuthModule.forRoot({ useHash: true })] : []),
FormsModule,
HttpClientModule,
MaterialModule,
@@ -159,6 +161,7 @@ registerLocaleData(localeSv);
AppComponent,
LogoutComponent,
AppLayoutComponent,
UserInfoComponent,
HomeComponent,
SearchBarComponent,
SearchResultComponent,
@@ -209,10 +212,6 @@ registerLocaleData(localeSv);
SearchFilterChipsComponent
],
providers: [
{
provide: HTTP_INTERCEPTORS, useClass:
AuthBearerInterceptor, multi: true
},
{ provide: AppConfigService, useClass: DebugAppConfigService }, // not use this service in production
{
provide: TRANSLATION_PROVIDER,
@@ -22,8 +22,7 @@
<div class="app-header-delimiexpandedSidenavter"></div>
<adf-userinfo [menuPositionX]="'before'" [menuPositionY]="'above'">
</adf-userinfo>
<app-shell-user-info [menuPositionX]="'before'" [menuPositionY]="'above'"></app-shell-user-info>
<app-theme-picker></app-theme-picker>
<button data-automation-id="language-menu-button" mat-icon-button [matMenuTriggerFor]="langMenu">
@@ -127,7 +127,7 @@ export class AppLayoutComponent implements OnInit, OnDestroy {
this.color = color;
} else {
this.color = undefined;
document.documentElement.style.setProperty('--adf-header-background-color', color);
document.documentElement.style.setProperty('--theme-primary-color', color);
}
});
@@ -138,7 +138,7 @@ export class AppLayoutComponent implements OnInit, OnDestroy {
this.headerService.headerTextColor
.pipe(takeUntil(this.onDestroy$))
.subscribe(headerTextColor => {
document.documentElement.style.setProperty('--adf-header-text-color', headerTextColor);
document.documentElement.style.setProperty('--theme-primary-color-default-contrast', headerTextColor);
});
this.headerService.logo
@@ -0,0 +1,21 @@
<ng-container>
<adf-content-user-info
*ngIf="mode === userInfoMode.CONTENT || mode === userInfoMode.CONTENT_SSO"
[ecmUser]="ecmUser$ | async"
[identityUser]="identityUser$ | async"
[isLoggedIn]="isLoggedIn"
[mode]="mode"
></adf-content-user-info>
<adf-identity-user-info
*ngIf="mode === userInfoMode.SSO"
[identityUser]="identityUser$ | async"
[isLoggedIn]="isLoggedIn"
></adf-identity-user-info>
<adf-process-user-info
*ngIf="mode === userInfoMode.PROCESS || mode === userInfoMode.ALL"
[bpmUser]="bpmUser$ | async"
[ecmUser]="ecmUser$ | async"
[isLoggedIn]="isLoggedIn"
[mode]="mode"
></adf-process-user-info>
</ng-container>
@@ -15,34 +15,16 @@
* limitations under the License.
*/
import { Component, Input, OnInit, ViewEncapsulation, ViewChild, OnDestroy } from '@angular/core';
import { AuthenticationService } from '../../auth/services/authentication.service';
import { BpmUserModel } from '../../models/bpm-user.model';
import { EcmUserModel } from '../../models/ecm-user.model';
import { IdentityUserModel } from '../../auth/models/identity-user.model';
import { BpmUserService } from '../../services/bpm-user.service';
import { IdentityUserService } from '../../auth/services/identity-user.service';
import { of, Observable, Subject } from 'rxjs';
import { MatMenuTrigger, MenuPositionX, MenuPositionY } from '@angular/material/menu';
import { PeopleContentService } from '../../services/people-content.service';
import { AuthenticationService, BpmUserModel, BpmUserService, EcmUserModel, IdentityUserModel, IdentityUserService, PeopleContentService, UserInfoMode } from '@alfresco/adf-core';
import { Component, OnInit, Input } from '@angular/core';
import { MenuPositionX, MenuPositionY } from '@angular/material/menu';
import { Observable, of } from 'rxjs';
@Component({
selector: 'adf-userinfo',
templateUrl: './user-info.component.html',
styleUrls: ['./user-info.component.scss'],
encapsulation: ViewEncapsulation.None
selector: 'app-shell-user-info',
templateUrl: './user-info.component.html'
})
export class UserInfoComponent implements OnInit, OnDestroy {
@ViewChild(MatMenuTrigger) trigger: MatMenuTrigger;
/** Custom path for the background banner image for ACS users. */
@Input()
ecmBackgroundImage: string = './assets/images/ecm-background.png';
/** Custom path for the background banner image for APS users. */
@Input()
bpmBackgroundImage: string = './assets/images/bpm-background.png';
export class UserInfoComponent implements OnInit {
/** Custom choice for opening the menu at the bottom. Can be `before` or `after`. */
@Input()
@@ -52,23 +34,12 @@ export class UserInfoComponent implements OnInit, OnDestroy {
@Input()
menuPositionY: MenuPositionY = 'below';
/** Shows/hides the username next to the user info button. */
@Input()
showName: boolean = true;
/** When the username is shown, this defines its position relative to the user info button.
* Can be `right` or `left`.
*/
@Input()
namePosition: string = 'right';
mode: string;
mode: UserInfoMode;
ecmUser$: Observable<EcmUserModel>;
bpmUser$: Observable<BpmUserModel>;
identityUser$: Observable<IdentityUserModel>;
selectedIndex: number;
private destroy$ = new Subject();
userInfoMode = UserInfoMode;
constructor(private peopleContentService: PeopleContentService,
private bpmUserService: BpmUserService,
@@ -80,40 +51,26 @@ export class UserInfoComponent implements OnInit, OnDestroy {
this.getUserInfo();
}
ngOnDestroy(): void {
this.destroy$.next(true);
this.destroy$.complete();
}
getUserInfo() {
if (this.authService.isOauth()) {
this.loadIdentityUserInfo();
this.mode = 'SSO';
this.mode = UserInfoMode.SSO;
if (this.authService.isECMProvider() && this.authService.isEcmLoggedIn()) {
this.mode = UserInfoMode.CONTENT_SSO;
this.loadEcmUserInfo();
}
} else if (this.isAllLoggedIn()) {
this.loadEcmUserInfo();
this.loadBpmUserInfo();
this.mode = 'ALL';
this.mode = UserInfoMode.ALL;
} else if (this.isEcmLoggedIn()) {
this.loadEcmUserInfo();
this.mode = 'CONTENT';
this.mode = UserInfoMode.CONTENT;
} else if (this.isBpmLoggedIn()) {
this.loadBpmUserInfo();
this.mode = 'PROCESS';
}
}
onKeyPress(event: KeyboardEvent) {
this.closeUserModal(event);
}
private closeUserModal($event: KeyboardEvent) {
if ($event.keyCode === 27) {
this.trigger.closeMenu();
this.mode = UserInfoMode.PROCESS;
}
}
@@ -147,20 +104,5 @@ export class UserInfoComponent implements OnInit, OnDestroy {
private isEcmLoggedIn() {
return this.authService.isEcmLoggedIn() || (this.authService.isECMProvider() && this.authService.isKerberosEnabled());
}
stopClosing(event: Event) {
event.stopPropagation();
}
getEcmAvatar(avatarId: any): string {
return this.peopleContentService.getUserProfileImage(avatarId);
}
getBpmUserImage(): string {
return this.bpmUserService.getCurrentUserProfileImage();
}
get showOnRight(): boolean {
return this.namePosition === 'right';
}
}
@@ -1,4 +1,3 @@
<adf-viewer
[overlayMode]="true"
<adf-alfresco-viewer
[nodeId]="nodeId">
</adf-viewer>
</adf-alfresco-viewer>
@@ -1,340 +1,382 @@
<ng-container *ngIf="nodeId || content">
<ng-container *ngIf="nodeId">
<ng-template let-node="node" #sidebarRightTemplate>
<adf-info-drawer [title]="'APP.INFO_DRAWER.TITLE' | translate">
<adf-info-drawer-tab label="APP.INFO_DRAWER.COMMENTS">
<adf-node-comments
[nodeId]="nodeId"
[readOnly]="!isCommentEnabled"
>
</adf-node-comments>
</adf-info-drawer-tab>
<adf-info-drawer-tab label="APP.INFO_DRAWER.PROPERTIES">
<adf-content-metadata-card *ngIf="isPreset" [node]="node"
[multi]="multi"
[preset]="customPreset"
[readOnly]="isReadOnly"
[displayAspect]="showAspect"
[displayDefaultProperties]="displayDefaultProperties"
[displayEmpty]="displayEmptyMetadata"></adf-content-metadata-card>
<adf-content-metadata-card *ngIf="!isPreset" [node]="node"
[multi]="multi"
[readOnly]="isReadOnly"
[displayAspect]="showAspect"
[displayDefaultProperties]="displayDefaultProperties"
[displayEmpty]="displayEmptyMetadata"></adf-content-metadata-card>
<p class="toggle">
<mat-slide-toggle
id="adf-metadata-default-properties"
[color]="'primary'"
(change)="toggleDisplayProperties()"
[checked]="displayDefaultProperties">
Display Default Properties
</mat-slide-toggle>
</p>
<p class="toggle">
<mat-slide-toggle
id="adf-metadata-empty"
[color]="'primary'"
(change)="toggleEmptyMetadata()"
[checked]="displayEmptyMetadata">
Display Empty Metadata
</mat-slide-toggle>
</p>
<p class="toggle">
<mat-slide-toggle
id="adf-metadata-multi"
[color]="'primary'"
(change)="toggleMulti()"
[checked]="multi">
Multi accordion
</mat-slide-toggle>
</p>
<p class="toggle">
<mat-slide-toggle
id="adf-metadata-readonly"
[color]="'primary'"
(change)="toggleReadOnly()"
[checked]="isReadOnly">
Read Only
</mat-slide-toggle>
</p>
<p class="toggle">
<mat-slide-toggle
id="adf-toggle-custom-preset"
[color]="'primary'"
(change)="togglePreset()"
[checked]="isPreset">
Custom preset
</mat-slide-toggle>
</p>
<p class="toggle">
<mat-form-field floatPlaceholder="float">
<input matInput
placeholder="Display Aspect"
[(ngModel)]="desiredAspect">
</mat-form-field>
<button mat-raised-button (click)="applyAspect()" color="primary">
Apply Aspect
</button>
</p>
<p class="toggle">
<ng-container *ngIf="isPreset">
<mat-form-field floatPlaceholder="float">
<input matInput
placeholder="Custom Preset"
[(ngModel)]="customPreset"
data-automation-id="adf-text-custom-preset">
</mat-form-field>
<button mat-raised-button id="adf-metadata-aplly" (click)="applyCustomPreset()" color="primary">
Apply
</button>
</ng-container>
</p>
</adf-info-drawer-tab>
<adf-info-drawer-tab label="APP.INFO_DRAWER.VERSIONS">
<mat-card>
<mat-card-content>
<adf-version-manager [node]="node"
(uploadError)="onUploadError($event)"
(viewVersion)="onViewVersion($event)">
</adf-version-manager>
</mat-card-content>
</mat-card>
</adf-info-drawer-tab>
</adf-info-drawer>
</ng-template>
<ng-template let-node="node" #sidebarLeftTemplate>
<adf-info-drawer [title]="'Viewer Options'">
<adf-info-drawer-tab label="Settings">
<p class="toggle">
<mat-slide-toggle
id="adf-switch-custoname"
[color]="'primary'"
(change)="toggleCustomName()"
[checked]="customName">
Custom Name
</mat-slide-toggle>
</p>
<p class="toggle">
<ng-container *ngIf="customName">
<mat-form-field floatLabel="never">
<input matInput
placeholder="Custom Name"
[(ngModel)]="displayName"
data-automation-id="adf-text-custom-name">
</mat-form-field>
</ng-container>
</p>
<p class="toggle">
<mat-slide-toggle
id="adf-switch-fileurl"
[color]="'primary'"
(change)="toggleFileUrl()"
[checked]="fileUrlSwitch">
Url File
</mat-slide-toggle>
</p>
<p class="toggle">
<ng-container *ngIf="fileUrlSwitch">
<mat-form-field floatPlaceholder="float">
<input matInput
placeholder="Url File"
[(ngModel)]="urlFile"
data-automation-id="adf-text-file-url">
</mat-form-field>
</ng-container>
</p>
<p class="toggle">
<mat-slide-toggle
id="adf-switch-toolbar"
[color]="'primary'"
(change)="toggleShowToolbar()"
[checked]="showToolbar">
Show Toolbar
</mat-slide-toggle>
</p>
<p class="toggle">
<mat-slide-toggle
id="adf-switch-goback"
[color]="'primary'"
(change)="toggleAllowGoBack()"
[checked]="allowGoBack">
Allow GoBack
</mat-slide-toggle>
</p>
<p class="toggle">
<mat-slide-toggle
id="adf-switch-openwith"
[color]="'primary'"
(change)="toggleOpenWith()"
[checked]="openWith">
Open With
</mat-slide-toggle>
</p>
<p class="toggle">
<mat-slide-toggle
id="adf-switch-moreactions"
[color]="'primary'"
(change)="toggleOpenMoreActions()"
[checked]="moreActions">
More Actions
</mat-slide-toggle>
</p>
<p class="toggle">
<mat-slide-toggle
id="adf-switch-moreactionsmenu"
[color]="'primary'"
(change)="toggleMoreActionsMenu()"
[checked]="moreActionsMenu">
More Actions Menu
</mat-slide-toggle>
</p>
<p class="toggle">
<mat-slide-toggle
id="adf-switch-download"
[color]="'primary'"
(change)="toggleAllowDownload()"
[checked]="allowDownload">
Allow Download
</mat-slide-toggle>
</p>
<p class="toggle">
<mat-slide-toggle
id="adf-switch-print"
[color]="'primary'"
(change)="toggleAllowPrint()"
[checked]="allowPrint">
Allow Print
</mat-slide-toggle>
</p>
<p class="toggle">
<mat-slide-toggle
id="adf-switch-allowsidebar"
[color]="'primary'"
(change)="toggleAllowRightSidebar()"
[checked]="allowRightSidebar">
Allow Right Sidebar
</mat-slide-toggle>
</p>
<p class="toggle">
<mat-slide-toggle
id="adf-switch-allowLeftSidebar"
[color]="'primary'"
(change)="toggleAllowLeftSidebar()"
[checked]="allowLeftSidebar">
Allow Left Sidebar
</mat-slide-toggle>
</p>
<p class="toggle">
<mat-slide-toggle
id="adf-toggle-custom-toolbar"
[color]="'primary'"
(change)="toggleToolbar()"
[checked]="customToolbar">
Custom Toolbar
</mat-slide-toggle>
</p>
<p class="toggle">
<mat-slide-toggle
id="adf-tab-with-icon"
[color]="'primary'"
(change)="toggleShowTabWithIcon()"
[checked]="showTabWithIcon">
Show tab with icon
</mat-slide-toggle>
</p>
<p class="toggle">
<mat-slide-toggle
id="adf-icon-and-label-tab"
[color]="'primary'"
(change)="toggleShowTabWithIconAndLabel()"
[checked]="showTabWithIconAndLabel">
Show tab with icon and label
</mat-slide-toggle>
</p>
<p class="toggle">
<button mat-raised-button id="adf-switch-showrightsidebar" (click)="toggleShowRightSidebar()"
color="primary">
Toggle Right Sidebar
</button>
</p>
<p class="toggle">
<button mat-raised-button id="adf-switch-showleftsidebar" (click)="hideLeftSidebar()"
color="primary">
Hide Left Sidebar
</button>
</p>
</adf-info-drawer-tab>
<adf-info-drawer-tab
*ngIf="showTabWithIcon"
[label]=""
[icon]="'face'"
data-automation-id="adf-settings-tab">
</adf-info-drawer-tab>
<adf-info-drawer-tab
*ngIf="showTabWithIconAndLabel"
[label]="'Comments'"
[icon]="'comment'"
data-automation-id="adf-settings-tab">
</adf-info-drawer-tab>
</adf-info-drawer>
</ng-template>
<adf-viewer
[blobFile]="content"
<adf-alfresco-viewer
(showViewerChange)="onViewerClosed()"
[nodeId]="nodeId"
[versionId]="versionId"
[showRightSidebar]="showRightSidebar"
[showLeftSidebar]="showLeftSidebar"
[allowGoBack]="allowGoBack"
[displayName]="displayName"
[showToolbar]="showToolbar"
[allowPrint]="allowPrint"
[allowDownload]="allowDownload"
[allowRightSidebar]="allowRightSidebar"
[allowLeftSidebar]="allowLeftSidebar"
[urlFile]="urlFile"
(showViewerChange)="onViewerVisibilityChanged()"
[sidebarLeftTemplate]="sidebarLeftTemplate"
[sidebarRightTemplate]="sidebarRightTemplate">
<adf-viewer-toolbar *ngIf="customToolbar" data-automation-id="adf-viewer-custom-toolbar">
<h1>My custom toolbar</h1>
</adf-viewer-toolbar>
<adf-viewer-toolbar-actions *ngIf="moreActions">
<button mat-icon-button id="adf-viewer-time">
<mat-icon>alarm</mat-icon>
</button>
<button mat-icon-button id="adf-viewer-upload">
<mat-icon>backup</mat-icon>
</button>
<button mat-icon-button id="adf-viewer-bug">
<mat-icon>bug_report</mat-icon>
</button>
</adf-viewer-toolbar-actions>
<adf-viewer-more-actions *ngIf="moreActionsMenu">
<button mat-menu-item id="adf-viewer-more-menu-alarm">
<mat-icon>alarm</mat-icon>
<span>Alarm</span>
</button>
<button mat-menu-item id="adf-viewer-more-menu-backup">
<mat-icon>backup</mat-icon>
<span>Backup</span>
</button>
<button mat-menu-item id="adf-viewer-more-menu-bug">
<mat-icon>bug_report</mat-icon>
<span>Bug report</span>
</button>
</adf-viewer-more-actions>
<ng-container *ngIf="openWith">
<adf-viewer-open-with>
<button mat-menu-item>
<mat-icon>dialpad</mat-icon>
<span>Option 1</span>
</button>
<button mat-menu-item disabled>
<mat-icon>voicemail</mat-icon>
<span>Option 2</span>
</button>
<button mat-menu-item>
<mat-icon>notifications_off</mat-icon>
<span>Option 3</span>
</button>
</adf-viewer-open-with>
</ng-container>
</adf-alfresco-viewer>
</ng-container>
<ng-template let-node="node" #sidebarRightTemplate>
<adf-info-drawer [title]="'APP.INFO_DRAWER.TITLE' | translate">
<adf-info-drawer-tab label="APP.INFO_DRAWER.COMMENTS">
<adf-node-comments
[nodeId]="nodeId"
[readOnly]="!isCommentEnabled"
>
</adf-node-comments>
</adf-info-drawer-tab>
<adf-info-drawer-tab label="APP.INFO_DRAWER.PROPERTIES">
<adf-content-metadata-card *ngIf="isPreset" [node]="node"
[multi]="multi"
[preset]="customPreset"
[readOnly]="isReadOnly"
[displayAspect]="showAspect"
[displayDefaultProperties]="displayDefaultProperties"
[displayEmpty]="displayEmptyMetadata"></adf-content-metadata-card>
<adf-content-metadata-card *ngIf="!isPreset" [node]="node"
[multi]="multi"
[readOnly]="isReadOnly"
[displayAspect]="showAspect"
[displayDefaultProperties]="displayDefaultProperties"
[displayEmpty]="displayEmptyMetadata"></adf-content-metadata-card>
<p class="toggle">
<mat-slide-toggle
id="adf-metadata-default-properties"
[color]="'primary'"
(change)="toggleDisplayProperties()"
[checked]="displayDefaultProperties">
Display Default Properties
</mat-slide-toggle>
</p>
<p class="toggle">
<mat-slide-toggle
id="adf-metadata-empty"
[color]="'primary'"
(change)="toggleEmptyMetadata()"
[checked]="displayEmptyMetadata">
Display Empty Metadata
</mat-slide-toggle>
</p>
<p class="toggle">
<mat-slide-toggle
id="adf-metadata-multi"
[color]="'primary'"
(change)="toggleMulti()"
[checked]="multi">
Multi accordion
</mat-slide-toggle>
</p>
<p class="toggle">
<mat-slide-toggle
id="adf-metadata-readonly"
[color]="'primary'"
(change)="toggleReadOnly()"
[checked]="isReadOnly">
Read Only
</mat-slide-toggle>
</p>
<p class="toggle">
<mat-slide-toggle
id="adf-toggle-custom-preset"
[color]="'primary'"
(change)="togglePreset()"
[checked]="isPreset">
Custom preset
</mat-slide-toggle>
</p>
<p class="toggle">
<mat-form-field floatPlaceholder="float">
<input matInput
placeholder="Display Aspect"
[(ngModel)]="desiredAspect">
</mat-form-field>
<button mat-raised-button (click)="applyAspect()" color="primary">
Apply Aspect
</button>
</p>
<p class="toggle">
<ng-container *ngIf="isPreset">
<mat-form-field floatPlaceholder="float">
<input matInput
placeholder="Custom Preset"
[(ngModel)]="customPreset"
data-automation-id="adf-text-custom-preset">
</mat-form-field>
<button mat-raised-button id="adf-metadata-aplly" (click)="applyCustomPreset()" color="primary">
Apply
</button>
</ng-container>
</p>
</adf-info-drawer-tab>
<adf-info-drawer-tab label="APP.INFO_DRAWER.VERSIONS">
<mat-card>
<mat-card-content>
<adf-version-manager [node]="node"
(uploadError)="onUploadError($event)"
(viewVersion)="onViewVersion($event)">
</adf-version-manager>
</mat-card-content>
</mat-card>
</adf-info-drawer-tab>
</adf-info-drawer>
</ng-template>
<ng-template #sidebarLeftTemplate>
<adf-info-drawer [title]="'Viewer Options'">
<adf-info-drawer-tab label="Settings">
<p class="toggle">
<mat-slide-toggle
id="adf-switch-fileurl"
[color]="'primary'"
(change)="toggleFileUrl()"
[checked]="fileUrlSwitch">
Url File
</mat-slide-toggle>
</p>
<p class="toggle">
<ng-container *ngIf="fileUrlSwitch">
<mat-form-field floatPlaceholder="float">
<input matInput
placeholder="Url File"
[(ngModel)]="urlFile"
data-automation-id="adf-text-file-url">
</mat-form-field>
</ng-container>
</p>
<p class="toggle">
<mat-slide-toggle
id="adf-switch-toolbar"
[color]="'primary'"
(change)="toggleShowToolbar()"
[checked]="showToolbar">
Show Toolbar
</mat-slide-toggle>
</p>
<p class="toggle">
<mat-slide-toggle
id="adf-switch-goback"
[color]="'primary'"
(change)="toggleAllowGoBack()"
[checked]="allowGoBack">
Allow GoBack
</mat-slide-toggle>
</p>
<p class="toggle">
<mat-slide-toggle
id="adf-switch-openwith"
[color]="'primary'"
(change)="toggleOpenWith()"
[checked]="openWith">
Open With
</mat-slide-toggle>
</p>
<p class="toggle">
<mat-slide-toggle
id="adf-switch-moreactions"
[color]="'primary'"
(change)="toggleOpenMoreActions()"
[checked]="moreActions">
More Actions
</mat-slide-toggle>
</p>
<p class="toggle">
<mat-slide-toggle
id="adf-switch-moreactionsmenu"
[color]="'primary'"
(change)="toggleMoreActionsMenu()"
[checked]="moreActionsMenu">
More Actions Menu
</mat-slide-toggle>
</p>
<p class="toggle">
<mat-slide-toggle
id="adf-switch-download"
[color]="'primary'"
(change)="toggleAllowDownload()"
[checked]="allowDownload">
Allow Download
</mat-slide-toggle>
</p>
<p class="toggle">
<mat-slide-toggle
id="adf-switch-print"
[color]="'primary'"
(change)="toggleAllowPrint()"
[checked]="allowPrint">
Allow Print
</mat-slide-toggle>
</p>
<p class="toggle">
<mat-slide-toggle
id="adf-switch-allowsidebar"
[color]="'primary'"
(change)="toggleAllowRightSidebar()"
[checked]="allowRightSidebar">
Allow Right Sidebar
</mat-slide-toggle>
</p>
<p class="toggle">
<mat-slide-toggle
id="adf-switch-allowLeftSidebar"
[color]="'primary'"
(change)="toggleAllowLeftSidebar()"
[checked]="allowLeftSidebar">
Allow Left Sidebar
</mat-slide-toggle>
</p>
<p class="toggle">
<mat-slide-toggle
id="adf-toggle-custom-toolbar"
[color]="'primary'"
(change)="toggleToolbar()"
[checked]="customToolbar">
Custom Toolbar
</mat-slide-toggle>
</p>
<p class="toggle">
<mat-slide-toggle
id="adf-tab-with-icon"
[color]="'primary'"
(change)="toggleShowTabWithIcon()"
[checked]="showTabWithIcon">
Show tab with icon
</mat-slide-toggle>
</p>
<p class="toggle">
<mat-slide-toggle
id="adf-icon-and-label-tab"
[color]="'primary'"
(change)="toggleShowTabWithIconAndLabel()"
[checked]="showTabWithIconAndLabel">
Show tab with icon and label
</mat-slide-toggle>
</p>
<p class="toggle">
<button mat-raised-button id="adf-switch-showrightsidebar" (click)="toggleShowRightSidebar()"
color="primary">
Toggle Right Sidebar
</button>
</p>
<p class="toggle">
<button mat-raised-button id="adf-switch-showleftsidebar" (click)="hideLeftSidebar()"
color="primary">
Hide Left Sidebar
</button>
</p>
</adf-info-drawer-tab>
<adf-info-drawer-tab
*ngIf="showTabWithIcon"
[label]=""
[icon]="'face'"
data-automation-id="adf-settings-tab">
</adf-info-drawer-tab>
<adf-info-drawer-tab
*ngIf="showTabWithIconAndLabel"
[label]="'Comments'"
[icon]="'comment'"
data-automation-id="adf-settings-tab">
</adf-info-drawer-tab>
</adf-info-drawer>
</ng-template>
<ng-container *ngIf="blobFile">
<adf-viewer
[blobFile]="blobFile"
[fileName]="fileName"
[showRightSidebar]="showRightSidebar"
[showLeftSidebar]="showLeftSidebar"
[allowGoBack]="allowGoBack"
[showToolbar]="showToolbar"
[allowRightSidebar]="allowRightSidebar"
[allowLeftSidebar]="allowLeftSidebar"
(showViewerChange)="onViewerClosed()"
[sidebarLeftTemplate]="sidebarLeftTemplate"
[sidebarRightTemplate]="sidebarRightTemplate">
@@ -386,36 +428,5 @@
</adf-viewer-open-with>
</ng-container>
<!--
<adf-viewer-extension [supportedExtensions]="['json']">
<ng-template let-urlFileContent="urlFileContent" let-extension="extension">
<h1>JSON VIEWER</h1>
</ng-template>
</adf-viewer-extension>
-->
<!--
<adf-viewer-extension [supportedExtensions]="['png']">
<ng-template>
<h1>PNG Viewer</h1>
</ng-template>
</adf-viewer-extension>
-->
<!--
<adf-viewer-extension [supportedExtensions]="['pdf']">
<ng-template>
<h1>PDF Viewer</h1>
</ng-template>
</adf-viewer-extension>
-->
<!--
<extension-viewer [supportedExtensions]="['obj','3DS']" #extension>
<ng-template let-urlFileContent="urlFileContent" let-extension="extension" >
<threed-viewer [urlFile]="urlFileContent" [extension]="extension" ></threed-viewer>
</ng-template>
</extension-viewer>
-->
</adf-viewer>
</ng-container>
@@ -45,7 +45,6 @@ export class FileViewComponent implements OnInit {
customPreset: string = null;
displayDefaultProperties = true;
showToolbar = true;
displayName = null;
urlFile = null;
allowGoBack = true;
openWith = false;
@@ -55,7 +54,6 @@ export class FileViewComponent implements OnInit {
allowLeftSidebar = true;
moreActions = true;
moreActionsMenu = false;
customName = false;
fileUrlSwitch = false;
showLeftSidebar = null;
showRightSidebar = false;
@@ -65,8 +63,9 @@ export class FileViewComponent implements OnInit {
showTabWithIconAndLabel = false;
desiredAspect: string = null;
showAspect: string = null;
content: Blob;
name: string;
fileName: string;
blobFile: Blob;
constructor(private router: Router,
private route: ActivatedRoute,
@@ -93,9 +92,9 @@ export class FileViewComponent implements OnInit {
},
() => this.router.navigate(['/files', id])
);
} else if (this.preview.content) {
this.content = this.preview.content;
this.displayName = this.preview.name;
} else if (this.preview?.content) {
this.blobFile = this.preview.content;
this.fileName = this.preview.name;
}
});
}
@@ -104,7 +103,7 @@ export class FileViewComponent implements OnInit {
this.preview.showResource(this.nodeId, versionId);
}
onViewerVisibilityChanged() {
onViewerClosed() {
const primaryUrl = this.router.parseUrl(this.router.url).root.children[PRIMARY_OUTLET].toString();
this.router.navigateByUrl(primaryUrl);
}
@@ -182,14 +181,6 @@ export class FileViewComponent implements OnInit {
this.showTabWithIconAndLabel = !this.showTabWithIconAndLabel;
}
toggleCustomName() {
this.customName = !this.customName;
if (!this.customName) {
this.displayName = null;
}
}
toggleFileUrl() {
this.fileUrlSwitch = !this.fileUrlSwitch;
@@ -34,6 +34,7 @@ const routes: Routes = [
CommonModule,
RouterModule.forChild(routes),
CoreModule,
ContentModule,
InfoDrawerModule,
ContentModule,
ContentDirectiveModule,
@@ -15,8 +15,8 @@
(preview)="showPreview($event)">
</adf-document-list>
<adf-viewer
<adf-alfresco-viewer
[(showViewer)]="showViewer"
[overlayMode]="isOverlay"
[nodeId]="nodeId">
</adf-viewer>
</adf-alfresco-viewer>
@@ -2,7 +2,7 @@
<div fxFlex="50" class="app-rich-text-editor-col app-rich-text-editor-col-sx">
<h1 class="app-rich-text-editor-col-title">Rich Text Editor</h1>
<adf-rich-text-editor [data]="sampleData" #textEditor></adf-rich-text-editor>
<adf-cloud-rich-text-editor [data]="sampleData" #textEditor></adf-cloud-rich-text-editor>
</div>
<div fxFlex="50" class="app-rich-text-editor-col app-rich-text-editor-col-rx">
<h1 class="app-rich-text-editor-col-title">Output Data</h1>
@@ -15,9 +15,9 @@
* limitations under the License.
*/
import { AfterViewInit, Component, OnDestroy, OnInit, ViewChild } from '@angular/core';
import { AfterViewInit, Component, OnDestroy, ViewChild } from '@angular/core';
import { OutputData } from '@editorjs/editorjs';
import { RichTextEditorComponent as AdfRichTextEditorComponent } from '@alfresco/adf-core';
import { RichTextEditorComponent as AdfRichTextEditorComponent } from '@alfresco/adf-process-services-cloud';
import { takeUntil } from 'rxjs/operators';
import { Subject } from 'rxjs';
@@ -26,7 +26,7 @@ import { Subject } from 'rxjs';
templateUrl: './rich-text-editor.component.html',
styleUrls: ['./rich-text-editor.component.scss']
})
export class RichTextEditorComponent implements OnInit, AfterViewInit, OnDestroy {
export class RichTextEditorComponent implements AfterViewInit, OnDestroy {
@ViewChild('textEditor')
textEditor: AdfRichTextEditorComponent;
@@ -91,11 +91,6 @@ export class RichTextEditorComponent implements OnInit, AfterViewInit, OnDestroy
]
};
constructor() { }
ngOnInit(): void {
}
ngAfterViewInit(): void {
this.textEditor.outputData$.pipe(
takeUntil(this.onDestroy$)
@@ -19,6 +19,7 @@ import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { RichTextEditorComponent } from './rich-text-editor.component';
import { ContentModule } from '@alfresco/adf-content-services';
import { RichTextEditorModule } from '@alfresco/adf-process-services-cloud';
import { CoreModule } from '@alfresco/adf-core';
import { RouterModule, Routes } from '@angular/router';
import { FlexLayoutModule } from '@angular/flex-layout';
@@ -37,7 +38,8 @@ const routes: Routes = [
CoreModule,
RouterModule.forChild(routes),
ContentModule.forChild(),
FlexLayoutModule
FlexLayoutModule,
RichTextEditorModule
]
})
export class AppRichTextEditorModule { }
@@ -16,7 +16,7 @@
*/
import { QueryBody } from '@alfresco/js-api';
import { SearchConfigurationInterface } from '@alfresco/adf-core';
import { SearchConfigurationInterface } from '@alfresco/adf-content-services';
import { Injectable } from '@angular/core';
@Injectable()
@@ -119,6 +119,12 @@
formControlName="implicitFlow">
</mat-slide-toggle>
<ng-container *ngIf="supportsCodeFlow">
<label for="codeFlow">{{ 'CORE.HOST_SETTINGS.CODE-FLOW'| translate }}</label>
<mat-slide-toggle class="adf-full-width" name="codeFlow" [color]="'primary'"
formControlName="codeFlow">
</mat-slide-toggle>
</ng-container>
<mat-form-field class="adf-full-width">
<mat-label>{{ 'APP.HOST_SETTINGS.REDIRECT'| translate }}</mat-label>
@@ -17,7 +17,7 @@
import { Component, EventEmitter, Output, ViewEncapsulation, OnInit, Input } from '@angular/core';
import { Validators, UntypedFormGroup, UntypedFormBuilder, UntypedFormControl } from '@angular/forms';
import { AppConfigService, AppConfigValues, StorageService, AlfrescoApiService, OauthConfigModel } from '@alfresco/adf-core';
import { AppConfigService, AppConfigValues, StorageService, AlfrescoApiService, OauthConfigModel, AuthenticationService } from '@alfresco/adf-core';
import { ENTER } from '@angular/cdk/keycodes';
export const HOST_REGEX = '^(http|https):\/\/.*[^/]$';
@@ -57,11 +57,13 @@ export class HostSettingsComponent implements OnInit {
// eslint-disable-next-line @angular-eslint/no-output-native
success = new EventEmitter<boolean>();
constructor(private formBuilder: UntypedFormBuilder,
private storageService: StorageService,
private alfrescoApiService: AlfrescoApiService,
private appConfig: AppConfigService) {
}
constructor(
private formBuilder: UntypedFormBuilder,
private storageService: StorageService,
private alfrescoApiService: AlfrescoApiService,
private appConfig: AppConfigService,
private auth: AuthenticationService
) {}
ngOnInit() {
if (this.providers.length === 1) {
@@ -146,6 +148,7 @@ export class HostSettingsComponent implements OnInit {
secret: oauth.secret,
silentLogin: oauth.silentLogin,
implicitFlow: oauth.implicitFlow,
codeFlow: oauth.codeFlow,
publicUrls: [oauth.publicUrls]
});
}
@@ -185,6 +188,7 @@ export class HostSettingsComponent implements OnInit {
this.storageService.setItem(AppConfigValues.AUTHTYPE, values.authType);
this.alfrescoApiService.reset();
this.auth.reset();
this.alfrescoApiService.getInstance().invalidateSession();
this.success.emit(true);
}
@@ -228,6 +232,10 @@ export class HostSettingsComponent implements OnInit {
return this.form.get('authType').value === 'OAUTH';
}
get supportsCodeFlow(): boolean {
return this.auth.supportCodeFlow;
}
get providersControl(): UntypedFormControl {
return this.form.get('providersControl') as UntypedFormControl;
}
@@ -264,6 +272,10 @@ export class HostSettingsComponent implements OnInit {
return this.oauthConfig.get('implicitFlow') as UntypedFormControl;
}
get codeFlow(): UntypedFormControl {
return this.oauthConfig.get('codeFlow') as UntypedFormControl;
}
get silentLogin(): UntypedFormControl {
return this.oauthConfig.get('silentLogin') as UntypedFormControl;
}
@@ -1,7 +1,7 @@
<ng-container *ngIf="sharedLinkId">
<adf-viewer
<adf-alfresco-viewer
(invalidSharedLink)="redirectTo404()"
[sharedLinkId]="sharedLinkId"
[allowGoBack]="false">
</adf-viewer>
</adf-alfresco-viewer>
</ng-container>
+10 -5
View File
@@ -1,6 +1,7 @@
@use '@angular/material' as mat;
@import '../../lib/core/src/lib/styles/index';
@include mat.core($alfresco-typography);
@import '../../lib/core/src/lib/styles/typography';
@include mat.core;
$primary: mat.define-palette($alfresco-accent-orange);
$accent: mat.define-palette($alfresco-accent-purple);
@@ -10,21 +11,25 @@ $theme: mat.define-light-theme(
color: (
primary: $primary,
accent: $accent,
)
warn: $warn
),
typography: $alfresco-typography
)
);
@include mat.all-component-themes($theme);
@include alfresco-material-theme($theme);
$typography: map-get($theme, typography);
body,
html {
margin: 0;
height: 100%;
overflow: hidden;
font-size: mat.font-size($alfresco-typography, body-1);
font-family: mat.font-family($alfresco-typography);
line-height: mat.line-height($alfresco-typography, body-1);
font-size: mat.font-size($typography, body-1);
font-family: mat.font-family($typography);
line-height: mat.line-height($typography, body-1);
}
body {
@@ -0,0 +1,22 @@
/*!
* @license
* Copyright 2019 Alfresco Software, Ltd.
*
* 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 const environment = {
production: true,
e2e: false,
oidc: true
};
@@ -17,5 +17,6 @@
export const environment = {
production: false,
e2e: true
e2e: true,
oidc: false
};
@@ -17,5 +17,6 @@
export const environment = {
production: true,
e2e: false
e2e: false,
oidc: false
};
+2 -1
View File
@@ -22,5 +22,6 @@
export const environment = {
production: false,
e2e: false
e2e: false,
oidc: false
};
+5 -5
View File
@@ -112,7 +112,7 @@ for more information about installing and using the source code.
| [Notification History component](core/components/notification-history.component.md) ![Experimental](docassets/images/ExperimentalIcon.png) | This component is in the current status just an experimental component. | |
| The main purpose of the Notification history component is list all the notification received in the current session. They will disappear from the list after the refresh. | [Source](../lib/core/src/lib/notifications/components/notification-history.component.ts) | |
| [Pagination Component](core/components/pagination.component.md) | Adds pagination to the component it is used with. | [Source](../lib/core/src/lib/pagination/pagination.component.ts) |
| [Rich Text Editor component](core/components/rich-text-editor.md) | Wrap Editor.js element to show a Rich Text editor allows to add formatted text. | [Source](../lib/core/src/lib/rich-text-editor/rich-text-editor.component.ts) |
| [Rich Text Editor component](docs/process-services-cloud/rich-text-editor.md) | Wrap Editor.js element to show a Rich Text editor allows to add formatted text. | [Source](lib/process-services-cloud/src/lib/rich-text-editor/rich-text-editor.component.ts) |
| [Search Text Input Component](core/components/search-text-input.component.md) | Displays a input text that supports autocompletion | [Source](../lib/core/src/lib/search-text/search-text-input.component.ts) |
| [Sidebar action menu component](core/components/sidebar-action-menu.component.md) | Displays a sidebar-action menu information panel. | [Source](../lib/core/src/lib/layout/components/sidebar-action/sidebar-action-menu.component.ts) |
| [Sidenav Layout component](core/components/sidenav-layout.component.md) | Displays the standard three-region ADF application layout. | [Source](../lib/core/src/lib/layout/components/sidenav-layout/sidenav-layout.component.ts) |
@@ -213,7 +213,7 @@ for more information about installing and using the source code.
| [Favorites Api service](core/services/favorites-api.service.md) | Gets a list of items a user has marked as their favorites. | [Source](lib/content-services/src/lib/common/services/favorites-api.service.ts) |
| [Form Rendering service](core/services/form-rendering.service.md) | Maps a form field type string onto the corresponding form widget component type. | [Source](../lib/core/form/services/form-rendering.service.ts) |
| [Form service](core/services/form.service.md) | Implements Process Services form methods | [Source](../lib/core/src/lib/form/services/form.service.ts) |
| [Highlight Transform service](core/services/highlight-transform.service.md) | Adds HTML to a string to highlight chosen sections. | [Source](../lib/core/src/lib/services/highlight-transform.service.ts) |
| [Highlight Transform service](core/services/highlight-transform.service.md) | Adds HTML to a string to highlight chosen sections. | [Source](lib/core/src/lib/common/services/highlight-transform.service.ts) |
| [Identity Group service](core/services/identity-group.service.md) | Performs CRUD operations on identity groups. | [Source](../lib/process-services-cloud/src/lib/group/services/identity-group.service.ts) |
| [Identity role service](core/services/identity-role.service.md) | Provides APIs for working with the Roles in Identity Services. | [Source](../lib/core/src/lib/auth/services/identity-role.service.ts) |
| [Identity user service](core/services/identity-user.service.md) | Gets OAuth2 personal details and roles for users and performs CRUD operations on identity users. | [Source](../lib/process-services-cloud/src/lib/people/services/identity-user.service.ts) |
@@ -222,7 +222,7 @@ for more information about installing and using the source code.
| [Login Dialog service](core/services/login-dialog.service.md) | Manages login dialogs. | [Source](../lib/core/src/lib/services/login-dialog.service.ts) |
| [Nodes Api service](core/services/nodes-api.service.md) | Accesses and manipulates ACS document nodes using their node IDs. | [Source](../lib/core/src/lib/services/nodes-api.service.ts) |
| [Notification Service](core/services/notification.service.md) | Shows a notification message with optional feedback. | [Source](../lib/core/src/lib/notifications/services/notification.service.ts) |
| [Page Title service](core/services/page-title.service.md) | Sets the page title. | [Source](../lib/core/src/lib/services/page-title.service.ts) |
| [Page Title service](core/services/page-title.service.md) | Sets the page title. | [Source](lib/core/src/lib/common/services/page-title.service.ts) |
| [People Content service](core/services/people-content.service.md) | Gets information about a Content Services user. | [Source](../lib/core/src/lib/services/people-content.service.ts) |
| [People Process service](core/services/people-process.service.md) | Gets information about Process Services users. | [Source](../lib/core/src/lib/services/people-process.service.ts) |
| [Process Content Service](core/services/process-content.service.md) | Manipulates content related to a Process Instance or Task Instance in APS. | [Source](../lib/process-services/src/lib/form/services/process-content.service.ts) |
@@ -231,8 +231,8 @@ for more information about installing and using the source code.
| [Search service](core/services/search.service.md) | Accesses the Content Services Search API. | [Source](../lib/core/src/lib/services/search.service.ts) |
| [Shared Links Api service](core/services/shared-links-api.service.md) | Finds shared links to Content Services items. | [Source](lib/content-services/src/lib/content-node-share/services/shared-links-api.service.ts) |
| [Storage service](core/services/storage.service.md) | Stores items in the form of key-value pairs. | [Source](../lib/core/src/lib/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/services/thumbnail.service.ts) |
| [Translation service](core/services/translation.service.md) | Supports localisation. | [Source](../lib/core/src/lib/services/translation.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) |
| [Upload Service](core/services/upload.service.md) | Provides access to various APIs related to file upload features. | [Source](../lib/core/src/lib/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/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) |
@@ -0,0 +1,474 @@
---
Title: Alfresco Viewer component
Added: 6.0.0
Status: Active
---
# [Alfresco Viewer component](../../../lib/content-services/src/lib/viewer/components/alfresco-viewer.component.ts "Defined in alfresco-viewer.component.ts")
Displays content from an ACS repository.
See it live: [Viewer Quickstart](https://embed.plnkr.co/iTuG1lFIXfsP95l6bDW6/)
## Contents
- [Basic usage](#basic-usage)
- [Transclusions](#transclusions)
- [Class members](#class-members)
- [Properties](#properties)
- [Events](#events)
- [Keyboard shortcuts](#keyboard-shortcuts)
- [Details](#details)
- [Integrating with the Document List component](#integrating-with-the-document-list-component)
- [Supported file formats](#supported-file-formats)
- [Content Renditions](#content-renditions)
- [Configuring PDF.js library](#configuring-pdfjs-library)
- [Extending the Viewer](#extending-the-viewer)
- [Custom layout](#custom-layout)
- [Printing](#printing)
- [See also](#see-also)
## Basic usage
Using with node id:
```html
<adf-alfresco-viewer
[showViewer]="true"
[overlayMode]="true"
[nodeId]="'d367023a-7ebe-4f3a-a7d0-4f27c43f1045'">
</adf-alfresco-viewer>
```
Using with shared link:
```html
<adf-alfresco-viewer
[overlayMode]="true"
[sharedLinkId]="'WWDg_afiTU6lHEgr4fAbQA'">
</adf-alfresco-viewer>
```
Note that if you have a URL which contains a shared link ID, you should extract the
ID portion and use it with the `sharedLinkId` property rather than using the whole
URL with `urlFile`.
### [Transclusions](../../user-guide/transclusion.md)
The [Alfresco Viewer component](viewer.component.md) lets you transclude content for the toolbar (and toolbar buttons),
the sidebar, thumbnails, and the "Open with" and "More actions" menus.
See the [Custom layout](#custom-layout) section for full details of all available tranclusions.
## Class members
### Properties
| Name | Type | Default value | Description |
| ---- | ---- | ------------- | ----------- |
| allowDownload | `boolean` | true | Toggles downloading. |
| allowGoBack | `boolean` | true | Allows `back` navigation |
| allowLeftSidebar | `boolean` | false | Allow the left the sidebar. |
| allowNavigate | `boolean` | false | Toggles before/next navigation. You can use the arrow buttons to navigate between documents in the collection. |
| allowPrint | `boolean` | false | Toggles printing. |
| allowRightSidebar | `boolean` | false | Allow the right sidebar. |
| canNavigateBefore | `boolean` | true | Toggles the "before" ("&lt;") button. Requires `allowNavigate` to be enabled. |
| canNavigateNext | `boolean` | true | Toggles the next (">") button. Requires `allowNavigate` to be enabled. |
| maxRetries | `number` | 30 | Number of times the Viewer will retry fetching content Rendition. There is a delay of at least one second between attempts. |
| nodeId | `string` | null | Node Id of the file to load. |
| overlayMode | `boolean` | false | If `true` then show the Viewer as a full page over the current content. Otherwise fit inside the parent div. |
| sharedLinkId | `string` | null | Shared link id (to display shared file). |
| showLeftSidebar | `boolean` | false | Toggles left sidebar visibility. Requires `allowLeftSidebar` to be set to `true`. |
| showRightSidebar | `boolean` | false | Toggles right sidebar visibility. Requires `allowRightSidebar` to be set to `true`. |
| showToolbar | `boolean` | true | Hide or show the toolbar |
| showViewer | `boolean` | true | Hide or show the viewer |
| sidebarLeftTemplate | [`TemplateRef`](https://angular.io/api/core/TemplateRef)`<any>` | null | The template for the left sidebar. The template context contains the loaded node data. |
| sidebarRightTemplate | [`TemplateRef`](https://angular.io/api/core/TemplateRef)`<any>` | null | The template for the right sidebar. The template context contains the loaded node data. |
| versionId | `string` | null | Version Id of the file to load. |
### Events
| Name | Type | Description |
| ---- | ---- | ----------- |
| close | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<boolean>` | Emitted when the viewer close |
| invalidSharedLink | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<any>` | Emitted when the shared link used is not valid. |
| navigateBefore | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<KeyboardEvent \| MouseEvent>` | Emitted when user clicks 'Navigate Before' ("&lt;") button. |
| navigateNext | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<KeyboardEvent \| MouseEvent>` | Emitted when user clicks 'Navigate Next' (">") button. |
## Keyboard shortcuts
| Name | Description |
| ---- | ----------- |
| Esc | Close the viewer (overlay mode only). |
| Left | Invoke 'Navigate before' action. |
| Right | Invoke 'Navigate next' action. |
| Ctrl+F | Activate full-screen mode. |
## Details
### Integrating with the Document List component
Below is the most simple integration of the Viewer and
[Document List](../../content-services/components/document-list.component.md) components within your custom component:
```html
<adf-document-list
currentFolderId="-my-"
(preview)="showPreview($event)">
</adf-document-list>
<adf-alfresco-viewer
[(showViewer)]="showViewer"
[overlayMode]="true"
[nodeId]="nodeId">
</adf-alfresco-viewer>
```
The component controller class implementation might look like the following:
```ts
export class OverlayViewerComponent {
@Input()
showViewer: boolean = false;
nodeId: string;
showPreview(event) {
if (event.value.entry.isFile) {
this.nodeId = event.value.entry.id;
this.showViewer = true;
}
}
}
```
### Supported file formats
The [Alfresco Viewer component](viewer.component.md) consists of separate Views that handle particular file types or type families based on either a file extension or a mime type:
- PDF View
- application/pdf
- \*.pdf
- Image View
- image/png
- image/jpeg
- image/gif
- image/bmp
- image/svg+xml
- \*.png
- \*.jpg
- \*.jpeg
- \*.gif
- \*.bpm
- \*.svg
- Text View
- text/plain
- text/csv
- text/xml
- text/html
- application/x-javascript
- \*.txt
- \*.xml
- \*.js
- \*.html
- \*.json
- \*.ts
- Media View
- video/mp4
- video/webm
- video/ogg
- audio/mpeg
- audio/ogg
- audio/wav
- \*.wav
- \*.mp4
- \*.mp3
- \*.webm
- \*.ogg
### Content Renditions
For those extensions and mime types that cannot be natively displayed in the browser, the Viewer will try to fetch the corresponding rendition using the [renditions service api](../services/renditions.service.md).
For the full list of supported types please refer to: [File types that support preview and thumbnail generation](http://docs.alfresco.com/5.2/references/valid-transformations-preview.html).
### Configuring PDF.js library
Configure your webpack-enabled application with the PDF.js library as follows.
1. Install pdfjs-dist
```sh
npm install pdfjs-dist
```
2. Update `vendors.ts` by appending the following code. This will enable the [Alfresco Viewer component](viewer.component.md)
and compatibility mode for all browsers. It will also configure the web worker for the PDF.js
library to render PDF files in the background:
```ts
// PDF.js
require('pdfjs-dist/web/compatibility.js');
const pdfjsLib = require('pdfjs-dist');
pdfjsLib.PDFJS.workerSrc = './pdf.worker.js';
require('pdfjs-dist/web/pdf_viewer.js');
```
3. Update the `plugins` section of the `webpack.common.js` file with the following lines:
```js
new CopyWebpackPlugin([
...
{
from: 'node_modules/pdfjs-dist/build/pdf.worker.js',
to: 'pdf.worker.js'
}
])
```
### Extending the Viewer
#### Internal extension mechanism
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]
You can define your own custom handler to 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>
</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:
```html
<adf-alfresco-viewer [nodeId]="nodeId">
<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-alfresco-viewer>
```
### Custom layout
The [Alfresco Viewer Component](viewer.component.md) lets you transclude custom content in several different places as
explained in the sections below.
#### Custom toolbar
You can replace the standard viewer toolbar with your own custom implementation:
```html
<adf-alfresco-viewer>
<adf-alfresco-viewer-toolbar>
<h1>toolbar</h1>
</adf-alfresco-viewer-toolbar>
</adf-alfresco-viewer>
```
Everything you put inside the "adf-alfresco-viewer-toolbar" tags will be rendered instead of the
standard toolbar.
#### Custom toolbar buttons
If you are happy with the custom toolbar's behaviour but want to add some extra buttons
then you can do so as shown in the following example:
```html
<adf-alfresco-viewer>
<adf-alfresco-viewer-toolbar-actions>
<button mat-icon-button>
<mat-icon>alarm</mat-icon>
</button>
<button mat-icon-button>
<mat-icon>backup</mat-icon>
</button>
<button mat-icon-button>
<mat-icon>bug_report</mat-icon>
</button>
</adf-alfresco-viewer-toolbar-actions>
</adf-alfresco-viewer>
```
The result should look like this:
![Custom Toolbar Actions](../../docassets/images/viewer-toolbar-actions.png)
#### Custom sidebar
The [Alfresco Viewer Component](viewer.component.md) also supports custom sidebar components and layouts.
Set the `allowRightSidebar` property to `true` to enable this feature.
The custom sidebar can be injected in two different ways. The first way is to use
transclusion, which will display all content placed inside the `<adf-alfresco-viewer-sidebar>` element:
```html
<adf-alfresco-viewer [allowRightSidebar]="true">
<adf-alfresco-viewer-sidebar>
<h1>My info</h1>
</adf-alfresco-viewer-sidebar>
</adf-alfresco-viewer>
```
The second way to customize the sidebar is to use template injection but note that this only works
when using the viewer with `nodeId`.
```html
<ng-template let-node="node" #sidebarTemplate>
<adf-content-metadata-card [node]="node"></adf-content-metadata-card>
</ng-template>
<adf-alfresco-viewer [allowRightSidebar]="true" [sidebarRightTemplate]="sidebarTemplate"></adf-alfresco-viewer>
```
#### Custom thumbnails
The PDF viewer comes with its own default list of thumbnails but you can replace this
by providing a custom template and binding to the context property `viewer` to access the PDFJS.PDFViewer
instance.
![PDF thumbnails](../../docassets/images/pdf-thumbnails.png)
Provide the custom template as in the following example:
```javascript
import { Component, Input } from '@angular/core';
@Component({
selector: 'custom-thumbnails',
template: '<p> Custom Thumbnails Component </p>'
})
export class CustomThumbnailsComponent {
@Input() pdfViewer: any;
...
}
```
```html
<ng-template #customThumbnailsTemplate let-pdfViewer="viewer">
<custom-thumbnails [pdfViewer]="pdfViewer"></custom-thumbnails>
</ng-template>
<adf-alfresco-viewer [thumbnailsTemplate]="customThumbnailsTemplate"></adf-alfresco-viewer>
```
#### Custom "Open With" menu
You can enable a custom "Open With" menu by providing at least one action inside the
`adf-alfresco-viewer-open-with` tag:
```html
<adf-alfresco-viewer [nodeId]="nodeId">
<adf-alfresco-viewer-open-with>
<button mat-menu-item>
<mat-icon>dialpad</mat-icon>
<span>Option 1</span>
</button>
<button mat-menu-item disabled>
<mat-icon>voicemail</mat-icon>
<span>Option 2</span>
</button>
<button mat-menu-item>
<mat-icon>notifications_off</mat-icon>
<span>Option 3</span>
</button>
</adf-alfresco-viewer-open-with>
</adf-alfresco-viewer>
```
![Open with](../../docassets/images/viewer-open-with.png)
#### Custom "More actions" menu
You can enable a custom "More actions" menu by providing at least one action inside the `adf-alfresco-viewer-more-actions` tag:
```html
<adf-alfresco-viewer [nodeId]="nodeId">
<adf-alfresco-viewer-more-actions>
<button mat-menu-item>
<mat-icon>dialpad</mat-icon>
<span>Action One</span>
</button>
<button mat-menu-item disabled>
<mat-icon>voicemail</mat-icon>
<span>Action Two</span>
</button>
<button mat-menu-item>
<mat-icon>notifications_off</mat-icon>
<span>Action Three</span>
</button>
</adf-alfresco-viewer-more-actions>
</adv-viewer>
```
![More actions](../../docassets/images/viewer-more-actions.png)
#### Custom zoom scaling
You can set a default zoom scaling value for pdf viewer by adding the following code in `app.config.json`.
Note: For the pdf viewer the value has to be within the range of 25 - 1000.
"adf-alfresco-viewer": {
"pdf-viewer-scaling": 150
}
In the same way you can set a default zoom scaling value for the image viewer by adding the following code in `app.config.json`.
"adf-alfresco-viewer": {
"image-viewer-scaling": 150
}
By default the viewer's zoom scaling is set to 100%.
### Printing
You can configure the Viewer to let the user print the displayed content. The
component will show a "Print" button if the `allowPrint` property is set to
true.
```html
<adf-alfresco-viewer [allowPrint]="true">
...
</adf-alfresco-viewer>
```
You can also use the `print` event to get notification when the user prints some
content.
## See also
- [Document List component](../../content-services/components/document-list.component.md)
- [Preview Extension component](../../extensions/components/preview-extension.component.md)
@@ -0,0 +1,38 @@
---
Title: Content User Info component
Added: v6.0.0
Status: Active
Last reviewed: 2023-01-24
---
# [Content User Info component](../../../lib/content-services/src/lib/content-user-info/content-user-info.component.ts "Defined in content-user-info.component.ts")
Shows user information for `CONTENT` and `CONTENT_SSO` mode.
## Basic usage
```html
<adf-content-user-info></adf-content-user-info>
```
## Class members
### Properties
| Name | Type | Default value | Description |
| ---- | ---- | ------------- | ----------- |
| isLoggedIn | `boolean` | Is user logged in |
| EcmUser | `EcmUserModel` | Ecm user model. |
| identityUser | `IdentityUserModel` | Identity user model. |
| mode | `UserInfoMode` | `UserInfoMode.CONTENT` | current mode. |
| bpmBackgroundImage | `string` | | Custom path for the background banner image for APS users. |
| EcmBackgroundImage | `string` | | Custom path for the background banner image for ACS users. |
| menuPositionX | [`MenuPositionX`](https://github.com/angular/components/blob/master/src/material/menu/menu-positions.ts) | "after" | Custom choice for opening the menu at the bottom. Can be `before` or `after`. |
| menuPositionY | [`MenuPositionY`](https://github.com/angular/components/blob/master/src/material/menu/menu-positions.ts) | "below" | Custom choice for opening the menu at the bottom. Can be `above` or `below`. |
| namePosition | `string` | "right" | When the username is shown, this defines its position relative to the user info button. Can be `right` or `left`. |
| showName | `boolean` | true | Shows/hides the username next to the user info button. |
## Details
The component shows a round icon for the user and will show extra information about
the user when clicked.
@@ -99,7 +99,7 @@ Displays the documents from a repository.
| nodeClick | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<`[`NodeEntityEvent`](../../../lib/content-services/src/lib/document-list/components/node.event.ts)`>` | Emitted when the user clicks a list node |
| nodeDblClick | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<`[`NodeEntityEvent`](../../../lib/content-services/src/lib/document-list/components/node.event.ts)`>` | Emitted when the user double-clicks a list node |
| nodeSelected | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<`[`NodeEntry`](https://github.com/Alfresco/alfresco-js-api/blob/master/src/alfresco-core-rest-api/docs/NodeEntry.md)`[]>` | Emitted when the node selection change |
| preview | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<`[`NodeEntityEvent`](../../../lib/content-services/src/lib/document-list/components/node.event.ts)`>` | Emitted when the user acts upon files with either single or double click (depends on `navigation-mode`). Useful for integration with the [Viewer component](../../core/components/viewer.component.md). |
| preview | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<`[`NodeEntityEvent`](../../../lib/content-services/src/lib/document-list/components/node.event.ts)`>` | Emitted when the user acts upon files with either single or double click (depends on `navigation-mode`). Useful for integration with the Viewer component. |
| ready | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<`[`NodePaging`](https://github.com/Alfresco/alfresco-js-api/blob/develop/src/api/content-rest-api/docs/NodePaging.md)`>` | Emitted when the Document List has loaded all items and is ready for use |
## Details
@@ -27,9 +27,23 @@ Shows tags for a node.
| ---- | ---- | ------------- | ----------- |
| nodeId | `string` | | The identifier of a node. |
| showDelete | `boolean` | true | Show delete button |
| limitTagsDisplayed | `boolean` | false | Should limit number of tags displayed to as much as fits into container |
### Events
| Name | Type | Description |
| ---- | ---- | ----------- |
| results | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<any>` | Emitted when a tag is selected. |
## Details
### Limit number of tags displayed initially
To limit number of tags initially displayed set `limitTagsDisplayed` to `true`.
```html
<adf-tag-node-list
[nodeId]="nodeId"
[limitTagsDisplayed]="true">
</adf-tag-node-list>
```
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.
@@ -0,0 +1,111 @@
---
Title: Tree component
Added: v6.0.0.0
Status: Active
Last reviewed: 2023-01-25
---
# [Tree component](../../../lib/content-services/src/lib/tree/components/tree.component.ts "Defined in tree.component.ts")
Shows the nodes in tree structure, each node containing children is collapsible/expandable. Can be integrated with any datasource extending [Tree service](../../../lib/content-services//src/lib/tree/services/tree.service.ts).
![Tree component screenshot](../../docassets/images/tree.png)
## Basic Usage
```html
<adf-tree
[displayName]="'Tree display name'"
[loadMoreSuffix]="'subnodes'"
[emptyContentTemplate]="emptyContentTemplate"
[nodeActionsMenuTemplate]="nodeActionsMenuTemplate"
(paginationChanged)="onPaginationChanged($event)">
</adf-tree>
```
## Class members
### Properties
| Name | Type | Default value | Description |
| ---- |---------------| --------- | ----------- |
| emptyContentTemplate | `TemplateRef` | | Template that will be rendered when no nodes are loaded. |
| nodeActionsMenuTemplate | `TemplateRef` | | Template that will be rendered when context menu for given node is opened. |
| stickyHeader | `boolean` | false | If set to true header will be sticky. |
| selectableNodes | `boolean` | false | If set to true nodes will be selectable. |
| displayName | `string` | | Display name for tree title. |
| loadMoreSuffix | `string` | | Suffix added to `Load more` string inside load more node. |
| expandIcon | `string` | `chevron_right` | Icon shown when node is collapsed. |
| collapseIcon | `string` | `expand_more` | Icon showed when node is expanded. |
| contextMenuOptions | `any[]` | | Array of context menu options which should be displayed for each row. |
### Events
| Name | Type | Description |
| ---- |----------------------------------------------------------------------------------------|------------------------------------------------------------------|
| paginationChanged | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<PaginationModel>` | Emitted when during loading additional nodes pagination changes. |
| contextMenuOptionSelected | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<TreeContextMenuResult<T>>` | Emitted when any context menu option is selected. |
## Details
### Defining your own custom datasource
First of all create custom node interface extending [`TreeNode`](../../../lib/content-services/src/lib/tree/models/tree-node.interface.ts) interface or use [`TreeNode`](../../../lib/content-services/src/lib/tree/models/tree-node.interface.ts) when none extra properties are required.
```ts
export interface CustomNode extends TreeNode
```
Next create custom datasource service extending [`TreeService`](../../../lib/content-services/src/lib/tree/services/tree.service.ts). Datasource service must implement `getSubNodes` method. It has to be able to provide both root level nodes as well as subnodes. If there are more subnodes to load for a given node it should add node with `LoadMoreNode` node type. Example of custom datasource service can be found in [`Category tree datasource service`](../services/category-tree-datasource.service.md).
```ts
@Injectable({...})
export class CustomTreeDatasourceService extends TreeService<TreeNode> {
...
public getSubNodes(parentNodeId: string, skipCount?: number, maxItems?: number): Observable<TreeResponse<TreeNode>> {
...
}
```
Final step is to provide your custom datasource service as tree service in component using `TreeComponent`.
```ts
providers: [
{
provide: TreeService,
useClass: CustomTreeDatasourceService,
},
]
```
### Enabling nodes selection and listening to selection changes
First step is to provide necessary input value.
```html
<adf-tree
[displayName]="'Tree display name'"
[loadMoreSuffix]="'subnodes'"
[selectableNodes]="true"
[emptyContentTemplate]="emptyContentTemplate"
[nodeActionsMenuTemplate]="nodeActionsMenuTemplate"
(paginationChanged)="onPaginationChanged($event)">
</adf-tree>
```
Next inside your component get the `TreeComponent`
```ts
@ViewChild(TreeComponent)
public treeComponent: TreeComponent<TreeNode>;
```
and listen to selection changes.
```ts
this.treeComponent.treeNodesSelection.changed.subscribe(
(selectionChange: SelectionChange<TreeNode>) => {
this.onTreeSelectionChange(selectionChange);
}
);
```
@@ -0,0 +1,27 @@
---
Title: Category tree datasource service
Added: v6.0.0.0
Status: Active
Last reviewed: 2023-01-25
---
# [Category tree datasource service](../../../lib/content-services/src/lib/category/services/category-tree-datasource.service.ts "Defined in category-tree-datasource.service.ts")
Datasource service for category tree.
## Class members
### Methods
- **getSubNodes**(parentNodeId: `string`, skipCount?: `number`, maxItems?: `number`, name?: `string`): [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`TreeResponse<CategoryNode>`](../../../lib/content-services/src/lib/tree/models/tree-response.interface.ts)`>`<br/>
Gets categories as nodes for category tree.
- _parentNodeId:_ `string` - Identifier of a parent category
- _skipCount:_ `number` - Number of top categories to skip
- _maxItems:_ `number` - Maximum number of subcategories returned from Observable
- _name:_ `string` - Optional parameter which specifies if categories should be filtered out by name or not. If not specified then returns categories without filtering.
- **Returns** [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`TreeResponse<CategoryNode>`](../../../lib/content-services/src/lib/tree/models/tree-response.interface.ts)`>` - TreeResponse object containing pagination object and list on nodes
## Details
Category tree datasource service acts as datasource for tree component utilizing category service. See the
[Tree component](../../../lib/content-services/src/lib/tree/components/tree.component.ts) and [Tree service](../../../lib/content-services/src/lib/tree/services/tree.service.ts) to get more details on how datasource is used.
@@ -0,0 +1,49 @@
---
Title: Category service
Added: v6.0.0.0
Status: Active
Last reviewed: 2023-01-25
---
# [Category service](../../../lib/content-services/src/lib/category/services/category.service.ts "Defined in category.service.ts")
Manages categories in Content Services.
## Class members
### Methods
- **getSubcategories**(parentCategoryId: `string`, skipCount?: `number`, maxItems?: `number`): [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`CategoryPaging`](https://github.com/Alfresco/alfresco-js-api/blob/master/src/api/content-rest-api/docs/CategoryPaging.md)`>`<br/>
Gets subcategories of a given parent category.
- _parentCategoryId:_ `string` - Identifier of a parent category
- _skipCount:_ `number` - Number of top categories to skip
- _maxItems:_ `number` - Maximum number of subcategories returned from Observable
- **Returns** [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`CategoryPaging`](https://github.com/Alfresco/alfresco-js-api/blob/master/src/api/content-rest-api/docs/CategoryPaging.md)`>` - CategoryPaging object (defined in JS-API) with category paging list
- **createSubcategory**(parentCategoryId: `string`, payload: [`CategoryBody`](https://github.com/Alfresco/alfresco-js-api/blob/master/src/api/content-rest-api/docs/CategoryBody.md)): [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`CategoryEntry`](https://github.com/Alfresco/alfresco-js-api/blob/master/src/api/content-rest-api/docs/CategoryEntry.md)`>`<br/>
Creates subcategory under category with provided categoryId.
- _parentCategoryId:_ `string` - Identifier of a parent category
- _payload:_ [`CategoryBody`](https://github.com/Alfresco/alfresco-js-api/blob/master/src/api/content-rest-api/docs/CategoryBody.md) - Created category body
- **Returns** [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`CategoryEntry`](https://github.com/Alfresco/alfresco-js-api/blob/master/src/api/content-rest-api/docs/CategoryEntry.md)`>` - CategoryEntry object (defined in JS-API) containing the category
- **updateCategory**(categoryId: `string`, payload: [`CategoryBody`](https://github.com/Alfresco/alfresco-js-api/blob/master/src/api/content-rest-api/docs/CategoryBody.md)): [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`CategoryEntry`](https://github.com/Alfresco/alfresco-js-api/blob/master/src/api/content-rest-api/docs/CategoryEntry.md)`>`<br/>
Updates category.
- _categoryId:_ `string` - Identifier of a category
- _payload:_ [`CategoryBody`](https://github.com/Alfresco/alfresco-js-api/blob/master/src/api/content-rest-api/docs/CategoryBody.md) - Created category body
- **Returns** [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`CategoryEntry`](https://github.com/Alfresco/alfresco-js-api/blob/master/src/api/content-rest-api/docs/CategoryEntry.md)`>` - CategoryEntry object (defined in JS-API) containing the category
- **deleteCategory**(categoryId: `string`): [`Observable`](http://reactivex.io/documentation/observable.html)`<void>`<br/>
Deletes category.
- _categoryId:_ `string` - Identifier of a category
- **Returns** [`Observable`](http://reactivex.io/documentation/observable.html)`<void>` - Null object when the operation completes
- **searchCategories**(name: `string`, skipCount: `number`, maxItems?: `number`): [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`ResultSetPaging`](https://github.com/Alfresco/alfresco-js-api/blob/develop/src/api/search-rest-api/docs/ResultSetPaging.md)`>`<br/>
Searches categories by their name.
- _name:_ `string` - Value for name which should be used during searching categories.
- _skipCount:_ `number` - Specify how many first results should be skipped. Default 0.
- _maxItems:_ `number` - Specify max number of returned categories. Default is specified by UserPreferencesService.
- **Returns** [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`ResultSetPaging`](https://github.com/Alfresco/alfresco-js-api/blob/develop/src/api/search-rest-api/docs/ResultSetPaging.md)`>` - Found categories which name contains searched name.
## Details
See the
[Categories API](https://github.com/Alfresco/alfresco-js-api/blob/master/src/api/content-rest-api/docs/CategoriesApi.md)
in the Alfresco JS API for more information about the types returned by [Category
service](category.service.md) methods and for the implementation of the REST API the service is
based on.
@@ -0,0 +1,23 @@
---
Title: Content Comment List Service
Added: v6.0.0
Status: Active
Last reviewed: 2023-01-17
---
# [Content Comment List service](../../../lib/content-services/src/lib/node-comments/services/content-comment-list.service.ts "Defined in content-comment-list.service.ts")
Gets user image for comments in Content Services.
## Class members
### Methods
- **getUserImage**(user: `string`): `string`<br/>
Gets user image
- _user:_ `string` - The user id;
- **Returns** `string` - The user image path
## See also
- [Node comments component](../../../lib/content-services/src/lib/node-comments/node-comments.component.ts)
@@ -25,7 +25,7 @@ Stores information from all the custom search and faceted search widgets, compil
- **Returns** `QueryBody` - The finished query
- **execute**(queryBody?: `QueryBody`)<br/>
Builds and executes the current query.
- _queryBody:_ `QueryBody` - (Optional)
- _queryBody:_ `QueryBody` - (Optional) (Optional)
- **getDefaultConfiguration**(): [`SearchConfiguration`](../../../lib/content-services/src/lib/search/models/search-configuration.interface.ts)`|undefined`<br/>
- **Returns** [`SearchConfiguration`](../../../lib/content-services/src/lib/search/models/search-configuration.interface.ts)`|undefined` -
@@ -92,7 +92,7 @@ Stores information from all the custom search and faceted search widgets, compil
- **update**(queryBody?: `QueryBody`)<br/>
Builds the current query and triggers the `updated` event.
- _queryBody:_ `QueryBody` - (Optional)
- _queryBody:_ `QueryBody` - (Optional) (Optional)
- **updateSelectedConfiguration**(index: `number`)<br/>
- _index:_ `number` -
@@ -0,0 +1,79 @@
---
Title: Security Controls service
Added: v2.0.0
Status: Active
Last reviewed: 2023-02-21
---
# [Security Controls service](../../../lib/content-services/src/lib/security/services/security-controls-groups-marks-security.service.ts "Defined in security-controls-groups-marks-security.service.ts")
Manages security groups & marks in Content Services.
## Class members
### Methods
- **getSecurityGroup**(skipCount?: `number`, maxItems?: `number`, include?: `string`): [`Promise`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Using_promises)`<SecurityControlsGroupResponse>`<br/>
Get security groups.
- _skipCount:_ `number` - The number of entities that exist in the collection before those included in this list.
- _maxItems:_ `number` - The maximum number of items to return in the list.
- _include:_ `string` - Additional information about the security group.
- **Returns** [`Promise`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Using_promises)`<SecurityControlsGroupResponse>`
- **createSecurityGroup**(input: `SecurityGroupBody`): [`Observable`](http://reactivex.io/documentation/observable.html)`<SecurityGroupEntry>`<br/>
Creates a security group.
- _input:_ `SecurityGroupBody` - Security group.
- **Returns** [`Observable`](http://reactivex.io/documentation/observable.html)`<SecurityGroupEntry>`
- **createSecurityMarks**(securityGroupId: `string`, input: `SecurityMarkBody[]`): [`Promise`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Using_promises)`<SecurityMarkPaging | SecurityMarkEntry>`<br/>
Create security marks.
- _securityGroupId:_ `string` - The key for the security group id.
- _SecurityMarkBody:_ `SecurityMarkBody[]` - Node security marks list.
- **Returns** [`Promise`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Using_promises)`<SecurityMarkPaging | SecurityMarkEntry>`
- **getSecurityMark**(securityGroupId: `string`, skipCount?: `number`, include?: `string`): [`Promise`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Using_promises)`<SecurityControlsMarkResponse>`<br/>
Get security mark value.
- _securityGroupId:_ `string` - The key for the security group id.
- _skipCount:_ `number` - The number of entities that exist in the collection before those included in this list.
- _include:_ `string` - The key for the security mark is in use or not.
- **Returns** [`Promise`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Using_promises)`<SecurityControlsMarkResponse>`
- **updateSecurityGroup**(securityGroupId: `string`, input: `SecurityGroupBody`, opts?: `any`): [`Promise`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Using_promises)`<SecurityGroupEntry>`<br/>
Update a security groups information.
- _securityGroupId:_ `string` - The key of security group id for which info is required.
- _input:_ `SecurityGroupBody` - Security group.
- _opts:_ `any` - (Optional) Extra options supported by JS-API.
- **Returns** [`Promise`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Using_promises)`<SecurityGroupEntry>`
- **updateSecurityMark**(securityGroupId: `string`, securityMarkId: `string`, input: `SecurityMarkBody`): [`Promise`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Using_promises)`<SecurityMarkEntry>`<br/>
Updates Security Mark value.
- _securityGroupId:_ `string` - The key for the security group id.
- _securityMarkId:_ `string` - The key for the security mark is in use or not.
- _input:_ `SecurityMarkBody` - Security mark.
- **Returns** [`Promise`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Using_promises)`<SecurityMarkEntry>`
- **deleteSecurityGroup**(securityGroupId: `string`): [`Observable`](http://reactivex.io/documentation/observable.html)`<SecurityGroupEntry>`<br/>
Delete security group.
- _securityGroupId:_ `string` - The key for the security group id.
- **Returns** [`Observable`](http://reactivex.io/documentation/observable.html)`<SecurityGroupEntry>`
- **deleteSecurityMark**(securityGroupId: `string`, securityMarkId: `string`): [`Promise`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Using_promises)`<SecurityMarkEntry>`<br/>
Delete security mark.
- _securityGroupId:_ `string` - The key for the security group id.
- _securityMarkId:_ `string` - The key for the security mark id.
- **Returns** [`Promise`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Using_promises)`<SecurityMarkEntry>`
- **getClearancesForAuthority**(authorityName: `string`, skipCount?: `number`, maxItems?: `number`): [`Observable`](http://reactivex.io/documentation/observable.html)`<AuthorityClearanceGroupPaging>`<br/>
Get the authority clearances for a single user/group.
- _authorityName:_ `string` - The name for the authority for which the clearance is to be fetched.
- _skipCount:_ `number` - The number of entities that exist in the collection before those included in this list.
- _maxItems:_ `number` - The maximum number of items to return in the list.
- **Returns** [`Observable`](http://reactivex.io/documentation/observable.html)`<AuthorityClearanceGroupPaging>`
- **updateClearancesForAuthority**(authorityName: `string`, securityMarksList: `NodeSecurityMarkBody[]`): [`Observable`](http://reactivex.io/documentation/observable.html)`<SecurityMarkEntry | SecurityMarkPaging>`<br/>
Updates the authority clearance.
- _authorityName:_ `string` - The name for the authority for which the clearance is to be updated.
- _securityMarksList:_ `NodeSecurityMarkBody[]` - Node security marks list.
- **Returns** [`Observable`](http://reactivex.io/documentation/observable.html)`<SecurityMarkEntry | SecurityMarkPaging>`
## Properties
| Name | Type | Description |
| ---- | ---- |--------------------------|
| groupsPaginated$ | [`Observable`](http://reactivex.io/documentation/observable.html)`<SecurityControlsGroupResponse>` | Current paginated groups. |
| marksPaginated$ | [`Observable`](http://reactivex.io/documentation/observable.html)`<SecurityControlsMarkResponse>` | Current paginated marks. |
| reloadSecurityControls$ | [`Observable`](http://reactivex.io/documentation/observable.html)`<void>` | |
| reloadAuthorityClearance$ | [`Observable`](http://reactivex.io/documentation/observable.html)`<void>` | |
| loading$ | [`Observable`](http://reactivex.io/documentation/observable.html)`<boolean>` | Current loading state. |
@@ -31,6 +31,33 @@ Manages tags in Content Services.
- _nodeId:_ `string` - ID of the target node
- _tag:_ `string` - Name of the tag to remove
- **Returns** [`Observable`](http://reactivex.io/documentation/observable.html)`<any>` - Null object when the operation completes
- **deleteTag**(tagId: `string`): [`Observable`](http://reactivex.io/documentation/observable.html)`<void>`<br/>
Completely deletes a tag, this will cause the tag to be removed from all the nodes.
- _tagId:_ `string` - ID of the tag to remove
- **Returns** [`Observable`](http://reactivex.io/documentation/observable.html)`<void>` - Null object when the operation completes
- **createTags**(tags: `TagBody[]`): [`Observable`](http://reactivex.io/documentation/observable.html)`<TagEntry[]>`<br/>
Creates tags.
- _tags:_ `TagBody[]` - List of tags to create.
- **Returns** [`Observable`](http://reactivex.io/documentation/observable.html)`<TagEntry[]>` - List of created tags.
- **updateTag**(tagId: `string`, tagBody: `TagBody`): [`Observable`](http://reactivex.io/documentation/observable.html)`<TagEntry>`<br/>
Updates a tag.
- _tagId:_ `string` - The identifier of a tag.
- _tagBody:_ `TagBody` - The updated tag.
- **Returns** [`Observable`](http://reactivex.io/documentation/observable.html)`<TagEntry>` - Updated tag.
- **searchTags**(name: `string`, skipCount: `number`): [`Observable`](http://reactivex.io/documentation/observable.html)`<ResultSetPaging>`<br/>
Find tags which name contains searched name.
- _name:_ `string` - Value for name which should be used during searching tags.
- _skipCount:_ `number` - Specify how many first results should be skipped. Default 0.
- _maxItems:_ `number` - Specify max number of returned tags. Default is specified by UserPreferencesService.
- **Returns** [`Observable`](http://reactivex.io/documentation/observable.html)`<ResultSetPaging>` - Found tags which name contains searched name.
- **getCountersForTags**(tags: `string[]`): [`Observable`](http://reactivex.io/documentation/observable.html)`<ResultSetContextFacetQueries[]>`<br/>
Get usage counters for passed tags.
- _tags:_ `string[]` - Array of tags names for which there should be returned counters.
- **Returns** [`Observable`](http://reactivex.io/documentation/observable.html)`<ResultSetContextFacetQueries[]>` - Array of usage counters for specified tags.
- **findTagByName**(name: `string`): [`Observable`](http://reactivex.io/documentation/observable.html)`<TagEntry>`<br/>
Find tag which name matches exactly to passed name.
- _name:_ `string` - Value for name which should be used during finding exact tag.
- **Returns** [`Observable`](http://reactivex.io/documentation/observable.html)`<TagEntry>` - Found tag which name matches exactly to passed name.
## Details
@@ -2,10 +2,10 @@
Title: Comment list component
Added: v2.0.0
Status: Active
Last reviewed: 2018-11-14
Last reviewed: 2023-01-10
---
# [Comment list component](../../../lib/core/src/lib/comments/comment-list.component.ts "Defined in comment-list.component.ts")
# [Comment list component](../../../lib/core/src/lib/comments/comment-list/comment-list.component.ts "Defined in comment-list.component.ts")
Shows a list of comments.
@@ -60,6 +60,7 @@ Defines column properties for DataTable, Tasklist, Document List and other compo
| srTitle | `string` | | Title to be used for screen readers. |
| title | `string` | "" | Display title of the column, typically used for column headers. You can use the i18n resource key to get it translated automatically. |
| type | `string` | "text" | Value type for the column. Possible settings are 'text', 'image', 'date', 'fileSize', 'location', and 'json'. |
| width | `number` | | size of the column in pixels |
## Details
@@ -388,11 +388,13 @@ Learm more about styling your datatable: [Customizing the component's styles](#c
| showMainDatatableActions | `boolean` | false | Toggles the main datatable action. |
| sorting | `any[]` | \[] | Define the sort order of the datatable. Possible values are : [`created`, `desc`], [`created`, `asc`], [`due`, `desc`], [`due`, `asc`] |
| stickyHeader | `boolean` | false | Toggles the sticky header mode. |
| isResizingEnabled | `boolean` | false | Toggles column resizing feature. |
### Events
| Name | Type | Description |
| ---- | ---- | ----------- |
| columnsWidthChanged | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<`[`DataColumn`](../../../lib/core/src/lib/datatable/data/data-column.model.ts)`<>[]>` | Emitted after a column width gets changed due to resizing. |
| columnOrderChanged | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<`[`DataColumn`](../../../lib/core/src/lib/datatable/data/data-column.model.ts)`<>[]>` | Emitted after dragging and dropping column header. |
| executeRowAction | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<`[`DataRowActionEvent`](../../../lib/core/src/lib/datatable/components/data-row-action.event.ts)`>` | Emitted when the user executes a row action. |
| rowClick | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<`[`DataRowEvent`](../../../lib/core/src/lib/datatable/data/data-row-event.model.ts)`>` | Emitted when the user clicks a row. |
@@ -873,3 +875,19 @@ You can define the tooltip format for cells of type date using a configuration i
- [Pagination component](pagination.component.md)
- [Data Table Adapter interface](../interfaces/datatable-adapter.interface.md)
- [Document list component](../../content-services/components/document-list.component.md)
#### Column Resizing
It is possible to have the ability to resize columns by clicking on the right border of each column and dragging it to the left.
You can do this by setting the `isResizingEnabled` property of your datatable to `true`:
```html
<adf-datatable
[data]="data"
[isResizingEnabled]="true">
</adf-datatable>
```
Once set up, the column resizing behaves as shown in the image below:
![](../../docassets/images/datatable-column-resizing.png)
+1 -2
View File
@@ -57,6 +57,5 @@ Forms defined in APS have the following default mappings for the form fields:
| Attach File | upload | AttachWidgetComponent or [`UploadWidgetComponent`](../../../lib/process-services/src/lib/form/widgets/upload/upload.widget.ts) (based on metadata) |
| Display value | readonly | [`TextWidgetComponent`](../../../lib/core/src/lib/form/components/widgets/text/text.widget.ts) |
| Display text | readonly-text | [`DisplayTextWidgetComponent`](../../../lib/core/src/lib/form/components/widgets/display-text/display-text.widget.ts) |
| Display Rich text | display-rich-text | [`DisplayRichTextWidgetComponent`](../../../lib/core/src/lib/form/components/widgets/display-rich-text/display-rich-text.widget.ts) |
| N/A | container | [`ContainerWidgetComponent`](lib/core/src/lib/form/components/widgets/container/container.widget.ts) (layout component) |
| N/A | container | [`ContainerWidgetComponent`](lib/core/src/lib/form/components/widgets/container/container.widget.ts) (layout component) |
| N/A | N/A | [`UnknownWidgetComponent`](../../../lib/core/src/lib/form/components/widgets/unknown/unknown.widget.ts) |
@@ -1,18 +1,18 @@
---
Title: User Info component
Added: v2.0.0
Title: Identity User Info component
Added: v6.0.0
Status: Active
Last reviewed: 2018-11-19
Last reviewed: 2023-01-24
---
# [User Info component](../../../lib/core/src/lib/userinfo/components/user-info.component.ts "Defined in user-info.component.ts")
# [Identity User Info component](../../../lib/core/src/lib/identity-user-info/identity-user-info.component.ts "Defined in identityuser-info.component.ts")
Shows user information.
Shows user information for SSO mode.
## Basic usage
```html
<adf-userinfo></adf-userinfo>
<adf-identity-user-info></adf-identity-user-info>
```
## Class members
@@ -21,6 +21,8 @@ Shows user information.
| Name | Type | Default value | Description |
| ---- | ---- | ------------- | ----------- |
| isLoggedIn | `boolean` | Is user logged in |
| identityUser | `IdentityUserModel` | Identity user model. |
| bpmBackgroundImage | `string` | | Custom path for the background banner image for APS users. |
| ecmBackgroundImage | `string` | | Custom path for the background banner image for ACS users. |
| menuPositionX | [`MenuPositionX`](https://github.com/angular/components/blob/master/src/material/menu/menu-positions.ts) | "after" | Custom choice for opening the menu at the bottom. Can be `before` or `after`. |
@@ -32,5 +34,3 @@ Shows user information.
The component shows a round icon for the user and will show extra information about
the user when clicked.
If user is logged in with both ACS and APS, the ACS image will be shown.
In case of SSO authentication, the information related to the user like firstname, lastname will be fetched using the Keycloak [`Api`](../../../lib/testing/src/lib/core/structure/api.ts)
@@ -5,7 +5,7 @@ Status: Active
Last reviewed: 2019-11-06
---
# [Search Text Input Component](../../../lib/core/src/lib/search-text/search-text-input.component.ts "Defined in search-text-input.component.ts")
- # [Search Text Input Component](../../../lib/core/src/lib/search-text/search-text-input.component.ts "Defined in search-text-input.component.ts")
Displays a input text that supports autocompletion
@@ -0,0 +1,275 @@
---
Title: Viewer Render component
Added: v6.0.0
Status: Active
Last reviewed: 2022-11-25
---
# [Viewer render component](../../../lib/core/src/lib/viewer/components/viewer-render.component.ts "Defined in viewer-render.component.ts")
Displays content from an ACS repository.
See it live: [Viewer Quickstart](https://embed.plnkr.co/iTuG1lFIXfsP95l6bDW6/)
## Contents
- [Basic usage](#basic-usage)
- [Class members](#class-members)
- [Properties](#properties)
- [Events](#events)
- [Keyboard shortcuts](#keyboard-shortcuts)
- [Details](#details)
- [Custom file parameters](#custom-file-parameters)
- [Supported file formats](#supported-file-formats)
- [Configuring PDF.js library](#configuring-pdfjs-library)
- [Extending the Viewer](#extending-the-viewer)
- [Custom layout](#custom-layout)
- [See also](#see-also)
## Basic usage
Using with file url:
```html
<adf-viewer-render
[overlayMode]="true"
[urlFile]="'filename.pdf'">
</adf-viewer-render>
```
Using with file [`Blob`](https://developer.mozilla.org/en-US/docs/Web/API/Blob):
```html
<adf-viewer-render
[overlayMode]="true"
[blobFile]="myBlobVar">
</adf-viewer-render>
```
## Class members
### Properties
| Name | Type | Default value | Description |
| ---- | ---- | ------------- | ----------- |
| allowFullScreen | `boolean` | true | Toggles the 'Full Screen' feature. |
| allowThumbnails | `boolean` | true | Toggles PDF thumbnails. |
| blobFile | [`Blob`](https://developer.mozilla.org/en-US/docs/Web/API/Blob) | | Loads a [Blob](https://developer.mozilla.org/en-US/docs/Web/API/Blob) File |
| fileName | `string` | | Override Content filename. |
| isLoading | `boolean` | false | Override loading status |
| mimeType | `string` | | MIME type of the file content (when not determined by the filename extension). |
| readOnly | `boolean` | true | Enable when where is possible the editing functionalities |
| 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. |
| viewerType | `string` | "unknown" | Override Content view type. Viewer to use with the `urlFile` address (`pdf`, `image`, `media`, `text`). |
### Events
| Name | Type | Description |
| ---- | ---- | ----------- |
| close | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<boolean>` | Emitted when the img is submitted in the img viewer. |
| extensionChange | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<string>` | Emitted when the filename extension changes. |
| submitFile | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<`[`Blob`](https://developer.mozilla.org/en-US/docs/Web/API/Blob)`>` | Emitted when the img is submitted in the img viewer. |
## Keyboard shortcuts
| Name | Description |
| ---- | ----------- |
| Esc | Close the viewer (overlay mode only). |
| Left | Invoke 'Navigate before' action. |
| Right | Invoke 'Navigate next' action. |
| Ctrl+F | Activate full-screen mode. |
## Details
The component controller class implementation might look like the following:
```ts
export class OverlayViewerComponent {
@Input()
showViewer: boolean = false;
nodeId: string;
showPreview(event) {
if (event.value.entry.isFile) {
this.nodeId = event.value.entry.id;
this.showViewer = true;
}
}
}
```
### Custom file parameters
You can provide custom file parameters, for example a value for the `mimeType` or `displayName` when using URL values that have no file names or extensions:
```html
<adf-viewer-render
[displayName]="fileName"
[allowGoBack]="false"
[mimeType]="mimeType"
[urlFile]="fileUrl">
</adf-viewer-render>
```
### Supported file formats
The [Viewer render component](viewer.component.md) consists of separate Views that handle particular file types or type families based on either a file extension or a mime type:
- PDF View
- application/pdf
- \*.pdf
- Image View
- image/png
- image/jpeg
- image/gif
- image/bmp
- image/svg+xml
- \*.png
- \*.jpg
- \*.jpeg
- \*.gif
- \*.bpm
- \*.svg
- Text View
- text/plain
- text/csv
- text/xml
- text/html
- application/x-javascript
- \*.txt
- \*.xml
- \*.js
- \*.html
- \*.json
- \*.ts
- Media View
- video/mp4
- video/webm
- video/ogg
- audio/mpeg
- audio/ogg
- audio/wav
- \*.wav
- \*.mp4
- \*.mp3
- \*.webm
- \*.ogg
### Configuring PDF.js library
Configure your webpack-enabled application with the PDF.js library as follows.
1. Install pdfjs-dist
```sh
npm install pdfjs-dist
```
2. Update `vendors.ts` by appending the following code. This will enable the [Viewer render component](viewer.component.md)
and compatibility mode for all browsers. It will also configure the web worker for the PDF.js
library to render PDF files in the background:
```ts
// PDF.js
require('pdfjs-dist/web/compatibility.js');
const pdfjsLib = require('pdfjs-dist');
pdfjsLib.PDFJS.workerSrc = './pdf.worker.js';
require('pdfjs-dist/web/pdf_viewer.js');
```
3. Update the `plugins` section of the `webpack.common.js` file with the following lines:
```js
new CopyWebpackPlugin([
...
{
from: 'node_modules/pdfjs-dist/build/pdf.worker.js',
to: 'pdf.worker.js'
}
])
```
The [Viewer render component](viewer.component.md) should now be able to display PDF files.
### Extending the Viewer
#### Internal extension mechanism
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]
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">
<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-render-extension [supportedExtensions]="['txt']" #extension>
<ng-template let-urlFileContent="urlFileContent" >
<my-custom-txt-component
urlFileContent="urlFileContent">
</my-custom-txt-component>
</ng-template>
</adf-viewer-render-extension>
</adf-viewer-render>
```
### Custom layout
The [Viewer render component](viewer.component.md) lets you transclude custom content in several different places as
explained in the sections below.
#### Custom zoom scaling
You can set a default zoom scaling value for pdf viewer by adding the following code in `app.config.json`.
Note: For the pdf viewer the value has to be within the range of 25 - 1000.
"adf-viewer-render": {
"pdf-viewer-scaling": 150
}
In the same way you can set a default zoom scaling value for the image viewer by adding the following code in `app.config.json`.
"adf-viewer-render": {
"image-viewer-scaling": 150
}
By default the viewer's zoom scaling is set to 100%.
## See also
- [Alfresco Viewer component](../../content-services/components/document-list.component.md)
- [Viewer Render component](../../core/components/viewer-render.component.md)
+16 -142
View File
@@ -2,14 +2,13 @@
Title: Viewer component
Added: v2.0.0
Status: Active
Last reviewed: 2019-03-25
Last reviewed: 2023-01-30
---
# [Viewer component](../../../lib/core/src/lib/viewer/components/viewer.component.ts "Defined in viewer.component.ts")
Displays content from an ACS repository.
Displays content from blob file or url file.
See it live: [Viewer Quickstart](https://embed.plnkr.co/iTuG1lFIXfsP95l6bDW6/)
## Contents
@@ -23,22 +22,21 @@ See it live: [Viewer Quickstart](https://embed.plnkr.co/iTuG1lFIXfsP95l6bDW6/)
- [Integrating with the Document List component](#integrating-with-the-document-list-component)
- [Custom file parameters](#custom-file-parameters)
- [Supported file formats](#supported-file-formats)
- [Content Renditions](#content-renditions)
- [Configuring PDF.js library](#configuring-pdfjs-library)
- [Extending the Viewer](#extending-the-viewer)
- [Custom layout](#custom-layout)
- [Printing](#printing)
- [See also](#see-also)
## Basic usage
Using with node id:
Using with blob file:
```html
<adf-viewer
[showViewer]="true"
[overlayMode]="true"
[nodeId]="'d367023a-7ebe-4f3a-a7d0-4f27c43f1045'">
[blobFile]="blobFile"
[fileName]="'filename.pdf'">
</adf-viewer>
```
@@ -47,23 +45,10 @@ Using with file url:
```html
<adf-viewer
[overlayMode]="true"
[urlFile]="'filename.pdf'">
[urlFile]="'https://fileUrl.com/filename.pdf'">
</adf-viewer>
```
Using with shared link:
```html
<adf-viewer
[overlayMode]="true"
[sharedLinkId]="'WWDg_afiTU6lHEgr4fAbQA'">
</adf-viewer>
```
Note that if you have a URL which contains a shared link ID, you should extract the
ID portion and use it with the `sharedLinkId` property rather than using the whole
URL with `urlFile`.
### [Transclusions](../../user-guide/transclusion.md)
The [Viewer component](viewer.component.md) lets you transclude content for the toolbar (and toolbar buttons),
@@ -81,41 +66,30 @@ See the [Custom layout](#custom-layout) section for full details of all availabl
| allowGoBack | `boolean` | true | Allows `back` navigation |
| allowLeftSidebar | `boolean` | false | Allow the left the sidebar. |
| allowNavigate | `boolean` | false | Toggles before/next navigation. You can use the arrow buttons to navigate between documents in the collection. |
| allowPrint | `boolean` | false | Toggles printing. |
| allowRightSidebar | `boolean` | false | Allow the right sidebar. |
| allowThumbnails | `boolean` | true | Toggles PDF thumbnails. |
| blobFile | [`Blob`](https://developer.mozilla.org/en-US/docs/Web/API/Blob) | | Loads a [Blob](https://developer.mozilla.org/en-US/docs/Web/API/Blob) File |
| canNavigateBefore | `boolean` | true | Toggles the "before" ("&lt;") button. Requires `allowNavigate` to be enabled. |
| canNavigateNext | `boolean` | true | Toggles the next (">") button. Requires `allowNavigate` to be enabled. |
| displayName | `string` | | Specifies the name of the file when it is not available from the URL. |
| fileName | `string` | | Content filename. |
| maxRetries | `number` | 30 | Number of times the Viewer will retry fetching content Rendition. There is a delay of at least one second between attempts. |
| mimeType | `string` | | MIME type of the file content (when not determined by the filename extension). |
| nodeId | `string` | null | Node Id of the file to load. |
| overlayMode | `boolean` | false | If `true` then show the Viewer as a full page over the current content. Otherwise fit inside the parent div. |
| sharedLinkId | `string` | null | Shared link id (to display shared file). |
| showLeftSidebar | `boolean` | false | Toggles left sidebar visibility. Requires `allowLeftSidebar` to be set to `true`. |
| showRightSidebar | `boolean` | false | Toggles right sidebar visibility. Requires `allowRightSidebar` to be set to `true`. |
| showToolbar | `boolean` | true | Hide or show the toolbar |
| showViewer | `boolean` | true | Hide or show the viewer |
| sidebarLeftTemplate | [`TemplateRef`](https://angular.io/api/core/TemplateRef)`<any>` | null | The template for the left sidebar. The template context contains the loaded node data. |
| sidebarRightTemplate | [`TemplateRef`](https://angular.io/api/core/TemplateRef)`<any>` | null | The template for the right sidebar. The template context contains the loaded node data. |
| thumbnailsTemplate | [`TemplateRef`](https://angular.io/api/core/TemplateRef)`<any>` | null | The template for the pdf thumbnails. |
| sidebarLeftTemplate | [`TemplateRef`](https://angular.io/api/core/TemplateRef)`<any>` | null | The template for the left sidebar. The template context contains the loaded data. |
| sidebarRightTemplate | [`TemplateRef`](https://angular.io/api/core/TemplateRef)`<any>` | null | The template for the right sidebar. The template context contains the loaded data. |
| 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. |
| urlFileViewer | `string` | null | Viewer to use with the `urlFile` address (`pdf`, `image`, `media`, `text`). Used when `urlFile` has no filename and extension. |
| versionId | `string` | null | Version Id of the file to load. |
### Events
| Name | Type | Description |
| ---- | ---- | ----------- |
| extensionChange | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<string>` | Emitted when the filename extension changes. |
| goBack | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<`[`BaseEvent`](../../../lib/core/src/lib/events/base.event.ts)`<any>>` | Emitted when user clicks the 'Back' button. |
| invalidSharedLink | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<any>` | Emitted when the shared link used is not valid. |
| navigateBefore | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<KeyboardEvent \| MouseEvent>` | Emitted when user clicks 'Navigate Before' ("&lt;") button. |
| navigateNext | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<KeyboardEvent \| MouseEvent>` | Emitted when user clicks 'Navigate Next' (">") button. |
| print | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<`[`BaseEvent`](../../../lib/core/src/lib/events/base.event.ts)`<any>>` | Emitted when user clicks the 'Print' button. |
| showViewerChange | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<boolean>` | Emitted when the viewer is shown or hidden. |
| submitFile | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<`[`Blob`](https://developer.mozilla.org/en-US/docs/Web/API/Blob)`>` | Emitted when the img is submitted in the img viewer. |
## Keyboard shortcuts
@@ -128,50 +102,13 @@ See the [Custom layout](#custom-layout) section for full details of all availabl
## Details
### Integrating with the Document List component
Below is the most simple integration of the Viewer and
[Document List](../../content-services/components/document-list.component.md) components within your custom component:
```html
<adf-document-list
currentFolderId="-my-"
(preview)="showPreview($event)">
</adf-document-list>
<adf-viewer
[(showViewer)]="showViewer"
[overlayMode]="true"
[nodeId]="nodeId">
</adf-viewer>
```
The component controller class implementation might look like the following:
```ts
export class OverlayViewerComponent {
@Input()
showViewer: boolean = false;
nodeId: string;
showPreview(event) {
if (event.value.entry.isFile) {
this.nodeId = event.value.entry.id;
this.showViewer = true;
}
}
}
```
### Custom file parameters
You can provide custom file parameters, for example a value for the `mimeType` or `displayName` when using URL values that have no file names or extensions:
You can provide custom file parameters, for example a value for the `mimeType` or `fileName` when using URL values that have no file names or extensions:
```html
<adf-viewer
[displayName]="fileName"
[fileName]="fileName"
[allowGoBack]="false"
[mimeType]="mimeType"
[urlFile]="fileUrl">
@@ -222,12 +159,6 @@ The [Viewer component](viewer.component.md) consists of separate Views that hand
- \*.webm
- \*.ogg
### Content Renditions
For those extensions and mime types that cannot be natively displayed in the browser, the Viewer will try to fetch the corresponding rendition using the [renditions service api](../services/renditions.service.md).
For the full list of supported types please refer to: [File types that support preview and thumbnail generation](http://docs.alfresco.com/5.2/references/valid-transformations-preview.html).
### Configuring PDF.js library
Configure your webpack-enabled application with the PDF.js library as follows.
@@ -277,7 +208,7 @@ the [Viewer component](viewer.component.md). Below is an example that shows how
to handle 3D data files:
```html
<adf-viewer [nodeId]="nodeId">
<adf-viewer [urlFile]="urlFile">
<adf-viewer-extension [supportedExtensions]="['obj','3ds']" #extension>
<ng-template let-urlFileContent="urlFileContent" let-extension="extension">
@@ -296,7 +227,7 @@ Note: you need to add the `ng2-3d-editor` dependency to your `package.json` file
You can define multiple `adf-viewer-extension` templates if required:
```html
<adf-viewer [nodeId]="nodeId">
<adf-viewer [urlFile]="urlFile">
<adf-viewer-extension [supportedExtensions]="['xls','xlsx']" #extension>
<ng-template let-urlFileContent="urlFileContent">
@@ -377,55 +308,13 @@ transclusion, which will display all content placed inside the `<adf-viewer-side
</adf-viewer>
```
The second way to customize the sidebar is to use template injection but note that this only works
when using the viewer with `nodeId`.
```html
<ng-template let-node="node" #sidebarTemplate>
<adf-content-metadata-card [node]="node"></adf-content-metadata-card>
</ng-template>
<adf-viewer [allowRightSidebar]="true" [sidebarRightTemplate]="sidebarTemplate"></adf-viewer>
```
#### Custom thumbnails
The PDF viewer comes with its own default list of thumbnails but you can replace this
by providing a custom template and binding to the context property `viewer` to access the PDFJS.PDFViewer
instance.
![PDF thumbnails](../../docassets/images/pdf-thumbnails.png)
Provide the custom template as in the following example:
```javascript
import { Component, Input } from '@angular/core';
@Component({
selector: 'custom-thumbnails',
template: '<p> Custom Thumbnails Component </p>'
})
export class CustomThumbnailsComponent {
@Input() pdfViewer: any;
...
}
```
```html
<ng-template #customThumbnailsTemplate let-pdfViewer="viewer">
<custom-thumbnails [pdfViewer]="pdfViewer"></custom-thumbnails>
</ng-template>
<adf-viewer [thumbnailsTemplate]="customThumbnailsTemplate"></adf-viewer>
```
#### Custom "Open With" menu
You can enable a custom "Open With" menu by providing at least one action inside the
`adf-viewer-open-with` tag:
```html
<adf-viewer [nodeId]="nodeId">
<adf-viewer [urlFile]="urlFile">
<adf-viewer-open-with>
<button mat-menu-item>
@@ -452,7 +341,7 @@ You can enable a custom "Open With" menu by providing at least one action inside
You can enable a custom "More actions" menu by providing at least one action inside the `adf-viewer-more-actions` tag:
```html
<adf-viewer [nodeId]="nodeId">
<adf-viewer [urlFile]="urlFile">
<adf-viewer-more-actions>
<button mat-menu-item>
@@ -491,21 +380,6 @@ In the same way you can set a default zoom scaling value for the image viewer by
By default the viewer's zoom scaling is set to 100%.
### Printing
You can configure the Viewer to let the user print the displayed content. The
component will show a "Print" button if the `allowPrint` property is set to
true.
```html
<adf-viewer [allowPrint]="true">
...
</adf-viewer>
```
You can also use the `print` event to get notification when the user prints some
content.
## See also
- [Document List component](../../content-services/components/document-list.component.md)
@@ -51,7 +51,7 @@ Picard's birthday (47457.1):
1. Define the model for the custom type.
Your model must extend the [`CardViewBaseItemModel`](../../../lib/core/src/lib/card-view/models/card-view-baseitem.model.ts) class and implement the [`CardViewItem`](../../../lib/core/src/lib/card-view/interfaces/card-view-item.interface.ts)
and [`DynamicComponentModel`](../../../lib/core/src/lib/services/dynamic-component-mapper.service.ts) interfaces. See the
and [`DynamicComponentModel`](lib/core/src/lib/common/services/dynamic-component-mapper.service.ts) interfaces. See the
[Card View Text Item model source](https://github.com/Alfresco/alfresco-ng2-components/blob/develop/lib/core/card-view/components/card-view-textitem/card-view-textitem.component.ts)
for an example of how to do this.
@@ -4,7 +4,7 @@ Added: v2.1.0
Status: Active
---
# [Search Configuration interface](lib/core/src/lib/search-text/interfaces/search-configuration.interface.ts "Defined in search-configuration.interface.ts")
# [Search Configuration interface](../../../lib/core/src/lib/common/interface/search-configuration.interface.ts "Defined in search-configuration.interface.ts")
Provides fine control of parameters to a search.
@@ -13,31 +13,31 @@ Maps type names to field component types for the [Card View component](../compon
### Methods
- **getComponentTypeResolver**(type: `string`, defaultValue: `Type<any>` = `this.defaultValue`): [`DynamicComponentResolveFunction`](../../../lib/core/src/lib/services/dynamic-component-mapper.service.ts)<br/>
Gets the currently active [DynamicComponentResolveFunction](../../../lib/core/src/lib/services/dynamic-component-mapper.service.ts) for a field type.
- **getComponentTypeResolver**(type: `string`, defaultValue: `Type<any>` = `this.defaultValue`): [`DynamicComponentResolveFunction`](lib/core/src/lib/common/services/dynamic-component-mapper.service.ts)<br/>
Gets the currently active [DynamicComponentResolveFunction](lib/core/src/lib/common/services/dynamic-component-mapper.service.ts) for a field type.
- _type:_ `string` - The type whose resolver you want
- _defaultValue:_ `Type<any>` - Default type returned for types that are not yet mapped
- **Returns** [`DynamicComponentResolveFunction`](../../../lib/core/src/lib/services/dynamic-component-mapper.service.ts) - Resolver function
- **Returns** [`DynamicComponentResolveFunction`](lib/core/src/lib/common/services/dynamic-component-mapper.service.ts) - Resolver function
- **register**(components: `Function`, override: `boolean` = `false`)<br/>
Register multiple components
- _components:_ `Function` -
- _override:_ `boolean` -
- **resolveComponentType**(model: [`DynamicComponentModel`](../../../lib/core/src/lib/services/dynamic-component-mapper.service.ts), defaultValue: `Type<any>` = `this.defaultValue`): `Type<any>`<br/>
- **resolveComponentType**(model: [`DynamicComponentModel`](lib/core/src/lib/common/services/dynamic-component-mapper.service.ts), defaultValue: `Type<any>` = `this.defaultValue`): `Type<any>`<br/>
Finds the component type that is needed to render a form field.
- _model:_ [`DynamicComponentModel`](../../../lib/core/src/lib/services/dynamic-component-mapper.service.ts) - [Form](../../../lib/process-services/src/lib/task-list/models/form.model.ts) field model for the field to render
- _model:_ [`DynamicComponentModel`](lib/core/src/lib/common/services/dynamic-component-mapper.service.ts) - [Form](../../../lib/process-services/src/lib/task-list/models/form.model.ts) field model for the field to render
- _defaultValue:_ `Type<any>` - Default type returned for field types that are not yet mapped.
- **Returns** `Type<any>` - Component type
- **setComponentTypeResolver**(type: `string`, resolver: [`DynamicComponentResolveFunction`](../../../lib/core/src/lib/services/dynamic-component-mapper.service.ts), override: `boolean` = `true`)<br/>
Sets or optionally replaces a [DynamicComponentResolveFunction](../../../lib/core/src/lib/services/dynamic-component-mapper.service.ts) for a field type.
- **setComponentTypeResolver**(type: `string`, resolver: [`DynamicComponentResolveFunction`](lib/core/src/lib/common/services/dynamic-component-mapper.service.ts), override: `boolean` = `true`)<br/>
Sets or optionally replaces a [DynamicComponentResolveFunction](lib/core/src/lib/common/services/dynamic-component-mapper.service.ts) for a field type.
- _type:_ `string` - The type whose resolver you want to set
- _resolver:_ [`DynamicComponentResolveFunction`](../../../lib/core/src/lib/services/dynamic-component-mapper.service.ts) - The new resolver function
- _resolver:_ [`DynamicComponentResolveFunction`](lib/core/src/lib/common/services/dynamic-component-mapper.service.ts) - The new resolver function
- _override:_ `boolean` - The new resolver will only replace an existing one if this parameter is true
## Details
The [Card View component](../components/card-view.component.md) uses this service to find the component
type that is required to display a particular field type (text, date, etc). The service
maps a type name string to a corresponding [`DynamicComponentResolveFunction`](../../../lib/core/src/lib/services/dynamic-component-mapper.service.ts) that takes a
maps a type name string to a corresponding [`DynamicComponentResolveFunction`](lib/core/src/lib/common/services/dynamic-component-mapper.service.ts) that takes a
model object as a parameter and returns the component type needed to display that model.
The default mapping is shown below:
+10 -10
View File
@@ -13,24 +13,24 @@ Maps a form field type string onto the corresponding form [widget component](../
### Methods
- **getComponentTypeResolver**(type: `string`, defaultValue: `Type<any>` = `this.defaultValue`): [`DynamicComponentResolveFunction`](../../../lib/core/src/lib/services/dynamic-component-mapper.service.ts)<br/>
Gets the currently active [DynamicComponentResolveFunction](../../../lib/core/src/lib/services/dynamic-component-mapper.service.ts) for a field type.
- **getComponentTypeResolver**(type: `string`, defaultValue: `Type<any>` = `this.defaultValue`): [`DynamicComponentResolveFunction`](lib/core/src/lib/common/services/dynamic-component-mapper.service.ts)<br/>
Gets the currently active [DynamicComponentResolveFunction](lib/core/src/lib/common/services/dynamic-component-mapper.service.ts) for a field type.
- _type:_ `string` - The type whose resolver you want
- _defaultValue:_ `Type<any>` - Default type returned for types that are not yet mapped
- **Returns** [`DynamicComponentResolveFunction`](../../../lib/core/src/lib/services/dynamic-component-mapper.service.ts) - Resolver function
- **Returns** [`DynamicComponentResolveFunction`](lib/core/src/lib/common/services/dynamic-component-mapper.service.ts) - Resolver function
- **register**(components: `Function`, override: `boolean` = `false`)<br/>
Register multiple components
- _components:_ `Function` -
- _override:_ `boolean` -
- **resolveComponentType**(model: [`DynamicComponentModel`](../../../lib/core/src/lib/services/dynamic-component-mapper.service.ts), defaultValue: `Type<any>` = `this.defaultValue`): `Type<any>`<br/>
- **resolveComponentType**(model: [`DynamicComponentModel`](lib/core/src/lib/common/services/dynamic-component-mapper.service.ts), defaultValue: `Type<any>` = `this.defaultValue`): `Type<any>`<br/>
Finds the component type that is needed to render a form field.
- _model:_ [`DynamicComponentModel`](../../../lib/core/src/lib/services/dynamic-component-mapper.service.ts) - [Form](../../../lib/process-services/src/lib/task-list/models/form.model.ts) field model for the field to render
- _model:_ [`DynamicComponentModel`](lib/core/src/lib/common/services/dynamic-component-mapper.service.ts) - [Form](../../../lib/process-services/src/lib/task-list/models/form.model.ts) field model for the field to render
- _defaultValue:_ `Type<any>` - Default type returned for field types that are not yet mapped.
- **Returns** `Type<any>` - Component type
- **setComponentTypeResolver**(type: `string`, resolver: [`DynamicComponentResolveFunction`](../../../lib/core/src/lib/services/dynamic-component-mapper.service.ts), override: `boolean` = `true`)<br/>
Sets or optionally replaces a [DynamicComponentResolveFunction](../../../lib/core/src/lib/services/dynamic-component-mapper.service.ts) for a field type.
- **setComponentTypeResolver**(type: `string`, resolver: [`DynamicComponentResolveFunction`](lib/core/src/lib/common/services/dynamic-component-mapper.service.ts), override: `boolean` = `true`)<br/>
Sets or optionally replaces a [DynamicComponentResolveFunction](lib/core/src/lib/common/services/dynamic-component-mapper.service.ts) for a field type.
- _type:_ `string` - The type whose resolver you want to set
- _resolver:_ [`DynamicComponentResolveFunction`](../../../lib/core/src/lib/services/dynamic-component-mapper.service.ts) - The new resolver function
- _resolver:_ [`DynamicComponentResolveFunction`](lib/core/src/lib/common/services/dynamic-component-mapper.service.ts) - The new resolver function
- _override:_ `boolean` - The new resolver will only replace an existing one if this parameter is true
## Details
@@ -38,7 +38,7 @@ Maps a form field type string onto the corresponding form [widget component](../
The [`Form`](../../../lib/process-services/src/lib/task-list/models/form.model.ts) Field component uses this service to choose which [widget](../../../lib/testing/src/lib/core/pages/form/widgets/widget.ts) to use to render an instance of a
form field. The [`Form`](../../../lib/process-services/src/lib/task-list/models/form.model.ts) Field model stores the field type name as a string (see the table below).
The [`Form`](../../../lib/process-services/src/lib/task-list/models/form.model.ts) Rendering service maintains a mapping between each type name and
a corresponding [`DynamicComponentResolveFunction`](../../../lib/core/src/lib/services/dynamic-component-mapper.service.ts). The function takes a [`FormFieldModel`](../../core/models/form-field.model.md) object as its argument and
a corresponding [`DynamicComponentResolveFunction`](lib/core/src/lib/common/services/dynamic-component-mapper.service.ts). The function takes a [`FormFieldModel`](../../core/models/form-field.model.md) object as its argument and
uses the data from the object to determine which [widget](../../../lib/testing/src/lib/core/pages/form/widgets/widget.ts) should be used to render the field.
In some cases, the field type string alone is enough to determine the [widget](../../../lib/testing/src/lib/core/pages/form/widgets/widget.ts) type and so the function
@@ -73,7 +73,7 @@ The [`Form`](../../../lib/process-services/src/lib/task-list/models/form.model.t
| Checkbox | "boolean" | [`CheckboxWidgetComponent`](../../../lib/core/src/lib/form/components/widgets/checkbox/checkbox.widget.ts) |
| Date | "date" | [`DateWidgetComponent`](../../../lib/core/src/lib/form/components/widgets/date/date.widget.ts) |
| Display text | "readonly-text" | [`DisplayTextWidgetComponentComponent`](../../../lib/core/form/components/widgets/display-text/display-text.widget.ts) |
| Display Rich text | "display-rich-text" | [`DisplayRichTextWidgetComponent`](../../../lib/core/src/lib/form/components/widgets/display-rich-text/display-rich-text.widget.ts) |
| Display Rich text | "display-rich-text" | [`DisplayRichTextWidgetComponent`](lib/process-services-cloud/src/lib/form/components/widgets/display-rich-text/display-rich-text.widget.ts) |
| Display value | "readonly" | DisplayValueWidgetComponent |
| Dropdown | "dropdown" | [`DropdownWidgetComponent`](../../../lib/process-services/src/lib/form/widgets/dropdown/dropdown.widget.ts) |
| Dynamic table | "dynamic-table" | [`DynamicTableWidgetComponent`](../../../lib/process-services/src/lib/form/widgets/dynamic-table/dynamic-table.widget.ts) |
@@ -5,7 +5,7 @@ Status: Active
Last reviewed: 2018-11-13
---
# [Highlight Transform service](../../../lib/core/src/lib/services/highlight-transform.service.ts "Defined in highlight-transform.service.ts")
# [Highlight Transform service](lib/core/src/lib/common/services/highlight-transform.service.ts "Defined in highlight-transform.service.ts")
Adds HTML to a string to highlight chosen sections.
@@ -13,12 +13,12 @@ Adds HTML to a string to highlight chosen sections.
### Methods
- **highlight**(text: `string`, search: `string`, wrapperClass: `string` = `"adf-highlight"`): [`HighlightTransformResult`](../../../lib/core/src/lib/services/highlight-transform.service.ts)<br/>
- **highlight**(text: `string`, search: `string`, wrapperClass: `string` = `"adf-highlight"`): [`HighlightTransformResult`](lib/core/src/lib/common/services/highlight-transform.service.ts)<br/>
Searches for `search` string(s) within `text` and highlights all occurrences.
- _text:_ `string` - Text to search within
- _search:_ `string` - Text pattern to search for
- _wrapperClass:_ `string` - CSS class used to provide highlighting style
- **Returns** [`HighlightTransformResult`](../../../lib/core/src/lib/services/highlight-transform.service.ts) - New text along with boolean value to indicate whether anything was highlighted
- **Returns** [`HighlightTransformResult`](lib/core/src/lib/common/services/highlight-transform.service.ts) - New text along with boolean value to indicate whether anything was highlighted
## Details
@@ -33,7 +33,7 @@ highlight any of those words individually. The &lt;span> element includes a
`class` attribute which defaults to "highlight" but you can pass any class name
you like using the `wrapperClass` parameter.
The resulting text with HTML highlighting is returned within a [`HighlightTransformResult`](../../../lib/core/src/lib/services/highlight-transform.service.ts)
The resulting text with HTML highlighting is returned within a [`HighlightTransformResult`](lib/core/src/lib/common/services/highlight-transform.service.ts)
object:
```ts
+1 -1
View File
@@ -5,7 +5,7 @@ Status: Active
Last reviewed: 2018-11-19
---
# [Page Title service](../../../lib/core/src/lib/services/page-title.service.ts "Defined in page-title.service.ts")
# [Page Title service](lib/core/src/lib/common/services/page-title.service.ts "Defined in page-title.service.ts")
Sets the page title.
+2 -1
View File
@@ -18,7 +18,8 @@ Accesses the Content Services Search API.
- _term:_ `string` - Term to search for
- _options:_ [`SearchOptions`](lib/content-services/src/lib/search/services/search.service.ts) - (Optional) Options for delivery of the search results
- **Returns** [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`NodePaging`](https://github.com/Alfresco/alfresco-js-api/blob/develop/src/api/content-rest-api/docs/NodePaging.md)`>` - List of nodes resulting from the search
- **search**(searchTerm: `string`, maxResults: `number`, skipCount: `number`): [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`ResultSetPaging`](https://github.com/Alfresco/alfresco-js-api/blob/develop/src/api/search-rest-api/docs/ResultSetPaging.md)`>`<br/>
- **search**(searchTerm: `string`, maxResults: `number`, skipCount: `number`): [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`ResultSetPaging`]
- `>`<br/>
Performs a search.
- _searchTerm:_ `string` - Term to search for
- _maxResults:_ `number` - Maximum number of items in the list of results
+1 -1
View File
@@ -5,7 +5,7 @@ Status: Active
Last reviewed: 2019-03-20
---
# [Thumbnail service](../../../lib/core/src/lib/services/thumbnail.service.ts "Defined in thumbnail.service.ts")
# [Thumbnail service](lib/core/src/lib/common/services/thumbnail.service.ts "Defined in thumbnail.service.ts")
Retrieves an SVG thumbnail image to represent a document type.
+1 -1
View File
@@ -5,7 +5,7 @@ Status: Active
Last reviewed: 2019-02-08
---
# [Translation service](../../../lib/core/src/lib/services/translation.service.ts "Defined in translation.service.ts")
# [Translation service](lib/core/src/lib/translation/translation.service.ts "Defined in translation.service.ts")
Supports localisation.
Binary file not shown.

After

Width:  |  Height:  |  Size: 129 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 115 KiB

@@ -20,7 +20,6 @@ an example of a real working viewer extension project.
| ---- | ---- | ------------- | ----------- |
| extension | `string` | | File extension (.jpg, .png, etc) for the viewer. |
| id | `string` | | ID string of the component to preview. |
| node | `Node` | | Node containing the content to display. |
| url | `string` | | URL of the content in the repository. |
## Details
+2
View File
@@ -33,3 +33,5 @@ The pages linked below contain the licenses for all third party dependencies of
- [ADF 5.0.0](license-info-5.0.0.md)
- [ADF 5.1.0](license-info-5.1.0.md)
- [ADF 6.0.0-A.1](license-info-6.0.0-A.1.md)
- [ADF 6.0.0-A.2](license-info-6.0.0-A.2.md)
- [ADF 6.0.0-A.3](license-info-6.0.0-A.3.md)
File diff suppressed because it is too large Load Diff
+392
View File
@@ -0,0 +1,392 @@
---
Title: License info, alfresco-ng2-components 6.0.0-A.3
---
# License information for alfresco-ng2-components 6.0.0-A.3
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) | 5.4.0-657 | [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/flex-layout](https://github.com/angular/flex-layout) | 14.0.0-beta.40 | [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-moment-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.7.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@babel/code-frame](https://github.com/babel/babel) | 7.18.6 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@babel/compat-data](https://github.com/babel/babel) | 7.18.8 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@babel/core](https://github.com/babel/babel) | 7.12.9 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@babel/core](https://github.com/babel/babel) | 7.16.12 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@babel/generator](https://github.com/babel/babel) | 7.16.8 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@babel/generator](https://github.com/babel/babel) | 7.18.9 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@babel/helper-annotate-as-pure](https://github.com/babel/babel) | 7.18.6 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@babel/helper-builder-binary-assignment-operator-visitor](https://github.com/babel/babel) | 7.18.9 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@babel/helper-compilation-targets](https://github.com/babel/babel) | 7.18.9 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@babel/helper-create-class-features-plugin](https://github.com/babel/babel) | 7.18.9 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@babel/helper-create-regexp-features-plugin](https://github.com/babel/babel) | 7.18.6 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@babel/helper-define-polyfill-provider](https://github.com/babel/babel-polyfills) | 0.1.5 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@babel/helper-environment-visitor](https://github.com/babel/babel) | 7.18.9 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@babel/helper-explode-assignable-expression](https://github.com/babel/babel) | 7.18.6 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@babel/helper-function-name](https://github.com/babel/babel) | 7.18.9 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@babel/helper-hoist-variables](https://github.com/babel/babel) | 7.18.6 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@babel/helper-member-expression-to-functions](https://github.com/babel/babel) | 7.18.9 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@babel/helper-module-imports](https://github.com/babel/babel) | 7.18.6 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@babel/helper-module-transforms](https://github.com/babel/babel) | 7.18.9 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@babel/helper-optimise-call-expression](https://github.com/babel/babel) | 7.18.6 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@babel/helper-plugin-utils](https://github.com/babel/babel) | 7.18.9 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@babel/helper-remap-async-to-generator](https://github.com/babel/babel) | 7.18.9 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@babel/helper-replace-supers](https://github.com/babel/babel) | 7.18.9 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@babel/helper-simple-access](https://github.com/babel/babel) | 7.18.6 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@babel/helper-skip-transparent-expression-wrappers](https://github.com/babel/babel) | 7.18.9 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@babel/helper-split-export-declaration](https://github.com/babel/babel) | 7.18.6 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@babel/helper-string-parser](https://github.com/babel/babel) | 7.18.10 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@babel/helper-validator-identifier](https://github.com/babel/babel) | 7.18.6 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@babel/helper-validator-option](https://github.com/babel/babel) | 7.18.6 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@babel/helper-wrap-function](https://github.com/babel/babel) | 7.18.9 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@babel/helpers](https://github.com/babel/babel) | 7.18.9 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@babel/highlight](https://github.com/babel/babel) | 7.18.6 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@babel/parser](https://github.com/babel/babel) | 7.18.9 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression](https://github.com/babel/babel) | 7.18.6 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining](https://github.com/babel/babel) | 7.18.9 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@babel/plugin-proposal-async-generator-functions](https://github.com/babel/babel) | 7.16.8 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@babel/plugin-proposal-class-properties](https://github.com/babel/babel) | 7.18.6 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@babel/plugin-proposal-class-static-block](https://github.com/babel/babel) | 7.18.6 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@babel/plugin-proposal-decorators](https://github.com/babel/babel) | 7.18.9 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@babel/plugin-proposal-dynamic-import](https://github.com/babel/babel) | 7.18.6 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@babel/plugin-proposal-export-default-from](https://github.com/babel/babel) | 7.18.9 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@babel/plugin-proposal-export-namespace-from](https://github.com/babel/babel) | 7.18.9 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@babel/plugin-proposal-json-strings](https://github.com/babel/babel) | 7.18.6 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@babel/plugin-proposal-logical-assignment-operators](https://github.com/babel/babel) | 7.18.9 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@babel/plugin-proposal-nullish-coalescing-operator](https://github.com/babel/babel) | 7.18.6 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@babel/plugin-proposal-numeric-separator](https://github.com/babel/babel) | 7.18.6 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@babel/plugin-proposal-object-rest-spread](https://github.com/babel/babel) | 7.18.9 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@babel/plugin-proposal-optional-catch-binding](https://github.com/babel/babel) | 7.18.6 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@babel/plugin-proposal-optional-chaining](https://github.com/babel/babel) | 7.18.9 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@babel/plugin-proposal-private-methods](https://github.com/babel/babel) | 7.18.6 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@babel/plugin-proposal-private-property-in-object](https://github.com/babel/babel) | 7.18.6 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@babel/plugin-proposal-unicode-property-regex](https://github.com/babel/babel) | 7.18.6 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@babel/plugin-syntax-async-generators](https://github.com/babel/babel/tree/master/packages/babel-plugin-syntax-async-generators) | 7.8.4 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@babel/plugin-syntax-class-properties](https://github.com/babel/babel) | 7.12.13 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@babel/plugin-syntax-class-static-block](https://github.com/babel/babel) | 7.14.5 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@babel/plugin-syntax-decorators](https://github.com/babel/babel) | 7.18.6 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@babel/plugin-syntax-dynamic-import](https://github.com/babel/babel/tree/master/packages/babel-plugin-syntax-dynamic-import) | 7.8.3 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@babel/plugin-syntax-export-default-from](https://github.com/babel/babel) | 7.18.6 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@babel/plugin-syntax-export-namespace-from](https://github.com/babel/babel/tree/master/packages/babel-plugin-syntax-export-namespace-from) | 7.8.3 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@babel/plugin-syntax-json-strings](https://github.com/babel/babel/tree/master/packages/babel-plugin-syntax-json-strings) | 7.8.3 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@babel/plugin-syntax-jsx](https://github.com/babel/babel) | 7.12.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@babel/plugin-syntax-jsx](https://github.com/babel/babel) | 7.18.6 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@babel/plugin-syntax-logical-assignment-operators](https://github.com/babel/babel) | 7.10.4 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@babel/plugin-syntax-nullish-coalescing-operator](https://github.com/babel/babel/tree/master/packages/babel-plugin-syntax-nullish-coalescing-operator) | 7.8.3 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@babel/plugin-syntax-numeric-separator](https://github.com/babel/babel) | 7.10.4 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@babel/plugin-syntax-object-rest-spread](https://github.com/babel/babel/tree/master/packages/babel-plugin-syntax-object-rest-spread) | 7.8.3 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@babel/plugin-syntax-optional-catch-binding](https://github.com/babel/babel/tree/master/packages/babel-plugin-syntax-optional-catch-binding) | 7.8.3 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@babel/plugin-syntax-optional-chaining](https://github.com/babel/babel/tree/master/packages/babel-plugin-syntax-optional-chaining) | 7.8.3 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@babel/plugin-syntax-private-property-in-object](https://github.com/babel/babel) | 7.14.5 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@babel/plugin-syntax-top-level-await](https://github.com/babel/babel) | 7.14.5 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@babel/plugin-syntax-typescript](https://github.com/babel/babel) | 7.18.6 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@babel/plugin-transform-arrow-functions](https://github.com/babel/babel) | 7.18.6 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@babel/plugin-transform-async-to-generator](https://github.com/babel/babel) | 7.16.8 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@babel/plugin-transform-block-scoped-functions](https://github.com/babel/babel) | 7.18.6 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@babel/plugin-transform-block-scoping](https://github.com/babel/babel) | 7.18.9 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@babel/plugin-transform-classes](https://github.com/babel/babel) | 7.18.9 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@babel/plugin-transform-computed-properties](https://github.com/babel/babel) | 7.18.9 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@babel/plugin-transform-destructuring](https://github.com/babel/babel) | 7.18.9 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@babel/plugin-transform-dotall-regex](https://github.com/babel/babel) | 7.18.6 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@babel/plugin-transform-duplicate-keys](https://github.com/babel/babel) | 7.18.9 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@babel/plugin-transform-exponentiation-operator](https://github.com/babel/babel) | 7.18.6 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@babel/plugin-transform-for-of](https://github.com/babel/babel) | 7.18.8 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@babel/plugin-transform-function-name](https://github.com/babel/babel) | 7.18.9 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@babel/plugin-transform-literals](https://github.com/babel/babel) | 7.18.9 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@babel/plugin-transform-member-expression-literals](https://github.com/babel/babel) | 7.18.6 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@babel/plugin-transform-modules-amd](https://github.com/babel/babel) | 7.18.6 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@babel/plugin-transform-modules-commonjs](https://github.com/babel/babel) | 7.18.6 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@babel/plugin-transform-modules-systemjs](https://github.com/babel/babel) | 7.18.9 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@babel/plugin-transform-modules-umd](https://github.com/babel/babel) | 7.18.6 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@babel/plugin-transform-named-capturing-groups-regex](https://github.com/babel/babel) | 7.18.6 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@babel/plugin-transform-new-target](https://github.com/babel/babel) | 7.18.6 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@babel/plugin-transform-object-super](https://github.com/babel/babel) | 7.18.6 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@babel/plugin-transform-parameters](https://github.com/babel/babel) | 7.18.8 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@babel/plugin-transform-property-literals](https://github.com/babel/babel) | 7.18.6 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@babel/plugin-transform-react-display-name](https://github.com/babel/babel) | 7.18.6 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@babel/plugin-transform-react-jsx-development](https://github.com/babel/babel) | 7.18.6 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@babel/plugin-transform-react-jsx](https://github.com/babel/babel) | 7.18.6 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@babel/plugin-transform-react-pure-annotations](https://github.com/babel/babel) | 7.18.6 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@babel/plugin-transform-regenerator](https://github.com/babel/babel) | 7.18.6 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@babel/plugin-transform-reserved-words](https://github.com/babel/babel) | 7.18.6 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@babel/plugin-transform-shorthand-properties](https://github.com/babel/babel) | 7.18.6 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@babel/plugin-transform-spread](https://github.com/babel/babel) | 7.18.9 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@babel/plugin-transform-sticky-regex](https://github.com/babel/babel) | 7.18.6 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@babel/plugin-transform-template-literals](https://github.com/babel/babel) | 7.18.9 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@babel/plugin-transform-typeof-symbol](https://github.com/babel/babel) | 7.18.9 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@babel/plugin-transform-typescript](https://github.com/babel/babel) | 7.18.8 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@babel/plugin-transform-unicode-escapes](https://github.com/babel/babel) | 7.18.6 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@babel/plugin-transform-unicode-regex](https://github.com/babel/babel) | 7.18.6 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@babel/preset-env](https://github.com/babel/babel) | 7.16.11 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@babel/preset-modules](https://github.com/babel/preset-modules) | 0.1.5 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@babel/preset-react](https://github.com/babel/babel) | 7.18.6 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@babel/preset-typescript](https://github.com/babel/babel) | 7.18.6 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@babel/register](https://github.com/babel/babel) | 7.18.9 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@babel/runtime](https://github.com/babel/babel) | 7.16.7 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@babel/template](https://github.com/babel/babel) | 7.16.7 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@babel/template](https://github.com/babel/babel) | 7.18.6 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@babel/traverse](https://github.com/babel/babel) | 7.18.9 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@babel/types](https://github.com/babel/babel) | 7.18.10 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@babel/types](https://github.com/babel/babel) | 7.18.9 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@codexteam/icons](https://github.com/codex-team/icon-pack) | 0.0.4 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@codexteam/icons](https://github.com/codex-team/icon-pack) | 0.0.5 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@codexteam/icons](https://github.com/codex-team/icon-pack) | 0.0.6 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@codexteam/icons](https://github.com/codex-team/icon-pack) | 0.1.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@discoveryjs/json-ext](https://github.com/discoveryjs/json-ext) | 0.5.6 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@editorjs/editorjs](https://github.com/codex-team/editor.js) | 2.26.5 | [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0) |
| [@editorjs/header](https://github.com/editor-js/header) | 2.7.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@editorjs/list](https://github.com/editor-js/list) | 1.8.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@editorjs/underline](https://github.com/editor-js/underline) | 1.1.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@emotion/cache](https://github.com/emotion-js/emotion/tree/master/packages/cache) | 10.0.29 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@emotion/core](https://github.com/emotion-js/emotion/tree/master/packages/core) | 10.3.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@emotion/css](https://github.com/emotion-js/emotion/tree/master/packages/css) | 10.0.27 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@emotion/hash](https://github.com/emotion-js/emotion/tree/master/packages/hash) | 0.8.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@emotion/is-prop-valid](https://github.com/emotion-js/emotion/tree/master/packages/is-prop-valid) | 0.8.8 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@emotion/memoize](https://github.com/emotion-js/emotion/tree/master/packages/memoize) | 0.7.4 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@emotion/serialize](https://github.com/emotion-js/emotion/tree/master/packages/serialize) | 0.11.16 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@emotion/sheet](https://github.com/emotion-js/emotion/tree/master/packages/sheet) | 0.9.4 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@emotion/styled-base](https://github.com/emotion-js/emotion/tree/master/packages/styled-base) | 10.3.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@emotion/styled](https://github.com/emotion-js/emotion/tree/master/packages/styled) | 10.3.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@emotion/stylis](https://github.com/emotion-js/emotion/tree/master/packages/stylis) | 0.8.5 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@emotion/unitless](https://github.com/emotion-js/emotion/tree/master/packages/unitless) | 0.7.5 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@emotion/utils](https://github.com/emotion-js/emotion/tree/master/packages/serialize) | 0.11.3 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@emotion/weak-memoize](https://github.com/emotion-js/emotion/tree/master/packages/weak-memoize) | 0.2.5 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@gar/promisify](https://github.com/wraithgar/gar-promisify) | 1.1.3 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@graphql-typed-document-node/core](https://github.com/dotansimha/graphql-typed-document-node) | 3.1.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@jridgewell/gen-mapping](https://github.com/jridgewell/gen-mapping) | 0.3.2 | [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/source-map](https://github.com/jridgewell/source-map) | 0.3.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@jridgewell/sourcemap-codec](https://github.com/jridgewell/sourcemap-codec) | 1.4.14 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@jridgewell/trace-mapping](https://github.com/jridgewell/trace-mapping) | 0.3.14 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@mat-datetimepicker/core](https://github.com/kuhnroyal/mat-datetimepicker) | 9.0.68 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@mat-datetimepicker/moment](https://github.com/kuhnroyal/mat-datetimepicker) | 9.0.68 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@mdx-js/mdx](https://github.com/mdx-js/mdx) | 1.6.22 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@mdx-js/util](https://github.com/mdx-js/mdx) | 1.6.22 | [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) |
| @npmcli/fs | 1.1.1 | [ISC](https://www.isc.org/downloads/software-support-policy/isc-license/) |
| [@npmcli/move-file](https://github.com/npm/move-file) | 1.1.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@popperjs/core](https://github.com/popperjs/popper-core) | 2.11.5 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@storybook/addons](https://github.com/storybookjs/storybook) | 6.4.22 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@storybook/addons](https://github.com/storybookjs/storybook) | 6.5.10 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@storybook/api](https://github.com/storybookjs/storybook) | 6.4.22 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@storybook/api](https://github.com/storybookjs/storybook) | 6.5.10 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@storybook/builder-webpack4](https://github.com/storybookjs/storybook) | 6.4.22 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@storybook/builder-webpack5](https://github.com/storybookjs/storybook) | 6.5.10 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@storybook/channel-postmessage](https://github.com/storybookjs/storybook) | 6.4.22 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@storybook/channel-postmessage](https://github.com/storybookjs/storybook) | 6.5.10 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@storybook/channel-websocket](https://github.com/storybookjs/storybook) | 6.4.22 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@storybook/channel-websocket](https://github.com/storybookjs/storybook) | 6.5.10 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@storybook/channels](https://github.com/storybookjs/storybook) | 6.4.22 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@storybook/channels](https://github.com/storybookjs/storybook) | 6.5.10 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@storybook/client-api](https://github.com/storybookjs/storybook) | 6.4.22 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@storybook/client-api](https://github.com/storybookjs/storybook) | 6.5.10 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@storybook/client-logger](https://github.com/storybookjs/storybook) | 6.4.22 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@storybook/client-logger](https://github.com/storybookjs/storybook) | 6.5.10 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@storybook/components](https://github.com/storybookjs/storybook) | 6.4.22 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@storybook/components](https://github.com/storybookjs/storybook) | 6.5.10 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@storybook/core-client](https://github.com/storybookjs/storybook) | 6.4.22 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@storybook/core-client](https://github.com/storybookjs/storybook) | 6.5.10 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@storybook/core-common](https://github.com/storybookjs/storybook) | 6.4.22 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@storybook/core-common](https://github.com/storybookjs/storybook) | 6.5.10 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@storybook/core-events](https://github.com/storybookjs/storybook) | 6.4.22 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@storybook/core-events](https://github.com/storybookjs/storybook) | 6.5.10 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@storybook/core-server](https://github.com/storybookjs/storybook) | 6.4.22 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@storybook/csf-tools](https://github.com/storybookjs/storybook) | 6.4.22 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@storybook/csf](https://github.com/ComponentDriven/csf) | 0.0.2--canary.4566f4d.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@storybook/csf](https://github.com/ComponentDriven/csf) | 0.0.2--canary.87bc651.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@storybook/manager-webpack4](https://github.com/storybookjs/storybook) | 6.4.22 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@storybook/manager-webpack5](https://github.com/storybookjs/storybook) | 6.5.10 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@storybook/node-logger](https://github.com/storybookjs/storybook) | 6.4.22 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@storybook/node-logger](https://github.com/storybookjs/storybook) | 6.5.10 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@storybook/preview-web](https://github.com/storybookjs/storybook) | 6.4.22 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@storybook/preview-web](https://github.com/storybookjs/storybook) | 6.5.10 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@storybook/router](https://github.com/storybookjs/storybook) | 6.4.22 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@storybook/router](https://github.com/storybookjs/storybook) | 6.5.10 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@storybook/semver](https://github.com/storybookjs/browser-semver) | 7.3.2 | [ISC](https://www.isc.org/downloads/software-support-policy/isc-license/) |
| [@storybook/store](https://github.com/storybookjs/storybook) | 6.4.22 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@storybook/store](https://github.com/storybookjs/storybook) | 6.5.10 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@storybook/theming](https://github.com/storybookjs/storybook) | 6.4.22 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@storybook/theming](https://github.com/storybookjs/storybook) | 6.5.10 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@storybook/ui](https://github.com/storybookjs/storybook) | 6.4.22 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@storybook/ui](https://github.com/storybookjs/storybook) | 6.5.10 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@types/color-convert](https://github.com/DefinitelyTyped/DefinitelyTyped) | 2.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@types/color-name](https://github.com/DefinitelyTyped/DefinitelyTyped) | 1.1.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@types/html-minifier-terser](https://github.com/DefinitelyTyped/DefinitelyTyped) | 6.1.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@types/is-function](https://github.com/DefinitelyTyped/DefinitelyTyped) | 1.0.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@types/json-schema](https://github.com/DefinitelyTyped/DefinitelyTyped) | 7.0.11 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@types/node-fetch](https://github.com/DefinitelyTyped/DefinitelyTyped) | 2.6.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped) | 14.18.22 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped) | 16.11.49 | [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/npmlog](https://github.com/DefinitelyTyped/DefinitelyTyped) | 4.1.4 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@types/overlayscrollbars](https://github.com/DefinitelyTyped/DefinitelyTyped) | 1.12.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@types/parse-json](https://github.com/DefinitelyTyped/DefinitelyTyped) | 4.0.0 | [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/prop-types](https://github.com/DefinitelyTyped/DefinitelyTyped) | 15.7.5 | [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/react-syntax-highlighter](https://github.com/DefinitelyTyped/DefinitelyTyped) | 11.0.5 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@types/react](https://github.com/DefinitelyTyped/DefinitelyTyped) | 18.0.15 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@types/scheduler](https://github.com/DefinitelyTyped/DefinitelyTyped) | 0.16.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@types/source-list-map](https://github.com/DefinitelyTyped/DefinitelyTyped) | 0.1.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@types/tapable](https://github.com/DefinitelyTyped/DefinitelyTyped) | 1.0.8 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@types/uglify-js](https://github.com/DefinitelyTyped/DefinitelyTyped) | 3.16.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@types/webpack-env](https://github.com/DefinitelyTyped/DefinitelyTyped) | 1.17.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@types/webpack-sources](https://github.com/DefinitelyTyped/DefinitelyTyped) | 3.2.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@types/webpack](https://github.com/DefinitelyTyped/DefinitelyTyped) | 4.41.32 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@webassemblyjs/ast](https://github.com/xtuc/webassemblyjs) | 1.9.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@webassemblyjs/floating-point-hex-parser](https://github.com/xtuc/webassemblyjs) | 1.9.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@webassemblyjs/helper-api-error](https://github.com/xtuc/webassemblyjs) | 1.9.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@webassemblyjs/helper-buffer](https://github.com/xtuc/webassemblyjs) | 1.9.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@webassemblyjs/helper-code-frame](https://github.com/xtuc/webassemblyjs) | 1.9.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@webassemblyjs/helper-fsm](https://github.com/xtuc/webassemblyjs) | 1.9.0 | [ISC](https://www.isc.org/downloads/software-support-policy/isc-license/) |
| [@webassemblyjs/helper-module-context](https://github.com/xtuc/webassemblyjs) | 1.9.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@webassemblyjs/helper-wasm-bytecode](https://github.com/xtuc/webassemblyjs) | 1.9.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@webassemblyjs/helper-wasm-section](https://github.com/xtuc/webassemblyjs) | 1.9.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@webassemblyjs/ieee754](https://github.com/xtuc/webassemblyjs) | 1.9.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@webassemblyjs/leb128](https://github.com/xtuc/webassemblyjs) | 1.9.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@webassemblyjs/utf8](https://github.com/xtuc/webassemblyjs) | 1.9.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@webassemblyjs/wasm-edit](https://github.com/xtuc/webassemblyjs) | 1.9.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@webassemblyjs/wasm-gen](https://github.com/xtuc/webassemblyjs) | 1.9.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@webassemblyjs/wasm-opt](https://github.com/xtuc/webassemblyjs) | 1.9.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@webassemblyjs/wasm-parser](https://github.com/xtuc/webassemblyjs) | 1.9.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@webassemblyjs/wast-parser](https://github.com/xtuc/webassemblyjs) | 1.9.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@webassemblyjs/wast-printer](https://github.com/xtuc/webassemblyjs) | 1.9.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@wry/context](https://github.com/benjamn/wryware) | 0.7.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@wry/equality](https://github.com/benjamn/wryware) | 0.5.3 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@wry/trie](https://github.com/benjamn/wryware) | 0.3.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@xtuc/ieee754](https://github.com/feross/ieee754) | 1.2.0 | [BSD-3-Clause](http://www.opensource.org/licenses/BSD-3-Clause) |
| [@xtuc/long](https://github.com/dcodeIO/long.js) | 4.2.2 | [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0) |
| [acorn](https://github.com/acornjs/acorn) | 6.4.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [acorn](https://github.com/acornjs/acorn) | 8.8.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [ajv](https://github.com/ajv-validator/ajv) | 6.12.6 | [MIT](http://www.opensource.org/licenses/MIT) |
| [alfresco-ng2-components](https://github.com/Alfresco/alfresco-ng2-components) | 6.0.0-A.3 | [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0) |
| [ansi-styles](https://github.com/chalk/ansi-styles) | 4.3.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [are-we-there-yet](https://github.com/npm/are-we-there-yet) | 2.0.0 | [ISC](https://www.isc.org/downloads/software-support-policy/isc-license/) |
| [array-union](https://github.com/sindresorhus/array-union) | 2.1.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [autoprefixer](https://github.com/postcss/autoprefixer) | 9.8.8 | [MIT](http://www.opensource.org/licenses/MIT) |
| [babel-plugin-macros](https://github.com/kentcdodds/babel-plugin-macros) | 3.1.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [babel-plugin-polyfill-corejs3](https://github.com/babel/babel-polyfills) | 0.1.7 | [MIT](http://www.opensource.org/licenses/MIT) |
| [braces](https://github.com/micromatch/braces) | 2.3.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [cacache](https://github.com/npm/cacache) | 15.3.0 | [ISC](https://www.isc.org/downloads/software-support-policy/isc-license/) |
| [chalk](https://github.com/chalk/chalk) | 4.1.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [chownr](https://github.com/isaacs/chownr) | 2.0.0 | [ISC](https://www.isc.org/downloads/software-support-policy/isc-license/) |
| [clean-css](https://github.com/clean-css/clean-css) | 5.3.1 | [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) |
| [colorette](https://github.com/jorgebucaran/colorette) | 1.4.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [commander](https://github.com/tj/commander.js) | 2.20.3 | [MIT](http://www.opensource.org/licenses/MIT) |
| [commander](https://github.com/tj/commander.js) | 8.3.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [cosmiconfig](https://github.com/davidtheclark/cosmiconfig) | 6.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [css-loader](https://github.com/webpack-contrib/css-loader) | 3.6.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [css-loader](https://github.com/webpack-contrib/css-loader) | 5.2.7 | [MIT](http://www.opensource.org/licenses/MIT) |
| [cssesc](https://github.com/mathiasbynens/cssesc) | 3.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [csstype](https://github.com/frenic/csstype) | 3.1.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [enhanced-resolve](https://github.com/webpack/enhanced-resolve) | 4.5.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [eslint-scope](https://github.com/eslint/eslint-scope) | 4.0.3 | [BSD-2-Clause](http://www.opensource.org/licenses/BSD-2-Clause) |
| [extend-shallow](https://github.com/jonschlinkert/extend-shallow) | 2.0.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [fill-range](https://github.com/jonschlinkert/fill-range) | 4.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [find-cache-dir](https://github.com/avajs/find-cache-dir) | 2.1.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [find-up](https://github.com/sindresorhus/find-up) | 3.0.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) |
| [fork-ts-checker-webpack-plugin](https://github.com/TypeStrong/fork-ts-checker-webpack-plugin) | 6.5.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [gauge](https://github.com/iarna/gauge) | 3.0.2 | [ISC](https://www.isc.org/downloads/software-support-policy/isc-license/) |
| [globby](https://github.com/sindresorhus/globby) | 11.1.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) |
| [html-minifier-terser](https://github.com/terser/html-minifier-terser) | 6.1.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [html-webpack-plugin](https://github.com/jantimon/html-webpack-plugin) | 5.5.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [icss-utils](https://github.com/css-modules/icss-utils) | 4.1.1 | [ISC](https://www.isc.org/downloads/software-support-policy/isc-license/) |
| [is-number](https://github.com/jonschlinkert/is-number) | 3.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [isobject](https://github.com/jonschlinkert/isobject) | 4.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [jest-worker](https://github.com/facebook/jest) | 26.6.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [jsesc](https://github.com/mathiasbynens/jsesc) | 2.5.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [json-schema-traverse](https://github.com/epoberezkin/json-schema-traverse) | 0.4.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [json5](https://github.com/json5/json5) | 1.0.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [json5](https://github.com/json5/json5) | 2.2.3 | [MIT](http://www.opensource.org/licenses/MIT) |
| [kind-of](https://github.com/jonschlinkert/kind-of) | 3.2.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [loader-runner](https://github.com/webpack/loader-runner) | 2.4.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [loader-utils](https://github.com/webpack/loader-utils) | 1.4.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [loader-utils](https://github.com/webpack/loader-utils) | 2.0.3 | [MIT](http://www.opensource.org/licenses/MIT) |
| [locate-path](https://github.com/sindresorhus/locate-path) | 3.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) |
| [make-dir](https://github.com/sindresorhus/make-dir) | 2.1.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [memory-fs](https://github.com/webpack/memory-fs) | 0.4.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [memory-fs](https://github.com/webpack/memory-fs) | 0.5.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [micromatch](https://github.com/micromatch/micromatch) | 3.1.10 | [MIT](http://www.opensource.org/licenses/MIT) |
| [minimatch](https://github.com/isaacs/minimatch) | 5.0.1 | [ISC](https://www.isc.org/downloads/software-support-policy/isc-license/) |
| [mkdirp](https://github.com/substack/node-mkdirp) | 0.5.6 | [MIT](http://www.opensource.org/licenses/MIT) |
| [npmlog](https://github.com/npm/npmlog) | 5.0.1 | [ISC](https://www.isc.org/downloads/software-support-policy/isc-license/) |
| [p-limit](https://github.com/sindresorhus/p-limit) | 3.1.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [p-locate](https://github.com/sindresorhus/p-locate) | 3.0.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) |
| [path-browserify](https://github.com/browserify/path-browserify) | 1.0.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [path-exists](https://github.com/sindresorhus/path-exists) | 3.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [picocolors](https://github.com/alexeyraspopov/picocolors) | 0.2.1 | [ISC](https://www.isc.org/downloads/software-support-policy/isc-license/) |
| [pkg-dir](https://github.com/sindresorhus/pkg-dir) | 3.0.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) |
| [postcss-loader](https://github.com/webpack-contrib/postcss-loader) | 4.3.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [postcss-modules-extract-imports](https://github.com/css-modules/postcss-modules-extract-imports) | 2.0.0 | [ISC](https://www.isc.org/downloads/software-support-policy/isc-license/) |
| [postcss-modules-local-by-default](https://github.com/css-modules/postcss-modules-local-by-default) | 3.0.3 | [MIT](http://www.opensource.org/licenses/MIT) |
| [postcss-modules-scope](https://github.com/css-modules/postcss-modules-scope) | 2.2.0 | [ISC](https://www.isc.org/downloads/software-support-policy/isc-license/) |
| [postcss-modules-values](https://github.com/css-modules/postcss-modules-values) | 3.0.0 | [ISC](https://www.isc.org/downloads/software-support-policy/isc-license/) |
| [postcss](https://github.com/postcss/postcss) | 7.0.39 | [MIT](http://www.opensource.org/licenses/MIT) |
| [prettier](https://github.com/prettier/prettier) | 2.3.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [pretty-error](https://github.com/AriaMinaei/pretty-error) | 4.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [readable-stream](https://github.com/nodejs/readable-stream) | 2.3.7 | [MIT](http://www.opensource.org/licenses/MIT) |
| [regexpu-core](https://github.com/mathiasbynens/regexpu-core) | 5.1.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [regjsgen](https://github.com/bnjmnt4n/regjsgen) | 0.6.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [regjsparser](https://github.com/jviereck/regjsparser) | 0.8.4 | [BSD-2-Clause](http://www.opensource.org/licenses/BSD-2-Clause) |
| [renderkid](https://github.com/AriaMinaei/RenderKid) | 3.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [safe-buffer](https://github.com/feross/safe-buffer) | 5.1.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [schema-utils](https://github.com/webpack-contrib/schema-utils) | 1.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [schema-utils](https://github.com/webpack/schema-utils) | 2.7.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [schema-utils](https://github.com/webpack/schema-utils) | 3.1.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [semver](https://github.com/npm/node-semver) | 5.7.1 | [ISC](https://www.isc.org/downloads/software-support-policy/isc-license/) |
| [semver](https://github.com/npm/node-semver) | 6.3.0 | [ISC](https://www.isc.org/downloads/software-support-policy/isc-license/) |
| [serialize-javascript](https://github.com/yahoo/serialize-javascript) | 4.0.0 | [BSD-3-Clause](http://www.opensource.org/licenses/BSD-3-Clause) |
| [serialize-javascript](https://github.com/yahoo/serialize-javascript) | 5.0.1 | [BSD-3-Clause](http://www.opensource.org/licenses/BSD-3-Clause) |
| [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) |
| [source-map](https://github.com/mozilla/source-map) | 0.7.4 | [BSD-3-Clause](http://www.opensource.org/licenses/BSD-3-Clause) |
| [ssri](https://github.com/npm/ssri) | 8.0.1 | [ISC](https://www.isc.org/downloads/software-support-policy/isc-license/) |
| [string_decoder](https://github.com/nodejs/string_decoder) | 1.1.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [style-loader](https://github.com/webpack-contrib/style-loader) | 2.0.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) |
| [tapable](https://github.com/webpack/tapable) | 1.1.3 | [MIT](http://www.opensource.org/licenses/MIT) |
| [tapable](https://github.com/webpack/tapable) | 2.2.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [telejson](https://github.com/storybookjs/telejson) | 6.0.8 | [MIT](http://www.opensource.org/licenses/MIT) |
| [terser-webpack-plugin](https://github.com/webpack-contrib/terser-webpack-plugin) | 1.4.5 | [MIT](http://www.opensource.org/licenses/MIT) |
| [terser-webpack-plugin](https://github.com/webpack-contrib/terser-webpack-plugin) | 4.2.3 | [MIT](http://www.opensource.org/licenses/MIT) |
| [terser](https://github.com/terser/terser) | 5.14.2 | [BSD-2-Clause](http://www.opensource.org/licenses/BSD-2-Clause) |
| [to-regex-range](https://github.com/micromatch/to-regex-range) | 2.1.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [watchpack](https://github.com/webpack/watchpack) | 1.7.5 | [MIT](http://www.opensource.org/licenses/MIT) |
| [webpack-dev-middleware](https://github.com/webpack/webpack-dev-middleware) | 3.7.3 | [MIT](http://www.opensource.org/licenses/MIT) |
| [webpack-dev-middleware](https://github.com/webpack/webpack-dev-middleware) | 4.3.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [webpack-sources](https://github.com/webpack/webpack-sources) | 1.4.3 | [MIT](http://www.opensource.org/licenses/MIT) |
| [webpack-virtual-modules](https://github.com/sysgears/webpack-virtual-modules) | 0.4.4 | [MIT](http://www.opensource.org/licenses/MIT) |
| [webpack](https://github.com/webpack/webpack) | 4.46.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [wide-align](https://github.com/iarna/wide-align) | 1.1.5 | [ISC](https://www.isc.org/downloads/software-support-policy/isc-license/) |
| [worker-farm](https://github.com/rvagg/node-worker-farm) | 1.7.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [ws](https://github.com/websockets/ws) | 8.8.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [y18n](https://github.com/yargs/y18n) | 4.0.3 | [ISC](https://www.isc.org/downloads/software-support-policy/isc-license/) |
| [yallist](https://github.com/isaacs/yallist) | 3.1.1 | [ISC](https://www.isc.org/downloads/software-support-policy/isc-license/) |
| [yaml](https://github.com/eemeli/yaml) | 1.10.2 | [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) |
| [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.7 | [MIT](http://www.opensource.org/licenses/MIT) |

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