mirror of
https://github.com/Alfresco/alfresco-ng2-components.git
synced 2026-09-16 18:13:06 +00:00
Compare commits
96
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
5ce06d80cb | ||
|
|
ccdcba8778 | ||
|
|
72b3a75a85 | ||
|
|
ffd4413335 | ||
|
|
4185bf8083 | ||
|
|
10587dd842 | ||
|
|
79a95ecd5d | ||
|
|
0c2f9aefbd | ||
|
|
7a70e88ae3 | ||
|
|
3d336bf9bd | ||
|
|
d3021a1cc8 | ||
|
|
d1a48a015d | ||
|
|
05baabb8f5 | ||
|
|
a6e18e6c1b | ||
|
|
fadcc19eba | ||
|
|
bbe22fd2a7 | ||
|
|
65dc1a5c31 | ||
|
|
c151d4535c | ||
|
|
cdc39759ca | ||
|
|
080eef891b | ||
|
|
d9a251a0c8 | ||
|
|
abc376ff33 | ||
|
|
3af702f58e | ||
|
|
bd24105036 | ||
|
|
cae73e3c02 | ||
|
|
939277366f | ||
|
|
cf761ba0b2 | ||
|
|
a4fc53a742 | ||
|
|
b88888b5e4 | ||
|
|
10673ef6f6 | ||
|
|
5ed570b36f | ||
|
|
a580b6eb15 | ||
|
|
085e1a9dfa | ||
|
|
c9b7722bd0 | ||
|
|
a13196a836 | ||
|
|
e03799e038 | ||
|
|
4d0c98d753 | ||
|
|
0d6140be77 | ||
|
|
87b80235a7 | ||
|
|
028916e386 | ||
|
|
43f08441cd | ||
|
|
4dccc2a49a | ||
|
|
2a2dfbcc42 | ||
|
|
5c5bb7f9b7 | ||
|
|
069e4297ea | ||
|
|
24714b8a87 | ||
|
|
d401018519 | ||
|
|
f99b943bcb | ||
|
|
5c07d5b3e6 | ||
|
|
90c403ae9e | ||
|
|
d531a022d0 | ||
|
|
72eab9e84d | ||
|
|
31d98fc368 | ||
|
|
317ae3db68 | ||
|
|
be234f227f | ||
|
|
938286671d | ||
|
|
685404432a | ||
|
|
82d6ebd763 | ||
|
|
f861b94de4 | ||
|
|
f063d94316 | ||
|
|
bb322bb5ed | ||
|
|
c5739ff435 | ||
|
|
45af7ca88d | ||
|
|
09c62d5046 | ||
|
|
957a76b1b5 | ||
|
|
3d4ea197ee | ||
|
|
fac04a9707 | ||
|
|
f934aa306b | ||
|
|
25446b5ba3 | ||
|
|
e64eee90af | ||
|
|
d6c3373298 | ||
|
|
725cf22956 | ||
|
|
5f1caca5da | ||
|
|
73b871a233 | ||
|
|
f8fcb6395d | ||
|
|
5589120ed7 | ||
|
|
64a5a98dc6 | ||
|
|
f84db2216b | ||
|
|
334ebd1256 | ||
|
|
e03290d26c | ||
|
|
33089a452f | ||
|
|
f47cebc0a4 | ||
|
|
4733bc7d3b | ||
|
|
c0d1f74d57 | ||
|
|
bd568008f8 | ||
|
|
e578e5dc14 | ||
|
|
b1e7a594b8 | ||
|
|
5f8976004e | ||
|
|
c34205d863 | ||
|
|
4603cef19e | ||
|
|
819ed9ae6a | ||
|
|
c44c2eae77 | ||
|
|
88c04ad7b8 | ||
|
|
d43274f891 | ||
|
|
6d2f2030fe | ||
|
|
ab3bb9002f |
@@ -0,0 +1,39 @@
|
||||
|
||||
# This is a comment.
|
||||
# Each line is a file pattern followed by one or more owners.
|
||||
|
||||
# These owners will be the default owners for everything in
|
||||
# the repo. Unless a later match takes precedence,
|
||||
# these users will be requested for
|
||||
# review when someone opens a pull request.
|
||||
* @eromano @popovicsandras @DenysVuika
|
||||
|
||||
# Order is important; the last matching pattern takes the most
|
||||
# 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
|
||||
|
||||
# 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
|
||||
+2
-2
@@ -6,7 +6,7 @@ dist: trusty
|
||||
sudo: required
|
||||
node_js:
|
||||
# Use the explicit NodeJS LTS version 8.9.4 to avoid any automatic upgrade of the version.
|
||||
- '8.9.4'
|
||||
- '10.16.0'
|
||||
|
||||
install:
|
||||
echo "no install"
|
||||
@@ -61,7 +61,7 @@ jobs:
|
||||
- stage: Update children projects dependency #Update children projects dependency
|
||||
name: Update Related Project
|
||||
if: tag =~ .*beta.*
|
||||
script: ./scripts/update-project.sh
|
||||
script: ./scripts/travis/update/update-children.sh
|
||||
- stage: e2e Test
|
||||
name: core
|
||||
script: ./scripts/travis/e2e/core-e2e.sh
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
<a href='https://github.com/Alfresco/alfresco-ng2-components/blob/master/LICENSE'>
|
||||
<img src='https://img.shields.io/hexpm/l/plug.svg' alt='license' />
|
||||
</a>
|
||||
</p>
|
||||
</p
|
||||
|
||||
## Introduction
|
||||
|
||||
|
||||
+40
-4
@@ -23,7 +23,7 @@
|
||||
},
|
||||
"assets": [
|
||||
"demo-shell/src/assets",
|
||||
"demo-shell/src/favicon.ico",
|
||||
"demo-shell/src/favicon-96x96.png",
|
||||
"demo-shell/src/app.config.json",
|
||||
"demo-shell/src/versions.json",
|
||||
{
|
||||
@@ -78,6 +78,8 @@
|
||||
}
|
||||
],
|
||||
"styles": [
|
||||
"demo-shell/src/assets/fonts/material-icons/material-icons.css",
|
||||
"demo-shell/src/assets/fonts/muli/muli.css",
|
||||
"demo-shell/src/styles.scss",
|
||||
"demo-shell/src/custom-style.scss"
|
||||
],
|
||||
@@ -106,6 +108,14 @@
|
||||
"with": "demo-shell/src/environments/environment.prod.ts"
|
||||
}
|
||||
]
|
||||
},
|
||||
"e2e": {
|
||||
"fileReplacements": [
|
||||
{
|
||||
"replace": "demo-shell/src/environments/environment.ts",
|
||||
"with": "demo-shell/src/environments/environment.e2e.ts"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -113,11 +123,17 @@
|
||||
"builder": "@angular-devkit/build-angular:dev-server",
|
||||
"options": {
|
||||
"browserTarget": "dist:build",
|
||||
"port": 3000
|
||||
"host": "0.0.0.0",
|
||||
"port": 3000,
|
||||
"proxyConfig": "demo-shell/proxy.conf.js",
|
||||
"disableHostCheck": true
|
||||
},
|
||||
"configurations": {
|
||||
"production": {
|
||||
"browserTarget": "dist:build:production"
|
||||
},
|
||||
"e2e": {
|
||||
"browserTarget": "dist:build:e2e"
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -141,12 +157,14 @@
|
||||
"node_modules/moment/min/moment.min.js"
|
||||
],
|
||||
"styles": [
|
||||
"demo-shell/src/assets/fonts/material-icons/material-icons.css",
|
||||
"demo-shell/src/assets/fonts/muli/muli.css",
|
||||
"demo-shell/src/styles.scss",
|
||||
"demo-shell/src/custom-style.scss"
|
||||
],
|
||||
"assets": [
|
||||
"demo-shell/src/assets",
|
||||
"demo-shell/src/favicon.ico",
|
||||
"demo-shell/src/favicon-96x96.png",
|
||||
"demo-shell/src/app.config.json",
|
||||
"demo-shell/src/versions.json",
|
||||
{
|
||||
@@ -324,6 +342,8 @@
|
||||
}
|
||||
],
|
||||
"styles": [
|
||||
"demo-shell/src/assets/fonts/material-icons/material-icons.css",
|
||||
"demo-shell/src/assets/fonts/muli/muli.css",
|
||||
"demo-shell/src/styles.scss",
|
||||
"demo-shell/src/custom-style-dev.scss"
|
||||
],
|
||||
@@ -352,6 +372,14 @@
|
||||
"with": "demo-shell/src/environments/environment.prod.ts"
|
||||
}
|
||||
]
|
||||
},
|
||||
"e2e": {
|
||||
"fileReplacements": [
|
||||
{
|
||||
"replace": "demo-shell/src/environments/environment.ts",
|
||||
"with": "demo-shell/src/environments/environment.e2e.ts"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -359,11 +387,17 @@
|
||||
"builder": "@angular-devkit/build-angular:dev-server",
|
||||
"options": {
|
||||
"browserTarget": "dev:build",
|
||||
"port": 3000
|
||||
"host": "0.0.0.0",
|
||||
"port": 3000,
|
||||
"proxyConfig": "demo-shell/proxy.conf.js",
|
||||
"disableHostCheck": true
|
||||
},
|
||||
"configurations": {
|
||||
"production": {
|
||||
"browserTarget": "dev:build:production"
|
||||
},
|
||||
"e2e": {
|
||||
"browserTarget": "dev:build:e2e"
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -387,6 +421,8 @@
|
||||
"node_modules/moment/min/moment.min.js"
|
||||
],
|
||||
"styles": [
|
||||
"demo-shell/src/assets/fonts/material-icons/material-icons.css",
|
||||
"demo-shell/src/assets/fonts/muli/muli.css",
|
||||
"demo-shell/src/styles.scss",
|
||||
"demo-shell/src/custom-style-dev.scss"
|
||||
],
|
||||
|
||||
+3
-1
@@ -126,7 +126,9 @@
|
||||
"uncheck",
|
||||
"subfolders",
|
||||
"ECMBPM",
|
||||
"processwithvariables"
|
||||
"processwithvariables",
|
||||
"dropdownrestprocess",
|
||||
"devops"
|
||||
],
|
||||
"dictionaries": [
|
||||
"html",
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "Alfresco-ADF-Angular-Demo",
|
||||
"description": "Demo shell for Alfresco Angular components",
|
||||
"version": "3.2.1",
|
||||
"version": "3.3.0",
|
||||
"author": "Alfresco Software, Ltd.",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
var PROXY_HOST_ADF = process.env.PROXY_HOST_ADF;
|
||||
|
||||
module.exports = {
|
||||
"/alfresco": {
|
||||
"target": "http://localhost:8080",
|
||||
"target": (PROXY_HOST_ADF || "http://localhost:8080"),
|
||||
"secure": false,
|
||||
"pathRewrite": {
|
||||
"^/alfresco/alfresco": ""
|
||||
@@ -15,7 +17,7 @@ module.exports = {
|
||||
}
|
||||
},
|
||||
"/activiti-app": {
|
||||
"target": "http://localhost:8080",
|
||||
"target": (PROXY_HOST_ADF || "http://localhost:8080"),
|
||||
"secure": false,
|
||||
"pathRewrite": {
|
||||
"^/activiti-app/activiti-app": ""
|
||||
|
||||
@@ -95,7 +95,8 @@
|
||||
"PEOPLE_GROUPS_CLOUD": "Person/gruppecloud",
|
||||
"PEOPLE_CLOUD": "Personcloudkomponent",
|
||||
"GROUPS_CLOUD": "Gruppecloudkomponent",
|
||||
"CONFIRM-DIALOG": "Bekræftelsesdialogboks"
|
||||
"CONFIRM-DIALOG": "Bekræftelsesdialogboks",
|
||||
"COMMUNITY": "Community"
|
||||
},
|
||||
"TRASHCAN": {
|
||||
"ACTIONS": {
|
||||
|
||||
@@ -64,7 +64,7 @@
|
||||
"TASK_LIST": "Uppgiftslista",
|
||||
"PROCESS_LIST": "Processlista",
|
||||
"PROCESS_CLOUD": "Activiti Cloud",
|
||||
"CARD_VIEW": "CardView",
|
||||
"CARD_VIEW": "Kortvy",
|
||||
"PROCESS_SERVICES": "Process Services",
|
||||
"LOGIN": "Inloggning",
|
||||
"CUSTOM_SOURCES": "Anpassade källor",
|
||||
@@ -75,7 +75,7 @@
|
||||
"FORM": "Formulär",
|
||||
"FORM_LIST": "Formulärlista",
|
||||
"FORM_LOADING": "Formulär läses in",
|
||||
"UPLOADER": "Uppladdare",
|
||||
"UPLOADER": "Uppladdad av",
|
||||
"WEBSCRIPT": "Webbskript",
|
||||
"TAG": "Tagg",
|
||||
"TRASHCAN": "Papperskorg",
|
||||
@@ -95,7 +95,7 @@
|
||||
"PEOPLE_GROUPS_CLOUD": "Personer/grupp moln",
|
||||
"PEOPLE_CLOUD": "Personer moln-komponent",
|
||||
"GROUPS_CLOUD": "Grupper moln-komponent",
|
||||
"CONFIRM-DIALOG": "Bekräftelsedialog",
|
||||
"CONFIRM-DIALOG": "Dialogruta för bekräftelse",
|
||||
"COMMUNITY": "Community"
|
||||
},
|
||||
"TRASHCAN": {
|
||||
@@ -110,7 +110,7 @@
|
||||
}
|
||||
},
|
||||
"DOCUMENT_LIST": {
|
||||
"MULTISELECT_CHECKBOXES": "Flera val (med kryssrutor)",
|
||||
"MULTISELECT_CHECKBOXES": "Fleraval (med kryssrutor)",
|
||||
"THUMBNAILS": "Aktivera miniatyrbilder",
|
||||
"ALLOW_DROP_FILES": "Aktivera släpp filer i en mapp",
|
||||
"MULTIPLE_FILE_UPLOAD": "Uppladdning av flera filer",
|
||||
@@ -178,8 +178,8 @@
|
||||
"ADD_ROW": "Lägg till rad",
|
||||
"REPLACE_ROWS": "Ersätt rader",
|
||||
"REPLACE_COLUMNS": "Ersätt kolumner",
|
||||
"LOAD_NODE": "Ladda upp nod",
|
||||
"MULTISELECT": "Flera val",
|
||||
"LOAD_NODE": "Läs in nod",
|
||||
"MULTISELECT": "Fleraval",
|
||||
"MULTISELECT_DESCRIPTION": "Använd Cmd (Mac) eller Ctrl (Windows) för att växla val av flera objekt"
|
||||
},
|
||||
"ANALYTICS_REPORT": {
|
||||
@@ -209,7 +209,7 @@
|
||||
"FORM_DATA_MESSAGE": "Ange värden för att fylla formuläret",
|
||||
"TYPEAHEAD_PLACEHOLDER": "Typeahead",
|
||||
"RADIO_PLACEHOLDER": "Radioknapp",
|
||||
"SELECT_PLACEHOLDER": "DropDown"
|
||||
"SELECT_PLACEHOLDER": "Dropdown"
|
||||
},
|
||||
"LOGIN": {
|
||||
"CONTENT_SERVICES": "Content Services",
|
||||
@@ -225,8 +225,8 @@
|
||||
"FACET_FIELDS": {
|
||||
"TYPE": "1:Typ",
|
||||
"SIZE": "2:Storlek",
|
||||
"CREATOR": "3:Skapat av",
|
||||
"MODIFIER": "4:Ändrat av",
|
||||
"CREATOR": "3:Skapad av",
|
||||
"MODIFIER": "4:Ändrad av",
|
||||
"CREATED": "5:Skapad den"
|
||||
},
|
||||
"FACET_QUERIES": {
|
||||
|
||||
@@ -439,9 +439,9 @@
|
||||
]
|
||||
},
|
||||
"dateValues":{
|
||||
"defaultDateFormat": "medium",
|
||||
"defaultDateTimeFormat": "DD/MM/YYYY HH:mm",
|
||||
"defaultLocale": "en-US"
|
||||
"defaultDateFormat": "mediumDate",
|
||||
"defaultDateTimeFormat": "MMM d, y, H:mm",
|
||||
"defaultLocale": "en"
|
||||
},
|
||||
"files": {
|
||||
"excluded": [
|
||||
|
||||
@@ -15,18 +15,3 @@ router-outlet[name='overlay'] + * {
|
||||
[dir='rtl'] .mat-icon {
|
||||
transform: scale(-1, 1);
|
||||
}
|
||||
|
||||
@media (max-width: 425px) {
|
||||
adf-content-node-selector {
|
||||
.adf-content-node-selector-content-list {
|
||||
.adf-datatable-cell {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.adf-datatable-cell:first-child,
|
||||
.adf-datatable-cell:nth-child(2) {
|
||||
display: table-cell;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -21,7 +21,7 @@ import { FormsModule } from '@angular/forms';
|
||||
import { FlexLayoutModule } from '@angular/flex-layout';
|
||||
import { ChartsModule } from 'ng2-charts';
|
||||
import { HttpClientModule, HTTP_INTERCEPTORS } from '@angular/common/http';
|
||||
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
|
||||
import { BrowserAnimationsModule, NoopAnimationsModule } from '@angular/platform-browser/animations';
|
||||
|
||||
import { AppConfigService, TRANSLATION_PROVIDER, DebugAppConfigService, CoreModule, CoreAutomationService } from '@alfresco/adf-core';
|
||||
import { ExtensionsModule } from '@alfresco/adf-extensions';
|
||||
@@ -90,6 +90,7 @@ import { CommunityStartTaskCloudDemoComponent } from './components/cloud/communi
|
||||
import { CommunityProcessDetailsCloudDemoComponent } from './components/cloud/community/community-process-details-cloud.component';
|
||||
import { CommunityProcessesCloudDemoComponent } from './components/cloud/community/community-processes-cloud.component';
|
||||
import { CommunityTaskDetailsCloudDemoComponent } from './components/cloud/community/community-task-details-cloud.component';
|
||||
import { environment } from '../environments/environment';
|
||||
|
||||
import { registerLocaleData } from '@angular/common';
|
||||
import localeFr from '@angular/common/locales/fr';
|
||||
@@ -129,7 +130,7 @@ registerLocaleData(localeSv);
|
||||
@NgModule({
|
||||
imports: [
|
||||
BrowserModule,
|
||||
BrowserAnimationsModule,
|
||||
environment.e2e ? NoopAnimationsModule : BrowserAnimationsModule,
|
||||
ReactiveFormsModule,
|
||||
routing,
|
||||
FormsModule,
|
||||
|
||||
@@ -93,7 +93,7 @@ export const appRoutes: Routes = [
|
||||
children: [
|
||||
{
|
||||
path: '',
|
||||
loadChildren: 'app/components/blob-preview/blob-preview.module#BlobPreviewModule'
|
||||
loadChildren: 'app/components/file-view/file-view.module#FileViewModule'
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<adf-sidenav-layout [sidenavMin]="70" [sidenavMax]="220" [stepOver]="780" [hideSidenav]="hideSidenav"
|
||||
[expandedSidenav]="expandedSidenav" (expanded)="setState($event)" [position]="position">
|
||||
[expandedSidenav]="expandedSidenav" (expanded)="setState($event)" [position]="position" data-automation-id="sidenav-layout">
|
||||
|
||||
<adf-sidenav-layout-header>
|
||||
<ng-template let-toggleMenu="toggleMenu">
|
||||
|
||||
+2
-2
@@ -1,7 +1,7 @@
|
||||
<div class="main-content">
|
||||
|
||||
<mat-tab-group>
|
||||
<mat-tab label="Form">
|
||||
<mat-tab label="Form" class="form-cloud-render">
|
||||
<div class="adf-form-container">
|
||||
<adf-cloud-form
|
||||
[showRefreshButton]="false"
|
||||
@@ -17,7 +17,7 @@
|
||||
translate}}</p>
|
||||
</div>
|
||||
</mat-tab>
|
||||
<mat-tab label="Editor">
|
||||
<mat-tab label="Editor" class="form-cloud-editor">
|
||||
<ngx-monaco-editor
|
||||
id="adf-form-config-editor"
|
||||
class="adf-form-config-editor"
|
||||
|
||||
@@ -1,49 +0,0 @@
|
||||
/*!
|
||||
* @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 { NgModule } from '@angular/core';
|
||||
import { Routes, RouterModule } from '@angular/router';
|
||||
import { CommonModule } from '@angular/common';
|
||||
import { CoreModule, InfoDrawerModule } from '@alfresco/adf-core';
|
||||
import { ContentDirectiveModule, ContentMetadataModule, VersionManagerModule } from '@alfresco/adf-content-services';
|
||||
import { BlobPreviewComponent } from './blob-preview.component';
|
||||
|
||||
const routes: Routes = [
|
||||
{
|
||||
path: '',
|
||||
component: BlobPreviewComponent
|
||||
}
|
||||
];
|
||||
|
||||
@NgModule({
|
||||
imports: [
|
||||
CommonModule,
|
||||
RouterModule.forChild(routes),
|
||||
CoreModule.forChild(),
|
||||
InfoDrawerModule,
|
||||
ContentDirectiveModule,
|
||||
ContentMetadataModule,
|
||||
VersionManagerModule
|
||||
],
|
||||
declarations: [
|
||||
BlobPreviewComponent
|
||||
],
|
||||
exports: [
|
||||
BlobPreviewComponent
|
||||
]
|
||||
})
|
||||
export class BlobPreviewModule {}
|
||||
@@ -1,5 +0,0 @@
|
||||
<adf-viewer
|
||||
[showViewer]="true"
|
||||
[blobFile]="content"
|
||||
[displayName]="name">
|
||||
</adf-viewer>
|
||||
@@ -72,7 +72,7 @@ export class CardViewComponent implements OnInit {
|
||||
value: new Date(1983, 11, 24, 10, 0, 30),
|
||||
key: 'date',
|
||||
default: new Date(1983, 11, 24, 10, 0, 30),
|
||||
format: 'DD.MM.YYYY',
|
||||
format: 'shortDate',
|
||||
editable: this.isEditable
|
||||
}),
|
||||
new CardViewDatetimeItemModel({
|
||||
@@ -80,7 +80,7 @@ export class CardViewComponent implements OnInit {
|
||||
value: new Date(1983, 11, 24, 10, 0, 0),
|
||||
key: 'datetime',
|
||||
default: new Date(1983, 11, 24, 10, 0, 0),
|
||||
format: 'DD.MM.YYYY',
|
||||
format: 'short',
|
||||
editable: this.isEditable
|
||||
}),
|
||||
new CardViewBoolItemModel({
|
||||
|
||||
@@ -62,13 +62,13 @@ export class CloudFiltersDemoComponent implements OnInit {
|
||||
}
|
||||
|
||||
onTaskFilterSelected(filter) {
|
||||
this.cloudLayoutService.setCurrentTaskFilterParam({id: filter.id});
|
||||
this.cloudLayoutService.setCurrentTaskFilterParam({id: filter && filter.id ? filter.id : ''});
|
||||
const currentFilter = Object.assign({}, filter);
|
||||
this.router.navigate([`/cloud/${this.appName}/tasks/`], { queryParams: currentFilter });
|
||||
}
|
||||
|
||||
onProcessFilterSelected(filter) {
|
||||
this.cloudLayoutService.setCurrentProcessFilterParam({id: filter.id});
|
||||
this.cloudLayoutService.setCurrentProcessFilterParam({id: filter && filter.id ? filter.id : ''});
|
||||
const currentFilter = Object.assign({}, filter);
|
||||
this.router.navigate([`/cloud/${this.appName}/processes/`], { queryParams: currentFilter });
|
||||
}
|
||||
|
||||
+1
-1
@@ -5,7 +5,7 @@
|
||||
display: flex;
|
||||
}
|
||||
|
||||
&-task-tiitle {
|
||||
&-task-title {
|
||||
margin-left:15px;
|
||||
}
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
display: flex;
|
||||
}
|
||||
|
||||
&-task-tiitle {
|
||||
&-task-title {
|
||||
margin-left:15px;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<ng-container *ngIf="nodeId">
|
||||
<ng-container *ngIf="nodeId || content">
|
||||
|
||||
<ng-template let-node="node" #sidebarRightTemplate>
|
||||
<adf-info-drawer [title]="'APP.INFO_DRAWER.TITLE' | translate">
|
||||
@@ -284,14 +284,16 @@
|
||||
</p>
|
||||
|
||||
<p class="toggle">
|
||||
<button mat-raised-button id="adf-switch-showrightsidebar" (click)="toggleShowRightSidebar()" color="primary">
|
||||
Toggle Right Sidebar
|
||||
<button mat-raised-button id="adf-switch-showrightsidebar" (click)="toggleShowRightSidebar()"
|
||||
color="primary">
|
||||
Toggle Right Sidebar
|
||||
</button>
|
||||
</p>
|
||||
|
||||
<p class="toggle">
|
||||
<button mat-raised-button id="adf-switch-showleftsidebar" (click)="hideLeftSidebar()" color="primary">
|
||||
Hide Left Sidebar
|
||||
<button mat-raised-button id="adf-switch-showleftsidebar" (click)="hideLeftSidebar()"
|
||||
color="primary">
|
||||
Hide Left Sidebar
|
||||
</button>
|
||||
</p>
|
||||
|
||||
@@ -314,6 +316,7 @@
|
||||
</ng-template>
|
||||
|
||||
<adf-viewer
|
||||
[blobFile]="content"
|
||||
[nodeId]="nodeId"
|
||||
[showRightSidebar]="showRightSidebar"
|
||||
[showLeftSidebar]="showLeftSidebar"
|
||||
@@ -325,6 +328,7 @@
|
||||
[allowRightSidebar]="allowRightSidebar"
|
||||
[allowLeftSidebar]="allowLeftSidebar"
|
||||
[urlFile]="urlFile"
|
||||
(showViewerChange)="onViewerVisibilityChanged($event)"
|
||||
[sidebarLeftTemplate]="sidebarLeftTemplate"
|
||||
[sidebarRightTemplate]="sidebarRightTemplate">
|
||||
|
||||
|
||||
@@ -16,9 +16,10 @@
|
||||
*/
|
||||
|
||||
import { Component, OnInit, ViewEncapsulation } from '@angular/core';
|
||||
import { ActivatedRoute, Router } from '@angular/router';
|
||||
import { ActivatedRoute, Router, PRIMARY_OUTLET } from '@angular/router';
|
||||
import { ContentService, AllowableOperationsEnum, PermissionsEnum, NodesApiService } from '@alfresco/adf-core';
|
||||
import { MatSnackBar } from '@angular/material';
|
||||
import { PreviewService } from '../../services/preview.service';
|
||||
|
||||
@Component({
|
||||
selector: 'app-file-view',
|
||||
@@ -57,12 +58,15 @@ export class FileViewComponent implements OnInit {
|
||||
showTabWithIconAndLabel = false;
|
||||
desiredAspect: string = null;
|
||||
showAspect: string = null;
|
||||
content: Blob;
|
||||
name: string;
|
||||
|
||||
constructor(private router: Router,
|
||||
private route: ActivatedRoute,
|
||||
private snackBar: MatSnackBar,
|
||||
private nodeApiService: NodesApiService,
|
||||
private contentServices: ContentService) {
|
||||
private contentServices: ContentService,
|
||||
private preview: PreviewService) {
|
||||
}
|
||||
|
||||
ngOnInit() {
|
||||
@@ -81,10 +85,18 @@ export class FileViewComponent implements OnInit {
|
||||
},
|
||||
() => this.router.navigate(['/files', id])
|
||||
);
|
||||
} else if (this.preview.content) {
|
||||
this.content = this.preview.content;
|
||||
this.displayName = this.preview.name;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
onViewerVisibilityChanged() {
|
||||
const primaryUrl = this.router.parseUrl(this.router.url).root.children[PRIMARY_OUTLET].toString();
|
||||
this.router.navigateByUrl(primaryUrl);
|
||||
}
|
||||
|
||||
onUploadError(errorMessage: string) {
|
||||
this.snackBar.open(errorMessage, '', { duration: 4000 });
|
||||
}
|
||||
|
||||
@@ -94,7 +94,9 @@
|
||||
(click)="createLibrary()">
|
||||
<mat-icon>library_add</mat-icon>
|
||||
</button>
|
||||
<button mat-icon-button
|
||||
<button
|
||||
data-automation-id="edit-folder"
|
||||
mat-icon-button
|
||||
[disabled]="!canEditFolder(documentList.selection)"
|
||||
title="{{ 'DOCUMENT_LIST.TOOLBAR.EDIT_FOLDER' | translate }}"
|
||||
(error)="openSnackMessage($event)"
|
||||
@@ -119,7 +121,9 @@
|
||||
matTooltip="{{ 'DOCUMENT_LIST.TOOLBAR.DELETE' | translate }}">
|
||||
<mat-icon>delete</mat-icon>
|
||||
</button>
|
||||
<button mat-icon-button
|
||||
<button
|
||||
data-automation-id="favorite"
|
||||
mat-icon-button
|
||||
[disabled]="!documentList.selection.length"
|
||||
#favorite="adfFavorite"
|
||||
[adf-node-favorite]="documentList.selection"
|
||||
|
||||
@@ -383,21 +383,21 @@ export class FilesComponent implements OnInit, OnChanges, OnDestroy {
|
||||
|
||||
switch (errorStatusCode) {
|
||||
case 403:
|
||||
translatedErrorMessage = this.translateService.get('OPERATION.ERROR.PERMISSION');
|
||||
translatedErrorMessage = this.translateService.instant('OPERATION.ERROR.PERMISSION');
|
||||
break;
|
||||
case 409:
|
||||
translatedErrorMessage = this.translateService.get('OPERATION.ERROR.CONFLICT');
|
||||
translatedErrorMessage = this.translateService.instant('OPERATION.ERROR.CONFLICT');
|
||||
break;
|
||||
default:
|
||||
translatedErrorMessage = this.translateService.get('OPERATION.ERROR.UNKNOWN');
|
||||
translatedErrorMessage = this.translateService.instant('OPERATION.ERROR.UNKNOWN');
|
||||
}
|
||||
|
||||
this.openSnackMessage(translatedErrorMessage.value);
|
||||
this.openSnackMessage(translatedErrorMessage);
|
||||
}
|
||||
|
||||
onContentActionSuccess(message) {
|
||||
const translatedMessage: any = this.translateService.get(message);
|
||||
this.openSnackMessage(translatedMessage.value);
|
||||
const translatedMessage: any = this.translateService.instant(message);
|
||||
this.openSnackMessage(translatedMessage);
|
||||
this.documentList.reload();
|
||||
}
|
||||
|
||||
@@ -424,8 +424,8 @@ export class FilesComponent implements OnInit, OnChanges, OnDestroy {
|
||||
width: '630px'
|
||||
});
|
||||
} else {
|
||||
const translatedErrorMessage: any = this.translateService.get('OPERATION.ERROR.PERMISSION');
|
||||
this.openSnackMessage(translatedErrorMessage.value);
|
||||
const translatedErrorMessage: any = this.translateService.instant('OPERATION.ERROR.PERMISSION');
|
||||
this.openSnackMessage(translatedErrorMessage);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -442,8 +442,8 @@ export class FilesComponent implements OnInit, OnChanges, OnDestroy {
|
||||
width: '630px'
|
||||
});
|
||||
} else {
|
||||
const translatedErrorMessage: any = this.translateService.get('OPERATION.ERROR.PERMISSION');
|
||||
this.openSnackMessage(translatedErrorMessage.value);
|
||||
const translatedErrorMessage: any = this.translateService.instant('OPERATION.ERROR.PERMISSION');
|
||||
this.openSnackMessage(translatedErrorMessage);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<div id="attachment-process-list" *ngIf="processInstanceId">
|
||||
<div class="adf-no-form-container">
|
||||
<div>
|
||||
|
||||
<adf-upload-drag-area
|
||||
[rootFolderId]="processInstanceId"
|
||||
|
||||
Binary file not shown.
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
|
After Width: | Height: | Size: 275 KiB |
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,9 @@
|
||||
The recommended way to use the Material Icons font is by linking to the web font hosted on Google Fonts:
|
||||
|
||||
```html
|
||||
<link href="https://fonts.googleapis.com/icon?family=Material+Icons"
|
||||
rel="stylesheet">
|
||||
```
|
||||
|
||||
Read more in our full usage guide:
|
||||
http://google.github.io/material-design-icons/#icon-font-for-the-web
|
||||
+932
@@ -0,0 +1,932 @@
|
||||
3d_rotation e84d
|
||||
ac_unit eb3b
|
||||
access_alarm e190
|
||||
access_alarms e191
|
||||
access_time e192
|
||||
accessibility e84e
|
||||
accessible e914
|
||||
account_balance e84f
|
||||
account_balance_wallet e850
|
||||
account_box e851
|
||||
account_circle e853
|
||||
adb e60e
|
||||
add e145
|
||||
add_a_photo e439
|
||||
add_alarm e193
|
||||
add_alert e003
|
||||
add_box e146
|
||||
add_circle e147
|
||||
add_circle_outline e148
|
||||
add_location e567
|
||||
add_shopping_cart e854
|
||||
add_to_photos e39d
|
||||
add_to_queue e05c
|
||||
adjust e39e
|
||||
airline_seat_flat e630
|
||||
airline_seat_flat_angled e631
|
||||
airline_seat_individual_suite e632
|
||||
airline_seat_legroom_extra e633
|
||||
airline_seat_legroom_normal e634
|
||||
airline_seat_legroom_reduced e635
|
||||
airline_seat_recline_extra e636
|
||||
airline_seat_recline_normal e637
|
||||
airplanemode_active e195
|
||||
airplanemode_inactive e194
|
||||
airplay e055
|
||||
airport_shuttle eb3c
|
||||
alarm e855
|
||||
alarm_add e856
|
||||
alarm_off e857
|
||||
alarm_on e858
|
||||
album e019
|
||||
all_inclusive eb3d
|
||||
all_out e90b
|
||||
android e859
|
||||
announcement e85a
|
||||
apps e5c3
|
||||
archive e149
|
||||
arrow_back e5c4
|
||||
arrow_downward e5db
|
||||
arrow_drop_down e5c5
|
||||
arrow_drop_down_circle e5c6
|
||||
arrow_drop_up e5c7
|
||||
arrow_forward e5c8
|
||||
arrow_upward e5d8
|
||||
art_track e060
|
||||
aspect_ratio e85b
|
||||
assessment e85c
|
||||
assignment e85d
|
||||
assignment_ind e85e
|
||||
assignment_late e85f
|
||||
assignment_return e860
|
||||
assignment_returned e861
|
||||
assignment_turned_in e862
|
||||
assistant e39f
|
||||
assistant_photo e3a0
|
||||
attach_file e226
|
||||
attach_money e227
|
||||
attachment e2bc
|
||||
audiotrack e3a1
|
||||
autorenew e863
|
||||
av_timer e01b
|
||||
backspace e14a
|
||||
backup e864
|
||||
battery_alert e19c
|
||||
battery_charging_full e1a3
|
||||
battery_full e1a4
|
||||
battery_std e1a5
|
||||
battery_unknown e1a6
|
||||
beach_access eb3e
|
||||
beenhere e52d
|
||||
block e14b
|
||||
bluetooth e1a7
|
||||
bluetooth_audio e60f
|
||||
bluetooth_connected e1a8
|
||||
bluetooth_disabled e1a9
|
||||
bluetooth_searching e1aa
|
||||
blur_circular e3a2
|
||||
blur_linear e3a3
|
||||
blur_off e3a4
|
||||
blur_on e3a5
|
||||
book e865
|
||||
bookmark e866
|
||||
bookmark_border e867
|
||||
border_all e228
|
||||
border_bottom e229
|
||||
border_clear e22a
|
||||
border_color e22b
|
||||
border_horizontal e22c
|
||||
border_inner e22d
|
||||
border_left e22e
|
||||
border_outer e22f
|
||||
border_right e230
|
||||
border_style e231
|
||||
border_top e232
|
||||
border_vertical e233
|
||||
branding_watermark e06b
|
||||
brightness_1 e3a6
|
||||
brightness_2 e3a7
|
||||
brightness_3 e3a8
|
||||
brightness_4 e3a9
|
||||
brightness_5 e3aa
|
||||
brightness_6 e3ab
|
||||
brightness_7 e3ac
|
||||
brightness_auto e1ab
|
||||
brightness_high e1ac
|
||||
brightness_low e1ad
|
||||
brightness_medium e1ae
|
||||
broken_image e3ad
|
||||
brush e3ae
|
||||
bubble_chart e6dd
|
||||
bug_report e868
|
||||
build e869
|
||||
burst_mode e43c
|
||||
business e0af
|
||||
business_center eb3f
|
||||
cached e86a
|
||||
cake e7e9
|
||||
call e0b0
|
||||
call_end e0b1
|
||||
call_made e0b2
|
||||
call_merge e0b3
|
||||
call_missed e0b4
|
||||
call_missed_outgoing e0e4
|
||||
call_received e0b5
|
||||
call_split e0b6
|
||||
call_to_action e06c
|
||||
camera e3af
|
||||
camera_alt e3b0
|
||||
camera_enhance e8fc
|
||||
camera_front e3b1
|
||||
camera_rear e3b2
|
||||
camera_roll e3b3
|
||||
cancel e5c9
|
||||
card_giftcard e8f6
|
||||
card_membership e8f7
|
||||
card_travel e8f8
|
||||
casino eb40
|
||||
cast e307
|
||||
cast_connected e308
|
||||
center_focus_strong e3b4
|
||||
center_focus_weak e3b5
|
||||
change_history e86b
|
||||
chat e0b7
|
||||
chat_bubble e0ca
|
||||
chat_bubble_outline e0cb
|
||||
check e5ca
|
||||
check_box e834
|
||||
check_box_outline_blank e835
|
||||
check_circle e86c
|
||||
chevron_left e5cb
|
||||
chevron_right e5cc
|
||||
child_care eb41
|
||||
child_friendly eb42
|
||||
chrome_reader_mode e86d
|
||||
class e86e
|
||||
clear e14c
|
||||
clear_all e0b8
|
||||
close e5cd
|
||||
closed_caption e01c
|
||||
cloud e2bd
|
||||
cloud_circle e2be
|
||||
cloud_done e2bf
|
||||
cloud_download e2c0
|
||||
cloud_off e2c1
|
||||
cloud_queue e2c2
|
||||
cloud_upload e2c3
|
||||
code e86f
|
||||
collections e3b6
|
||||
collections_bookmark e431
|
||||
color_lens e3b7
|
||||
colorize e3b8
|
||||
comment e0b9
|
||||
compare e3b9
|
||||
compare_arrows e915
|
||||
computer e30a
|
||||
confirmation_number e638
|
||||
contact_mail e0d0
|
||||
contact_phone e0cf
|
||||
contacts e0ba
|
||||
content_copy e14d
|
||||
content_cut e14e
|
||||
content_paste e14f
|
||||
control_point e3ba
|
||||
control_point_duplicate e3bb
|
||||
copyright e90c
|
||||
create e150
|
||||
create_new_folder e2cc
|
||||
credit_card e870
|
||||
crop e3be
|
||||
crop_16_9 e3bc
|
||||
crop_3_2 e3bd
|
||||
crop_5_4 e3bf
|
||||
crop_7_5 e3c0
|
||||
crop_din e3c1
|
||||
crop_free e3c2
|
||||
crop_landscape e3c3
|
||||
crop_original e3c4
|
||||
crop_portrait e3c5
|
||||
crop_rotate e437
|
||||
crop_square e3c6
|
||||
dashboard e871
|
||||
data_usage e1af
|
||||
date_range e916
|
||||
dehaze e3c7
|
||||
delete e872
|
||||
delete_forever e92b
|
||||
delete_sweep e16c
|
||||
description e873
|
||||
desktop_mac e30b
|
||||
desktop_windows e30c
|
||||
details e3c8
|
||||
developer_board e30d
|
||||
developer_mode e1b0
|
||||
device_hub e335
|
||||
devices e1b1
|
||||
devices_other e337
|
||||
dialer_sip e0bb
|
||||
dialpad e0bc
|
||||
directions e52e
|
||||
directions_bike e52f
|
||||
directions_boat e532
|
||||
directions_bus e530
|
||||
directions_car e531
|
||||
directions_railway e534
|
||||
directions_run e566
|
||||
directions_subway e533
|
||||
directions_transit e535
|
||||
directions_walk e536
|
||||
disc_full e610
|
||||
dns e875
|
||||
do_not_disturb e612
|
||||
do_not_disturb_alt e611
|
||||
do_not_disturb_off e643
|
||||
do_not_disturb_on e644
|
||||
dock e30e
|
||||
domain e7ee
|
||||
done e876
|
||||
done_all e877
|
||||
donut_large e917
|
||||
donut_small e918
|
||||
drafts e151
|
||||
drag_handle e25d
|
||||
drive_eta e613
|
||||
dvr e1b2
|
||||
edit e3c9
|
||||
edit_location e568
|
||||
eject e8fb
|
||||
email e0be
|
||||
enhanced_encryption e63f
|
||||
equalizer e01d
|
||||
error e000
|
||||
error_outline e001
|
||||
euro_symbol e926
|
||||
ev_station e56d
|
||||
event e878
|
||||
event_available e614
|
||||
event_busy e615
|
||||
event_note e616
|
||||
event_seat e903
|
||||
exit_to_app e879
|
||||
expand_less e5ce
|
||||
expand_more e5cf
|
||||
explicit e01e
|
||||
explore e87a
|
||||
exposure e3ca
|
||||
exposure_neg_1 e3cb
|
||||
exposure_neg_2 e3cc
|
||||
exposure_plus_1 e3cd
|
||||
exposure_plus_2 e3ce
|
||||
exposure_zero e3cf
|
||||
extension e87b
|
||||
face e87c
|
||||
fast_forward e01f
|
||||
fast_rewind e020
|
||||
favorite e87d
|
||||
favorite_border e87e
|
||||
featured_play_list e06d
|
||||
featured_video e06e
|
||||
feedback e87f
|
||||
fiber_dvr e05d
|
||||
fiber_manual_record e061
|
||||
fiber_new e05e
|
||||
fiber_pin e06a
|
||||
fiber_smart_record e062
|
||||
file_download e2c4
|
||||
file_upload e2c6
|
||||
filter e3d3
|
||||
filter_1 e3d0
|
||||
filter_2 e3d1
|
||||
filter_3 e3d2
|
||||
filter_4 e3d4
|
||||
filter_5 e3d5
|
||||
filter_6 e3d6
|
||||
filter_7 e3d7
|
||||
filter_8 e3d8
|
||||
filter_9 e3d9
|
||||
filter_9_plus e3da
|
||||
filter_b_and_w e3db
|
||||
filter_center_focus e3dc
|
||||
filter_drama e3dd
|
||||
filter_frames e3de
|
||||
filter_hdr e3df
|
||||
filter_list e152
|
||||
filter_none e3e0
|
||||
filter_tilt_shift e3e2
|
||||
filter_vintage e3e3
|
||||
find_in_page e880
|
||||
find_replace e881
|
||||
fingerprint e90d
|
||||
first_page e5dc
|
||||
fitness_center eb43
|
||||
flag e153
|
||||
flare e3e4
|
||||
flash_auto e3e5
|
||||
flash_off e3e6
|
||||
flash_on e3e7
|
||||
flight e539
|
||||
flight_land e904
|
||||
flight_takeoff e905
|
||||
flip e3e8
|
||||
flip_to_back e882
|
||||
flip_to_front e883
|
||||
folder e2c7
|
||||
folder_open e2c8
|
||||
folder_shared e2c9
|
||||
folder_special e617
|
||||
font_download e167
|
||||
format_align_center e234
|
||||
format_align_justify e235
|
||||
format_align_left e236
|
||||
format_align_right e237
|
||||
format_bold e238
|
||||
format_clear e239
|
||||
format_color_fill e23a
|
||||
format_color_reset e23b
|
||||
format_color_text e23c
|
||||
format_indent_decrease e23d
|
||||
format_indent_increase e23e
|
||||
format_italic e23f
|
||||
format_line_spacing e240
|
||||
format_list_bulleted e241
|
||||
format_list_numbered e242
|
||||
format_paint e243
|
||||
format_quote e244
|
||||
format_shapes e25e
|
||||
format_size e245
|
||||
format_strikethrough e246
|
||||
format_textdirection_l_to_r e247
|
||||
format_textdirection_r_to_l e248
|
||||
format_underlined e249
|
||||
forum e0bf
|
||||
forward e154
|
||||
forward_10 e056
|
||||
forward_30 e057
|
||||
forward_5 e058
|
||||
free_breakfast eb44
|
||||
fullscreen e5d0
|
||||
fullscreen_exit e5d1
|
||||
functions e24a
|
||||
g_translate e927
|
||||
gamepad e30f
|
||||
games e021
|
||||
gavel e90e
|
||||
gesture e155
|
||||
get_app e884
|
||||
gif e908
|
||||
golf_course eb45
|
||||
gps_fixed e1b3
|
||||
gps_not_fixed e1b4
|
||||
gps_off e1b5
|
||||
grade e885
|
||||
gradient e3e9
|
||||
grain e3ea
|
||||
graphic_eq e1b8
|
||||
grid_off e3eb
|
||||
grid_on e3ec
|
||||
group e7ef
|
||||
group_add e7f0
|
||||
group_work e886
|
||||
hd e052
|
||||
hdr_off e3ed
|
||||
hdr_on e3ee
|
||||
hdr_strong e3f1
|
||||
hdr_weak e3f2
|
||||
headset e310
|
||||
headset_mic e311
|
||||
healing e3f3
|
||||
hearing e023
|
||||
help e887
|
||||
help_outline e8fd
|
||||
high_quality e024
|
||||
highlight e25f
|
||||
highlight_off e888
|
||||
history e889
|
||||
home e88a
|
||||
hot_tub eb46
|
||||
hotel e53a
|
||||
hourglass_empty e88b
|
||||
hourglass_full e88c
|
||||
http e902
|
||||
https e88d
|
||||
image e3f4
|
||||
image_aspect_ratio e3f5
|
||||
import_contacts e0e0
|
||||
import_export e0c3
|
||||
important_devices e912
|
||||
inbox e156
|
||||
indeterminate_check_box e909
|
||||
info e88e
|
||||
info_outline e88f
|
||||
input e890
|
||||
insert_chart e24b
|
||||
insert_comment e24c
|
||||
insert_drive_file e24d
|
||||
insert_emoticon e24e
|
||||
insert_invitation e24f
|
||||
insert_link e250
|
||||
insert_photo e251
|
||||
invert_colors e891
|
||||
invert_colors_off e0c4
|
||||
iso e3f6
|
||||
keyboard e312
|
||||
keyboard_arrow_down e313
|
||||
keyboard_arrow_left e314
|
||||
keyboard_arrow_right e315
|
||||
keyboard_arrow_up e316
|
||||
keyboard_backspace e317
|
||||
keyboard_capslock e318
|
||||
keyboard_hide e31a
|
||||
keyboard_return e31b
|
||||
keyboard_tab e31c
|
||||
keyboard_voice e31d
|
||||
kitchen eb47
|
||||
label e892
|
||||
label_outline e893
|
||||
landscape e3f7
|
||||
language e894
|
||||
laptop e31e
|
||||
laptop_chromebook e31f
|
||||
laptop_mac e320
|
||||
laptop_windows e321
|
||||
last_page e5dd
|
||||
launch e895
|
||||
layers e53b
|
||||
layers_clear e53c
|
||||
leak_add e3f8
|
||||
leak_remove e3f9
|
||||
lens e3fa
|
||||
library_add e02e
|
||||
library_books e02f
|
||||
library_music e030
|
||||
lightbulb_outline e90f
|
||||
line_style e919
|
||||
line_weight e91a
|
||||
linear_scale e260
|
||||
link e157
|
||||
linked_camera e438
|
||||
list e896
|
||||
live_help e0c6
|
||||
live_tv e639
|
||||
local_activity e53f
|
||||
local_airport e53d
|
||||
local_atm e53e
|
||||
local_bar e540
|
||||
local_cafe e541
|
||||
local_car_wash e542
|
||||
local_convenience_store e543
|
||||
local_dining e556
|
||||
local_drink e544
|
||||
local_florist e545
|
||||
local_gas_station e546
|
||||
local_grocery_store e547
|
||||
local_hospital e548
|
||||
local_hotel e549
|
||||
local_laundry_service e54a
|
||||
local_library e54b
|
||||
local_mall e54c
|
||||
local_movies e54d
|
||||
local_offer e54e
|
||||
local_parking e54f
|
||||
local_pharmacy e550
|
||||
local_phone e551
|
||||
local_pizza e552
|
||||
local_play e553
|
||||
local_post_office e554
|
||||
local_printshop e555
|
||||
local_see e557
|
||||
local_shipping e558
|
||||
local_taxi e559
|
||||
location_city e7f1
|
||||
location_disabled e1b6
|
||||
location_off e0c7
|
||||
location_on e0c8
|
||||
location_searching e1b7
|
||||
lock e897
|
||||
lock_open e898
|
||||
lock_outline e899
|
||||
looks e3fc
|
||||
looks_3 e3fb
|
||||
looks_4 e3fd
|
||||
looks_5 e3fe
|
||||
looks_6 e3ff
|
||||
looks_one e400
|
||||
looks_two e401
|
||||
loop e028
|
||||
loupe e402
|
||||
low_priority e16d
|
||||
loyalty e89a
|
||||
mail e158
|
||||
mail_outline e0e1
|
||||
map e55b
|
||||
markunread e159
|
||||
markunread_mailbox e89b
|
||||
memory e322
|
||||
menu e5d2
|
||||
merge_type e252
|
||||
message e0c9
|
||||
mic e029
|
||||
mic_none e02a
|
||||
mic_off e02b
|
||||
mms e618
|
||||
mode_comment e253
|
||||
mode_edit e254
|
||||
monetization_on e263
|
||||
money_off e25c
|
||||
monochrome_photos e403
|
||||
mood e7f2
|
||||
mood_bad e7f3
|
||||
more e619
|
||||
more_horiz e5d3
|
||||
more_vert e5d4
|
||||
motorcycle e91b
|
||||
mouse e323
|
||||
move_to_inbox e168
|
||||
movie e02c
|
||||
movie_creation e404
|
||||
movie_filter e43a
|
||||
multiline_chart e6df
|
||||
music_note e405
|
||||
music_video e063
|
||||
my_location e55c
|
||||
nature e406
|
||||
nature_people e407
|
||||
navigate_before e408
|
||||
navigate_next e409
|
||||
navigation e55d
|
||||
near_me e569
|
||||
network_cell e1b9
|
||||
network_check e640
|
||||
network_locked e61a
|
||||
network_wifi e1ba
|
||||
new_releases e031
|
||||
next_week e16a
|
||||
nfc e1bb
|
||||
no_encryption e641
|
||||
no_sim e0cc
|
||||
not_interested e033
|
||||
note e06f
|
||||
note_add e89c
|
||||
notifications e7f4
|
||||
notifications_active e7f7
|
||||
notifications_none e7f5
|
||||
notifications_off e7f6
|
||||
notifications_paused e7f8
|
||||
offline_pin e90a
|
||||
ondemand_video e63a
|
||||
opacity e91c
|
||||
open_in_browser e89d
|
||||
open_in_new e89e
|
||||
open_with e89f
|
||||
pages e7f9
|
||||
pageview e8a0
|
||||
palette e40a
|
||||
pan_tool e925
|
||||
panorama e40b
|
||||
panorama_fish_eye e40c
|
||||
panorama_horizontal e40d
|
||||
panorama_vertical e40e
|
||||
panorama_wide_angle e40f
|
||||
party_mode e7fa
|
||||
pause e034
|
||||
pause_circle_filled e035
|
||||
pause_circle_outline e036
|
||||
payment e8a1
|
||||
people e7fb
|
||||
people_outline e7fc
|
||||
perm_camera_mic e8a2
|
||||
perm_contact_calendar e8a3
|
||||
perm_data_setting e8a4
|
||||
perm_device_information e8a5
|
||||
perm_identity e8a6
|
||||
perm_media e8a7
|
||||
perm_phone_msg e8a8
|
||||
perm_scan_wifi e8a9
|
||||
person e7fd
|
||||
person_add e7fe
|
||||
person_outline e7ff
|
||||
person_pin e55a
|
||||
person_pin_circle e56a
|
||||
personal_video e63b
|
||||
pets e91d
|
||||
phone e0cd
|
||||
phone_android e324
|
||||
phone_bluetooth_speaker e61b
|
||||
phone_forwarded e61c
|
||||
phone_in_talk e61d
|
||||
phone_iphone e325
|
||||
phone_locked e61e
|
||||
phone_missed e61f
|
||||
phone_paused e620
|
||||
phonelink e326
|
||||
phonelink_erase e0db
|
||||
phonelink_lock e0dc
|
||||
phonelink_off e327
|
||||
phonelink_ring e0dd
|
||||
phonelink_setup e0de
|
||||
photo e410
|
||||
photo_album e411
|
||||
photo_camera e412
|
||||
photo_filter e43b
|
||||
photo_library e413
|
||||
photo_size_select_actual e432
|
||||
photo_size_select_large e433
|
||||
photo_size_select_small e434
|
||||
picture_as_pdf e415
|
||||
picture_in_picture e8aa
|
||||
picture_in_picture_alt e911
|
||||
pie_chart e6c4
|
||||
pie_chart_outlined e6c5
|
||||
pin_drop e55e
|
||||
place e55f
|
||||
play_arrow e037
|
||||
play_circle_filled e038
|
||||
play_circle_outline e039
|
||||
play_for_work e906
|
||||
playlist_add e03b
|
||||
playlist_add_check e065
|
||||
playlist_play e05f
|
||||
plus_one e800
|
||||
poll e801
|
||||
polymer e8ab
|
||||
pool eb48
|
||||
portable_wifi_off e0ce
|
||||
portrait e416
|
||||
power e63c
|
||||
power_input e336
|
||||
power_settings_new e8ac
|
||||
pregnant_woman e91e
|
||||
present_to_all e0df
|
||||
print e8ad
|
||||
priority_high e645
|
||||
public e80b
|
||||
publish e255
|
||||
query_builder e8ae
|
||||
question_answer e8af
|
||||
queue e03c
|
||||
queue_music e03d
|
||||
queue_play_next e066
|
||||
radio e03e
|
||||
radio_button_checked e837
|
||||
radio_button_unchecked e836
|
||||
rate_review e560
|
||||
receipt e8b0
|
||||
recent_actors e03f
|
||||
record_voice_over e91f
|
||||
redeem e8b1
|
||||
redo e15a
|
||||
refresh e5d5
|
||||
remove e15b
|
||||
remove_circle e15c
|
||||
remove_circle_outline e15d
|
||||
remove_from_queue e067
|
||||
remove_red_eye e417
|
||||
remove_shopping_cart e928
|
||||
reorder e8fe
|
||||
repeat e040
|
||||
repeat_one e041
|
||||
replay e042
|
||||
replay_10 e059
|
||||
replay_30 e05a
|
||||
replay_5 e05b
|
||||
reply e15e
|
||||
reply_all e15f
|
||||
report e160
|
||||
report_problem e8b2
|
||||
restaurant e56c
|
||||
restaurant_menu e561
|
||||
restore e8b3
|
||||
restore_page e929
|
||||
ring_volume e0d1
|
||||
room e8b4
|
||||
room_service eb49
|
||||
rotate_90_degrees_ccw e418
|
||||
rotate_left e419
|
||||
rotate_right e41a
|
||||
rounded_corner e920
|
||||
router e328
|
||||
rowing e921
|
||||
rss_feed e0e5
|
||||
rv_hookup e642
|
||||
satellite e562
|
||||
save e161
|
||||
scanner e329
|
||||
schedule e8b5
|
||||
school e80c
|
||||
screen_lock_landscape e1be
|
||||
screen_lock_portrait e1bf
|
||||
screen_lock_rotation e1c0
|
||||
screen_rotation e1c1
|
||||
screen_share e0e2
|
||||
sd_card e623
|
||||
sd_storage e1c2
|
||||
search e8b6
|
||||
security e32a
|
||||
select_all e162
|
||||
send e163
|
||||
sentiment_dissatisfied e811
|
||||
sentiment_neutral e812
|
||||
sentiment_satisfied e813
|
||||
sentiment_very_dissatisfied e814
|
||||
sentiment_very_satisfied e815
|
||||
settings e8b8
|
||||
settings_applications e8b9
|
||||
settings_backup_restore e8ba
|
||||
settings_bluetooth e8bb
|
||||
settings_brightness e8bd
|
||||
settings_cell e8bc
|
||||
settings_ethernet e8be
|
||||
settings_input_antenna e8bf
|
||||
settings_input_component e8c0
|
||||
settings_input_composite e8c1
|
||||
settings_input_hdmi e8c2
|
||||
settings_input_svideo e8c3
|
||||
settings_overscan e8c4
|
||||
settings_phone e8c5
|
||||
settings_power e8c6
|
||||
settings_remote e8c7
|
||||
settings_system_daydream e1c3
|
||||
settings_voice e8c8
|
||||
share e80d
|
||||
shop e8c9
|
||||
shop_two e8ca
|
||||
shopping_basket e8cb
|
||||
shopping_cart e8cc
|
||||
short_text e261
|
||||
show_chart e6e1
|
||||
shuffle e043
|
||||
signal_cellular_4_bar e1c8
|
||||
signal_cellular_connected_no_internet_4_bar e1cd
|
||||
signal_cellular_no_sim e1ce
|
||||
signal_cellular_null e1cf
|
||||
signal_cellular_off e1d0
|
||||
signal_wifi_4_bar e1d8
|
||||
signal_wifi_4_bar_lock e1d9
|
||||
signal_wifi_off e1da
|
||||
sim_card e32b
|
||||
sim_card_alert e624
|
||||
skip_next e044
|
||||
skip_previous e045
|
||||
slideshow e41b
|
||||
slow_motion_video e068
|
||||
smartphone e32c
|
||||
smoke_free eb4a
|
||||
smoking_rooms eb4b
|
||||
sms e625
|
||||
sms_failed e626
|
||||
snooze e046
|
||||
sort e164
|
||||
sort_by_alpha e053
|
||||
spa eb4c
|
||||
space_bar e256
|
||||
speaker e32d
|
||||
speaker_group e32e
|
||||
speaker_notes e8cd
|
||||
speaker_notes_off e92a
|
||||
speaker_phone e0d2
|
||||
spellcheck e8ce
|
||||
star e838
|
||||
star_border e83a
|
||||
star_half e839
|
||||
stars e8d0
|
||||
stay_current_landscape e0d3
|
||||
stay_current_portrait e0d4
|
||||
stay_primary_landscape e0d5
|
||||
stay_primary_portrait e0d6
|
||||
stop e047
|
||||
stop_screen_share e0e3
|
||||
storage e1db
|
||||
store e8d1
|
||||
store_mall_directory e563
|
||||
straighten e41c
|
||||
streetview e56e
|
||||
strikethrough_s e257
|
||||
style e41d
|
||||
subdirectory_arrow_left e5d9
|
||||
subdirectory_arrow_right e5da
|
||||
subject e8d2
|
||||
subscriptions e064
|
||||
subtitles e048
|
||||
subway e56f
|
||||
supervisor_account e8d3
|
||||
surround_sound e049
|
||||
swap_calls e0d7
|
||||
swap_horiz e8d4
|
||||
swap_vert e8d5
|
||||
swap_vertical_circle e8d6
|
||||
switch_camera e41e
|
||||
switch_video e41f
|
||||
sync e627
|
||||
sync_disabled e628
|
||||
sync_problem e629
|
||||
system_update e62a
|
||||
system_update_alt e8d7
|
||||
tab e8d8
|
||||
tab_unselected e8d9
|
||||
tablet e32f
|
||||
tablet_android e330
|
||||
tablet_mac e331
|
||||
tag_faces e420
|
||||
tap_and_play e62b
|
||||
terrain e564
|
||||
text_fields e262
|
||||
text_format e165
|
||||
textsms e0d8
|
||||
texture e421
|
||||
theaters e8da
|
||||
thumb_down e8db
|
||||
thumb_up e8dc
|
||||
thumbs_up_down e8dd
|
||||
time_to_leave e62c
|
||||
timelapse e422
|
||||
timeline e922
|
||||
timer e425
|
||||
timer_10 e423
|
||||
timer_3 e424
|
||||
timer_off e426
|
||||
title e264
|
||||
toc e8de
|
||||
today e8df
|
||||
toll e8e0
|
||||
tonality e427
|
||||
touch_app e913
|
||||
toys e332
|
||||
track_changes e8e1
|
||||
traffic e565
|
||||
train e570
|
||||
tram e571
|
||||
transfer_within_a_station e572
|
||||
transform e428
|
||||
translate e8e2
|
||||
trending_down e8e3
|
||||
trending_flat e8e4
|
||||
trending_up e8e5
|
||||
tune e429
|
||||
turned_in e8e6
|
||||
turned_in_not e8e7
|
||||
tv e333
|
||||
unarchive e169
|
||||
undo e166
|
||||
unfold_less e5d6
|
||||
unfold_more e5d7
|
||||
update e923
|
||||
usb e1e0
|
||||
verified_user e8e8
|
||||
vertical_align_bottom e258
|
||||
vertical_align_center e259
|
||||
vertical_align_top e25a
|
||||
vibration e62d
|
||||
video_call e070
|
||||
video_label e071
|
||||
video_library e04a
|
||||
videocam e04b
|
||||
videocam_off e04c
|
||||
videogame_asset e338
|
||||
view_agenda e8e9
|
||||
view_array e8ea
|
||||
view_carousel e8eb
|
||||
view_column e8ec
|
||||
view_comfy e42a
|
||||
view_compact e42b
|
||||
view_day e8ed
|
||||
view_headline e8ee
|
||||
view_list e8ef
|
||||
view_module e8f0
|
||||
view_quilt e8f1
|
||||
view_stream e8f2
|
||||
view_week e8f3
|
||||
vignette e435
|
||||
visibility e8f4
|
||||
visibility_off e8f5
|
||||
voice_chat e62e
|
||||
voicemail e0d9
|
||||
volume_down e04d
|
||||
volume_mute e04e
|
||||
volume_off e04f
|
||||
volume_up e050
|
||||
vpn_key e0da
|
||||
vpn_lock e62f
|
||||
wallpaper e1bc
|
||||
warning e002
|
||||
watch e334
|
||||
watch_later e924
|
||||
wb_auto e42c
|
||||
wb_cloudy e42d
|
||||
wb_incandescent e42e
|
||||
wb_iridescent e436
|
||||
wb_sunny e430
|
||||
wc e63d
|
||||
web e051
|
||||
web_asset e069
|
||||
weekend e16b
|
||||
whatshot e80e
|
||||
widgets e1bd
|
||||
wifi e63e
|
||||
wifi_lock e1e1
|
||||
wifi_tethering e1e2
|
||||
work e8f9
|
||||
wrap_text e25b
|
||||
youtube_searched_for e8fa
|
||||
zoom_in e8ff
|
||||
zoom_out e900
|
||||
zoom_out_map e56b
|
||||
@@ -0,0 +1,36 @@
|
||||
@font-face {
|
||||
font-family: 'Material Icons';
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
src: url(MaterialIcons-Regular.eot); /* For IE6-8 */
|
||||
src: local('Material Icons'),
|
||||
local('MaterialIcons-Regular'),
|
||||
url(MaterialIcons-Regular.woff2) format('woff2'),
|
||||
url(MaterialIcons-Regular.woff) format('woff'),
|
||||
url(MaterialIcons-Regular.ttf) format('truetype');
|
||||
}
|
||||
|
||||
.material-icons {
|
||||
font-family: 'Material Icons';
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
font-size: 24px; /* Preferred icon size */
|
||||
display: inline-block;
|
||||
line-height: 1;
|
||||
text-transform: none;
|
||||
letter-spacing: normal;
|
||||
word-wrap: normal;
|
||||
white-space: nowrap;
|
||||
direction: ltr;
|
||||
|
||||
/* Support for all WebKit browsers. */
|
||||
-webkit-font-smoothing: antialiased;
|
||||
/* Support for Safari and Chrome. */
|
||||
text-rendering: optimizeLegibility;
|
||||
|
||||
/* Support for Firefox. */
|
||||
-moz-osx-font-smoothing: grayscale;
|
||||
|
||||
/* Support for IE. */
|
||||
font-feature-settings: 'liga';
|
||||
}
|
||||
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
Binary file not shown.
BIN
Binary file not shown.
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
Binary file not shown.
Executable
+93
@@ -0,0 +1,93 @@
|
||||
Copyright (c) 2016 The Muli Project Authors (contact@sansoxygen.com)
|
||||
|
||||
This Font Software is licensed under the SIL Open Font License, Version 1.1.
|
||||
This license is copied below, and is also available with a FAQ at:
|
||||
http://scripts.sil.org/OFL
|
||||
|
||||
|
||||
-----------------------------------------------------------
|
||||
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
|
||||
-----------------------------------------------------------
|
||||
|
||||
PREAMBLE
|
||||
The goals of the Open Font License (OFL) are to stimulate worldwide
|
||||
development of collaborative font projects, to support the font creation
|
||||
efforts of academic and linguistic communities, and to provide a free and
|
||||
open framework in which fonts may be shared and improved in partnership
|
||||
with others.
|
||||
|
||||
The OFL allows the licensed fonts to be used, studied, modified and
|
||||
redistributed freely as long as they are not sold by themselves. The
|
||||
fonts, including any derivative works, can be bundled, embedded,
|
||||
redistributed and/or sold with any software provided that any reserved
|
||||
names are not used by derivative works. The fonts and derivatives,
|
||||
however, cannot be released under any other type of license. The
|
||||
requirement for fonts to remain under this license does not apply
|
||||
to any document created using the fonts or their derivatives.
|
||||
|
||||
DEFINITIONS
|
||||
"Font Software" refers to the set of files released by the Copyright
|
||||
Holder(s) under this license and clearly marked as such. This may
|
||||
include source files, build scripts and documentation.
|
||||
|
||||
"Reserved Font Name" refers to any names specified as such after the
|
||||
copyright statement(s).
|
||||
|
||||
"Original Version" refers to the collection of Font Software components as
|
||||
distributed by the Copyright Holder(s).
|
||||
|
||||
"Modified Version" refers to any derivative made by adding to, deleting,
|
||||
or substituting -- in part or in whole -- any of the components of the
|
||||
Original Version, by changing formats or by porting the Font Software to a
|
||||
new environment.
|
||||
|
||||
"Author" refers to any designer, engineer, programmer, technical
|
||||
writer or other person who contributed to the Font Software.
|
||||
|
||||
PERMISSION & CONDITIONS
|
||||
Permission is hereby granted, free of charge, to any person obtaining
|
||||
a copy of the Font Software, to use, study, copy, merge, embed, modify,
|
||||
redistribute, and sell modified and unmodified copies of the Font
|
||||
Software, subject to the following conditions:
|
||||
|
||||
1) Neither the Font Software nor any of its individual components,
|
||||
in Original or Modified Versions, may be sold by itself.
|
||||
|
||||
2) Original or Modified Versions of the Font Software may be bundled,
|
||||
redistributed and/or sold with any software, provided that each copy
|
||||
contains the above copyright notice and this license. These can be
|
||||
included either as stand-alone text files, human-readable headers or
|
||||
in the appropriate machine-readable metadata fields within text or
|
||||
binary files as long as those fields can be easily viewed by the user.
|
||||
|
||||
3) No Modified Version of the Font Software may use the Reserved Font
|
||||
Name(s) unless explicit written permission is granted by the corresponding
|
||||
Copyright Holder. This restriction only applies to the primary font name as
|
||||
presented to the users.
|
||||
|
||||
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
|
||||
Software shall not be used to promote, endorse or advertise any
|
||||
Modified Version, except to acknowledge the contribution(s) of the
|
||||
Copyright Holder(s) and the Author(s) or with their explicit written
|
||||
permission.
|
||||
|
||||
5) The Font Software, modified or unmodified, in part or in whole,
|
||||
must be distributed entirely under this license, and must not be
|
||||
distributed under any other license. The requirement for fonts to
|
||||
remain under this license does not apply to any document created
|
||||
using the Font Software.
|
||||
|
||||
TERMINATION
|
||||
This license becomes null and void if any of the above conditions are
|
||||
not met.
|
||||
|
||||
DISCLAIMER
|
||||
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
|
||||
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
|
||||
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
|
||||
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
|
||||
OTHER DEALINGS IN THE FONT SOFTWARE.
|
||||
@@ -0,0 +1,63 @@
|
||||
/* vietnamese */
|
||||
@font-face {
|
||||
font-family: 'Muli';
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
src: local('Muli Regular'),
|
||||
local('Muli-Regular'),
|
||||
url(Muli-Regular.ttf) format('truetype');
|
||||
unicode-range: U+0102-0103, U+1EA0-1EF9, U+20AB;
|
||||
}
|
||||
/* latin-ext */
|
||||
@font-face {
|
||||
font-family: 'Muli';
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
src: local('Muli Regular'),
|
||||
local('Muli-Regular'),
|
||||
url(Muli-Regular.ttf) format('truetype');
|
||||
unicode-range: U+0100-024F, U+1E00-1EFF, U+20A0-20AB, U+20AD-20CF, U+2C60-2C7F, U+A720-A7FF;
|
||||
}
|
||||
/* latin */
|
||||
@font-face {
|
||||
font-family: 'Muli';
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
src: local('Muli Regular'),
|
||||
local('Muli-Regular'),
|
||||
url(Muli-Regular.ttf) format('truetype');
|
||||
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215;
|
||||
}
|
||||
|
||||
/* vietnamese */
|
||||
@font-face {
|
||||
font-family: 'Muli';
|
||||
font-style: normal;
|
||||
font-weight: 100;
|
||||
src: local('Muli Light'),
|
||||
local('Muli-Light'),
|
||||
url(Muli-Light.ttf) format('truetype');
|
||||
unicode-range: U+0102-0103, U+1EA0-1EF9, U+20AB;
|
||||
}
|
||||
|
||||
/* latin-ext */
|
||||
@font-face {
|
||||
font-family: 'Muli';
|
||||
font-style: normal;
|
||||
font-weight: 100;
|
||||
src: local('Muli Light'),
|
||||
local('Muli-Light'),
|
||||
url(Muli-Light.ttf) format('truetype');
|
||||
unicode-range: U+0100-024F, U+1E00-1EFF, U+20A0-20AB, U+20AD-20CF, U+2C60-2C7F, U+A720-A7FF;
|
||||
}
|
||||
|
||||
/* latin */
|
||||
@font-face {
|
||||
font-family: 'Muli';
|
||||
font-style: normal;
|
||||
font-weight: 100;
|
||||
src: local('Muli Light'),
|
||||
local('Muli-Light'),
|
||||
url(Muli-Light.ttf) format('truetype');
|
||||
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215;
|
||||
}
|
||||
+4
-15
@@ -15,18 +15,7 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import { ContextMenuService } from './context-menu.service';
|
||||
|
||||
describe('ContextMenuService', () => {
|
||||
|
||||
let service;
|
||||
|
||||
beforeEach(() => {
|
||||
service = new ContextMenuService();
|
||||
});
|
||||
|
||||
it('should setup default show subject', () => {
|
||||
expect(service.show).toBeDefined();
|
||||
});
|
||||
|
||||
});
|
||||
export const environment = {
|
||||
production: false,
|
||||
e2e: true
|
||||
};
|
||||
@@ -16,5 +16,6 @@
|
||||
*/
|
||||
|
||||
export const environment = {
|
||||
production: true
|
||||
production: true,
|
||||
e2e: false
|
||||
};
|
||||
|
||||
@@ -21,5 +21,6 @@
|
||||
// The list of which env maps to which file can be found in `.angular-cli.json`.
|
||||
|
||||
export const environment = {
|
||||
production: false
|
||||
production: false,
|
||||
e2e: false
|
||||
};
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 9.6 KiB |
@@ -7,8 +7,6 @@
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<link rel="icon" type="image/png" href="favicon-96x96.png" sizes="96x96">
|
||||
<link href="https://fonts.googleapis.com/css?family=Muli" rel="stylesheet" media="none" onload="if(media!='all')media='all'">
|
||||
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet" media="none" onload="if(media!='all')media='all'">
|
||||
|
||||
<style>
|
||||
body, html {
|
||||
|
||||
Vendored
BIN
Binary file not shown.
+9
-5
@@ -34,11 +34,13 @@ A few other pages of information are also available:
|
||||
version of ADF.
|
||||
- The [Roadmap](roadmap.md)
|
||||
contains a preview of features we hope to release in future versions of ADF.
|
||||
- The [License info](license-info/license-info-v3.0.0.md) section lists the third-party
|
||||
- The [License info](license-info/README.md) section lists the third-party libraries used by ADF along with links to their Open Source licenses.
|
||||
- The [Vulnerability](vulnerability/README.md) section lists the third-party
|
||||
libraries known vulnerability.
|
||||
libraries used by ADF along with links to their Open Source licenses.
|
||||
- The [Breaking changes](breaking-changes/breaking-change-2.6.0-3.0.0.md) section lists
|
||||
all breaking changes between major versions, such as removal of deprecated items.
|
||||
- The [Upgrade guide](upgrade-guide/upgrade26-30.md) explains how to upgrade your project from an earlier version of ADF to the current version.
|
||||
- The [Upgrade guide](upgrade-guide/README.md) explains how to upgrade your project from an earlier version of ADF to the current version.
|
||||
|
||||
## Contents
|
||||
|
||||
@@ -57,6 +59,7 @@ A few other pages of information are also available:
|
||||
- [Angular Material Design](user-guide/angular-material-design.md)
|
||||
- [Form Extensibility and Customisation](user-guide/extensibility.md)
|
||||
- [Internationalization in ADF](user-guide/internationalization.md)
|
||||
- [Localization in ADF](user-guide/localization.md)
|
||||
- [Theming](user-guide/theming.md)
|
||||
- [Transclusion](user-guide/transclusion.md)
|
||||
- [Typography](user-guide/typography.md)
|
||||
@@ -159,8 +162,9 @@ for more information about installing and using the source code.
|
||||
| [File Size pipe](core/pipes/file-size.pipe.md) | Converts a number of bytes to the equivalent in KB, MB, etc. | [Source](../lib/core/pipes/file-size.pipe.ts) |
|
||||
| [Format Space pipe](core/pipes/format-space.pipe.md) | Replaces all the white space in a string with a supplied character. | [Source](../lib/core/pipes/format-space.pipe.ts) |
|
||||
| [Full name pipe](core/pipes/full-name.pipe.md) | Joins the first and last name properties from a UserProcessModel object into a single string. | [Source](../lib/core/pipes/full-name.pipe.ts) |
|
||||
| [Localized Date pipe](core/pipes/localized-date.pipe.md) | Converts a date to a given format and locale. | [Source](../lib/core/pipes/localized-date.pipe.ts) |
|
||||
| [Mime Type Icon pipe](core/pipes/mime-type-icon.pipe.md) | Retrieves an icon to represent a MIME type. | [Source](../lib/core/pipes/mime-type-icon.pipe.ts) |
|
||||
| [](core/pipes/multi-value.pipe.md) | Takes an array of strings and turns it into one string where items are separated by a separator. The default separator applied to the list is ', ', however, you can set your own separator in the params of the pipe. | [Source](../lib/core/pipes/multi-value.pipe.ts) |
|
||||
| [Multi Value Pipe](core/pipes/multi-value.pipe.md) | Takes an array of strings and turns it into one string where items are separated by a separator. The default separator applied to the list is the comma , however, you can set your own separator in the params of the pipe. | [Source](../lib/core/pipes/multi-value.pipe.ts) |
|
||||
| [Node Name Tooltip pipe](core/pipes/node-name-tooltip.pipe.md) | Formats the tooltip for a Node. | [Source](../lib/core/pipes/node-name-tooltip.pipe.ts) |
|
||||
| [Text Highlight pipe](core/pipes/text-highlight.pipe.md) | Adds highlighting to words or sections of text that match a search string. | [Source](../lib/core/pipes/text-highlight.pipe.ts) |
|
||||
| [Time Ago pipe](core/pipes/time-ago.pipe.md) | Converts a recent past date into a number of days ago. | [Source](../lib/core/pipes/time-ago.pipe.ts) |
|
||||
@@ -253,7 +257,7 @@ for more information about installing and using the source code.
|
||||
| [File Uploading Dialog Component](content-services/components/file-uploading-dialog.component.md) | Shows a dialog listing all the files uploaded with the Upload Button or Drag Area components. | [Source](../lib/content-services/upload/components/file-uploading-dialog.component.ts) |
|
||||
| [Like component](content-services/components/like.component.md) | Allows a user to add "likes" to an item. | [Source](../lib/content-services/social/like.component.ts) |
|
||||
| [Permission List Component](content-services/components/permission-list.component.md) | Shows node permissions as a table. | [Source](../lib/content-services/permission-manager/components/permission-list/permission-list.component.ts) |
|
||||
| [Rating component](content-services/components/rating.component.md) | Allows a user to add ratings to an item. | [Source](../lib/content-services/social/rating.component.ts) |
|
||||
| [Rating component](content-services/components/rating.component.md) | Allows a user to add and remove rating to an item. | [Source](../lib/content-services/social/rating.component.ts) |
|
||||
| [Search check list component](content-services/components/search-check-list.component.md) | Implements a checklist widget for the Search Filter component. | [Source](../lib/content-services/search/components/search-check-list/search-check-list.component.ts) |
|
||||
| [Search Chip List Component](content-services/components/search-chip-list.component.md) | Displays search criteria as a set of "chips". | [Source](../lib/content-services/search/components/search-chip-list/search-chip-list.component.ts) |
|
||||
| [Search control component](content-services/components/search-control.component.md) | Displays a input text that shows find-as-you-type suggestions. | [Source](../lib/content-services/search/components/search-control.component.ts) |
|
||||
@@ -412,7 +416,7 @@ for more information about installing and using the source code.
|
||||
| [Edit Task Filter Cloud component](process-services-cloud/components/edit-task-filter-cloud.component.md)  | Edits task filter details. | [Source](../lib/process-services-cloud/src/lib/task/task-filters/components/edit-task-filter-cloud.component.ts) |
|
||||
| [Form cloud custom outcomes component](process-services-cloud/components/form-cloud-custom-outcome.component.md) | Supplies custom outcome buttons to be included in Form cloud component. | [Source](../lib/process-services-cloud/src/lib/form/components/form-cloud-custom-outcomes.component.ts) |
|
||||
| [Form cloud component](process-services-cloud/components/form-cloud.component.md) | Shows a form from Process Services. | [Source](../lib/process-services-cloud/src/lib/form/components/form-cloud.component.ts) |
|
||||
| [Form definition selector Cloud componet](process-services-cloud/components/form-definition-selector-cloud.component.md) | Allows one form to be selected. | [Source](../lib/process-services-cloud/src/lib/form/components/form-definition-selector-cloud.component.ts) |
|
||||
| [Form Definition Selector Cloud](process-services-cloud/components/form-definition-selector-cloud.component.md) | Allows one form to be selected. | [Source](../lib/process-services-cloud/src/lib/form/components/form-definition-selector-cloud.component.ts) |
|
||||
| [Group Cloud component](process-services-cloud/components/group-cloud.component.md)  | Searches Groups. | [Source](../lib/process-services-cloud/src/lib/group/components/group-cloud.component.ts) |
|
||||
| [People Cloud Component](process-services-cloud/components/people-cloud.component.md)  | Allows one or more users to be selected (with auto-suggestion) based on the input parameters. | [Source](../lib/process-services-cloud/src/lib/task/start-task/components/people-cloud/people-cloud.component.ts) |
|
||||
| [Process Filters Cloud Component](process-services-cloud/components/process-filters-cloud.component.md)  | Lists all available process filters and allows to select a filter. | [Source](../lib/process-services-cloud/src/lib/process/process-filters/components/process-filters-cloud.component.ts) |
|
||||
|
||||
@@ -61,4 +61,5 @@
|
||||
- compatibility.md: 'Version compatibility'
|
||||
- release-notes: 'Release notes'
|
||||
- upgrade-guide: 'Upgrade Guide'
|
||||
- vulnerability: 'Vulnerability'
|
||||
- license-info: 'License info'
|
||||
|
||||
@@ -21,6 +21,7 @@ You can find further information about released versions of ADF in the
|
||||
|
||||
| ADF version | Content Services | Process Services |
|
||||
| --- | --- | --- |
|
||||
| [3.3.0](versionIndex.md#v330) | **Full test:** v6.1.0 <br/> **Smoke test:** v5.2.4 | **Full test:** v7.1.0 M2 (latest CI pipeline build), v1.9.0 <br/>**Smoke test:** v1.8.1 |
|
||||
| [3.2.0](versionIndex.md#v320) - [3.2.1](versionIndex.md#v321) | **Full test:** v6.1.0 <br/> **Smoke test:** v5.2.4 | **Full test:** v7.1.0 (latest CI pipeline build), v1.9.0 <br/>**Smoke test:** v1.8.1 |
|
||||
| [3.1.0](versionIndex.md#v310) | **Full test:** v6.1.0 RC7 <br/> **Smoke test:** v5.2.4 | **Full test:** v2.0.0 (latest CI pipeline build), v1.9.0 <br/>**Smoke test:** v1.8.1 |
|
||||
| [3.0.0](versionIndex.md#v300) | **Full test:** v6.1.0 RC7 <br/> **Smoke test:** v5.2.4 | **Full test:** v2.0.0 (latest CI pipeline build), v1.9.0 <br/>**Smoke test:** v1.8.1 |
|
||||
|
||||
@@ -8,6 +8,7 @@ Last reviewed: 2019-01-14
|
||||
# [Rating component](../../../lib/content-services/social/rating.component.ts "Defined in rating.component.ts")
|
||||
|
||||
Allows a user to add and remove rating to an item.
|
||||
|
||||
It displays the average rating and the number of ratings. If the user has not rated the item the average rating stars color is grey.
|
||||
|
||||

|
||||
@@ -39,7 +40,7 @@ If the average is decimal number it will be rounded.
|
||||
|
||||
| Name | Type | Description |
|
||||
| ---- | ---- | ----------- |
|
||||
| changeVote | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<Object>` | Average rating is emitted when the "vote" gets changed. |
|
||||
| changeVote | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<Object>` | Emitted when the "vote" gets changed. |
|
||||
|
||||
## See also
|
||||
|
||||
|
||||
@@ -1,83 +0,0 @@
|
||||
---
|
||||
Title: Icon Component
|
||||
Added: v3.0.0
|
||||
Status: Active
|
||||
Last reviewed: 2019-02-08
|
||||
---
|
||||
|
||||
# [Icon Component](../../../lib/core/icon/icon.component.ts "Defined in icon.component.ts")
|
||||
|
||||
Provides a universal way of rendering registered and named icons.
|
||||
|
||||
## Basic usage
|
||||
|
||||
```html
|
||||
<!-- Font ligature -->
|
||||
<adf-icon value="alert"></adf-icon>
|
||||
|
||||
<!-- ADF Thumbnail Service -->
|
||||
<adf-icon value="image/png"></adf-icon>
|
||||
|
||||
<!-- Custom icon from MatIconRegistry -->
|
||||
<adf-icon value="my-company:my-icon"></adf-icon>
|
||||
```
|
||||
|
||||
## Class members
|
||||
|
||||
### Properties
|
||||
|
||||
| Name | Type | Default value | Description |
|
||||
| ---- | ---- | ------------- | ----------- |
|
||||
| color | `ThemePalette` | | 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
|
||||
|
||||
You can register custom SVG files as named icons in the format `[namespace]:[name]`.
|
||||
|
||||
The example below shows how to register a new icon named `adf:move_file`
|
||||
that points to an external file within the `assets` folder:
|
||||
|
||||
```ts
|
||||
import { Component, OnInit } from '@angular/core';
|
||||
import { MatIconRegistry } from '@angular/material';
|
||||
import { DomSanitizer } from '@angular/platform-browser';
|
||||
|
||||
@Component({...})
|
||||
export class AppComponent implements OnInit {
|
||||
|
||||
constructor(
|
||||
private matIconRegistry: MatIconRegistry,
|
||||
private sanitizer: DomSanitizer
|
||||
) {}
|
||||
|
||||
ngOnInit() {
|
||||
this.matIconRegistry.addSvgIconInNamespace(
|
||||
'adf',
|
||||
'move_file',
|
||||
this.sanitizer.bypassSecurityTrustResourceUrl(
|
||||
'./assets/images/adf-move-file-24px.svg'
|
||||
)
|
||||
);
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
In the HTML, you can now use the icon as shown below:
|
||||
|
||||
```html
|
||||
<adf-icon value="adf:move_file"></adf-icon>
|
||||
```
|
||||
|
||||
### Thumbnail Service
|
||||
|
||||
You can also reference the icons registered with the [Thumbnail Service](../services/thumbnail.service.md)
|
||||
using the `adf:` namespace.
|
||||
|
||||
```html
|
||||
<adf-icon value="adf:image/gif"></adf-icon>
|
||||
```
|
||||
|
||||
## See also
|
||||
|
||||
- [Thumbnail service](../services/thumbnail.service.md)
|
||||
@@ -28,8 +28,9 @@ Displays the Start [`Form`](../../../lib/process-services/task-list/models/form.
|
||||
| ---- | ---- | ------------- | ----------- |
|
||||
| data | [`FormValues`](../../../lib/core/form/components/widgets/core/form-values.ts) | | Custom form values map to be used with the rendered form. |
|
||||
| disableCompleteButton | `boolean` | false | If true then the `Complete` outcome button is shown but it will be disabled. |
|
||||
| disableSaveButton | `boolean` | false | If true then the `Save` outcome button is shown but will be disabled. |
|
||||
| disableStartProcessButton | `boolean` | false | If true then the `Start Process` outcome button is shown but it will be disabled. |
|
||||
| fieldValidators | [`FormFieldValidator`](../../../lib/core/form/components/widgets/core/form-field-validator.ts)`[]` | \[] | Contains a list of form field validator instances. |
|
||||
| fieldValidators | [`FormFieldValidator`](../../../lib/core/form/components/widgets/core/form-field-validator.ts)`[]` | | Contains a list of form field validator instances. |
|
||||
| form | [`FormModel`](../../../lib/core/form/components/widgets/core/form.model.ts) | | Underlying [form model](../../../lib/core/form/components/widgets/core/form.model.ts) instance. |
|
||||
| formId | `number` | | The id of the form definition to load and display with custom values. |
|
||||
| formName | `string` | | Name of the form definition to load and display with custom values. |
|
||||
|
||||
@@ -1,6 +1,12 @@
|
||||
---
|
||||
Title: Localized Date pipe
|
||||
Added: v3.3.0
|
||||
Status: Active
|
||||
---
|
||||
|
||||
# [Localized Date pipe](../../../lib/core/pipes/localized-date.pipe.ts "Defined in localized-date.pipe.ts")
|
||||
|
||||
Converts a date to an given format and locale.
|
||||
Converts a date to a given format and locale.
|
||||
|
||||
## Basic Usage
|
||||
|
||||
@@ -25,4 +31,40 @@ Converts a date to an given format and locale.
|
||||
|
||||
The pipe takes a date and formats it and localizes it so the date is displayed in the proper format for the region. It uses the [Angular Date Pipe](https://angular.io/api/common/DatePipe#custom-format-options) so all the pre-defined and custom formats can be used.
|
||||
|
||||
When localizing a date, you will need to add the specific locale file for your region in order to use it. Read more about internationalization [here](https://angular.io/guide/i18n#i18n-pipes).
|
||||
To localize the dates in your application, you will need to add the specific locale file for your region in order to use it. Read more about internationalization [here](https://angular.io/guide/i18n#i18n-pipes).
|
||||
|
||||
For example, if you want add the japanese date localization in your ADF app you can add in your ```app.module.ts```:
|
||||
|
||||
```typescript
|
||||
import { AppConfigService, TRANSLATION_PROVIDER, DebugAppConfigService, CoreModule, CoreAutomationService } from '@alfresco/adf-core';
|
||||
|
||||
.....
|
||||
.....
|
||||
|
||||
import { registerLocaleData } from '@angular/common';
|
||||
import localeJa from '@angular/common/locales/ja';
|
||||
|
||||
registerLocaleData(localeJa);
|
||||
|
||||
|
||||
```
|
||||
|
||||
### Default values
|
||||
|
||||
You can overwrite the default values of this pipe by adding these properties to your ```app.config.json```:
|
||||
|
||||
```json
|
||||
"dateValues": {
|
||||
"defaultDateFormat": "mediumDate",
|
||||
"defaultDateTimeFormat": "MMM d, y, H:mm",
|
||||
"defaultLocale": "en-US"
|
||||
}
|
||||
```
|
||||
|
||||
| Name | Type | Description |
|
||||
| ---- | ---- | ----------- |
|
||||
| defaultDateFormat | string | The format to apply to date values |
|
||||
| defaultDateTimeFormat | string | The format to apply to date-time values |
|
||||
| defaultLocale | string | The locale id to apply |
|
||||
|
||||
This configuration overwrites the values in the localized date pipe as well as other components to have more consistency across your app. However, you can still overwrite these values any time by using the pipe in your code.
|
||||
|
||||
@@ -1,6 +1,12 @@
|
||||
---
|
||||
Title: Multi Value Pipe
|
||||
Added: v3.2.0
|
||||
Status: Active
|
||||
---
|
||||
|
||||
# [Multi Value Pipe](../../../lib/core/pipes/multi-value.pipe.ts "Defined in multi-value.pipe.ts")
|
||||
|
||||
Takes an array of strings and turns it into one string where items are separated by a separator. The default separator applied to the list is `', '`, however, you can set your own separator in the params of the pipe.
|
||||
Takes an array of strings and turns it into one string where items are separated by a separator. The default separator applied to the list is the comma ```, ``` however, you can set your own separator in the params of the pipe.
|
||||
|
||||
## Basic Usage
|
||||
|
||||
|
||||
@@ -17,6 +17,13 @@ Decodes a JSON Web Token (JWT) to a JavaScript object.
|
||||
Decodes a JSON web token into a JS object.
|
||||
- _token:_ `any` - Token in encoded form
|
||||
- **Returns** `Object` - Decoded token data object
|
||||
- **getValueFromLocalAccessToken**(key: `string`)<br/>
|
||||
Gets a named value from the user access token.
|
||||
- _key:_ `string` - Key name of the field to retrieve
|
||||
- **getValueFromToken**(accessToken: `string`, key: `string`)<br/>
|
||||
Gets a named value from the user access token.
|
||||
- _accessToken:_ `string` -
|
||||
- _key:_ `string` -
|
||||
|
||||
## Details
|
||||
|
||||
|
||||
@@ -18,21 +18,15 @@ Finds shared links to Content Services items.
|
||||
- _nodeId:_ `string` - ID of the node to link to
|
||||
- _options:_ `any` - Options supported by JS-API
|
||||
- **Returns** [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`SharedLinkEntry`](https://github.com/Alfresco/alfresco-js-api/blob/development/src/api/content-rest-api/docs/SharedLinkEntry.md)`>` - The shared link just created
|
||||
- **deleteSharedLink**(sharedId: `string`): [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`SharedLinkEntry`](https://github.com/Alfresco/alfresco-js-api/blob/development/src/api/content-rest-api/docs/SharedLinkEntry.md)`>`<br/>
|
||||
- **deleteSharedLink**(sharedId: `string`): [`Observable`](http://reactivex.io/documentation/observable.html)`<any|Error>`<br/>
|
||||
Deletes a shared link.
|
||||
- _sharedId:_ `string` - ID of the link to delete
|
||||
- **Returns** [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`SharedLinkEntry`](https://github.com/Alfresco/alfresco-js-api/blob/development/src/api/content-rest-api/docs/SharedLinkEntry.md)`>` - Null response notifying when the operation is complete
|
||||
- **Returns** [`Observable`](http://reactivex.io/documentation/observable.html)`<any|Error>` - Null response notifying when the operation is complete
|
||||
- **getSharedLinks**(options: `any` = `{}`): [`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 shared links available to the current user.
|
||||
- _options:_ `any` - Options 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 shared links
|
||||
|
||||
### Events
|
||||
|
||||
| Name | Type | Description |
|
||||
| --- | --- | --- |
|
||||
| error | `Subject<{ statusCode: number, message: string }>` | Gets emitted upon errors. |
|
||||
|
||||
## Details
|
||||
|
||||
Content Services allows users to generate URLs that can be shared with
|
||||
|
||||
@@ -7,6 +7,7 @@ Github only: true
|
||||
|
||||
The pages linked below contain the licenses for all third party dependencies of ADF.
|
||||
|
||||
- [ADF v3.3](license-info-v3.3.0.md)
|
||||
- [ADF v3.2](license-info-v3.2.0.md)
|
||||
- [ADF v3.1](license-info-v3.1.0.md)
|
||||
- [ADF v3.0](license-info-v3.0.0.md)
|
||||
|
||||
@@ -0,0 +1,480 @@
|
||||
---
|
||||
Title: License info, Alfresco Angular components 3.3.0
|
||||
---
|
||||
|
||||
# License information for Alfresco Angular components 3.3.0
|
||||
|
||||
This page lists all third party libraries that ADF 3.3.0 depends on.
|
||||
|
||||
## Libraries
|
||||
|
||||
| Name | Version | License |
|
||||
| --- | --- | --- |
|
||||
| [@alfresco/adf-content-services](https://github.com/Alfresco/alfresco-ng2-components) | 3.3.0 | [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0) |
|
||||
| [@alfresco/adf-core](https://github.com/Alfresco/alfresco-ng2-components) | 3.3.0 | [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0) |
|
||||
| [@alfresco/adf-extensions](https://github.com/Alfresco/alfresco-ng2-components) | 3.3.0 | [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0) |
|
||||
| [@alfresco/adf-insights](https://github.com/Alfresco/alfresco-ng2-components) | 3.3.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.3.0 | [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0) |
|
||||
| [@alfresco/adf-process-services](https://github.com/Alfresco/alfresco-ng2-components) | 3.2.1 | [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0) |
|
||||
| [@alfresco/adf-testing](https://github.com/Alfresco/alfresco-ng2-components) | 3.2.1 | [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0) |
|
||||
| [@alfresco/js-api](https://github.com/Alfresco/alfresco-js-api) | 3.2.1 | [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0) |
|
||||
| [@angular/animations](https://github.com/angular/angular) | 7.0.3 | [MIT](http://www.opensource.org/licenses/MIT) |
|
||||
| [@angular/cdk](https://github.com/angular/material2) | 7.0.3 | [MIT](http://www.opensource.org/licenses/MIT) |
|
||||
| [@angular/common](https://github.com/angular/angular) | 7.0.3 | [MIT](http://www.opensource.org/licenses/MIT) |
|
||||
| [@angular/compiler](https://github.com/angular/angular) | 7.0.3 | [MIT](http://www.opensource.org/licenses/MIT) |
|
||||
| [@angular/core](https://github.com/angular/angular) | 7.0.3 | [MIT](http://www.opensource.org/licenses/MIT) |
|
||||
| [@angular/flex-layout](https://github.com/angular/flex-layout) | 7.0.0-beta.23 | [MIT](http://www.opensource.org/licenses/MIT) |
|
||||
| [@angular/forms](https://github.com/angular/angular) | 7.0.3 | [MIT](http://www.opensource.org/licenses/MIT) |
|
||||
| [@angular/http](https://github.com/angular/angular) | 7.0.3 | [MIT](http://www.opensource.org/licenses/MIT) |
|
||||
| [@angular/material-moment-adapter](https://github.com/angular/material2) | 7.0.3 | [MIT](http://www.opensource.org/licenses/MIT) |
|
||||
| [@angular/material](https://github.com/angular/material2) | 7.0.3 | [MIT](http://www.opensource.org/licenses/MIT) |
|
||||
| [@angular/platform-browser-dynamic](https://github.com/angular/angular) | 7.0.3 | [MIT](http://www.opensource.org/licenses/MIT) |
|
||||
| [@angular/platform-browser](https://github.com/angular/angular) | 7.0.3 | [MIT](http://www.opensource.org/licenses/MIT) |
|
||||
| [@angular/router](https://github.com/angular/angular) | 7.0.3 | [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) |
|
||||
| [@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) |
|
||||
| [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.1.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) |
|
||||
| [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.0 | [MIT](http://www.opensource.org/licenses/MIT) |
|
||||
| [ajv](https://github.com/epoberezkin/ajv) | 6.10.0 | [MIT](http://www.opensource.org/licenses/MIT) |
|
||||
| [alfresco-components](https://github.com/Alfresco/alfresco-ng2-components) | 3.2.1 | [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0) |
|
||||
| [ansi-regex](https://github.com/chalk/ansi-regex) | 2.1.1 | [MIT](http://www.opensource.org/licenses/MIT) |
|
||||
| [ansi-styles](https://github.com/chalk/ansi-styles) | 2.2.1 | [MIT](http://www.opensource.org/licenses/MIT) |
|
||||
| [ansi-styles](https://github.com/chalk/ansi-styles) | 3.2.1 | [MIT](http://www.opensource.org/licenses/MIT) |
|
||||
| [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/) |
|
||||
| [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) |
|
||||
| [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/) |
|
||||
| [async-each](https://github.com/paulmillr/async-each) | 1.0.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) |
|
||||
| [babel-code-frame](https://github.com/babel/babel/tree/master/packages/babel-code-frame) | 6.26.0 | [MIT](http://www.opensource.org/licenses/MIT) |
|
||||
| [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.0 | [MIT](http://www.opensource.org/licenses/MIT) |
|
||||
| [bluebird](https://github.com/petkaantonov/bluebird) | 3.5.3 | [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) |
|
||||
| [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) |
|
||||
| [cacache](https://github.com/zkat/cacache) | 11.3.2 | [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) |
|
||||
| [chalk](https://github.com/chalk/chalk) | 1.1.3 | [MIT](http://www.opensource.org/licenses/MIT) |
|
||||
| [chalk](https://github.com/chalk/chalk) | 2.4.2 | [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/) |
|
||||
| [chrome-trace-event](github.com:samccone/chrome-trace-event) | 1.0.2 | [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 |
|
||||
| [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.7 | [MIT](http://www.opensource.org/licenses/MIT) |
|
||||
| [commander](https://github.com/tj/commander.js) | 2.19.0 | [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.2.1 | [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) |
|
||||
| [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.5 | [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-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) |
|
||||
| [crypto-browserify](https://github.com/crypto-browserify/crypto-browserify) | 3.12.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) | 0.1.1 | [MIT](http://www.opensource.org/licenses/MIT) |
|
||||
| [d](https://github.com/medikoo/d) | 1.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
|
||||
| [damerau-levenshtein](https://github.com/lzrski/node-damerau-levenshtein) | 1.0.4 | [BSD-2-Clause](http://www.opensource.org/licenses/BSD-2-Clause) |
|
||||
| [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.2.6 | [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) |
|
||||
| [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) |
|
||||
| [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) |
|
||||
| [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) | 3.5.0 | [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) |
|
||||
| [domain-browser](https://github.com/bevry/domain-browser) | 1.2.0 | [MIT](http://www.opensource.org/licenses/MIT) |
|
||||
| [duplexify](https://github.com/mafintosh/duplexify) | 3.7.1 | [MIT](http://www.opensource.org/licenses/MIT) |
|
||||
| [elliptic](https://github.com/indutny/elliptic) | 6.4.1 | [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) |
|
||||
| [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.50 | [ISC](https://www.isc.org/downloads/software-support-policy/isc-license/) |
|
||||
| [es6-iterator](https://github.com/medikoo/es6-iterator) | 2.0.3 | [MIT](http://www.opensource.org/licenses/MIT) |
|
||||
| [es6-symbol](https://github.com/medikoo/es6-symbol) | 3.1.1 | [MIT](http://www.opensource.org/licenses/MIT) |
|
||||
| [escape-string-regexp](https://github.com/sindresorhus/escape-string-regexp) | 1.0.5 | [MIT](http://www.opensource.org/licenses/MIT) |
|
||||
| [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) | 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.4 | [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) |
|
||||
| [expand-brackets](https://github.com/jonschlinkert/expand-brackets) | 2.1.4 | [MIT](http://www.opensource.org/licenses/MIT) |
|
||||
| [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) |
|
||||
| [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) |
|
||||
| [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/) |
|
||||
| [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) | 1.0.2 | [MIT](http://www.opensource.org/licenses/MIT) |
|
||||
| [form-data](https://github.com/form-data/form-data) | 2.3.3 | [MIT](http://www.opensource.org/licenses/MIT) |
|
||||
| [formidable](https://github.com/felixge/node-formidable) | 1.2.1 | [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-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.7 | [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-value](https://github.com/jonschlinkert/get-value) | 2.0.6 | [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/) |
|
||||
| [graceful-fs](https://github.com/isaacs/node-graceful-fs) | 4.1.15 | [ISC](https://www.isc.org/downloads/software-support-policy/isc-license/) |
|
||||
| [hammerjs](https://github.com/hammerjs/hammer.js) | 2.0.8 | [MIT](http://www.opensource.org/licenses/MIT) |
|
||||
| [has-ansi](https://github.com/sindresorhus/has-ansi) | 2.0.0 | [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/) |
|
||||
| [https-browserify](https://github.com/substack/https-browserify) | 1.0.0 | [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/) |
|
||||
| [imurmurhash](https://github.com/jensyt/imurmurhash-js) | 0.1.4 | [MIT](http://www.opensource.org/licenses/MIT) |
|
||||
| [indexof](https://github.com/component/indexof) | 0.0.1 | [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/) |
|
||||
| [ini](https://github.com/isaacs/ini) | 1.3.5 | [ISC](https://www.isc.org/downloads/software-support-policy/isc-license/) |
|
||||
| [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-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-glob](https://github.com/jonschlinkert/is-glob) | 3.1.0 | [MIT](http://www.opensource.org/licenses/MIT) |
|
||||
| [is-glob](https://github.com/jonschlinkert/is-glob) | 4.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-plain-object](https://github.com/jonschlinkert/is-plain-object) | 2.0.4 | [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) |
|
||||
| [isarray](https://github.com/juliangruber/isarray) | 1.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
|
||||
| [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) | 3.0.2 | [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) |
|
||||
| [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) |
|
||||
| [levenshtein-edit-distance](https://github.com/wooorm/levenshtein-edit-distance) | 1.0.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.debounce](https://github.com/lodash/lodash) | 4.0.8 | [MIT](http://www.opensource.org/licenses/MIT) |
|
||||
| [lru-cache](https://github.com/isaacs/node-lru-cache) | 5.1.1 | [ISC](https://www.isc.org/downloads/software-support-policy/isc-license/) |
|
||||
| [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.3 | [MIT](http://www.opensource.org/licenses/MIT) |
|
||||
| [mdast-util-to-string](https://github.com/syntax-tree/mdast-util-to-string) | 1.0.5 | [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.38.0 | [MIT](http://www.opensource.org/licenses/MIT) |
|
||||
| [mime-types](https://github.com/jshttp/mime-types) | 2.1.22 | [MIT](http://www.opensource.org/licenses/MIT) |
|
||||
| [mime](https://github.com/broofa/node-mime) | 1.6.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.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) |
|
||||
| [nan](https://github.com/nodejs/nan) | 2.13.1 | [MIT](http://www.opensource.org/licenses/MIT) |
|
||||
| [nanomatch](https://github.com/micromatch/nanomatch) | 1.2.13 | [MIT](http://www.opensource.org/licenses/MIT) |
|
||||
| [needle](https://github.com/tomas/needle) | 2.2.4 | [MIT](http://www.opensource.org/licenses/MIT) |
|
||||
| [neo-async](https://github.com/suguru03/neo-async) | 2.6.0 | [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) |
|
||||
| [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.0 | [MIT](http://www.opensource.org/licenses/MIT) |
|
||||
| [node-pre-gyp](https://github.com/mapbox/node-pre-gyp) | 0.10.3 | [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) |
|
||||
| [npm-bundled](https://github.com/npm/npm-bundled) | 1.0.5 | [ISC](https://www.isc.org/downloads/software-support-policy/isc-license/) |
|
||||
| [npm-packlist](https://github.com/npm/npm-packlist) | 1.2.0 | [ISC](https://www.isc.org/downloads/software-support-policy/isc-license/) |
|
||||
| [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-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/) |
|
||||
| [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-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-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) |
|
||||
| [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/) |
|
||||
| [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.0 | [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-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.0.943 | [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0) |
|
||||
| [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) |
|
||||
| [process-nextick-args](https://github.com/calvinmetcalf/process-nextick-args) | 2.0.0 | [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/) |
|
||||
| [propose](https://github.com/liushuping/propose) | 0.0.5 | [MIT](http://www.opensource.org/licenses/MIT) |
|
||||
| [prr](https://github.com/rvagg/prr) | 1.0.1 | [MIT](http://www.opensource.org/licenses/MIT) |
|
||||
| [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.7.0 | [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) |
|
||||
| [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/nodejs/readable-stream) | 2.3.6 | [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) |
|
||||
| [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.1 | [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.10.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-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.4.0 | [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) |
|
||||
| [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.6.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-value](https://github.com/jonschlinkert/set-value) | 0.4.3 | [MIT](http://www.opensource.org/licenses/MIT) |
|
||||
| [set-value](https://github.com/jonschlinkert/set-value) | 2.0.0 | [MIT](http://www.opensource.org/licenses/MIT) |
|
||||
| [setimmediate](https://github.com/YuzuJS/setImmediate) | 1.0.5 | [MIT](http://www.opensource.org/licenses/MIT) |
|
||||
| [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)) |
|
||||
| [signal-exit](https://github.com/tapjs/signal-exit) | 3.0.2 | [ISC](https://www.isc.org/downloads/software-support-policy/isc-license/) |
|
||||
| [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) |
|
||||
| [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-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) |
|
||||
| [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_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-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) | 3.8.2 | [MIT](http://www.opensource.org/licenses/MIT) |
|
||||
| [supports-color](https://github.com/chalk/supports-color) | 2.0.0 | [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.1 | [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/) |
|
||||
| [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) |
|
||||
| [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) |
|
||||
| [timers-browserify](https://github.com/jryans/timers-browserify) | 2.0.10 | [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) |
|
||||
| [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.9.1 | [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) |
|
||||
| [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.0 | [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.1 | [ISC](https://www.isc.org/downloads/software-support-policy/isc-license/) |
|
||||
| [unist-util-is](https://github.com/syntax-tree/unist-util-is) | 2.1.2 | [MIT](http://www.opensource.org/licenses/MIT) |
|
||||
| [unist-util-visit-parents](https://github.com/syntax-tree/unist-util-visit-parents) | 2.0.1 | [MIT](http://www.opensource.org/licenses/MIT) |
|
||||
| [unist-util-visit](https://github.com/syntax-tree/unist-util-visit) | 1.4.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) |
|
||||
| [upath](https://github.com/anodynos/upath) | 1.1.2 | [MIT](http://www.opensource.org/licenses/MIT) |
|
||||
| [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](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) |
|
||||
| [vm-browserify](https://github.com/substack/vm-browserify) | 0.0.4 | [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) |
|
||||
| [wide-align](https://github.com/iarna/wide-align) | 1.1.3 | [ISC](https://www.isc.org/downloads/software-support-policy/isc-license/) |
|
||||
| [worker-farm](https://github.com/rvagg/node-worker-farm) | 1.7.0 | [MIT](http://www.opensource.org/licenses/MIT) |
|
||||
| [worker-loader](https://github.com/webpack-contrib/worker-loader) | 2.0.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/) |
|
||||
| [xtend](https://github.com/Raynos/xtend) | 4.0.1 | [MIT](http://www.opensource.org/licenses/MIT) |
|
||||
| [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) | 3.0.3 | [ISC](https://www.isc.org/downloads/software-support-policy/isc-license/) |
|
||||
| [zone.js](https://github.com/angular/zone.js) | 0.8.29 | [MIT](http://www.opensource.org/licenses/MIT) |
|
||||
|
||||
@@ -79,13 +79,14 @@ The template defined inside `empty-form` will be shown when no form definition i
|
||||
| appName | `string` | | App id to fetch corresponding form and values. |
|
||||
| data | [`TaskVariableCloud`](../../../lib/process-services-cloud/src/lib/form/models/task-variable-cloud.model.ts)`[]` | | Custom form values map to be used with the rendered form. |
|
||||
| disableCompleteButton | `boolean` | false | If true then the `Complete` outcome button is shown but it will be disabled. |
|
||||
| disableSaveButton | `boolean` | false | If true then the `Save` outcome button is shown but it will be disabled. |
|
||||
| disableSaveButton | `boolean` | false | If true then the `Save` outcome button is shown but will be disabled. |
|
||||
| disableStartProcessButton | `boolean` | false | If true then the `Start Process` outcome button is shown but it will be disabled. |
|
||||
| fieldValidators | [`FormFieldValidator`](../../../lib/core/form/components/widgets/core/form-field-validator.ts)`[]` | \[] | Contains a list of form field validator instances. |
|
||||
| fieldValidators | [`FormFieldValidator`](../../../lib/core/form/components/widgets/core/form-field-validator.ts)`[]` | | Contains a list of form field validator instances. |
|
||||
| form | [`FormCloud`](../../../lib/process-services-cloud/src/lib/form/models/form-cloud.model.ts) | | Underlying [form model](../../../lib/core/form/components/widgets/core/form.model.ts) instance. |
|
||||
| formId | `string` | | Task id to fetch corresponding form and values. |
|
||||
| nameNode | `string` | | Name to assign to the new node where the metadata are stored. |
|
||||
| path | `string` | | Path of the folder where the metadata will be stored. |
|
||||
| processInstanceId | `string` | | ProcessInstanceId id to fetch corresponding form and values. |
|
||||
| readOnly | `boolean` | false | Toggle readonly state of the form. Forces all form widgets to render as readonly if enabled. |
|
||||
| showCompleteButton | `boolean` | true | Toggle rendering of the `Complete` outcome button. |
|
||||
| showRefreshButton | `boolean` | true | Toggle rendering of the `Refresh` button. |
|
||||
@@ -93,7 +94,6 @@ The template defined inside `empty-form` will be shown when no form definition i
|
||||
| showTitle | `boolean` | true | Toggle rendering of the form title. |
|
||||
| showValidationIcon | `boolean` | true | Toggle rendering of the validation icon next to the form title. |
|
||||
| taskId | `string` | | Task id to fetch corresponding form and values. |
|
||||
| processInstanceId | `string `| | Process instance id to fetch corresponding form and values.|
|
||||
|
||||
### Events
|
||||
|
||||
|
||||
@@ -1,6 +1,12 @@
|
||||
---
|
||||
Title: Form Definition Selector Cloud
|
||||
Added: v3.3.0
|
||||
Status: Active
|
||||
---
|
||||
|
||||
# [Form Definition Selector Cloud](../../../lib/process-services-cloud/src/lib/form/components/form-definition-selector-cloud.component.ts "Defined in form-definition-selector-cloud.component.ts")
|
||||
|
||||
Allows one form to be selected.
|
||||
Allows one form to be selected from a dropdown list. For forms to be displayed in this component they will need to be compatible with standAlone tasks.
|
||||
|
||||
## Basic Usage
|
||||
|
||||
|
||||
@@ -11,6 +11,17 @@ Starts a process.
|
||||
|
||||

|
||||
|
||||
## Contents
|
||||
|
||||
- [Basic Usage](#basic-usage)
|
||||
- [Class members](#class-members)
|
||||
- [Properties](#properties)
|
||||
- [Events](#events)
|
||||
- [Details](#details)
|
||||
- [Starting a process with a default name and a pre-selected process definition name](#starting-a-process-with-a-default-name-and-a-pre-selected-process-definition-name)
|
||||
- [Starting a process with variables](#starting-a-process-with-variables)
|
||||
- [Starting a process with values passed to the form](#starting-a-process-with-values-passed-to-the-form)
|
||||
|
||||
## Basic Usage
|
||||
|
||||
```html
|
||||
@@ -30,8 +41,8 @@ Starts a process.
|
||||
| name | `string` | "" | Name of the process. |
|
||||
| processDefinitionName | `string` | | Name of the process definition. |
|
||||
| showSelectProcessDropdown | `boolean` | true | Show/hide the process dropdown list. |
|
||||
| variables | `Object` | | Variables to attach to the payload. |
|
||||
| values | `TaskVariableCloud` | | Values to attach to a form. |
|
||||
| values | [`TaskVariableCloud`](../../../lib/process-services-cloud/src/lib/form/models/task-variable-cloud.model.ts)`[]` | | Parameter to pass form field values in the start form if one is associated. |
|
||||
| variables | `__type` | | Variables to attach to the payload. |
|
||||
|
||||
### Events
|
||||
|
||||
@@ -57,7 +68,6 @@ You can use the `processDefinitionName` property to select which process will be
|
||||
|
||||
If the app contains only one process definition, this process definition will be selected by default
|
||||
|
||||
|
||||
### Starting a process with variables
|
||||
|
||||
```html
|
||||
|
||||
@@ -26,18 +26,20 @@ class MyComponent {
|
||||
|
||||
### Methods
|
||||
|
||||
- **completeTaskForm**(appName: `string`, taskId: `string`, formId: `string`, formValues: [`FormValues`](../../../lib/core/form/components/widgets/core/form-values.ts), outcome: `string`): [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`TaskDetailsCloudModel`](../../../lib/process-services-cloud/src/lib/task/start-task/models/task-details-cloud.model.ts)`>`<br/>
|
||||
- **completeTaskForm**(appName: `string`, taskId: `string`, processInstanceId: `string`, formId: `string`, formValues: [`FormValues`](../../../lib/core/form/components/widgets/core/form-values.ts), outcome: `string`): [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`TaskDetailsCloudModel`](../../../lib/process-services-cloud/src/lib/task/start-task/models/task-details-cloud.model.ts)`>`<br/>
|
||||
Completes a task form.
|
||||
- _appName:_ `string` - Name of the app
|
||||
- _taskId:_ `string` - ID of the target task
|
||||
- _processInstanceId:_ `string` -
|
||||
- _formId:_ `string` - ID of the form to complete
|
||||
- _formValues:_ [`FormValues`](../../../lib/core/form/components/widgets/core/form-values.ts) - [Form](../../../lib/process-services/task-list/models/form.model.ts) values object
|
||||
- _outcome:_ `string` - (Optional) [Form](../../../lib/process-services/task-list/models/form.model.ts) outcome
|
||||
- _outcome:_ `string` - [Form](../../../lib/process-services/task-list/models/form.model.ts) outcome
|
||||
- **Returns** [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`TaskDetailsCloudModel`](../../../lib/process-services-cloud/src/lib/task/start-task/models/task-details-cloud.model.ts)`>` - Updated task details
|
||||
- **createTemporaryRawRelatedContent**(file: `any`, nodeId: `any`): [`Observable`](http://reactivex.io/documentation/observable.html)`<any>`<br/>
|
||||
- **createTemporaryRawRelatedContent**(file: `any`, nodeId: `string`, contentHost: `string`): [`Observable`](http://reactivex.io/documentation/observable.html)`<any>`<br/>
|
||||
|
||||
- _file:_ `any` -
|
||||
- _nodeId:_ `any` -
|
||||
- _nodeId:_ `string` -
|
||||
- _contentHost:_ `string` -
|
||||
- **Returns** [`Observable`](http://reactivex.io/documentation/observable.html)`<any>` -
|
||||
|
||||
- **getBasePath**(appName: `string`): `string`<br/>
|
||||
@@ -49,16 +51,17 @@ class MyComponent {
|
||||
Parses JSON data to create a corresponding form.
|
||||
- _url:_ `string` - String data to make the request
|
||||
- **Returns** [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`FormFieldOption`](../../../lib/core/form/components/widgets/core/form-field-option.ts)`[]>` - Array of FormFieldOption object
|
||||
- **getForm**(appName: `string`, taskId: `string`): [`Observable`](http://reactivex.io/documentation/observable.html)`<any>`<br/>
|
||||
- **getForm**(appName: `string`, formKey: `string`): [`Observable`](http://reactivex.io/documentation/observable.html)`<any>`<br/>
|
||||
Gets a form definition.
|
||||
- _appName:_ `string` - Name of the app
|
||||
- _taskId:_ `string` - ID of the target task
|
||||
- _formKey:_ `string` - key of the target task
|
||||
- **Returns** [`Observable`](http://reactivex.io/documentation/observable.html)`<any>` - Form definition
|
||||
- **getProcessStorageFolderTask**(appName: `string`, taskId: `string`): [`Observable`](http://reactivex.io/documentation/observable.html)`<any>`<br/>
|
||||
- **getProcessStorageFolderTask**(appName: `string`, taskId: `string`, processInstanceId: `string`): [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`ProcessStorageCloudModel`](../../../lib/process-services-cloud/src/lib/form/models/task-variable-cloud.model.ts)`>`<br/>
|
||||
|
||||
- _appName:_ `string` -
|
||||
- _taskId:_ `string` -
|
||||
- **Returns** [`Observable`](http://reactivex.io/documentation/observable.html)`<any>` -
|
||||
- _processInstanceId:_ `string` -
|
||||
- **Returns** [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`ProcessStorageCloudModel`](../../../lib/process-services-cloud/src/lib/form/models/task-variable-cloud.model.ts)`>` -
|
||||
|
||||
- **getTask**(appName: `string`, taskId: `string`): [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`TaskDetailsCloudModel`](../../../lib/process-services-cloud/src/lib/task/start-task/models/task-details-cloud.model.ts)`>`<br/>
|
||||
Gets details of a task
|
||||
@@ -81,10 +84,11 @@ class MyComponent {
|
||||
- _data:_ [`TaskVariableCloud`](../../../lib/process-services-cloud/src/lib/form/models/task-variable-cloud.model.ts)`[]` - (Optional) Values for the form's fields
|
||||
- _readOnly:_ `boolean` - Toggles whether or not the form should be read-only
|
||||
- **Returns** [`FormCloud`](../../../lib/process-services-cloud/src/lib/form/models/form-cloud.model.ts) - [Form](../../../lib/process-services/task-list/models/form.model.ts) created from the JSON specification
|
||||
- **saveTaskForm**(appName: `string`, taskId: `string`, formId: `string`, formValues: [`FormValues`](../../../lib/core/form/components/widgets/core/form-values.ts)): [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`TaskDetailsCloudModel`](../../../lib/process-services-cloud/src/lib/task/start-task/models/task-details-cloud.model.ts)`>`<br/>
|
||||
- **saveTaskForm**(appName: `string`, taskId: `string`, processInstanceId: `string`, formId: `string`, formValues: [`FormValues`](../../../lib/core/form/components/widgets/core/form-values.ts)): [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`TaskDetailsCloudModel`](../../../lib/process-services-cloud/src/lib/task/start-task/models/task-details-cloud.model.ts)`>`<br/>
|
||||
Saves a task form.
|
||||
- _appName:_ `string` - Name of the app
|
||||
- _taskId:_ `string` - ID of the target task
|
||||
- _processInstanceId:_ `string` -
|
||||
- _formId:_ `string` - ID of the form to save
|
||||
- _formValues:_ [`FormValues`](../../../lib/core/form/components/widgets/core/form-values.ts) - [Form](../../../lib/process-services/task-list/models/form.model.ts) values object
|
||||
- **Returns** [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`TaskDetailsCloudModel`](../../../lib/process-services-cloud/src/lib/task/start-task/models/task-details-cloud.model.ts)`>` - Updated task details
|
||||
|
||||
@@ -39,9 +39,6 @@ Manages task filters.
|
||||
- **getUsername**(): `string`<br/>
|
||||
Gets the username field from the access token.
|
||||
- **Returns** `string` - Username string
|
||||
- **getValueFromToken**(key: `string`)<br/>
|
||||
Gets a named value from the access token.
|
||||
- _key:_ `string` - Key name of the value
|
||||
- **updateFilter**(filter: [`TaskFilterCloudModel`](../../../lib/process-services-cloud/src/lib/task/task-filters/models/filter-cloud.model.ts))<br/>
|
||||
Updates a task filter.
|
||||
- _filter:_ [`TaskFilterCloudModel`](../../../lib/process-services-cloud/src/lib/task/task-filters/models/filter-cloud.model.ts) - The filter to update
|
||||
|
||||
@@ -56,9 +56,9 @@ Any content in the body of `<adf-form>` will be shown when no form definition is
|
||||
| ---- | ---- | ------------- | ----------- |
|
||||
| data | [`FormValues`](../../../lib/core/form/components/widgets/core/form-values.ts) | | Custom form values map to be used with the rendered form. |
|
||||
| disableCompleteButton | `boolean` | false | If true then the `Complete` outcome button is shown but it will be disabled. |
|
||||
| disableSaveButton | `boolean` | false | If true then the `Save` outcome button is shown but it will be disabled. |
|
||||
| disableSaveButton | `boolean` | false | If true then the `Save` outcome button is shown but will be disabled. |
|
||||
| disableStartProcessButton | `boolean` | false | If true then the `Start Process` outcome button is shown but it will be disabled. |
|
||||
| fieldValidators | [`FormFieldValidator`](../../../lib/core/form/components/widgets/core/form-field-validator.ts)`[]` | \[] | Contains a list of form field validator instances. |
|
||||
| fieldValidators | [`FormFieldValidator`](../../../lib/core/form/components/widgets/core/form-field-validator.ts)`[]` | | Contains a list of form field validator instances. |
|
||||
| form | [`FormModel`](../../../lib/core/form/components/widgets/core/form.model.ts) | | Underlying [form model](../../../lib/core/form/components/widgets/core/form.model.ts) instance. |
|
||||
| formId | `number` | | The id of the form definition to load and display with custom values. |
|
||||
| formName | `string` | | Name of the form definition to load and display with custom values. |
|
||||
|
||||
@@ -9,6 +9,7 @@ The first **General available** release was v2.0.0.
|
||||
|
||||
## General available
|
||||
|
||||
- [3.3.0](RelNote330.md)
|
||||
- [3.2.1](RelNote321.md)
|
||||
- [3.2.0](RelNote320.md)
|
||||
- [3.1.0](RelNote310.md)
|
||||
|
||||
@@ -314,11 +314,6 @@ Please refer to the [official documentation](http://docs.alfresco.com/) for furt
|
||||
|
||||
Below is the list of JIRA issues that were closed for this release.
|
||||
|
||||
Release Notes - Apps Development Framework - Version 3.2.0
|
||||
|
||||
|
||||
<h2> Documentation
|
||||
</h2>
|
||||
<ul>
|
||||
<li>[<a href='https://issues.alfresco.com/jira/browse/ADF-4356'>ADF-4356</a>] - How to build an ADF application on top of Activiti 7 Community Edition
|
||||
</li>
|
||||
|
||||
@@ -0,0 +1,466 @@
|
||||
---
|
||||
Title: Release notes v3.3.0
|
||||
---
|
||||
|
||||
# Alfresco Application Development Framework (ADF) version 3.3.0 Release Note
|
||||
|
||||
These release notes provide information about the **3.3.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.3.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)
|
||||
- [Form visibility](#form-field-visibility)
|
||||
- [Start a process with a form](#start-a-process-with-a-form)
|
||||
- [Multilingual support for forms](#multilingual-support-for-forms)
|
||||
- [Form validation](#form-validation)
|
||||
- [Forms variables](#form-variables)
|
||||
- [REST source for dropdown menu on forms](#rest-source-for-dropdown-menu-on-forms)
|
||||
- [Date format localization](#date-format-localization)
|
||||
- [Localisation](#localisation)
|
||||
- [References](#references)
|
||||
- [Issues addressed](#issues-addressed)
|
||||
|
||||
## New package versions
|
||||
|
||||
"@alfresco/adf-content-services" : "3.3.0"
|
||||
"@alfresco/adf-process-services" : "3.3.0"
|
||||
"@alfresco/adf-core" : "3.3.0"
|
||||
"@alfresco/adf-insights" : "3.3.0",
|
||||
"@alfresco/adf-extensions": "3.3.0"
|
||||
|
||||
## Goals for this release
|
||||
|
||||
This is the third minor release since of ADF since February 2019 when version 3 was released.
|
||||
|
||||
This release continues to provide additional support for [Activiti 7](https://www.activiti.org/), the next generation Cloud Native implementation of Activiti.
|
||||
|
||||
The functionality and enhancements of this release are focused on forms. Form field visibility has been improved, form validation has been implemented and it is now possible to use form variables. Multilingual support for forms has been enhanced and dropdown menus reading from a REST source have been updated. From an end-user perspective, a process can now be started using a form when the start event contains a valid form.
|
||||
|
||||
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).
|
||||
|
||||
The following are the most important features of this release:
|
||||
|
||||
- [Form visibility](#form-field-visibility)
|
||||
- [Start a process with a form](#start-a-process-with-a-form)
|
||||
- [Multilingual support for forms](#multilingual-support-for-forms)
|
||||
- [Form validation](#form-validation)
|
||||
- [Forms variables](#form-variables)
|
||||
- [REST source for dropdown menu on forms](#rest-source-for-dropdown-menu-on-forms)
|
||||
- [Date format localization](#date-format-localization)
|
||||
|
||||
### Form field visibility
|
||||
|
||||
Form field visibility has been improved to respect the visibility conditions configured for each field in the Modelling Application.
|
||||
|
||||
### Start a process with a form
|
||||
|
||||
The ```adf-cloud-start-process``` component now contains the functionality to start a process using a form.
|
||||
|
||||
It is possible start a process with a form and variables:
|
||||
|
||||
```html
|
||||
<adf-cloud-start-process
|
||||
[appId]="YOUR_APP_ID"
|
||||
[variables]="{ 'my-key1' : 'myvalue', 'my-key2' : 'myvalue2'}">
|
||||
</adf-cloud-start-process>
|
||||
```
|
||||
|
||||
It is also possible to start a process with a form and pass in the form values at the same time:
|
||||
|
||||
```html
|
||||
<adf-cloud-start-process
|
||||
[appId]="YOUR_APP_ID"
|
||||
[values]="[{'name': 'firstName', 'value': 'MyName'}, {'name': 'lastName', 'value': 'MyLastName'}]">
|
||||
</adf-cloud-start-process>
|
||||
```
|
||||
|
||||
### Multilingual support for forms
|
||||
|
||||
In previous versions it was not possible to translate a label that was defined as part of a form. Is now possible translate form labels using i18n files.
|
||||
|
||||
For example, when modelling your form you can now add a label such as `FORM.FIRSTNAME`. In your `en.json` this would be:
|
||||
|
||||
```json
|
||||
{
|
||||
"FORM": {
|
||||
"FIRSTNAME": "First Name",
|
||||
"LASTNAME": "Last Name"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
and in your `it.json`:
|
||||
|
||||
```json
|
||||
{
|
||||
"FORM": {
|
||||
"FIRSTNAME": "Nome",
|
||||
"LASTNAME": "Cognome"
|
||||
}
|
||||
}
|
||||
```
|
||||
Your app will now change the label of the form using the translations files.
|
||||
|
||||
### Form validation
|
||||
|
||||
Form validation will now display whether a form is valid or invalid.
|
||||
|
||||
### Form variables
|
||||
|
||||
Form variables can now assigned to forms. When creating an application that contains a form, variables can be assigned and will correctly display as the appropriate values when the form is launched.
|
||||
|
||||
### REST source for dropdown menu on forms
|
||||
|
||||
It is now possible to create a form that contains a dropdown widget that is configured to use a REST Service to populate its values.
|
||||
|
||||
### Date format localization
|
||||
|
||||
Date formats can now be localized in ADF. By default all dates are localized to `en-US`. This can be changed by adding the localization files provided by Angular. For more information refer to the [internationalization user guide](../user-guide/internationalization.md)
|
||||
|
||||
All components have also been refactored to use the same date format and we have created a new [localized date pipe](../core/pipes/localized-date.pipe.md) to format dates and change locales.
|
||||
|
||||
## 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
|
||||
|
||||
The following is the list of JIRA issues that were closed for this release:
|
||||
|
||||
|
||||
<ul>
|
||||
<li>[<a href='https://issues.alfresco.com/jira/browse/ADF-4618'>ADF-4618</a>] - Update the tutorial on RTL languages support
|
||||
</li>
|
||||
<li>[<a href='https://issues.alfresco.com/jira/browse/ADF-4653'>ADF-4653</a>] - Creating the npm audit report
|
||||
</li>
|
||||
<li>[<a href='https://issues.alfresco.com/jira/browse/ADF-4655'>ADF-4655</a>] - Review the documentation for the release
|
||||
</li>
|
||||
<li>[<a href='https://issues.alfresco.com/jira/browse/ADF-4656'>ADF-4656</a>] - Release note for version 3.3.0
|
||||
</li>
|
||||
<li>[<a href='https://issues.alfresco.com/jira/browse/ADF-4657'>ADF-4657</a>] - Tutorial on how to upgrade from ADF 3.2.1 to ADF 3.3.0
|
||||
</li>
|
||||
<li>[<a href='https://issues.alfresco.com/jira/browse/ADF-4658'>ADF-4658</a>] - Update the compatibility matrix
|
||||
</li>
|
||||
<li>[<a href='https://issues.alfresco.com/jira/browse/ADF-4659'>ADF-4659</a>] - Generate the list of third party Open Source components
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<h2> Feature
|
||||
</h2>
|
||||
<ul>
|
||||
<li>[<a href='https://issues.alfresco.com/jira/browse/ADF-3126'>ADF-3126</a>] - Automatic translation support for Info Drawer
|
||||
</li>
|
||||
<li>[<a href='https://issues.alfresco.com/jira/browse/ADF-4127'>ADF-4127</a>] - Claim a task on the new generation of BPM engines
|
||||
</li>
|
||||
<li>[<a href='https://issues.alfresco.com/jira/browse/ADF-4342'>ADF-4342</a>] - Date Format in ADF should be centralised
|
||||
</li>
|
||||
<li>[<a href='https://issues.alfresco.com/jira/browse/ADF-4349'>ADF-4349</a>] - Cloud - task-form-component - Create a new component
|
||||
</li>
|
||||
<li>[<a href='https://issues.alfresco.com/jira/browse/ADF-4527'>ADF-4527</a>] - Create a reusable HTML block for the buttons in the task form cloud component
|
||||
</li>
|
||||
<li>[<a href='https://issues.alfresco.com/jira/browse/ADF-4543'>ADF-4543</a>] - Language Menu - set text orientation
|
||||
</li>
|
||||
<li>[<a href='https://issues.alfresco.com/jira/browse/ADF-4544'>ADF-4544</a>] - Cloud Task From - Refresh the buttons and form after an action is complete
|
||||
</li>
|
||||
<li>[<a href='https://issues.alfresco.com/jira/browse/ADF-4545'>ADF-4545</a>] - Context Menu - RTL support
|
||||
</li>
|
||||
<li>[<a href='https://issues.alfresco.com/jira/browse/ADF-4550'>ADF-4550</a>] - Get the repository from the Process Storage instead of the app.config.jsonTask
|
||||
</li>
|
||||
<li>[<a href='https://issues.alfresco.com/jira/browse/ADF-4558'>ADF-4558</a>] - Dialogs - RTL support
|
||||
</li>
|
||||
<li>[<a href='https://issues.alfresco.com/jira/browse/ADF-4631'>ADF-4631</a>] - Start Process Cloud - Ability to start a process with a form as start event
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<h2> Story
|
||||
</h2>
|
||||
<ul>
|
||||
<li>[<a href='https://issues.alfresco.com/jira/browse/ADF-4375'>ADF-4375</a>] - Simplifying the development of ADF Extensions
|
||||
</li>
|
||||
<li>[<a href='https://issues.alfresco.com/jira/browse/ADF-4377'>ADF-4377</a>] - Simplifying the deployment of ADF Extensions
|
||||
</li>
|
||||
<li>[<a href='https://issues.alfresco.com/jira/browse/ADF-4484'>ADF-4484</a>] - Quick themable Snackbar notifications
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<h2> Bug
|
||||
</h2>
|
||||
<ul>
|
||||
<li>[<a href='https://issues.alfresco.com/jira/browse/ADF-1559'>ADF-1559</a>] - People control is referencing the rest api instead of enterprise for pictures
|
||||
</li>
|
||||
<li>[<a href='https://issues.alfresco.com/jira/browse/ADF-3192'>ADF-3192</a>] - [Form] - The fields are not properly aligned
|
||||
</li>
|
||||
<li>[<a href='https://issues.alfresco.com/jira/browse/ADF-4034'>ADF-4034</a>] - Task list cloud - The Deleted task is changing the Status from "Deleted" in "Canceled"
|
||||
</li>
|
||||
<li>[<a href='https://issues.alfresco.com/jira/browse/ADF-4041'>ADF-4041</a>] - People Cloud Component - preselected values not working to be filtered by username
|
||||
</li>
|
||||
<li>[<a href='https://issues.alfresco.com/jira/browse/ADF-4137'>ADF-4137</a>] - PeopleCloudComponent - Use new translation key for search label
|
||||
</li>
|
||||
<li>[<a href='https://issues.alfresco.com/jira/browse/ADF-4268'>ADF-4268</a>] - Unable to change any other property in the Info drawer for any other file after trying to change the name to one with special characters
|
||||
</li>
|
||||
<li>[<a href='https://issues.alfresco.com/jira/browse/ADF-4293'>ADF-4293</a>] - The date is not displayed properly when rtl is enabled
|
||||
</li>
|
||||
<li>[<a href='https://issues.alfresco.com/jira/browse/ADF-4314'>ADF-4314</a>] - [Process - Cloud] - can not claim a process task without any assignee
|
||||
</li>
|
||||
<li>[<a href='https://issues.alfresco.com/jira/browse/ADF-4338'>ADF-4338</a>] - [Process-service-cloud] - TaskHeaderCloudComponent is using wrong date format
|
||||
</li>
|
||||
<li>[<a href='https://issues.alfresco.com/jira/browse/ADF-4364'>ADF-4364</a>] - The user is infinitely redirected to the file opened in viewer when clicking on close icon
|
||||
</li>
|
||||
<li>[<a href='https://issues.alfresco.com/jira/browse/ADF-4408'>ADF-4408</a>] - Setting copyContent to false on datatable cell html is not working as expected
|
||||
</li>
|
||||
<li>[<a href='https://issues.alfresco.com/jira/browse/ADF-4466'>ADF-4466</a>] - There are alignment issues in IE11 browser for Multiselect checkboxes.
|
||||
</li>
|
||||
<li>[<a href='https://issues.alfresco.com/jira/browse/ADF-4467'>ADF-4467</a>] - Upload File Widget layout issue
|
||||
</li>
|
||||
<li>[<a href='https://issues.alfresco.com/jira/browse/ADF-4468'>ADF-4468</a>] - FormCloud - Not able to show a value of a form variable
|
||||
</li>
|
||||
<li>[<a href='https://issues.alfresco.com/jira/browse/ADF-4469'>ADF-4469</a>] - Changing the name of a file to an already existing one in the Metadata info dialog, errors in console.
|
||||
</li>
|
||||
<li>[<a href='https://issues.alfresco.com/jira/browse/ADF-4473'>ADF-4473</a>] - Cloud Task Header - Priority should take only integer values
|
||||
</li>
|
||||
<li>[<a href='https://issues.alfresco.com/jira/browse/ADF-4474'>ADF-4474</a>] - Coud Form - Unable to submit form with date value
|
||||
</li>
|
||||
<li>[<a href='https://issues.alfresco.com/jira/browse/ADF-4476'>ADF-4476</a>] - Cloud start task and start process have different styles
|
||||
</li>
|
||||
<li>[<a href='https://issues.alfresco.com/jira/browse/ADF-4478'>ADF-4478</a>] - Layout container overflowing
|
||||
</li>
|
||||
<li>[<a href='https://issues.alfresco.com/jira/browse/ADF-4488'>ADF-4488</a>] - FormCloud - Not able to render a dropdown with a RestService bind
|
||||
</li>
|
||||
<li>[<a href='https://issues.alfresco.com/jira/browse/ADF-4489'>ADF-4489</a>] - Error should appear in the info drawer when trying to add illegal characters in the Name field
|
||||
</li>
|
||||
<li>[<a href='https://issues.alfresco.com/jira/browse/ADF-4495'>ADF-4495</a>] - Remove Alfresco Dependencies script not working properly on Linux Machine
|
||||
</li>
|
||||
<li>[<a href='https://issues.alfresco.com/jira/browse/ADF-4498'>ADF-4498</a>] - StickyHeader should be disabled when there is no header.
|
||||
</li>
|
||||
<li>[<a href='https://issues.alfresco.com/jira/browse/ADF-4530'>ADF-4530</a>] - The multiple process definitions in the app are not displayed in the dropdown when creating a new Process instance.
|
||||
</li>
|
||||
<li>[<a href='https://issues.alfresco.com/jira/browse/ADF-4531'>ADF-4531</a>] - The typeahead and filtering based on context doesn't work for the 'Select Process' dropdown in cloud.
|
||||
</li>
|
||||
<li>[<a href='https://issues.alfresco.com/jira/browse/ADF-4546'>ADF-4546</a>] - Visibility conditions for Form variables don't work on Multiline Widget.
|
||||
</li>
|
||||
<li>[<a href='https://issues.alfresco.com/jira/browse/ADF-4548'>ADF-4548</a>] - The place holder text for the Dropdown widget is not displayed.
|
||||
</li>
|
||||
<li>[<a href='https://issues.alfresco.com/jira/browse/ADF-4552'>ADF-4552</a>] - Rating component not working properly
|
||||
</li>
|
||||
<li>[<a href='https://issues.alfresco.com/jira/browse/ADF-4564'>ADF-4564</a>] - Yeoman's template for Activiti Cloud contains hardcoded URLs
|
||||
</li>
|
||||
<li>[<a href='https://issues.alfresco.com/jira/browse/ADF-4569'>ADF-4569</a>] - Fix smart build script
|
||||
</li>
|
||||
<li>[<a href='https://issues.alfresco.com/jira/browse/ADF-4578'>ADF-4578</a>] - Language Menu - list shows 2 Arabic entries
|
||||
</li>
|
||||
<li>[<a href='https://issues.alfresco.com/jira/browse/ADF-4585'>ADF-4585</a>] - Can't save the form or complete the task when the dropdown has a value saved from rest response.
|
||||
</li>
|
||||
<li>[<a href='https://issues.alfresco.com/jira/browse/ADF-4586'>ADF-4586</a>] - DropdownCloud - form not preselecting the saved option
|
||||
</li>
|
||||
<li>[<a href='https://issues.alfresco.com/jira/browse/ADF-4588'>ADF-4588</a>] - Copy content not showing correctly for ellipsis cell
|
||||
</li>
|
||||
<li>[<a href='https://issues.alfresco.com/jira/browse/ADF-4596'>ADF-4596</a>] - Assignee field in start task is not translated to any other language
|
||||
</li>
|
||||
<li>[<a href='https://issues.alfresco.com/jira/browse/ADF-4597'>ADF-4597</a>] - Demo shell is not translated Czech when the app language is changed to Czech
|
||||
</li>
|
||||
<li>[<a href='https://issues.alfresco.com/jira/browse/ADF-4612'>ADF-4612</a>] - The linting is not working correctly in "npm-build-all.sh" script
|
||||
</li>
|
||||
<li>[<a href='https://issues.alfresco.com/jira/browse/ADF-4623'>ADF-4623</a>] - Document List row shows "name" instead of metadata
|
||||
</li>
|
||||
<li>[<a href='https://issues.alfresco.com/jira/browse/ADF-4625'>ADF-4625</a>] - Search Input does not respect RTL mode
|
||||
</li>
|
||||
<li>[<a href='https://issues.alfresco.com/jira/browse/ADF-4626'>ADF-4626</a>] - Breadcrumb does not respect RTL
|
||||
</li>
|
||||
<li>[<a href='https://issues.alfresco.com/jira/browse/ADF-4634'>ADF-4634</a>] - [APA] - Different statuses should load for Tasks than for Processes
|
||||
</li>
|
||||
<li>[<a href='https://issues.alfresco.com/jira/browse/ADF-4636'>ADF-4636</a>] - Datatable background only takes table height, not the entire datatable
|
||||
</li>
|
||||
<li>[<a href='https://issues.alfresco.com/jira/browse/ADF-4637'>ADF-4637</a>] - Login/Logout Bug from Applications/ADF
|
||||
</li>
|
||||
<li>[<a href='https://issues.alfresco.com/jira/browse/ADF-4640'>ADF-4640</a>] - Consumer / Contributer can not unshare a file that he shared
|
||||
</li>
|
||||
<li>[<a href='https://issues.alfresco.com/jira/browse/ADF-4651'>ADF-4651</a>] - Task form cloud not displayed
|
||||
</li>
|
||||
<li>[<a href='https://issues.alfresco.com/jira/browse/ADF-4661'>ADF-4661</a>] - The 'Start process' and 'Cancel' button are displayed on left instead of right.
|
||||
</li>
|
||||
<li>[<a href='https://issues.alfresco.com/jira/browse/ADF-4665'>ADF-4665</a>] - [ADF] - Application is refreshed when you have two instances of application opened
|
||||
</li>
|
||||
<li>[<a href='https://issues.alfresco.com/jira/browse/ADF-4667'>ADF-4667</a>] - Document list sorting icon looks cut off in RTL
|
||||
</li>
|
||||
<li>[<a href='https://issues.alfresco.com/jira/browse/ADF-4674'>ADF-4674</a>] - Validation isn't working in form-cloud
|
||||
</li>
|
||||
<li>[<a href='https://issues.alfresco.com/jira/browse/ADF-4677'>ADF-4677</a>] - Date isn't displayed properly in DocumentList
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<h2> Task
|
||||
</h2>
|
||||
<ul>
|
||||
<li>[<a href='https://issues.alfresco.com/jira/browse/ADF-4054'>ADF-4054</a>] - GroupCloudService - Use composite api to fetch group roles
|
||||
</li>
|
||||
<li>[<a href='https://issues.alfresco.com/jira/browse/ADF-4232'>ADF-4232</a>] - e2e - filePreviewPage - expect() calls are never reached
|
||||
</li>
|
||||
<li>[<a href='https://issues.alfresco.com/jira/browse/ADF-4288'>ADF-4288</a>] - Automation task for ADF-3977
|
||||
</li>
|
||||
<li>[<a href='https://issues.alfresco.com/jira/browse/ADF-4378'>ADF-4378</a>] - Creating the adf-extension schematic
|
||||
</li>
|
||||
<li>[<a href='https://issues.alfresco.com/jira/browse/ADF-4380'>ADF-4380</a>] - Enhancing the compilation of plugins to make them dynamic
|
||||
</li>
|
||||
<li>[<a href='https://issues.alfresco.com/jira/browse/ADF-4389'>ADF-4389</a>] - Manage the case of a process definition with name property set to null
|
||||
</li>
|
||||
<li>[<a href='https://issues.alfresco.com/jira/browse/ADF-4402'>ADF-4402</a>] - Move component related styles from demo-shell to ADF components
|
||||
</li>
|
||||
<li>[<a href='https://issues.alfresco.com/jira/browse/ADF-4421'>ADF-4421</a>] - Edit task filters excluded test fix
|
||||
</li>
|
||||
<li>[<a href='https://issues.alfresco.com/jira/browse/ADF-4442'>ADF-4442</a>] - Create a configuration editor option to change the whole app.config.json
|
||||
</li>
|
||||
<li>[<a href='https://issues.alfresco.com/jira/browse/ADF-4462'>ADF-4462</a>] - Create manual and automated test for Restore version does not refresh the document list
|
||||
</li>
|
||||
<li>[<a href='https://issues.alfresco.com/jira/browse/ADF-4477'>ADF-4477</a>] - Add a check for end date for task header cloud tests
|
||||
</li>
|
||||
<li>[<a href='https://issues.alfresco.com/jira/browse/ADF-4482'>ADF-4482</a>] - Automation tests for Social component
|
||||
</li>
|
||||
<li>[<a href='https://issues.alfresco.com/jira/browse/ADF-4490'>ADF-4490</a>] - Create manual and automated tests for task-form cloud component
|
||||
</li>
|
||||
<li>[<a href='https://issues.alfresco.com/jira/browse/ADF-4496'>ADF-4496</a>] - Share dialog should raise error notifications for unshare action
|
||||
</li>
|
||||
<li>[<a href='https://issues.alfresco.com/jira/browse/ADF-4503'>ADF-4503</a>] - Check coverage for Number widget
|
||||
</li>
|
||||
<li>[<a href='https://issues.alfresco.com/jira/browse/ADF-4505'>ADF-4505</a>] - Check coverage for Date widget
|
||||
</li>
|
||||
<li>[<a href='https://issues.alfresco.com/jira/browse/ADF-4506'>ADF-4506</a>] - Check coverage for Dropdown widget
|
||||
</li>
|
||||
<li>[<a href='https://issues.alfresco.com/jira/browse/ADF-4507'>ADF-4507</a>] - Check coverage for Amount widget
|
||||
</li>
|
||||
<li>[<a href='https://issues.alfresco.com/jira/browse/ADF-4508'>ADF-4508</a>] - Check coverage for Radio button widget
|
||||
</li>
|
||||
<li>[<a href='https://issues.alfresco.com/jira/browse/ADF-4509'>ADF-4509</a>] - Check coverage for Hyperlink widget
|
||||
</li>
|
||||
<li>[<a href='https://issues.alfresco.com/jira/browse/ADF-4512'>ADF-4512</a>] - Check coverage for Display value widget
|
||||
</li>
|
||||
<li>[<a href='https://issues.alfresco.com/jira/browse/ADF-4513'>ADF-4513</a>] - Check coverage for Display text widget
|
||||
</li>
|
||||
<li>[<a href='https://issues.alfresco.com/jira/browse/ADF-4514'>ADF-4514</a>] - Move widgets pages to Testing package
|
||||
</li>
|
||||
<li>[<a href='https://issues.alfresco.com/jira/browse/ADF-4519'>ADF-4519</a>] - Attach an ACS content to a form
|
||||
</li>
|
||||
<li>[<a href='https://issues.alfresco.com/jira/browse/ADF-4521'>ADF-4521</a>] - Multilingual support for forms
|
||||
</li>
|
||||
<li>[<a href='https://issues.alfresco.com/jira/browse/ADF-4529'>ADF-4529</a>] - Create method to automate the form editor page
|
||||
</li>
|
||||
<li>[<a href='https://issues.alfresco.com/jira/browse/ADF-4535'>ADF-4535</a>] - [FIX E2E] people-group-cloud-component.e2e.ts
|
||||
</li>
|
||||
<li>[<a href='https://issues.alfresco.com/jira/browse/ADF-4536'>ADF-4536</a>] - [FIX E2E] process-custom-filters.e2e.ts
|
||||
</li>
|
||||
<li>[<a href='https://issues.alfresco.com/jira/browse/ADF-4538'>ADF-4538</a>] - [FIX E2E] start-task-custom-app-cloud.e2e.ts C297675
|
||||
</li>
|
||||
<li>[<a href='https://issues.alfresco.com/jira/browse/ADF-4540'>ADF-4540</a>] - [FIX E2E] Task-list-properties.e2e.ts C297480 C297486 C297691
|
||||
</li>
|
||||
<li>[<a href='https://issues.alfresco.com/jira/browse/ADF-4541'>ADF-4541</a>] - [FIX E2E] task-form-cloud-component.e2e.ts C307095
|
||||
</li>
|
||||
<li>[<a href='https://issues.alfresco.com/jira/browse/ADF-4547'>ADF-4547</a>] - Fix flaky e2e tests
|
||||
</li>
|
||||
<li>[<a href='https://issues.alfresco.com/jira/browse/ADF-4576'>ADF-4576</a>] - Remove duplicate getDeployedApplicationsByStatus service
|
||||
</li>
|
||||
<li>[<a href='https://issues.alfresco.com/jira/browse/ADF-4579'>ADF-4579</a>] - App Layout - RTL support
|
||||
</li>
|
||||
<li>[<a href='https://issues.alfresco.com/jira/browse/ADF-4582'>ADF-4582</a>] - User preference - set layout orientation based on locale
|
||||
</li>
|
||||
<li>[<a href='https://issues.alfresco.com/jira/browse/ADF-4583'>ADF-4583</a>] - Upload dialog - RTL support
|
||||
</li>
|
||||
<li>[<a href='https://issues.alfresco.com/jira/browse/ADF-4584'>ADF-4584</a>] - Header RTL styling
|
||||
</li>
|
||||
<li>[<a href='https://issues.alfresco.com/jira/browse/ADF-4587'>ADF-4587</a>] - Fix e2e tests
|
||||
</li>
|
||||
<li>[<a href='https://issues.alfresco.com/jira/browse/ADF-4601'>ADF-4601</a>] - DemoShell - Side navigation RTL support
|
||||
</li>
|
||||
<li>[<a href='https://issues.alfresco.com/jira/browse/ADF-4614'>ADF-4614</a>] - User Preference Service in Process Workspace
|
||||
</li>
|
||||
<li>[<a href='https://issues.alfresco.com/jira/browse/ADF-4633'>ADF-4633</a>] - MatIcon directionality
|
||||
</li>
|
||||
<li>[<a href='https://issues.alfresco.com/jira/browse/ADF-4638'>ADF-4638</a>] - Import the new i18n language
|
||||
</li>
|
||||
<li>[<a href='https://issues.alfresco.com/jira/browse/ADF-4639'>ADF-4639</a>] - ADF CLI to create the third party licenses and npm audit report
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<h2> Feature Documentation
|
||||
</h2>
|
||||
<ul>
|
||||
<li>[<a href='https://issues.alfresco.com/jira/browse/ADF-4435'>ADF-4435</a>] - Information about claim and unclaim buttons is missing from task form cloud component
|
||||
</li>
|
||||
<li>[<a href='https://issues.alfresco.com/jira/browse/ADF-4450'>ADF-4450</a>] - Remove showSaveButton property from task form cloud component
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<h2> Feature Bug
|
||||
</h2>
|
||||
<ul>
|
||||
<li>[<a href='https://issues.alfresco.com/jira/browse/ADF-4309'>ADF-4309</a>] - [Process-Cloud] - Standalone Task - Can not claim a task after releasing it
|
||||
</li>
|
||||
<li>[<a href='https://issues.alfresco.com/jira/browse/ADF-4311'>ADF-4311</a>] - [Process-Cloud] - Incorrect label loaded for unclaim option -> "Resqueue" should be "Release"
|
||||
</li>
|
||||
<li>[<a href='https://issues.alfresco.com/jira/browse/ADF-4315'>ADF-4315</a>] - [Process Cloud] - The unclaimed task remains in wrong status
|
||||
</li>
|
||||
<li>[<a href='https://issues.alfresco.com/jira/browse/ADF-4433'>ADF-4433</a>] - The attached form is not displayed on a standalone task
|
||||
</li>
|
||||
<li>[<a href='https://issues.alfresco.com/jira/browse/ADF-4436'>ADF-4436</a>] - The implementation related to claim, unclaim, complete shouldn't be part of form cloud component
|
||||
</li>
|
||||
<li>[<a href='https://issues.alfresco.com/jira/browse/ADF-4437'>ADF-4437</a>] - showRefreshButton property shouldn't be part of task form cloud component
|
||||
</li>
|
||||
<li>[<a href='https://issues.alfresco.com/jira/browse/ADF-4439'>ADF-4439</a>] - Validation icon is displayed even when the form has invalid values
|
||||
</li>
|
||||
<li>[<a href='https://issues.alfresco.com/jira/browse/ADF-4440'>ADF-4440</a>] - Not able to see the form on a completed task
|
||||
</li>
|
||||
<li>[<a href='https://issues.alfresco.com/jira/browse/ADF-4441'>ADF-4441</a>] - Save button should be disabled when form fields values are invalid
|
||||
</li>
|
||||
<li>[<a href='https://issues.alfresco.com/jira/browse/ADF-4443'>ADF-4443</a>] - Able to complete a task that has invalid values on the form
|
||||
</li>
|
||||
<li>[<a href='https://issues.alfresco.com/jira/browse/ADF-4445'>ADF-4445</a>] - showSaveButton property is missing from form-cloud component
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<h2> Feature (Task)
|
||||
</h2>
|
||||
<ul>
|
||||
<li>[<a href='https://issues.alfresco.com/jira/browse/ADF-4568'>ADF-4568</a>] - Automate ADF-4269 - Task of a process cannot be completed if unassigned
|
||||
</li>
|
||||
<li>[<a href='https://issues.alfresco.com/jira/browse/ADF-4577'>ADF-4577</a>] - Automate ADF-4389 - Should display the validation message when Process definition has name property set to null
|
||||
</li>
|
||||
<li>[<a href='https://issues.alfresco.com/jira/browse/ADF-4580'>ADF-4580</a>] - Automate C309878
|
||||
</li>
|
||||
<li>[<a href='https://issues.alfresco.com/jira/browse/ADF-4600'>ADF-4600</a>] - Automate - Should be able to filter groups based on composite roles
|
||||
</li>
|
||||
<li>[<a href='https://issues.alfresco.com/jira/browse/ADF-4604'>ADF-4604</a>] - Fix process-filters-cloud
|
||||
</li>
|
||||
<li>[<a href='https://issues.alfresco.com/jira/browse/ADF-4607'>ADF-4607</a>] - Fix task-list-properties
|
||||
</li>
|
||||
<li>[<a href='https://issues.alfresco.com/jira/browse/ADF-4609'>ADF-4609</a>] - Fix task-form-cloud
|
||||
</li>
|
||||
<li>[<a href='https://issues.alfresco.com/jira/browse/ADF-4610'>ADF-4610</a>] - Fix people-group-cloud-filter-component
|
||||
</li>
|
||||
<li>[<a href='https://issues.alfresco.com/jira/browse/ADF-4613'>ADF-4613</a>] - Fix tag-component
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
|
||||
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.
|
||||
@@ -6,7 +6,7 @@ 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. |
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
---
|
||||
Title: Upgrade guides
|
||||
---
|
||||
|
||||
# Upgrade guides
|
||||
|
||||
Below are links to the upgrade guides notes for all released versions of ADF back to v2.6.0
|
||||
|
||||
- [Upgrading from ADF v2.6 to v3.0](upgrade26-30.md)
|
||||
- [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)
|
||||
@@ -0,0 +1,103 @@
|
||||
---
|
||||
Title: Upgrading from ADF v3.2 to v3.3
|
||||
---
|
||||
|
||||
# Upgrading from ADF v3.2 to v3.3
|
||||
|
||||
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.3.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.3.0",
|
||||
"@alfresco/adf-content-services": "3.3.0",
|
||||
"@alfresco/adf-process-services-cloud": "3.3.0",
|
||||
"@alfresco/adf-insights": "3.3.0",
|
||||
"@alfresco/js-api": "3.3.0",
|
||||
...
|
||||
```
|
||||
|
||||
2. Clean your old distribution and dependencies by deleting `node_modules` and `package-lock.json`.
|
||||
|
||||
3. Reinstall your dependencies
|
||||
```sh
|
||||
npm install
|
||||
```
|
||||
|
||||
## Using the localized date pipe
|
||||
|
||||
Date values are also localized in your ADF app. By default they are localized to en-US, although you can easily change this by adding the localization files provided by Angular.
|
||||
|
||||
If you want to use a different locale simply add the locale file for your region in your `app.module.ts`.
|
||||
|
||||
<!-- {% raw %} -->
|
||||
|
||||
import { registerLocaleData } from '@angular/common';
|
||||
import localeFr from '@angular/common/locales/fr';
|
||||
|
||||
registerLocaleData(localeFr);
|
||||
|
||||
<!-- {% endraw %} -->
|
||||
|
||||
Usage of the [localized date pipe](../core/pipes/localized-date.pipe.md).
|
||||
|
||||
<!-- {% raw %} -->
|
||||
|
||||
{{ date | adfLocalizedDate: format : locale }}
|
||||
|
||||
<!-- {% endraw %} -->
|
||||
|
||||
Find more info about this in the [Angular sDocs](https://angular.io/guide/i18n#setting-up-the-locale-of-your-app).
|
||||
@@ -15,6 +15,7 @@ on an item below to see the corresponding guide page.
|
||||
- [App extensions](app-extensions.md)
|
||||
- [Form Extensibility and Customisation](extensibility.md)
|
||||
- [Internationalization in ADF](internationalization.md)
|
||||
- [Localization in ADF](user-guide/localization.md)
|
||||
- [Theming](theming.md)
|
||||
- [Right-to-left language support](rtl-support.md)
|
||||
- [Transclusion](transclusion.md)
|
||||
|
||||
@@ -154,30 +154,6 @@ component's `.ts` file:
|
||||
|
||||
<!-- {% endraw %} -->
|
||||
|
||||
## Using the localized date pipe
|
||||
|
||||
Date values are also localized in your ADF app. By default they are localized to en-US, although you can easily change this by adding the localization files provided by Angular.
|
||||
|
||||
If you want to use a different locale simply add the locale file for your region in your `app.module.ts`.
|
||||
|
||||
<!-- {% raw %} -->
|
||||
|
||||
import { registerLocaleData } from '@angular/common';
|
||||
import localeFr from '@angular/common/locales/fr';
|
||||
|
||||
registerLocaleData(localeFr);
|
||||
|
||||
<!-- {% endraw %} -->
|
||||
|
||||
Usage of the [localized date pipe](../core/pipes/localized-date.pipe.md).
|
||||
<!-- {% raw %} -->
|
||||
|
||||
{{ date | adfLocalizedDate: format : locale }}
|
||||
|
||||
<!-- {% endraw %} -->
|
||||
|
||||
Find more info about this in the [Angular sDocs](https://angular.io/guide/i18n#setting-up-the-locale-of-your-app).
|
||||
|
||||
## Adding and replacing messages
|
||||
|
||||
The built-in translations certainly won't cover everything you will need for
|
||||
|
||||
@@ -0,0 +1,74 @@
|
||||
### Localization in ADF
|
||||
|
||||
Localization is the process of making something local in character or restricting it to a particular place.
|
||||
|
||||
Dates are not written the same around the world. That is where localizing a date comes in handy. ADF lets you dynamically change the way dates are written in your app so that they can adapt to to a specific region.
|
||||
|
||||
## Contents
|
||||
|
||||
- [Setting up the configuration in your app](#setting-up-the-configuration-in-your-app)
|
||||
- [Adding language support](#adding-language-support)
|
||||
- [Using the localized date pipe](#using-the-localized-date-pipe)
|
||||
- [Using the time ago pipe](#using-the-time-ago-pipe)
|
||||
|
||||
## Setting up the configuration in your app
|
||||
|
||||
You can overwrite the default values of this pipe by adding these properties to your ```app.config.json```:
|
||||
|
||||
```json
|
||||
"dateValues": {
|
||||
"defaultDateFormat": "mediumDate",
|
||||
"defaultDateTimeFormat": "MMM d, y, h:mm",
|
||||
"defaultLocale": "en-US"
|
||||
}
|
||||
```
|
||||
|
||||
| Name | Type | Description |
|
||||
| ---- | ---- | ----------- |
|
||||
| defaultDateFormat | string | The format to apply to date values |
|
||||
| defaultDateTimeFormat | string | The format to apply to date-time values |
|
||||
| defaultLocale | string | The locale id to apply |
|
||||
|
||||
|
||||
This configuration overwrites the values in the localized date pipe as well as other components to have more consistency across your app. However, you can still overwrite these values any time by using the pipe in your code.
|
||||
|
||||
## Adding language support
|
||||
|
||||
Date values are also localized in your ADF app. By default they are localized to en-US, although you can easily change this by adding the localization files provided by Angular.
|
||||
|
||||
If you want to use a different locale simply add the locale file for your region in your `app.module.ts`.
|
||||
|
||||
<!-- {% raw %} -->
|
||||
|
||||
import { registerLocaleData } from '@angular/common';
|
||||
import localeFr from '@angular/common/locales/fr';
|
||||
|
||||
registerLocaleData(localeFr);
|
||||
|
||||
<!-- {% endraw %} -->
|
||||
|
||||
## Using the localized date pipe
|
||||
|
||||
Converts a date to a given format and locale.
|
||||
|
||||
<!-- {% raw %} -->
|
||||
|
||||
{{ date | adfLocalizedDate: format : locale }}
|
||||
|
||||
<!-- {% endraw %} -->
|
||||
|
||||
Usage of the [localized date pipe](../core/pipes/localized-date.pipe.md).
|
||||
|
||||
## Using the time ago pipe
|
||||
|
||||
Converts a recent past date into a number of days ago.
|
||||
|
||||
<!-- {% raw %} -->
|
||||
|
||||
{{ date | adfTimeAgo }}
|
||||
|
||||
<!-- {% endraw %} -->
|
||||
|
||||
Usage of the [time ago pipe](../core/pipes/time-ago.pipe.md).
|
||||
|
||||
Find more info about localization in the [Angular Docs](https://angular.io/guide/i18n#setting-up-the-locale-of-your-app).
|
||||
@@ -10,9 +10,11 @@ ADF currently has partial support for languages that are written from right to l
|
||||
This is handled automatically by the framework and can be configured through `app.config.json`.
|
||||
|
||||
## Configuration
|
||||
|
||||
Since directionality cannot be inferred from information about the locale, there is a one-to-one relation between locale and language configuration in `app.config.json`.
|
||||
|
||||
The minimum configuration is to declare the `"direction": "rtl"` alt the level of the language entry associated with your browser locale. Omitting `direction` or failing to map it with a language key will default to `ltr`.
|
||||
|
||||
```json
|
||||
// browser locale 'ar'
|
||||
|
||||
@@ -33,7 +35,6 @@ The minimum configuration is to declare the `"direction": "rtl"` alt the level o
|
||||
If it is desired to start the application with a certain language locale and not default to browser locale, we can specify the `locale` at the configuration level and associate it with a language entry.
|
||||
|
||||
```json
|
||||
|
||||
{
|
||||
...
|
||||
"locale": "ar",
|
||||
@@ -48,9 +49,10 @@ If it is desired to start the application with a certain language locale and not
|
||||
...
|
||||
}
|
||||
```
|
||||
|
||||
## UserPreferencesService
|
||||
|
||||
For cases where a component logic depends on direction values over time, `UserPreferencesService` can be used to get information about the current direction value.
|
||||
For cases where a component logic depends on direction values over time, [`UserPreferencesService`](../core/services/user-preferences.service.md) can be used to get information about the current direction value.
|
||||
|
||||
```typescript
|
||||
import { Component, OnInit } from '@angular/core';
|
||||
|
||||
@@ -12,6 +12,7 @@ backend services have been tested with each released version of ADF.
|
||||
|
||||
## Versions
|
||||
|
||||
- [v3.3.0](#v330)
|
||||
- [v3.2.1](#v321)
|
||||
- [v3.2.0](#v320)
|
||||
- [v3.1.0](#v310)
|
||||
@@ -24,15 +25,17 @@ backend services have been tested with each released version of ADF.
|
||||
- [v2.1.0](#v210)
|
||||
- [v2.0.0](#v200)
|
||||
|
||||
## v3.2.1
|
||||
## v3.3.0
|
||||
|
||||
**Release:** 2019-05-09<br/>
|
||||
**Release:** 2019-07-17<br/>
|
||||
|
||||
<!--v321 start-->
|
||||
<!--v330 start-->
|
||||
|
||||
- Compliance to Activiti Cloud 7.1 endpoints.
|
||||
- [Form definition selector cloud component](process-services-cloud/components/form-definition-selector-cloud.component.md)
|
||||
- [Localized date pipe](core/pipes/localized-date.pipe.md)
|
||||
- [Notification history component](core/components/notification-history.component.md)
|
||||
|
||||
<!--v321 end-->
|
||||
<!--v330 end-->
|
||||
|
||||
## v3.2.0
|
||||
|
||||
@@ -46,6 +49,7 @@ backend services have been tested with each released version of ADF.
|
||||
- [Form cloud component](process-services-cloud/components/form-cloud.component.md)
|
||||
- [Form cloud service](process-services-cloud/services/form-cloud.service.md)
|
||||
- [Json cell component](core/components/json-cell.component.md)
|
||||
- [Multi value pipe](core/pipes/multi-value.pipe.md)
|
||||
- [Task form cloud component](process-services-cloud/components/task-form-cloud.component.md)
|
||||
|
||||
<!--v320 end-->
|
||||
@@ -309,7 +313,6 @@ backend services have been tested with each released version of ADF.
|
||||
- [Folder actions service](content-services/services/folder-actions.service.md)
|
||||
- [Folder create directive](content-services/directives/folder-create.directive.md)
|
||||
- [Folder edit directive](content-services/directives/folder-edit.directive.md)
|
||||
- [Form definition selector cloud component](process-services-cloud/components/form-definition-selector-cloud.component.md)
|
||||
- [Form field component](core/components/form-field.component.md)
|
||||
- [Form field model](core/models/form-field.model.md)
|
||||
- [Form list component](core/components/form-list.component.md)
|
||||
@@ -329,7 +332,6 @@ backend services have been tested with each released version of ADF.
|
||||
- [Login component](core/components/login.component.md)
|
||||
- [Logout directive](core/directives/logout.directive.md)
|
||||
- [Mime type icon pipe](core/pipes/mime-type-icon.pipe.md)
|
||||
- [Multi value pipe](core/pipes/multi-value.pipe.md)
|
||||
- [Node delete directive](core/directives/node-delete.directive.md)
|
||||
- [Node favorite directive](core/directives/node-favorite.directive.md)
|
||||
- [Node name tooltip pipe](core/pipes/node-name-tooltip.pipe.md)
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
---
|
||||
Title: Audit information
|
||||
Github only: true
|
||||
---
|
||||
|
||||
# License information
|
||||
|
||||
The pages linked below contain the audit for all third party dependencies of ADF.
|
||||
|
||||
- [ADF v3.3.0](audit-info-3.3.0.md)
|
||||
@@ -0,0 +1,27 @@
|
||||
---
|
||||
Title: Audit info, Alfresco Angular components 3.3.0
|
||||
---
|
||||
|
||||
# Audit information for Alfresco Angular components 3.3.0
|
||||
|
||||
This page lists the npm audit of the project in the version Alfresco Angular components 3.3.0
|
||||
|
||||
## Risks
|
||||
|
||||
- Critical risk dependencies 0
|
||||
- High risk dependencies 0
|
||||
- Moderate risk dependencies 4
|
||||
- Low risk dependencies 1
|
||||
|
||||
Dependencies analyzed 64965
|
||||
|
||||
## Libraries
|
||||
|
||||
|
||||
| Severity | Vulnerable versions | Module |
|
||||
| --- | --- | --- |
|
||||
|low | "<4.17.5" | lodash |
|
||||
|moderate | "<4.17.11" | lodash |
|
||||
|moderate | ">=0.3.14 <0.6.2" | marked |
|
||||
|moderate | "<0.18.1" | axios |
|
||||
|
||||
@@ -15,22 +15,17 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import { LoginPage } from '@alfresco/adf-testing';
|
||||
import { LoginPage, UploadActions, StringUtil } from '@alfresco/adf-testing';
|
||||
import { ContentServicesPage } from '../../pages/adf/contentServicesPage';
|
||||
import { ViewerPage } from '../../pages/adf/viewerPage';
|
||||
import { CommentsPage } from '../../pages/adf/commentsPage';
|
||||
import { NavigationBarPage } from '../../pages/adf/navigationBarPage';
|
||||
|
||||
import { AcsUserModel } from '../../models/ACS/acsUserModel';
|
||||
import { FileModel } from '../../models/ACS/fileModel';
|
||||
|
||||
import { browser } from 'protractor';
|
||||
import resources = require('../../util/resources');
|
||||
import CONSTANTS = require('../../util/constants');
|
||||
import { StringUtil } from '@alfresco/adf-testing';
|
||||
|
||||
import { AlfrescoApiCompatibility as AlfrescoApi } from '@alfresco/js-api';
|
||||
import { UploadActions } from '../../actions/ACS/upload.actions';
|
||||
|
||||
describe('Comment Component', () => {
|
||||
|
||||
@@ -39,16 +34,19 @@ describe('Comment Component', () => {
|
||||
const viewerPage = new ViewerPage();
|
||||
const commentsPage = new CommentsPage();
|
||||
const navigationBar = new NavigationBarPage();
|
||||
|
||||
const acsUser = new AcsUserModel();
|
||||
|
||||
let userFullName, nodeId;
|
||||
|
||||
const pngFileModel = new FileModel({
|
||||
'name': resources.Files.ADF_DOCUMENTS.PNG.file_name,
|
||||
'location': resources.Files.ADF_DOCUMENTS.PNG.file_location
|
||||
});
|
||||
|
||||
const uploadActions = new UploadActions();
|
||||
let nodeId, userFullName;
|
||||
this.alfrescoJsApi = new AlfrescoApi({
|
||||
provider: 'ECM',
|
||||
hostEcm: browser.params.testConfig.adf.url
|
||||
});
|
||||
const uploadActions = new UploadActions(this.alfrescoJsApi);
|
||||
|
||||
const comments = {
|
||||
first: 'This is a comment',
|
||||
@@ -64,11 +62,6 @@ describe('Comment Component', () => {
|
||||
|
||||
beforeAll(async (done) => {
|
||||
|
||||
this.alfrescoJsApi = new AlfrescoApi({
|
||||
provider: 'ECM',
|
||||
hostEcm: browser.params.testConfig.adf.url
|
||||
});
|
||||
|
||||
await this.alfrescoJsApi.login(browser.params.testConfig.adf.adminEmail, browser.params.testConfig.adf.adminPassword);
|
||||
await this.alfrescoJsApi.core.peopleApi.addPerson(acsUser);
|
||||
|
||||
@@ -79,7 +72,7 @@ describe('Comment Component', () => {
|
||||
|
||||
await this.alfrescoJsApi.login(acsUser.id, acsUser.password);
|
||||
|
||||
const pngUploadedFile = await uploadActions.uploadFile(this.alfrescoJsApi, pngFileModel.location, pngFileModel.name, '-my-');
|
||||
const pngUploadedFile = await uploadActions.uploadFile(pngFileModel.location, pngFileModel.name, '-my-');
|
||||
|
||||
nodeId = pngUploadedFile.entry.id;
|
||||
|
||||
@@ -96,7 +89,7 @@ describe('Comment Component', () => {
|
||||
afterEach(async (done) => {
|
||||
try {
|
||||
await this.alfrescoJsApi.login(browser.params.testConfig.adf.adminEmail, browser.params.testConfig.adf.adminPassword);
|
||||
await uploadActions.deleteFilesOrFolder(this.alfrescoJsApi, nodeId);
|
||||
await uploadActions.deleteFileOrFolder(nodeId);
|
||||
} catch (error) {
|
||||
|
||||
}
|
||||
@@ -193,9 +186,9 @@ describe('Comment Component', () => {
|
||||
role: CONSTANTS.CS_USER_ROLES.CONSUMER
|
||||
});
|
||||
|
||||
pngUploadedFile = await uploadActions.uploadFile(this.alfrescoJsApi, pngFileModel.location, pngFileModel.name, site.entry.guid);
|
||||
pngUploadedFile = await uploadActions.uploadFile(pngFileModel.location, pngFileModel.name, site.entry.guid);
|
||||
|
||||
await loginPage.loginToContentServicesUsingUserModel(acsUser);
|
||||
loginPage.loginToContentServicesUsingUserModel(acsUser);
|
||||
|
||||
navigationBar.clickContentServicesButton();
|
||||
|
||||
@@ -203,10 +196,7 @@ describe('Comment Component', () => {
|
||||
});
|
||||
|
||||
afterAll((done) => {
|
||||
try {
|
||||
uploadActions.deleteFilesOrFolder(this.alfrescoJsApi, pngUploadedFile.entry.id);
|
||||
} catch (error) {
|
||||
}
|
||||
uploadActions.deleteFileOrFolder(pngUploadedFile.entry.id);
|
||||
|
||||
done();
|
||||
});
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
|
||||
import { LoginPage, NotificationHistoryPage } from '@alfresco/adf-testing';
|
||||
import { ContentServicesPage } from '../../pages/adf/contentServicesPage';
|
||||
import { CreateFolderDialog } from '../../pages/adf/dialog/createFolderDialog';
|
||||
import { FolderDialog } from '../../pages/adf/dialog/folderDialog';
|
||||
import { MetadataViewPage } from '../../pages/adf/metadataViewPage';
|
||||
import { AcsUserModel } from '../../models/ACS/acsUserModel';
|
||||
import { AlfrescoApiCompatibility as AlfrescoApi } from '@alfresco/js-api';
|
||||
@@ -27,10 +27,9 @@ describe('Create folder directive', function () {
|
||||
|
||||
const loginPage = new LoginPage();
|
||||
const contentServicesPage = new ContentServicesPage();
|
||||
const createFolderDialog = new CreateFolderDialog();
|
||||
const createFolderDialog = new FolderDialog();
|
||||
const notificationHistoryPage = new NotificationHistoryPage();
|
||||
const metadataViewPage = new MetadataViewPage();
|
||||
|
||||
const acsUser = new AcsUserModel();
|
||||
|
||||
beforeAll(async (done) => {
|
||||
@@ -74,11 +73,11 @@ describe('Create folder directive', function () {
|
||||
const folderName = 'NotEnableFolder';
|
||||
contentServicesPage.clickOnCreateNewFolder();
|
||||
|
||||
createFolderDialog.checkCreateBtnIsDisabled();
|
||||
createFolderDialog.checkCreateUpdateBtnIsDisabled();
|
||||
|
||||
createFolderDialog.addFolderName(folderName);
|
||||
|
||||
createFolderDialog.checkCreateBtnIsEnabled();
|
||||
createFolderDialog.checkCreateUpdateBtnIsEnabled();
|
||||
});
|
||||
|
||||
it('[C260156] Should not be possible create two folder with the same name', () => {
|
||||
@@ -113,7 +112,7 @@ describe('Create folder directive', function () {
|
||||
createFolderDialog.addFolderName(folderName);
|
||||
createFolderDialog.addFolderDescription(description);
|
||||
|
||||
createFolderDialog.clickOnCreateButton();
|
||||
createFolderDialog.clickOnCreateUpdateButton();
|
||||
|
||||
contentServicesPage.checkContentIsDisplayed(folderName);
|
||||
|
||||
@@ -127,20 +126,20 @@ describe('Create folder directive', function () {
|
||||
contentServicesPage.clickOnCreateNewFolder();
|
||||
|
||||
createFolderDialog.addFolderName('*');
|
||||
createFolderDialog.checkCreateBtnIsDisabled();
|
||||
createFolderDialog.checkCreateUpdateBtnIsDisabled();
|
||||
createFolderDialog.addFolderName('<');
|
||||
createFolderDialog.checkCreateBtnIsDisabled();
|
||||
createFolderDialog.checkCreateUpdateBtnIsDisabled();
|
||||
createFolderDialog.addFolderName('>');
|
||||
createFolderDialog.checkCreateBtnIsDisabled();
|
||||
createFolderDialog.checkCreateUpdateBtnIsDisabled();
|
||||
createFolderDialog.addFolderName('\\');
|
||||
createFolderDialog.checkCreateBtnIsDisabled();
|
||||
createFolderDialog.checkCreateUpdateBtnIsDisabled();
|
||||
createFolderDialog.addFolderName('/');
|
||||
createFolderDialog.checkCreateBtnIsDisabled();
|
||||
createFolderDialog.checkCreateUpdateBtnIsDisabled();
|
||||
createFolderDialog.addFolderName('?');
|
||||
createFolderDialog.checkCreateBtnIsDisabled();
|
||||
createFolderDialog.checkCreateUpdateBtnIsDisabled();
|
||||
createFolderDialog.addFolderName(':');
|
||||
createFolderDialog.checkCreateBtnIsDisabled();
|
||||
createFolderDialog.checkCreateUpdateBtnIsDisabled();
|
||||
createFolderDialog.addFolderName('|');
|
||||
createFolderDialog.checkCreateBtnIsDisabled();
|
||||
createFolderDialog.checkCreateUpdateBtnIsDisabled();
|
||||
});
|
||||
});
|
||||
|
||||
@@ -18,13 +18,10 @@
|
||||
import { ContentServicesPage } from '../../pages/adf/contentServicesPage';
|
||||
import { AcsUserModel } from '../../models/ACS/acsUserModel';
|
||||
import { FileModel } from '../../models/ACS/fileModel';
|
||||
import { LoginPage, FileBrowserUtil, BrowserVisibility } from '@alfresco/adf-testing';
|
||||
|
||||
import { LoginPage, UploadActions, BrowserVisibility, FileBrowserUtil } from '@alfresco/adf-testing';
|
||||
import { browser } from 'protractor';
|
||||
import resources = require('../../util/resources');
|
||||
|
||||
import { AlfrescoApiCompatibility as AlfrescoApi } from '@alfresco/js-api';
|
||||
import { UploadActions } from '../../actions/ACS/upload.actions';
|
||||
import { NavigationBarPage } from '../../pages/adf/navigationBarPage';
|
||||
import { FolderModel } from '../../models/ACS/folderModel';
|
||||
|
||||
@@ -62,27 +59,26 @@ describe('Version component actions', () => {
|
||||
'location': resources.Files.ADF_DOCUMENTS.TEXT_FOLDER.folder_location
|
||||
});
|
||||
|
||||
this.alfrescoJsApi = new AlfrescoApi({
|
||||
provider: 'ECM',
|
||||
hostEcm: browser.params.testConfig.adf.url
|
||||
});
|
||||
const uploadActions = new UploadActions(this.alfrescoJsApi);
|
||||
|
||||
beforeAll(async (done) => {
|
||||
|
||||
const uploadActions = new UploadActions();
|
||||
|
||||
this.alfrescoJsApi = new AlfrescoApi({
|
||||
provider: 'ECM',
|
||||
hostEcm: browser.params.testConfig.adf.url
|
||||
});
|
||||
|
||||
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 uploadActions.uploadFile(this.alfrescoJsApi, txtFileModel.location, txtFileModel.name, '-my-');
|
||||
await uploadActions.uploadFile(this.alfrescoJsApi, file0BytesModel.location, file0BytesModel.name, '-my-');
|
||||
await uploadActions.uploadFile(this.alfrescoJsApi, txtFileComma.location, txtFileComma.name, '-my-');
|
||||
await uploadActions.uploadFile( txtFileModel.location, txtFileModel.name, '-my-');
|
||||
await uploadActions.uploadFile(file0BytesModel.location, file0BytesModel.name, '-my-');
|
||||
await uploadActions.uploadFile(txtFileComma.location, txtFileComma.name, '-my-');
|
||||
|
||||
const textFolderUploaded = await uploadActions.createFolder(this.alfrescoJsApi, folderInfo.name, '-my-');
|
||||
await uploadActions.uploadFolder(this.alfrescoJsApi, folderInfo.location, textFolderUploaded.entry.id);
|
||||
const textFolderUploaded = await uploadActions.createFolder(folderInfo.name, '-my-');
|
||||
await uploadActions.uploadFolder(folderInfo.location, textFolderUploaded.entry.id);
|
||||
|
||||
await uploadActions.createFolder(this.alfrescoJsApi, folderSecond.name, '-my-');
|
||||
await uploadActions.createFolder(folderSecond.name, '-my-');
|
||||
|
||||
await loginPage.loginToContentServicesUsingUserModel(acsUser);
|
||||
|
||||
|
||||
@@ -0,0 +1,244 @@
|
||||
/*!
|
||||
* @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 { BrowserActions, LoginPage, NotificationHistoryPage, StringUtil, UploadActions } from '@alfresco/adf-testing';
|
||||
import { ContentServicesPage } from '../../pages/adf/contentServicesPage';
|
||||
import { FolderDialog } from '../../pages/adf/dialog/folderDialog';
|
||||
import { AcsUserModel } from '../../models/ACS/acsUserModel';
|
||||
import { AlfrescoApiCompatibility as AlfrescoApi } from '@alfresco/js-api';
|
||||
import { browser, protractor } from 'protractor';
|
||||
import { NavigationBarPage } from '../../pages/adf/navigationBarPage';
|
||||
import { FileModel } from '../../models/ACS/fileModel';
|
||||
import resources = require('../../util/resources');
|
||||
|
||||
describe('Edit folder directive', function () {
|
||||
|
||||
const loginPage = new LoginPage();
|
||||
const contentServicesPage = new ContentServicesPage();
|
||||
const editFolderDialog = new FolderDialog();
|
||||
const acsUser = new AcsUserModel();
|
||||
const anotherAcsUser = new AcsUserModel();
|
||||
const navigationBarPage = new NavigationBarPage();
|
||||
const notificationHistoryPage = new NotificationHistoryPage();
|
||||
this.alfrescoJsApi = new AlfrescoApi({
|
||||
provider: 'ECM',
|
||||
hostEcm: browser.params.testConfig.adf.url
|
||||
});
|
||||
|
||||
const pdfFile = new FileModel({
|
||||
'name': resources.Files.ADF_DOCUMENTS.PDF.file_name,
|
||||
'location': resources.Files.ADF_DOCUMENTS.PDF.file_location
|
||||
});
|
||||
|
||||
const uploadActions = new UploadActions(this.alfrescoJsApi);
|
||||
const updateFolderName = StringUtil.generateRandomString(5);
|
||||
let editFolder, anotherFolder, filePdfNode, subFolder;
|
||||
|
||||
beforeAll(async (done) => {
|
||||
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(anotherAcsUser);
|
||||
await this.alfrescoJsApi.login(acsUser.id, acsUser.password);
|
||||
|
||||
editFolder = await uploadActions.createFolder(StringUtil.generateRandomString(5), '-my-');
|
||||
anotherFolder = await uploadActions.createFolder(StringUtil.generateRandomString(5), '-my-');
|
||||
subFolder = await uploadActions.createFolder(StringUtil.generateRandomString(5), editFolder.entry.id);
|
||||
filePdfNode = await uploadActions.uploadFile(pdfFile.location, pdfFile.name, '-my-');
|
||||
|
||||
await this.alfrescoJsApi.core.nodesApi.updateNode(editFolder.entry.id,
|
||||
|
||||
{
|
||||
permissions: {
|
||||
locallySet: [{
|
||||
authorityId: anotherAcsUser.getId(),
|
||||
name: 'Consumer',
|
||||
accessStatus: 'ALLOWED'
|
||||
}]
|
||||
}
|
||||
});
|
||||
|
||||
await loginPage.loginToContentServicesUsingUserModel(acsUser);
|
||||
|
||||
done();
|
||||
});
|
||||
|
||||
afterAll(async (done) => {
|
||||
await this.alfrescoJsApi.login(browser.params.testConfig.adf.adminEmail, browser.params.testConfig.adf.adminPassword);
|
||||
await uploadActions.deleteFileOrFolder(editFolder.entry.id);
|
||||
await uploadActions.deleteFileOrFolder(anotherFolder.entry.id);
|
||||
await uploadActions.deleteFileOrFolder(filePdfNode.entry.id);
|
||||
done();
|
||||
});
|
||||
|
||||
beforeEach(async (done) => {
|
||||
navigationBarPage.clickHomeButton();
|
||||
navigationBarPage.clickContentServicesButton();
|
||||
contentServicesPage.getContentList().dataTablePage().waitTillContentLoaded();
|
||||
done();
|
||||
});
|
||||
|
||||
it('[C260161] Update folder - Cancel button', async () => {
|
||||
contentServicesPage.getContentList().dataTablePage().selectRow('Display name', editFolder.entry.name);
|
||||
contentServicesPage.getContentList().dataTablePage().checkRowIsSelected('Display name', editFolder.entry.name);
|
||||
contentServicesPage.clickOnEditFolder();
|
||||
editFolderDialog.checkFolderDialogIsDisplayed();
|
||||
expect(editFolderDialog.getDialogTitle()).toBe('Edit folder');
|
||||
expect(editFolderDialog.getFolderName()).toBe(editFolder.entry.name);
|
||||
editFolderDialog.checkCreateUpdateBtnIsEnabled();
|
||||
editFolderDialog.checkCancelBtnIsEnabled();
|
||||
editFolderDialog.clickOnCancelButton();
|
||||
editFolderDialog.checkFolderDialogIsNotDisplayed();
|
||||
});
|
||||
|
||||
it('[C260162] Update folder - Introducing letters', async () => {
|
||||
contentServicesPage.getContentList().dataTablePage().checkContentIsDisplayed('Display name', editFolder.entry.name);
|
||||
contentServicesPage.getContentList().dataTablePage().selectRow('Display name', editFolder.entry.name);
|
||||
contentServicesPage.getContentList().dataTablePage().checkRowIsSelected('Display name', editFolder.entry.name);
|
||||
expect(contentServicesPage.checkEditFolderButtonIsEnabled()).toBe(true);
|
||||
contentServicesPage.clickOnEditFolder();
|
||||
editFolderDialog.checkFolderDialogIsDisplayed();
|
||||
editFolderDialog.checkCreateUpdateBtnIsEnabled();
|
||||
editFolderDialog.addFolderName(editFolder.entry.name + 'a');
|
||||
editFolderDialog.checkCreateUpdateBtnIsEnabled();
|
||||
editFolderDialog.clickOnCancelButton();
|
||||
editFolderDialog.checkFolderDialogIsNotDisplayed();
|
||||
contentServicesPage.getDocumentList().dataTablePage().checkContentIsDisplayed('Display name', editFolder.entry.name);
|
||||
});
|
||||
|
||||
it('[C260163] Update folder name with an existing one', async () => {
|
||||
contentServicesPage.getContentList().dataTablePage().checkContentIsDisplayed('Display name', editFolder.entry.name);
|
||||
contentServicesPage.getContentList().dataTablePage().selectRow('Display name', editFolder.entry.name);
|
||||
contentServicesPage.getContentList().dataTablePage().checkRowIsSelected('Display name', editFolder.entry.name);
|
||||
expect(contentServicesPage.checkEditFolderButtonIsEnabled()).toBe(true);
|
||||
contentServicesPage.clickOnEditFolder();
|
||||
editFolderDialog.checkFolderDialogIsDisplayed();
|
||||
editFolderDialog.checkCreateUpdateBtnIsEnabled();
|
||||
editFolderDialog.addFolderName(anotherFolder.entry.name);
|
||||
editFolderDialog.checkCreateUpdateBtnIsEnabled();
|
||||
editFolderDialog.clickOnCreateUpdateButton();
|
||||
editFolderDialog.checkFolderDialogIsDisplayed();
|
||||
notificationHistoryPage.checkNotifyContains('There\'s already a folder with this name. Try a different name.');
|
||||
});
|
||||
|
||||
it('[C260164] Edit Folder - Unsupported characters', async () => {
|
||||
contentServicesPage.getContentList().dataTablePage().checkContentIsDisplayed('Display name', editFolder.entry.name);
|
||||
contentServicesPage.getContentList().dataTablePage().selectRow('Display name', editFolder.entry.name);
|
||||
contentServicesPage.getContentList().dataTablePage().checkRowIsSelected('Display name', editFolder.entry.name);
|
||||
contentServicesPage.clickOnEditFolder();
|
||||
editFolderDialog.checkFolderDialogIsDisplayed();
|
||||
|
||||
editFolderDialog.addFolderName('a*"<>\\/?:|');
|
||||
expect(editFolderDialog.getValidationMessage()).toBe('Folder name can\'t contain these characters * " < > \\ / ? : |');
|
||||
editFolderDialog.checkCreateUpdateBtnIsDisabled();
|
||||
|
||||
editFolderDialog.addFolderName('a.a');
|
||||
editFolderDialog.checkValidationMessageIsNotDisplayed();
|
||||
editFolderDialog.checkCreateUpdateBtnIsEnabled();
|
||||
|
||||
editFolderDialog.addFolderName('a.');
|
||||
expect(editFolderDialog.getValidationMessage()).toBe('Folder name can\'t end with a period .');
|
||||
editFolderDialog.checkCreateUpdateBtnIsDisabled();
|
||||
|
||||
editFolderDialog.getFolderNameField().clear();
|
||||
editFolderDialog.getFolderNameField().sendKeys(protractor.Key.SPACE);
|
||||
expect(editFolderDialog.getValidationMessage()).toBe('Folder name can\'t contain only spaces');
|
||||
editFolderDialog.checkCreateUpdateBtnIsDisabled();
|
||||
|
||||
editFolderDialog.addFolderName(editFolder.entry.name);
|
||||
editFolderDialog.addFolderDescription('a*"<>\\/?:|');
|
||||
editFolderDialog.checkValidationMessageIsNotDisplayed();
|
||||
editFolderDialog.checkCreateUpdateBtnIsEnabled();
|
||||
|
||||
editFolderDialog.addFolderDescription('a.');
|
||||
editFolderDialog.checkValidationMessageIsNotDisplayed();
|
||||
editFolderDialog.checkCreateUpdateBtnIsEnabled();
|
||||
|
||||
editFolderDialog.addFolderDescription('a.a');
|
||||
editFolderDialog.checkValidationMessageIsNotDisplayed();
|
||||
editFolderDialog.checkCreateUpdateBtnIsEnabled();
|
||||
|
||||
editFolderDialog.getFolderDescriptionField().sendKeys(protractor.Key.SPACE);
|
||||
editFolderDialog.checkValidationMessageIsNotDisplayed();
|
||||
editFolderDialog.checkCreateUpdateBtnIsEnabled();
|
||||
editFolderDialog.clickOnCancelButton();
|
||||
editFolderDialog.checkFolderDialogIsNotDisplayed();
|
||||
|
||||
});
|
||||
|
||||
it('[C260166] Enable/Disable edit folder icon - when file selected', async () => {
|
||||
expect(contentServicesPage.getDocumentList().dataTablePage().getNumberOfSelectedRows()).toBe(0);
|
||||
expect(contentServicesPage.checkEditFolderButtonIsEnabled()).toBe(false);
|
||||
contentServicesPage.getContentList().dataTablePage().checkContentIsDisplayed('Display name', filePdfNode.entry.name);
|
||||
contentServicesPage.getContentList().dataTablePage().selectRow('Display name', filePdfNode.entry.name);
|
||||
contentServicesPage.getContentList().dataTablePage().checkRowIsSelected('Display name', filePdfNode.entry.name);
|
||||
expect(contentServicesPage.checkEditFolderButtonIsEnabled()).toBe(false);
|
||||
|
||||
});
|
||||
|
||||
it('[C260166] Enable/Disable edit folder icon - when multiple folders selected', async () => {
|
||||
contentServicesPage.clickMultiSelectToggle();
|
||||
contentServicesPage.getContentList().dataTablePage().waitTillContentLoaded();
|
||||
contentServicesPage.getContentList().dataTablePage().checkAllRowsButtonIsDisplayed().checkAllRows();
|
||||
contentServicesPage.getContentList().dataTablePage().waitTillContentLoaded();
|
||||
contentServicesPage.getContentList().dataTablePage().checkRowIsChecked('Display name', editFolder.entry.name);
|
||||
contentServicesPage.getContentList().dataTablePage().checkRowIsChecked('Display name', anotherFolder.entry.name);
|
||||
contentServicesPage.getContentList().dataTablePage().clickCheckbox('Display name', filePdfNode.entry.name);
|
||||
contentServicesPage.getContentList().dataTablePage().checkRowIsNotChecked('Display name', filePdfNode.entry.name);
|
||||
expect(contentServicesPage.getContentList().dataTablePage().getNumberOfSelectedRows()).toBe(2);
|
||||
expect(contentServicesPage.checkEditFolderButtonIsEnabled()).toBe(false);
|
||||
});
|
||||
|
||||
it('[C260166] Enable/Disable edit folder icon - when single folder selected', async () => {
|
||||
expect(contentServicesPage.getDocumentList().dataTablePage().getNumberOfSelectedRows()).toBe(0);
|
||||
contentServicesPage.getContentList().dataTablePage().selectRow('Display name', editFolder.entry.name);
|
||||
contentServicesPage.getContentList().dataTablePage().checkRowIsSelected('Display name', editFolder.entry.name);
|
||||
expect(contentServicesPage.getContentList().dataTablePage().getNumberOfSelectedRows()).toBe(1);
|
||||
expect(contentServicesPage.checkEditFolderButtonIsEnabled()).toBe(true);
|
||||
});
|
||||
|
||||
it('[C260165] Update folder name with non-existing one', async () => {
|
||||
contentServicesPage.getContentList().dataTablePage().checkContentIsDisplayed('Display name', editFolder.entry.name);
|
||||
contentServicesPage.getContentList().dataTablePage().selectRow('Display name', editFolder.entry.name);
|
||||
contentServicesPage.getContentList().dataTablePage().checkRowIsSelected('Display name', editFolder.entry.name);
|
||||
contentServicesPage.clickOnEditFolder();
|
||||
editFolderDialog.checkFolderDialogIsDisplayed();
|
||||
editFolderDialog.addFolderName(updateFolderName);
|
||||
editFolderDialog.checkCreateUpdateBtnIsEnabled();
|
||||
editFolderDialog.clickOnCreateUpdateButton();
|
||||
editFolderDialog.checkFolderDialogIsNotDisplayed();
|
||||
contentServicesPage.getDocumentList().dataTablePage().checkContentIsDisplayed('Display name', updateFolderName);
|
||||
});
|
||||
|
||||
describe('Edit Folder - no permission', () => {
|
||||
|
||||
beforeEach(async (done) => {
|
||||
loginPage.loginToContentServicesUsingUserModel(anotherAcsUser);
|
||||
BrowserActions.getUrl(browser.params.testConfig.adf.url + '/files/' + editFolder.entry.id);
|
||||
contentServicesPage.getContentList().dataTablePage().waitTillContentLoaded();
|
||||
done();
|
||||
});
|
||||
|
||||
it('[C260167] Edit folder without permission', async () => {
|
||||
contentServicesPage.getContentList().dataTablePage().checkContentIsDisplayed('Display name', subFolder.entry.name);
|
||||
contentServicesPage.getContentList().dataTablePage().selectRow('Display name', subFolder.entry.name);
|
||||
contentServicesPage.getContentList().dataTablePage().checkRowIsSelected('Display name', subFolder.entry.name);
|
||||
expect(contentServicesPage.checkEditFolderButtonIsEnabled()).toBe(false);
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
});
|
||||
@@ -0,0 +1,220 @@
|
||||
/*!
|
||||
* @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 { ContentNodeSelectorDialogPage, LoginPage, StringUtil, UploadActions } from '@alfresco/adf-testing';
|
||||
import { ContentServicesPage } from '../../pages/adf/contentServicesPage';
|
||||
|
||||
import { AcsUserModel } from '../../models/ACS/acsUserModel';
|
||||
import { AlfrescoApiCompatibility as AlfrescoApi } from '@alfresco/js-api';
|
||||
import { browser } from 'protractor';
|
||||
import { FileModel } from '../../models/ACS/fileModel';
|
||||
import resources = require('../../util/resources');
|
||||
import { NavigationBarPage } from '../../pages/adf/navigationBarPage';
|
||||
import { CustomSources } from '../../pages/adf/demo-shell/customSourcesPage';
|
||||
import { TrashcanPage } from '../../pages/adf/trashcanPage';
|
||||
|
||||
describe('Favorite directive', function () {
|
||||
|
||||
const loginPage = new LoginPage();
|
||||
const contentServicesPage = new ContentServicesPage();
|
||||
const navigationBarPage = new NavigationBarPage();
|
||||
const acsUser = new AcsUserModel();
|
||||
const customSourcesPage = new CustomSources();
|
||||
const trashcanPage = new TrashcanPage();
|
||||
const contentListPage = contentServicesPage.getDocumentList();
|
||||
const contentNodeSelector = new ContentNodeSelectorDialogPage();
|
||||
this.alfrescoJsApi = new AlfrescoApi({
|
||||
provider: 'ECM',
|
||||
hostEcm: browser.params.testConfig.adf.url
|
||||
});
|
||||
const pdfFile = new FileModel({
|
||||
'name': resources.Files.ADF_DOCUMENTS.PDF.file_name,
|
||||
'location': resources.Files.ADF_DOCUMENTS.PDF.file_location
|
||||
});
|
||||
|
||||
const uploadActions = new UploadActions(this.alfrescoJsApi);
|
||||
let testFolder1, testFolder2, testFolder3, testFolder4, testFile;
|
||||
|
||||
beforeAll(async (done) => {
|
||||
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);
|
||||
|
||||
testFolder1 = await uploadActions.createFolder(StringUtil.generateRandomString(5), '-my-');
|
||||
testFolder2 = await uploadActions.createFolder(StringUtil.generateRandomString(5), '-my-');
|
||||
testFolder3 = await uploadActions.createFolder(StringUtil.generateRandomString(5), '-my-');
|
||||
testFolder4 = await uploadActions.createFolder(StringUtil.generateRandomString(5), '-my-');
|
||||
testFile = await uploadActions.uploadFile(pdfFile.location, pdfFile.name, '-my-');
|
||||
|
||||
await loginPage.loginToContentServicesUsingUserModel(acsUser);
|
||||
contentServicesPage.goToDocumentList();
|
||||
done();
|
||||
});
|
||||
|
||||
afterAll(async (done) => {
|
||||
await this.alfrescoJsApi.login(browser.params.testConfig.adf.adminEmail, browser.params.testConfig.adf.adminPassword);
|
||||
await uploadActions.deleteFileOrFolder(testFolder1.entry.id);
|
||||
await uploadActions.deleteFileOrFolder(testFolder2.entry.id);
|
||||
await uploadActions.deleteFileOrFolder(testFolder3.entry.id);
|
||||
await uploadActions.deleteFileOrFolder(testFolder4.entry.id);
|
||||
done();
|
||||
});
|
||||
|
||||
beforeEach(async (done) => {
|
||||
navigationBarPage.clickContentServicesButton();
|
||||
contentServicesPage.getContentList().dataTablePage().waitTillContentLoaded();
|
||||
done();
|
||||
});
|
||||
|
||||
it('[C260247] Should be able to mark a file as favorite', async () => {
|
||||
contentServicesPage.getContentList().dataTablePage().checkContentIsDisplayed('Display name', testFile.entry.name);
|
||||
contentServicesPage.getContentList().dataTablePage().selectRow('Display name', testFile.entry.name);
|
||||
contentServicesPage.getContentList().dataTablePage().checkRowIsSelected('Display name', testFile.entry.name);
|
||||
contentServicesPage.clickOnFavoriteButton();
|
||||
contentServicesPage.checkIsMarkedFavorite();
|
||||
contentServicesPage.getContentList().dataTablePage().checkRowIsSelected('Display name', testFile.entry.name);
|
||||
customSourcesPage.navigateToCustomSources();
|
||||
customSourcesPage.selectFavoritesSourceType();
|
||||
customSourcesPage.checkRowIsDisplayed(testFile.entry.name);
|
||||
|
||||
navigationBarPage.clickContentServicesButton();
|
||||
contentServicesPage.getContentList().dataTablePage().waitTillContentLoaded();
|
||||
contentServicesPage.getContentList().dataTablePage().checkContentIsDisplayed('Display name', testFile.entry.name);
|
||||
contentServicesPage.getContentList().dataTablePage().selectRow('Display name', testFile.entry.name);
|
||||
contentServicesPage.getContentList().dataTablePage().checkRowIsSelected('Display name', testFile.entry.name);
|
||||
contentServicesPage.clickOnFavoriteButton();
|
||||
contentServicesPage.checkIsNotMarkedFavorite();
|
||||
customSourcesPage.navigateToCustomSources();
|
||||
customSourcesPage.selectFavoritesSourceType();
|
||||
customSourcesPage.checkRowIsNotDisplayed(testFile.entry.name);
|
||||
});
|
||||
|
||||
it('[C260249] Should be able to mark a folder as favorite', async () => {
|
||||
contentServicesPage.getContentList().dataTablePage().checkContentIsDisplayed('Display name', testFolder1.entry.name);
|
||||
contentServicesPage.getContentList().dataTablePage().selectRow('Display name', testFolder1.entry.name);
|
||||
contentServicesPage.getContentList().dataTablePage().checkRowIsSelected('Display name', testFolder1.entry.name);
|
||||
contentServicesPage.clickOnFavoriteButton();
|
||||
contentServicesPage.checkIsMarkedFavorite();
|
||||
customSourcesPage.navigateToCustomSources();
|
||||
customSourcesPage.selectFavoritesSourceType();
|
||||
customSourcesPage.checkRowIsDisplayed(testFolder1.entry.name);
|
||||
|
||||
navigationBarPage.clickContentServicesButton();
|
||||
contentServicesPage.getContentList().dataTablePage().waitTillContentLoaded();
|
||||
contentServicesPage.getContentList().dataTablePage().checkContentIsDisplayed('Display name', testFolder1.entry.name);
|
||||
contentServicesPage.getContentList().dataTablePage().selectRow('Display name', testFolder1.entry.name);
|
||||
contentServicesPage.getContentList().dataTablePage().checkRowIsSelected('Display name', testFolder1.entry.name);
|
||||
contentServicesPage.clickOnFavoriteButton();
|
||||
contentServicesPage.checkIsNotMarkedFavorite();
|
||||
customSourcesPage.navigateToCustomSources();
|
||||
customSourcesPage.selectFavoritesSourceType();
|
||||
customSourcesPage.checkRowIsNotDisplayed(testFolder1.entry.name);
|
||||
});
|
||||
|
||||
it('[C260251] Should retain the restored file as favorite', async () => {
|
||||
contentServicesPage.getContentList().dataTablePage().checkContentIsDisplayed('Display name', testFile.entry.name);
|
||||
contentServicesPage.getContentList().dataTablePage().selectRow('Display name', testFile.entry.name);
|
||||
contentServicesPage.getContentList().dataTablePage().checkRowIsSelected('Display name', testFile.entry.name);
|
||||
contentServicesPage.clickOnFavoriteButton();
|
||||
contentServicesPage.checkIsMarkedFavorite();
|
||||
contentListPage.rightClickOnRow(testFile.entry.name);
|
||||
contentServicesPage.pressContextMenuActionNamed('Delete');
|
||||
contentServicesPage.checkContentIsNotDisplayed(testFile.entry.name);
|
||||
customSourcesPage.navigateToCustomSources();
|
||||
customSourcesPage.selectFavoritesSourceType();
|
||||
customSourcesPage.checkRowIsNotDisplayed(testFile.entry.name);
|
||||
|
||||
navigationBarPage.clickTrashcanButton();
|
||||
trashcanPage.waitForTableBody();
|
||||
expect(trashcanPage.numberOfResultsDisplayed()).toBe(1);
|
||||
trashcanPage.getDocumentList().dataTablePage().clickRowByContent(testFile.entry.name);
|
||||
trashcanPage.getDocumentList().dataTablePage().checkRowByContentIsSelected(testFile.entry.name);
|
||||
trashcanPage.clickRestore();
|
||||
trashcanPage.checkTrashcanIsEmpty();
|
||||
|
||||
navigationBarPage.clickContentServicesButton();
|
||||
contentServicesPage.getContentList().dataTablePage().waitTillContentLoaded();
|
||||
contentServicesPage.getContentList().dataTablePage().checkContentIsDisplayed('Display name', testFile.entry.name);
|
||||
contentServicesPage.getContentList().dataTablePage().selectRow('Display name', testFile.entry.name);
|
||||
contentServicesPage.getContentList().dataTablePage().checkRowIsSelected('Display name', testFile.entry.name);
|
||||
contentServicesPage.checkIsMarkedFavorite();
|
||||
customSourcesPage.navigateToCustomSources();
|
||||
customSourcesPage.selectFavoritesSourceType();
|
||||
customSourcesPage.checkRowIsDisplayed(testFile.entry.name);
|
||||
});
|
||||
|
||||
it('[C260252] Should retain the moved file as favorite', async () => {
|
||||
contentServicesPage.getContentList().dataTablePage().checkContentIsDisplayed('Display name', testFile.entry.name);
|
||||
contentServicesPage.getContentList().dataTablePage().selectRow('Display name', testFile.entry.name);
|
||||
contentServicesPage.getContentList().dataTablePage().checkRowIsSelected('Display name', testFile.entry.name);
|
||||
contentServicesPage.clickOnFavoriteButton();
|
||||
contentServicesPage.checkIsMarkedFavorite();
|
||||
|
||||
contentServicesPage.getDocumentList().rightClickOnRow(testFile.entry.name);
|
||||
contentServicesPage.pressContextMenuActionNamed('Move');
|
||||
contentNodeSelector.checkDialogIsDisplayed();
|
||||
contentNodeSelector.typeIntoNodeSelectorSearchField(testFolder1.entry.name);
|
||||
contentNodeSelector.clickContentNodeSelectorResult(testFolder1.entry.name);
|
||||
contentNodeSelector.clickMoveCopyButton();
|
||||
contentServicesPage.checkContentIsNotDisplayed(testFile.entry.name);
|
||||
contentServicesPage.doubleClickRow(testFolder1.entry.name);
|
||||
contentServicesPage.checkContentIsDisplayed(testFile.entry.name);
|
||||
|
||||
contentServicesPage.getContentList().dataTablePage().selectRow('Display name', testFile.entry.name);
|
||||
contentServicesPage.getContentList().dataTablePage().checkRowIsSelected('Display name', testFile.entry.name);
|
||||
contentServicesPage.checkIsMarkedFavorite();
|
||||
});
|
||||
|
||||
it('[C217216] Should be able to mark and unmark multiple folders as favorite', async () => {
|
||||
contentServicesPage.clickMultiSelectToggle();
|
||||
contentServicesPage.getContentList().dataTablePage().waitTillContentLoaded();
|
||||
contentServicesPage.getContentList().dataTablePage().clickCheckbox('Display name', testFolder1.entry.name);
|
||||
contentServicesPage.getContentList().dataTablePage().clickCheckbox('Display name', testFolder2.entry.name);
|
||||
contentServicesPage.getContentList().dataTablePage().clickCheckbox('Display name', testFolder3.entry.name);
|
||||
contentServicesPage.getContentList().dataTablePage().checkRowIsSelected('Display name', testFolder1.entry.name);
|
||||
contentServicesPage.getContentList().dataTablePage().checkRowIsSelected('Display name', testFolder2.entry.name);
|
||||
contentServicesPage.getContentList().dataTablePage().checkRowIsSelected('Display name', testFolder3.entry.name);
|
||||
expect(contentServicesPage.getContentList().dataTablePage().getNumberOfSelectedRows()).toBe(3);
|
||||
contentServicesPage.clickOnFavoriteButton();
|
||||
contentServicesPage.checkIsMarkedFavorite();
|
||||
|
||||
contentServicesPage.getContentList().dataTablePage().clickCheckbox('Display name', testFolder3.entry.name);
|
||||
contentServicesPage.getContentList().dataTablePage().checkRowIsNotSelected('Display name', testFolder3.entry.name);
|
||||
expect(contentServicesPage.getContentList().dataTablePage().getNumberOfSelectedRows()).toBe(2);
|
||||
|
||||
contentServicesPage.getContentList().dataTablePage().clickCheckbox('Display name', testFolder4.entry.name);
|
||||
expect(contentServicesPage.getContentList().dataTablePage().getNumberOfSelectedRows()).toBe(3);
|
||||
contentServicesPage.getContentList().dataTablePage().checkRowIsSelected('Display name', testFolder1.entry.name);
|
||||
contentServicesPage.getContentList().dataTablePage().checkRowIsSelected('Display name', testFolder2.entry.name);
|
||||
contentServicesPage.getContentList().dataTablePage().checkRowIsSelected('Display name', testFolder4.entry.name);
|
||||
contentServicesPage.clickOnFavoriteButton();
|
||||
contentServicesPage.checkIsMarkedFavorite();
|
||||
|
||||
contentServicesPage.clickOnFavoriteButton();
|
||||
contentServicesPage.checkIsNotMarkedFavorite();
|
||||
contentServicesPage.getContentList().dataTablePage().checkAllRows();
|
||||
expect(contentServicesPage.getContentList().dataTablePage().getNumberOfSelectedRows()).toBeGreaterThanOrEqual(4);
|
||||
contentServicesPage.getContentList().dataTablePage().uncheckAllRows();
|
||||
expect(contentServicesPage.getContentList().dataTablePage().getNumberOfSelectedRows()).toBe(0);
|
||||
|
||||
contentServicesPage.getContentList().dataTablePage().clickCheckbox('Display name', testFolder3.entry.name);
|
||||
contentServicesPage.getContentList().dataTablePage().checkRowIsSelected('Display name', testFolder3.entry.name);
|
||||
expect(contentServicesPage.getContentList().dataTablePage().getNumberOfSelectedRows()).toBe(1);
|
||||
contentServicesPage.checkIsMarkedFavorite();
|
||||
|
||||
});
|
||||
});
|
||||
@@ -0,0 +1,332 @@
|
||||
/*!
|
||||
* @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/contentServicesPage';
|
||||
|
||||
import { AcsUserModel } from '../../models/ACS/acsUserModel';
|
||||
import { AlfrescoApiCompatibility as AlfrescoApi } from '@alfresco/js-api';
|
||||
import { browser } from 'protractor';
|
||||
import { FileModel } from '../../models/ACS/fileModel';
|
||||
import resources = require('../../util/resources');
|
||||
import { NavigationBarPage } from '../../pages/adf/navigationBarPage';
|
||||
import { TrashcanPage } from '../../pages/adf/trashcanPage';
|
||||
import { LoginPage, NotificationHistoryPage, StringUtil, UploadActions } from '@alfresco/adf-testing';
|
||||
import { BreadCrumbPage } from '../../pages/adf/content-services/breadcrumb/breadCrumbPage';
|
||||
|
||||
describe('Restore content directive', function () {
|
||||
|
||||
const loginPage = new LoginPage();
|
||||
const contentServicesPage = new ContentServicesPage();
|
||||
const navigationBarPage = new NavigationBarPage();
|
||||
const acsUser = new AcsUserModel();
|
||||
const anotherAcsUser = new AcsUserModel();
|
||||
const trashcanPage = new TrashcanPage();
|
||||
const breadCrumbPage = new BreadCrumbPage();
|
||||
const notificationHistoryPage = new NotificationHistoryPage();
|
||||
|
||||
this.alfrescoJsApi = new AlfrescoApi({
|
||||
provider: 'ECM',
|
||||
hostEcm: browser.params.testConfig.adf.url
|
||||
});
|
||||
|
||||
const pdfFileModel = new FileModel({
|
||||
'name': resources.Files.ADF_DOCUMENTS.PDF.file_name,
|
||||
'location': resources.Files.ADF_DOCUMENTS.PDF.file_location
|
||||
});
|
||||
|
||||
const testFileModel = new FileModel({
|
||||
'name': resources.Files.ADF_DOCUMENTS.TEST.file_name,
|
||||
'location': resources.Files.ADF_DOCUMENTS.TEST.file_location
|
||||
});
|
||||
|
||||
const pngFileModel = new FileModel({
|
||||
'name': resources.Files.ADF_DOCUMENTS.PNG.file_name,
|
||||
'location': resources.Files.ADF_DOCUMENTS.PNG.file_location
|
||||
});
|
||||
|
||||
const folderName = StringUtil.generateRandomString(5);
|
||||
|
||||
const uploadActions = new UploadActions(this.alfrescoJsApi);
|
||||
let folderWithContent, folderWithFolder, subFolder, subFile, testFile, restoreFile, publicSite, siteFolder, siteFile;
|
||||
|
||||
beforeAll(async (done) => {
|
||||
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(anotherAcsUser);
|
||||
await this.alfrescoJsApi.login(acsUser.id, acsUser.password);
|
||||
|
||||
await uploadActions.createFolder(folderName, '-my-');
|
||||
folderWithContent = await uploadActions.createFolder(StringUtil.generateRandomString(5), '-my-');
|
||||
subFile = await uploadActions.uploadFile(testFileModel.location, testFileModel.name, folderWithContent.entry.id);
|
||||
testFile = await uploadActions.uploadFile(pdfFileModel.location, pdfFileModel.name, '-my-');
|
||||
folderWithFolder = await uploadActions.createFolder(StringUtil.generateRandomString(5), '-my-');
|
||||
subFolder = await uploadActions.createFolder(StringUtil.generateRandomString(5), folderWithFolder.entry.id);
|
||||
restoreFile = await uploadActions.uploadFile(pngFileModel.location, pngFileModel.name, '-my-');
|
||||
|
||||
await loginPage.loginToContentServicesUsingUserModel(acsUser);
|
||||
done();
|
||||
});
|
||||
|
||||
afterAll(async (done) => {
|
||||
await this.alfrescoJsApi.login(browser.params.testConfig.adf.adminEmail, browser.params.testConfig.adf.adminPassword);
|
||||
await uploadActions.deleteFileOrFolder(folderWithContent.entry.id);
|
||||
await uploadActions.deleteFileOrFolder(folderWithFolder.entry.id);
|
||||
await this.alfrescoJsApi.core.sitesApi.deleteSite(publicSite.entry.id);
|
||||
done();
|
||||
});
|
||||
|
||||
beforeEach(async (done) => {
|
||||
navigationBarPage.clickContentServicesButton();
|
||||
contentServicesPage.waitForTableBody();
|
||||
done();
|
||||
});
|
||||
|
||||
describe('Restore same name folders', function () {
|
||||
|
||||
beforeAll(async (done) => {
|
||||
navigationBarPage.clickContentServicesButton();
|
||||
contentServicesPage.waitForTableBody();
|
||||
contentServicesPage.checkContentIsDisplayed(folderName);
|
||||
contentServicesPage.deleteContent(folderName);
|
||||
contentServicesPage.checkContentIsNotDisplayed(folderName);
|
||||
navigationBarPage.clickTrashcanButton();
|
||||
trashcanPage.waitForTableBody();
|
||||
trashcanPage.getDocumentList().dataTablePage().checkRowContentIsDisplayed(folderName);
|
||||
done();
|
||||
});
|
||||
|
||||
it('[C260227] Should validate when restoring Folders with same name', async () => {
|
||||
await uploadActions.createFolder(folderName, '-my-');
|
||||
navigationBarPage.clickContentServicesButton();
|
||||
browser.refresh();
|
||||
contentServicesPage.waitForTableBody();
|
||||
contentServicesPage.checkContentIsDisplayed(folderName);
|
||||
contentServicesPage.deleteContent(folderName);
|
||||
contentServicesPage.checkContentIsNotDisplayed(folderName);
|
||||
navigationBarPage.clickTrashcanButton();
|
||||
trashcanPage.waitForTableBody();
|
||||
trashcanPage.getDocumentList().dataTablePage().checkRowContentIsDisplayed(folderName);
|
||||
|
||||
trashcanPage.getDocumentList().dataTablePage().checkAllRows();
|
||||
trashcanPage.clickRestore();
|
||||
trashcanPage.getDocumentList().dataTablePage().checkRowContentIsDisplayed(folderName);
|
||||
navigationBarPage.clickContentServicesButton();
|
||||
contentServicesPage.getContentList().dataTablePage().waitTillContentLoaded();
|
||||
contentServicesPage.checkContentIsDisplayed(folderName);
|
||||
|
||||
notificationHistoryPage.checkNotifyContains('Can\'t restore, ' + folderName + ' item already exists');
|
||||
|
||||
});
|
||||
});
|
||||
|
||||
it('[C260238] Should restore a file', async () => {
|
||||
contentServicesPage.checkContentIsDisplayed(testFile.entry.name);
|
||||
contentServicesPage.deleteContent(testFile.entry.name);
|
||||
contentServicesPage.checkContentIsNotDisplayed(testFile.entry.name);
|
||||
navigationBarPage.clickTrashcanButton();
|
||||
trashcanPage.waitForTableBody();
|
||||
trashcanPage.getDocumentList().dataTablePage().clickRowByContent(testFile.entry.name);
|
||||
trashcanPage.getDocumentList().dataTablePage().checkRowByContentIsSelected(testFile.entry.name);
|
||||
trashcanPage.clickRestore();
|
||||
trashcanPage.getDocumentList().dataTablePage().checkRowContentIsNotDisplayed(testFile.entry.name);
|
||||
|
||||
navigationBarPage.clickContentServicesButton();
|
||||
contentServicesPage.waitForTableBody();
|
||||
contentServicesPage.checkContentIsDisplayed(testFile.entry.name);
|
||||
contentServicesPage.deleteContent(testFile.entry.name);
|
||||
contentServicesPage.checkContentIsNotDisplayed(testFile.entry.name);
|
||||
navigationBarPage.clickTrashcanButton();
|
||||
trashcanPage.waitForTableBody();
|
||||
trashcanPage.getDocumentList().dataTablePage().checkRowContentIsDisplayed(testFile.entry.name);
|
||||
notificationHistoryPage.checkNotifyContains(testFile.entry.name + ' item restored');
|
||||
});
|
||||
|
||||
it('[C260239] Should restore folder with content', async () => {
|
||||
contentServicesPage.checkContentIsDisplayed(folderWithContent.entry.name);
|
||||
contentServicesPage.deleteContent(folderWithContent.entry.name);
|
||||
contentServicesPage.checkContentIsNotDisplayed(folderWithContent.entry.name);
|
||||
navigationBarPage.clickTrashcanButton();
|
||||
trashcanPage.waitForTableBody();
|
||||
trashcanPage.getDocumentList().dataTablePage().clickRowByContent(folderWithContent.entry.name);
|
||||
trashcanPage.getDocumentList().dataTablePage().checkRowByContentIsSelected(folderWithContent.entry.name);
|
||||
trashcanPage.clickRestore();
|
||||
trashcanPage.getDocumentList().dataTablePage().checkRowContentIsNotDisplayed(folderWithContent.entry.name);
|
||||
|
||||
navigationBarPage.clickContentServicesButton();
|
||||
contentServicesPage.waitForTableBody();
|
||||
contentServicesPage.checkContentIsDisplayed(folderWithContent.entry.name);
|
||||
contentServicesPage.getContentList().dataTablePage().doubleClickRow('Display name', folderWithContent.entry.name);
|
||||
contentServicesPage.checkContentIsDisplayed(subFile.entry.name);
|
||||
notificationHistoryPage.checkNotifyContains(folderWithContent.entry.name + ' item restored');
|
||||
});
|
||||
|
||||
it('[C260240] Should validate restore when the original location no longer exists', async () => {
|
||||
contentServicesPage.checkContentIsDisplayed(folderWithFolder.entry.name);
|
||||
contentServicesPage.doubleClickRow(folderWithFolder.entry.name);
|
||||
contentServicesPage.checkContentIsDisplayed(subFolder.entry.name);
|
||||
contentServicesPage.deleteContent(subFolder.entry.name);
|
||||
contentServicesPage.checkContentIsNotDisplayed(subFolder.entry.name);
|
||||
breadCrumbPage.chooseBreadCrumb(acsUser.id);
|
||||
contentServicesPage.waitForTableBody();
|
||||
contentServicesPage.checkContentIsDisplayed(folderWithFolder.entry.name);
|
||||
contentServicesPage.deleteContent(folderWithFolder.entry.name);
|
||||
contentServicesPage.checkContentIsNotDisplayed(folderWithFolder.entry.name);
|
||||
|
||||
navigationBarPage.clickTrashcanButton();
|
||||
trashcanPage.waitForTableBody();
|
||||
trashcanPage.getDocumentList().dataTablePage().checkRowContentIsDisplayed(subFolder.entry.name);
|
||||
trashcanPage.getDocumentList().dataTablePage().checkRowContentIsDisplayed(folderWithFolder.entry.name);
|
||||
trashcanPage.getDocumentList().dataTablePage().clickRowByContent(subFolder.entry.name);
|
||||
trashcanPage.getDocumentList().dataTablePage().checkRowByContentIsSelected(subFolder.entry.name);
|
||||
trashcanPage.clickRestore();
|
||||
trashcanPage.getDocumentList().dataTablePage().checkRowContentIsDisplayed(subFolder.entry.name);
|
||||
trashcanPage.getDocumentList().dataTablePage().checkRowContentIsDisplayed(folderWithFolder.entry.name);
|
||||
trashcanPage.getDocumentList().dataTablePage().clickRowByContentCheckbox(subFolder.entry.name);
|
||||
trashcanPage.getDocumentList().dataTablePage().checkRowByContentIsSelected(subFolder.entry.name);
|
||||
trashcanPage.getDocumentList().dataTablePage().clickRowByContentCheckbox(folderWithFolder.entry.name);
|
||||
trashcanPage.getDocumentList().dataTablePage().checkRowByContentIsSelected(folderWithFolder.entry.name);
|
||||
trashcanPage.clickRestore();
|
||||
|
||||
navigationBarPage.clickContentServicesButton();
|
||||
contentServicesPage.waitForTableBody();
|
||||
contentServicesPage.checkContentIsDisplayed(folderWithFolder.entry.name);
|
||||
contentServicesPage.doubleClickRow(folderWithFolder.entry.name);
|
||||
contentServicesPage.checkContentIsDisplayed(subFolder.entry.name);
|
||||
notificationHistoryPage.clickNotificationButton();
|
||||
notificationHistoryPage.checkNotificationIsPresent('Can\'t restore ' + subFolder.entry.name + ' item, the original location no longer exists');
|
||||
notificationHistoryPage.checkNotificationIsPresent('Restore successful');
|
||||
notificationHistoryPage.clickMarkAsRead();
|
||||
});
|
||||
|
||||
it('[C260241] Should display restore icon both for file and folder', async () => {
|
||||
contentServicesPage.checkContentIsDisplayed(folderName);
|
||||
contentServicesPage.checkContentIsDisplayed(restoreFile.entry.name);
|
||||
contentServicesPage.deleteContent(folderName);
|
||||
contentServicesPage.deleteContent(restoreFile.entry.name);
|
||||
contentServicesPage.checkContentIsNotDisplayed(folderName);
|
||||
contentServicesPage.checkContentIsNotDisplayed(restoreFile.entry.name);
|
||||
|
||||
navigationBarPage.clickTrashcanButton();
|
||||
trashcanPage.waitForTableBody();
|
||||
trashcanPage.checkRestoreButtonIsNotDisplayed();
|
||||
trashcanPage.getDocumentList().dataTablePage().clickRowByContentCheckbox(folderName);
|
||||
trashcanPage.getDocumentList().dataTablePage().checkRowByContentIsSelected(folderName);
|
||||
trashcanPage.checkRestoreButtonIsDisplayed();
|
||||
trashcanPage.getDocumentList().dataTablePage().clickRowByContentCheckbox(folderName);
|
||||
trashcanPage.getDocumentList().dataTablePage().checkRowByContentIsNotSelected(folderName);
|
||||
|
||||
trashcanPage.getDocumentList().dataTablePage().clickRowByContentCheckbox(restoreFile.entry.name);
|
||||
trashcanPage.getDocumentList().dataTablePage().checkRowByContentIsSelected(restoreFile.entry.name);
|
||||
trashcanPage.checkRestoreButtonIsDisplayed();
|
||||
|
||||
trashcanPage.getDocumentList().dataTablePage().clickRowByContentCheckbox(folderName);
|
||||
trashcanPage.getDocumentList().dataTablePage().checkRowByContentIsSelected(folderName);
|
||||
trashcanPage.getDocumentList().dataTablePage().checkRowByContentIsSelected(restoreFile.entry.name);
|
||||
trashcanPage.checkRestoreButtonIsDisplayed();
|
||||
});
|
||||
|
||||
describe('Restore deleted library', () => {
|
||||
|
||||
beforeAll(async (done) => {
|
||||
await this.alfrescoJsApi.login(acsUser.id, acsUser.password);
|
||||
const publicSiteName = `00${StringUtil.generateRandomString(5)}`;
|
||||
const publicSiteBody = {visibility: 'PUBLIC', title: publicSiteName};
|
||||
publicSite = await this.alfrescoJsApi.core.sitesApi.createSite(publicSiteBody);
|
||||
siteFolder = await uploadActions.createFolder(StringUtil.generateRandomString(5), publicSite.entry.guid);
|
||||
siteFile = await uploadActions.uploadFile(pngFileModel.location, pngFileModel.name, siteFolder.entry.id);
|
||||
await this.alfrescoJsApi.core.sitesApi.deleteSite(publicSite.entry.id);
|
||||
done();
|
||||
});
|
||||
|
||||
it('[C260241] Should restore the deleted library along with contents inside', async () => {
|
||||
navigationBarPage.clickTrashcanButton();
|
||||
trashcanPage.waitForTableBody();
|
||||
trashcanPage.getDocumentList().dataTablePage().checkRowContentIsDisplayed(publicSite.entry.id);
|
||||
trashcanPage.getDocumentList().dataTablePage().clickRowByContentCheckbox(publicSite.entry.id);
|
||||
trashcanPage.getDocumentList().dataTablePage().checkRowByContentIsSelected(publicSite.entry.id);
|
||||
trashcanPage.clickRestore();
|
||||
|
||||
navigationBarPage.clickContentServicesButton();
|
||||
contentServicesPage.waitForTableBody();
|
||||
contentServicesPage.selectSite(publicSite.entry.title);
|
||||
contentServicesPage.waitForTableBody();
|
||||
contentServicesPage.checkContentIsDisplayed(siteFolder.entry.name);
|
||||
contentServicesPage.doubleClickRow(siteFolder.entry.name);
|
||||
contentServicesPage.checkContentIsDisplayed(siteFile.entry.name);
|
||||
notificationHistoryPage.checkNotifyContains(publicSite.entry.id + ' item restored');
|
||||
|
||||
});
|
||||
});
|
||||
|
||||
describe('Restore with folder hierarchies', () => {
|
||||
|
||||
let parentFolder, folderWithin, pdfFile, pngFile, mainFile, mainFolder;
|
||||
|
||||
beforeAll(async (done) => {
|
||||
await this.alfrescoJsApi.login(anotherAcsUser.id, anotherAcsUser.password);
|
||||
await uploadActions.createFolder(folderName, '-my-');
|
||||
parentFolder = await uploadActions.createFolder(StringUtil.generateRandomString(5), '-my-');
|
||||
folderWithin = await uploadActions.createFolder(StringUtil.generateRandomString(5), parentFolder.entry.id);
|
||||
pdfFile = await uploadActions.uploadFile(pdfFileModel.location, pdfFileModel.name, folderWithin.entry.id);
|
||||
pngFile = await uploadActions.uploadFile(pngFileModel.location, pngFileModel.name, folderWithin.entry.id);
|
||||
mainFile = await uploadActions.uploadFile(testFileModel.location, testFileModel.name, '-my-');
|
||||
mainFolder = await uploadActions.createFolder(StringUtil.generateRandomString(5), '-my-');
|
||||
|
||||
await loginPage.loginToContentServicesUsingUserModel(anotherAcsUser);
|
||||
contentServicesPage.goToDocumentList();
|
||||
contentServicesPage.waitForTableBody();
|
||||
done();
|
||||
});
|
||||
|
||||
afterAll(async (done) => {
|
||||
await this.alfrescoJsApi.login(browser.params.testConfig.adf.adminEmail, browser.params.testConfig.adf.adminPassword);
|
||||
await uploadActions.deleteFileOrFolder(parentFolder.entry.id);
|
||||
await uploadActions.deleteFileOrFolder(mainFolder.entry.id);
|
||||
await uploadActions.deleteFileOrFolder(mainFile.entry.id);
|
||||
done();
|
||||
});
|
||||
|
||||
it('[C216431] Should restore hierarchy of folders', async () => {
|
||||
contentServicesPage.deleteContent(parentFolder.entry.name);
|
||||
contentServicesPage.deleteContent(mainFolder.entry.name);
|
||||
contentServicesPage.deleteContent(mainFile.entry.name);
|
||||
|
||||
navigationBarPage.clickTrashcanButton();
|
||||
trashcanPage.waitForTableBody();
|
||||
trashcanPage.checkRestoreButtonIsNotDisplayed();
|
||||
trashcanPage.getDocumentList().dataTablePage().clickRowByContentCheckbox(parentFolder.entry.name);
|
||||
trashcanPage.getDocumentList().dataTablePage().checkRowByContentIsSelected(parentFolder.entry.name);
|
||||
trashcanPage.getDocumentList().dataTablePage().clickRowByContentCheckbox(mainFolder.entry.name);
|
||||
trashcanPage.getDocumentList().dataTablePage().checkRowByContentIsSelected(mainFolder.entry.name);
|
||||
trashcanPage.getDocumentList().dataTablePage().clickRowByContentCheckbox(mainFile.entry.name);
|
||||
trashcanPage.getDocumentList().dataTablePage().checkRowByContentIsSelected(mainFile.entry.name);
|
||||
trashcanPage.clickRestore();
|
||||
|
||||
navigationBarPage.clickContentServicesButton();
|
||||
contentServicesPage.waitForTableBody();
|
||||
contentServicesPage.checkContentIsDisplayed(parentFolder.entry.name);
|
||||
contentServicesPage.checkContentIsDisplayed(mainFolder.entry.name);
|
||||
contentServicesPage.checkContentIsDisplayed(mainFile.entry.name);
|
||||
contentServicesPage.doubleClickRow(parentFolder.entry.name);
|
||||
contentServicesPage.checkContentIsDisplayed(folderWithin.entry.name);
|
||||
contentServicesPage.doubleClickRow(folderWithin.entry.name);
|
||||
contentServicesPage.checkContentIsDisplayed(pdfFile.entry.name);
|
||||
contentServicesPage.checkContentIsDisplayed(pngFile.entry.name);
|
||||
});
|
||||
});
|
||||
|
||||
});
|
||||
@@ -15,18 +15,19 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import { browser } from 'protractor';
|
||||
import { LoginPage } from '@alfresco/adf-testing';
|
||||
import { browser, by, element } from 'protractor';
|
||||
import { LoginPage, PaginationPage, UploadActions, StringUtil, ContentNodeSelectorDialogPage } from '@alfresco/adf-testing';
|
||||
import { ContentServicesPage } from '../../pages/adf/contentServicesPage';
|
||||
import { NavigationBarPage } from '../../pages/adf/navigationBarPage';
|
||||
import { AcsUserModel } from '../../models/ACS/acsUserModel';
|
||||
import resources = require('../../util/resources');
|
||||
import { AlfrescoApiCompatibility as AlfrescoApi } from '@alfresco/js-api';
|
||||
import { UploadActions } from '../../actions/ACS/upload.actions';
|
||||
import { FileModel } from '../../models/ACS/fileModel';
|
||||
import { StringUtil } from '@alfresco/adf-testing';
|
||||
import { Util } from '../../util/util';
|
||||
import { ContentNodeSelectorDialogPage } from '@alfresco/adf-testing';
|
||||
import { BreadCrumbDropdownPage } from '../../pages/adf/content-services/breadcrumb/breadCrumbDropdownPage';
|
||||
import { BreadCrumbPage } from '../../pages/adf/content-services/breadcrumb/breadCrumbPage';
|
||||
import { InfinitePaginationPage } from '../../pages/adf/core/infinitePaginationPage';
|
||||
import { FolderModel } from '../../models/ACS/folderModel';
|
||||
|
||||
describe('Document List Component - Actions', () => {
|
||||
|
||||
@@ -35,12 +36,15 @@ describe('Document List Component - Actions', () => {
|
||||
const navigationBarPage = new NavigationBarPage();
|
||||
const contentListPage = contentServicesPage.getDocumentList();
|
||||
const contentNodeSelector = new ContentNodeSelectorDialogPage();
|
||||
const uploadActions = new UploadActions();
|
||||
|
||||
const alfrescoJsApi = new AlfrescoApi({
|
||||
const paginationPage = new PaginationPage();
|
||||
const breadCrumbDropdownPage = new BreadCrumbDropdownPage();
|
||||
const breadCrumbPage = new BreadCrumbPage();
|
||||
this.alfrescoJsApi = new AlfrescoApi({
|
||||
provider: 'ECM',
|
||||
hostEcm: browser.params.testConfig.adf.url
|
||||
});
|
||||
const uploadActions = new UploadActions(this.alfrescoJsApi);
|
||||
const infinitePaginationPage = new InfinitePaginationPage(element(by.css('adf-content-node-selector')));
|
||||
|
||||
describe('Document List Component - Check Actions', () => {
|
||||
|
||||
@@ -68,20 +72,20 @@ describe('Document List Component - Actions', () => {
|
||||
beforeAll(async (done) => {
|
||||
acsUser = new AcsUserModel();
|
||||
folderName = `TATSUMAKY_${StringUtil.generateRandomString(5)}_SENPOUKYAKU`;
|
||||
await alfrescoJsApi.login(browser.params.testConfig.adf.adminEmail, browser.params.testConfig.adf.adminPassword);
|
||||
await alfrescoJsApi.core.peopleApi.addPerson(acsUser);
|
||||
await alfrescoJsApi.login(acsUser.id, acsUser.password);
|
||||
pdfUploadedNode = await uploadActions.uploadFile(alfrescoJsApi, pdfFileModel.location, pdfFileModel.name, '-my-');
|
||||
await uploadActions.uploadFile(alfrescoJsApi, testFileModel.location, testFileModel.name, '-my-');
|
||||
uploadedFolder = await uploadActions.createFolder(alfrescoJsApi, folderName, '-my-');
|
||||
secondUploadedFolder = await uploadActions.createFolder(alfrescoJsApi, 'secondFolder', '-my-');
|
||||
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);
|
||||
pdfUploadedNode = await uploadActions.uploadFile(pdfFileModel.location, pdfFileModel.name, '-my-');
|
||||
await uploadActions.uploadFile(testFileModel.location, testFileModel.name, '-my-');
|
||||
uploadedFolder = await uploadActions.createFolder(folderName, '-my-');
|
||||
secondUploadedFolder = await uploadActions.createFolder('secondFolder', '-my-');
|
||||
|
||||
fileNames = Util.generateSequenceFiles(1, nrOfFiles, files.base, files.extension);
|
||||
await uploadActions.createEmptyFiles(alfrescoJsApi, fileNames, uploadedFolder.entry.id);
|
||||
await uploadActions.createEmptyFiles(fileNames, uploadedFolder.entry.id);
|
||||
|
||||
await loginPage.loginToContentServicesUsingUserModel(acsUser);
|
||||
|
||||
await browser.driver.sleep(15000);
|
||||
browser.driver.sleep(10000);
|
||||
done();
|
||||
});
|
||||
|
||||
@@ -94,10 +98,8 @@ describe('Document List Component - Actions', () => {
|
||||
|
||||
it('[C213257] Should be able to copy a file', () => {
|
||||
contentServicesPage.checkContentIsDisplayed(pdfUploadedNode.entry.name);
|
||||
|
||||
contentServicesPage.getDocumentList().rightClickOnRow(pdfFileModel.name);
|
||||
contentServicesPage.pressContextMenuActionNamed('Copy');
|
||||
|
||||
contentNodeSelector.checkDialogIsDisplayed();
|
||||
contentNodeSelector.typeIntoNodeSelectorSearchField(folderName);
|
||||
contentNodeSelector.clickContentNodeSelectorResult(folderName);
|
||||
@@ -107,6 +109,17 @@ describe('Document List Component - Actions', () => {
|
||||
contentServicesPage.checkContentIsDisplayed(pdfFileModel.name);
|
||||
});
|
||||
|
||||
it('[C260131] Copy - Destination picker search', () => {
|
||||
contentServicesPage.checkContentIsDisplayed(pdfFileModel.name);
|
||||
contentServicesPage.getDocumentList().rightClickOnRow(pdfFileModel.name);
|
||||
contentServicesPage.pressContextMenuActionNamed('Copy');
|
||||
contentNodeSelector.checkDialogIsDisplayed();
|
||||
contentNodeSelector.typeIntoNodeSelectorSearchField(folderName);
|
||||
contentNodeSelector.contentListPage().dataTablePage().checkCellByHighlightContent(folderName);
|
||||
contentNodeSelector.clickCancelButton();
|
||||
contentNodeSelector.checkDialogIsNotDisplayed();
|
||||
});
|
||||
|
||||
it('[C297491] Should be able to move a file', () => {
|
||||
contentServicesPage.checkContentIsDisplayed(testFileModel.name);
|
||||
|
||||
@@ -121,6 +134,17 @@ describe('Document List Component - Actions', () => {
|
||||
contentServicesPage.checkContentIsDisplayed(testFileModel.name);
|
||||
});
|
||||
|
||||
it('[C260127] Move - Destination picker search', () => {
|
||||
contentServicesPage.checkContentIsDisplayed(pdfFileModel.name);
|
||||
contentServicesPage.getDocumentList().rightClickOnRow(pdfFileModel.name);
|
||||
contentServicesPage.pressContextMenuActionNamed('Move');
|
||||
contentNodeSelector.checkDialogIsDisplayed();
|
||||
contentNodeSelector.typeIntoNodeSelectorSearchField(folderName);
|
||||
contentNodeSelector.contentListPage().dataTablePage().checkCellByHighlightContent(folderName);
|
||||
contentNodeSelector.clickCancelButton();
|
||||
contentNodeSelector.checkDialogIsNotDisplayed();
|
||||
});
|
||||
|
||||
it('[C280561] Should be able to delete a file via dropdown menu', () => {
|
||||
contentServicesPage.doubleClickRow(uploadedFolder.entry.name);
|
||||
|
||||
@@ -205,4 +229,147 @@ describe('Document List Component - Actions', () => {
|
||||
|
||||
});
|
||||
});
|
||||
|
||||
describe('Folder Actions - Copy and Move', () => {
|
||||
|
||||
const folderModel1 = new FolderModel({'name': StringUtil.generateRandomString()});
|
||||
const folderModel2 = new FolderModel({'name': StringUtil.generateRandomString()});
|
||||
const folderModel3 = new FolderModel({'name': StringUtil.generateRandomString()});
|
||||
const folderModel4 = new FolderModel({'name': StringUtil.generateRandomString()});
|
||||
const folderModel5 = new FolderModel({'name': StringUtil.generateRandomString()});
|
||||
const folderModel6 = new FolderModel({'name': StringUtil.generateRandomString()});
|
||||
|
||||
let folder1, folder2, folder3, folder4, folder5, folder6;
|
||||
|
||||
let folders;
|
||||
const contentServicesUser = new AcsUserModel();
|
||||
|
||||
beforeAll(async (done) => {
|
||||
|
||||
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);
|
||||
folder1 = await uploadActions.createFolder('A' + folderModel1.name, '-my-');
|
||||
folder2 = await uploadActions.createFolder('B' + folderModel2.name, '-my-');
|
||||
folder3 = await uploadActions.createFolder('C' + folderModel3.name, '-my-');
|
||||
folder4 = await uploadActions.createFolder('D' + folderModel4.name, '-my-');
|
||||
folder5 = await uploadActions.createFolder('E' + folderModel5.name, '-my-');
|
||||
folder6 = await uploadActions.createFolder('F' + folderModel6.name, '-my-');
|
||||
folders = [folder1, folder2, folder3, folder4, folder5, folder6];
|
||||
done();
|
||||
});
|
||||
|
||||
beforeEach(async (done) => {
|
||||
loginPage.loginToContentServicesUsingUserModel(contentServicesUser);
|
||||
contentServicesPage.goToDocumentList();
|
||||
contentServicesPage.waitForTableBody();
|
||||
paginationPage.selectItemsPerPage('5');
|
||||
contentServicesPage.checkAcsContainer();
|
||||
contentListPage.waitForTableBody();
|
||||
done();
|
||||
});
|
||||
|
||||
afterAll(async (done) => {
|
||||
await this.alfrescoJsApi.login(browser.params.testConfig.adf.adminEmail, browser.params.testConfig.adf.adminPassword);
|
||||
await folders.forEach(function (folder) {
|
||||
uploadActions.deleteFileOrFolder(folder.entry.id);
|
||||
});
|
||||
done();
|
||||
});
|
||||
|
||||
it('[C260132] Move action on folder with - Load more', () => {
|
||||
|
||||
expect(paginationPage.getCurrentItemsPerPage()).toEqual('5');
|
||||
expect(paginationPage.getPaginationRange()).toEqual('Showing 1-' + 5 + ' of ' + 6);
|
||||
contentListPage.rightClickOnRow('A' + folderModel1.name);
|
||||
contentServicesPage.checkContextActionIsVisible('Move');
|
||||
contentServicesPage.pressContextMenuActionNamed('Move');
|
||||
contentNodeSelector.checkDialogIsDisplayed();
|
||||
expect(contentNodeSelector.getDialogHeaderText()).toBe('Move \'' + 'A' + folderModel1.name + '\' to...');
|
||||
contentNodeSelector.checkSearchInputIsDisplayed();
|
||||
expect(contentNodeSelector.getSearchLabel()).toBe('Search');
|
||||
contentNodeSelector.checkSelectedSiteIsDisplayed('My files');
|
||||
contentNodeSelector.checkCancelButtonIsDisplayed();
|
||||
contentNodeSelector.checkMoveCopyButtonIsDisplayed();
|
||||
expect(contentNodeSelector.getMoveCopyButtonText()).toBe('MOVE');
|
||||
expect(contentNodeSelector.numberOfResultsDisplayed()).toBe(5);
|
||||
infinitePaginationPage.clickLoadMoreButton();
|
||||
expect(contentNodeSelector.numberOfResultsDisplayed()).toBe(6);
|
||||
infinitePaginationPage.checkLoadMoreButtonIsNotDisplayed();
|
||||
contentNodeSelector.contentListPage().dataTablePage().selectRowByContent('F' + folderModel6.name);
|
||||
contentNodeSelector.contentListPage().dataTablePage().checkRowByContentIsSelected('F' + folderModel6.name);
|
||||
contentNodeSelector.clickCancelButton();
|
||||
contentNodeSelector.checkDialogIsNotDisplayed();
|
||||
contentServicesPage.checkContentIsDisplayed('A' + folderModel1.name);
|
||||
|
||||
contentListPage.rightClickOnRow('A' + folderModel1.name);
|
||||
contentServicesPage.checkContextActionIsVisible('Move');
|
||||
contentServicesPage.pressContextMenuActionNamed('Move');
|
||||
contentNodeSelector.checkDialogIsDisplayed();
|
||||
infinitePaginationPage.clickLoadMoreButton();
|
||||
contentNodeSelector.contentListPage().dataTablePage().selectRowByContent('F' + folderModel6.name);
|
||||
contentNodeSelector.contentListPage().dataTablePage().checkRowByContentIsSelected('F' + folderModel6.name);
|
||||
contentNodeSelector.clickMoveCopyButton();
|
||||
contentServicesPage.checkContentIsNotDisplayed('A' + folderModel1.name);
|
||||
contentServicesPage.doubleClickRow('F' + folderModel6.name);
|
||||
contentServicesPage.checkContentIsDisplayed('A' + folderModel1.name);
|
||||
|
||||
contentListPage.rightClickOnRow('A' + folderModel1.name);
|
||||
contentServicesPage.checkContextActionIsVisible('Move');
|
||||
contentServicesPage.pressContextMenuActionNamed('Move');
|
||||
contentNodeSelector.checkDialogIsDisplayed();
|
||||
breadCrumbDropdownPage.clickParentFolder();
|
||||
breadCrumbDropdownPage.checkBreadCrumbDropdownIsDisplayed();
|
||||
breadCrumbDropdownPage.choosePath(contentServicesUser.id);
|
||||
contentNodeSelector.clickMoveCopyButton();
|
||||
contentServicesPage.checkContentIsNotDisplayed('A' + folderModel1.name);
|
||||
|
||||
breadCrumbPage.chooseBreadCrumb(contentServicesUser.id);
|
||||
contentServicesPage.waitForTableBody();
|
||||
contentServicesPage.checkContentIsDisplayed('A' + folderModel1.name);
|
||||
|
||||
});
|
||||
|
||||
it('[C305051] Copy action on folder with - Load more', () => {
|
||||
|
||||
expect(paginationPage.getCurrentItemsPerPage()).toEqual('5');
|
||||
expect(paginationPage.getPaginationRange()).toEqual('Showing 1-' + 5 + ' of ' + 6);
|
||||
contentListPage.rightClickOnRow('A' + folderModel1.name);
|
||||
contentServicesPage.checkContextActionIsVisible('Copy');
|
||||
contentServicesPage.pressContextMenuActionNamed('Copy');
|
||||
contentNodeSelector.checkDialogIsDisplayed();
|
||||
expect(contentNodeSelector.getDialogHeaderText()).toBe('Copy \'' + 'A' + folderModel1.name + '\' to...');
|
||||
contentNodeSelector.checkSearchInputIsDisplayed();
|
||||
expect(contentNodeSelector.getSearchLabel()).toBe('Search');
|
||||
contentNodeSelector.checkSelectedSiteIsDisplayed('My files');
|
||||
contentNodeSelector.checkCancelButtonIsDisplayed();
|
||||
contentNodeSelector.checkMoveCopyButtonIsDisplayed();
|
||||
expect(contentNodeSelector.getMoveCopyButtonText()).toBe('COPY');
|
||||
expect(contentNodeSelector.numberOfResultsDisplayed()).toBe(5);
|
||||
infinitePaginationPage.clickLoadMoreButton();
|
||||
expect(contentNodeSelector.numberOfResultsDisplayed()).toBe(6);
|
||||
infinitePaginationPage.checkLoadMoreButtonIsNotDisplayed();
|
||||
contentNodeSelector.contentListPage().dataTablePage().selectRowByContent('F' + folderModel6.name);
|
||||
contentNodeSelector.contentListPage().dataTablePage().checkRowByContentIsSelected('F' + folderModel6.name);
|
||||
contentNodeSelector.clickCancelButton();
|
||||
contentNodeSelector.checkDialogIsNotDisplayed();
|
||||
contentServicesPage.checkContentIsDisplayed('A' + folderModel1.name);
|
||||
|
||||
contentListPage.rightClickOnRow('A' + folderModel1.name);
|
||||
contentServicesPage.checkContextActionIsVisible('Copy');
|
||||
contentServicesPage.pressContextMenuActionNamed('Copy');
|
||||
contentNodeSelector.checkDialogIsDisplayed();
|
||||
infinitePaginationPage.clickLoadMoreButton();
|
||||
contentNodeSelector.contentListPage().dataTablePage().selectRowByContent('F' + folderModel6.name);
|
||||
contentNodeSelector.contentListPage().dataTablePage().checkRowByContentIsSelected('F' + folderModel6.name);
|
||||
contentNodeSelector.clickMoveCopyButton();
|
||||
contentServicesPage.checkContentIsDisplayed('A' + folderModel1.name);
|
||||
paginationPage.clickOnNextPage();
|
||||
contentListPage.waitForTableBody();
|
||||
contentServicesPage.doubleClickRow('F' + folderModel6.name);
|
||||
contentServicesPage.checkContentIsDisplayed('A' + folderModel1.name);
|
||||
|
||||
});
|
||||
|
||||
});
|
||||
});
|
||||
|
||||
@@ -20,9 +20,8 @@ import { AcsUserModel } from '../../models/ACS/acsUserModel';
|
||||
import { ViewerPage } from '../../pages/adf/viewerPage';
|
||||
import { browser } from 'protractor';
|
||||
import resources = require('../../util/resources');
|
||||
import { LoginPage, StringUtil } from '@alfresco/adf-testing';
|
||||
import { LoginPage, StringUtil, UploadActions } from '@alfresco/adf-testing';
|
||||
import { AlfrescoApiCompatibility as AlfrescoApi } from '@alfresco/js-api';
|
||||
import { UploadActions } from '../../actions/ACS/upload.actions';
|
||||
import { FileModel } from '../../models/ACS/fileModel';
|
||||
import moment from 'moment-es6';
|
||||
|
||||
@@ -31,33 +30,30 @@ describe('Document List Component', () => {
|
||||
const loginPage = new LoginPage();
|
||||
const contentServicesPage = new ContentServicesPage();
|
||||
let uploadedFolder, uploadedFolderExtra;
|
||||
const uploadActions = new UploadActions();
|
||||
this.alfrescoJsApi = new AlfrescoApi({
|
||||
provider: 'ECM',
|
||||
hostEcm: browser.params.testConfig.adf.url
|
||||
});
|
||||
const uploadActions = new UploadActions(this.alfrescoJsApi);
|
||||
let acsUser = null;
|
||||
let testFileNode, pdfBFileNode;
|
||||
|
||||
beforeAll(() => {
|
||||
this.alfrescoJsApi = new AlfrescoApi({
|
||||
provider: 'ECM',
|
||||
hostEcm: browser.params.testConfig.adf.url
|
||||
});
|
||||
});
|
||||
|
||||
afterEach(async (done) => {
|
||||
await this.alfrescoJsApi.login(browser.params.testConfig.adf.adminEmail, browser.params.testConfig.adf.adminPassword);
|
||||
if (uploadedFolder) {
|
||||
await uploadActions.deleteFilesOrFolder(this.alfrescoJsApi, uploadedFolder.entry.id);
|
||||
await uploadActions.deleteFileOrFolder(uploadedFolder.entry.id);
|
||||
uploadedFolder = null;
|
||||
}
|
||||
if (uploadedFolderExtra) {
|
||||
await uploadActions.deleteFilesOrFolder(this.alfrescoJsApi, uploadedFolderExtra.entry.id);
|
||||
await uploadActions.deleteFileOrFolder(uploadedFolderExtra.entry.id);
|
||||
uploadedFolderExtra = null;
|
||||
}
|
||||
if (testFileNode) {
|
||||
await uploadActions.deleteFilesOrFolder(this.alfrescoJsApi, testFileNode.entry.id);
|
||||
await uploadActions.deleteFileOrFolder(testFileNode.entry.id);
|
||||
testFileNode = null;
|
||||
}
|
||||
if (pdfBFileNode) {
|
||||
await uploadActions.deleteFilesOrFolder(this.alfrescoJsApi, pdfBFileNode.entry.id);
|
||||
await uploadActions.deleteFileOrFolder(pdfBFileNode.entry.id);
|
||||
pdfBFileNode = null;
|
||||
}
|
||||
done();
|
||||
@@ -97,9 +93,9 @@ describe('Document List Component', () => {
|
||||
await this.alfrescoJsApi.core.peopleApi.addPerson(acsUser);
|
||||
|
||||
await this.alfrescoJsApi.login(acsUser.id, acsUser.password);
|
||||
uploadedFolder = await uploadActions.createFolder(this.alfrescoJsApi, folderName, '-my-');
|
||||
pdfUploadedNode = await uploadActions.uploadFile(this.alfrescoJsApi, pdfFileModel.location, pdfFileModel.name, '-my-');
|
||||
docxUploadedNode = await uploadActions.uploadFile(this.alfrescoJsApi, docxFileModel.location, docxFileModel.name, '-my-');
|
||||
uploadedFolder = await uploadActions.createFolder(folderName, '-my-');
|
||||
pdfUploadedNode = await uploadActions.uploadFile(pdfFileModel.location, pdfFileModel.name, '-my-');
|
||||
docxUploadedNode = await uploadActions.uploadFile(docxFileModel.location, docxFileModel.name, '-my-');
|
||||
done();
|
||||
});
|
||||
|
||||
@@ -107,16 +103,16 @@ describe('Document List Component', () => {
|
||||
await this.alfrescoJsApi.login(browser.params.testConfig.adf.adminEmail, browser.params.testConfig.adf.adminPassword);
|
||||
|
||||
if (pdfUploadedNode) {
|
||||
await uploadActions.deleteFilesOrFolder(this.alfrescoJsApi, pdfUploadedNode.entry.id);
|
||||
await uploadActions.deleteFileOrFolder(pdfUploadedNode.entry.id);
|
||||
}
|
||||
if (docxUploadedNode) {
|
||||
await uploadActions.deleteFilesOrFolder(this.alfrescoJsApi, docxUploadedNode.entry.id);
|
||||
await uploadActions.deleteFileOrFolder(docxUploadedNode.entry.id);
|
||||
}
|
||||
if (timeAgoUploadedNode) {
|
||||
await uploadActions.deleteFilesOrFolder(this.alfrescoJsApi, timeAgoUploadedNode.entry.id);
|
||||
await uploadActions.deleteFileOrFolder(timeAgoUploadedNode.entry.id);
|
||||
}
|
||||
if (mediumDateUploadedNode) {
|
||||
await uploadActions.deleteFilesOrFolder(this.alfrescoJsApi, mediumDateUploadedNode.entry.id);
|
||||
await uploadActions.deleteFileOrFolder(mediumDateUploadedNode.entry.id);
|
||||
}
|
||||
done();
|
||||
});
|
||||
@@ -144,7 +140,7 @@ describe('Document List Component', () => {
|
||||
|
||||
it('[C279928] Should be able to display date with timeAgo', async (done) => {
|
||||
await this.alfrescoJsApi.login(acsUser.id, acsUser.password);
|
||||
timeAgoUploadedNode = await uploadActions.uploadFile(this.alfrescoJsApi, timeAgoFileModel.location, timeAgoFileModel.name, '-my-');
|
||||
timeAgoUploadedNode = await uploadActions.uploadFile(timeAgoFileModel.location, timeAgoFileModel.name, '-my-');
|
||||
contentServicesPage.goToDocumentList();
|
||||
const dateValue = contentServicesPage.getColumnValueForRow(timeAgoFileModel.name, 'Created');
|
||||
expect(dateValue).toMatch(/(ago|few)/);
|
||||
@@ -153,7 +149,7 @@ describe('Document List Component', () => {
|
||||
|
||||
it('[C279929] Should be able to display the date with date type', async (done) => {
|
||||
await this.alfrescoJsApi.login(acsUser.id, acsUser.password);
|
||||
mediumDateUploadedNode = await uploadActions.uploadFile(this.alfrescoJsApi, mediumFileModel.location, mediumFileModel.name, '-my-');
|
||||
mediumDateUploadedNode = await uploadActions.uploadFile(mediumFileModel.location, mediumFileModel.name, '-my-');
|
||||
const createdDate = moment(mediumDateUploadedNode.createdAt).format('ll');
|
||||
contentServicesPage.goToDocumentList();
|
||||
contentServicesPage.enableMediumTimeFormat();
|
||||
@@ -191,9 +187,9 @@ describe('Document List Component', () => {
|
||||
await this.alfrescoJsApi.core.peopleApi.addPerson(user);
|
||||
|
||||
await this.alfrescoJsApi.login(user.id, user.password);
|
||||
fileANode = await uploadActions.uploadFile(this.alfrescoJsApi, fakeFileA.location, fakeFileA.name, '-my-');
|
||||
fileBNode = await uploadActions.uploadFile(this.alfrescoJsApi, fakeFileB.location, fakeFileB.name, '-my-');
|
||||
fileCNode = await uploadActions.uploadFile(this.alfrescoJsApi, fakeFileC.location, fakeFileC.name, '-my-');
|
||||
fileANode = await uploadActions.uploadFile(fakeFileA.location, fakeFileA.name, '-my-');
|
||||
fileBNode = await uploadActions.uploadFile(fakeFileB.location, fakeFileB.name, '-my-');
|
||||
fileCNode = await uploadActions.uploadFile(fakeFileC.location, fakeFileC.name, '-my-');
|
||||
|
||||
await loginPage.loginToContentServicesUsingUserModel(user);
|
||||
contentServicesPage.goToDocumentList();
|
||||
@@ -204,13 +200,13 @@ describe('Document List Component', () => {
|
||||
afterAll(async (done) => {
|
||||
await this.alfrescoJsApi.login(browser.params.testConfig.adf.adminEmail, browser.params.testConfig.adf.adminPassword);
|
||||
if (fileANode) {
|
||||
await uploadActions.deleteFilesOrFolder(this.alfrescoJsApi, fileANode.entry.id);
|
||||
await uploadActions.deleteFileOrFolder(fileANode.entry.id);
|
||||
}
|
||||
if (fileBNode) {
|
||||
await uploadActions.deleteFilesOrFolder(this.alfrescoJsApi, fileBNode.entry.id);
|
||||
await uploadActions.deleteFileOrFolder(fileBNode.entry.id);
|
||||
}
|
||||
if (fileCNode) {
|
||||
await uploadActions.deleteFilesOrFolder(this.alfrescoJsApi, fileCNode.entry.id);
|
||||
await uploadActions.deleteFileOrFolder(fileCNode.entry.id);
|
||||
}
|
||||
done();
|
||||
});
|
||||
@@ -276,7 +272,7 @@ describe('Document List Component', () => {
|
||||
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);
|
||||
uploadedFolder = await uploadActions.createFolder(this.alfrescoJsApi, folderName, '-my-');
|
||||
uploadedFolder = await uploadActions.createFolder(folderName, '-my-');
|
||||
await loginPage.loginToContentServicesUsingUserModel(acsUser);
|
||||
contentServicesPage.goToDocumentList();
|
||||
contentServicesPage.checkContentIsDisplayed(uploadedFolder.entry.name);
|
||||
@@ -308,8 +304,8 @@ describe('Document List Component', () => {
|
||||
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);
|
||||
uploadedFolder = await uploadActions.createFolder(this.alfrescoJsApi, folderNameA, '-my-');
|
||||
uploadedFolderExtra = await uploadActions.createFolder(this.alfrescoJsApi, folderNameB, '-my-');
|
||||
uploadedFolder = await uploadActions.createFolder(folderNameA, '-my-');
|
||||
uploadedFolderExtra = await uploadActions.createFolder(folderNameB, '-my-');
|
||||
await loginPage.loginToContentServicesUsingUserModel(acsUser);
|
||||
contentServicesPage.goToDocumentList();
|
||||
contentServicesPage.checkContentIsDisplayed(folderNameA);
|
||||
@@ -332,8 +328,8 @@ describe('Document List Component', () => {
|
||||
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);
|
||||
testFileNode = await uploadActions.uploadFile(this.alfrescoJsApi, testFileA.location, testFileA.name, '-my-');
|
||||
pdfBFileNode = await uploadActions.uploadFile(this.alfrescoJsApi, testFileB.location, testFileB.name, '-my-');
|
||||
testFileNode = await uploadActions.uploadFile(testFileA.location, testFileA.name, '-my-');
|
||||
pdfBFileNode = await uploadActions.uploadFile(testFileB.location, testFileB.name, '-my-');
|
||||
await loginPage.loginToContentServicesUsingUserModel(acsUser);
|
||||
contentServicesPage.goToDocumentList();
|
||||
contentServicesPage.checkContentIsDisplayed(testFileA.name);
|
||||
@@ -357,7 +353,7 @@ describe('Document List Component', () => {
|
||||
let folder = null;
|
||||
for (let i = 0; i < 20; i++) {
|
||||
folderName = `MEESEEKS_000${i}`;
|
||||
folder = await uploadActions.createFolder(this.alfrescoJsApi, folderName, '-my-');
|
||||
folder = await uploadActions.createFolder(folderName, '-my-');
|
||||
folderCreated.push(folder);
|
||||
}
|
||||
done();
|
||||
@@ -365,7 +361,7 @@ describe('Document List Component', () => {
|
||||
|
||||
afterAll(async (done) => {
|
||||
Promise.all(folderCreated.map((folder) =>
|
||||
uploadActions.deleteFilesOrFolder(this.alfrescoJsApi, folder.entry.id)
|
||||
uploadActions.deleteFileOrFolder(folder.entry.id)
|
||||
)).then(() => {
|
||||
done();
|
||||
});
|
||||
@@ -395,7 +391,7 @@ describe('Document List Component', () => {
|
||||
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);
|
||||
file = await uploadActions.uploadFile(this.alfrescoJsApi, file0BytesModel.location, file0BytesModel.name, '-my-');
|
||||
file = await uploadActions.uploadFile(file0BytesModel.location, file0BytesModel.name, '-my-');
|
||||
|
||||
await loginPage.loginToContentServicesUsingUserModel(acsUser);
|
||||
contentServicesPage.goToDocumentList()
|
||||
|
||||
@@ -0,0 +1,214 @@
|
||||
/*!
|
||||
* @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 { browser } from 'protractor';
|
||||
import {
|
||||
LoginPage,
|
||||
UploadActions,
|
||||
StringUtil,
|
||||
ContentNodeSelectorDialogPage,
|
||||
NotificationHistoryPage, BrowserActions
|
||||
} from '@alfresco/adf-testing';
|
||||
import { ContentServicesPage } from '../../pages/adf/contentServicesPage';
|
||||
import { NavigationBarPage } from '../../pages/adf/navigationBarPage';
|
||||
import { AcsUserModel } from '../../models/ACS/acsUserModel';
|
||||
import resources = require('../../util/resources');
|
||||
import {AlfrescoApiCompatibility as AlfrescoApi } from '@alfresco/js-api';
|
||||
import { FileModel } from '../../models/ACS/fileModel';
|
||||
|
||||
describe('Document List Component', () => {
|
||||
|
||||
const loginPage = new LoginPage();
|
||||
const contentServicesPage = new ContentServicesPage();
|
||||
const navigationBarPage = new NavigationBarPage();
|
||||
const contentNodeSelector = new ContentNodeSelectorDialogPage();
|
||||
const notificationHistoryPage = new NotificationHistoryPage();
|
||||
|
||||
this.alfrescoJsApi = new AlfrescoApi({
|
||||
provider: 'ECM',
|
||||
hostEcm: browser.params.testConfig.adf.url
|
||||
});
|
||||
const uploadActions = new UploadActions(this.alfrescoJsApi);
|
||||
|
||||
let uploadedFolder, uploadedFile, sourceFolder, destinationFolder, subFolder, subFolder2, copyFolder, subFile, duplicateFolderName;
|
||||
let acsUser = null, anotherAcsUser: AcsUserModel;
|
||||
let folderName, sameNameFolder;
|
||||
|
||||
const pdfFileModel = new FileModel({
|
||||
'name': resources.Files.ADF_DOCUMENTS.PDF.file_name,
|
||||
'location': resources.Files.ADF_DOCUMENTS.PDF.file_location
|
||||
});
|
||||
|
||||
const testFileModel = new FileModel({
|
||||
'name': resources.Files.ADF_DOCUMENTS.TEST.file_name,
|
||||
'location': resources.Files.ADF_DOCUMENTS.TEST.file_location
|
||||
});
|
||||
|
||||
beforeAll(async (done) => {
|
||||
acsUser = new AcsUserModel();
|
||||
anotherAcsUser = new AcsUserModel();
|
||||
folderName = StringUtil.generateRandomString(5);
|
||||
sameNameFolder = StringUtil.generateRandomString(5);
|
||||
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(anotherAcsUser);
|
||||
await this.alfrescoJsApi.login(acsUser.id, acsUser.password);
|
||||
uploadedFolder = await uploadActions.createFolder(folderName, '-my-');
|
||||
destinationFolder = await uploadActions.createFolder(StringUtil.generateRandomString(5), '-my-');
|
||||
sourceFolder = await uploadActions.createFolder(StringUtil.generateRandomString(5), '-my-');
|
||||
subFolder = await uploadActions.createFolder(sameNameFolder, sourceFolder.entry.id);
|
||||
subFolder2 = await uploadActions.createFolder(StringUtil.generateRandomString(5), subFolder.entry.id);
|
||||
copyFolder = await uploadActions.createFolder(StringUtil.generateRandomString(5), sourceFolder.entry.id);
|
||||
duplicateFolderName = await uploadActions.createFolder(sameNameFolder, '-my-');
|
||||
subFile = await uploadActions.uploadFile(testFileModel.location, testFileModel.name, subFolder.entry.id);
|
||||
await uploadActions.uploadFile(pdfFileModel.location, pdfFileModel.name, uploadedFolder.entry.id);
|
||||
uploadedFile = await uploadActions.uploadFile(pdfFileModel.location, pdfFileModel.name, '-my-');
|
||||
await this.alfrescoJsApi.core.nodesApi.updateNode(sourceFolder.entry.id,
|
||||
|
||||
{
|
||||
permissions: {
|
||||
locallySet: [{
|
||||
authorityId: anotherAcsUser.getId(),
|
||||
name: 'Consumer',
|
||||
accessStatus: 'ALLOWED'
|
||||
}]
|
||||
}
|
||||
});
|
||||
|
||||
browser.driver.sleep(10000);
|
||||
done();
|
||||
});
|
||||
|
||||
afterAll(async (done) => {
|
||||
await this.alfrescoJsApi.login(browser.params.testConfig.adf.adminEmail, browser.params.testConfig.adf.adminPassword);
|
||||
uploadActions.deleteFileOrFolder(uploadedFolder.entry.id);
|
||||
uploadActions.deleteFileOrFolder(uploadedFile.entry.id);
|
||||
uploadActions.deleteFileOrFolder(sourceFolder.entry.id);
|
||||
uploadActions.deleteFileOrFolder(destinationFolder.entry.id);
|
||||
done();
|
||||
});
|
||||
|
||||
describe('Document List Component - Actions Move and Copy', () => {
|
||||
|
||||
beforeEach(async (done) => {
|
||||
await loginPage.loginToContentServicesUsingUserModel(acsUser);
|
||||
navigationBarPage.clickContentServicesButton();
|
||||
done();
|
||||
});
|
||||
|
||||
it('[C260128] Move - Same name file', () => {
|
||||
contentServicesPage.checkContentIsDisplayed(pdfFileModel.name);
|
||||
contentServicesPage.getDocumentList().rightClickOnRow(pdfFileModel.name);
|
||||
contentServicesPage.pressContextMenuActionNamed('Move');
|
||||
contentNodeSelector.checkDialogIsDisplayed();
|
||||
contentNodeSelector.typeIntoNodeSelectorSearchField(folderName);
|
||||
contentNodeSelector.clickContentNodeSelectorResult(folderName);
|
||||
contentNodeSelector.clickMoveCopyButton();
|
||||
notificationHistoryPage.checkNotifyContains('This name is already in use, try a different name.');
|
||||
});
|
||||
|
||||
it('[C260134] Move - folder with subfolder and file within it', () => {
|
||||
contentServicesPage.checkContentIsDisplayed(destinationFolder.entry.name);
|
||||
contentServicesPage.checkContentIsDisplayed(sourceFolder.entry.name);
|
||||
contentServicesPage.getDocumentList().rightClickOnRow(sourceFolder.entry.name);
|
||||
contentServicesPage.pressContextMenuActionNamed('Move');
|
||||
contentNodeSelector.checkDialogIsDisplayed();
|
||||
contentNodeSelector.typeIntoNodeSelectorSearchField(destinationFolder.entry.name);
|
||||
contentNodeSelector.clickContentNodeSelectorResult(destinationFolder.entry.name);
|
||||
contentNodeSelector.clickMoveCopyButton();
|
||||
contentServicesPage.checkContentIsNotDisplayed(sourceFolder.entry.name);
|
||||
contentServicesPage.doubleClickRow(destinationFolder.entry.name);
|
||||
contentServicesPage.checkContentIsDisplayed(sourceFolder.entry.name);
|
||||
contentServicesPage.doubleClickRow(sourceFolder.entry.name);
|
||||
contentServicesPage.checkContentIsDisplayed(subFolder.entry.name);
|
||||
contentServicesPage.doubleClickRow(subFolder.entry.name);
|
||||
contentServicesPage.checkContentIsDisplayed(subFile.entry.name);
|
||||
});
|
||||
|
||||
it('[C260135] Move - Same name folder', () => {
|
||||
contentServicesPage.checkContentIsDisplayed(duplicateFolderName.entry.name);
|
||||
contentServicesPage.getDocumentList().rightClickOnRow(duplicateFolderName.entry.name);
|
||||
contentServicesPage.pressContextMenuActionNamed('Move');
|
||||
contentNodeSelector.checkDialogIsDisplayed();
|
||||
contentNodeSelector.typeIntoNodeSelectorSearchField(sourceFolder.entry.name);
|
||||
contentNodeSelector.clickContentNodeSelectorResult(sourceFolder.entry.name);
|
||||
contentNodeSelector.clickMoveCopyButton();
|
||||
notificationHistoryPage.checkNotifyContains('This name is already in use, try a different name.');
|
||||
});
|
||||
|
||||
it('[C260129] Copy - Same name file', () => {
|
||||
contentServicesPage.checkContentIsDisplayed(pdfFileModel.name);
|
||||
contentServicesPage.getDocumentList().rightClickOnRow(pdfFileModel.name);
|
||||
contentServicesPage.pressContextMenuActionNamed('Copy');
|
||||
contentNodeSelector.checkDialogIsDisplayed();
|
||||
contentNodeSelector.typeIntoNodeSelectorSearchField(folderName);
|
||||
contentNodeSelector.clickContentNodeSelectorResult(folderName);
|
||||
contentNodeSelector.clickMoveCopyButton();
|
||||
notificationHistoryPage.checkNotifyContains('This name is already in use, try a different name.');
|
||||
});
|
||||
|
||||
it('[C260136] Copy - Same name folder', () => {
|
||||
contentServicesPage.checkContentIsDisplayed(duplicateFolderName.entry.name);
|
||||
contentServicesPage.getDocumentList().rightClickOnRow(duplicateFolderName.entry.name);
|
||||
contentServicesPage.pressContextMenuActionNamed('Copy');
|
||||
contentNodeSelector.checkDialogIsDisplayed();
|
||||
contentNodeSelector.typeIntoNodeSelectorSearchField(sourceFolder.entry.name);
|
||||
contentNodeSelector.clickContentNodeSelectorResult(sourceFolder.entry.name);
|
||||
contentNodeSelector.clickMoveCopyButton();
|
||||
notificationHistoryPage.checkNotifyContains('This name is already in use, try a different name.');
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
describe('Document List actionns - Move, Copy on no permission folder', () => {
|
||||
|
||||
beforeAll((done) => {
|
||||
loginPage.loginToContentServicesUsingUserModel(anotherAcsUser);
|
||||
BrowserActions.getUrl(browser.params.testConfig.adf.url + '/files/' + sourceFolder.entry.id);
|
||||
contentServicesPage.getDocumentList().dataTablePage().waitTillContentLoaded();
|
||||
done();
|
||||
});
|
||||
|
||||
it('[C260133] Move - no permission folder', () => {
|
||||
contentServicesPage.checkContentIsDisplayed(subFolder.entry.name);
|
||||
contentServicesPage.getDocumentList().rightClickOnRow(subFolder.entry.name);
|
||||
contentServicesPage.checkContextActionIsVisible('Move');
|
||||
expect(contentServicesPage.checkContentActionIsEnabled('Move')).toBe(false);
|
||||
contentServicesPage.closeActionContext();
|
||||
});
|
||||
|
||||
it('[C260140] Copy - No permission folder', () => {
|
||||
contentServicesPage.checkContentIsDisplayed(subFolder.entry.name);
|
||||
contentServicesPage.checkContentIsDisplayed(copyFolder.entry.name);
|
||||
contentServicesPage.getDocumentList().rightClickOnRow(copyFolder.entry.name);
|
||||
contentServicesPage.checkContextActionIsVisible('Copy');
|
||||
expect(contentServicesPage.checkContentActionIsEnabled('Copy')).toBe(true);
|
||||
contentServicesPage.pressContextMenuActionNamed('Copy');
|
||||
contentNodeSelector.checkDialogIsDisplayed();
|
||||
contentNodeSelector.contentListPage().dataTablePage().checkRowContentIsDisplayed(subFolder.entry.name);
|
||||
contentNodeSelector.contentListPage().dataTablePage().checkRowContentIsDisabled(subFolder.entry.name);
|
||||
contentNodeSelector.clickContentNodeSelectorResult(subFolder.entry.name);
|
||||
contentNodeSelector.contentListPage().dataTablePage().checkRowByContentIsSelected(subFolder.entry.name);
|
||||
expect(contentNodeSelector.checkCopyMoveButtonIsEnabled()).toBe(false);
|
||||
contentNodeSelector.contentListPage().dataTablePage().doubleClickRowByContent(subFolder.entry.name);
|
||||
contentNodeSelector.contentListPage().dataTablePage().waitTillContentLoaded();
|
||||
contentNodeSelector.contentListPage().dataTablePage().checkRowContentIsDisplayed(subFolder2.entry.name);
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
});
|
||||
@@ -1,188 +0,0 @@
|
||||
/*!
|
||||
* @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 { by, element, browser } from 'protractor';
|
||||
import { LoginPage, PaginationPage } from '@alfresco/adf-testing';
|
||||
import { ContentServicesPage } from '../../pages/adf/contentServicesPage';
|
||||
import { AcsUserModel } from '../../models/ACS/acsUserModel';
|
||||
import { AlfrescoApiCompatibility as AlfrescoApi } from '@alfresco/js-api';
|
||||
import { UploadActions } from '../../actions/ACS/upload.actions';
|
||||
import { StringUtil } from '@alfresco/adf-testing';
|
||||
import { ContentNodeSelectorDialogPage } from '@alfresco/adf-testing';
|
||||
import { BreadCrumbDropdownPage } from '../../pages/adf/content-services/breadcrumb/breadCrumbDropdownPage';
|
||||
import { FolderModel } from '../../models/ACS/folderModel';
|
||||
import { BreadCrumbPage } from '../../pages/adf/content-services/breadcrumb/breadCrumbPage';
|
||||
import { InfinitePaginationPage } from '../../pages/adf/core/infinitePaginationPage';
|
||||
|
||||
describe('Document List Component - Actions', () => {
|
||||
|
||||
const loginPage = new LoginPage();
|
||||
const contentServicesPage = new ContentServicesPage();
|
||||
const contentListPage = contentServicesPage.getDocumentList();
|
||||
const contentNodeSelector = new ContentNodeSelectorDialogPage();
|
||||
const paginationPage = new PaginationPage();
|
||||
const breadCrumbDropdownPage = new BreadCrumbDropdownPage();
|
||||
const breadCrumbPage = new BreadCrumbPage();
|
||||
const uploadActions = new UploadActions();
|
||||
const infinitePaginationPage = new InfinitePaginationPage(element(by.css('adf-content-node-selector')));
|
||||
|
||||
const alfrescoJsApi = new AlfrescoApi({
|
||||
provider: 'ECM',
|
||||
hostEcm: browser.params.testConfig.adf.url
|
||||
});
|
||||
|
||||
describe('Folder Actions - Copy and Move', () => {
|
||||
|
||||
const folderModel1 = new FolderModel({ 'name': StringUtil.generateRandomString() });
|
||||
const folderModel2 = new FolderModel({ 'name': StringUtil.generateRandomString() });
|
||||
const folderModel3 = new FolderModel({ 'name': StringUtil.generateRandomString() });
|
||||
const folderModel4 = new FolderModel({ 'name': StringUtil.generateRandomString() });
|
||||
const folderModel5 = new FolderModel({ 'name': StringUtil.generateRandomString() });
|
||||
const folderModel6 = new FolderModel({ 'name': StringUtil.generateRandomString() });
|
||||
|
||||
let folder1, folder2, folder3, folder4, folder5, folder6;
|
||||
|
||||
let folders;
|
||||
const contentServicesUser = new AcsUserModel();
|
||||
|
||||
beforeAll(async (done) => {
|
||||
|
||||
await alfrescoJsApi.login(browser.params.testConfig.adf.adminEmail, browser.params.testConfig.adf.adminPassword);
|
||||
await alfrescoJsApi.core.peopleApi.addPerson(contentServicesUser);
|
||||
await alfrescoJsApi.login(contentServicesUser.id, contentServicesUser.password);
|
||||
folder1 = await uploadActions.createFolder(alfrescoJsApi, 'A' + folderModel1.name, '-my-');
|
||||
folder2 = await uploadActions.createFolder(alfrescoJsApi, 'B' + folderModel2.name, '-my-');
|
||||
folder3 = await uploadActions.createFolder(alfrescoJsApi, 'C' + folderModel3.name, '-my-');
|
||||
folder4 = await uploadActions.createFolder(alfrescoJsApi, 'D' + folderModel4.name, '-my-');
|
||||
folder5 = await uploadActions.createFolder(alfrescoJsApi, 'E' + folderModel5.name, '-my-');
|
||||
folder6 = await uploadActions.createFolder(alfrescoJsApi, 'F' + folderModel6.name, '-my-');
|
||||
folders = [folder1, folder2, folder3, folder4, folder5, folder6];
|
||||
|
||||
await loginPage.loginToContentServicesUsingUserModel(contentServicesUser);
|
||||
contentServicesPage.goToDocumentList();
|
||||
contentServicesPage.waitForTableBody();
|
||||
paginationPage.selectItemsPerPage('5');
|
||||
contentServicesPage.checkAcsContainer();
|
||||
contentListPage.waitForTableBody();
|
||||
|
||||
done();
|
||||
});
|
||||
|
||||
afterAll(async (done) => {
|
||||
await alfrescoJsApi.login(browser.params.testConfig.adf.adminEmail, browser.params.testConfig.adf.adminPassword);
|
||||
await folders.forEach(function (folder) {
|
||||
uploadActions.deleteFilesOrFolder(alfrescoJsApi, folder.entry.id);
|
||||
});
|
||||
done();
|
||||
});
|
||||
|
||||
it('[C260132] Move action on folder with - Load more', () => {
|
||||
|
||||
expect(paginationPage.getCurrentItemsPerPage()).toEqual('5');
|
||||
expect(paginationPage.getPaginationRange()).toEqual('Showing 1-' + 5 + ' of ' + 6);
|
||||
contentListPage.rightClickOnRow('A' + folderModel1.name);
|
||||
contentServicesPage.checkContextActionIsVisible('Move');
|
||||
contentServicesPage.pressContextMenuActionNamed('Move');
|
||||
contentNodeSelector.checkDialogIsDisplayed();
|
||||
expect(contentNodeSelector.getDialogHeaderText()).toBe('Move \'' + 'A' + folderModel1.name + '\' to...');
|
||||
contentNodeSelector.checkSearchInputIsDisplayed();
|
||||
expect(contentNodeSelector.getSearchLabel()).toBe('Search');
|
||||
contentNodeSelector.checkSelectedSiteIsDisplayed('My files');
|
||||
contentNodeSelector.checkCancelButtonIsDisplayed();
|
||||
contentNodeSelector.checkMoveCopyButtonIsDisplayed();
|
||||
expect(contentNodeSelector.getMoveCopyButtonText()).toBe('MOVE');
|
||||
expect(contentNodeSelector.numberOfResultsDisplayed()).toBe(5);
|
||||
infinitePaginationPage.clickLoadMoreButton();
|
||||
expect(contentNodeSelector.numberOfResultsDisplayed()).toBe(6);
|
||||
infinitePaginationPage.checkLoadMoreButtonIsNotDisplayed();
|
||||
contentNodeSelector.contentListPage().dataTablePage().selectRowByContent('F' + folderModel6.name);
|
||||
contentNodeSelector.contentListPage().dataTablePage().checkRowByContentIsSelected('F' + folderModel6.name);
|
||||
contentNodeSelector.clickCancelButton();
|
||||
contentNodeSelector.checkDialogIsNotDisplayed();
|
||||
contentServicesPage.checkContentIsDisplayed('A' + folderModel1.name);
|
||||
|
||||
contentListPage.rightClickOnRow('A' + folderModel1.name);
|
||||
contentServicesPage.checkContextActionIsVisible('Move');
|
||||
contentServicesPage.pressContextMenuActionNamed('Move');
|
||||
contentNodeSelector.checkDialogIsDisplayed();
|
||||
infinitePaginationPage.clickLoadMoreButton();
|
||||
contentNodeSelector.contentListPage().dataTablePage().selectRowByContent('F' + folderModel6.name);
|
||||
contentNodeSelector.contentListPage().dataTablePage().checkRowByContentIsSelected('F' + folderModel6.name);
|
||||
contentNodeSelector.clickMoveCopyButton();
|
||||
contentServicesPage.checkContentIsNotDisplayed('A' + folderModel1.name);
|
||||
contentServicesPage.doubleClickRow('F' + folderModel6.name);
|
||||
contentServicesPage.checkContentIsDisplayed('A' + folderModel1.name);
|
||||
|
||||
contentListPage.rightClickOnRow('A' + folderModel1.name);
|
||||
contentServicesPage.checkContextActionIsVisible('Move');
|
||||
contentServicesPage.pressContextMenuActionNamed('Move');
|
||||
contentNodeSelector.checkDialogIsDisplayed();
|
||||
breadCrumbDropdownPage.clickParentFolder();
|
||||
breadCrumbDropdownPage.checkBreadCrumbDropdownIsDisplayed();
|
||||
breadCrumbDropdownPage.choosePath(contentServicesUser.id);
|
||||
contentNodeSelector.clickMoveCopyButton();
|
||||
contentServicesPage.checkContentIsNotDisplayed('A' + folderModel1.name);
|
||||
|
||||
breadCrumbPage.chooseBreadCrumb(contentServicesUser.id);
|
||||
contentServicesPage.waitForTableBody();
|
||||
contentServicesPage.checkContentIsDisplayed('A' + folderModel1.name);
|
||||
|
||||
});
|
||||
|
||||
it('[C305051] Copy action on folder with - Load more', () => {
|
||||
|
||||
expect(paginationPage.getCurrentItemsPerPage()).toEqual('5');
|
||||
expect(paginationPage.getPaginationRange()).toEqual('Showing 1-' + 5 + ' of ' + 6);
|
||||
contentListPage.rightClickOnRow('A' + folderModel1.name);
|
||||
contentServicesPage.checkContextActionIsVisible('Copy');
|
||||
contentServicesPage.pressContextMenuActionNamed('Copy');
|
||||
contentNodeSelector.checkDialogIsDisplayed();
|
||||
expect(contentNodeSelector.getDialogHeaderText()).toBe('Copy \'' + 'A' + folderModel1.name + '\' to...');
|
||||
contentNodeSelector.checkSearchInputIsDisplayed();
|
||||
expect(contentNodeSelector.getSearchLabel()).toBe('Search');
|
||||
contentNodeSelector.checkSelectedSiteIsDisplayed('My files');
|
||||
contentNodeSelector.checkCancelButtonIsDisplayed();
|
||||
contentNodeSelector.checkMoveCopyButtonIsDisplayed();
|
||||
expect(contentNodeSelector.getMoveCopyButtonText()).toBe('COPY');
|
||||
expect(contentNodeSelector.numberOfResultsDisplayed()).toBe(5);
|
||||
infinitePaginationPage.clickLoadMoreButton();
|
||||
expect(contentNodeSelector.numberOfResultsDisplayed()).toBe(6);
|
||||
infinitePaginationPage.checkLoadMoreButtonIsNotDisplayed();
|
||||
contentNodeSelector.contentListPage().dataTablePage().selectRowByContent('F' + folderModel6.name);
|
||||
contentNodeSelector.contentListPage().dataTablePage().checkRowByContentIsSelected('F' + folderModel6.name);
|
||||
contentNodeSelector.clickCancelButton();
|
||||
contentNodeSelector.checkDialogIsNotDisplayed();
|
||||
contentServicesPage.checkContentIsDisplayed('A' + folderModel1.name);
|
||||
|
||||
contentListPage.rightClickOnRow('A' + folderModel1.name);
|
||||
contentServicesPage.checkContextActionIsVisible('Copy');
|
||||
contentServicesPage.pressContextMenuActionNamed('Copy');
|
||||
contentNodeSelector.checkDialogIsDisplayed();
|
||||
infinitePaginationPage.clickLoadMoreButton();
|
||||
contentNodeSelector.contentListPage().dataTablePage().selectRowByContent('F' + folderModel6.name);
|
||||
contentNodeSelector.contentListPage().dataTablePage().checkRowByContentIsSelected('F' + folderModel6.name);
|
||||
contentNodeSelector.clickMoveCopyButton();
|
||||
contentServicesPage.checkContentIsDisplayed('A' + folderModel1.name);
|
||||
paginationPage.clickOnNextPage();
|
||||
contentListPage.waitForTableBody();
|
||||
contentServicesPage.doubleClickRow('F' + folderModel6.name);
|
||||
contentServicesPage.checkContentIsDisplayed('A' + folderModel1.name);
|
||||
|
||||
});
|
||||
|
||||
});
|
||||
});
|
||||
@@ -19,9 +19,8 @@ import { ContentServicesPage } from '../../pages/adf/contentServicesPage';
|
||||
import { AcsUserModel } from '../../models/ACS/acsUserModel';
|
||||
import { browser } from 'protractor';
|
||||
import resources = require('../../util/resources');
|
||||
import { LoginPage, StringUtil } from '@alfresco/adf-testing';
|
||||
import { LoginPage, StringUtil, UploadActions } from '@alfresco/adf-testing';
|
||||
import { AlfrescoApiCompatibility as AlfrescoApi } from '@alfresco/js-api';
|
||||
import { UploadActions } from '../../actions/ACS/upload.actions';
|
||||
import { FileModel } from '../../models/ACS/fileModel';
|
||||
import { NavigationBarPage } from '../../pages/adf/navigationBarPage';
|
||||
|
||||
@@ -29,16 +28,13 @@ describe('Document List Component', () => {
|
||||
|
||||
const loginPage = new LoginPage();
|
||||
const contentServicesPage = new ContentServicesPage();
|
||||
const uploadActions = new UploadActions();
|
||||
let acsUser = null;
|
||||
const navBar = new NavigationBarPage();
|
||||
|
||||
beforeAll(() => {
|
||||
this.alfrescoJsApi = new AlfrescoApi({
|
||||
this.alfrescoJsApi = new AlfrescoApi({
|
||||
provider: 'ECM',
|
||||
hostEcm: browser.params.testConfig.adf.url
|
||||
});
|
||||
});
|
||||
const uploadActions = new UploadActions(this.alfrescoJsApi);
|
||||
let acsUser = null;
|
||||
const navBar = new NavigationBarPage();
|
||||
|
||||
describe('Gallery View', () => {
|
||||
|
||||
@@ -74,11 +70,11 @@ describe('Document List Component', () => {
|
||||
await this.alfrescoJsApi.login(browser.params.testConfig.adf.adminEmail, browser.params.testConfig.adf.adminPassword);
|
||||
funnyUser = await this.alfrescoJsApi.core.peopleApi.addPerson(acsUser);
|
||||
await this.alfrescoJsApi.login(acsUser.id, acsUser.password);
|
||||
filePdfNode = await uploadActions.uploadFile(this.alfrescoJsApi, pdfFile.location, pdfFile.name, '-my-');
|
||||
fileTestNode = await uploadActions.uploadFile(this.alfrescoJsApi, testFile.location, testFile.name, '-my-');
|
||||
fileDocxNode = await uploadActions.uploadFile(this.alfrescoJsApi, docxFile.location, docxFile.name, '-my-');
|
||||
folderNode = await uploadActions.createFolder(this.alfrescoJsApi, folderName, '-my-');
|
||||
filePDFSubNode = await uploadActions.uploadFile(this.alfrescoJsApi, pdfFile.location, pdfFile.name, folderNode.entry.id);
|
||||
filePdfNode = await uploadActions.uploadFile(pdfFile.location, pdfFile.name, '-my-');
|
||||
fileTestNode = await uploadActions.uploadFile(testFile.location, testFile.name, '-my-');
|
||||
fileDocxNode = await uploadActions.uploadFile(docxFile.location, docxFile.name, '-my-');
|
||||
folderNode = await uploadActions.createFolder(folderName, '-my-');
|
||||
filePDFSubNode = await uploadActions.uploadFile(pdfFile.location, pdfFile.name, folderNode.entry.id);
|
||||
|
||||
await loginPage.loginToContentServicesUsingUserModel(acsUser);
|
||||
|
||||
@@ -174,19 +170,19 @@ describe('Document List Component', () => {
|
||||
afterAll(async (done) => {
|
||||
await this.alfrescoJsApi.login(browser.params.testConfig.adf.adminEmail, browser.params.testConfig.adf.adminPassword);
|
||||
if (filePdfNode) {
|
||||
await uploadActions.deleteFilesOrFolder(this.alfrescoJsApi, filePdfNode.entry.id);
|
||||
await uploadActions.deleteFileOrFolder(filePdfNode.entry.id);
|
||||
}
|
||||
if (fileTestNode) {
|
||||
await uploadActions.deleteFilesOrFolder(this.alfrescoJsApi, fileTestNode.entry.id);
|
||||
await uploadActions.deleteFileOrFolder(fileTestNode.entry.id);
|
||||
}
|
||||
if (fileDocxNode) {
|
||||
await uploadActions.deleteFilesOrFolder(this.alfrescoJsApi, fileDocxNode.entry.id);
|
||||
await uploadActions.deleteFileOrFolder(fileDocxNode.entry.id);
|
||||
}
|
||||
if (filePDFSubNode) {
|
||||
await uploadActions.deleteFilesOrFolder(this.alfrescoJsApi, filePDFSubNode.entry.id);
|
||||
await uploadActions.deleteFileOrFolder(filePDFSubNode.entry.id);
|
||||
}
|
||||
if (folderNode) {
|
||||
await uploadActions.deleteFilesOrFolder(this.alfrescoJsApi, folderNode.entry.id);
|
||||
await uploadActions.deleteFileOrFolder(folderNode.entry.id);
|
||||
}
|
||||
done();
|
||||
});
|
||||
|
||||
@@ -15,18 +15,14 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import { LoginPage } from '@alfresco/adf-testing';
|
||||
import { LoginPage, UploadActions, PaginationPage } from '@alfresco/adf-testing';
|
||||
import { ContentServicesPage } from '../../pages/adf/contentServicesPage';
|
||||
import { PaginationPage } from '@alfresco/adf-testing';
|
||||
|
||||
import { NavigationBarPage } from '../../pages/adf/navigationBarPage';
|
||||
import { AcsUserModel } from '../../models/ACS/acsUserModel';
|
||||
import { FolderModel } from '../../models/ACS/folderModel';
|
||||
|
||||
import { Util } from '../../util/util';
|
||||
|
||||
import { AlfrescoApiCompatibility as AlfrescoApi } from '@alfresco/js-api';
|
||||
import { UploadActions } from '../../actions/ACS/upload.actions';
|
||||
import { browser } from 'protractor';
|
||||
import { AlfrescoApiCompatibility as AlfrescoApi } from '@alfresco/js-api';
|
||||
|
||||
describe('Document List - Pagination', function () {
|
||||
const pagination = {
|
||||
@@ -50,6 +46,7 @@ describe('Document List - Pagination', function () {
|
||||
const loginPage = new LoginPage();
|
||||
const contentServicesPage = new ContentServicesPage();
|
||||
const paginationPage = new PaginationPage();
|
||||
const navigationBarPage = new NavigationBarPage();
|
||||
|
||||
const acsUser = new AcsUserModel();
|
||||
const newFolderModel = new FolderModel({ 'name': 'newFolder' });
|
||||
@@ -60,17 +57,15 @@ describe('Document List - Pagination', function () {
|
||||
const secondSetNumber = 25;
|
||||
const folderTwoModel = new FolderModel({ 'name': 'folderTwo' });
|
||||
const folderThreeModel = new FolderModel({ 'name': 'folderThree' });
|
||||
|
||||
beforeAll(async (done) => {
|
||||
const uploadActions = new UploadActions();
|
||||
|
||||
fileNames = Util.generateSequenceFiles(10, nrOfFiles + 9, pagination.base, pagination.extension);
|
||||
secondSetOfFiles = Util.generateSequenceFiles(10, secondSetNumber + 9, pagination.secondSetBase, pagination.extension);
|
||||
|
||||
this.alfrescoJsApi = new AlfrescoApi({
|
||||
this.alfrescoJsApi = new AlfrescoApi({
|
||||
provider: 'ECM',
|
||||
hostEcm: browser.params.testConfig.adf.url
|
||||
});
|
||||
const uploadActions = new UploadActions(this.alfrescoJsApi);
|
||||
|
||||
beforeAll(async (done) => {
|
||||
fileNames = Util.generateSequenceFiles(10, nrOfFiles + 9, pagination.base, pagination.extension);
|
||||
secondSetOfFiles = Util.generateSequenceFiles(10, secondSetNumber + 9, pagination.secondSetBase, pagination.extension);
|
||||
|
||||
await this.alfrescoJsApi.login(browser.params.testConfig.adf.adminEmail, browser.params.testConfig.adf.adminPassword);
|
||||
|
||||
@@ -78,14 +73,14 @@ describe('Document List - Pagination', function () {
|
||||
|
||||
await this.alfrescoJsApi.login(acsUser.id, acsUser.password);
|
||||
|
||||
const folderThreeUploadedModel = await uploadActions.createFolder(this.alfrescoJsApi, folderThreeModel.name, '-my-');
|
||||
const newFolderUploadedModel = await uploadActions.createFolder(this.alfrescoJsApi, newFolderModel.name, '-my-');
|
||||
const folderThreeUploadedModel = await uploadActions.createFolder(folderThreeModel.name, '-my-');
|
||||
const newFolderUploadedModel = await uploadActions.createFolder(newFolderModel.name, '-my-');
|
||||
|
||||
await uploadActions.createEmptyFiles(this.alfrescoJsApi, fileNames, newFolderUploadedModel.entry.id);
|
||||
await uploadActions.createEmptyFiles(fileNames, newFolderUploadedModel.entry.id);
|
||||
|
||||
await uploadActions.createEmptyFiles(this.alfrescoJsApi, secondSetOfFiles, folderThreeUploadedModel.entry.id);
|
||||
await uploadActions.createEmptyFiles(secondSetOfFiles, folderThreeUploadedModel.entry.id);
|
||||
|
||||
await loginPage.loginToContentServicesUsingUserModel(acsUser);
|
||||
loginPage.loginToContentServicesUsingUserModel(acsUser);
|
||||
|
||||
done();
|
||||
});
|
||||
@@ -127,9 +122,14 @@ describe('Document List - Pagination', function () {
|
||||
paginationPage.checkNextPageButtonIsDisabled();
|
||||
paginationPage.checkPreviousPageButtonIsDisabled();
|
||||
|
||||
browser.refresh();
|
||||
navigationBarPage.clickLogoutButton();
|
||||
loginPage.loginToContentServicesUsingUserModel(acsUser);
|
||||
contentServicesPage.goToDocumentList();
|
||||
contentServicesPage.checkAcsContainer();
|
||||
contentServicesPage.waitForTableBody();
|
||||
expect(paginationPage.getCurrentItemsPerPage()).toEqual(itemsPerPage.twenty);
|
||||
navigationBarPage.clickLogoutButton();
|
||||
loginPage.loginToContentServicesUsingUserModel(acsUser);
|
||||
});
|
||||
|
||||
it('[C260069] Should be able to set Items per page to 5', () => {
|
||||
@@ -180,6 +180,8 @@ describe('Document List - Pagination', function () {
|
||||
contentServicesPage.checkAcsContainer();
|
||||
contentServicesPage.waitForTableBody();
|
||||
expect(paginationPage.getCurrentItemsPerPage()).toEqual(itemsPerPage.five);
|
||||
navigationBarPage.clickLogoutButton();
|
||||
loginPage.loginToContentServicesUsingUserModel(acsUser);
|
||||
});
|
||||
|
||||
it('[C260067] Should be able to set Items per page to 10', () => {
|
||||
@@ -210,6 +212,9 @@ describe('Document List - Pagination', function () {
|
||||
browser.refresh();
|
||||
contentServicesPage.waitForTableBody();
|
||||
expect(paginationPage.getCurrentItemsPerPage()).toEqual(itemsPerPage.ten);
|
||||
navigationBarPage.clickLogoutButton();
|
||||
loginPage.loginToContentServicesUsingUserModel(acsUser);
|
||||
currentPage = 1;
|
||||
});
|
||||
|
||||
it('[C260065] Should be able to set Items per page to 15', () => {
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user