Compare commits

...
156 Commits
Author SHA1 Message Date
Eugenio Romano 672ef3d45d fix pre-publish.sh 2020-05-04 17:46:22 +01:00
Alfresco Build UserandEugenio Romano fa1e691bd2 Update JS-API packages version 3.8.0 (#5670)
* Update JS-API packages version 3.8.0-beta10

* bump 3.8.0

Co-authored-by: Eugenio Romano <eugenio.romano@alfresco.com>
2020-05-04 17:01:54 +01:00
Cilibiu Bogdan 373025c3b4 disable floating labels (#5669) 2020-05-04 16:42:33 +01:00
Cano 1a9259d00f Add content metadata to Release Note 2020-05-04 15:46:01 +01:00
Eugenio Romano 03f0a77e64 improve release note 2020-05-04 15:20:09 +01:00
Eugenio Romano 8346395175 better commit message 2020-05-04 11:34:45 +01:00
davidcanonieto 01c0f53b18 [ADF-5134] REGRESSION - Fix People and Group Components firing twice (#5666) 2020-05-03 12:53:04 +01:00
Eugenio Romano 7734e6dba9 Update start-task-group-cloud.e2e.ts 2020-05-01 19:34:37 +01:00
Eugenio Romano dae4c9b32e remove excluded test C260249 (#5664) 2020-05-01 13:02:31 +01:00
Eugenio Romano fb3ec899ef Update protractor.excludes.json 2020-05-01 12:00:46 +01:00
Eugenio Romano 3d9976ce52 add release reports (#5663) 2020-05-01 11:33:43 +01:00
Gloria Broadbent db7fedcf5e ALL 16 LANGUAGES - fix for LOC-212 - updated localised files for ADF 3.8 (#5662) 2020-05-01 11:23:08 +01:00
dhrnandEugenio Romano 7cc1ba6042 [ADF-5123] C315268 not working correctly (#5643)
* [ADF-5123] C315268 not working correctly

* * improved code

* * fixed process list error

* * fixed process list error

Co-authored-by: Eugenio Romano <eromano@users.noreply.github.com>
2020-05-01 10:38:45 +01:00
Snyk bot 608abde10e [Snyk] Fix for 1 vulnerabilities (#5661)
* fix: package.json, package-lock.json & .snyk to reduce vulnerabilities


The following vulnerabilities are fixed with a Snyk patch:
- https://snyk.io/vuln/SNYK-JS-LODASH-567746

* fix: package.json, package-lock.json & .snyk to reduce vulnerabilities


The following vulnerabilities are fixed with a Snyk patch:
- https://snyk.io/vuln/SNYK-JS-LODASH-567746

* fix: package.json, package-lock.json & .snyk to reduce vulnerabilities


The following vulnerabilities are fixed with a Snyk patch:
- https://snyk.io/vuln/SNYK-JS-LODASH-567746
2020-05-01 09:53:50 +01:00
dhrn 7d2af84a58 [AAE-2505] [PS cloud] Should not allow to start the process if is not created (#5659)
* * fixed bug

* * cherry pick
2020-05-01 09:40:40 +01:00
VitoandEugenio Romano 1430314815 [ACA-3229] - fixed error on start process cloud when all the value a… (#5660)
* [ACA-3229] - fixed error on start process cloud when all the value are selected by default

* Update start-process-cloud.component.ts

Co-authored-by: Eugenio Romano <eromano@users.noreply.github.com>
2020-04-30 22:55:24 +01:00
dependabot[bot] 1b530e3236 Bump jquery from 3.4.1 to 3.5.0 (#5658)
Bumps [jquery](https://github.com/jquery/jquery) from 3.4.1 to 3.5.0.
- [Release notes](https://github.com/jquery/jquery/releases)
- [Commits](https://github.com/jquery/jquery/compare/3.4.1...3.5.0)

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2020-04-30 22:28:01 +01:00
davidcanonieto b77384331f [ADF-5122] Unexclude C309674 test (#5655)
* [ADF-5122] Unexclude C309674 test

* Improve affected libs script to run tests if tests exclussion changed
2020-04-30 14:47:18 +01:00
Eugenio Romano 6fb27aeb32 fix trigger script 2020-04-30 14:43:19 +01:00
davidcanonieto 7627b01bb1 [AAE-2487] Fix Checkbox Widget bug (#5657) 2020-04-30 13:19:33 +01:00
Eugenio Romano 5da20c10cb Update trigger-travis-children.sh 2020-04-30 11:41:27 +01:00
arditdomi f6f41de46f [ACA-3232] Fix console error expression has changed after it has… (#5656)
* [ACA-3232] Fix console error expression has been changed after it has been checked, remove unused method

* [ACA-3232] Remove not needed (this.)
2020-04-30 10:14:38 +01:00
Eugenio Romano 04a29ebc05 APS11 (#5654)
modify e2e for 1.11 APS
2020-04-29 18:20:14 +01:00
Francesco CortiandFrancesco Corti a67db94b25 PRODDEL-3086 - Release note in draft for 3.8.0. (#5652)
Co-authored-by: Francesco Corti <fcorti@MacBook-Pro.local>
2020-04-29 15:32:10 +01:00
dhrn 30dd6168d5 * start process error (#5653) 2020-04-29 15:27:16 +01:00
Vito f76e6a3516 [DW-1530] - created extra method for process definition key set on filters (#5651) 2020-04-29 11:35:03 +01:00
Cristina Jalba 7c0096eaa6 [ACA-3040]Modify some methods of start-process PO (#5650)
* Modify some methods of start-process PO

* Fix tests

* Fix test
2020-04-29 09:18:21 +01:00
Eugenio Romano c0664341a0 fix search string 2020-04-28 22:36:59 +01:00
Eugenio Romano bb17876ac8 fix e2e test after string changes 2020-04-28 19:12:35 +01:00
Eugenio Romano 47d0daaf24 documentation update (#5644)
* documentation update

* fix update children projects
2020-04-28 16:53:07 +01:00
Mark Hulbert d5b18cf4ff [ADF-5132] Review UI strings (#5649) 2020-04-28 16:52:33 +01:00
Eugenio Romano 831979a3f0 update children script 2020-04-28 13:42:11 +01:00
Eugenio Romano 438832d627 update dockerfile generation first step with more recent image 2020-04-28 12:51:43 +01:00
davidcanonieto b6072f806a [ADF-5129][ADF-5130] Fix Lock in Gallery view and Lock Dialog (#5646) 2020-04-28 08:50:06 +01:00
Vito 13e17f8673 [AAE-2456] - added lowercase random string generator for e2e tests (#5645) 2020-04-27 17:18:24 +01:00
Mercy Chrysolite f03592f230 [AAE-2020] Add release version filter for process instances (#5581)
* [AAE-2020] Add release version filter for process instances

* Updated unit tests

* Updated unit test case

* Added translation key
2020-04-27 00:10:48 +01:00
davidcanonietoandEugenio Romano 8f68899ce0 [ADF-4900] Card View and Metadata Components refactoring (#5592)
* [ADF-4900] Card View and Metadata Components refactoring

* CSS linting

* Unit test excluded

* Rebase branch

* Fix unit tests

* Fix linting

* Fix e2e tests

* Fix 2e2 tests

* Fix process-services e2e tests

* More fixes

* Fix more e2e tests

* Fix unit test

* Improve flaky unit test

* Fix process services e2e tests

* Update Process Header Cloud Page

* Fix linting

* Fix timing issue

* Lintintg

* Fix selectors

* Fix e2e tests

* Fix timing issue

* Fix C260328

* Fix spellcheck

* save screenshot

* performance issue

* Fix unit tests and e2e tests

* fix e2e

* refactoring

* fix lint

* fix e2e

* Fix C309698

* fix other e2e

* fix lint

* increase timeout

Co-authored-by: Eugenio Romano <eugenio.romano@alfresco.com>
2020-04-27 00:09:52 +01:00
Urse Daniel ebfeb053ce [AAE-2321] Should not be able to start a process with space(s) in the beginning/end of process name (Process Services Cloud) (#5639)
* Changed the validator for process name - added a new regex that restricts having space(s) in the beginning/end of the name.

* Added new error message for whitespace regex.

* 1 new error message for whitespace

* Unit test for whitespace restriction (process name)
2020-04-26 11:14:36 +01:00
Vito 444ebcdfd8 [ACA-1894] - fixed missing behaviour for drag&drop (#5641) 2020-04-24 22:39:44 +01:00
Cilibiu Bogdan 697ce6e365 [MNT-21469] TreeView component has events on icon only (#5637)
* change mat-icon-button with mat-button

* align icon and label

* fix aria-label undefined value

* fix translation

* simplify html structure

* test
2020-04-24 15:08:19 +01:00
Vito d0f58600bc [DW-1669] [ADF-5107]- Added new api call for creating and starting a process in… (#5602)
* [DW-1669] - Added new api call for creating and starting a process instance

* [DW-1669] - fixed linting

* [DW-1669] - fixed process default issue

* [DW-1669] - fixed problem on start process cloud

* [DW-1669] - removed check on valid form as it might interact with the correct behaviour

* [DW-1669] - added a small delay before pressing start as a debounce time was added and the click on start is too fast

* [DW-1669] - added a small delay before pressing start as a debounce time was added and the click on start is too fast

* [DW-1669] - removed wrong fdescribe

* [DW-1669] - added a small delay before pressing start as a debounce time was added and the click on start is too fast
2020-04-24 14:27:31 +01:00
VitoandEugenio Romano 6fea3b8cdd [ACA-1894] - added the possibility to filter whenever is possible by … (#5633)
* [ACA-1894] - added the possibility to filter whenever is possible by file path

* [ACA-1894] - fixed linting

* [ACA-1894] - reverted dynamic app config service refresh

* [ACA-1894] - added extra example in upload docs

* Update upload.service.md

Co-authored-by: Eugenio Romano <eromano@users.noreply.github.com>
2020-04-24 14:25:49 +01:00
Eugenio Romano b9842ba12b add slower type method for user picker (#5632)
* add slower type method for user picker

* add slower type method for user picker

* slower

* other fixes

* remove slow digit

* fix some more test

* slow down

* fix some more test

* exclude test

* exclude C315268
2020-04-23 23:23:32 +01:00
davidcanonieto 86d6ecb49e [ADF-5120] Fix initialization error of PS cloud Services (#5634) 2020-04-23 17:59:44 +01:00
Baptiste Mahé 1f5215cd38 [ACA-2523] Fix text color of comment user icon (#5635) 2020-04-23 17:52:46 +01:00
Cristina Jalba 098b9881eb [ACA-3023]Refactor APS1 PO and ACS API calls of ADF testing package (#5629)
* Change the uploadFile method from ADF testing package

* Fix lint

* no message

* Fix a part of the tests

* Fix last tests

* Fix test

* Fix tests

* Fix test
2020-04-23 09:49:41 +01:00
dhrnandEugenio Romano 7fa9b59082 [ADF-5118] Enable E2E (#5628)
* Enable E2E

1. C305010
2. C311290
3. C317658

* * improved e2e

* * minor changes

* * upload fixed

* improve e2e

Co-authored-by: Eugenio Romano <eugenio.romano@alfresco.com>
2020-04-22 13:59:44 +01:00
arditdomi b3c004eb46 [ACA-3174] Add custom icons for processes and tasks (#5631) 2020-04-22 13:39:45 +01:00
Maurizio Vitale 6485ad71b4 [ACA-3170]Task/Process Add the sticky header feature (#5630)
* Add the sticky header feature

* Add html
2020-04-22 13:34:51 +01:00
siva kumar ea1454dde0 [ACA-30333]FE - [Process-services] Create ADF task form. (#5611)
* [ACA-3033] FE - [Process-services] Create ADF task form.

* * Modifed task-from-template

* * Refactored details component with the task-form

* * Updated unit tests to the recent changes

* * Modified task-details component

* * Fixed failing tests

* * Fixed failing tests* Added doc

* * Fixed task-details-form e2e

* Fixed failing test on tas-details e2e

* * Fixed flaky process-services e2e

* * Fixed flaky e2e tests
2020-04-22 08:28:03 +01:00
dhrn fde037498f [AAE-1936] Attach File E2E APS1 (#5623)
* [AAE-1936] Attach File E2E APS1

* * minor changes

* * fix title
2020-04-21 21:31:26 +01:00
Baptiste Mahé f5c08f041e [ACA-2523] Update comment text colors (#5627) 2020-04-21 21:27:10 +01:00
Denys Vuika 122bd9face [ADF-5106] allow to redefine form widgets (APS 1.x and cloud) (#5601)
* create failing test

* fix form and start form widget registration

* update cloud form
2020-04-21 15:47:09 +01:00
arditdomi af7eb53251 [ACA-3080] Remove selecting first filter by default when no defaults … (#5619)
* [ACA-3080] Remove selecting first filter by default when no defaults are provided

* [ACA-3080] Fix demo shell, emit when filter is selected

* [ACA-3080] Align demo shell

* [ACA-3080] Align task filters demo shell, emit when task filter selected
2020-04-21 15:46:44 +01:00
Eugenio Romano 53b01ae594 better retry strategy for query service e2e (#5626)
* better retry API startegy

* better retry API startegy
2020-04-21 12:56:14 +01:00
Cristina Jalba 6462bbf35a [ACA-3040]Refactor/and move to testing package POs and API calls (#5607)
* Refactor/and move to testing package POs and API calls

* Remove method

* Add task list PO

* Use adf testing package APS1 calls

* Fix some tests

* Update new test

* Fix some process-services tests

* no message

* Fix 2 tests

* Create StartProcess page in ADF testing package; refactor process-services tests

* no message
2020-04-21 10:15:39 +01:00
Urse Daniel 7b37bb8a90 [ACA-3020] Start process on process cloud updated the labels (always floating) (#5603)
* unit tests for always floating labels. updated the styling to match the UX. created a new theme.

* update travis
2020-04-20 23:28:23 +01:00
Eugenio Romano f36cbd57ef Fix E2E run (#5624)
* Fix E2E run
remove not used report
Fix USERNAME AND PAS upload PS cloud e2e screenshot

* save report

* multiple 4 cs

* change test fix screenshot and others

* exclude other test
2020-04-20 17:54:03 +01:00
Urse Daniel bc2d7f16fd [AAE-2321] Should not be able to start a process with space as name (Process Services) (#5616)
* New regex validator for process name for checking if there is a space character as the first or the las one in the name.

* Added 2 new error messages for process name: Required and Pattern(no space in the beginning or the end). Changed the disabled start process button validation function.

* Unit test to disable the start button if the pattern validator for process name is raised.

* Added 2 new error messages for process start
2020-04-17 23:37:49 +01:00
Baptiste Mahé 3f69a6d3a9 [ACA-2556] Change checking and welcome colors in login button (#5618) 2020-04-17 17:06:23 +01:00
Baptiste Mahé 968235dff6 [ACA-2577] Change color of dropdown-breadcrumb current folder (#5621) 2020-04-17 17:05:35 +01:00
siva kumar 71ba89cbe7 [AAE-1948] Form Attach File cloud widget E2E (#5543)
* [AAE-1948] Form Attach File widget E2E AAE.

* * Modified attach content file e2e

* * Fixed comments.

* * Taking task and process name from resource file

* * Fixed comments

* * Used API to create process

* * Fixed comments

* * FIxed comments

* * Fixed comment
2020-04-17 17:03:32 +01:00
davidcanonieto a5a82eb649 [ADF-5116] Make ADF's pipeline GREEN again (#5620)
* [ADF-5116] Make ADF's pipeline GREEN again

* Fix more e2e tests

* Exclude test

* Fix last e2e test

* Fix C305008
2020-04-17 16:27:07 +01:00
Maurizio Vitale e53c46464b [ACA-2734] Fix API - Return an error in case the response isn't a json (#5622)
* Return an error in case the response isn't a json

* fix comma
2020-04-17 13:57:39 +01:00
Maurizio Vitale e56331fecb [ACA-2948] Add API to fetch the bpm properties (#5610)
* Add the api to fetch the bpm properties

* remove useless map

* Use latest api

* Use the BehaviorSubject

* filter the status true
2020-04-16 17:23:00 +01:00
Baptiste Mahé 55a5cc073b [ACA-2520] Opacity of tab label of info drawer set to 1 (#5615) 2020-04-16 14:42:24 +01:00
Baptiste Mahé b4399059dc [ACA-2523] Change comment colors (#5617) 2020-04-16 14:40:52 +01:00
Baptiste Mahé 0a9fb69498 [ADF-5114] Change dialog action button color (#5613) 2020-04-16 10:46:48 +01:00
Cristina Jalba 45b2857e1e Fix people-group-cloud-filter-component.e2e.ts (#5612)
* Fix people-group-cloud-filter-component.e2e.ts

* Fix lint
2020-04-16 10:18:54 +01:00
dhrn 4cdaced7bc [AAE-1929] Attach Folder APS1 E2E (#5606)
* [AAE-1929] Attach Folder APS1 E2E

* * updated selector

* * wait for spinner

* * wait for spinner
2020-04-15 16:02:41 +01:00
Baptiste Mahé bb74dbf9a0 [ACA-2476] Fix color contrast in mat-calendar (#5609) 2020-04-15 15:58:50 +01:00
Eugenio Romano 049cedfb26 fix aca update 2020-04-14 15:15:58 +01:00
Baptiste Mahé 25426dd044 [ACA-2493] Fix disabled create folder button color (#5605) 2020-04-14 14:18:10 +01:00
Arik Sidney Guggenheim d089283aa4 [#5561] Translate notification action value (#5604)
* [#5561] Translate action value

* Fix lint issues
2020-04-14 12:34:38 +01:00
siva kumar 63063699fd [ACA-3000][ACA-2999] FE - Provide way to show ContextMenu on Task/Process list (#5596)
* [ACA-3000] FE - Provide way to show ContextMenu on Task list

* * Updated docs

* * Added unit tests to the recent changes
2020-04-14 09:52:57 +01:00
Eugenio RomanoandMark Hulbert ecca9220f1 Review Documentation and tools doc (#5600)
* add exclude files property

* remove Unknown

* fix reviewer

* Update reviewChecker.js

* Update docs/README.md

Co-Authored-By: Mark Hulbert <39801222+m-hulbert@users.noreply.github.com>

Co-authored-by: Mark Hulbert <39801222+m-hulbert@users.noreply.github.com>
2020-04-09 11:55:33 +01:00
Urse Daniel 8962ce0419 [ACA-2983] Changed the labels from the inputs name and type to always floating (#5593)
* changed the label from the label name and type to always floating and switched the position of them.

* fix the double space issue

* added unit tests & created and used custom theme for scss

* added custom theme for start-process component

* removed the styleurl

* changet mat_get to mat-color

* update for travis
2020-04-09 10:56:42 +01:00
Baptiste Mahé d8869e3118 [AAE-2200] Add dynamic title to attach-file-widget-dialog (#5594)
* [AAE-2200] Refactor content node component action

* [AAE-2200] Add dynamique title to attach-file-widget-dialog

* [AAE-2200] Add unit test
2020-04-09 10:43:00 +01:00
Maurizio Vitale 83e362d31a Ability to check if loggedIn based on provider (#5598)
* Provide a way to check if loggedIn based on provider

* Fix the comments

* Add schema validation for provider
2020-04-08 16:43:36 +01:00
Baptiste Mahé e55d3e53bb [ADF-5105] Force color of header button of upload dialog (#5597) 2020-04-08 11:57:58 +01:00
Baptiste Mahé 263ed658db [ADF-5104] Change color of location text (#5595) 2020-04-08 11:56:42 +01:00
Eugenio Romano 5b04fed29f Improve owners file 2020-04-08 10:55:55 +01:00
dhrn 79cb328205 [ADF-1881] Consolidate NodeService and NodesApiService (#5591)
* [ADF-1881] Consolidate NodeService and NodesApiService

* * docs added
2020-04-06 15:21:54 +01:00
Eugenio Romano cbb7555175 change title and description 2020-04-06 14:10:40 +01:00
Eugenio Romano 5baba9bf0a modify logo ACA-2934 2020-04-06 14:09:19 +01:00
Urse Daniel 4f8aa8d4be added indeterminate state for the 'select all' checkbox + unit test. (#5590) 2020-04-06 13:01:03 +01:00
Urse Daniel 6d406d8a7d [ADF-4264] Fixed the breadcrumb when changing to custom site in node selector (#5589)
* unit test for veryfing if changing to a custom site the current breadcrumb folder is the title of the site.

* fixed the problem when changing to a custom site the breadcrumb current folder title is not changing. fixed the issue when navigating inside a node after changing to a custom site the path to the root in the breadcrumb was not the correct path.

* updated the styling for the data rows to match the styling of the breadcrumb

* if there is an error the loader should stop not only if there is a message. updated to fix the node-selector site problem when adding a non existing site, the loader would previously keep spinning even though in console was thrown an error but the clients never had an UI update about the issue.
2020-04-03 10:55:51 +01:00
Cristina Jalba 03a93e45d9 [ACA-2951]Add APS1 calls to adf testing package (#5566)
* Add APS1 calls to adf testing package

* no message

* Change to use AlfrescoApi instead of ApiService

* Refactor process-services tests to use API calls implementation from testing package

* Fix resource file

* no message

* Fix widget tests

* Fix tests

* no message

* Unblocking travis
2020-04-03 09:15:06 +01:00
Denys Vuika 179bdb2790 share link: add time debouncing (#5587)
* add time debouncing

* fix tests
2020-04-02 13:01:18 +01:00
Eugenio Romano e2d58e7a44 Update kerberos.md 2020-04-01 18:02:40 +01:00
Baptiste Mahé ec49a42ebc [ADF-5101] Change empty folder text display colors (#5586) 2020-04-01 16:29:16 +01:00
Baptiste Mahé 1e018b9476 [AAE-2200] Fix upload dialog title (#5583)
* [AAE-2200] Fix dialog title

* [AAE-2200] Title from translation ressources and refactor

* [AAE-2200] Add unit test for title

* [AAE-2200] Fix lint in test
2020-04-01 14:56:21 +01:00
Denys Vuika 53bddad833 fix shared link dialog regressions (#5585)
* code fixes

* fix typo
2020-04-01 14:54:38 +01:00
Eugenio Romano 7135951535 Update preparing-environment.md 2020-03-31 22:50:19 +01:00
Eugenio Romano 3c0bc247c1 Update preparing-environment.md 2020-03-31 22:49:50 +01:00
Eugenio Romano d466d5f55f Update preparing-environment.md 2020-03-31 22:49:20 +01:00
davidcanonieto c1bf8e4db9 [ADF-3726] Enable/disable Copy to clipboard in Metadata from config (#5578)
* [ADF-3726] Enable/disable Copy to clipboard in Metadata from config

* Update app.config.json

* Fix e2e tests
2020-03-31 14:10:52 +01:00
Baptiste Mahé 50f19c99f2 [ADF-5091] Fix undefined accent variable (#5584) 2020-03-31 13:52:25 +01:00
dhrn e06f871d73 [AAE-2202] Not able to search for files (#5569)
* [AAE-2202] Not able to search for files

* * fixd test

* * fixed panel test

* * fixed files search options

* * added docs
2020-03-31 11:36:35 +01:00
arditdomi 6564ef256e [ACA-2956] Add event emitter when processDefinition selection changes (for both APS and CLOUD) (#5579) 2020-03-31 09:50:51 +01:00
Maurizio Vitale f4f46d0c60 Start process: Make the title optional (#5580)
* Make the title optional

* Add the title on demoshell

* Remove the mat card and css

* Fix scss
2020-03-31 09:38:55 +01:00
Denys Vuika 01d0f777c0 share link: fix regression with expiration toggle (#5577)
* share link: fix regression with expiration toggle

* remove old method
2020-03-31 07:34:25 +01:00
Baptiste Mahé b26991014c [ADF-5095] Update text color of share dialog (#5575) 2020-03-30 19:18:04 +01:00
Baptiste Mahé 19ad789436 [ADF-5091] Change info drawer labels color (#5571) 2020-03-30 18:20:06 +01:00
Baptiste Mahé 53f2361658 [ADF-5093] Change datepicker color (#5573) 2020-03-30 18:19:44 +01:00
Baptiste Mahé e48bb60083 [ADF-5090] Change color of input button (#5570) 2020-03-30 18:18:12 +01:00
Baptiste Mahé cfc62abb2b [ADF-5094] Changed focused chip color (#5574) 2020-03-30 18:17:39 +01:00
Baptiste Mahé 56970d012c [ADF-5096] Icon on move dialog darker (#5576) 2020-03-30 18:16:59 +01:00
Baptiste Mahé 04b6a3e399 [ADF-5092] Change card view label color (#5572) 2020-03-30 18:16:22 +01:00
dhrn 7195a384e8 [AAE-2041] [APS-1] [ADF] download process audit log not working (#5568)
* [AAE-2041] [APS-1] [ADF] download process audit log not working

* * updates JS API

* * clean up
2020-03-30 09:36:21 +01:00
Urse Daniel 8f3f5b3879 [ADF-4933] Adding keydown event on data row to simulate double click when pressing 'enter' key (#5564)
* changing the event on row from keyup to keydown to fix the issue of reopening the file after closing ussing only keyboard (opening and closing the file by enter)

* Reverting the 'onRowKeyDown' to not make a breaking change and added a new method to handle the opening file using 'enter' key

* Added unit test - it should emit double click if keydown "enter key" on row

* Small changes for clean coding
2020-03-27 16:33:44 +00:00
Eugenio Romano d3ff9eda3f Update trigger-travis-children.sh 2020-03-27 13:00:20 +00:00
Eugenio Romano fc295e3dc3 Update trigger-travis-children.sh 2020-03-27 12:59:56 +00:00
siva kumar 779ea83b8e [AAE-2198] Error thrown on start process with pre-selected multiple files on start form. (#5567)
* [AAE-2198] Error thrown on start process with pre-selected multiple files on start form.

* * Removed unwanted method
2020-03-27 09:59:43 +00:00
davidcanonieto 6806504a65 [ADF-3726] Add copy to clipbouard support to card view properties (#5565) 2020-03-25 13:42:35 +00:00
dhrn 3f45e7b35d [ACA-2368] UI Issues while editing Metadata in the Preview Page #1091 (#5562)
* [ACA-2368] UI Issues while editing Metadata in the Preview Page #1091

* tslint fxed

* [ACA-2368] UI Issues while editing Metadata in the Preview Page #1091

* * revert commits

* Revert "* revert commits"

This reverts commit fd0e86084cc4ac14870d9008400528f63a681c59.

* * unit test added
2020-03-25 11:06:40 +00:00
dhrn c684d5f50c [ADF-4341] Customise the property title into the InfoDrawer from configuration (#5556)
* [ADF-4341] Customise the property title into the InfoDrawer from configuration

* * docs added

* * removed unnecessary logic and docs updated
2020-03-25 11:05:11 +00:00
Denys Vuika 772188c13d calendar card item a11y fixes (#5563) 2020-03-24 11:02:33 +00:00
davidcanonieto 144da83d0e [ADF-4559] Add chips to multivalue metadata properties (#5552)
* [ADF-4559] Add chips to multivalue metadata properties

* Fix app config schema

* Restore app config

* Fix checkListIsSorted method

* Fix e2e datatable sorting

* Fix e2e tests

* Improve chips input
2020-03-23 13:02:01 +00:00
siva kumar 666dd45fa2 [AAE-1725] ADF Task filters - default filters should be recreated when they all get deleted. (#5551) 2020-03-23 10:59:30 +00:00
davidcanonieto 3fcf965eca [ADF-4673] Add editable property to metadata config (#5557)
* [ADF-4673] Add editable property to metadata config

* Add readonly mode for aspect oriented config

* Fix linting
2020-03-20 22:16:35 +00:00
Eugenio Romano 94f4b69b76 enforce types for forms cloud (#5371)
* enforce right type form cloud

* remove missing import

* fix selector
2020-03-20 21:33:43 +00:00
78c3db5db7 [ACA-2789] - edit button a11y fixes (#5399)
* fix: remove title property from button

* use tooltip instead of aria label

* fix aria label

Co-authored-by: Taylor Richards <taylor.richards@deque.com>
Co-authored-by: Denys Vuika <denys.vuika@gmail.com>
2020-03-20 21:31:30 +00:00
Denys Vuika fc6a80c45a [ACA-2566][ACA-2567] permissions a11y fixes (#5560)
* fix layout and a11y, cleanup html

* fix sorting announcer

* fix i18n issue for Actions column
2020-03-19 16:47:24 +00:00
Denys Vuika a04abd0041 fix share link dialog header a11y (#5559) 2020-03-19 11:11:13 +00:00
Baptiste Mahé 3fa95d6bd8 [AAE-1579] Fixing the style of the prefix of amount widget (#5546)
* [AAE-1579] Fix amount widget prefix

* top of prefix fixed in modeler

* [AAE-1579] prefix color get from theming

* [AAE-1579] fix color and removed useless include

* [AAE-1579] remove useless import and prefix red when input empty and required
2020-03-19 09:53:58 +00:00
Cilibiu Bogdan 983e01f70c [ADF-5087] Document List - custom sources 'where' clause not passed (#5558)
* pass document list where clause to custom sources

* update docs
2020-03-19 09:38:58 +00:00
5bcd326891 [ACA-2619][ACA-2616] a11y fixes for Share Link dialog (#5454)
* chore: proper disabling of fields for a11y

* component fixes

* update tests

* update tests

* fix aria labels

* aria-label fixes

* update layout

* update e2e tests

Co-authored-by: Denys Vuika <denys.vuika@gmail.com>
Co-authored-by: Cilibiu Bogdan <bogdan.cilibiu@ness.com>
2020-03-19 08:13:42 +00:00
Cristina Jalba 57c15a7542 [AAE-1772]Add CardSelectItemPage PO (#5555)
* Add CardSelectItemPage PO

* no message
2020-03-18 11:41:51 +00:00
Eugenio Romano 7c90c9b372 Improve css prebuilt creation and minimize (#5553)
* improve CSS creation strategy and minimize

* remove multiple select slow down test
2020-03-17 18:59:52 +00:00
Vito ec689cad3f AAE-1841 - added delete directive test (#5547)
* AAE-1841 - start adding e2e for delete directive

* AAE-1841 - added delete directive test

* AAE-1841 - fixed PR review
2020-03-17 18:57:04 +00:00
dhrn d720d36670 [ADF-4522] Metadata value is not rolled back upon error (#5550)
* * initial commit

* * removed breaking change

* * fixed ts

* * fixed minor changes

* * fixed changes

* * minor changes

* * fixed unit test

* * docs added

* * fixed date clear problem

* * fixed unit test
2020-03-17 10:47:08 +00:00
Eugenio Romano becf45d150 Update update-children.sh 2020-03-16 14:52:11 +00:00
dhrn c64396b2fe [AAE-1923] Form APS E2E (#5540)
* [AAE-1923] Form APS E2E

* * minor changes

* * fixed e2e
2020-03-16 11:49:11 +00:00
Mark SteadmanandEugenio Romano 8e5e5c90ac ACA 2618 - 2619 - Share Dialog - Physical Labels (#5439)
* chore: addition of physical labels to share dialog

* chore: addition of translated text

* chore: addition of expiration label

* Update content-node-share.dialog.scss

Co-authored-by: Eugenio Romano <eromano@users.noreply.github.com>
2020-03-16 11:10:29 +00:00
dhrn acd9a33550 [AAE-1923] Multilingual form unit test (#5542)
* ps cloud translation fixed

* included only for form cloud
2020-03-16 11:05:52 +00:00
Cristina Jalba ea6ab300c4 [ADF-1895]Refactor date-time-picker and date-picker (#5544)
* Refactor date-time-picker and date-picker

* no message
2020-03-16 10:44:39 +00:00
dependabot[bot] 3c35c45406 Bump acorn from 6.2.0 to 6.4.1 (#5548)
Bumps [acorn](https://github.com/acornjs/acorn) from 6.2.0 to 6.4.1.
- [Release notes](https://github.com/acornjs/acorn/releases)
- [Commits](https://github.com/acornjs/acorn/compare/6.2.0...6.4.1)

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2020-03-16 09:27:14 +00:00
dhrn 41597e271a [ADF-4522] Metadata value is not rolled back upon error (#5545) 2020-03-13 15:42:38 +00:00
Cristina Jalba 22d2a52f68 Retrieve href attribute of hyperlink (#5541) 2020-03-12 12:41:27 +00:00
Alexandra Abrudan c91458df79 [AAE-1846] [AAE-1857] automated e2e tests uploading folders (#5483)
* [AAE-1846] automated e2e tests - uploading a folder

* [AAE-1857] added automated e2e test upload folder with excluded file

* changed the script for cancel an uploading folder, added -b condition for the running tests for the uploadFolder method
2020-03-09 19:18:41 +00:00
arditdomi 8fcdc55595 [AAE-2126] Fix checkbox click testing method in datatable page (#5539) 2020-03-09 09:37:24 +00:00
dhrn 9599d834b0 [AAE-1953] Claim Reclaim Task AAE E2E (#5529)
* [AAE-1953] Claim Reclaim Task AAE E2E

* * fixed linting and fixed changes
2020-03-06 13:44:50 +00:00
Cristina Jalba 226b139d7a Create card-view-boolean-item page (#5537) 2020-03-06 10:21:39 +00:00
Eugenio Romano 2e976d013b remove duplicated test (#5536) 2020-03-06 00:18:56 +00:00
Eugenio Romano 6db04f1887 AAE-1951 - added extra test cases for start task and assignee (#5534)
* AAE-1951 - added extra test cases for start task and assignee

* AAE-1951 - fixed license
2020-03-05 17:37:34 +00:00
Eugenio Romano a70883378a [AAE-2107] Move e2e to Unit test (#5535)
* [AAE-2107] Move e2e to Unit test

* * fixed namings

* * more unit test added

* * minor changes
2020-03-05 16:47:59 +00:00
Eugenio Romano 0217f0c788 * Updated SimpleApp with new process (#5533) 2020-03-04 21:56:17 +00:00
Baptiste Mahé b3d8fb9609 [ADF-5085] Adding possibility to search for future dates search-date-range component (#5525)
* [ADF-5085] Remove maxDate and set the max of the from date to the to date

* [ADF-5085] Add maxDate optional setting

* [ADF-5085] Add unit test for maxDate

* [ADF-5085] Add documentation for maxDate setting

* [ADF-5085] Unit tests for default and today value

* [ADF-5085] Refactor
2020-03-04 11:29:29 +00:00
Alexandra Abrudan 24c728a8f5 [AAE-1880] e2e document-list selection mode (#5518)
* [AAE-1880] e2e document-list selection mode, open file/folder

* resolved comments: backtick, refactoring names, using dropdownPage, removing comments, wrapping the API

* added a new try-catch for beforeAll, fixed the error message

* changed the name of a method from clickDropdownWithOption to selectDropdownOption

* changed the method name from clickDropdown... to selectDropdownOption

* added the variable type for some methods, delete the let list and refactor accordingly
2020-03-03 18:50:36 +00:00
davidcanonieto 2b1a321baf [AAE-1977] Fix file uploaded after cancelling upload (#5532)
* [AAE-1977] Fix file uploaded after cancelling upload

* Add constants
2020-03-03 18:47:29 +00:00
Vito 45f023c93a AAE-1945 - Added extra form unit test (#5524)
* AAE-1945 - start adding test form rendering for task-details

* Added last unit test for AAE-1945

* AAE-1945 - removed wrong fdescribe

* AAE-1945 - fixed whitespace

* AAE-1945 - fixed wrong promise errored

* AAE-1945 - fixed failing unit test
2020-03-03 18:45:41 +00:00
Vito 359022de65 [AAE-2009] - Added visibility unit test for form (#5526)
* AAE-2009 - added visibility unit test for form widgets

* AAE-2009 - added visibility unit test for form widgets

* AAE-2009 - fixed id of mock form

* AAE-2009 - fixed linting
2020-03-03 16:59:01 +00:00
Cristina Jalba e96b89c821 [AAE-1746]Added 3 new processed to candidatebaseapp: errorStartEventProcess, er… (#5531)
* Added 3 new processed to candidatebaseapp: errorStartEventProcess, errorBoundaryEventProcess and errorExclusiveGateProcess, all with error events

* no message
2020-03-03 15:02:28 +00:00
siva kumar 351aadd518 * Updated process-display-json variable to http (#5530) 2020-03-03 12:15:31 +00:00
dhrn 5d408025b0 [AAE-1949] Form Attach File Widget AAE unit test (#5527)
* [AAE-1949] Form Attach File Widget AAE unit test

* [AAE-1949] Form Attach File Widget AAE unit test

* * fixed type

* * fixed second upload

* * fixed second upload
2020-03-02 17:57:17 +00:00
660 changed files with 18147 additions and 6099 deletions
+2 -21
View File
@@ -10,28 +10,9 @@
# precedence. When someone opens a pull request that only
# modifies JS files, only @js-owner and not the global
# owner(s) will be requested for a review.
e2e/* @eromano @cristinaj @gmandakini @marouanbentaleb
# You can also use email addresses if you prefer. They'll be
# used to look up users just like we do for commit author
# emails.
#*.go docs@example.com
docs/* @m-hulbert @eromano
# In this example, @doctocat owns any files in the build/logs
# directory at the root of the repository and any of its
# subdirectories.
#/build/logs/ @doctocat
/e2e/ @eromano @cristinaj
# The `docs/*` pattern will match files like
# `docs/getting-started.md` but not further nested files like
# `docs/build-app/troubleshooting.md`.
#docs/* docs@example.com
# In this example, @octocat owns any file in an apps directory
# anywhere in your repository.
#apps/ @octocat
# In this example, @doctocat owns any file in the `/docs`
# directory in the root of your repository.
#/docs/ @doctocat
/docs/ @m-hulbert @eromano
+34 -1
View File
@@ -1,5 +1,5 @@
# Snyk (https://snyk.io) policy file, patches or ignores known vulnerabilities.
version: v1.14.0
version: v1.14.1
ignore: {}
# patches apply the minimum changes required to fix a vulnerability
patch:
@@ -11,3 +11,36 @@ patch:
SNYK-JS-TREEKILL-536781:
- snyk > snyk-sbt-plugin > tree-kill:
patched: '2019-12-12T00:35:06.820Z'
SNYK-JS-LODASH-567746:
- snyk > lodash:
patched: '2020-05-01T00:35:43.233Z'
- snyk > @snyk/dep-graph > lodash:
patched: '2020-05-01T00:35:43.233Z'
- snyk > inquirer > lodash:
patched: '2020-05-01T00:35:43.233Z'
- snyk > snyk-config > lodash:
patched: '2020-05-01T00:35:43.233Z'
- snyk > snyk-mvn-plugin > lodash:
patched: '2020-05-01T00:35:43.233Z'
- snyk > snyk-nodejs-lockfile-parser > lodash:
patched: '2020-05-01T00:35:43.233Z'
- snyk > snyk-nuget-plugin > lodash:
patched: '2020-05-01T00:35:43.233Z'
- snyk > @snyk/dep-graph > graphlib > lodash:
patched: '2020-05-01T00:35:43.233Z'
- snyk > snyk-go-plugin > graphlib > lodash:
patched: '2020-05-01T00:35:43.233Z'
- snyk > snyk-nodejs-lockfile-parser > graphlib > lodash:
patched: '2020-05-01T00:35:43.233Z'
- snyk > @snyk/snyk-cocoapods-plugin > @snyk/dep-graph > lodash:
patched: '2020-05-01T00:35:43.233Z'
- snyk > snyk-nuget-plugin > dotnet-deps-parser > lodash:
patched: '2020-05-01T00:35:43.233Z'
- snyk > snyk-php-plugin > @snyk/composer-lockfile-parser > lodash:
patched: '2020-05-01T00:35:43.233Z'
- snyk > @snyk/snyk-cocoapods-plugin > @snyk/dep-graph > graphlib > lodash:
patched: '2020-05-01T00:35:43.233Z'
- snyk > @snyk/snyk-cocoapods-plugin > @snyk/cocoapods-lockfile-parser > @snyk/ruby-semver > lodash:
patched: '2020-05-01T00:35:43.233Z'
- snyk > @snyk/snyk-cocoapods-plugin > @snyk/cocoapods-lockfile-parser > @snyk/dep-graph > graphlib > lodash:
patched: '2020-05-01T00:35:43.233Z'
+1 -1
View File
@@ -1,6 +1,6 @@
# 1. Generate licenses
FROM node:11.9-alpine AS builder
FROM node:12.16.2-alpine3.9 AS builder
WORKDIR /usr/src/alfresco
COPY package.json package.json
+2 -1
View File
@@ -139,7 +139,8 @@
"processparent",
"uploadfileform",
"processwithstarteventform",
"processstring"
"processstring",
"typeahed"
],
"dictionaries": [
"html",
+1 -1
View File
@@ -1,7 +1,7 @@
{
"name": "Alfresco-ADF-Angular-Demo",
"description": "Demo shell for Alfresco Angular components",
"version": "3.7.0",
"version": "3.8.0",
"author": "Alfresco Software, Ltd.",
"repository": {
"type": "git",
+4 -2
View File
@@ -270,14 +270,16 @@
},
"TOOLTIP_MESSAGE": {
"START_INPUT": "صفحة البدء"
}
},
"TASK_CONTEXT_MENU": "قائمة سياق قائمة المهام"
},
"PROCESS_LIST_DEMO": {
"ERROR_MESSAGE": {
"APP_ID_REQUIRED_ERROR": "إدراج معرف التطبيق",
"APP_ID_TYPE_ERROR": "يجب أن يكون معرف التطبيق رقمًا",
"NUMBER_GREATER_THAN": "يجب أن تكون القيمة أكبر من {{ value }} أو تساويها"
}
},
"PROCESS_CONTEXT_MENU": "قائمة سياق قائمة العمليات"
},
"GROUP-TITLE1-TRANSLATION-KEY": "الترجمة الأولى للعنوان المخصص",
"GROUP-TITLE2-TRANSLATION-KEY": "الترجمة الثانية للعنوان المخصص",
+4 -2
View File
@@ -270,14 +270,16 @@
},
"TOOLTIP_MESSAGE": {
"START_INPUT": "Počáteční strana"
}
},
"TASK_CONTEXT_MENU": "Místní nabídka Seznam úkolů"
},
"PROCESS_LIST_DEMO": {
"ERROR_MESSAGE": {
"APP_ID_REQUIRED_ERROR": "Vložit ID aplikace",
"APP_ID_TYPE_ERROR": "ID aplikace musí být číslo",
"NUMBER_GREATER_THAN": "Hodnota musí být rovna nebo větší než {{ value }}"
}
},
"PROCESS_CONTEXT_MENU": "Místní nabídka Seznam procesů"
},
"GROUP-TITLE1-TRANSLATION-KEY": "Vlastní překlad názvu 1",
"GROUP-TITLE2-TRANSLATION-KEY": "Vlastní překlad názvu 2",
+5 -3
View File
@@ -63,7 +63,7 @@
"NOTIFICATIONS": "Meddelelser",
"TASK_LIST": "Opgaveliste",
"PROCESS_LIST": "Procesliste",
"PROCESS_CLOUD": "Activiti Cloud",
"PROCESS_CLOUD": "Proces Cloud",
"CARD_VIEW": "Kortvisning",
"PROCESS_SERVICES": "Process Services",
"LOGIN": "Log ind",
@@ -270,14 +270,16 @@
},
"TOOLTIP_MESSAGE": {
"START_INPUT": "Startside"
}
},
"TASK_CONTEXT_MENU": "Opgave Liste Kontekst Menu"
},
"PROCESS_LIST_DEMO": {
"ERROR_MESSAGE": {
"APP_ID_REQUIRED_ERROR": "Indsæt app-id",
"APP_ID_TYPE_ERROR": "App-id'et skal være et tal",
"NUMBER_GREATER_THAN": "Værdien skal være større end eller lig med {{ value }}"
}
},
"PROCESS_CONTEXT_MENU": "Proces Liste Kontekst Menu"
},
"GROUP-TITLE1-TRANSLATION-KEY": "Brugerdefineret titel oversættelse et",
"GROUP-TITLE2-TRANSLATION-KEY": "Brugerdefineret titel oversættelse to",
+4 -2
View File
@@ -270,14 +270,16 @@
},
"TOOLTIP_MESSAGE": {
"START_INPUT": "Startseite"
}
},
"TASK_CONTEXT_MENU": "Aufgabenlisten-Kontextmenü"
},
"PROCESS_LIST_DEMO": {
"ERROR_MESSAGE": {
"APP_ID_REQUIRED_ERROR": "App-ID einfügen",
"APP_ID_TYPE_ERROR": "App-ID muss eine Zahl sein",
"NUMBER_GREATER_THAN": "Wert muss größer oder gleich {{ value }} sein"
}
},
"PROCESS_CONTEXT_MENU": "Prozesslisten-Kontextmenü"
},
"GROUP-TITLE1-TRANSLATION-KEY": "Übersetzung benutzerdefinierter Titel 1",
"GROUP-TITLE2-TRANSLATION-KEY": "Übersetzung benutzerdefinierter Titel 2",
+4 -2
View File
@@ -270,14 +270,16 @@
},
"TOOLTIP_MESSAGE": {
"START_INPUT": "Starting page"
}
},
"TASK_CONTEXT_MENU": "Task List Context Menu"
},
"PROCESS_LIST_DEMO": {
"ERROR_MESSAGE": {
"APP_ID_REQUIRED_ERROR": "Insert App ID",
"APP_ID_TYPE_ERROR": "App ID must be a number",
"NUMBER_GREATER_THAN": "Value must be greater than or equal to {{ value }}"
}
},
"PROCESS_CONTEXT_MENU": "Process List Context Menu"
},
"GROUP-TITLE1-TRANSLATION-KEY": "CUSTOM TITLE TRANSLATION ONE",
"GROUP-TITLE2-TRANSLATION-KEY": "CUSTOM TITLE TRANSLATION TWO",
+4 -2
View File
@@ -270,14 +270,16 @@
},
"TOOLTIP_MESSAGE": {
"START_INPUT": "Inicio de página"
}
},
"TASK_CONTEXT_MENU": "Menú de contexto Lista de tareas"
},
"PROCESS_LIST_DEMO": {
"ERROR_MESSAGE": {
"APP_ID_REQUIRED_ERROR": "Insertar ID de aplicación",
"APP_ID_TYPE_ERROR": "El ID de aplicación debe ser un número",
"NUMBER_GREATER_THAN": "El valor debe ser igual o superior a {{ value }}"
}
},
"PROCESS_CONTEXT_MENU": "Menú de contexto Lista de procesos"
},
"GROUP-TITLE1-TRANSLATION-KEY": "Traducción de título personalizado 1",
"GROUP-TITLE2-TRANSLATION-KEY": "Traducción de título personalizado 2",
+4 -2
View File
@@ -270,14 +270,16 @@
},
"TOOLTIP_MESSAGE": {
"START_INPUT": "Aloitussivu"
}
},
"TASK_CONTEXT_MENU": "Tehtäväluettelon pikavalikko"
},
"PROCESS_LIST_DEMO": {
"ERROR_MESSAGE": {
"APP_ID_REQUIRED_ERROR": "Lisää sovellustunnus",
"APP_ID_TYPE_ERROR": "Sovellustunnuksen täytyy olla numero",
"NUMBER_GREATER_THAN": "Arvon täytyy olla yhtä suuri tai suurempi kuin {{ value }}"
}
},
"PROCESS_CONTEXT_MENU": "Prosessiluettelon pikavalikko"
},
"GROUP-TITLE1-TRANSLATION-KEY": "Oma otsikkokäännös yksi",
"GROUP-TITLE2-TRANSLATION-KEY": "Oma otsikkokäännös kaksi",
+4 -2
View File
@@ -270,14 +270,16 @@
},
"TOOLTIP_MESSAGE": {
"START_INPUT": "Démarrage de la page"
}
},
"TASK_CONTEXT_MENU": "Menu contextuel Liste des tâches"
},
"PROCESS_LIST_DEMO": {
"ERROR_MESSAGE": {
"APP_ID_REQUIRED_ERROR": "Insérer l'ID d'application",
"APP_ID_TYPE_ERROR": "L'ID d'application doit être un numéro",
"NUMBER_GREATER_THAN": "La valeur doit être égale ou supérieure à {{ value }}"
}
},
"PROCESS_CONTEXT_MENU": "Menu contextuel Liste des processus"
},
"GROUP-TITLE1-TRANSLATION-KEY": "Titre personnalisé traduction un",
"GROUP-TITLE2-TRANSLATION-KEY": "Titre personnalisé traduction deux",
+4 -2
View File
@@ -270,14 +270,16 @@
},
"TOOLTIP_MESSAGE": {
"START_INPUT": "Inizia da pagina"
}
},
"TASK_CONTEXT_MENU": "Menu di scelta rapida Elenco compiti"
},
"PROCESS_LIST_DEMO": {
"ERROR_MESSAGE": {
"APP_ID_REQUIRED_ERROR": "Inserisci ID applicazione",
"APP_ID_TYPE_ERROR": "L'ID applicazione deve essere un numero",
"NUMBER_GREATER_THAN": "Il valore deve essere maggiore o uguale a {{ value }}"
}
},
"PROCESS_CONTEXT_MENU": "Menu di scelta rapida Elenco processi"
},
"GROUP-TITLE1-TRANSLATION-KEY": "Custom Title Translation One",
"GROUP-TITLE2-TRANSLATION-KEY": "Custom Title Translation Two",
+4 -2
View File
@@ -270,14 +270,16 @@
},
"TOOLTIP_MESSAGE": {
"START_INPUT": "開始ページ"
}
},
"TASK_CONTEXT_MENU": "タスクリストのコンテキストメニュー"
},
"PROCESS_LIST_DEMO": {
"ERROR_MESSAGE": {
"APP_ID_REQUIRED_ERROR": "アプリケーション ID を挿入してください",
"APP_ID_TYPE_ERROR": "アプリケーション ID は数字でなければなりません",
"NUMBER_GREATER_THAN": "値は {{ value }} 以上でなければなりません"
}
},
"PROCESS_CONTEXT_MENU": "プロセスリストのコンテキストメニュー"
},
"GROUP-TITLE1-TRANSLATION-KEY": "カスタムのタイトル翻訳 1",
"GROUP-TITLE2-TRANSLATION-KEY": "カスタムのタイトル翻訳 2",
+4 -2
View File
@@ -270,14 +270,16 @@
},
"TOOLTIP_MESSAGE": {
"START_INPUT": "Starter side"
}
},
"TASK_CONTEXT_MENU": "Kontekstmeny for oppgaveliste"
},
"PROCESS_LIST_DEMO": {
"ERROR_MESSAGE": {
"APP_ID_REQUIRED_ERROR": "Sett inn app-ID",
"APP_ID_TYPE_ERROR": "App-ID må være et tall",
"NUMBER_GREATER_THAN": "Verdien må være høyere enn eller lik {{ value }}"
}
},
"PROCESS_CONTEXT_MENU": "Kontekstmeny for prosessliste"
},
"GROUP-TITLE1-TRANSLATION-KEY": "Egendefinert tittel, oversettelse én",
"GROUP-TITLE2-TRANSLATION-KEY": "Egendefinert tittel, oversettelse to",
+4 -2
View File
@@ -270,14 +270,16 @@
},
"TOOLTIP_MESSAGE": {
"START_INPUT": "Beginpagina"
}
},
"TASK_CONTEXT_MENU": "Contextmenu lijst met taken"
},
"PROCESS_LIST_DEMO": {
"ERROR_MESSAGE": {
"APP_ID_REQUIRED_ERROR": "App-id invoegen",
"APP_ID_TYPE_ERROR": "App-id moet een getal zijn",
"NUMBER_GREATER_THAN": "Waarde moet groter zijn dan of gelijk zijn aan {{ value }}"
}
},
"PROCESS_CONTEXT_MENU": "Contextmenu lijst met processen"
},
"GROUP-TITLE1-TRANSLATION-KEY": "Aangepaste titel vertaling één",
"GROUP-TITLE2-TRANSLATION-KEY": "Aangepaste titel vertaling twee",
+4 -2
View File
@@ -270,14 +270,16 @@
},
"TOOLTIP_MESSAGE": {
"START_INPUT": "Strona początkowa"
}
},
"TASK_CONTEXT_MENU": "Menu kontekstowe listy zadań"
},
"PROCESS_LIST_DEMO": {
"ERROR_MESSAGE": {
"APP_ID_REQUIRED_ERROR": "Wstaw identyfikator aplikacji",
"APP_ID_TYPE_ERROR": "Identyfikator aplikacji musi być liczbą.",
"NUMBER_GREATER_THAN": "Wartość musi być większa od lub równa wartości {{ value }}"
}
},
"PROCESS_CONTEXT_MENU": "Menu kontekstowe listy procesów"
},
"GROUP-TITLE1-TRANSLATION-KEY": "Tytuł niestandardowy — tłumaczenie pierwsze",
"GROUP-TITLE2-TRANSLATION-KEY": "Tytuł niestandardowy — tłumaczenie drugie",
+4 -2
View File
@@ -270,14 +270,16 @@
},
"TOOLTIP_MESSAGE": {
"START_INPUT": "Iniciando a página"
}
},
"TASK_CONTEXT_MENU": "Menu de contexto da lista de tarefas"
},
"PROCESS_LIST_DEMO": {
"ERROR_MESSAGE": {
"APP_ID_REQUIRED_ERROR": "Inserir ID do aplicativo",
"APP_ID_TYPE_ERROR": "O ID do aplicativo deve ser um número",
"NUMBER_GREATER_THAN": "O valor deve ser maior ou igual a {{ value }}"
}
},
"PROCESS_CONTEXT_MENU": "Menu de contexto da lista de processamento"
},
"GROUP-TITLE1-TRANSLATION-KEY": "Tradução um de título personalizado",
"GROUP-TITLE2-TRANSLATION-KEY": "Tradução dois de título personalizado",
+4 -2
View File
@@ -270,14 +270,16 @@
},
"TOOLTIP_MESSAGE": {
"START_INPUT": "Начальная страница"
}
},
"TASK_CONTEXT_MENU": "Контекстное меню списка задач"
},
"PROCESS_LIST_DEMO": {
"ERROR_MESSAGE": {
"APP_ID_REQUIRED_ERROR": "Вставить идентификатор приложения",
"APP_ID_TYPE_ERROR": "Идентификатор приложения должен быть числом",
"NUMBER_GREATER_THAN": "Значение должно быть больше или равно {{ value }}"
}
},
"PROCESS_CONTEXT_MENU": "Контекстное меню списка процессов"
},
"GROUP-TITLE1-TRANSLATION-KEY": "Перевод пользовательского заголовка один",
"GROUP-TITLE2-TRANSLATION-KEY": "Перевод пользовательского заголовка два",
+4 -2
View File
@@ -270,14 +270,16 @@
},
"TOOLTIP_MESSAGE": {
"START_INPUT": "Startsida"
}
},
"TASK_CONTEXT_MENU": "Innehållsmeny till uppgiftslista"
},
"PROCESS_LIST_DEMO": {
"ERROR_MESSAGE": {
"APP_ID_REQUIRED_ERROR": "Infoga program-ID",
"APP_ID_TYPE_ERROR": "Program-ID måste vara ett nummer",
"NUMBER_GREATER_THAN": "Värdet måste vara större än eller lika med {{ value }}"
}
},
"PROCESS_CONTEXT_MENU": "Innehållsmeny för processlista"
},
"GROUP-TITLE1-TRANSLATION-KEY": "Anpassad titelöversättning ett",
"GROUP-TITLE2-TRANSLATION-KEY": "Anpassad titelöversättning två",
+4 -2
View File
@@ -270,14 +270,16 @@
},
"TOOLTIP_MESSAGE": {
"START_INPUT": "开始页面"
}
},
"TASK_CONTEXT_MENU": "任务列表上下文菜单"
},
"PROCESS_LIST_DEMO": {
"ERROR_MESSAGE": {
"APP_ID_REQUIRED_ERROR": "插入应用程序 ID",
"APP_ID_TYPE_ERROR": "应用程序 ID 必须为数字",
"NUMBER_GREATER_THAN": "值必须大于或等于 {{ value }}"
}
},
"PROCESS_CONTEXT_MENU": "流程列表上下文菜单"
},
"GROUP-TITLE1-TRANSLATION-KEY": "自定义标题翻译 1",
"GROUP-TITLE2-TRANSLATION-KEY": "自定义标题翻译 2",
+36 -5
View File
@@ -22,7 +22,10 @@
"redirectSilentIframeUri": "{protocol}//{hostname}{:port}/assets/silent-refresh.html",
"redirectUri": "/",
"redirectUriLogout": "/logout",
"publicUrls": ["**/preview/s/*", "**/settings"]
"publicUrls": [
"**/preview/s/*",
"**/settings"
]
},
"application": {
"storagePrefix": "ADF",
@@ -378,7 +381,8 @@
"selector": "date-range",
"settings": {
"field": "cm:created",
"dateFormat": "DD-MMM-YY"
"dateFormat": "DD-MMM-YY",
"maxDate": "today"
}
}
},
@@ -459,6 +463,14 @@
"nocase": true
}
},
"folders": {
"excluded": [
".git"
],
"match-options": {
"nocase": true
}
},
"logLevel": "trace",
"activiti": {
"rest": {
@@ -752,7 +764,7 @@
},
"adf-cloud-start-process": {
"name": "My Default Cloud Name"
},
},
"adf-process-list": {
"presets": {
"default": [
@@ -814,9 +826,28 @@
"presets": {
"default": {
"exif:exif": "*"
}
},
"all-aspects": "*",
"custom-title": [{
"title": "Exif",
"items": [
{
"aspect": "exif:exif",
"editing": false,
"properties": [
"exif:pixelXDimension",
{
"title": "Custom YDimension Name",
"name": "exif:pixelYDimension"
}
]
}
]
}]
},
"multi-value-pipe-separator": ", "
"multi-value-pipe-separator": ", ",
"multi-value-chips": true,
"copy-to-clipboard-action": true
},
"sideNav": {
"expandedSidenav": true,
@@ -4,7 +4,7 @@
<mat-card class="app-card-view">
<adf-card-view
[properties]="properties"
[editable]="true"
[editable]="isEditable"
[displayClearAction]="showClearDateAction"
[displayNoneOption]="showNoneOption">
</adf-card-view>
@@ -78,8 +78,43 @@ export class CardViewComponent implements OnInit, OnDestroy {
value: 'Spock',
key: 'name',
default: 'default bar',
editable: this.isEditable
}),
new CardViewTextItemModel({
label: 'CardView Text Item - Protected value',
value: 'Spock',
key: 'name',
default: 'default bar',
multiline: false,
icon: 'icon',
editable: false
}),
new CardViewTextItemModel({
label: 'CardView Text Item - Multiline',
value: 'Spock',
key: 'name',
default: 'default bar',
multiline: true,
icon: 'icon',
editable: this.isEditable
}),
new CardViewTextItemModel({
label: 'CardView Text Item - Default Value',
value: '',
key: 'name',
default: 'default bar',
multiline: false,
icon: 'icon',
editable: this.isEditable
}),
new CardViewTextItemModel({
label: 'CardView Text Item - Multivalue (chips)',
value: [1, 2, 3],
key: 'name',
default: 'default bar',
multiline: true,
multivalued: true,
icon: 'icon',
editable: this.isEditable
}),
new CardViewDateItemModel({
@@ -105,6 +140,13 @@ export class CardViewComponent implements OnInit, OnDestroy {
default: false,
editable: this.isEditable
}),
new CardViewBoolItemModel({
label: 'Agree to all terms and conditions',
value: true,
key: 'boolean',
default: false,
editable: this.isEditable
}),
new CardViewIntItemModel({
label: 'CardView Int Item',
value: 213,
@@ -118,14 +160,20 @@ export class CardViewComponent implements OnInit, OnDestroy {
key: 'float',
default: 0.0,
editable: this.isEditable,
pipes: [{ pipe: this.decimalNumberPipe}]
pipes: [{ pipe: this.decimalNumberPipe }]
}),
new CardViewKeyValuePairsItemModel({
label: 'CardView Key-Value Pairs Item',
value: [],
value: [{ name: 'hey', value: 'you' }, { name: 'hey', value: 'you' }],
key: 'key-value-pairs',
editable: this.isEditable
}),
new CardViewKeyValuePairsItemModel({
label: 'CardView Key-Value Pairs Item',
value: [{ name: 'hey', value: 'you' }, { name: 'hey', value: 'you' }],
key: 'key-value-pairs',
editable: false
}),
new CardViewSelectItemModel({
label: 'CardView Select Item',
value: 'one',
@@ -146,6 +194,7 @@ export class CardViewComponent implements OnInit, OnDestroy {
default: 'click here',
editable: this.isEditable,
clickable: true,
icon: 'close',
clickCallBack: () => {
this.respondToCardClick();
}
@@ -154,14 +203,15 @@ export class CardViewComponent implements OnInit, OnDestroy {
label: 'CardView Array of items',
value: of([
{ icon: 'directions_bike', value: 'Zlatan' },
{ icon: 'directions_bike', value: 'Lionel Messi'},
{ value: 'Mohamed', directions_bike: 'save'},
{ value: 'Ronaldo'}
{ icon: 'directions_bike', value: 'Lionel Messi' },
{ value: 'Mohamed', directions_bike: 'save' },
{ value: 'Ronaldo' }
]),
key: 'array',
icon: 'edit',
default: 'Empty',
noOfItemsToDisplay: 2
noOfItemsToDisplay: 2,
editable: this.isEditable
})
];
}
@@ -63,15 +63,11 @@ export class CloudFiltersDemoComponent implements OnInit {
}
onTaskFilterSelected(filter) {
this.cloudLayoutService.setCurrentTaskFilterParam({id: filter && filter.id ? filter.id : ''});
const currentFilter = Object.assign({}, filter);
this.router.navigate([`/cloud/${this.appName}/tasks/`], { queryParams: currentFilter });
this.router.navigate([`/cloud/${this.appName}/tasks/`], { queryParams: filter });
}
onProcessFilterSelected(filter) {
this.cloudLayoutService.setCurrentProcessFilterParam({id: filter && filter.id ? filter.id : ''});
const currentFilter = Object.assign({}, filter);
this.router.navigate([`/cloud/${this.appName}/processes/`], { queryParams: currentFilter });
this.router.navigate([`/cloud/${this.appName}/processes/`], { queryParams: filter });
}
onTaskFilterOpen(): boolean {
@@ -37,6 +37,7 @@ import { Pagination } from '@alfresco/js-api';
export class ProcessesCloudDemoComponent implements OnInit, OnDestroy {
public static ACTION_SAVE_AS = 'saveAs';
public static ACTION_DELETE = 'delete';
static PROCESS_FILTER_PROPERTY_KEYS = 'adf-edit-process-filter';
@ViewChild('processCloud')
@@ -140,7 +141,12 @@ export class ProcessesCloudDemoComponent implements OnInit, OnDestroy {
}
onProcessFilterAction(filterAction: any) {
this.cloudLayoutService.setCurrentProcessFilterParam({ id: filterAction.filter.id });
if (filterAction.actionType === ProcessesCloudDemoComponent.ACTION_DELETE) {
this.cloudLayoutService.setCurrentProcessFilterParam({ index: 0 });
} else {
this.cloudLayoutService.setCurrentProcessFilterParam({ id: filterAction.filter.id });
}
if (filterAction.actionType === ProcessesCloudDemoComponent.ACTION_SAVE_AS) {
this.router.navigate([`/cloud/${this.appName}/processes/`], { queryParams: filterAction.filter });
}
@@ -30,6 +30,7 @@ import { takeUntil } from 'rxjs/operators';
export class TasksCloudDemoComponent implements OnInit, OnDestroy {
public static ACTION_SAVE_AS = 'saveAs';
public static ACTION_DELETE = 'delete';
static TASK_FILTER_PROPERTY_KEYS = 'adf-edit-task-filter';
@ViewChild('taskCloud')
@@ -133,7 +134,13 @@ export class TasksCloudDemoComponent implements OnInit, OnDestroy {
}
onTaskFilterAction(filterAction: any) {
this.cloudLayoutService.setCurrentTaskFilterParam({ id: filterAction.filter.id });
if (filterAction.actionType === TasksCloudDemoComponent.ACTION_DELETE) {
this.cloudLayoutService.setCurrentTaskFilterParam({ index: 0 });
} else {
this.cloudLayoutService.setCurrentTaskFilterParam({ id: filterAction.filter.id });
}
if (filterAction.actionType === TasksCloudDemoComponent.ACTION_SAVE_AS) {
this.router.navigate([`/cloud/${this.appName}/tasks/`], { queryParams: filterAction.filter });
}
@@ -227,5 +227,24 @@
</adf-content-node-selector-panel>
</div>
</mat-expansion-panel>
<mat-expansion-panel>
<mat-expansion-panel-header>
<mat-panel-title>
<h2>shows files</h2>
</mat-panel-title>
<mat-panel-description>
<label class="app-content-node-selector-demo-basic-label">
Shows files in search result
</label>
</mat-panel-description>
</mat-expansion-panel-header>
<div class="app-content-node-selector-demo-basic-table">
<adf-content-node-selector-panel
[currentFolderId]="'-root-'"
[showFilesInResult]="true">
</adf-content-node-selector-panel>
</div>
</mat-expansion-panel>
</mat-accordion>
</main>
@@ -49,7 +49,7 @@
[color]="'primary'"
(change)="toggleMulti()"
[checked]="multi">
multi accordion
Multi accordion
</mat-slide-toggle>
</p>
@@ -59,7 +59,7 @@
[color]="'primary'"
(change)="toggleReadOnly()"
[checked]="isReadOnly">
Editable
Read Only
</mat-slide-toggle>
</p>
@@ -113,7 +113,9 @@
<mat-icon>get_app</mat-icon>
</button>
<button mat-icon-button
data-automation-id="delete-toolbar-button"
adf-check-allowable-operation="delete"
permanent=true
[adf-nodes]="documentList.selection"
title="{{ 'DOCUMENT_LIST.TOOLBAR.DELETE' | translate }}"
(delete)="onDeleteActionSuccess($event)"
@@ -29,8 +29,9 @@
}
}
.app-datatable-card .app-lock-button {
.adf-datatable-card .app-lock-button {
top: -10px;
position: absolute;
}
.app-site-container-style {
@@ -47,6 +47,8 @@
[state]="taskFilter?.filter?.state"
[sort]="taskFilter?.filter?.sort"
[landingTaskId]="currentTaskId"
[showContextMenu]="taskContextMenu"
(showRowContextMenu)="onShowTaskRowContextMenu($event)"
(rowClick)="onTaskRowClick($event)"
(success)="onSuccessTaskList()"
(row-click)="onRowClick($event)"
@@ -74,6 +76,7 @@
<adf-task-details #activitiDetails
[debugMode]="true"
[taskId]="currentTaskId"
[showFormTitle]="true"
[fieldValidators]="fieldValidators"
[showHeaderContent]="showHeaderContent"
(formCompleted)="onFormCompleted()"
@@ -161,6 +164,8 @@
[page]="processPage"
[size]="paginationPageSize"
[sort]="processFilter?.filter?.sort"
[showContextMenu]="processContextMenu"
(showRowContextMenu)="onShowProcessRowContextMenu($event)"
(rowClick)="onProcessRowClick($event)"
(row-dblclick)="onProcessRowDblClick($event)"
[multiselect]="multiSelectProcess"
@@ -213,6 +218,7 @@
<adf-start-process
#activitiStartProcess
[appId]="appId"
[title]="'ADF_PROCESS_LIST.START_PROCESS.FORM.TITLE'"
[name]="defaultProcessName"
[processDefinitionName]="defaultProcessDefinitionName"
(formContentClicked)="onContentClick($event)"
@@ -279,6 +285,12 @@
<mat-slide-toggle id="adf-task-multiselect" [(ngModel)]="multiSelectTask" >Multiselect Task List
</mat-slide-toggle>
</div>
<div>
<mat-slide-toggle id="adf-task-context-menu" [(ngModel)]="taskContextMenu" >Show Task list Context menu</mat-slide-toggle>
</div>
<div>
<mat-slide-toggle id="adf-process-context-menu" [(ngModel)]="processContextMenu" >Show Process list Context menu</mat-slide-toggle>
</div>
<br>
<mat-radio-group [(ngModel)]="selectionMode">
<mat-radio-button value="multiple">multiple</mat-radio-button>
@@ -36,7 +36,7 @@ import {
import {
FORM_FIELD_VALIDATORS, FormRenderingService, FormService,
DynamicTableRow, ValidateDynamicTableRowEvent, AppConfigService, PaginationComponent, UserPreferenceValues,
AlfrescoApiService, UserPreferencesService, LogService
AlfrescoApiService, UserPreferencesService, LogService, DataCellEvent
} from '@alfresco/adf-core';
import { AnalyticsReportListComponent } from '@alfresco/adf-insights';
@@ -118,6 +118,8 @@ export class ProcessServiceComponent implements AfterViewInit, OnDestroy, OnInit
multiSelectTask = false;
multiSelectProcess = false;
selectionMode = 'single';
taskContextMenu = false;
processContextMenu = false;
private tabs = { tasks: 0, processes: 1, reports: 2 };
@@ -526,4 +528,33 @@ export class ProcessServiceComponent implements AfterViewInit, OnDestroy, OnInit
this.currentTaskId = null;
}
onShowTaskRowContextMenu(event: DataCellEvent) {
event.value.actions = [
{
data: event.value.row['obj'],
model: {
key: 'taskDetails',
icon: 'open',
title: 'TASK_LIST_DEMO.TASK_CONTEXT_MENU',
visible: true
},
subject: new Subject()
}
];
}
onShowProcessRowContextMenu(event: DataCellEvent) {
event.value.actions = [
{
data: event.value.row['obj'],
model: {
key: 'processDetails',
icon: 'open',
title: 'PROCESS_LIST_DEMO.PROCESS_CONTEXT_MENU',
visible: true
},
subject: new Subject()
}
];
}
}
+2 -1
View File
@@ -215,7 +215,7 @@ for more information about installing and using the source code.
| [JWT helper service](core/services/jwt-helper.service.md) | Decodes a JSON Web Token (JWT) to a JavaScript object. | [Source](../lib/core/services/jwt-helper.service.ts) |
| [Log Service](core/services/log.service.md) | Provides log functionality. | [Source](../lib/core/services/log.service.ts) |
| [Login Dialog service](core/services/login-dialog.service.md) | Manages login dialogs. | [Source](../lib/core/services/login-dialog.service.ts) |
| [Node Service](core/services/node.service.md) | Gets Alfresco Repository node metadata and creates nodes with metadata. | [Source](../lib/core/form/services/node.service.ts) |
| [Node Service](core/services/node.service.md) | use Nodes Api service instead of this. | [Source](../lib/core/form/services/node.service.ts) |
| [Nodes Api service](core/services/nodes-api.service.md) | Accesses and manipulates ACS document nodes using their node IDs. | [Source](../lib/core/services/nodes-api.service.ts) |
| [Notification Service](core/services/notification.service.md) | Shows a notification message with optional feedback. | [Source](../lib/core/notifications/services/notification.service.ts) |
| [Page Title service](core/services/page-title.service.md) | Sets the page title. | [Source](../lib/core/services/page-title.service.ts) |
@@ -387,6 +387,7 @@ for more information about installing and using the source code.
| [Task Attachment List Component](process-services/components/task-attachment-list.component.md) | Displays documents attached to a specified task. | [Source](../lib/process-services/src/lib/attachment/task-attachment-list.component.ts) |
| [Task Details component](process-services/components/task-details.component.md) | Shows the details of the task ID passed in as input. | [Source](../lib/process-services/src/lib/task-list/components/task-details.component.ts) |
| [Task Filters component](process-services/components/task-filters.component.md) | Shows all available filters. | [Source](../lib/process-services/src/lib/task-list/components/task-filters.component.ts) |
| [Task Form component](process-services/components/task-form.component.md) | Shows a form for a task. | [Source](../lib/process-services/src/lib/task-list/components/task-form/task-form.component.ts) |
| [Task Header component](process-services/components/task-header.component.md) | Shows all the information related to a task. | [Source](../lib/process-services/src/lib/task-list/components/task-header.component.ts) |
| [Task List component](process-services/components/task-list.component.md) | Renders a list containing all the tasks matched by the parameters specified. | [Source](../lib/process-services/src/lib/task-list/components/task-list.component.ts) |
| [Task Standalone component](process-services/components/task-standalone.component.md) | This component can be used when the task doesn't belong to any processes. | [Source](../lib/process-services/src/lib/task-list/components/task-standalone.component.ts) |
-1
View File
@@ -56,7 +56,6 @@
title: 'Insights API'
children:
- components: 'Components'
- roadmap.md: 'Roadmap'
- versionIndex.md: 'Version index'
- compatibility.md: 'Version compatibility'
- release-notes: 'Release notes'
@@ -20,8 +20,11 @@ Displays and edits metadata related to a node.
- [Application config presets](#application-config-presets)
- [Layout oriented config](#layout-oriented-config)
- [Displaying all properties](#displaying-all-properties)
- [Making aspects and properties read only](#making-aspects-and-properties-read-only)
- [What happens when there is a whitelisted aspect in the config but the given node doesn't relate to that aspect](#what-happens-when-there-is-a-whitelisted-aspect-in-the-config-but-the-given-node-doesnt-relate-to-that-aspect)
- [Multi value card properties](#multi-value-card-properties)
- [Use chips for multi value properties](#use-chips-for-multi-value-properties)
- [Copy to Clipboard on click](#copy-to-clipboard-on-click)
## Basic Usage
@@ -210,6 +213,42 @@ A more complex config is shown in the example below:
}
```
#### Custom property title example
In layout oriented configuration, the metadata property title can be overridden from ADF as below.
```json
{
"name": "exif:pixelYDimension", // your desired property name
"title": "Custom YDimension Name" // your desired property title
}
```
```json
"content-metadata": {
"presets": {
"kittens": [
{
"title": "GROUP-TITLE1-TRANSLATION-KEY",
"items": [
{
"aspect": "exif:exif",
"properties": [
"exif:pixelXDimension",
{
"title": "Custom YDimension Name",
"name": "exif:pixelYDimension"
}
]
}
]
}
```
Note: The desired property title should be valid. otherwise it will take default value.
![custom-ptoperty-title](../../docassets/images/content-meta-data-custom-ptoperty-title.png)
The result of this config would be two accordion groups with the following properties:
| GROUP-TITLE1-TRANSLATION-KEY |
@@ -229,6 +268,31 @@ The result of this config would be two accordion groups with the following prope
| kitten:favourite-food |
| kitten:recommended-food |
#### Making properties editable
When using the layout oriented config you can also set whether or not the properties are going to be editable.
```json
...
"content-metadata": {
"presets": {
"kitten-images": [{
"title": "TRANSLATABLE_TITLE_FOR_GROUP_1",
"items": [
{
"aspect": "custom:aspect",
"properties": "*",
"editable": false
}
]
}]
}
}
...
```
As seen above in the example the `custom:aspect` aspect will always be on read-only mode since these properties are not editable. If the editable is enabled, then these properties will be able to be edited by the user.
### Displaying all properties
You can list all the properties by simply adding the `includeAll: boolean` to your config. This config will display all the aspects and properties available for that specific file.
@@ -282,6 +346,24 @@ example below shows this with an aspect-oriented config:
},
```
### Making aspects and properties read only
Whenever you have properties that you want to protect from users editing their values you can add them to your configuration to make them read only. `readOnlyAspects` will make the whole aspect and its properties non editable.
If you want to disable the editing for specific properties you will need to add them to the `readOnlyProperties` property.
```json
"content-metadata": {
"presets": {
"default": {
"includeAll": true,
"readOnlyAspects": ["cm:author"],
"readOnlyProperties": ["cm:fileVersion"]
}
}
},
```
## What happens when there is a whitelisted aspect in the config but the given node doesn't relate to that aspect
Nothing - since this aspect is not related to the node, it will simply be ignored and not
@@ -302,6 +384,32 @@ To customize the separator used by this card you can set it in your `app.config.
"exif:exif": [ "exif:pixelXDimension", "exif:pixelYDimension"]
}
},
"multi-value-pipe-separator" : " - "
"multi-value-pipe-separator" : " - ",
"multi-value-chips" : false
},
```
### Use chips for multi value properties
If you want to display chips fo each value instead of a composed string you just need to enable it in the content-metadata config.
![Chips for multi value properties](../../docassets/images/metadata-chips.png)
## Copy to Clipboard on click
For easier interaction with metadata properties you can enable the Copy to Clipboard feature from your configuration in the `app.config.json` file.
Once you have enabled this feature you will be able to double click on your metadata properties and they will get copied to your clipboard for you to use.
```json
"content-metadata": {
"presets": {
"default": {
"includeAll": true,
"exclude": "exif:exif",
"exif:exif": [ "exif:pixelXDimension", "exif:pixelYDimension"]
}
},
"copy-to-clipboard-action": true
}
```
@@ -41,6 +41,7 @@ Opens a [Content Node Selector](content-node-selector.component.md) in its own
| excludeSiteContent | `string[]` | | Custom list of site content componentIds. Used to filter out the corresponding items from the displayed nodes |
| rowFilter | [`RowFilter`](../../../lib/content-services/src/lib/document-list/data/row-filter.model.ts) | | Custom row filter function. See the [Row Filter Model](row-filter.model.md) page for more information. |
| showDropdownSiteList | `boolean` | | Toggle sites list dropdown rendering |
| showFilesInResult | `void` | | Shows the files and folders in the search result |
| showSearch | `boolean` | | Toggle search input rendering |
### Events
@@ -39,6 +39,7 @@ Implements a date range [widget](../../../lib/testing/src/lib/core/pages/form/wi
| ---- | ---- | ----------- |
| field | string | Field to apply the query to. Required value |
| dateFormat | string | Date format. Dates used by the datepicker are [Moment.js](https://momentjs.com/docs/#/parsing/string-format/) instances, so you can use any date format supported by Moment. Default is 'DD/MM/YYYY'. |
| maxDate | string | A fixed date or the string `"today"` that will set the maximum searchable date. Default is no maximum. |
## Details
@@ -50,7 +51,7 @@ in a search query.
You can set the date range picker to work with any date format your app requires. You can use
any date format supported by [Moment.js](https://momentjs.com/docs/#/parsing/string-format/)
in the `dateFormat` setting:
in the `dateFormat` and in the `maxDate` setting:
```json
{
@@ -64,7 +65,8 @@ in the `dateFormat` setting:
"selector": "date-range",
"settings": {
"field": "cm:created",
"dateFormat": "DD-MMM-YY"
"dateFormat": "DD-MMM-YY",
"maxDate": "02-Mar-20"
}
}
}
@@ -28,11 +28,11 @@ Displays and manages dialogs for selecting content to open, copy or upload.
- _excludeSiteContent:_ `string[]` - (Optional) The site content that should be filtered out
- **Returns** [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`Node`](https://github.com/Alfresco/alfresco-js-api/blob/development/src/api/content-rest-api/docs/Node.md)`[]>` - Information about files that were copied/moved
- **openFileBrowseDialogByFolderId**(folderNodeId: `string`): [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`Node`](https://github.com/Alfresco/alfresco-js-api/blob/development/src/api/content-rest-api/docs/Node.md)`[]>`<br/>
Opens a file browser at a chosen folder location.
Opens a file browser at a chosen folder location. shows files and folders in the dialog search result.
- _folderNodeId:_ `string` - ID of the folder to use
- **Returns** [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`Node`](https://github.com/Alfresco/alfresco-js-api/blob/development/src/api/content-rest-api/docs/Node.md)`[]>` - Information about the selected file(s)
- **openFileBrowseDialogBySite**(): [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`Node`](https://github.com/Alfresco/alfresco-js-api/blob/development/src/api/content-rest-api/docs/Node.md)`[]>`<br/>
Opens a file browser at a chosen site location.
Opens a file browser at a chosen site location. shows files and folders in the dialog search result.
- **Returns** [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`Node`](https://github.com/Alfresco/alfresco-js-api/blob/development/src/api/content-rest-api/docs/Node.md)`[]>` - Information about the selected file(s)
- **openFolderBrowseDialogByFolderId**(folderNodeId: `string`): [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`Node`](https://github.com/Alfresco/alfresco-js-api/blob/development/src/api/content-rest-api/docs/Node.md)`[]>`<br/>
Opens a folder browser at a chosen folder location.
@@ -45,10 +45,11 @@ Displays and manages dialogs for selecting content to open, copy or upload.
Opens a lock node dialog.
- _contentEntry:_ [`Node`](https://github.com/Alfresco/alfresco-js-api/blob/development/src/api/content-rest-api/docs/Node.md) - [Node](https://github.com/Alfresco/alfresco-js-api/blob/development/src/api/content-rest-api/docs/Node.md) to lock
- **Returns** [`Subject`](http://reactivex.io/documentation/subject.html)`<string>` - Error/status message (if any)
- **openUploadFileDialog**(action: `string`, contentEntry: [`Node`](https://github.com/Alfresco/alfresco-js-api/blob/development/src/api/content-rest-api/docs/Node.md)): [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`Node`](https://github.com/Alfresco/alfresco-js-api/blob/development/src/api/content-rest-api/docs/Node.md)`[]>`<br/>
- **openUploadFileDialog**(action: `string`, contentEntry: [`Node`](https://github.com/Alfresco/alfresco-js-api/blob/development/src/api/content-rest-api/docs/Node.md), showFilesInResult: `boolean` = `false`): [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`Node`](https://github.com/Alfresco/alfresco-js-api/blob/development/src/api/content-rest-api/docs/Node.md)`[]>`<br/>
Opens a dialog to choose a file to upload.
- _action:_ `string` - Name of the action to show in the title
- _contentEntry:_ [`Node`](https://github.com/Alfresco/alfresco-js-api/blob/development/src/api/content-rest-api/docs/Node.md) - Item to upload
- _showFilesInResult:_ `boolean` - Show files in dialog search result
- **Returns** [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`Node`](https://github.com/Alfresco/alfresco-js-api/blob/development/src/api/content-rest-api/docs/Node.md)`[]>` - Information about the chosen file(s)
- **openUploadFolderDialog**(action: `string`, contentEntry: [`Node`](https://github.com/Alfresco/alfresco-js-api/blob/development/src/api/content-rest-api/docs/Node.md)): [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`Node`](https://github.com/Alfresco/alfresco-js-api/blob/development/src/api/content-rest-api/docs/Node.md)`[]>`<br/>
Opens a dialog to choose folders to upload.
@@ -41,29 +41,34 @@ Manages Document List information that is specific to a user.
Is the folder ID a "-my", "-root-", or "-shared-" alias?
- _folderId:_ `string` - Folder ID name to check
- **Returns** `boolean` - True if the ID is one of the supported sources, false otherwise
- **loadFavorites**(pagination: [`PaginationModel`](../../../lib/core/models/pagination.model.ts), includeFields: `string[]` = `[]`): [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`NodePaging`](https://github.com/Alfresco/alfresco-js-api/blob/development/src/api/content-rest-api/docs/NodePaging.md)`>`<br/>
- **loadFavorites**(pagination: [`PaginationModel`](../../../lib/core/models/pagination.model.ts), includeFields: `string[]` = `[]`, where?: `string`): [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`NodePaging`](https://github.com/Alfresco/alfresco-js-api/blob/development/src/api/content-rest-api/docs/NodePaging.md)`>`<br/>
Gets favorite files for the current user.
- _pagination:_ [`PaginationModel`](../../../lib/core/models/pagination.model.ts) - Specifies how to paginate the results
- _includeFields:_ `string[]` - List of data field names to include in the results
- _where:_ `string` - (Optional) A string to restrict the returned objects by using a predicate
- **Returns** [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`NodePaging`](https://github.com/Alfresco/alfresco-js-api/blob/development/src/api/content-rest-api/docs/NodePaging.md)`>` - List of favorite files
- **loadFolderByNodeId**(nodeId: `string`, pagination: [`PaginationModel`](../../../lib/core/models/pagination.model.ts), includeFields: `string[]` = `[]`): `any`<br/>
- **loadFolderByNodeId**(nodeId: `string`, pagination: [`PaginationModel`](../../../lib/core/models/pagination.model.ts), includeFields: `string[]` = `[]`, where?: `string`): `any`<br/>
Gets a folder's contents.
- _nodeId:_ `string` - ID of the target folder node
- _pagination:_ [`PaginationModel`](../../../lib/core/models/pagination.model.ts) - Specifies how to paginate the results
- _includeFields:_ `string[]` - List of data field names to include in the results
- _where:_ `string` - (Optional) Filters the [`Node`](https://github.com/Alfresco/alfresco-js-api/blob/development/src/api/content-rest-api/docs/Node.md) list using the _where_ condition of the REST API (for example, isFolder=true). See the REST API documentation for more information.
- **Returns** `any` - List of items contained in the folder
- **loadMemberSites**(pagination: [`PaginationModel`](../../../lib/core/models/pagination.model.ts)): [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`SiteMemberPaging`](https://github.com/Alfresco/alfresco-js-api/blob/development/src/api/content-rest-api/docs/SiteMemberPaging.md)`>`<br/>
- **loadMemberSites**(pagination: [`PaginationModel`](../../../lib/core/models/pagination.model.ts), where?: `string`): [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`SiteMemberPaging`](https://github.com/Alfresco/alfresco-js-api/blob/development/src/api/content-rest-api/docs/SiteMemberPaging.md)`>`<br/>
Gets sites that the current user is a member of.
- _pagination:_ [`PaginationModel`](../../../lib/core/models/pagination.model.ts) - Specifies how to paginate the results
- _where:_ `string` - (Optional) A string to restrict the returned objects by using a predicate
- **Returns** [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`SiteMemberPaging`](https://github.com/Alfresco/alfresco-js-api/blob/development/src/api/content-rest-api/docs/SiteMemberPaging.md)`>` - List of sites
- **loadSharedLinks**(pagination: [`PaginationModel`](../../../lib/core/models/pagination.model.ts), includeFields: `string[]` = `[]`): [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`SharedLinkPaging`](https://github.com/Alfresco/alfresco-js-api/blob/development/src/api/content-rest-api/docs/SharedLinkPaging.md)`>`<br/>
- **loadSharedLinks**(pagination: [`PaginationModel`](../../../lib/core/models/pagination.model.ts), includeFields: `string[]` = `[]`, where?: `string`): [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`SharedLinkPaging`](https://github.com/Alfresco/alfresco-js-api/blob/development/src/api/content-rest-api/docs/SharedLinkPaging.md)`>`<br/>
Gets shared links for the current user.
- _pagination:_ [`PaginationModel`](../../../lib/core/models/pagination.model.ts) - Specifies how to paginate the results
- _includeFields:_ `string[]` - List of data field names to include in the results
- _where:_ `string` - (Optional) A string to restrict the returned objects by using a predicate
- **Returns** [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`SharedLinkPaging`](https://github.com/Alfresco/alfresco-js-api/blob/development/src/api/content-rest-api/docs/SharedLinkPaging.md)`>` - List of shared links
- **loadSites**(pagination: [`PaginationModel`](../../../lib/core/models/pagination.model.ts)): [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`NodePaging`](https://github.com/Alfresco/alfresco-js-api/blob/development/src/api/content-rest-api/docs/NodePaging.md)`>`<br/>
- **loadSites**(pagination: [`PaginationModel`](../../../lib/core/models/pagination.model.ts), where?: `string`): [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`NodePaging`](https://github.com/Alfresco/alfresco-js-api/blob/development/src/api/content-rest-api/docs/NodePaging.md)`>`<br/>
Gets all sites in the repository.
- _pagination:_ [`PaginationModel`](../../../lib/core/models/pagination.model.ts) - Specifies how to paginate the results
- _where:_ `string` - (Optional) A string to restrict the returned objects by using a predicate
- **Returns** [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`NodePaging`](https://github.com/Alfresco/alfresco-js-api/blob/development/src/api/content-rest-api/docs/NodePaging.md)`>` - List of sites
- **loadTrashcan**(pagination: [`PaginationModel`](../../../lib/core/models/pagination.model.ts), includeFields: `string[]` = `[]`): [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`DeletedNodesPaging`](https://github.com/Alfresco/alfresco-js-api/blob/master/src/alfresco-core-rest-api/docs/DeletedNodesPaging.md)`>`<br/>
Gets all items currently in the trash.
@@ -95,7 +95,7 @@ export class MyView {
```
You will probably want to set up all your custom actions at the application root level or
with a custom application service.
with a custom [application service](../../../lib/testing/src/lib/core/actions/APS/applications.service.ts).
## See also
@@ -95,7 +95,7 @@ export class MyView {
```
You will probably want to set up all your custom actions at the application root level or
with a custom application service.
with a custom [application service](../../../lib/testing/src/lib/core/actions/APS/applications.service.ts).
## See also
@@ -108,11 +108,14 @@ Defining properties from Typescript:
| Name | Type | Default value | Description |
| ---- | ---- | ------------- | ----------- |
| copyToClipboardAction | `boolean` | true | Toggles whether or not to enable copy to clipboard action. |
| displayClearAction | `boolean` | true | Toggles whether or not to display clear action. |
| displayEmpty | `boolean` | true | Toggles whether or not to show empty items in non-editable mode. |
| displayNoneOption | `boolean` | true | Toggles whether or not to display none option. |
| editable | `boolean` | | Toggles whether or not the items can be edited. |
| multiValueSeparator | `string` | DEFAULT_SEPARATOR | String separator between multi-value property items. |
| properties | [`CardViewItem`](../../../lib/core/card-view/interfaces/card-view-item.interface.ts)`[]` | | (**required**) Items to show in the card view. |
| useChipsForMultiValueProperty | `boolean` | true | Toggles whether or not to enable chips for multivalued properties. |
## Details
@@ -189,6 +192,9 @@ const textItemProperty = new CardViewTextItemModel(options);
| editable | boolean | false | Toggles whether the item is editable |
| clickable | boolean | false | Toggles whether the property responds to clicks |
| clickableCallBack | function | null | Function to execute when click the element |
| copyToClipboardAction | `boolean` | true | Toggles whether or not to enable copy to clipboard action. |
| useChipsForMultiValueProperty | `boolean` | true | Toggles whether or not to enable chips for multivalued properties. |
| multiValueSeparator | `string` | ',' | String separator between multi-value property items. |
| icon | string | | The material icon to show beside the item if it is clickable |
| multiline | boolean | false | Single or multiline text |
| pipes | [`CardViewTextItemPipeProperty`](../../../lib/core/card-view/interfaces/card-view-textitem-pipe-property.interface.ts)\[] | \[] | Pipes to be applied to the text before display |
@@ -242,6 +248,7 @@ const dateItemProperty = new CardViewDateItemModel(options);
| ---- | ---- | ------- | ----------- |
| label\* | string | | Item label |
| value\* | any | | The original data value for the item |
| copyToClipboardAction | `boolean` | true | Toggles whether or not to enable copy to clipboard action. |
| key\* | string | | Identifying key (important when editing the item) |
| default | any | | The default value to display if the value is empty |
| displayValue\* | any | | The value to display |
+1 -1
View File
@@ -28,7 +28,7 @@ Provides a universal way of rendering registered and named icons.
| Name | Type | Default value | Description |
| ---- | ---- | ------------- | ----------- |
| color | `ThemePalette` | | Theme color palette for the component. |
| color | [`ThemePalette`](https://github.com/angular/components/blob/master/src/material/core/common-behaviors/color.ts) | | Theme color palette for the component. |
| value | `string` | | Icon value, which can be either a ligature name or a custom icon in the format `[namespace]:[name]`. |
## Details
+1 -1
View File
@@ -74,7 +74,7 @@ pushed to the right by a spacer:
| Name | Type | Default value | Description |
| ---- | ---- | ------------- | ----------- |
| color | `string` | | Toolbar color. Can be changed to empty value (default), `primary`, `accent` or `warn`. |
| color | [`ThemePalette`](https://github.com/angular/components/blob/master/src/material/core/common-behaviors/color.ts) | | Toolbar color. Can be changed to empty value (default), `primary`, `accent` or `warn`. |
| title | `string` | "" | Toolbar title. |
## Details
+3 -3
View File
@@ -23,8 +23,8 @@ Shows user information.
| ---- | ---- | ------------- | ----------- |
| 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 | `string` | "after" | Custom choice for opening the menu at the bottom. Can be `before` or `after`. |
| menuPositionY | `string` | "below" | Custom choice for opening the menu at the bottom. Can be `above` or `below`. |
| 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. |
@@ -33,4 +33,4 @@ 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
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)
@@ -66,6 +66,11 @@ Provides authentication to ACS and APS.
- **isLoggedIn**(): `boolean`<br/>
Checks if the user logged in.
- **Returns** `boolean` - True if logged in, false otherwise
- **isLoggedInWith**(provider: `string`): `boolean`<br/>
- _provider:_ `string` -
- **Returns** `boolean` -
- **isOauth**(): `boolean`<br/>
Does the provider support OAuth?
- **Returns** `boolean` - True if supported, false otherwise
@@ -126,6 +126,16 @@ respondToCardClick(cn: ClickNotification) {
Note that this function will only be called if the `clickable` property of the model object is set to true for this item.
## Update cardview update item
[`updateElement`](../../../lib/core/card-view/services/card-view-update.service.ts) function helps to update the card view item. It takes the [`CardViewBaseItemModel`](../../../lib/core/card-view/models/card-view-baseitem.model.ts) type object as parameter.
Example
```javascript
this.cardViewUpdateService.updateElement(cardViewBaseItemModel)
```
## See also
- [Card view component](../components/card-view.component.md)
@@ -13,6 +13,10 @@ Gets version and license information for Process Services and Content Services.
### Methods
- **getBPMSystemProperties**(): [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`SystemPropertiesRepresentation`](../../../node_modules/@alfresco/js-api/src/api/activiti-rest-api/model/systemPropertiesRepresentation.ts)`>`<br/>
- **Returns** [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`SystemPropertiesRepresentation`](../../../node_modules/@alfresco/js-api/src/api/activiti-rest-api/model/systemPropertiesRepresentation.ts)`>` -
- **getBpmProductInfo**(): [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`BpmProductVersionModel`](../../../lib/core/models/product-version.model.ts)`>`<br/>
Gets product information for Process Services.
- **Returns** [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`BpmProductVersionModel`](../../../lib/core/models/product-version.model.ts)`>` - ProductVersionModel containing product details
+8 -6
View File
@@ -5,7 +5,9 @@ Status: Active
Last reviewed: 2018-11-20
---
# [Node Service](../../../lib/core/form/services/node.service.ts "Defined in node.service.ts")
# [Node Service](../../../lib/core/form/services/node.service.ts "Defined in node.service.ts") **Deprecated**
use [Nodes Api service](./nodes-api.service.md) instead of this.
Gets Alfresco Repository node metadata and creates nodes with metadata.
@@ -14,24 +16,24 @@ Gets Alfresco Repository node metadata and creates nodes with metadata.
### Methods
- **createNode**(name: `string`, nodeType: `string`, properties: `any`, path: `string`): [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`NodeEntry`](https://github.com/Alfresco/alfresco-js-api/blob/master/src/alfresco-core-rest-api/docs/NodeEntry.md)`>`<br/>
Create a new Node from form metadata
(**Deprecated:** in 3.8.0, use `createNodeInsideRoot` method from NodesApiService instead. Create a new Node from form metadata)
- _name:_ `string` - [Node](https://github.com/Alfresco/alfresco-js-api/blob/development/src/api/content-rest-api/docs/Node.md) name
- _nodeType:_ `string` - [Node](https://github.com/Alfresco/alfresco-js-api/blob/development/src/api/content-rest-api/docs/Node.md) type
- _properties:_ `any` - [Node](https://github.com/Alfresco/alfresco-js-api/blob/development/src/api/content-rest-api/docs/Node.md) body properties
- _path:_ `string` - Path to the node
- **Returns** [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`NodeEntry`](https://github.com/Alfresco/alfresco-js-api/blob/master/src/alfresco-core-rest-api/docs/NodeEntry.md)`>` - The created node
- **createNodeMetadata**(nodeType: `string`, nameSpace: `any`, data: `any`, path: `string`, name?: `string`): [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`NodeEntry`](https://github.com/Alfresco/alfresco-js-api/blob/master/src/alfresco-core-rest-api/docs/NodeEntry.md)`>`<br/>
Create a new Node from form metadata.
(**Deprecated:** in 3.8.0, use NodesApiService instead. Create a new Node from form metadata.)
- _nodeType:_ `string` - [Node](https://github.com/Alfresco/alfresco-js-api/blob/development/src/api/content-rest-api/docs/Node.md) type
- _nameSpace:_ `any` - Namespace for properties
- _data:_ `any` - [Property](../../../lib/content-services/src/lib/content-metadata/interfaces/property.interface.ts) data to store in the node under namespace
- _path:_ `string` - Path to the node
- _name:_ `string` - (Optional) [Node](https://github.com/Alfresco/alfresco-js-api/blob/development/src/api/content-rest-api/docs/Node.md) name
- **Returns** [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`NodeEntry`](https://github.com/Alfresco/alfresco-js-api/blob/master/src/alfresco-core-rest-api/docs/NodeEntry.md)`>` - The created node
- **getNodeMetadata**(nodeId: `string`): [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`NodeMetadata`](../../../lib/core/form/models/node-metadata.model.ts)`>`<br/>
Get the metadata and the nodeType for a nodeId cleaned by the prefix.
- **getNodeMetadata**(nodeId: `string`): [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`NodeMetadata`](../../../lib/core/models/node-metadata.model.ts)`>`<br/>
(**Deprecated:** in 3.8.0, use NodesApiService instead. Get the metadata and the nodeType for a nodeId cleaned by the prefix.)
- _nodeId:_ `string` - ID of the target node
- **Returns** [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`NodeMetadata`](../../../lib/core/form/models/node-metadata.model.ts)`>` - Node metadata
- **Returns** [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`NodeMetadata`](../../../lib/core/models/node-metadata.model.ts)`>` - Node metadata
## Details
+19
View File
@@ -36,6 +36,21 @@ Accesses and manipulates ACS document nodes using their node IDs.
- _nodeBody:_ `any` - Data for the new node
- _options:_ `any` - Optional parameters supported by JS-API
- **Returns** [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`MinimalNode`](https://github.com/Alfresco/alfresco-js-api/blob/master/src/alfresco-core-rest-api/docs/NodeMinimalEntry.md)`>` - Details of the new node
- **createNodeInsideRoot**(name: `string`, nodeType: `string`, properties: `any`, path: `string`): [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`NodeEntry`](https://github.com/Alfresco/alfresco-js-api/blob/master/src/alfresco-core-rest-api/docs/NodeEntry.md)`>`<br/>
Create a new Node inside `-root-` folder
- _name:_ `string` - [Node](https://github.com/Alfresco/alfresco-js-api/blob/development/src/api/content-rest-api/docs/Node.md) name
- _nodeType:_ `string` - [Node](https://github.com/Alfresco/alfresco-js-api/blob/development/src/api/content-rest-api/docs/Node.md) type
- _properties:_ `any` - [Node](https://github.com/Alfresco/alfresco-js-api/blob/development/src/api/content-rest-api/docs/Node.md) body properties
- _path:_ `string` - Path to the node
- **Returns** [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`NodeEntry`](https://github.com/Alfresco/alfresco-js-api/blob/master/src/alfresco-core-rest-api/docs/NodeEntry.md)`>` - The created node
- **createNodeMetadata**(nodeType: `string`, nameSpace: `any`, data: `any`, path: `string`, name?: `string`): [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`NodeEntry`](https://github.com/Alfresco/alfresco-js-api/blob/master/src/alfresco-core-rest-api/docs/NodeEntry.md)`>`<br/>
Create a new Node from form metadata.
- _nodeType:_ `string` - [Node](https://github.com/Alfresco/alfresco-js-api/blob/development/src/api/content-rest-api/docs/Node.md) type
- _nameSpace:_ `any` - Namespace for properties
- _data:_ `any` - [Property](../../../lib/content-services/src/lib/content-metadata/interfaces/property.interface.ts) data to store in the node under namespace
- _path:_ `string` - Path to the node
- _name:_ `string` - (Optional) [Node](https://github.com/Alfresco/alfresco-js-api/blob/development/src/api/content-rest-api/docs/Node.md) name
- **Returns** [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`NodeEntry`](https://github.com/Alfresco/alfresco-js-api/blob/master/src/alfresco-core-rest-api/docs/NodeEntry.md)`>` - The created node
- **deleteNode**(nodeId: `string`, options: `any` = `{}`): [`Observable`](http://reactivex.io/documentation/observable.html)`<any>`<br/>
Moves a node to the trashcan.
- _nodeId:_ `string` - ID of the target node
@@ -51,6 +66,10 @@ Accesses and manipulates ACS document nodes using their node IDs.
- _nodeId:_ `string` - ID of the target node
- _options:_ `any` - Optional parameters supported by JS-API
- **Returns** [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`NodePaging`](https://github.com/Alfresco/alfresco-js-api/blob/development/src/api/content-rest-api/docs/NodePaging.md)`>` - List of child items from the folder
- **getNodeMetadata**(nodeId: `string`): [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`NodeMetadata`](../../../lib/core/models/node-metadata.model.ts)`>`<br/>
Get the metadata and the nodeType for a nodeId cleaned by the prefix.
- _nodeId:_ `string` - ID of the target node
- **Returns** [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`NodeMetadata`](../../../lib/core/models/node-metadata.model.ts)`>` - Node metadata
- **restoreNode**(nodeId: `string`): [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`MinimalNode`](https://github.com/Alfresco/alfresco-js-api/blob/master/src/alfresco-core-rest-api/docs/NodeMinimalEntry.md)`>`<br/>
Restores a node previously moved to the trashcan.
- _nodeId:_ `string` - ID of the node to restore
+23 -3
View File
@@ -18,7 +18,7 @@ Provides access to various APIs related to file upload features.
- _files:_ [`FileModel`](../../../lib/core/models/file.model.ts)`[]` - One or more separate parameters or an array of files to queue
- **Returns** [`FileModel`](../../../lib/core/models/file.model.ts)`[]` - Array of files that were not blocked from upload by the ignore list
- **cancelUpload**(files: [`FileModel`](../../../lib/core/models/file.model.ts)`[]`)<br/>
Cancels uploading of files.
Cancels uploading of files. If the file is smaller than 1 MB the file will be uploaded and then the node deleted to prevent having files that were aborted but still uploaded.
- _files:_ [`FileModel`](../../../lib/core/models/file.model.ts)`[]` - One or more separate parameters or an array of files specifying uploads to cancel
- **clearQueue**()<br/>
Clears the upload queue
@@ -88,5 +88,25 @@ node module.
}
```
Note that all standard glob patterns work and you can end patterns with a forward
slash `/` character to specify a directory.
From vesion 3.8.0 It's possible filter also for the folder whilst uploading a whole folder.
**app.config.json**
```json
{
"ecmHost": "http://localhost:3000/ecm",
"bpmHost": "http://localhost:3000/bpm",
"application": {
"name": "Alfresco"
},
"folders": {
"excluded": [".git"],
"match-options": {
"nocase": true
}
}
}
```
In this way all the files present in the .git folder won't be uploaded.
Please note that the filtering options available for the folders is the same as the one for the files.
Binary file not shown.

After

Width:  |  Height:  |  Size: 8.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

+1
View File
@@ -7,6 +7,7 @@ Github only: true
The pages linked below contain the licenses for all third party dependencies of ADF.
- [ADF v3.8](license-info-3.8.0.md)
- [ADF v3.7](license-info-3.7.0.md)
- [ADF v3.6](license-info-3.6.0.md)
- [ADF v3.5](license-info-3.5.0.md)
+727
View File
@@ -0,0 +1,727 @@
---
Title: License info, Alfresco Angular components 3.8.0
---
# License information for Alfresco Angular components 3.8.0
This page lists all third party libraries that ADF 3.8.0 depends on.
## Libraries
| Name | Version | License |
| --- | --- | --- |
| [@alfresco/adf-content-services](https://github.com/Alfresco/alfresco-ng2-components) | 3.8.0 | [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0) |
| [@alfresco/adf-core](https://github.com/Alfresco/alfresco-ng2-components) | 3.8.0 | [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0) |
| [@alfresco/adf-extensions](https://github.com/Alfresco/alfresco-ng2-components) | 3.8.0 | [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0) |
| [@alfresco/adf-insights](https://github.com/Alfresco/alfresco-ng2-components) | 3.8.0 | [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0) |
| [@alfresco/adf-process-services-cloud](https://github.com/Alfresco/alfresco-ng2-components) | 3.8.0 | [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0) |
| [@alfresco/adf-process-services](https://github.com/Alfresco/alfresco-ng2-components) | 3.8.0 | [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0) |
| [@alfresco/js-api](https://github.com/Alfresco/alfresco-js-api) | 3.8.0 | [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0) |
| [@angular/animations](https://github.com/angular/angular) | 7.2.15 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@angular/cdk](https://github.com/angular/material2) | 7.3.7 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@angular/common](https://github.com/angular/angular) | 7.2.15 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@angular/compiler](https://github.com/angular/angular) | 7.2.15 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@angular/core](https://github.com/angular/angular) | 7.2.15 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@angular/flex-layout](https://github.com/angular/flex-layout) | 7.0.0-beta.24 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@angular/forms](https://github.com/angular/angular) | 7.2.15 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@angular/http](https://github.com/angular/angular) | 7.2.15 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@angular/material-moment-adapter](https://github.com/angular/material2) | 7.3.7 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@angular/material](https://github.com/angular/material2) | 7.3.7 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@angular/platform-browser-dynamic](https://github.com/angular/angular) | 7.2.15 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@angular/platform-browser](https://github.com/angular/angular) | 7.2.15 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@angular/router](https://github.com/angular/angular) | 7.2.15 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@babel/code-frame](https://github.com/babel/babel/tree/master/packages/babel-code-frame) | 7.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@babel/highlight](https://github.com/babel/babel/tree/master/packages/babel-highlight) | 7.5.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@mat-datetimepicker/core](https://github.com/kuhnroyal/mat-datetimepicker) | 2.0.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@mat-datetimepicker/moment](https://github.com/kuhnroyal/mat-datetimepicker) | 2.0.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@ngx-translate/core](https://github.com/ngx-translate/core) | 11.0.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@snyk/cli-interface](https://github.com/snyk/snyk-cli-interface) | 1.5.0 | [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0) |
| [@snyk/cli-interface](https://github.com/snyk/snyk-cli-interface) | 2.2.0 | [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0) |
| [@snyk/cli-interface](https://github.com/snyk/snyk-cli-interface) | 2.3.0 | [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0) |
| [@snyk/cocoapods-lockfile-parser](https://github.com/snyk/cocoapods-lockfile-parser) | 3.0.0 | [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0) |
| [@snyk/composer-lockfile-parser](https://github.com/snyk/composer-lockfile-parser) | 1.2.0 | [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0) |
| [@snyk/dep-graph](https://github.com/snyk/dep-graph) | 1.13.1 | [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0) |
| [@snyk/gemfile](https://github.com/snyk/gemfile) | 1.2.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@snyk/ruby-semver](https://github.com/Snyk/ruby-semver) | 2.0.4 | [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0) |
| [@snyk/snyk-cocoapods-plugin](https://github.com/snyk/snyk-cocoapods-plugin) | 2.0.1 | [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0) |
| [@types/agent-base](https://github.com/DefinitelyTyped/DefinitelyTyped) | 4.2.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@types/bunyan](https://github.com/DefinitelyTyped/DefinitelyTyped) | 1.8.6 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@types/caseless](https://github.com/DefinitelyTyped/DefinitelyTyped) | 0.12.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@types/debug](https://github.com/DefinitelyTyped/DefinitelyTyped) | 4.1.5 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@types/events](https://github.com/DefinitelyTyped/DefinitelyTyped) | 3.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@types/js-yaml](https://github.com/DefinitelyTyped/DefinitelyTyped) | 3.12.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped) | 12.7.7 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped) | 6.14.9 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@types/request](https://github.com/DefinitelyTyped/DefinitelyTyped) | 2.48.3 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@types/restify](https://github.com/DefinitelyTyped/DefinitelyTyped) | 4.3.6 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@types/semver](https://github.com/DefinitelyTyped/DefinitelyTyped) | 5.5.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@types/tough-cookie](https://github.com/DefinitelyTyped/DefinitelyTyped) | 2.3.5 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@types/xml2js](https://github.com/DefinitelyTyped/DefinitelyTyped) | 0.4.3 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@webassemblyjs/ast](https://github.com/xtuc/webassemblyjs) | 1.7.11 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@webassemblyjs/floating-point-hex-parser](https://github.com/xtuc/webassemblyjs) | 1.7.11 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@webassemblyjs/helper-api-error](https://github.com/xtuc/webassemblyjs) | 1.7.11 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@webassemblyjs/helper-buffer](https://github.com/xtuc/webassemblyjs) | 1.7.11 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@webassemblyjs/helper-code-frame](https://github.com/xtuc/webassemblyjs) | 1.7.11 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@webassemblyjs/helper-fsm](https://github.com/xtuc/webassemblyjs) | 1.7.11 | [ISC](https://www.isc.org/downloads/software-support-policy/isc-license/) |
| [@webassemblyjs/helper-module-context](https://github.com/xtuc/webassemblyjs) | 1.7.11 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@webassemblyjs/helper-wasm-bytecode](https://github.com/xtuc/webassemblyjs) | 1.7.11 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@webassemblyjs/helper-wasm-section](https://github.com/xtuc/webassemblyjs) | 1.7.11 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@webassemblyjs/ieee754](https://github.com/xtuc/webassemblyjs) | 1.7.11 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@webassemblyjs/leb128](https://github.com/xtuc/webassemblyjs) | 1.7.11 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@webassemblyjs/utf8](https://github.com/xtuc/webassemblyjs) | 1.7.11 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@webassemblyjs/wasm-edit](https://github.com/xtuc/webassemblyjs) | 1.7.11 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@webassemblyjs/wasm-gen](https://github.com/xtuc/webassemblyjs) | 1.7.11 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@webassemblyjs/wasm-opt](https://github.com/xtuc/webassemblyjs) | 1.7.11 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@webassemblyjs/wasm-parser](https://github.com/xtuc/webassemblyjs) | 1.7.11 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@webassemblyjs/wast-parser](https://github.com/xtuc/webassemblyjs) | 1.7.11 | [MIT](http://www.opensource.org/licenses/MIT) |
| [@webassemblyjs/wast-printer](https://github.com/xtuc/webassemblyjs) | 1.7.11 | [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.1 | [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0) |
| [@yarnpkg/lockfile](https://github.com/yarnpkg/yarn/blob/master/packages/lockfile) | 1.1.0 | [BSD-2-Clause](http://www.opensource.org/licenses/BSD-2-Clause) |
| [abbrev](https://github.com/isaacs/abbrev-js) | 1.1.1 | [ISC](https://www.isc.org/downloads/software-support-policy/isc-license/) |
| [acorn-dynamic-import](https://github.com/kesne/acorn-dynamic-import) | 4.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [acorn](https://github.com/acornjs/acorn) | 6.4.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [adf-monaco-extension](https://github.com/eromano/aca-monaco-extension) | 0.0.8 | UNKNOWN |
| [adf-tslint-rules](https://github.com/Alfresco/alfresco-ng2-components) | 0.0.6 | [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0) |
| [agent-base](https://github.com/TooTallNate/node-agent-base) | 4.2.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [agent-base](https://github.com/TooTallNate/node-agent-base) | 4.3.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [ajv-errors](https://github.com/epoberezkin/ajv-errors) | 1.0.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [ajv-keywords](https://github.com/epoberezkin/ajv-keywords) | 3.4.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [ajv](https://github.com/epoberezkin/ajv) | 6.10.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [alfresco-ng2-components](https://github.com/Alfresco/alfresco-ng2-components) | 3.8.0 | [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0) |
| [ansi-align](https://github.com/nexdrew/ansi-align) | 2.0.0 | [ISC](https://www.isc.org/downloads/software-support-policy/isc-license/) |
| [ansi-escapes](https://github.com/sindresorhus/ansi-escapes) | 3.2.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [ansi-regex](https://github.com/chalk/ansi-regex) | 2.1.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [ansi-regex](https://github.com/chalk/ansi-regex) | 3.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [ansi-regex](https://github.com/chalk/ansi-regex) | 4.1.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [ansi-styles](https://github.com/chalk/ansi-styles) | 3.2.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [ansicolors](https://github.com/thlorenz/ansicolors) | 0.3.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [anymatch](https://github.com/micromatch/anymatch) | 2.0.0 | [ISC](https://www.isc.org/downloads/software-support-policy/isc-license/) |
| [app-root-path](https://github.com/inxilpro/node-app-root-path) | 2.0.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [app-root-path](https://github.com/inxilpro/node-app-root-path) | 2.2.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [aproba](https://github.com/iarna/aproba) | 1.2.0 | [ISC](https://www.isc.org/downloads/software-support-policy/isc-license/) |
| [archy](https://github.com/substack/node-archy) | 1.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [are-we-there-yet](https://github.com/iarna/are-we-there-yet) | 1.1.5 | [ISC](https://www.isc.org/downloads/software-support-policy/isc-license/) |
| [argparse](https://github.com/nodeca/argparse) | 1.0.10 | [MIT](http://www.opensource.org/licenses/MIT) |
| [aria-query](https://github.com/A11yance/aria-query) | 3.0.0 | [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0) |
| [arr-diff](https://github.com/jonschlinkert/arr-diff) | 4.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [arr-flatten](https://github.com/jonschlinkert/arr-flatten) | 1.1.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [arr-union](https://github.com/jonschlinkert/arr-union) | 3.1.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [array-unique](https://github.com/jonschlinkert/array-unique) | 0.3.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [asap](https://github.com/kriskowal/asap) | 2.0.6 | [MIT](http://www.opensource.org/licenses/MIT) |
| [asn1.js](https://github.com/indutny/asn1.js) | 4.10.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [assert](https://github.com/browserify/commonjs-assert) | 1.5.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [assign-symbols](https://github.com/jonschlinkert/assign-symbols) | 1.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [ast-types-flow](https://github.com/kyldvs/ast-types-flow) | 0.0.7 | [ISC](https://www.isc.org/downloads/software-support-policy/isc-license/) |
| [ast-types](https://github.com/benjamn/ast-types) | 0.13.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [async-each](https://github.com/paulmillr/async-each) | 1.0.3 | [MIT](http://www.opensource.org/licenses/MIT) |
| [async](https://github.com/caolan/async) | 1.5.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [asynckit](https://github.com/alexindigo/asynckit) | 0.4.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [atob](git://git.coolaj86.com/coolaj86/atob.js) | 2.1.2 | ([MIT](http://www.opensource.org/licenses/MIT) OR [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0)) |
| [axobject-query](https://github.com/A11yance/axobject-query) | 2.0.2 | [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0) |
| [balanced-match](https://github.com/juliangruber/balanced-match) | 1.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [base64-js](https://github.com/beatgammit/base64-js) | 1.3.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [base](https://github.com/node-base/base) | 0.11.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [big.js](https://github.com/MikeMcl/big.js) | 5.2.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [binary-extensions](https://github.com/sindresorhus/binary-extensions) | 1.13.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [bl](https://github.com/rvagg/bl) | 3.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [bluebird](https://github.com/petkaantonov/bluebird) | 3.5.5 | [MIT](http://www.opensource.org/licenses/MIT) |
| [bn.js](https://github.com/indutny/bn.js) | 4.11.8 | [MIT](http://www.opensource.org/licenses/MIT) |
| [boxen](https://github.com/sindresorhus/boxen) | 1.3.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [brace-expansion](https://github.com/juliangruber/brace-expansion) | 1.1.11 | [MIT](http://www.opensource.org/licenses/MIT) |
| [braces](https://github.com/micromatch/braces) | 2.3.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [brorand](https://github.com/indutny/brorand) | 1.1.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [browserify-aes](https://github.com/crypto-browserify/browserify-aes) | 1.2.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [browserify-cipher](https://github.com/crypto-browserify/browserify-cipher) | 1.0.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [browserify-des](https://github.com/crypto-browserify/browserify-des) | 1.0.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [browserify-rsa](https://github.com/crypto-browserify/browserify-rsa) | 4.0.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [browserify-sign](https://github.com/crypto-browserify/browserify-sign) | 4.0.4 | [ISC](https://www.isc.org/downloads/software-support-policy/isc-license/) |
| [browserify-zlib](https://github.com/devongovett/browserify-zlib) | 0.2.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [buffer-from](https://github.com/LinusU/buffer-from) | 1.1.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [buffer-xor](https://github.com/crypto-browserify/buffer-xor) | 1.0.3 | [MIT](http://www.opensource.org/licenses/MIT) |
| [buffer](https://github.com/feross/buffer) | 4.9.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [builtin-modules](https://github.com/sindresorhus/builtin-modules) | 1.1.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [builtin-status-codes](https://github.com/bendrucker/builtin-status-codes) | 3.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [bytes](https://github.com/visionmedia/bytes.js) | 3.1.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [cacache](https://github.com/zkat/cacache) | 11.3.3 | [ISC](https://www.isc.org/downloads/software-support-policy/isc-license/) |
| [cache-base](https://github.com/jonschlinkert/cache-base) | 1.0.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [camelcase](https://github.com/sindresorhus/camelcase) | 2.1.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [camelcase](https://github.com/sindresorhus/camelcase) | 4.1.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [capture-stack-trace](https://github.com/floatdrop/capture-stack-trace) | 1.0.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [chalk](https://github.com/chalk/chalk) | 2.4.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [chardet](https://github.com/runk/node-chardet) | 0.7.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [chart.js](https://github.com/chartjs/Chart.js) | 2.5.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [chart.js](https://github.com/chartjs/Chart.js) | 2.8.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [chartjs-color-string](https://github.com/chartjs/chartjs-color-string) | 0.6.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [chartjs-color](https://github.com/chartjs/chartjs-color) | 2.3.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [chokidar](https://github.com/paulmillr/chokidar) | 2.0.4 | [MIT](http://www.opensource.org/licenses/MIT) |
| [chownr](https://github.com/isaacs/chownr) | 1.1.1 | [ISC](https://www.isc.org/downloads/software-support-policy/isc-license/) |
| [chownr](https://github.com/isaacs/chownr) | 1.1.2 | [ISC](https://www.isc.org/downloads/software-support-policy/isc-license/) |
| [chrome-trace-event](github.com:samccone/chrome-trace-event) | 1.0.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [ci-info](https://github.com/watson/ci-info) | 1.6.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [cipher-base](https://github.com/crypto-browserify/cipher-base) | 1.0.4 | [MIT](http://www.opensource.org/licenses/MIT) |
| [class-utils](https://github.com/jonschlinkert/class-utils) | 0.3.6 | [MIT](http://www.opensource.org/licenses/MIT) |
| [classlist.js](https://github.com/eligrey/classList.js) | 1.1.20150312 | Public Domain |
| [cli-boxes](https://github.com/sindresorhus/cli-boxes) | 1.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [cli-cursor](https://github.com/sindresorhus/cli-cursor) | 2.1.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [cli-spinner](https://github.com/helloIAmPau/node-spinner) | 0.2.10 | [MIT](http://www.opensource.org/licenses/MIT) |
| [cli-width](https://github.com/knownasilya/cli-width) | 2.2.0 | [ISC](https://www.isc.org/downloads/software-support-policy/isc-license/) |
| [cliui](https://github.com/yargs/cliui) | 3.2.0 | [ISC](https://www.isc.org/downloads/software-support-policy/isc-license/) |
| [clone-deep](https://github.com/jonschlinkert/clone-deep) | 0.3.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [co](https://github.com/tj/co) | 4.6.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [code-point-at](https://github.com/sindresorhus/code-point-at) | 1.1.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [codelyzer](https://github.com/mgechev/codelyzer) | 5.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [collection-visit](https://github.com/jonschlinkert/collection-visit) | 1.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [color-convert](https://github.com/harthur/color-convert) | 0.5.3 | [MIT](http://www.opensource.org/licenses/MIT) |
| [color-convert](https://github.com/Qix-/color-convert) | 1.9.3 | [MIT](http://www.opensource.org/licenses/MIT) |
| [color-name](https://github.com/dfcreative/color-name) | 1.1.3 | [MIT](http://www.opensource.org/licenses/MIT) |
| [color-name](https://github.com/colorjs/color-name) | 1.1.4 | [MIT](http://www.opensource.org/licenses/MIT) |
| [combined-stream](https://github.com/felixge/node-combined-stream) | 1.0.8 | [MIT](http://www.opensource.org/licenses/MIT) |
| [commander](https://github.com/tj/commander.js) | 2.20.3 | [MIT](http://www.opensource.org/licenses/MIT) |
| [commondir](https://github.com/substack/node-commondir) | 1.0.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [component-emitter](https://github.com/component/emitter) | 1.3.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [concat-map](https://github.com/substack/node-concat-map) | 0.0.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [concat-stream](https://github.com/maxogden/concat-stream) | 1.6.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [configstore](https://github.com/yeoman/configstore) | 3.1.2 | [BSD-2-Clause](http://www.opensource.org/licenses/BSD-2-Clause) |
| [console-browserify](https://github.com/Raynos/console-browserify) | 1.1.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [console-control-strings](https://github.com/iarna/console-control-strings) | 1.1.0 | [ISC](https://www.isc.org/downloads/software-support-policy/isc-license/) |
| [constants-browserify](https://github.com/juliangruber/constants-browserify) | 1.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [cookiejar](https://github.com/bmeck/node-cookiejar) | 2.1.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [copy-concurrently](https://github.com/npm/copy-concurrently) | 1.0.5 | [ISC](https://www.isc.org/downloads/software-support-policy/isc-license/) |
| [copy-descriptor](https://github.com/jonschlinkert/copy-descriptor) | 0.1.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [core-js](https://github.com/zloirock/core-js) | 2.6.9 | [MIT](http://www.opensource.org/licenses/MIT) |
| [core-js](https://github.com/zloirock/core-js) | 3.4.8 | [MIT](http://www.opensource.org/licenses/MIT) |
| [core-util-is](https://github.com/isaacs/core-util-is) | 1.0.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [create-ecdh](https://github.com/crypto-browserify/createECDH) | 4.0.3 | [MIT](http://www.opensource.org/licenses/MIT) |
| [create-error-class](https://github.com/floatdrop/create-error-class) | 3.0.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [create-hash](https://github.com/crypto-browserify/createHash) | 1.2.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [create-hmac](https://github.com/crypto-browserify/createHmac) | 1.1.7 | [MIT](http://www.opensource.org/licenses/MIT) |
| [cross-spawn](https://github.com/IndigoUnited/node-cross-spawn) | 5.1.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [cross-spawn](https://github.com/moxystudio/node-cross-spawn) | 6.0.5 | [MIT](http://www.opensource.org/licenses/MIT) |
| [crypto-browserify](https://github.com/crypto-browserify/crypto-browserify) | 3.12.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [crypto-random-string](https://github.com/sindresorhus/crypto-random-string) | 1.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [css-selector-tokenizer](https://github.com/css-modules/css-selector-tokenizer) | 0.7.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [css-selector-tokenizer](https://github.com/css-modules/css-selector-tokenizer) | 0.7.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [cssauron](https://github.com/chrisdickinson/cssauron) | 1.4.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [cssesc](https://github.com/mathiasbynens/cssesc) | 0.1.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [custom-event-polyfill](https://github.com/krambuhl/custom-event-polyfill) | 0.3.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [cyclist](https://github.com/mafintosh/cyclist) | 0.2.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [d](https://github.com/medikoo/d) | 1.0.1 | [ISC](https://www.isc.org/downloads/software-support-policy/isc-license/) |
| [damerau-levenshtein](https://github.com/tad-lispy/node-damerau-levenshtein) | 1.0.5 | [BSD-2-Clause](http://www.opensource.org/licenses/BSD-2-Clause) |
| [data-uri-to-buffer](https://github.com/TooTallNate/node-data-uri-to-buffer) | 1.2.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [date-now](https://github.com/Colingo/date-now) | 0.1.4 | [MIT](http://www.opensource.org/licenses/MIT) |
| [debug](https://github.com/visionmedia/debug) | 2.6.9 | [MIT](http://www.opensource.org/licenses/MIT) |
| [debug](https://github.com/visionmedia/debug) | 3.1.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [debug](https://github.com/visionmedia/debug) | 3.2.6 | [MIT](http://www.opensource.org/licenses/MIT) |
| [debug](https://github.com/visionmedia/debug) | 4.1.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [decamelize](https://github.com/sindresorhus/decamelize) | 1.2.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [decode-uri-component](https://github.com/SamVerschueren/decode-uri-component) | 0.2.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [deep-extend](https://github.com/unclechu/node-deep-extend) | 0.6.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [deep-is](https://github.com/thlorenz/deep-is) | 0.1.3 | [MIT](http://www.opensource.org/licenses/MIT) |
| [define-property](https://github.com/jonschlinkert/define-property) | 0.2.5 | [MIT](http://www.opensource.org/licenses/MIT) |
| [define-property](https://github.com/jonschlinkert/define-property) | 1.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [define-property](https://github.com/jonschlinkert/define-property) | 2.0.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [degenerator](https://github.com/TooTallNate/node-degenerator) | 1.0.4 | [MIT](http://www.opensource.org/licenses/MIT) |
| [delayed-stream](https://github.com/felixge/node-delayed-stream) | 1.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [delegates](https://github.com/visionmedia/node-delegates) | 1.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [depd](https://github.com/dougwilson/nodejs-depd) | 1.1.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [des.js](https://github.com/indutny/des.js) | 1.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [detect-libc](https://github.com/lovell/detect-libc) | 1.0.3 | [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0) |
| [diff](https://github.com/kpdecker/jsdiff) | 4.0.1 | [BSD-3-Clause](http://www.opensource.org/licenses/BSD-3-Clause) |
| [diffie-hellman](https://github.com/crypto-browserify/diffie-hellman) | 5.0.3 | [MIT](http://www.opensource.org/licenses/MIT) |
| [dockerfile-ast](https://github.com/rcjsuen/dockerfile-ast) | 0.0.16 | [MIT](http://www.opensource.org/licenses/MIT) |
| [domain-browser](https://github.com/bevry/domain-browser) | 1.2.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [dot-prop](https://github.com/sindresorhus/dot-prop) | 4.2.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [dotnet-deps-parser](https://github.com/snyk/dotnet-deps-parser) | 4.5.2 | [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0) |
| [duplexer3](https://github.com/floatdrop/duplexer3) | 0.1.4 | [BSD-3-Clause](http://www.opensource.org/licenses/BSD-3-Clause) |
| [duplexify](https://github.com/mafintosh/duplexify) | 3.7.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [elliptic](https://github.com/indutny/elliptic) | 6.5.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [email-validator](https://github.com/manishsaraan/email-validator) | 2.0.4 | [MIT](http://www.opensource.org/licenses/MIT) |
| [emoji-regex](https://github.com/mathiasbynens/emoji-regex) | 6.1.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [emoji-regex](https://github.com/mathiasbynens/emoji-regex) | 7.0.3 | [MIT](http://www.opensource.org/licenses/MIT) |
| [emojis-list](https://github.com/kikobeats/emojis-list) | 2.1.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [end-of-stream](https://github.com/mafintosh/end-of-stream) | 1.4.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [enhanced-resolve](https://github.com/webpack/enhanced-resolve) | 4.1.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [errno](https://github.com/rvagg/node-errno) | 0.1.7 | [MIT](http://www.opensource.org/licenses/MIT) |
| [es5-ext](https://github.com/medikoo/es5-ext) | 0.10.53 | [ISC](https://www.isc.org/downloads/software-support-policy/isc-license/) |
| [es6-iterator](https://github.com/medikoo/es6-iterator) | 2.0.3 | [MIT](http://www.opensource.org/licenses/MIT) |
| [es6-promise](https://github.com/stefanpenner/es6-promise) | 4.2.8 | [MIT](http://www.opensource.org/licenses/MIT) |
| [es6-promisify](https://github.com/digitaldesignlabs/es6-promisify) | 5.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [es6-symbol](https://github.com/medikoo/es6-symbol) | 3.1.3 | [ISC](https://www.isc.org/downloads/software-support-policy/isc-license/) |
| [escape-string-regexp](https://github.com/sindresorhus/escape-string-regexp) | 1.0.5 | [MIT](http://www.opensource.org/licenses/MIT) |
| [escodegen](https://github.com/estools/escodegen) | 1.12.0 | [BSD-2-Clause](http://www.opensource.org/licenses/BSD-2-Clause) |
| [eslint-scope](https://github.com/eslint/eslint-scope) | 4.0.3 | [BSD-2-Clause](http://www.opensource.org/licenses/BSD-2-Clause) |
| [esprima](https://github.com/jquery/esprima) | 3.1.3 | [BSD-2-Clause](http://www.opensource.org/licenses/BSD-2-Clause) |
| [esprima](https://github.com/jquery/esprima) | 4.0.1 | [BSD-2-Clause](http://www.opensource.org/licenses/BSD-2-Clause) |
| [esrecurse](https://github.com/estools/esrecurse) | 4.2.1 | [BSD-2-Clause](http://www.opensource.org/licenses/BSD-2-Clause) |
| [estraverse](https://github.com/estools/estraverse) | 4.2.0 | [BSD-2-Clause](http://www.opensource.org/licenses/BSD-2-Clause) |
| [esutils](https://github.com/estools/esutils) | 2.0.2 | [BSD](http://www.opensource.org/licenses/BSD-2-Clause) |
| [eve-raphael](https://github.com/tomasAlabes/eve) | 0.5.0 | [Apache](http://www.apache.org/licenses/LICENSE-2.0) |
| [event-emitter](https://github.com/medikoo/event-emitter) | 0.3.5 | [MIT](http://www.opensource.org/licenses/MIT) |
| [events](https://github.com/Gozala/events) | 3.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [evp_bytestokey](https://github.com/crypto-browserify/EVP_BytesToKey) | 1.0.3 | [MIT](http://www.opensource.org/licenses/MIT) |
| [execa](https://github.com/sindresorhus/execa) | 0.7.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [execa](https://github.com/sindresorhus/execa) | 1.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [expand-brackets](https://github.com/jonschlinkert/expand-brackets) | 2.1.4 | [MIT](http://www.opensource.org/licenses/MIT) |
| [ext](https://github.com/medikoo/es5-ext/tree/ext) | 1.4.0 | [ISC](https://www.isc.org/downloads/software-support-policy/isc-license/) |
| [extend-shallow](https://github.com/jonschlinkert/extend-shallow) | 2.0.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [extend-shallow](https://github.com/jonschlinkert/extend-shallow) | 3.0.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [extend](https://github.com/justmoon/node-extend) | 2.0.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [extend](https://github.com/justmoon/node-extend) | 3.0.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [external-editor](https://github.com/mrkmg/node-external-editor) | 3.1.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [extglob](https://github.com/micromatch/extglob) | 2.0.4 | [MIT](http://www.opensource.org/licenses/MIT) |
| [fast-deep-equal](https://github.com/epoberezkin/fast-deep-equal) | 2.0.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [fast-json-stable-stringify](https://github.com/epoberezkin/fast-json-stable-stringify) | 2.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [fast-levenshtein](https://github.com/hiddentao/fast-levenshtein) | 2.0.6 | [MIT](http://www.opensource.org/licenses/MIT) |
| [fast-safe-stringify](https://github.com/davidmarkclements/fast-safe-stringify) | 2.0.7 | [MIT](http://www.opensource.org/licenses/MIT) |
| [fastparse](https://github.com/webpack/fastparse) | 1.1.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [figgy-pudding](https://github.com/zkat/figgy-pudding) | 3.5.1 | [ISC](https://www.isc.org/downloads/software-support-policy/isc-license/) |
| [figures](https://github.com/sindresorhus/figures) | 2.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [file-uri-to-path](https://github.com/TooTallNate/file-uri-to-path) | 1.0.0 | [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) |
| [flush-write-stream](https://github.com/mafintosh/flush-write-stream) | 1.1.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [for-in](https://github.com/jonschlinkert/for-in) | 0.1.8 | [MIT](http://www.opensource.org/licenses/MIT) |
| [for-in](https://github.com/jonschlinkert/for-in) | 1.0.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [for-own](https://github.com/jonschlinkert/for-own) | 1.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [form-data](https://github.com/form-data/form-data) | 2.5.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [form-data](https://github.com/form-data/form-data) | 3.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [formidable](https://github.com/node-formidable/formidable) | 1.2.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [fragment-cache](https://github.com/jonschlinkert/fragment-cache) | 0.2.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [from2](https://github.com/hughsk/from2) | 2.3.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [fs-constants](https://github.com/mafintosh/fs-constants) | 1.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [fs-minipass](https://github.com/npm/fs-minipass) | 1.2.5 | [ISC](https://www.isc.org/downloads/software-support-policy/isc-license/) |
| [fs-write-stream-atomic](https://github.com/npm/fs-write-stream-atomic) | 1.0.10 | [ISC](https://www.isc.org/downloads/software-support-policy/isc-license/) |
| [fs.realpath](https://github.com/isaacs/fs.realpath) | 1.0.0 | [ISC](https://www.isc.org/downloads/software-support-policy/isc-license/) |
| [fsevents](https://github.com/strongloop/fsevents) | 1.2.9 | [MIT](http://www.opensource.org/licenses/MIT) |
| [ftp](https://github.com/mscdex/node-ftp) | 0.3.10 | [MIT](http://www.opensource.org/licenses/MIT) |
| [gauge](https://github.com/iarna/gauge) | 2.7.4 | [ISC](https://www.isc.org/downloads/software-support-policy/isc-license/) |
| [get-stream](https://github.com/sindresorhus/get-stream) | 3.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [get-stream](https://github.com/sindresorhus/get-stream) | 4.1.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [get-uri](https://github.com/TooTallNate/node-get-uri) | 2.0.4 | [MIT](http://www.opensource.org/licenses/MIT) |
| [get-value](https://github.com/jonschlinkert/get-value) | 2.0.6 | [MIT](http://www.opensource.org/licenses/MIT) |
| [git-up](https://github.com/IonicaBizau/git-up) | 4.0.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [git-url-parse](https://github.com/IonicaBizau/git-url-parse) | 11.1.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [github-slugger](https://github.com/Flet/github-slugger) | 1.2.1 | [ISC](https://www.isc.org/downloads/software-support-policy/isc-license/) |
| [glob-parent](https://github.com/es128/glob-parent) | 3.1.0 | [ISC](https://www.isc.org/downloads/software-support-policy/isc-license/) |
| [glob](https://github.com/isaacs/node-glob) | 7.1.3 | [ISC](https://www.isc.org/downloads/software-support-policy/isc-license/) |
| [glob](https://github.com/isaacs/node-glob) | 7.1.4 | [ISC](https://www.isc.org/downloads/software-support-policy/isc-license/) |
| [global-dirs](https://github.com/sindresorhus/global-dirs) | 0.1.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [got](https://github.com/sindresorhus/got) | 6.7.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [graceful-fs](https://github.com/isaacs/node-graceful-fs) | 4.2.0 | [ISC](https://www.isc.org/downloads/software-support-policy/isc-license/) |
| [graphlib](https://github.com/dagrejs/graphlib) | 2.1.8 | [MIT](http://www.opensource.org/licenses/MIT) |
| [hammerjs](https://github.com/hammerjs/hammer.js) | 2.0.8 | [MIT](http://www.opensource.org/licenses/MIT) |
| [has-flag](https://github.com/sindresorhus/has-flag) | 3.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [has-unicode](https://github.com/iarna/has-unicode) | 2.0.1 | [ISC](https://www.isc.org/downloads/software-support-policy/isc-license/) |
| [has-value](https://github.com/jonschlinkert/has-value) | 0.3.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [has-value](https://github.com/jonschlinkert/has-value) | 1.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [has-values](https://github.com/jonschlinkert/has-values) | 0.1.4 | [MIT](http://www.opensource.org/licenses/MIT) |
| [has-values](https://github.com/jonschlinkert/has-values) | 1.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [hash-base](https://github.com/crypto-browserify/hash-base) | 3.0.4 | [MIT](http://www.opensource.org/licenses/MIT) |
| [hash.js](https://github.com/indutny/hash.js) | 1.1.7 | [MIT](http://www.opensource.org/licenses/MIT) |
| [hmac-drbg](https://github.com/indutny/hmac-drbg) | 1.0.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [hosted-git-info](https://github.com/npm/hosted-git-info) | 2.7.1 | [ISC](https://www.isc.org/downloads/software-support-policy/isc-license/) |
| [http-errors](https://github.com/jshttp/http-errors) | 1.7.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [http-proxy-agent](https://github.com/TooTallNate/node-http-proxy-agent) | 2.1.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [https-browserify](https://github.com/substack/https-browserify) | 1.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [https-proxy-agent](https://github.com/TooTallNate/node-https-proxy-agent) | 3.0.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [iconv-lite](https://github.com/ashtuchkin/iconv-lite) | 0.4.24 | [MIT](http://www.opensource.org/licenses/MIT) |
| [ieee754](https://github.com/feross/ieee754) | 1.1.13 | [BSD-3-Clause](http://www.opensource.org/licenses/BSD-3-Clause) |
| [iferr](https://github.com/shesek/iferr) | 0.1.5 | [MIT](http://www.opensource.org/licenses/MIT) |
| [ignore-walk](https://github.com/isaacs/ignore-walk) | 3.0.1 | [ISC](https://www.isc.org/downloads/software-support-policy/isc-license/) |
| [immediate](https://github.com/calvinmetcalf/immediate) | 3.0.6 | [MIT](http://www.opensource.org/licenses/MIT) |
| [import-lazy](https://github.com/sindresorhus/import-lazy) | 2.1.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [imurmurhash](https://github.com/jensyt/imurmurhash-js) | 0.1.4 | [MIT](http://www.opensource.org/licenses/MIT) |
| [inflight](https://github.com/npm/inflight) | 1.0.6 | [ISC](https://www.isc.org/downloads/software-support-policy/isc-license/) |
| [inherits](https://github.com/isaacs/inherits) | 2.0.1 | [ISC](https://www.isc.org/downloads/software-support-policy/isc-license/) |
| [inherits](https://github.com/isaacs/inherits) | 2.0.3 | [ISC](https://www.isc.org/downloads/software-support-policy/isc-license/) |
| [inherits](https://github.com/isaacs/inherits) | 2.0.4 | [ISC](https://www.isc.org/downloads/software-support-policy/isc-license/) |
| [ini](https://github.com/isaacs/ini) | 1.3.5 | [ISC](https://www.isc.org/downloads/software-support-policy/isc-license/) |
| [inquirer](https://github.com/SBoudrias/Inquirer.js) | 6.5.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [invert-kv](https://github.com/sindresorhus/invert-kv) | 1.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [ip](https://github.com/indutny/node-ip) | 1.1.5 | [MIT](http://www.opensource.org/licenses/MIT) |
| [is-accessor-descriptor](https://github.com/jonschlinkert/is-accessor-descriptor) | 0.1.6 | [MIT](http://www.opensource.org/licenses/MIT) |
| [is-accessor-descriptor](https://github.com/jonschlinkert/is-accessor-descriptor) | 1.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [is-binary-path](https://github.com/sindresorhus/is-binary-path) | 1.0.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [is-buffer](https://github.com/feross/is-buffer) | 1.1.6 | [MIT](http://www.opensource.org/licenses/MIT) |
| [is-ci](https://github.com/watson/is-ci) | 1.2.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [is-data-descriptor](https://github.com/jonschlinkert/is-data-descriptor) | 0.1.4 | [MIT](http://www.opensource.org/licenses/MIT) |
| [is-data-descriptor](https://github.com/jonschlinkert/is-data-descriptor) | 1.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [is-descriptor](https://github.com/jonschlinkert/is-descriptor) | 0.1.6 | [MIT](http://www.opensource.org/licenses/MIT) |
| [is-descriptor](https://github.com/jonschlinkert/is-descriptor) | 1.0.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [is-extendable](https://github.com/jonschlinkert/is-extendable) | 0.1.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [is-extendable](https://github.com/jonschlinkert/is-extendable) | 1.0.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [is-extglob](https://github.com/jonschlinkert/is-extglob) | 2.1.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [is-fullwidth-code-point](https://github.com/sindresorhus/is-fullwidth-code-point) | 1.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [is-fullwidth-code-point](https://github.com/sindresorhus/is-fullwidth-code-point) | 2.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [is-glob](https://github.com/jonschlinkert/is-glob) | 3.1.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [is-glob](https://github.com/micromatch/is-glob) | 4.0.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [is-installed-globally](https://github.com/sindresorhus/is-installed-globally) | 0.1.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [is-npm](https://github.com/sindresorhus/is-npm) | 1.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [is-number](https://github.com/jonschlinkert/is-number) | 3.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [is-obj](https://github.com/sindresorhus/is-obj) | 1.0.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [is-path-inside](https://github.com/sindresorhus/is-path-inside) | 1.0.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [is-plain-object](https://github.com/jonschlinkert/is-plain-object) | 2.0.4 | [MIT](http://www.opensource.org/licenses/MIT) |
| [is-promise](https://github.com/then/is-promise) | 2.1.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [is-redirect](https://github.com/sindresorhus/is-redirect) | 1.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [is-retry-allowed](https://github.com/floatdrop/is-retry-allowed) | 1.1.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [is-ssh](https://github.com/IonicaBizau/node-is-ssh) | 1.3.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [is-stream](https://github.com/sindresorhus/is-stream) | 1.1.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [is-windows](https://github.com/jonschlinkert/is-windows) | 1.0.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [is-wsl](https://github.com/sindresorhus/is-wsl) | 1.1.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [isarray](https://github.com/juliangruber/isarray) | 0.0.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [isarray](https://github.com/juliangruber/isarray) | 1.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [isexe](https://github.com/isaacs/isexe) | 2.0.0 | [ISC](https://www.isc.org/downloads/software-support-policy/isc-license/) |
| [isobject](https://github.com/jonschlinkert/isobject) | 2.1.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [isobject](https://github.com/jonschlinkert/isobject) | 3.0.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [js-tokens](https://github.com/lydell/js-tokens) | 4.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [js-yaml](https://github.com/nodeca/js-yaml) | 3.13.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [jsesc](https://github.com/mathiasbynens/jsesc) | 0.5.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [json-parse-better-errors](https://github.com/zkat/json-parse-better-errors) | 1.0.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.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [jszip](https://github.com/Stuk/jszip) | 3.2.2 | ([MIT](http://www.opensource.org/licenses/MIT) OR [GPL-3.0](http://www.gnu.org/licenses/gpl-3.0-standalone.html)) |
| [kind-of](https://github.com/jonschlinkert/kind-of) | 2.0.1 | [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) |
| [kind-of](https://github.com/jonschlinkert/kind-of) | 4.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [kind-of](https://github.com/jonschlinkert/kind-of) | 5.1.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [kind-of](https://github.com/jonschlinkert/kind-of) | 6.0.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [latest-version](https://github.com/sindresorhus/latest-version) | 3.1.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [lazy-cache](https://github.com/jonschlinkert/lazy-cache) | 0.2.7 | [MIT](http://www.opensource.org/licenses/MIT) |
| [lcid](https://github.com/sindresorhus/lcid) | 1.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [levenshtein-edit-distance](https://github.com/wooorm/levenshtein-edit-distance) | 1.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [levn](https://github.com/gkz/levn) | 0.3.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [lie](https://github.com/calvinmetcalf/lie) | 3.3.0 | [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.2.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) |
| [lodash.assign](https://github.com/lodash/lodash) | 4.2.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [lodash.assignin](https://github.com/lodash/lodash) | 4.2.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [lodash.clone](https://github.com/lodash/lodash) | 4.5.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [lodash.clonedeep](https://github.com/lodash/lodash) | 4.5.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [lodash.debounce](https://github.com/lodash/lodash) | 4.0.8 | [MIT](http://www.opensource.org/licenses/MIT) |
| [lodash.flatten](https://github.com/lodash/lodash) | 4.4.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [lodash.get](https://github.com/lodash/lodash) | 4.4.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [lodash.set](https://github.com/lodash/lodash) | 4.3.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [lodash](https://github.com/lodash/lodash) | 4.17.15 | [MIT](http://www.opensource.org/licenses/MIT) |
| [lowercase-keys](https://github.com/sindresorhus/lowercase-keys) | 1.0.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [lru-cache](https://github.com/isaacs/node-lru-cache) | 4.1.5 | [ISC](https://www.isc.org/downloads/software-support-policy/isc-license/) |
| [lru-cache](https://github.com/isaacs/node-lru-cache) | 5.1.1 | [ISC](https://www.isc.org/downloads/software-support-policy/isc-license/) |
| [macos-release](https://github.com/sindresorhus/macos-release) | 2.3.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [make-dir](https://github.com/sindresorhus/make-dir) | 1.3.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) |
| [map-cache](https://github.com/jonschlinkert/map-cache) | 0.2.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [map-visit](https://github.com/jonschlinkert/map-visit) | 1.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [md5.js](https://github.com/crypto-browserify/md5.js) | 1.3.5 | [MIT](http://www.opensource.org/licenses/MIT) |
| [mdast-util-definitions](https://github.com/syntax-tree/mdast-util-definitions) | 1.2.4 | [MIT](http://www.opensource.org/licenses/MIT) |
| [mdast-util-to-string](https://github.com/syntax-tree/mdast-util-to-string) | 1.0.6 | [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) |
| [methods](https://github.com/jshttp/methods) | 1.1.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [micromatch](https://github.com/micromatch/micromatch) | 3.1.10 | [MIT](http://www.opensource.org/licenses/MIT) |
| [miller-rabin](https://github.com/indutny/miller-rabin) | 4.0.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [mime-db](https://github.com/jshttp/mime-db) | 1.40.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [mime-types](https://github.com/jshttp/mime-types) | 2.1.24 | [MIT](http://www.opensource.org/licenses/MIT) |
| [mime](https://github.com/broofa/node-mime) | 2.4.4 | [MIT](http://www.opensource.org/licenses/MIT) |
| [mimic-fn](https://github.com/sindresorhus/mimic-fn) | 1.2.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [minimalistic-assert](https://github.com/calvinmetcalf/minimalistic-assert) | 1.0.1 | [ISC](https://www.isc.org/downloads/software-support-policy/isc-license/) |
| [minimalistic-crypto-utils](https://github.com/indutny/minimalistic-crypto-utils) | 1.0.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [minimatch-browser](https://github.com/isaacs/minimatch) | 1.0.0 | [ISC](https://www.isc.org/downloads/software-support-policy/isc-license/) |
| [minimatch](https://github.com/isaacs/minimatch) | 3.0.4 | [ISC](https://www.isc.org/downloads/software-support-policy/isc-license/) |
| [minimist](https://github.com/substack/minimist) | 0.0.8 | [MIT](http://www.opensource.org/licenses/MIT) |
| [minimist](https://github.com/substack/minimist) | 1.2.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [minipass](https://github.com/isaacs/minipass) | 2.3.5 | [ISC](https://www.isc.org/downloads/software-support-policy/isc-license/) |
| [minizlib](https://github.com/isaacs/minizlib) | 1.2.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [mississippi](https://github.com/maxogden/mississippi) | 3.0.0 | [BSD-2-Clause](http://www.opensource.org/licenses/BSD-2-Clause) |
| [mixin-deep](https://github.com/jonschlinkert/mixin-deep) | 1.3.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [mixin-object](https://github.com/jonschlinkert/mixin-object) | 2.0.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [mkdirp](https://github.com/substack/node-mkdirp) | 0.5.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [moment-es6](https://github.com/Agamnentzar/moment-es6) | 1.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [moment](https://github.com/moment/moment) | 2.22.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [move-concurrently](https://github.com/npm/move-concurrently) | 1.0.1 | [ISC](https://www.isc.org/downloads/software-support-policy/isc-license/) |
| [ms](https://github.com/zeit/ms) | 2.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [ms](https://github.com/zeit/ms) | 2.1.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [ms](https://github.com/zeit/ms) | 2.1.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [mute-stream](https://github.com/isaacs/mute-stream) | 0.0.7 | [ISC](https://www.isc.org/downloads/software-support-policy/isc-license/) |
| [nan](https://github.com/nodejs/nan) | 2.14.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [nanomatch](https://github.com/micromatch/nanomatch) | 1.2.13 | [MIT](http://www.opensource.org/licenses/MIT) |
| [nconf](https://github.com/flatiron/nconf) | 0.10.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [needle](https://github.com/tomas/needle) | 2.3.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [needle](https://github.com/tomas/needle) | 2.4.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [neo-async](https://github.com/suguru03/neo-async) | 2.6.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [netmask](https://github.com/rs/node-netmask) | 1.0.6 | [MIT](http://www.opensource.org/licenses/MIT) |
| [next-tick](https://github.com/medikoo/next-tick) | 1.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [ng2-charts](https://github.com/valor-software/ng2-charts) | 1.6.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [ngx-monaco-editor](https://github.com/atularen/ngx-monaco-editor) | 7.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [nice-try](https://github.com/electerious/nice-try) | 1.0.5 | [MIT](http://www.opensource.org/licenses/MIT) |
| [node-ensure](https://github.com/bauerca/node-ensure) | 0.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [node-libs-browser](https://github.com/webpack/node-libs-browser) | 2.2.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [node-pre-gyp](https://github.com/mapbox/node-pre-gyp) | 0.12.0 | [BSD-3-Clause](http://www.opensource.org/licenses/BSD-3-Clause) |
| [nopt](https://github.com/npm/nopt) | 4.0.1 | [ISC](https://www.isc.org/downloads/software-support-policy/isc-license/) |
| [normalize-path](https://github.com/jonschlinkert/normalize-path) | 2.1.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [normalize-url](https://github.com/sindresorhus/normalize-url) | 3.3.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [npm-bundled](https://github.com/npm/npm-bundled) | 1.0.6 | [ISC](https://www.isc.org/downloads/software-support-policy/isc-license/) |
| [npm-packlist](https://github.com/npm/npm-packlist) | 1.4.1 | [ISC](https://www.isc.org/downloads/software-support-policy/isc-license/) |
| [npm-run-path](https://github.com/sindresorhus/npm-run-path) | 2.0.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [npmlog](https://github.com/npm/npmlog) | 4.1.2 | [ISC](https://www.isc.org/downloads/software-support-policy/isc-license/) |
| [number-is-nan](https://github.com/sindresorhus/number-is-nan) | 1.0.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [object-assign](https://github.com/sindresorhus/object-assign) | 4.1.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [object-copy](https://github.com/jonschlinkert/object-copy) | 0.1.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [object-hash](https://github.com/puleos/object-hash) | 1.3.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [object-visit](https://github.com/jonschlinkert/object-visit) | 1.0.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [object.pick](https://github.com/jonschlinkert/object.pick) | 1.3.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [once](https://github.com/isaacs/once) | 1.4.0 | [ISC](https://www.isc.org/downloads/software-support-policy/isc-license/) |
| [onetime](https://github.com/sindresorhus/onetime) | 2.0.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [opn](https://github.com/sindresorhus/opn) | 5.5.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [optionator](https://github.com/gkz/optionator) | 0.8.3 | [MIT](http://www.opensource.org/licenses/MIT) |
| [os-browserify](https://github.com/CoderPuppy/os-browserify) | 0.3.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [os-homedir](https://github.com/sindresorhus/os-homedir) | 1.0.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [os-locale](https://github.com/sindresorhus/os-locale) | 1.4.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [os-name](https://github.com/sindresorhus/os-name) | 3.1.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [os-tmpdir](https://github.com/sindresorhus/os-tmpdir) | 1.0.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [osenv](https://github.com/npm/osenv) | 0.1.5 | [ISC](https://www.isc.org/downloads/software-support-policy/isc-license/) |
| [p-finally](https://github.com/sindresorhus/p-finally) | 1.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [p-limit](https://github.com/sindresorhus/p-limit) | 2.2.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-try](https://github.com/sindresorhus/p-try) | 2.2.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [pac-proxy-agent](https://github.com/TooTallNate/node-pac-proxy-agent) | 3.0.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [pac-resolver](https://github.com/TooTallNate/node-pac-resolver) | 3.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [package-json](https://github.com/sindresorhus/package-json) | 4.0.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [pako](https://github.com/nodeca/pako) | 1.0.10 | ([MIT](http://www.opensource.org/licenses/MIT) AND [Zlib](http://www.zlib.net/zlib_license.html)) |
| [parallel-transform](https://github.com/mafintosh/parallel-transform) | 1.1.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [parse-asn1](https://github.com/crypto-browserify/parse-asn1) | 5.1.4 | [ISC](https://www.isc.org/downloads/software-support-policy/isc-license/) |
| [parse-path](https://github.com/IonicaBizau/parse-path) | 4.0.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [parse-url](https://github.com/IonicaBizau/parse-url) | 5.0.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [parse5](https://github.com/inikulin/parse5) | 5.1.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [pascalcase](https://github.com/jonschlinkert/pascalcase) | 0.1.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [path-browserify](https://github.com/substack/path-browserify) | 0.0.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [path-dirname](https://github.com/es128/path-dirname) | 1.0.2 | [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) |
| [path-is-absolute](https://github.com/sindresorhus/path-is-absolute) | 1.0.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [path-is-inside](https://github.com/domenic/path-is-inside) | 1.0.2 | ([WTFPL](http://sam.zoy.org/wtfpl/COPYING) OR [MIT](http://www.opensource.org/licenses/MIT)) |
| [path-key](https://github.com/sindresorhus/path-key) | 2.0.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [path-parse](https://github.com/jbgutierrez/path-parse) | 1.0.6 | [MIT](http://www.opensource.org/licenses/MIT) |
| [pbkdf2](https://github.com/crypto-browserify/pbkdf2) | 3.0.17 | [MIT](http://www.opensource.org/licenses/MIT) |
| [pdfjs-dist](https://github.com/mozilla/pdfjs-dist) | 2.3.200 | [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0) |
| [pify](https://github.com/sindresorhus/pify) | 3.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [pify](https://github.com/sindresorhus/pify) | 4.0.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [pkg-dir](https://github.com/sindresorhus/pkg-dir) | 3.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [posix-character-classes](https://github.com/jonschlinkert/posix-character-classes) | 0.1.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [prelude-ls](https://github.com/gkz/prelude-ls) | 1.1.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [prepend-http](https://github.com/sindresorhus/prepend-http) | 1.0.4 | [MIT](http://www.opensource.org/licenses/MIT) |
| [process-nextick-args](https://github.com/calvinmetcalf/process-nextick-args) | 2.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [process-nextick-args](https://github.com/calvinmetcalf/process-nextick-args) | 2.0.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [process](https://github.com/shtylman/node-process) | 0.11.10 | [MIT](http://www.opensource.org/licenses/MIT) |
| [promise-inflight](https://github.com/iarna/promise-inflight) | 1.0.1 | [ISC](https://www.isc.org/downloads/software-support-policy/isc-license/) |
| [promise](https://github.com/then/promise) | 7.3.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [propose](https://github.com/liushuping/propose) | 0.0.5 | [MIT](http://www.opensource.org/licenses/MIT) |
| [protocols](https://github.com/IonicaBizau/protocols) | 1.4.7 | [MIT](http://www.opensource.org/licenses/MIT) |
| [proxy-agent](https://github.com/TooTallNate/node-proxy-agent) | 3.1.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [proxy-from-env](https://github.com/Rob--W/proxy-from-env) | 1.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [prr](https://github.com/rvagg/prr) | 1.0.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [pseudomap](https://github.com/isaacs/pseudomap) | 1.0.2 | [ISC](https://www.isc.org/downloads/software-support-policy/isc-license/) |
| [public-encrypt](https://github.com/crypto-browserify/publicEncrypt) | 4.0.3 | [MIT](http://www.opensource.org/licenses/MIT) |
| [pump](https://github.com/mafintosh/pump) | 2.0.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [pump](https://github.com/mafintosh/pump) | 3.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [pumpify](https://github.com/mafintosh/pumpify) | 1.5.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [punycode](https://github.com/bestiejs/punycode.js) | 1.3.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [punycode](https://github.com/bestiejs/punycode.js) | 1.4.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [punycode](https://github.com/bestiejs/punycode.js) | 2.1.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [qs](https://github.com/ljharb/qs) | 6.9.3 | [BSD-3-Clause](http://www.opensource.org/licenses/BSD-3-Clause) |
| [querystring-es3](https://github.com/mike-spainhower/querystring) | 0.2.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [querystring](https://github.com/Gozala/querystring) | 0.2.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [randombytes](https://github.com/crypto-browserify/randombytes) | 2.1.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [randomfill](https://github.com/crypto-browserify/randomfill) | 1.0.4 | [MIT](http://www.opensource.org/licenses/MIT) |
| [raphael](https://github.com/DmitryBaranovskiy/raphael) | 2.2.7 | [MIT](http://www.opensource.org/licenses/MIT) |
| [raw-body](https://github.com/stream-utils/raw-body) | 2.4.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [rc](https://github.com/dominictarr/rc) | 1.2.8 | ([BSD-2-Clause](http://www.opensource.org/licenses/BSD-2-Clause) OR [MIT](http://www.opensource.org/licenses/MIT) OR [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0)) |
| [readable-stream](https://github.com/isaacs/readable-stream) | 1.1.14 | [MIT](http://www.opensource.org/licenses/MIT) |
| [readable-stream](https://github.com/nodejs/readable-stream) | 2.3.6 | [MIT](http://www.opensource.org/licenses/MIT) |
| [readable-stream](https://github.com/nodejs/readable-stream) | 3.4.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [readable-stream](https://github.com/nodejs/readable-stream) | 3.6.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [readdirp](https://github.com/paulmillr/readdirp) | 2.2.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [reflect-metadata](https://github.com/rbuckton/reflect-metadata) | 0.1.13 | [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0) |
| [regenerate](https://github.com/mathiasbynens/regenerate) | 1.4.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [regex-not](https://github.com/jonschlinkert/regex-not) | 1.0.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [regexpu-core](https://github.com/mathiasbynens/regexpu-core) | 1.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [registry-auth-token](https://github.com/rexxars/registry-auth-token) | 3.4.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [registry-url](https://github.com/sindresorhus/registry-url) | 3.1.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [regjsgen](https://github.com/d10/regjsgen) | 0.2.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [regjsparser](https://github.com/jviereck/regjsparser) | 0.1.5 | [BSD](http://www.opensource.org/licenses/BSD-2-Clause) |
| [remark-validate-links](https://github.com/remarkjs/remark-validate-links) | 8.0.3 | [MIT](http://www.opensource.org/licenses/MIT) |
| [remove-trailing-separator](https://github.com/darsain/remove-trailing-separator) | 1.1.0 | [ISC](https://www.isc.org/downloads/software-support-policy/isc-license/) |
| [repeat-element](https://github.com/jonschlinkert/repeat-element) | 1.1.3 | [MIT](http://www.opensource.org/licenses/MIT) |
| [repeat-string](https://github.com/jonschlinkert/repeat-string) | 1.6.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [resolve-url](https://github.com/lydell/resolve-url) | 0.2.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [resolve](https://github.com/browserify/resolve) | 1.11.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [restore-cursor](https://github.com/sindresorhus/restore-cursor) | 2.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [ret](https://github.com/fent/ret.js) | 0.1.15 | [MIT](http://www.opensource.org/licenses/MIT) |
| [rimraf](https://github.com/isaacs/rimraf) | 2.6.3 | [ISC](https://www.isc.org/downloads/software-support-policy/isc-license/) |
| [ripemd160](https://github.com/crypto-browserify/ripemd160) | 2.0.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [run-async](https://github.com/SBoudrias/run-async) | 2.3.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [run-queue](https://github.com/iarna/run-queue) | 1.0.3 | [ISC](https://www.isc.org/downloads/software-support-policy/isc-license/) |
| [rxjs](https://github.com/reactivex/rxjs) | 6.5.2 | [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0) |
| [safe-buffer](https://github.com/feross/safe-buffer) | 5.1.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [safe-regex](https://github.com/substack/safe-regex) | 1.1.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [safer-buffer](https://github.com/ChALkeR/safer-buffer) | 2.1.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [sax](https://github.com/isaacs/sax-js) | 1.2.4 | [ISC](https://www.isc.org/downloads/software-support-policy/isc-license/) |
| [schema-utils](https://github.com/webpack-contrib/schema-utils) | 0.4.7 | [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) |
| secure-keys | 1.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [semver-diff](https://github.com/sindresorhus/semver-diff) | 2.1.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [semver-dsl](https://github.com/mgechev/semver-dsl) | 1.0.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [semver](https://github.com/npm/node-semver) | 5.7.0 | [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) | 1.7.0 | [BSD-3-Clause](http://www.opensource.org/licenses/BSD-3-Clause) |
| [set-blocking](https://github.com/yargs/set-blocking) | 2.0.0 | [ISC](https://www.isc.org/downloads/software-support-policy/isc-license/) |
| [set-immediate-shim](https://github.com/sindresorhus/set-immediate-shim) | 1.0.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [set-value](https://github.com/jonschlinkert/set-value) | 2.0.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [setimmediate](https://github.com/YuzuJS/setImmediate) | 1.0.5 | [MIT](http://www.opensource.org/licenses/MIT) |
| [setprototypeof](https://github.com/wesleytodd/setprototypeof) | 1.1.1 | [ISC](https://www.isc.org/downloads/software-support-policy/isc-license/) |
| [sha.js](https://github.com/crypto-browserify/sha.js) | 2.4.11 | ([MIT](http://www.opensource.org/licenses/MIT) AND [BSD-3-Clause](http://www.opensource.org/licenses/BSD-3-Clause)) |
| [shallow-clone](https://github.com/jonschlinkert/shallow-clone) | 0.1.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [shebang-command](https://github.com/kevva/shebang-command) | 1.2.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [shebang-regex](https://github.com/sindresorhus/shebang-regex) | 1.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [signal-exit](https://github.com/tapjs/signal-exit) | 3.0.2 | [ISC](https://www.isc.org/downloads/software-support-policy/isc-license/) |
| [smart-buffer](https://github.com/JoshGlazebrook/smart-buffer) | 4.0.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [snapdragon-node](https://github.com/jonschlinkert/snapdragon-node) | 2.1.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [snapdragon-util](https://github.com/jonschlinkert/snapdragon-util) | 3.0.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [snapdragon](https://github.com/jonschlinkert/snapdragon) | 0.8.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [snyk-config](https://github.com/snyk/config) | 2.2.3 | [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0) |
| [snyk-docker-plugin](https://github.com/snyk/snyk-docker-plugin) | 1.33.1 | [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0) |
| [snyk-go-parser](https://github.com/snyk/snyk-go-parser) | 1.3.1 | [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0) |
| [snyk-go-plugin](https://github.com/snyk/snyk-go-plugin) | 1.11.1 | [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0) |
| [snyk-gradle-plugin](https://github.com/snyk/snyk-gradle-plugin) | 3.2.2 | [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0) |
| [snyk-module](https://github.com/snyk/module) | 1.9.1 | [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0) |
| [snyk-mvn-plugin](https://github.com/snyk/snyk-mvn-plugin) | 2.7.0 | [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0) |
| [snyk-nodejs-lockfile-parser](https://github.com/snyk/nodejs-lockfile-parser) | 1.16.1 | [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0) |
| [snyk-nuget-plugin](https://github.com/snyk/snyk-nuget-plugin) | 1.13.1 | [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0) |
| [snyk-paket-parser](https://github.com/snyk/snyk-paket-parser) | 1.5.0 | [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0) |
| [snyk-php-plugin](https://github.com/snyk/snyk-php-plugin) | 1.7.0 | [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0) |
| [snyk-policy](https://github.com/snyk/policy) | 1.13.5 | [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0) |
| [snyk-python-plugin](https://github.com/snyk/snyk-python-plugin) | 1.14.1 | [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0) |
| [snyk-resolve-deps](https://github.com/Snyk/resolve-deps) | 4.4.0 | [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0) |
| [snyk-resolve](https://github.com/Snyk/resolve-package) | 1.0.1 | [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0) |
| [snyk-sbt-plugin](https://github.com/snyk/snyk-sbt-plugin) | 2.9.1 | [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0) |
| [snyk-tree](https://github.com/Snyk/tree) | 1.0.0 | [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0) |
| [snyk-try-require](https://github.com/Snyk/try-require) | 1.3.1 | [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0) |
| [snyk](https://github.com/snyk/snyk) | 1.258.2 | [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0) |
| [socks-proxy-agent](https://github.com/TooTallNate/node-socks-proxy-agent) | 4.0.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [socks](https://github.com/JoshGlazebrook/socks) | 2.3.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [source-list-map](https://github.com/webpack/source-list-map) | 2.0.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [source-map-resolve](https://github.com/lydell/source-map-resolve) | 0.5.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [source-map-support](https://github.com/evanw/node-source-map-support) | 0.5.10 | [MIT](http://www.opensource.org/licenses/MIT) |
| [source-map-support](https://github.com/evanw/node-source-map-support) | 0.5.16 | [MIT](http://www.opensource.org/licenses/MIT) |
| [source-map-url](https://github.com/lydell/source-map-url) | 0.4.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [source-map](https://github.com/mozilla/source-map) | 0.5.6 | [BSD-3-Clause](http://www.opensource.org/licenses/BSD-3-Clause) |
| [source-map](https://github.com/mozilla/source-map) | 0.5.7 | [BSD-3-Clause](http://www.opensource.org/licenses/BSD-3-Clause) |
| [source-map](https://github.com/mozilla/source-map) | 0.6.1 | [BSD-3-Clause](http://www.opensource.org/licenses/BSD-3-Clause) |
| [split-string](https://github.com/jonschlinkert/split-string) | 3.1.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [sprintf-js](https://github.com/alexei/sprintf.js) | 1.0.3 | [BSD-3-Clause](http://www.opensource.org/licenses/BSD-3-Clause) |
| [sprintf-js](https://github.com/alexei/sprintf.js) | 1.1.2 | [BSD-3-Clause](http://www.opensource.org/licenses/BSD-3-Clause) |
| [ssri](https://github.com/zkat/ssri) | 6.0.1 | [ISC](https://www.isc.org/downloads/software-support-policy/isc-license/) |
| [static-extend](https://github.com/jonschlinkert/static-extend) | 0.1.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [statuses](https://github.com/jshttp/statuses) | 1.5.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [stream-browserify](https://github.com/browserify/stream-browserify) | 2.0.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [stream-each](https://github.com/mafintosh/stream-each) | 1.2.3 | [MIT](http://www.opensource.org/licenses/MIT) |
| [stream-http](https://github.com/jhiesey/stream-http) | 2.8.3 | [MIT](http://www.opensource.org/licenses/MIT) |
| [stream-shift](https://github.com/mafintosh/stream-shift) | 1.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [string-width](https://github.com/sindresorhus/string-width) | 1.0.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [string-width](https://github.com/sindresorhus/string-width) | 2.1.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [string-width](https://github.com/sindresorhus/string-width) | 3.1.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [string_decoder](https://github.com/rvagg/string_decoder) | 0.10.31 | [MIT](http://www.opensource.org/licenses/MIT) |
| [string_decoder](https://github.com/nodejs/string_decoder) | 1.1.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [strip-ansi](https://github.com/chalk/strip-ansi) | 3.0.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [strip-ansi](https://github.com/chalk/strip-ansi) | 4.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [strip-ansi](https://github.com/chalk/strip-ansi) | 5.2.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [strip-eof](https://github.com/sindresorhus/strip-eof) | 1.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [strip-json-comments](https://github.com/sindresorhus/strip-json-comments) | 2.0.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [superagent](https://github.com/visionmedia/superagent) | 5.2.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [supports-color](https://github.com/chalk/supports-color) | 5.5.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [systemjs](https://github.com/systemjs/systemjs) | 0.19.27 | [MIT](http://www.opensource.org/licenses/MIT) |
| [tapable](https://github.com/webpack/tapable) | 1.1.3 | [MIT](http://www.opensource.org/licenses/MIT) |
| [tar-stream](https://github.com/mafintosh/tar-stream) | 2.1.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [tar](https://github.com/npm/node-tar) | 4.4.8 | [ISC](https://www.isc.org/downloads/software-support-policy/isc-license/) |
| [temp-dir](https://github.com/sindresorhus/temp-dir) | 1.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [tempfile](https://github.com/sindresorhus/tempfile) | 2.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [term-size](https://github.com/sindresorhus/term-size) | 1.2.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [terser-webpack-plugin](https://github.com/webpack-contrib/terser-webpack-plugin) | 1.2.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [terser](https://github.com/fabiosantoscode/terser) | 3.17.0 | [BSD-2-Clause](http://www.opensource.org/licenses/BSD-2-Clause) |
| [then-fs](https://github.com/then/fs) | 2.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [through2](https://github.com/rvagg/through2) | 2.0.5 | [MIT](http://www.opensource.org/licenses/MIT) |
| [through](https://github.com/dominictarr/through) | 2.3.8 | [MIT](http://www.opensource.org/licenses/MIT) |
| [thunkify](https://github.com/visionmedia/node-thunkify) | 2.1.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [timed-out](https://github.com/floatdrop/timed-out) | 4.0.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [timers-browserify](https://github.com/jryans/timers-browserify) | 2.0.10 | [MIT](http://www.opensource.org/licenses/MIT) |
| [tmp](https://github.com/raszi/node-tmp) | 0.0.33 | [MIT](http://www.opensource.org/licenses/MIT) |
| [tmp](https://github.com/raszi/node-tmp) | 0.1.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [to-arraybuffer](https://github.com/jhiesey/to-arraybuffer) | 1.0.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [to-object-path](https://github.com/jonschlinkert/to-object-path) | 0.3.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [to-regex-range](https://github.com/micromatch/to-regex-range) | 2.1.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [to-regex](https://github.com/jonschlinkert/to-regex) | 3.0.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [toidentifier](https://github.com/component/toidentifier) | 1.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [toml](https://github.com/BinaryMuse/toml-node) | 3.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [tslib](https://github.com/Microsoft/tslib) | 1.10.0 | [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0) |
| [tslib](https://github.com/Microsoft/tslib) | 1.9.3 | [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0) |
| [tslint](https://github.com/palantir/tslint) | 5.20.0 | [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0) |
| [tsutils](https://github.com/ajafff/tsutils) | 2.29.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [tty-browserify](https://github.com/substack/tty-browserify) | 0.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [type-check](https://github.com/gkz/type-check) | 0.3.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [type](https://github.com/medikoo/type) | 1.2.0 | [ISC](https://www.isc.org/downloads/software-support-policy/isc-license/) |
| [type](https://github.com/medikoo/type) | 2.0.0 | [ISC](https://www.isc.org/downloads/software-support-policy/isc-license/) |
| [typedarray](https://github.com/substack/typedarray) | 0.0.6 | [MIT](http://www.opensource.org/licenses/MIT) |
| [typescript](https://github.com/Microsoft/TypeScript) | 3.1.6 | [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0) |
| [union-value](https://github.com/jonschlinkert/union-value) | 1.0.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [unique-filename](https://github.com/iarna/unique-filename) | 1.1.1 | [ISC](https://www.isc.org/downloads/software-support-policy/isc-license/) |
| [unique-slug](https://github.com/iarna/unique-slug) | 2.0.2 | [ISC](https://www.isc.org/downloads/software-support-policy/isc-license/) |
| [unique-string](https://github.com/sindresorhus/unique-string) | 1.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [unist-util-is](https://github.com/syntax-tree/unist-util-is) | 3.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [unist-util-visit-parents](https://github.com/syntax-tree/unist-util-visit-parents) | 2.1.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [unist-util-visit](https://github.com/syntax-tree/unist-util-visit) | 1.4.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [unpipe](https://github.com/stream-utils/unpipe) | 1.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [unset-value](https://github.com/jonschlinkert/unset-value) | 1.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [unzip-response](https://github.com/sindresorhus/unzip-response) | 2.0.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [upath](https://github.com/anodynos/upath) | 1.1.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [update-notifier](https://github.com/yeoman/update-notifier) | 2.5.0 | [BSD-2-Clause](http://www.opensource.org/licenses/BSD-2-Clause) |
| [uri-js](https://github.com/garycourt/uri-js) | 4.2.2 | [BSD-2-Clause](http://www.opensource.org/licenses/BSD-2-Clause) |
| [urix](https://github.com/lydell/urix) | 0.1.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [url-parse-lax](https://github.com/sindresorhus/url-parse-lax) | 1.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [url](https://github.com/defunctzombie/node-url) | 0.11.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [urljoin](https://github.com/yanni4night/urljoin) | 0.1.5 | [MIT](http://www.opensource.org/licenses/MIT) |
| [use](https://github.com/jonschlinkert/use) | 3.1.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [util-deprecate](https://github.com/TooTallNate/util-deprecate) | 1.0.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [util](https://github.com/defunctzombie/node-util) | 0.10.3 | [MIT](http://www.opensource.org/licenses/MIT) |
| [util](https://github.com/defunctzombie/node-util) | 0.11.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [uuid](https://github.com/kelektiv/node-uuid) | 3.3.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [vm-browserify](https://github.com/substack/vm-browserify) | 1.1.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [vscode-languageserver-types](https://github.com/Microsoft/vscode-languageserver-node) | 3.14.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [watchpack](https://github.com/webpack/watchpack) | 1.6.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [web-animations-js](https://github.com/web-animations/web-animations-js) | 2.3.1 | [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0) |
| [webpack-sources](https://github.com/webpack/webpack-sources) | 1.3.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [webpack](https://github.com/webpack/webpack) | 4.29.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [when](https://github.com/cujojs/when) | 3.7.8 | [MIT](http://www.opensource.org/licenses/MIT) |
| [which](https://github.com/isaacs/node-which) | 1.3.1 | [ISC](https://www.isc.org/downloads/software-support-policy/isc-license/) |
| [wide-align](https://github.com/iarna/wide-align) | 1.1.3 | [ISC](https://www.isc.org/downloads/software-support-policy/isc-license/) |
| [widest-line](https://github.com/sindresorhus/widest-line) | 2.0.1 | [MIT](http://www.opensource.org/licenses/MIT) |
| [window-size](https://github.com/jonschlinkert/window-size) | 0.1.4 | [MIT](http://www.opensource.org/licenses/MIT) |
| [windows-release](https://github.com/sindresorhus/windows-release) | 3.2.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [word-wrap](https://github.com/jonschlinkert/word-wrap) | 1.2.3 | [MIT](http://www.opensource.org/licenses/MIT) |
| [worker-farm](https://github.com/rvagg/node-worker-farm) | 1.7.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [worker-loader](https://github.com/webpack-contrib/worker-loader) | 2.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [wrap-ansi](https://github.com/chalk/wrap-ansi) | 2.1.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [wrap-ansi](https://github.com/chalk/wrap-ansi) | 5.1.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [wrappy](https://github.com/npm/wrappy) | 1.0.2 | [ISC](https://www.isc.org/downloads/software-support-policy/isc-license/) |
| [write-file-atomic](https://github.com/iarna/write-file-atomic) | 2.4.3 | [ISC](https://www.isc.org/downloads/software-support-policy/isc-license/) |
| [xdg-basedir](https://github.com/sindresorhus/xdg-basedir) | 3.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [xml2js](https://github.com/Leonidas-from-XIV/node-xml2js) | 0.4.19 | [MIT](http://www.opensource.org/licenses/MIT) |
| [xmlbuilder](https://github.com/oozcitak/xmlbuilder-js) | 9.0.7 | [MIT](http://www.opensource.org/licenses/MIT) |
| [xregexp](https://github.com/slevithan/XRegExp) | 2.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [xtend](https://github.com/Raynos/xtend) | 4.0.2 | [MIT](http://www.opensource.org/licenses/MIT) |
| [y18n](https://github.com/yargs/y18n) | 3.2.1 | [ISC](https://www.isc.org/downloads/software-support-policy/isc-license/) |
| [y18n](https://github.com/yargs/y18n) | 4.0.0 | [ISC](https://www.isc.org/downloads/software-support-policy/isc-license/) |
| [yallist](https://github.com/isaacs/yallist) | 2.1.2 | [ISC](https://www.isc.org/downloads/software-support-policy/isc-license/) |
| [yallist](https://github.com/isaacs/yallist) | 3.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/) |
| [yargs](https://github.com/bcoe/yargs) | 3.32.0 | [MIT](http://www.opensource.org/licenses/MIT) |
| [zone.js](https://github.com/angular/zone.js) | 0.8.29 | [MIT](http://www.opensource.org/licenses/MIT) |
@@ -103,7 +103,7 @@ The template defined inside `empty-form` will be shown when no form definition i
| error | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<any>` | Emitted when any error occurs. |
| executeOutcome | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<`[`FormOutcomeEvent`](../../../lib/core/form/components/widgets/core/form-outcome-event.model.ts)`>` | Emitted when any outcome is executed. Default behaviour can be prevented via `event.preventDefault()`. |
| formCompleted | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<`[`FormModel`](../../../lib/core/form/components/widgets/core/form.model.ts)`>` | Emitted when the form is submitted with the `Complete` outcome. |
| formContentClicked | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<string>` | Emitted when form content is clicked. |
| formContentClicked | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<`[`ContentLinkModel`](../../../lib/core/form/components/widgets/core/content-link.model.ts)`>` | Emitted when form content is clicked. |
| formDataRefreshed | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<`[`FormModel`](../../../lib/core/form/components/widgets/core/form.model.ts)`>` | Emitted when form values are refreshed due to a data property change. |
| formError | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<`[`FormFieldModel`](../../core/models/form-field.model.md)`[]>` | Emitted when the supplied form values have a validation error. |
| formLoaded | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<`[`FormModel`](../../../lib/core/form/components/widgets/core/form.model.ts)`>` | Emitted when the form is loaded or reloaded. |
@@ -38,7 +38,8 @@ Searches Groups.
| Name | Type | Default value | Description |
| ---- | ---- | ------------- | ----------- |
| appName | `string` | | Name of the application. If specified this shows the groups who have access to the app. |
| mode | `string` | | Group selection mode (single/multiple). |
| groupChipsCtrl | `FormControl` | | FormControl to list of group |
| mode | [`ComponentSelectionMode`](../../../lib/process-services-cloud/src/lib/types.ts) | "single" | Group selection mode (single/multiple). |
| preSelectGroups | [`IdentityGroupModel`](../../../lib/core/models/identity-group.model.ts)`[]` | \[] | Array of groups to be pre-selected. This pre-selects all groups in multi selection mode and only the first group of the array in single selection mode. |
| readOnly | `boolean` | false | Show the info in readonly mode |
| roles | `string[]` | \[] | Role names of the groups to be listed. |
@@ -25,13 +25,14 @@ Allows one or more users to be selected (with auto-suggestion) based on the inpu
| Name | Type | Default value | Description |
| ---- | ---- | ------------- | ----------- |
| appName | `string` | | Name of the application. If specified, this shows the users who have access to the app. |
| mode | `string` | | User selection mode (single/multiple). |
| mode | [`ComponentSelectionMode`](../../../lib/process-services-cloud/src/lib/types.ts) | "single" | User selection mode (single/multiple). |
| preSelectUsers | [`IdentityUserModel`](../../../lib/core/models/identity-user.model.ts)`[]` | \[] | Array of users to be pre-selected. All users in the array are pre-selected in multi selection mode, but only the first user is pre-selected in single selection mode. Mandatory properties are: id, email, username |
| readOnly | `boolean` | false | Show the info in readonly mode |
| roles | `string[]` | | Role names of the users to be listed. |
| searchUserCtrl | `FormControl` | | FormControl to search the user |
| title | `string` | | Placeholder translation key |
| validate | `Boolean` | false | This flag enables the validation on the preSelectUsers passed as input. In case the flag is true the components call the [identity service](../../../lib/testing/src/lib/core/actions/identity/identity.service.ts) to verify the validity of the information passed as input. Otherwise, no check will be done. |
| userChipsCtrl | `FormControl` | | FormControl to list of users |
| validate | `boolean` | false | This flag enables the validation on the preSelectUsers passed as input. In case the flag is true the components call the [identity service](../../../lib/testing/src/lib/core/actions/identity/identity.service.ts) to verify the validity of the information passed as input. Otherwise, no check will be done. |
### Events
@@ -52,6 +52,7 @@ when the process list is empty:
| ---- | ---- | ------------- | ----------- |
| actionsPosition | `string` | "right" | Position of the actions dropdown menu. Can be "left" or "right". |
| appName | `string` | "" | The name of the application. |
| appVersion | `number` | | The release version of the application. |
| businessKey | `string` | "" | Filter the processes to display only the ones with this businessKey value. |
| id | `string` | "" | Filter the processes to display only the ones with this ID. |
| initiator | `string` | "" | Name of the initiator of the process. |
@@ -51,6 +51,7 @@ Starts a process.
| cancel | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<`[`ProcessInstanceCloud`](../../../lib/process-services-cloud/src/lib/process/start-process/models/process-instance-cloud.model.ts)`>` | Emitted when the starting process is cancelled |
| error | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<`[`ProcessInstanceCloud`](../../../lib/process-services-cloud/src/lib/process/start-process/models/process-instance-cloud.model.ts)`>` | Emitted when an error occurs. |
| formContentClicked | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<`[`ContentLinkModel`](../../../lib/core/form/components/widgets/core/content-link.model.ts)`>` | Emitted when form content is clicked. |
| processDefinitionSelection | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<`[`ProcessDefinitionCloud`](../../../lib/process-services-cloud/src/lib/process/start-process/models/process-definition-cloud.model.ts)`>` | Emitted when process definition selection changes. |
| success | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<`[`ProcessInstanceCloud`](../../../lib/process-services-cloud/src/lib/process/start-process/models/process-instance-cloud.model.ts)`>` | Emitted when the process is successfully started. |
## Details
@@ -15,7 +15,7 @@ Manages Local Storage preferences.
- **createPreference**(\_: `string`, key: `string`, newPreference: `any`): [`Observable`](http://reactivex.io/documentation/observable.html)`<any>`<br/>
Creates local preference.
- _\_:_ `string` -
- _\_:_ `string` - Name of the target app
- _key:_ `string` - Key of the target preference
- _newPreference:_ `any` - Details of new local preference
- **Returns** [`Observable`](http://reactivex.io/documentation/observable.html)`<any>` - Observable of created local preferences
@@ -26,13 +26,13 @@ Manages Local Storage preferences.
- **Returns** [`Observable`](http://reactivex.io/documentation/observable.html)`<any>` - Observable of preferences without deleted preference
- **getPreferenceByKey**(\_: `string`, key: `string`): [`Observable`](http://reactivex.io/documentation/observable.html)`<any>`<br/>
Gets local preference.
- _\_:_ `string` -
- _\_:_ `string` - Name of the target app
- _key:_ `string` - Key of the target preference
- **Returns** [`Observable`](http://reactivex.io/documentation/observable.html)`<any>` - Observable of local preference
- **getPreferences**(\_: `string`, key: `string`): [`Observable`](http://reactivex.io/documentation/observable.html)`<any>`<br/>
Gets local preferences
- _\_:_ `string` -
- _key:_ `string` - (Optional)
- _\_:_ `string` - Name of the target app
- _key:_ `string` - Key of the target preference
- **Returns** [`Observable`](http://reactivex.io/documentation/observable.html)`<any>` - List of local preferences
- **prepareLocalPreferenceResponse**(key: `string`): `any`<br/>
@@ -41,7 +41,7 @@ Manages Local Storage preferences.
- **updatePreference**(\_: `string`, key: `string`, updatedPreference: `any`): [`Observable`](http://reactivex.io/documentation/observable.html)`<any>`<br/>
Updates local preference.
- _\_:_ `string` -
- _\_:_ `string` - Name of the target app
- _key:_ `string` - Key of the target preference
- _updatedPreference:_ `any` - Details of updated preference
- **Returns** [`Observable`](http://reactivex.io/documentation/observable.html)`<any>` - Observable of updated local preferences
@@ -13,6 +13,11 @@ Gets process definitions and starts processes.
### Methods
- **createProcess**(appName: `string`, payload: [`ProcessPayloadCloud`](../../../lib/process-services-cloud/src/lib/process/start-process/models/process-payload-cloud.model.ts)): [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`ProcessInstanceCloud`](../../../lib/process-services-cloud/src/lib/process/start-process/models/process-instance-cloud.model.ts)`>`<br/>
Create a process based on a process definition, name, form values or variables.
- _appName:_ `string` - name of the [Application](../../../lib/testing/src/lib/core/structure/application.ts)
- _payload:_ [`ProcessPayloadCloud`](../../../lib/process-services-cloud/src/lib/process/start-process/models/process-payload-cloud.model.ts) - Details of the process (definition key, name, variables, etc)
- **Returns** [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`ProcessInstanceCloud`](../../../lib/process-services-cloud/src/lib/process/start-process/models/process-instance-cloud.model.ts)`>` - Details of the process instance just created
- **getBasePath**(appName: `string`): `string`<br/>
- _appName:_ `string` -
@@ -22,9 +27,14 @@ Gets process definitions and starts processes.
Gets the process definitions associated with an app.
- _appName:_ `string` - Name of the target app
- **Returns** [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`ProcessDefinitionCloud`](../../../lib/process-services-cloud/src/lib/process/start-process/models/process-definition-cloud.model.ts)`[]>` - Array of process definitions
- **startCreatedProcess**(appName: `string`, createdProcessInstanceId: `string`): [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`ProcessInstanceCloud`](../../../lib/process-services-cloud/src/lib/process/start-process/models/process-instance-cloud.model.ts)`>`<br/>
Starts an already created process using the process instance id.
- _appName:_ `string` -
- _createdProcessInstanceId:_ `string` - process instance id of the process previously created
- **Returns** [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`ProcessInstanceCloud`](../../../lib/process-services-cloud/src/lib/process/start-process/models/process-instance-cloud.model.ts)`>` - Details of the process instance just started
- **startProcess**(appName: `string`, payload: [`ProcessPayloadCloud`](../../../lib/process-services-cloud/src/lib/process/start-process/models/process-payload-cloud.model.ts)): [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`ProcessInstanceCloud`](../../../lib/process-services-cloud/src/lib/process/start-process/models/process-instance-cloud.model.ts)`>`<br/>
Starts a process based on a process definition, name, form values or variables.
- _appName:_ `string` - name of the Application
- _appName:_ `string` - name of the [Application](../../../lib/testing/src/lib/core/structure/application.ts)
- _payload:_ [`ProcessPayloadCloud`](../../../lib/process-services-cloud/src/lib/process/start-process/models/process-payload-cloud.model.ts) - Details of the process (definition key, name, variables, etc)
- **Returns** [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`ProcessInstanceCloud`](../../../lib/process-services-cloud/src/lib/process/start-process/models/process-instance-cloud.model.ts)`>` - Details of the process instance just started
@@ -61,9 +61,11 @@ when the process list is empty:
| resolverFn | `Function` | null | Resolver function is used to show dynamic complex column objects see the docs to learn how to configure a resolverFn. |
| selectFirstRow | `boolean` | true | Toggles default selection of the first row |
| selectionMode | `string` | "single" | Row selection mode. Can be none, `single` or `multiple`. For `multiple` mode, you can use Cmd (macOS) or Ctrl (Win) modifier key to toggle selection for multiple rows. |
| showContextMenu | `boolean` | false | Toggles custom context menu for the component. |
| size | `number` | | The number of processes to fetch in each page. |
| sort | `string` | | Defines the sort ordering of the list. Possible values are `created-desc`, `created-asc`, `ended-desc`, `ended-asc`. |
| state | `string` | | Defines the state of the processes. Possible values are `running`, `completed` and `all` |
| stickyHeader | `boolean` | false | Toggles the sticky header mode. |
### Events
@@ -71,6 +73,7 @@ when the process list is empty:
| ---- | ---- | ----------- |
| error | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<any>` | Emitted when an error occurs while loading the list of process instances from the server. |
| rowClick | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<string>` | Emitted when a row in the process list is clicked. |
| showRowContextMenu | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<`[`DataCellEvent`](../../../lib/core/datatable/components/datatable/data-cell.event.ts)`>` | Emitted before the context menu is displayed for a row. |
| success | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<`[`ProcessListModel`](../../../lib/process-services/src/lib/process-list/models/process-list.model.ts)`>` | Emitted when the list of process instances has been loaded successfully from the server. |
## Details
@@ -186,6 +189,49 @@ The Process Instance List also supports pagination:
</adf-pagination>
```
#### showRowContextMenu event
Emitted before the context menu is displayed for a row.
Note that the [ProcessInstanceListComponent](../../../lib/process-services/src/lib/process-list/components/process-list.component.ts) itself does not populate the context menu with items. You can provide all necessary content via the handler.
```html
<adf-process-instance-list
[contextMenu]="true"
(showRowContextMenu)="onShowRowContextMenu($event)">
</adf-process-instance-list>
```
Event properties:
```ts
value: {
row: DataRow,
col: DataColumn,
actions: []
}
```
Handler example:
```ts
onShowRowContextMenu(event: DataCellEvent) {
event.value.actions = [
{ title: 'Process List Context Menu' },
{ ... }
]
}
```
![](../../docassets/images/process-instance-list-context-menu.png)
This event is cancellable. You can use `event.preventDefault()` to prevent the default behavior.
The ProcessInstanceList will automatically render the supplied menu items.
See the [ContextMenu](https://www.npmjs.com/package/ng2-alfresco-core)
documentation for more details on the format and behavior of context actions.
## See also
- [Data column component](../../core/components/data-column.component.md)
@@ -43,6 +43,7 @@ Starts a process.
| processDefinitionName | `string` | | (optional) Definition name of the process to start. |
| processFilterSelector | `boolean` | true | (optional) Parameter to enable selection of process when filtering. |
| showSelectProcessDropdown | `boolean` | true | Hide or show the process selection dropdown. |
| title | `string` | | (optional) Define the header of the component. |
| values | [`FormValues`](../../../lib/core/form/components/widgets/core/form-values.ts) | | Parameter to pass form field values in the start form if one is associated. |
| variables | [`ProcessInstanceVariable`](../../../lib/process-services/src/lib/process-list/models/process-instance-variable.model.ts)`[]` | | Variables in the input to the process [`RestVariable`](https://github.com/Alfresco/alfresco-js-api/blob/development/src/api/activiti-rest-api/docs/RestVariable.md). |
@@ -52,6 +53,7 @@ Starts a process.
| ---- | ---- | ----------- |
| cancel | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<`[`ProcessInstance`](../../../lib/process-services/src/lib/process-list/models/process-instance.model.ts)`>` | Emitted when the process is canceled. |
| error | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<`[`ProcessInstance`](../../../lib/process-services/src/lib/process-list/models/process-instance.model.ts)`>` | Emitted when an error occurs. |
| processDefinitionSelection | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<`[`ProcessDefinitionRepresentation`](https://github.com/Alfresco/alfresco-js-api/blob/development/src/api/activiti-rest-api/docs/ProcessDefinitionRepresentation.md)`>` | Emitted when process definition selection changes. |
| start | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<`[`ProcessInstance`](../../../lib/process-services/src/lib/process-list/models/process-instance.model.ts)`>` | Emitted when the process starts. |
## Details
@@ -61,6 +63,7 @@ Starts a process.
```html
<adf-start-process
[appId]="YOUR_APP_ID"
[title]="'ADF_PROCESS_LIST.START_PROCESS.FORM.TITLE'"
[name]="PROCESS_NAME"
[processDefinitionName]="PROCESS_DEFINITION_NAME">
</adf-start-process>
@@ -0,0 +1,55 @@
---
Title: Task Form component
Added: v2.0.0
Status: Active
Last reviewed: 2020-04-21
---
# [Task Form component](../../../lib/process-services/src/lib/task-list/components/task-form/task-form.component.ts "Defined in task-form.component.ts")
Shows a [`form`](../../../lib/process-services/src/lib/task-list/models/form.model.ts) for a task.
## Basic Usage
```html
<adf-task-form
[taskId]="taskId">
</adf-task-form>
```
## Class members
### Properties
| Name | Type | Default value | Description |
| ---- | ---- | ------------- | ----------- |
| fieldValidators | [`FormFieldValidator`](../../../lib/core/form/components/widgets/core/form-field-validator.ts)`[]` | \[] | Field validators for use with the form. |
| readOnlyForm | `boolean` | false | Toggles read-only state of the form. All form widgets render as read-only if enabled. |
| showCancelButton | `boolean` | true | Toggle rendering of the `Cancel` button. |
| showFormCompleteButton | `boolean` | true | Toggles rendering of the `Complete` outcome button. |
| showFormRefreshButton | `boolean` | true | Toggles rendering of the `Refresh` button. |
| showFormSaveButton | `boolean` | true | Toggles rendering of the `Save` outcome button. |
| showFormTitle | `boolean` | false | Toggles rendering of the form title. |
| showFormValidationIcon | `boolean` | true | Toggle rendering of the validation icon next to the form title. |
| taskId | `string` | | (**required**) The id of the task whose details we are asking for. |
### Events
| Name | Type | Description |
| ---- | ---- | ----------- |
| cancel | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<void>` | Emitted when the "Cancel" button is clicked. |
| completed | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<void>` | Emitted when the form associated with the task is completed. |
| error | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<any>` | Emitted when an error occurs. |
| executeOutcome | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<`[`FormOutcomeEvent`](../../../lib/core/form/components/widgets/core/form-outcome-event.model.ts)`>` | Emitted when any outcome is executed. Default behaviour can be prevented via `event.preventDefault()`. |
| formCompleted | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<`[`FormModel`](../../../lib/core/form/components/widgets/core/form.model.ts)`>` | Emitted when the form is submitted with the `Complete` outcome. |
| formContentClicked | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<`[`ContentLinkModel`](../../../lib/core/form/components/widgets/core/content-link.model.ts)`>` | Emitted when the form field content is clicked. |
| formError | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<`[`FormFieldModel`](../../core/models/form-field.model.md)`[]>` | Emitted when the supplied form values have a validation error. |
| formLoaded | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<`[`FormModel`](../../../lib/core/form/components/widgets/core/form.model.ts)`>` | Emitted when the form is loaded or reloaded. |
| formSaved | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<`[`FormModel`](../../../lib/core/form/components/widgets/core/form.model.ts)`>` | Emitted when the form is submitted with the `Save` or custom outcomes. |
| showAttachForm | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<void>` | Emitted when the form associated with the form task is attached. |
## See also
- [Form component](./form.component.md)
- [Form field model](../../core/models/form-field.model.md)
- [Form service](../../core/services/form.service.md)
@@ -68,10 +68,12 @@ when the task list is empty:
| processInstanceId | `string` | | The Instance Id of the process. |
| selectFirstRow | `boolean` | true | Toggles default selection of the first row |
| selectionMode | `string` | "single" | Row selection mode. Can be none, `single` or `multiple`. For `multiple` mode, you can use Cmd (macOS) or Ctrl (Win) modifier key to toggle selection for multiple rows. |
| showContextMenu | `boolean` | false | Toggles custom context menu for the component. |
| size | `number` | | The number of tasks to fetch. Default value: 25. |
| sort | `string` | | Define the sort order of the tasks. Possible values are : `created-desc`, `created-asc`, `due-desc`, `due-asc` |
| start | `number` | | Starting point of the list within the full set of tasks. |
| state | `string` | | Current state of the process. Possible values are: `completed`, `active`. |
| stickyHeader | `boolean` | false | Toggles the sticky header mode. |
| taskId | `string` | | The id of a task |
### Events
@@ -81,6 +83,7 @@ when the task list is empty:
| error | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<any>` | Emitted when an error occurs. |
| rowClick | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<string>` | Emitted when a task in the list is clicked |
| rowsSelected | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<any[]>` | Emitted when rows are selected/unselected |
| showRowContextMenu | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<`[`DataCellEvent`](../../../lib/core/datatable/components/datatable/data-cell.event.ts)`>` | Emitted before the context menu is displayed for a row. |
| success | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<any>` | Emitted when the task list is loaded |
## Details
@@ -228,6 +231,50 @@ typical tasklist:
You can customize the styling of a column and also add features like tooltips and automatic translation of column titles. See the [Data Column component](../../core/components/data-column.component.md) page for more information about these features.
#### showRowContextMenu event
Emitted before the context menu is displayed for a row.
Note that the [TaskListComponent](../../process-services/components/task-list.component.md) itself does not populate the context menu with items.
You can provide all necessary content via the handler.
```html
<adf-tasklist
[contextMenu]="true"
(showRowContextMenu)="onShowRowContextMenu($event)">
</adf-tasklist>
```
Event properties:
```ts
value: {
row: DataRow,
col: DataColumn,
actions: []
}
```
Handler example:
```ts
onShowRowContextMenu(event: DataCellEvent) {
event.value.actions = [
{ title: 'Task List Context Menu' },
{ ... }
]
}
```
![](../../docassets/images/task-list-context-menu.png)
This event is cancellable. You can use `event.preventDefault()` to prevent the default behavior.
The [TaskListComponent](../../process-services/components/task-list.component.md) will automatically render the supplied menu items.
See the [ContextMenu](https://www.npmjs.com/package/ng2-alfresco-core)
documentation for more details on the format and behavior of context actions.
## See also
- [Data column component](../../core/components/data-column.component.md)
+2 -1
View File
@@ -9,7 +9,8 @@ The first **General available** release was v2.0.0.
## General available
- [3.6.0](RelNote360.md)
- [3.8.0](RelNote380.md)
- [3.7.0](RelNote370.md)
- [3.5.0](RelNote350.md)
- [3.4.0](RelNote340.md)
- [3.3.0](RelNote330.md)
+210
View File
@@ -0,0 +1,210 @@
---
Title: Release notes v3.8.0
---
# Alfresco Application Development Framework (ADF) version 3.8.0 Release Note
These release notes provide information about the **3.8.0 release** of the Alfresco Application Development Framework.
This is the latest **General Available** release of the Application Development Framework, which contains the Angular components to build a Web Application on top of the Alfresco Platform.
The release can be found on GitHub at [this location](https://github.com/Alfresco/alfresco-ng2-components/releases/tag/3.8.0).
See the [ADF roadmap](../roadmap.md) for details of features planned for future versions of ADF.
## Contents
- [New package versions](#new-package-versions)
- [Goals for this release](#goals-for-this-release)
- [Additional support for content and metadata management](#additional-support-for-content-and-metadata-management)
- [Improved accessibility](#improved-accessibility)
- [Localisation](#localisation)
- [References](#references)
- [Issues addressed](#issues-addressed)
## New package versions
"@alfresco/adf-content-services" : "3.8.0"
"@alfresco/adf-process-services" : "3.8.0"
"@alfresco/adf-core" : "3.8.0"
"@alfresco/adf-insights" : "3.8.0",
"@alfresco/adf-extensions": "3.8.0"
"@alfresco/adf-testing": "3.8.0"
"@alfresco/adf-cli": "3.8.0"
## Goals for this release
This is the seventh minor release of ADF since February 2019 when version 3.0.0 was released.
The highlights of this release include [additional support for content and metadata management](https://issues.alfresco.com/jira/browse/ADF-5108) as well as [improved accessibility](https://issues.alfresco.com/jira/browse/ADF-5089) and better support of [Activiti 7](https://www.activiti.org/).
Please report issues with this release in the [issue tracker](https://github.com/Alfresco/alfresco-ng2-components/issues/new). You can collaborate on this release or share feedback by using the discussion tools on [Gitter](http://gitter.im/Alfresco/alfresco-ng2-components).
### Additional support for content and metadata management
After some time the content and metadata management hasn't been loved enough, with this version of ADF there are a good number of improvements on the way to consume content metadata in ADF components and ADF based applications. Most of them are developed for an improved and more appealing end-user experience.
#### Revised Content Metadata Component
As one of the most requested enhancements, it would be valuable to highlight the changed User Experience in the metadata editing on the adf-card-view-component ([ADF-4900](https://issues.alfresco.com/jira/browse/ADF-4900)).
ADF's Content Metadata Component has been revised with a fresh new style for a better user experience. Fields look much more uniform and the interaction with them has been simplified to avoid unwanted changes.
This new version will make it clearer than ever to know what aspects can be changed and also how they can be saved.
![](images/metadata-component.png)
Check [ADF-5108](https://issues.alfresco.com/jira/browse/ADF-5108) for the full list of issues done.
### Improved accessibility
To help the accessibility of ADF based applications, some colour changes have been developed with the purpose to reach the AA Accessibility. Check 1. [ADF-5089](https://issues.alfresco.com/jira/browse/ADF-5089) for the full list of issues done.
## Localisation
This release includes: Arabic, Brazilian Portuguese, Czech, Danish, Dutch, Finnish, French, German, Italian, Japanese, Norwegian (Bokmål), Polish, Russian, Simplified Chinese, Spanish and Swedish versions.
## References
The following is a brief list of references to help you get started with the new release:
- [Getting started guides with Alfresco Application Development Framework](https://community.alfresco.com/community/application-development-framework/pages/get-started)
- [Alfresco ADF Documentation on the Builder Network](../README.md)
- [Gitter chat supporting Alfresco ADF](https://gitter.im/Alfresco/alfresco-ng2-components)
- [ADF examples on GitHub](https://github.com/Alfresco/adf-examples)
- [Official GitHub Project - alfresco-ng2-components](https://github.com/Alfresco/alfresco-ng2-components)
- [Official GitHub Project - alfresco-js-api](https://github.com/Alfresco/alfresco-js-api)
- [Official GitHub Project - generator-ng2-alfresco-app](https://github.com/Alfresco/generator-ng2-alfresco-app)
Please refer to the [official documentation](http://docs.alfresco.com/) for further details and suggestions.
## Issues addressed
```
[ADF-5134] REGRESSION - Fix People and Group Components firing twice
ALL 16 LANGUAGES - fix for LOC-212 - updated localised files for ADF 3.8
[ADF-5123] C315268 not working correctly
[AAE-2505] [PS cloud] Should not allow to start the process if is not created
[ACA-3229] - fixed error on start process cloud when all the value a…
[ADF-5122] Unexclude C309674 test
[AAE-2487] Fix Checkbox Widget bug
[ACA-3232] Fix console error expression has changed after it has…
[PRODDEL-3086] Release note in draft for 3.8.0. documentation
[DW-1530] - created extra method for process definition key set on fi…
[ACA-3040]Modify some methods of start-process PO
[ADF-5132] Review UI strings
[ADF-5129][ADF-5130] Fix Lock in Gallery view and Lock Dialog
[AAE-2456] - Added a new function for generate lowercase and number strings
[AAE-2020] Add release version filter for process instances
[ADF-4900] Card View and Metadata Components refactoring
[AAE-2321] Should not be able to start a process with space(s) in the beginning/end of process name (Process Services Cloud)
[ACA-1894] - fixed missing behaviour for drag&drop
[MNT-21469] TreeView component has events on icon only
[DW-1669] [ADF-5107]- Added new api call for creating and starting a process in…
[ACA-1894] - added the possibility to filter whenever is possible by …
[ACA-3191] Remove adding Alfresco suffix by default in the repo name
[ADF-5120] Fix initialization error of PS cloud Services
[ACA-2523] Fix text color of comment user icon
[ACA-3023]Refactor APS1 PO and ACS API calls of ADF testing package
[ADF-5118] Enable E2E
[ACA-3174] Add custom icons for processes and tasks
[ACA-3170] Task/Process Add the sticky header feature
[ACA-30333] FE - [Process-services] Create ADF task form.
[AAE-1936] Attach File E2E APS1
[ACA-2523] Update comment text colors
[ADF-5106] allow to redefine form widgets (APS 1.x and cloud)
[ACA-3080] Remove selecting first filter by default when no defaults …
[ACA-3040] Refactor/and move to testing package POs and API calls
[ACA-3020] Start process on process cloud updated the labels (always floating)
[AAE-2321] Should not be able to start a process with space as name (Process Services)
[ACA-2556] Change checking and welcome colors in login button
[AAE-1948] Form Attach File cloud widget E2E
[ADF-5116] Make ADF's pipeline GREEN again
[ACA-2734] Fix API - Return an error in case the response isn't a json
[ACA-2948] Add API to fetch the bpm properties
[ACA-2520] Opacity of tab label of info drawer set to 1
[ACA-2523] Change comment colors
[ADF-5114] Change dialog action button color
[ADF-155] Tags displayed only when they are referenced at least once
[AAE-1929] Attach Folder APS1 E2E
[ACA-2476] Fix color contrast in mat-calendar and mat-datetimepicker-calendar
[ACA-2493] Fix disabled create folder button color
[#5561] Translate notification action value
[ACA-3000][ACA-2999] FE - Provide way to show ContextMenu on Task/Process list
[ACA-2983] Changed the labels from the inputs name and type to always floating
[AAE-2200] Add dynamic title to attach-file-widget-dialog
[ADF-5105] Force color of header button of upload dialog
[ADF-5104] Change color of location text
[ADF-1881] Consolidate NodeService and NodesApiService
[ADF-5102] Added indeterminate state for 'select all' in datatable
[ADF-4264] Fixed the breadcrumb when changing to custom site in node selector
[ACA-2951]Add APS1 calls to adf testing package
[ADF-4264] Fixed the breadcrumb when changing to custom site in node selector
[ADF-5101] Change empty folder text display colors
[AAE-2200] Fix upload dialog title
[ADF-3726] Enable/disable Copy to clipboard in Metadata from config
[ADF-5091] Fix undefined accent variable
[AAE-2202] Not able to search for files
[ACA-2956] Add event emitter when processDefinition selection changes…
[ADF-5095] Update text color of share dialog
[ADF-5091] Change info drawer labels color
[ADF-5093] Change datepicker color
[ADF-5090] Change color of input button
[ADF-5094] Changed focused chip color
[ADF-5096] Icon on move dialog darker
[ADF-5092] Change card view label color
[AAE-2041] [APS-1] [ADF] download process audit log not working
[ADF-4933] Adding keydown event on data row to simulate double click when pressing 'enter' key
[AAE-2198] Error thrown on start process with pre-selected multiple files on start form.
[ADF-3726] Add copy to clipboard support to card view properties
[ACA-2368] UI Issues while editing Metadata in the Preview Page #1091
[ADF-4341] Customise the property title into the InfoDrawer from configuration
[ADF-4559] Add chips to multivalue metadata properties
[ACA-2474] - Card View DateItem - Calendar Accessibility Fixes Accessibility
[AAE-1725] ADF Task/Process filters - default filters should be recreated when they all get deleted
[ADF-4673] Add editable property to metadata config
[ACA-2789] - edit button a11y fixes Accessibility
[ACA-2597] search chip list accessibility Accessibility
[ACA-2566][ACA-2567] permissions a11y fixes
[ACA-2567] - Data Table - Sortable SR text update Accessibility needs rebase
[ACA-2568] Permission-List - Removal of List ARIA Accessibility PR: reviewed-changes-requested
[ACA-2614] fix share link dialog header a11y
[ADF-5087] Document List - custom sources 'where' clause not passed
[AAE-1579] Fixing the style of the prefix of amount widget
[ACA-2619][ACA-2616] a11y fixes for Share Link dialog Accessibility
[AAE-1772]Add CardSelectItemPage PO
[AAE-1841] - added delete directive test
[ADF-4522] Metadata value is not rolled back upon error
[ADF-4856] Core refactor - be able to run ng build PR: reviewed-changes-requested needs rebase
[ADF-4888] DocumentList - cell header title is announced over cell value Accessibility
[AAE-1923] Form APS E2E
[ACA-2618][ACA-2619] Share Dialog - Physical Labels Accessibility
[AAE-1923] Multilingual form unit test
calendar card item a11y fixes
[ADF-4559] Add chips to multivalue metadata properties
[ACA-2474] - Card View DateItem - Calendar Accessibility Fixes Accessibility
[AAE-1725] ADF Task/Process filters - default filters should be recreated when they all get deleted
[ADF-4673] Add editable property to metadata config
[ACA-2789] - edit button a11y fixes Accessibility
[ACA-2597] search chip list accessibility Accessibility
[ACA-2566][ACA-2567] permissions a11y fixes
[ACA-2567] - Data Table - Sortable SR text update Accessibility needs rebase
[ACA-2568] Permission-List - Removal of List ARIA Accessibility PR: reviewed-changes-requested
[ACA-2614] fix share link dialog header a11y
[ADF-5087] Document List - custom sources 'where' clause not passed
[AAE-1579] Fixing the style of the prefix of amount widget
[ACA-2619][ACA-2616] a11y fixes for Share Link dialog Accessibility
[AAE-1772]Add CardSelectItemPage PO
[AAE-1895]Add CardSelectItemPage PO
[AAE-1841] - added delete directive test
[ADF-4522] Metadata value is not rolled back upon error
[ADF-4856] Core refactor - be able to run ng build PR: reviewed-changes-requested needs rebase
[ADF-4888] DocumentList - cell header title is announced over cell value Accessibility
[AAE-1923] Form APS E2E
[ACA-2618][ACA-2619] Share Dialog - Physical Labels Accessibility
[AAE-1923] Multilingual form unit test
```
Please refer to the [Alfresco issue tracker](https://issues.alfresco.com/jira/projects/ADF/issues/ADF-581?filter=allopenissues) for other known issues in this release. If you have any questions about the release, please contact us using [Gitter](https://gitter.im/Alfresco/alfresco-ng2-components).
Thanks to the whole application team and the amazing Alfresco community for the hard work.
Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

-26
View File
@@ -1,26 +0,0 @@
---
Title: ADF roadmap
---
# ADF roadmap
Below is a list of the high level feature themes planned for the forthcoming versions of ADF.
Last updated 26 Feb 2019:
- Continue with the Activiti features.
- Accessibility (508 compliance and automatic tests).
- Search highlighting.
- Better metadata viewer (whitelisting by default).
- Support for languages that are written right-to-left (such as Arabic).
- Continue with Governance features into ADF.
- Better experience in plugin/extensions.
- Application dashboards.
- Permission driven menus.
- Experimental features:
- Artificial Intelligence plugins/components.
- Web components for ADF to be framework agnostic.
- Rapid Application Development.
**Disclaimer**: The list above may change in the future and it does not
represent an official promise about features to be implemented. The purpose of this public roadmap is to share infomation openly with our ecosystem of customers, partners and enthusiasts.
+2 -2
View File
@@ -6,14 +6,14 @@ Github only: true
# Tutorials
| Name | Level | Abstract |
| ---- | ----- | -------- |
| --- | --- | --- |
| [**Creating your first ADF application**](creating-your-first-adf-application.md) | Basic | This tutorial shows you how to set up your development environment and create an ADF application. |
| [**Creating your ADF application using Yeoman**](creating-the-app-using-yeoman.md) | Basic | In this tutorial you are going to see how to create an ADF application from scratch, using the [Yeoman scaffolding tool](http://yeoman.io/). |
| [**Creating your Alfresco JavaScript application**](creating-javascript-app-using-alfresco-js-api.md) | Basic | In this tutorial you will learn how to create an application in JavaScript from scratch to interact with Alfresco. |
| [**Adding a new component**](new-component.md) | Basic | In this tutorial, you will learn how to create a component using [Angular CLI](https://cli.angular.io/) within an existing application. |
| [**Adding a new view**](new-view.md) | Beginner | In this tutorial you will learn how to create a new view in your application and how to access it using a defined endpoint. |
| [**Using ADF Components**](using-components.md) | Basic | In this tutorial you will learn how to extend, use and configure ADF Components. |
| [**Basic theming**](basic-theming.md) | Beginner | In this tutorial you will see how to theme an ADF app by modifying the CSS. |
| [**Basic theming**](basic-theming.md) | Beginner | In this tutorial you will see how to theme an ADF app by modifying the CSS. |
| [**Customizing the Login component**](customising-login.md) | Intermediate | In this tutorial you will learn how to customize the [Login component](../core/components/login.component.md) following the technical documentation. |
| [**Working with a Data Table**](working-with-data-table.md) | Intermediate | In this tutorial you will learn how to populate a DataTable component. |
| [**Working with the Nodes API Service**](working-with-nodes-api-service.md) | Intermediate | In this tutorial you will learn how to use the [`NodesApiService`](../core/services/nodes-api.service.md). |
+7 -2
View File
@@ -13,10 +13,13 @@ This document contains the development environment description, along with the d
[Node.js](https://nodejs.org) is a JavaScript runtime built using an event-driven, non-blocking I/O model that makes it lightweight and efficient. [`Node`](https://github.com/Alfresco/alfresco-js-api/blob/development/src/api/content-rest-api/docs/Node.md).js uses [npm](https://www.npmjs.com/) as a public registry and package system.
You need the latest `node.js` from either the `8.x` or `9.x` branch.
To check the version, run the following command in a terminal.
We suggested to use the current long term support version of `node.js` check the LTS version [here](https://nodejs.org/).
To check your running version, run the following command in a terminal.
```sh
node -v
````
## Angular CLI
@@ -26,7 +29,9 @@ Version 1.6.6 seems to be the most stable version currently. Earlier and later v
If you already have `Angular CLI` installed check the version by running:
```sh
ng --version
```
To globally install `Angular CLI` version globally 1.6.6 run:
+1
View File
@@ -10,3 +10,4 @@ Below are links to the upgrade guides notes for all released versions of ADF bac
- [Upgrading from ADF v3.0 to v3.1](upgrade30-31.md)
- [Upgrading from ADF v3.1 to v3.2](upgrade31-32.md)
- [Upgrading from ADF v3.2 to v3.3](upgrade32-33.md)
- [Upgrading from ADF v3.2 to v3.3](upgrade37-38.md)
+78
View File
@@ -0,0 +1,78 @@
---
Title: Upgrading from ADF v3.7 to v3.8
---
# Upgrading from ADF v3.7 to v3.8
This guide explains how to upgrade your ADF v3.2 project to work with v3.3.
Do not skip this task, if you want your application to be updated to a most recent version of ADF. Upgrades of multiple versions of ADF cannot be done in one step only, but should follow the chain of sequential updates.
**Note:** the steps described below might involve making changes
to your code. If you are working with a versioning system then you should
commit any changes you are currently working on. If you aren't using versioning
then be sure to make a backup copy of your project before going ahead with the
upgrade.
## Library updates
### Automatic update using the Yeoman Generator
If your application has few changes from the original app created by the
[Yeoman generator](https://github.com/Alfresco/generator-ng2-alfresco-app)
then you may be able to update your project with the following steps:
1. Update the Yeoman generator to the latest version (3.8.0). Note that
you might need to run these commands with `sudo` on Linux or MacOS:
```sh
npm uninstall -g generator-alfresco-adf-app
npm install -g generator-alfresco-adf-app
```
2. Run the new yeoman app generator:
```sh
yo alfresco-adf-app
```
3. Clean your old distribution and dependencies by deleting the `node_modules` folder
and the `package-lock.json` file.
4. Install the dependencies:
```sh
npm install
```
At this point, the generator might have overwritten some of your code where it differs from
the original generated app. Be sure to check for any differences from your project code
(using a versioning system might make this easier) and if there are any differences,
retrofit your changes. When you have done this, you should be able to start the application
as usual:
```sh
npm run start
```
After starting the app, if everything is working fine, that's all and you don't need to do anything else. However, if things don't work as they should then recover the original version of the project and try the manual approach.
### Manual update
1. Update the `package.json` file with the latest library versions:
```json
"dependencies": {
...
"@alfresco/adf-core": "3.8.0",
"@alfresco/adf-content-services": "3.8.0",
"@alfresco/adf-process-services-cloud": "3.8.0",
"@alfresco/adf-insights": "3.8.0",
"@alfresco/js-api": "3.8.0",
...
```
2. Clean your old distribution and dependencies by deleting `node_modules` and `package-lock.json`.
3. Reinstall your dependencies
```sh
npm install
```
+1 -1
View File
@@ -11,7 +11,7 @@ To enable Kerberos SSO and bypass the normal login, set the `withCredentials` pr
```json
{
"auth": {
"withCredentials": "true"
"withCredentials": true
}
}
```
+2 -1
View File
@@ -35,7 +35,7 @@ backend services have been tested with each released version of ADF.
<!--v370 start-->
No new components has been added in this release
- [Cancel process directive](process-services-cloud/directives/cancel-process.directive.md)
<!--v370 end-->
@@ -436,6 +436,7 @@ No new components has been added in this release
- [Task details component](process-services/components/task-details.component.md)
- [Task filter service](process-services/services/task-filter.service.md)
- [Task filters component](process-services/components/task-filters.component.md)
- [Task form component](process-services/components/task-form.component.md)
- [Task header component](process-services/components/task-header.component.md)
- [Task list component](process-services/components/task-list.component.md)
- [Task standalone component](process-services/components/task-standalone.component.md)
+2
View File
@@ -7,6 +7,8 @@ Github only: true
The pages linked below contain the audit for all third party dependencies of ADF.
- [ADF v3.8.0](audit-info-3.8.0.md)
- [ADF v3.7.0](audit-info-3.7.0.md)
- [ADF v3.6.0](audit-info-3.6.0.md)
- [ADF v3.5.0](audit-info-3.5.0.md)
- [ADF v3.4.0](audit-info-3.4.0.md)
+30
View File
@@ -0,0 +1,30 @@
---
Title: Audit info, Alfresco Angular components 3.8.0
---
# Audit information for Alfresco Angular components 3.8.0
This page lists the npm audit of the project in the version 3.8.0
## Risks
- Critical risk dependencies 0
- High risk dependencies 3
- Moderate risk dependencies 3
- Low risk dependencies 2557
Dependencies analyzed 66009
## Libraries
| Severity | Vulnerable versions | Module |
| --- | --- | --- |
|low | &#34;&gt;=3.3.0 &lt;4.13.1&#34; | node-sass |
|low | &#34;&lt;4.0.0&#34; | mem |
|low | &#34;&lt;0.2.1 || &gt;=1.0.0 &lt;1.2.3&#34; | minimist |
|moderate | &#34;&lt;2.1.1&#34; | serialize-javascript |
|high | &#34;&lt;1.2.2&#34; | tree-kill |
|low | &#34;&gt;=6.0.0 &lt;6.0.3&#34; | kind-of |
|low | &#34;&lt;13.1.2 || &gt;=14.0.0 &lt;15.0.1 || &gt;=16.0.0 &lt;18.1.2&#34; | yargs-parser |
-47
View File
@@ -49,25 +49,6 @@ export class AppsActions {
return appDefinitionId;
}
async importPublishDeployApp(alfrescoJsApi, appFileLocation, option = {}) {
const appCreated = await this.importApp(alfrescoJsApi, appFileLocation, option);
const publishApp = await alfrescoJsApi.activiti.appsApi.publishAppDefinition(appCreated.id, new AppPublish());
await alfrescoJsApi.activiti.appsApi.deployAppDefinitions({ appDefinitions: [{ id: publishApp.appDefinition.id }] });
return appCreated;
}
async importApp(alfrescoJsApi, appFileLocation, options = {}) {
browser.setFileDetector(new remote.FileDetector());
const pathFile = path.join(browser.params.testConfig.main.rootPath + appFileLocation);
const file = fs.createReadStream(pathFile);
return alfrescoJsApi.activiti.appsDefinitionApi.importAppDefinition(file, options);
}
async publishDeployApp(alfrescoJsApi, appId) {
browser.setFileDetector(new remote.FileDetector());
@@ -92,32 +73,4 @@ export class AppsActions {
return appCreated;
}
async startProcess(alfrescoJsApi, app, processName?: string) {
browser.setFileDetector(new remote.FileDetector());
const appDefinitionsList = await alfrescoJsApi.activiti.appsApi.getAppDefinitions();
const appDefinition = appDefinitionsList.data.filter((currentApp) => {
return currentApp.name === app.name;
});
const processDefinitionList = await alfrescoJsApi.activiti.processApi.getProcessDefinitions({ deploymentId: appDefinition.deploymentId });
const chosenProcess = processDefinitionList.data.find( (processDefinition) => {
return processDefinition.name === processName;
});
const processDefinitionIdToStart = chosenProcess ? chosenProcess.id : processDefinitionList.data[0].id;
const startProcessOptions: any = { processDefinitionId: processDefinitionIdToStart };
if (typeof processName !== 'undefined') {
startProcessOptions.name = processName;
}
return alfrescoJsApi.activiti.processApi.startNewProcessInstance(startProcessOptions);
}
}
+2 -2
View File
@@ -56,9 +56,9 @@ export class UsersActions {
async createApsUserWithName(alfrescoJsApi, tenantId, email, firstName, lastName) {
const user = new User({ tenantId , email, firstName, lastName});
await alfrescoJsApi.activiti.adminUsersApi.createNewUser(user);
const { id } = await alfrescoJsApi.activiti.adminUsersApi.createNewUser(user);
return user;
return { ...user, id };
}
async cleanupTenant(alfrescoJsApi, tenantId) {
@@ -38,7 +38,7 @@ describe('Comment Component', () => {
const pngFileModel = new FileModel({
name: browser.params.resources.Files.ADF_DOCUMENTS.PNG.file_name,
location: browser.params.resources.Files.ADF_DOCUMENTS.PNG.file_location
location: browser.params.resources.Files.ADF_DOCUMENTS.PNG.file_path
});
this.alfrescoJsApi = new AlfrescoApi({
provider: 'ECM',
@@ -15,7 +15,7 @@
* limitations under the License.
*/
import { LoginPage, NotificationHistoryPage } from '@alfresco/adf-testing';
import { LoginPage, NotificationHistoryPage, StringUtil } from '@alfresco/adf-testing';
import { ContentServicesPage } from '../../pages/adf/content-services.page';
import { FolderDialogPage } from '../../pages/adf/dialog/folder-dialog.page';
import { MetadataViewPage } from '../../pages/adf/metadata-view.page';
@@ -47,7 +47,7 @@ describe('Create folder directive', () => {
await loginPage.loginToContentServicesUsingUserModel(acsUser);
await contentServicesPage.goToDocumentList();
});
});
afterAll(async () => {
await navigationBarPage.clickLogoutButton();
@@ -55,11 +55,11 @@ describe('Create folder directive', () => {
beforeEach(async () => {
await browser.actions().sendKeys(Key.ESCAPE).perform();
});
});
afterEach(async () => {
await browser.actions().sendKeys(Key.ESCAPE).perform();
});
});
it('[C260154] Should not create the folder if cancel button is clicked', async () => {
const folderName = 'cancelFolder';
@@ -106,7 +106,7 @@ describe('Create folder directive', () => {
});
it('[C260158] Should be possible add a folder description when create a new folder', async () => {
const folderName = 'folderDescription';
const folderName = StringUtil.generateRandomString();
const description = 'this is the description';
await contentServicesPage.clickOnCreateNewFolder();
@@ -0,0 +1,270 @@
/*!
* @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.
*/
import { ContentServicesPage } from '../../pages/adf/content-services.page';
import { AcsUserModel } from '../../models/ACS/acs-user.model';
import { FileModel } from '../../models/ACS/file.model';
import { LoginPage, UploadActions, PaginationPage, StringUtil, PermissionActions } from '@alfresco/adf-testing';
import { browser } from 'protractor';
import { AlfrescoApiCompatibility as AlfrescoApi } from '@alfresco/js-api';
import { FolderModel } from '../../models/ACS/folder.model';
describe('Delete Directive', () => {
this.alfrescoJsApi = new AlfrescoApi({
provider: 'ECM',
hostEcm: browser.params.testConfig.adf_acs.host
});
const loginPage = new LoginPage();
const contentServicesPage = new ContentServicesPage();
const paginationPage = new PaginationPage();
const contentListPage = contentServicesPage.getDocumentList();
const acsUser = new AcsUserModel();
const secondAcsUser = new AcsUserModel();
const uploadActions = new UploadActions(this.alfrescoJsApi);
const permissionActions = new PermissionActions(this.alfrescoJsApi);
let baseFolderUploaded;
const txtFileModel = new FileModel({
name: browser.params.resources.Files.ADF_DOCUMENTS.TXT.file_name,
location: browser.params.resources.Files.ADF_DOCUMENTS.TXT.file_path
});
const file0BytesModel = new FileModel({
name: browser.params.resources.Files.ADF_DOCUMENTS.TXT_0B.file_name,
location: browser.params.resources.Files.ADF_DOCUMENTS.TXT_0B.file_path
});
const pdfFileModel = new FileModel({
name: browser.params.resources.Files.ADF_DOCUMENTS.PDF.file_name,
location: browser.params.resources.Files.ADF_DOCUMENTS.PDF.file_path
});
const secondPdfFileModel = new FileModel({
name: browser.params.resources.Files.ADF_DOCUMENTS.PDF_B.file_name,
location: browser.params.resources.Files.ADF_DOCUMENTS.PDF_B.file_path
});
const pngFileModel = new FileModel({
name: browser.params.resources.Files.ADF_DOCUMENTS.PNG.file_name,
location: browser.params.resources.Files.ADF_DOCUMENTS.PNG.file_path
});
const secondPngFileModel = new FileModel({
name: browser.params.resources.Files.ADF_DOCUMENTS.PNG_B.file_name,
location: browser.params.resources.Files.ADF_DOCUMENTS.PNG_B.file_path
});
const folderInfo = new FolderModel({
name: 'myFolder',
location: browser.params.resources.Files.ADF_DOCUMENTS.TEXT_FOLDER.folder_path
});
const folderSecond = new FolderModel({
name: 'myrSecondFolder',
location: browser.params.resources.Files.ADF_DOCUMENTS.TEXT_FOLDER.folder_location
});
const baseFolder = new FolderModel({
name: 'BASE_FOLDER',
location: browser.params.resources.Files.ADF_DOCUMENTS.TEXT_FOLDER.folder_location
});
beforeAll(async () => {
await this.alfrescoJsApi.login(browser.params.testConfig.adf.adminEmail, browser.params.testConfig.adf.adminPassword);
await this.alfrescoJsApi.core.peopleApi.addPerson(acsUser);
await this.alfrescoJsApi.core.peopleApi.addPerson(secondAcsUser);
await this.alfrescoJsApi.login(acsUser.id, acsUser.password);
});
beforeEach(async () => {
baseFolderUploaded = await uploadActions.createFolder(
baseFolder.name,
'-my-'
);
});
afterEach(async () => {
await uploadActions.deleteFileOrFolder(baseFolderUploaded.entry.id);
});
describe('Handling multiselection', () => {
beforeEach(async () => {
await uploadActions.uploadFile(txtFileModel.location, txtFileModel.name, baseFolderUploaded.entry.id);
await uploadActions.uploadFile(file0BytesModel.location, file0BytesModel.name, baseFolderUploaded.entry.id);
const textFolderUploaded = await uploadActions.createFolder(folderInfo.name, baseFolderUploaded.entry.id);
await uploadActions.uploadFolder(folderInfo.location, textFolderUploaded.entry.id);
await uploadActions.uploadFile(pdfFileModel.location, pdfFileModel.name, textFolderUploaded.entry.id);
await uploadActions.createFolder(folderSecond.name, baseFolderUploaded.entry.id);
await loginPage.loginToContentServicesUsingUserModel(acsUser);
await browser.get(`${browser.baseUrl}/files/${baseFolderUploaded.entry.id}`);
await contentServicesPage.waitForTableBody();
});
it('[C260188] Delete multiple content', async () => {
await contentListPage.selectRowWithKeyboard(txtFileModel.name);
await contentListPage.dataTable.checkRowIsSelected('Display name', txtFileModel.name);
await contentListPage.selectRowWithKeyboard(file0BytesModel.name);
await contentListPage.dataTable.checkRowIsSelected('Display name', txtFileModel.name);
await contentListPage.dataTable.checkRowIsSelected('Display name', file0BytesModel.name);
await contentListPage.selectRowWithKeyboard(folderSecond.name);
await contentListPage.dataTable.checkRowIsSelected('Display name', txtFileModel.name);
await contentListPage.dataTable.checkRowIsSelected('Display name', file0BytesModel.name);
await contentListPage.dataTable.checkRowIsSelected('Display name', folderSecond.name);
await contentListPage.selectRowWithKeyboard(folderInfo.name);
await contentListPage.dataTable.checkRowIsSelected('Display name', folderInfo.name);
await contentListPage.dataTable.checkRowIsSelected('Display name', txtFileModel.name);
await contentListPage.dataTable.checkRowIsSelected('Display name', file0BytesModel.name);
await contentListPage.dataTable.checkRowIsSelected('Display name', folderSecond.name);
await contentServicesPage.clickDeleteOnToolbar();
await contentListPage.dataTable.checkContentIsNotDisplayed('Display name', folderInfo.name);
await contentListPage.dataTable.checkContentIsNotDisplayed('Display name', txtFileModel.name);
await contentListPage.dataTable.checkContentIsNotDisplayed('Display name', file0BytesModel.name);
await contentListPage.dataTable.checkContentIsNotDisplayed('Display name', folderSecond.name);
});
it('[C260192] Delete file and folder with hierarchy', async () => {
await contentListPage.selectRowWithKeyboard(txtFileModel.name);
await contentListPage.dataTable.checkRowIsSelected('Display name', txtFileModel.name);
await contentListPage.selectRowWithKeyboard(folderInfo.name);
await contentListPage.dataTable.checkRowIsSelected('Display name', folderInfo.name);
await contentServicesPage.clickDeleteOnToolbar();
await contentListPage.dataTable.checkContentIsNotDisplayed('Display name', txtFileModel.name);
await contentListPage.dataTable.checkContentIsNotDisplayed('Display name', folderInfo.name);
});
it('[C260193] Delete file when different selections are set', async () => {
await contentServicesPage.chooseSelectionMode('None');
await contentListPage.selectRow(txtFileModel.name);
await contentListPage.dataTable.checkRowIsNotSelected('Display name', txtFileModel.name);
await contentServicesPage.checkToolbarDeleteIsDisabled();
await contentServicesPage.chooseSelectionMode('Single');
await contentListPage.selectRow(txtFileModel.name);
await contentListPage.dataTable.checkRowIsSelected('Display name', txtFileModel.name);
await contentListPage.selectRowWithKeyboard(folderInfo.name);
await contentListPage.dataTable.checkRowIsSelected('Display name', folderInfo.name);
await contentListPage.dataTable.checkRowIsNotSelected('Display name', txtFileModel.name);
await contentServicesPage.clickDeleteOnToolbar();
await contentListPage.dataTable.checkContentIsNotDisplayed('Display name', folderInfo.name);
await contentListPage.dataTable.checkContentIsDisplayed('Display name', txtFileModel.name);
await contentServicesPage.chooseSelectionMode('Multiple');
await contentListPage.selectRow(txtFileModel.name);
await contentListPage.dataTable.checkRowIsSelected('Display name', txtFileModel.name);
await contentListPage.selectRowWithKeyboard(file0BytesModel.name);
await contentListPage.dataTable.checkRowIsSelected('Display name', file0BytesModel.name);
await contentServicesPage.clickDeleteOnToolbar();
await contentListPage.dataTable.checkContentIsNotDisplayed('Display name', txtFileModel.name);
await contentListPage.dataTable.checkContentIsNotDisplayed('Display name', file0BytesModel.name);
});
});
describe('When selection on multiple pages', () => {
beforeEach(async () => {
await uploadActions.uploadFile( txtFileModel.location, txtFileModel.name, baseFolderUploaded.entry.id);
await uploadActions.uploadFile(file0BytesModel.location, file0BytesModel.name, baseFolderUploaded.entry.id);
await uploadActions.uploadFile(pdfFileModel.location, pdfFileModel.name, baseFolderUploaded.entry.id);
await uploadActions.uploadFile(secondPdfFileModel.location, secondPdfFileModel.name, baseFolderUploaded.entry.id);
await uploadActions.uploadFile(pngFileModel.location, pngFileModel.name, baseFolderUploaded.entry.id);
await uploadActions.uploadFile(secondPngFileModel.location, secondPngFileModel.name, baseFolderUploaded.entry.id);
await loginPage.loginToContentServicesUsingUserModel(acsUser);
await browser.get(`${browser.baseUrl}/files/${baseFolderUploaded.entry.id}`);
await contentServicesPage.waitForTableBody();
});
it('[C260191] Delete content selected from different pages', async () => {
await contentServicesPage.sortByName('ASC');
await paginationPage.selectItemsPerPage('5');
await contentListPage.selectRowWithKeyboard(txtFileModel.name);
await contentListPage.dataTable.checkRowIsSelected('Display name', txtFileModel.name);
await paginationPage.clickOnNextPage();
await contentListPage.selectRowWithKeyboard(file0BytesModel.name);
await contentListPage.dataTable.checkRowIsSelected('Display name', file0BytesModel.name);
await contentServicesPage.clickDeleteOnToolbar();
await contentListPage.dataTable.checkContentIsNotDisplayed('Display name', file0BytesModel.name);
await contentListPage.dataTable.checkContentIsDisplayed('Display name', txtFileModel.name);
});
});
describe('when user does not have `delete` permission', () => {
let createdSite = null;
let fileTxt, filePdf, folderA, folderB;
beforeAll(async () => {
createdSite = await this.alfrescoJsApi.core.sitesApi.createSite({
title: StringUtil.generateRandomString(20).toLowerCase(),
visibility: 'PRIVATE'
});
await this.alfrescoJsApi.core.sitesApi.addSiteMember(createdSite.entry.id, {
id: secondAcsUser.id,
role: 'SiteCollaborator'
});
fileTxt = await uploadActions.uploadFile(txtFileModel.location, txtFileModel.name, createdSite.entry.guid);
filePdf = await uploadActions.uploadFile(pdfFileModel.location, pdfFileModel.name, createdSite.entry.guid);
folderA = await uploadActions.createFolder(StringUtil.generateRandomString(5), createdSite.entry.guid);
folderB = await uploadActions.createFolder(StringUtil.generateRandomString(5), createdSite.entry.guid);
await permissionActions.addRoleForUser(secondAcsUser.getId(), 'SiteManager', folderA);
await permissionActions.addRoleForUser(secondAcsUser.getId(), 'SiteManager', fileTxt);
await permissionActions.addRoleForUser(secondAcsUser.getId(), 'SiteConsumer', folderB);
await permissionActions.addRoleForUser(secondAcsUser.getId(), 'SiteConsumer', filePdf);
await permissionActions.disableInheritedPermissionsForNode(folderA.entry.id);
await permissionActions.disableInheritedPermissionsForNode(folderB.entry.id);
await permissionActions.disableInheritedPermissionsForNode(fileTxt.entry.id);
await permissionActions.disableInheritedPermissionsForNode(filePdf.entry.id);
await loginPage.loginToContentServicesUsingUserModel(secondAcsUser);
await browser.get(`${browser.baseUrl}/files/${createdSite.entry.guid}`);
await contentServicesPage.waitForTableBody();
});
afterAll(async () => {
try {
await this.alfrescoJsApi.core.sitesApi.deleteSite(
createdSite.entry.id
);
} catch (error) {}
});
it('[C216426] Delete file without delete permissions', async () => {
await contentListPage.selectRowWithKeyboard(filePdf.entry.name);
await contentListPage.dataTable.checkRowIsSelected('Display name', filePdf.entry.name);
await contentServicesPage.checkToolbarDeleteIsDisabled();
await contentListPage.selectRowWithKeyboard(folderB.entry.name);
await contentListPage.dataTable.checkRowIsSelected('Display name', folderB.entry.name);
await contentServicesPage.checkToolbarDeleteIsDisabled();
await contentListPage.selectRowWithKeyboard(folderA.entry.name);
await contentListPage.dataTable.checkRowIsSelected('Display name', folderA.entry.name);
await contentServicesPage.checkToolbarDeleteIsDisabled();
await contentListPage.selectRowWithKeyboard(fileTxt.entry.name);
await contentListPage.dataTable.checkRowIsSelected('Display name', fileTxt.entry.name);
await contentServicesPage.checkToolbarDeleteIsDisabled();
});
});
});
@@ -35,22 +35,22 @@ describe('Version component actions', () => {
const txtFileComma = new FileModel({
name: 'comma,name',
location: browser.params.resources.Files.ADF_DOCUMENTS.TXT.file_location
location: browser.params.resources.Files.ADF_DOCUMENTS.TXT.file_path
});
const txtFileModel = new FileModel({
name: browser.params.resources.Files.ADF_DOCUMENTS.TXT.file_name,
location: browser.params.resources.Files.ADF_DOCUMENTS.TXT.file_location
location: browser.params.resources.Files.ADF_DOCUMENTS.TXT.file_path
});
const file0BytesModel = new FileModel({
name: browser.params.resources.Files.ADF_DOCUMENTS.TXT_0B.file_name,
location: browser.params.resources.Files.ADF_DOCUMENTS.TXT_0B.file_location
location: browser.params.resources.Files.ADF_DOCUMENTS.TXT_0B.file_path
});
const folderInfo = new FolderModel({
name: 'myFolder',
location: browser.params.resources.Files.ADF_DOCUMENTS.TEXT_FOLDER.folder_location
location: browser.params.resources.Files.ADF_DOCUMENTS.TEXT_FOLDER.folder_path
});
const folderSecond = new FolderModel({
@@ -41,7 +41,7 @@ describe('Edit folder directive', () => {
const pdfFile = new FileModel({
name: browser.params.resources.Files.ADF_DOCUMENTS.PDF.file_name,
location: browser.params.resources.Files.ADF_DOCUMENTS.PDF.file_location
location: browser.params.resources.Files.ADF_DOCUMENTS.PDF.file_path
});
const uploadActions = new UploadActions(this.alfrescoJsApi);
@@ -43,7 +43,7 @@ describe('Favorite directive', () => {
});
const pdfFile = new FileModel({
name: browser.params.resources.Files.ADF_DOCUMENTS.PDF.file_name,
location: browser.params.resources.Files.ADF_DOCUMENTS.PDF.file_location
location: browser.params.resources.Files.ADF_DOCUMENTS.PDF.file_path
});
const uploadActions = new UploadActions(this.alfrescoJsApi);
@@ -44,17 +44,17 @@ describe('Restore content directive', () => {
const pdfFileModel = new FileModel({
name: browser.params.resources.Files.ADF_DOCUMENTS.PDF.file_name,
location: browser.params.resources.Files.ADF_DOCUMENTS.PDF.file_location
location: browser.params.resources.Files.ADF_DOCUMENTS.PDF.file_path
});
const testFileModel = new FileModel({
name: browser.params.resources.Files.ADF_DOCUMENTS.TEST.file_name,
location: browser.params.resources.Files.ADF_DOCUMENTS.TEST.file_location
location: browser.params.resources.Files.ADF_DOCUMENTS.TEST.file_path
});
const pngFileModel = new FileModel({
name: browser.params.resources.Files.ADF_DOCUMENTS.PNG.file_name,
location: browser.params.resources.Files.ADF_DOCUMENTS.PNG.file_location
location: browser.params.resources.Files.ADF_DOCUMENTS.PNG.file_path
});
const folderName = StringUtil.generateRandomString(5);
@@ -21,7 +21,7 @@ import {
PaginationPage,
UploadActions,
StringUtil,
ContentNodeSelectorDialogPage
ContentNodeSelectorDialogPage, ViewerPage
} from '@alfresco/adf-testing';
import { ContentServicesPage } from '../../pages/adf/content-services.page';
import { NavigationBarPage } from '../../pages/adf/navigation-bar.page';
@@ -44,6 +44,7 @@ describe('Document List Component - Actions', () => {
const paginationPage = new PaginationPage();
const breadCrumbDropdownPage = new BreadCrumbDropdownPage();
const breadCrumbPage = new BreadCrumbPage();
const viewerPage = new ViewerPage();
this.alfrescoJsApi = new AlfrescoApi({
provider: 'ECM',
hostEcm: browser.params.testConfig.adf_acs.host
@@ -62,11 +63,11 @@ describe('Document List Component - Actions', () => {
const pdfFileModel = new FileModel({
name: browser.params.resources.Files.ADF_DOCUMENTS.PDF.file_name,
location: browser.params.resources.Files.ADF_DOCUMENTS.PDF.file_location
location: browser.params.resources.Files.ADF_DOCUMENTS.PDF.file_path
});
const testFileModel = new FileModel({
name: browser.params.resources.Files.ADF_DOCUMENTS.TEST.file_name,
location: browser.params.resources.Files.ADF_DOCUMENTS.TEST.file_location
location: browser.params.resources.Files.ADF_DOCUMENTS.TEST.file_path
});
const files = {
@@ -91,7 +92,6 @@ describe('Document List Component - Actions', () => {
await loginPage.loginToContentServicesUsingUserModel(acsUser);
await browser.sleep(10000);
});
afterAll(async () => {
@@ -203,6 +203,12 @@ describe('Document List Component - Actions', () => {
await contentServicesPage.closeActionContext();
});
it('[C260060] Should be able to open a file/folder through double click action - file', async () => {
await contentServicesPage.doubleClickRow(pdfFileModel.name);
await expect(await viewerPage.getDisplayedFileName()).toEqual(pdfFileModel.name);
await viewerPage.checkPreviewFileDefaultOptionsAreDisplayed();
await viewerPage.clickCloseButton();
});
});
describe('Folder Actions', () => {
@@ -218,6 +224,16 @@ describe('Document List Component - Actions', () => {
await contentServicesPage.checkContentIsDisplayed(folderName);
});
it('[C260060] Should be able to open a file/folder through double click action - folder', async () => {
const folderTwoModel = new FolderModel({ name: 'folderTwo' });
const numberOfSubFolders = 3;
await contentServicesPage.createAndOpenNewFolder(folderTwoModel.name);
for (let i = 0; i < numberOfSubFolders; i++) {
await contentServicesPage.createNewFolder('subFolder' + (i + 1));
}
await contentServicesPage.checkContentsAreDisplayed(numberOfSubFolders);
});
it('[C260123] Should be able to delete a folder using context menu', async () => {
await contentServicesPage.deleteContent(folderName);
await contentServicesPage.checkContentIsNotDisplayed(folderName);
@@ -253,7 +269,6 @@ describe('Document List Component - Actions', () => {
const contentServicesUser = new AcsUserModel();
beforeAll(async () => {
await this.alfrescoJsApi.login(browser.params.testConfig.adf.adminEmail, browser.params.testConfig.adf.adminPassword);
await this.alfrescoJsApi.core.peopleApi.addPerson(contentServicesUser);
await this.alfrescoJsApi.login(contentServicesUser.id, contentServicesUser.password);
@@ -283,7 +298,6 @@ describe('Document List Component - Actions', () => {
});
it('[C260132] Move action on folder with - Load more', async () => {
await expect(await paginationPage.getCurrentItemsPerPage()).toEqual('5');
await expect(await paginationPage.getPaginationRange()).toEqual('Showing 1-' + 5 + ' of ' + 6);
@@ -339,7 +353,6 @@ describe('Document List Component - Actions', () => {
});
it('[C305051] Copy action on folder with - Load more', async () => {
await expect(await paginationPage.getCurrentItemsPerPage()).toEqual('5');
await expect(await paginationPage.getPaginationRange()).toEqual('Showing 1-' + 5 + ' of ' + 6);
await contentServicesPage.getDocumentList().rightClickOnRow('A' + folderModel1.name);
@@ -62,19 +62,19 @@ describe('Document List Component', () => {
let folderName;
const pdfFileModel = new FileModel({
name: browser.params.resources.Files.ADF_DOCUMENTS.PDF.file_name,
location: browser.params.resources.Files.ADF_DOCUMENTS.PDF.file_location
location: browser.params.resources.Files.ADF_DOCUMENTS.PDF.file_path
});
const docxFileModel = new FileModel({
name: browser.params.resources.Files.ADF_DOCUMENTS.DOCX.file_name,
location: browser.params.resources.Files.ADF_DOCUMENTS.DOCX.file_location
location: browser.params.resources.Files.ADF_DOCUMENTS.DOCX.file_path
});
const timeAgoFileModel = new FileModel({
name: browser.params.resources.Files.ADF_DOCUMENTS.TEST.file_name,
location: browser.params.resources.Files.ADF_DOCUMENTS.TEST.file_location
location: browser.params.resources.Files.ADF_DOCUMENTS.TEST.file_path
});
const mediumFileModel = new FileModel({
name: browser.params.resources.Files.ADF_DOCUMENTS.PDF_B.file_name,
location: browser.params.resources.Files.ADF_DOCUMENTS.PDF_B.file_location
location: browser.params.resources.Files.ADF_DOCUMENTS.PDF_B.file_path
});
let pdfUploadedNode, docxUploadedNode, timeAgoUploadedNode, mediumDateUploadedNode;
@@ -161,17 +161,17 @@ describe('Document List Component', () => {
const fakeFileA = new FileModel({
name: 'A',
location: browser.params.resources.Files.ADF_DOCUMENTS.TEST.file_location
location: browser.params.resources.Files.ADF_DOCUMENTS.TEST.file_path
});
const fakeFileB = new FileModel({
name: 'B',
location: browser.params.resources.Files.ADF_DOCUMENTS.TEST.file_location
location: browser.params.resources.Files.ADF_DOCUMENTS.TEST.file_path
});
const fakeFileC = new FileModel({
name: 'C',
location: browser.params.resources.Files.ADF_DOCUMENTS.TEST.file_location
location: browser.params.resources.Files.ADF_DOCUMENTS.TEST.file_path
});
let fileANode, fileBNode, fileCNode;
@@ -245,7 +245,7 @@ describe('Document List Component', () => {
await contentServicesPage.doubleClickRow(folderName);
await contentServicesPage.checkEmptyFolderTextToBe('This folder is empty');
await contentServicesPage.checkEmptyFolderImageUrlToContain('/assets/images/empty_doc_lib.svg');
});
});
it('[C272775] Should be able to upload a file in new folder', async () => {
const testFile = new FileModel({
@@ -265,7 +265,7 @@ describe('Document List Component', () => {
await contentServicesPage.doubleClickRow(uploadedFolder.entry.name);
await contentServicesPage.uploadFile(testFile.location);
await contentServicesPage.checkContentIsDisplayed(testFile.name);
});
});
it('[C261997] Should be able to clean Recent Files history', async () => {
acsUser = new AcsUserModel();
@@ -279,7 +279,7 @@ describe('Document List Component', () => {
await contentServicesPage.expandRecentFiles();
await contentServicesPage.checkEmptyRecentFileIsDisplayed();
await contentServicesPage.closeRecentFiles();
});
});
it('[C279970] Should display Islocked field for folders', async () => {
acsUser = new AcsUserModel();
@@ -296,16 +296,16 @@ describe('Document List Component', () => {
await contentServicesPage.checkContentIsDisplayed(folderNameB);
await contentServicesPage.checkLockIsDisplayedForElement(folderNameA);
await contentServicesPage.checkLockIsDisplayedForElement(folderNameB);
});
});
it('[C269086] Should display Islocked field for files', async () => {
const testFileA = new FileModel({
name: browser.params.resources.Files.ADF_DOCUMENTS.TEST.file_name,
location: browser.params.resources.Files.ADF_DOCUMENTS.TEST.file_location
location: browser.params.resources.Files.ADF_DOCUMENTS.TEST.file_path
});
const testFileB = new FileModel({
name: browser.params.resources.Files.ADF_DOCUMENTS.PDF_B.file_name,
location: browser.params.resources.Files.ADF_DOCUMENTS.PDF_B.file_location
location: browser.params.resources.Files.ADF_DOCUMENTS.PDF_B.file_path
});
acsUser = new AcsUserModel();
await this.alfrescoJsApi.login(browser.params.testConfig.adf.adminEmail, browser.params.testConfig.adf.adminPassword);
@@ -319,7 +319,7 @@ describe('Document List Component', () => {
await contentServicesPage.checkContentIsDisplayed(testFileB.name);
await contentServicesPage.checkLockIsDisplayedForElement(testFileA.name);
await contentServicesPage.checkLockIsDisplayedForElement(testFileB.name);
});
});
describe('Once uploaded 20 folders', () => {
@@ -333,6 +333,7 @@ describe('Document List Component', () => {
await this.alfrescoJsApi.login(acsUser.id, acsUser.password);
let folderName = '';
let folder = null;
for (let i = 0; i < 20; i++) {
folderName = `MEESEEKS_000${i}`;
folder = await uploadActions.createFolder(folderName, '-my-');
@@ -341,7 +342,7 @@ describe('Document List Component', () => {
});
afterAll(async () => {
for (let i = 0; i <= folderCreated.length; i++) {
for (let i = 0; i < folderCreated.length; i++) {
await uploadActions.deleteFileOrFolder(folderCreated[i].entry.id);
}
});
@@ -352,13 +353,13 @@ describe('Document List Component', () => {
await contentServicesPage.checkListIsSortedByNameColumn('asc');
});
});
});
describe('Column Template', () => {
const file0BytesModel = new FileModel({
name: browser.params.resources.Files.ADF_DOCUMENTS.TXT_0B.file_name,
location: browser.params.resources.Files.ADF_DOCUMENTS.TXT_0B.file_location
location: browser.params.resources.Files.ADF_DOCUMENTS.TXT_0B.file_path
});
let file;
@@ -51,12 +51,12 @@ describe('Document List Component', () => {
const pdfFileModel = new FileModel({
name: browser.params.resources.Files.ADF_DOCUMENTS.PDF.file_name,
location: browser.params.resources.Files.ADF_DOCUMENTS.PDF.file_location
location: browser.params.resources.Files.ADF_DOCUMENTS.PDF.file_path
});
const testFileModel = new FileModel({
name: browser.params.resources.Files.ADF_DOCUMENTS.TEST.file_name,
location: browser.params.resources.Files.ADF_DOCUMENTS.TEST.file_location
location: browser.params.resources.Files.ADF_DOCUMENTS.TEST.file_path
});
beforeAll(async () => {
@@ -49,17 +49,17 @@ describe('Document List Component', () => {
const pdfFile = new FileModel({
name: browser.params.resources.Files.ADF_DOCUMENTS.PDF.file_name,
location: browser.params.resources.Files.ADF_DOCUMENTS.PDF.file_location
location: browser.params.resources.Files.ADF_DOCUMENTS.PDF.file_path
});
const testFile = new FileModel({
name: browser.params.resources.Files.ADF_DOCUMENTS.TEST.file_name,
location: browser.params.resources.Files.ADF_DOCUMENTS.TEST.file_location
location: browser.params.resources.Files.ADF_DOCUMENTS.TEST.file_path
});
const docxFile = new FileModel({
name: browser.params.resources.Files.ADF_DOCUMENTS.DOCX.file_name,
location: browser.params.resources.Files.ADF_DOCUMENTS.DOCX.file_location
location: browser.params.resources.Files.ADF_DOCUMENTS.DOCX.file_path
});
const folderName = `MEESEEKS_${StringUtil.generateRandomString(5)}_LOOK_AT_ME`;
let filePdfNode, fileTestNode, fileDocxNode, folderNode, filePDFSubNode;
@@ -105,7 +105,7 @@ describe('Document List - Pagination', () => {
it('[C260062] Should use default pagination settings', async () => {
await contentServicesPage.openFolder(newFolderModel.name);
await expect(await paginationPage.getCurrentItemsPerPage()).toEqual(itemsPerPage.twenty);
await expect(await paginationPage.getPaginationRange()).toEqual('Showing 1-' + nrOfFiles + ' of ' + nrOfFiles);
await expect(await paginationPage.getPaginationRange()).toEqual( `Showing 1-${nrOfFiles} of ${nrOfFiles}`);
await expect(await contentServicesPage.numberOfResultsDisplayed()).toBe(nrOfFiles);
const list = await contentServicesPage.getAllRowsNameColumn();
await expect(Util.arrayContainsArray(list, fileNames)).toEqual(true);
@@ -119,7 +119,7 @@ describe('Document List - Pagination', () => {
await contentServicesPage.checkDocumentListElementsAreDisplayed();
await expect(await paginationPage.getCurrentItemsPerPage()).toEqual(itemsPerPage.twenty);
await expect(await paginationPage.getPaginationRange()).toEqual('Showing 1-' + nrOfFiles + ' of ' + nrOfFiles);
await expect(await paginationPage.getPaginationRange()).toEqual( `Showing 1-${nrOfFiles} of ${nrOfFiles}`);
await expect(await contentServicesPage.numberOfResultsDisplayed()).toBe(nrOfFiles);
const list = await contentServicesPage.getAllRowsNameColumn();
await expect(Util.arrayContainsArray(list, fileNames)).toEqual(true);
@@ -141,7 +141,7 @@ describe('Document List - Pagination', () => {
await contentServicesPage.checkDocumentListElementsAreDisplayed();
await expect(await paginationPage.getCurrentItemsPerPage()).toEqual(itemsPerPage.five);
await expect(await paginationPage.getPaginationRange()).toEqual('Showing 1-' + itemsPerPage.fiveValue * currentPage + ' of ' + nrOfFiles);
await expect(await paginationPage.getPaginationRange()).toEqual(`Showing 1-${itemsPerPage.fiveValue * currentPage} of ${nrOfFiles}`);
await expect(await contentServicesPage.numberOfResultsDisplayed()).toBe(itemsPerPage.fiveValue);
let list = await contentServicesPage.getAllRowsNameColumn();
await expect(Util.arrayContainsArray(list, fileNames.slice(0, 5))).toEqual(true);
@@ -149,7 +149,7 @@ describe('Document List - Pagination', () => {
currentPage++;
await contentServicesPage.checkDocumentListElementsAreDisplayed();
await expect(await paginationPage.getCurrentItemsPerPage()).toEqual(itemsPerPage.five);
await expect(await paginationPage.getPaginationRange()).toEqual('Showing 6-' + itemsPerPage.fiveValue * currentPage + ' of ' + nrOfFiles);
await expect(await paginationPage.getPaginationRange()).toEqual( `Showing 6-${itemsPerPage.fiveValue * currentPage} of ${nrOfFiles}`);
await expect(await contentServicesPage.numberOfResultsDisplayed()).toBe(itemsPerPage.fiveValue);
list = await contentServicesPage.getAllRowsNameColumn();
await expect(Util.arrayContainsArray(list, fileNames.slice(5, 10))).toEqual(true);
@@ -157,7 +157,7 @@ describe('Document List - Pagination', () => {
currentPage++;
await contentServicesPage.checkDocumentListElementsAreDisplayed();
await expect(await paginationPage.getCurrentItemsPerPage()).toEqual(itemsPerPage.five);
await expect(await paginationPage.getPaginationRange()).toEqual('Showing 11-' + itemsPerPage.fiveValue * currentPage + ' of ' + nrOfFiles);
await expect(await paginationPage.getPaginationRange()).toEqual(`Showing 11-${itemsPerPage.fiveValue * currentPage} of ${nrOfFiles}`);
await expect(await contentServicesPage.numberOfResultsDisplayed()).toBe(itemsPerPage.fiveValue);
list = await contentServicesPage.getAllRowsNameColumn();
await expect(Util.arrayContainsArray(list, fileNames.slice(10, 15))).toEqual(true);
@@ -165,7 +165,7 @@ describe('Document List - Pagination', () => {
currentPage++;
await contentServicesPage.checkDocumentListElementsAreDisplayed();
await expect(await paginationPage.getCurrentItemsPerPage()).toEqual(itemsPerPage.five);
await expect(await paginationPage.getPaginationRange()).toEqual('Showing 16-' + itemsPerPage.fiveValue * currentPage + ' of ' + nrOfFiles);
await expect(await paginationPage.getPaginationRange()).toEqual(`Showing 16-${itemsPerPage.fiveValue * currentPage} of ${nrOfFiles}`);
await expect(await contentServicesPage.numberOfResultsDisplayed()).toBe(itemsPerPage.fiveValue);
list = await contentServicesPage.getAllRowsNameColumn();
await expect(Util.arrayContainsArray(list, fileNames.slice(15, 20))).toEqual(true);
@@ -184,7 +184,7 @@ describe('Document List - Pagination', () => {
await contentServicesPage.checkDocumentListElementsAreDisplayed();
await expect(await paginationPage.getCurrentItemsPerPage()).toEqual(itemsPerPage.ten);
await expect(await paginationPage.getPaginationRange()).toEqual('Showing 1-' + itemsPerPage.tenValue * currentPage + ' of ' + nrOfFiles);
await expect(await paginationPage.getPaginationRange()).toEqual(`Showing 1-${itemsPerPage.tenValue * currentPage} of ${nrOfFiles}`);
await expect(await contentServicesPage.numberOfResultsDisplayed()).toBe(itemsPerPage.tenValue);
let list = await contentServicesPage.getAllRowsNameColumn();
await expect(Util.arrayContainsArray(list, fileNames.slice(0, 10))).toEqual(true);
@@ -192,7 +192,7 @@ describe('Document List - Pagination', () => {
currentPage++;
await contentServicesPage.checkDocumentListElementsAreDisplayed();
await expect(await paginationPage.getCurrentItemsPerPage()).toEqual(itemsPerPage.ten);
await expect(await paginationPage.getPaginationRange()).toEqual('Showing 11-' + itemsPerPage.tenValue * currentPage + ' of ' + nrOfFiles);
await expect(await paginationPage.getPaginationRange()).toEqual(`Showing 11-${itemsPerPage.tenValue * currentPage} of ${nrOfFiles}`);
await expect(await contentServicesPage.numberOfResultsDisplayed()).toBe(itemsPerPage.tenValue);
list = await contentServicesPage.getAllRowsNameColumn();
await expect(Util.arrayContainsArray(list, fileNames.slice(10, 20))).toEqual(true);
@@ -213,7 +213,7 @@ describe('Document List - Pagination', () => {
await contentServicesPage.checkDocumentListElementsAreDisplayed();
await expect(await paginationPage.getCurrentItemsPerPage()).toEqual(itemsPerPage.fifteen);
await expect(await paginationPage.getPaginationRange()).toEqual('Showing 1-' + itemsPerPage.fifteenValue * currentPage + ' of ' + nrOfFiles);
await expect(await paginationPage.getPaginationRange()).toEqual(`Showing 1-${itemsPerPage.fifteenValue * currentPage} of ${nrOfFiles}`);
await expect(await contentServicesPage.numberOfResultsDisplayed()).toBe(itemsPerPage.fifteenValue);
let list = await contentServicesPage.getAllRowsNameColumn();
await expect(Util.arrayContainsArray(list, fileNames.slice(0, 15))).toEqual(true);
@@ -222,7 +222,7 @@ describe('Document List - Pagination', () => {
await contentServicesPage.checkDocumentListElementsAreDisplayed();
await expect(await paginationPage.getCurrentItemsPerPage()).toEqual(itemsPerPage.fifteen);
await expect(await paginationPage.getPaginationRange()).toEqual('Showing 16-' + nrOfFiles + ' of ' + nrOfFiles);
await expect(await paginationPage.getPaginationRange()).toEqual( `Showing 16-${nrOfFiles} of ${nrOfFiles}`);
await expect(await contentServicesPage.numberOfResultsDisplayed()).toBe(nrOfFiles - itemsPerPage.fifteenValue);
list = await contentServicesPage.getAllRowsNameColumn();
await expect(Util.arrayContainsArray(list, fileNames.slice(15, 20))).toEqual(true);
@@ -276,7 +276,7 @@ describe('Document List - Pagination', () => {
await contentServicesPage.checkDocumentListElementsAreDisplayed();
await expect(await paginationPage.getCurrentItemsPerPage()).toEqual(itemsPerPage.fifteen);
await expect(await paginationPage.getPaginationRange()).toEqual('Showing 1-' + itemsPerPage.fifteenValue * currentPage + ' of ' + secondSetNumber);
await expect(await paginationPage.getPaginationRange()).toEqual(`Showing 1-${itemsPerPage.fifteenValue * currentPage} of ${secondSetNumber}`);
await expect(await contentServicesPage.numberOfResultsDisplayed()).toBe(itemsPerPage.fifteenValue);
let list = await contentServicesPage.getAllRowsNameColumn();
await expect(Util.arrayContainsArray(list, secondSetOfFiles.slice(0, 15))).toEqual(true);
@@ -285,7 +285,7 @@ describe('Document List - Pagination', () => {
await paginationPage.clickOnNextPage();
await contentServicesPage.checkDocumentListElementsAreDisplayed();
await expect(await paginationPage.getCurrentItemsPerPage()).toEqual(itemsPerPage.fifteen);
await expect(await paginationPage.getPaginationRange()).toEqual('Showing 16-' + secondSetNumber + ' of ' + secondSetNumber);
await expect(await paginationPage.getPaginationRange()).toEqual(`Showing 16-${secondSetNumber} of ${secondSetNumber}`);
await expect(await contentServicesPage.numberOfResultsDisplayed()).toBe(secondSetNumber - itemsPerPage.fifteenValue);
list = await contentServicesPage.getAllRowsNameColumn();
await expect(Util.arrayContainsArray(list, secondSetOfFiles.slice(15, 25))).toEqual(true);
@@ -294,7 +294,7 @@ describe('Document List - Pagination', () => {
await paginationPage.selectItemsPerPage(itemsPerPage.twenty);
await contentServicesPage.checkDocumentListElementsAreDisplayed();
await expect(await paginationPage.getCurrentItemsPerPage()).toEqual(itemsPerPage.twenty);
await expect(await paginationPage.getPaginationRange()).toEqual('Showing 1-' + itemsPerPage.twentyValue * currentPage + ' of ' + secondSetNumber);
await expect(await paginationPage.getPaginationRange()).toEqual(`Showing 1-${itemsPerPage.twentyValue * currentPage} of ${secondSetNumber}`);
await expect(await contentServicesPage.numberOfResultsDisplayed()).toBe(itemsPerPage.twentyValue);
list = await contentServicesPage.getAllRowsNameColumn();
await expect(Util.arrayContainsArray(list, secondSetOfFiles.slice(0, 20))).toEqual(true);
@@ -303,7 +303,7 @@ describe('Document List - Pagination', () => {
await paginationPage.clickOnNextPage();
await contentServicesPage.checkDocumentListElementsAreDisplayed();
await expect(await paginationPage.getCurrentItemsPerPage()).toEqual(itemsPerPage.twenty);
await expect(await paginationPage.getPaginationRange()).toEqual('Showing 21-' + secondSetNumber + ' of ' + secondSetNumber);
await expect(await paginationPage.getPaginationRange()).toEqual( `Showing 21-${secondSetNumber} of ${secondSetNumber}`);
await expect(await contentServicesPage.numberOfResultsDisplayed()).toBe(secondSetNumber - itemsPerPage.twentyValue);
list = await contentServicesPage.getAllRowsNameColumn();
await expect(Util.arrayContainsArray(list, secondSetOfFiles.slice(20, 25))).toEqual(true);
@@ -329,7 +329,7 @@ describe('Document List - Pagination', () => {
await paginationPage.selectItemsPerPage(itemsPerPage.twentyOne);
await expect(await paginationPage.getCurrentItemsPerPage()).toEqual(itemsPerPage.twentyOne);
await browser.refresh();
await expect(await paginationPage.getPaginationRange()).toEqual('Showing 1-' + itemsPerPage.twentyOneValue + ' of ' + numberOfFilesAfterUpload);
await expect(await paginationPage.getPaginationRange()).toEqual( `Showing 1-${itemsPerPage.twentyOneValue} of ${numberOfFilesAfterUpload}`);
await expect(await contentServicesPage.numberOfResultsDisplayed()).toBe(itemsPerPage.twentyOneValue);
await LocalStorageUtil.setUserPreference('supportedPageSizes', JSON.stringify([5, 10, 15, 20]));
@@ -349,15 +349,15 @@ describe('Document List - Pagination', () => {
await contentServicesPage.createNewFolder('subfolder' + (i + 1));
}
await expect(await paginationPage.getPaginationRange()).toEqual('Showing 1-' + itemsPerPage.fiveValue + ' of ' + numberOfSubFolders);
await expect(await paginationPage.getPaginationRange()).toEqual(`Showing 1-${itemsPerPage.fiveValue} of ${numberOfSubFolders}`);
await paginationPage.clickOnNextPage();
await expect(await paginationPage.getPaginationRange()).toEqual('Showing 6-' + numberOfSubFolders + ' of ' + numberOfSubFolders);
await expect(await paginationPage.getPaginationRange()).toEqual(`Showing 6-${numberOfSubFolders} of ${numberOfSubFolders}`);
await contentServicesPage.openFolder('subfolder6');
for (let i = 0; i < numberOfSubFolders; i++) {
await contentServicesPage.createNewFolder('subfolder' + (i + 1));
}
await expect(await paginationPage.getPaginationRange()).toEqual('Showing 1-' + itemsPerPage.fiveValue + ' of ' + numberOfSubFolders);
await expect(await paginationPage.getPaginationRange()).toEqual(`Showing 1-${itemsPerPage.fiveValue} of ${numberOfSubFolders}`);
await expect(await paginationPage.getCurrentPage()).toEqual('Page 1');
await expect(await paginationPage.getTotalPages()).toEqual('of 2');
@@ -372,13 +372,13 @@ describe('Document List - Pagination', () => {
for (let i = 0; i < numberOfSubFolders; i++) {
await contentServicesPage.createNewFolder('subfolder' + (i + 1));
}
await expect(await paginationPage.getPaginationRange()).toEqual('Showing 1-' + itemsPerPage.fiveValue + ' of ' + numberOfSubFolders);
await expect(await paginationPage.getPaginationRange()).toEqual(`Showing 1-${itemsPerPage.fiveValue} of ${numberOfSubFolders}`);
await contentServicesPage.chooseSelectionMode('Single');
await contentServicesPage.selectFolder('subfolder1');
await paginationPage.clickOnNextPage();
await expect(await paginationPage.getPaginationRange()).toEqual('Showing 6-' + numberOfSubFolders + ' of ' + numberOfSubFolders);
await expect(await paginationPage.getPaginationRange()).toEqual(`Showing 6-${numberOfSubFolders} of ${numberOfSubFolders}`);
await contentServicesPage.selectFolderWithCommandKey('subfolder6');
await contentServicesPage.clickDownloadButton();
@@ -26,7 +26,6 @@ describe('Document List Component', () => {
const loginPage = new LoginPage();
const contentServicesPage = new ContentServicesPage();
const navBar = new NavigationBarPage();
const errorPage = new ErrorPage();
const navigationBarPage = new NavigationBarPage();
@@ -54,15 +53,11 @@ describe('Document List Component', () => {
privateSite = await this.alfrescoJsApi.core.sitesApi.createSite(privateSiteBody);
await loginPage.loginToContentServicesUsingUserModel(acsUser);
});
afterAll(async () => {
await navigationBarPage.clickLogoutButton();
await this.alfrescoJsApi.core.sitesApi.deleteSite(privateSite.entry.id);
await navBar.openLanguageMenu();
await navBar.chooseLanguage('English');
});
it('[C217334] Should display a message when accessing file without permissions', async () => {
@@ -77,13 +72,5 @@ describe('Document List Component', () => {
await BrowserActions.getUrl(browser.params.testConfig.adf.url + '/files/' + privateSite.entry.guid);
await expect(await errorPage.getErrorCode()).toBe('403');
});
it('[C279925] Should display translated message when accessing a file without permissions if language is changed', async () => {
await navBar.openLanguageMenu();
await navBar.chooseLanguage('Italiano');
await browser.sleep(2000);
await BrowserActions.getUrl(browser.params.testConfig.adf.url + '/files/' + privateSite.entry.guid);
await expect(await errorPage.getErrorDescription()).toBe('Accesso alla risorsa sul server non consentito.');
});
});
});
@@ -0,0 +1,137 @@
/*!
* @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.
*/
import { LoginPage, PaginationPage } from '@alfresco/adf-testing';
import { ContentServicesPage } from '../../pages/adf/content-services.page';
import { NavigationBarPage } from '../../pages/adf/navigation-bar.page';
import { AcsUserModel } from '../../models/ACS/acs-user.model';
import { FolderModel } from '../../models/ACS/folder.model';
import { browser } from 'protractor';
import { AlfrescoApiCompatibility as AlfrescoApi } from '@alfresco/js-api';
import { FileModel } from '../../models/ACS/file.model';
import { UploadDialogPage } from '../../pages/adf/dialog/upload-dialog.page';
describe('Document List - Selection', () => {
const loginPage = new LoginPage();
const contentServicesPage = new ContentServicesPage();
const navigationBarPage = new NavigationBarPage();
const uploadDialog = new UploadDialogPage();
const paginationPage = new PaginationPage();
const acsUser = new AcsUserModel();
const folderModel = new FolderModel({ name: 'folder' });
const docxFileModel = new FileModel({
'name': browser.params.resources.Files.ADF_DOCUMENTS.DOCX.file_name,
'location': browser.params.resources.Files.ADF_DOCUMENTS.DOCX.file_location
});
const displayColumnName = 'Display name';
this.alfrescoJsApi = new AlfrescoApi({
provider: 'ECM',
hostEcm: browser.params.testConfig.adf_acs.host
});
beforeAll(async () => {
try {
await this.alfrescoJsApi.login(browser.params.testConfig.adf.adminEmail, browser.params.testConfig.adf.adminPassword);
await this.alfrescoJsApi.core.peopleApi.addPerson(acsUser);
await this.alfrescoJsApi.login(acsUser.id, acsUser.password);
await loginPage.loginToContentServicesUsingUserModel(acsUser);
await contentServicesPage.goToDocumentList();
await contentServicesPage.checkDocumentListElementsAreDisplayed();
await contentServicesPage.createNewFolder(folderModel.name);
await contentServicesPage.uploadFile(docxFileModel.location);
await contentServicesPage.checkContentIsDisplayed(docxFileModel.name);
await uploadDialog.clickOnCloseButton();
await uploadDialog.dialogIsNotDisplayed();
} catch (error) {
throw new Error(`API call failed in beforeAll: ${error}`);
}
});
afterAll(async () => {
await navigationBarPage.clickLogoutButton();
});
it('[C274696] Should be able to select and unselect a file or folder', async () => {
await contentServicesPage.selectRow(docxFileModel.name);
await contentServicesPage.getDocumentList().dataTablePage().checkRowIsSelected(displayColumnName, docxFileModel.name);
await paginationPage.clickItemsPerPageDropdown();
await contentServicesPage.getDocumentList().dataTablePage().checkRowIsSelected(displayColumnName, docxFileModel.name);
await contentServicesPage.selectRow(docxFileModel.name);
await contentServicesPage.getDocumentList().dataTablePage().checkRowIsNotSelected(displayColumnName, docxFileModel.name);
await contentServicesPage.selectRow(folderModel.name);
await contentServicesPage.getDocumentList().dataTablePage().checkRowIsSelected(displayColumnName, folderModel.name);
await paginationPage.clickItemsPerPageDropdown();
await contentServicesPage.getDocumentList().dataTablePage().checkRowIsSelected(displayColumnName, folderModel.name);
await contentServicesPage.selectRow(folderModel.name);
await contentServicesPage.getDocumentList().dataTablePage().checkRowIsNotSelected(displayColumnName, folderModel.name);
});
it('[C260057] Should be able to choose between the Selection Mode options and select items accordingly', async () => {
await contentServicesPage.chooseSelectionMode('None');
await contentServicesPage.selectRow(docxFileModel.name);
await contentServicesPage.selectFolderWithCommandKey(folderModel.name);
await contentServicesPage.getDocumentList().dataTablePage().checkRowIsNotSelected(displayColumnName, docxFileModel.name);
await contentServicesPage.getDocumentList().dataTablePage().checkRowIsNotSelected(displayColumnName, folderModel.name);
await expect(JSON.stringify(await contentServicesPage.getItemSelected())).toEqual('[]');
await contentServicesPage.chooseSelectionMode('Single');
await contentServicesPage.selectRow(docxFileModel.name);
await contentServicesPage.selectFolderWithCommandKey(folderModel.name);
await contentServicesPage.getDocumentList().dataTablePage().checkRowIsSelected(displayColumnName, folderModel.name);
await contentServicesPage.getDocumentList().dataTablePage().checkRowIsNotSelected(displayColumnName, docxFileModel.name );
await expect(JSON.stringify(await contentServicesPage.getItemSelected())).toEqual('[\"' + folderModel.name + '\"]');
await contentServicesPage.chooseSelectionMode('Multiple');
await contentServicesPage.selectRow(docxFileModel.name);
await contentServicesPage.selectFolderWithCommandKey(folderModel.name);
await contentServicesPage.getDocumentList().dataTablePage().checkRowIsSelected(displayColumnName, docxFileModel.name);
await contentServicesPage.getDocumentList().dataTablePage().checkRowIsSelected(displayColumnName, folderModel.name);
await expect(JSON.stringify(await contentServicesPage.getItemSelected())).toEqual('[\"' + docxFileModel.name + '","' + folderModel.name + '\"]');
});
it('[C212928] Should be able to enable the Multiselect (with checkboxes) toggle and select items accordingly', async () => {
await contentServicesPage.chooseSelectionMode('Multiple');
await contentServicesPage.clickMultiSelectToggle();
await expect(await contentServicesPage.multiSelectToggleIsEnabled()).toBe(true);
await expect(JSON.stringify(await contentServicesPage.getItemSelected())).toEqual('[]');
await contentServicesPage.selectItemWithCheckbox(docxFileModel.name);
await contentServicesPage.selectItemWithCheckbox(folderModel.name);
await expect(JSON.stringify(await contentServicesPage.getItemSelected())).toEqual('[\"' + docxFileModel.name + '","' + folderModel.name + '\"]');
await contentServicesPage.unSelectItemWithCheckbox(docxFileModel.name);
await contentServicesPage.getDocumentList().dataTablePage().checkRowIsSelected(displayColumnName, folderModel.name);
await contentServicesPage.getDocumentList().dataTablePage().checkRowIsNotSelected(displayColumnName, docxFileModel.name );
await contentServicesPage.clickSelectAllCheckbox();
await contentServicesPage.getDocumentList().dataTablePage().checkRowIsSelected(displayColumnName, docxFileModel.name);
await contentServicesPage.getDocumentList().dataTablePage().checkRowIsSelected(displayColumnName, folderModel.name);
await expect(JSON.stringify(await contentServicesPage.getItemSelected())).toEqual('[\"' + folderModel.name + '","' + docxFileModel.name + '\"]');
});
});
@@ -62,17 +62,17 @@ describe('Document List Component', () => {
const pdfFile = new FileModel({
name: browser.params.resources.Files.ADF_DOCUMENTS.PDF.file_name,
location: browser.params.resources.Files.ADF_DOCUMENTS.PDF.file_location
location: browser.params.resources.Files.ADF_DOCUMENTS.PDF.file_path
});
const testFile = new FileModel({
name: browser.params.resources.Files.ADF_DOCUMENTS.TEST.file_name,
location: browser.params.resources.Files.ADF_DOCUMENTS.TEST.file_location
location: browser.params.resources.Files.ADF_DOCUMENTS.TEST.file_path
});
const docxFile = new FileModel({
name: browser.params.resources.Files.ADF_DOCUMENTS.DOCX.file_name,
location: browser.params.resources.Files.ADF_DOCUMENTS.DOCX.file_location
location: browser.params.resources.Files.ADF_DOCUMENTS.DOCX.file_path
});
const folderName = `MEESEEKS_${StringUtil.generateRandomString(5)}_LOOK_AT_ME`;
let filePdfNode, fileTestNode, fileDocxNode, folderNode;
+2 -2
View File
@@ -41,12 +41,12 @@ describe('Lock File', () => {
const pngFileModel = new FileModel({
name: browser.params.resources.Files.ADF_DOCUMENTS.PNG.file_name,
location: browser.params.resources.Files.ADF_DOCUMENTS.PNG.file_location
location: browser.params.resources.Files.ADF_DOCUMENTS.PNG.file_path
});
const pngFileToLock = new FileModel({
name: browser.params.resources.Files.ADF_DOCUMENTS.PNG_B.file_name,
location: browser.params.resources.Files.ADF_DOCUMENTS.PNG_B.file_location
location: browser.params.resources.Files.ADF_DOCUMENTS.PNG_B.file_path
});
let nodeId, site, documentLibrary, lockedFileNodeId;

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