diff --git a/cspell.json b/cspell.json
index f5f599032..ddb8d9a9e 100644
--- a/cspell.json
+++ b/cspell.json
@@ -22,7 +22,6 @@
"promisify",
"xdescribe",
"unfavorite",
- "Snackbar",
"devtools",
"gitter",
"jira",
@@ -47,9 +46,7 @@
"exif",
"cardview",
"webm",
- "keycodes",
-
- "docx"
+ "keycodes"
],
"dictionaries": [
"html",
diff --git a/e2e/components/info-drawer/info-drawer.ts b/e2e/components/info-drawer/info-drawer.ts
new file mode 100755
index 000000000..bf472e5ed
--- /dev/null
+++ b/e2e/components/info-drawer/info-drawer.ts
@@ -0,0 +1,95 @@
+/*!
+ * @license
+ * Alfresco Example Content Application
+ *
+ * Copyright (C) 2005 - 2018 Alfresco Software Limited
+ *
+ * This file is part of the Alfresco Example Content Application.
+ * If the software was purchased under a paid Alfresco license, the terms of
+ * the paid license agreement will prevail. Otherwise, the software is
+ * provided under the following open source license terms:
+ *
+ * The Alfresco Example Content Application is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * The Alfresco Example Content Application is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with Alfresco. If not, see .
+ */
+
+import { ElementFinder, ElementArrayFinder, by, protractor, browser, ExpectedConditions as EC } from 'protractor';
+import { Component } from '../component';
+import { BROWSER_WAIT_TIMEOUT } from '../../configs';
+
+export class InfoDrawer extends Component {
+ private static selectors = {
+ root: 'aca-info-drawer',
+
+ header: '.adf-info-drawer-layout-header',
+ content: '.adf-info-drawer-layout-content',
+
+ tabs: '.adf-info-drawer-tabs',
+ tabLabel: '.mat-tab-label-content',
+ tabActiveLabel: '.mat-tab-label-active',
+
+ activeTabContent: '.mat-tab-body-active .mat-tab-body-content app-dynamic-tab',
+ next: '.mat-tab-header-pagination-after .mat-tab-header-pagination-chevron',
+ previous: '.mat-tab-header-pagination-before .mat-tab-header-pagination-chevron'
+ };
+
+ header: ElementFinder = this.component.element(by.css(InfoDrawer.selectors.header));
+ tabLabel: ElementFinder = this.component.element(by.css(InfoDrawer.selectors.tabLabel));
+ tabLabelsList: ElementArrayFinder = this.component.all(by.css(InfoDrawer.selectors.tabLabel));
+ tabActiveLabel: ElementFinder = this.component.element(by.css(InfoDrawer.selectors.tabActiveLabel));
+
+ tabActiveContent: ElementFinder = this.component.element(by.css(InfoDrawer.selectors.activeTabContent));
+
+ nextButton: ElementFinder = this.component.element(by.css(InfoDrawer.selectors.next));
+ previousButton: ElementFinder = this.component.element(by.css(InfoDrawer.selectors.previous));
+
+ constructor(ancestor?: ElementFinder) {
+ super(InfoDrawer.selectors.root, ancestor);
+ }
+
+ async waitForInfoDrawerToOpen() {
+ return browser.wait(EC.presenceOf(this.header), BROWSER_WAIT_TIMEOUT);
+ }
+
+ async isEmpty() {
+ if (await browser.isElementPresent(by.css(InfoDrawer.selectors.tabs))) {
+ return false;
+ }
+ return true;
+ }
+
+ getTabByTitle(title: string) {
+ return this.component.element(by.cssContainingText(InfoDrawer.selectors.tabLabel, title));
+ }
+
+ async isTabPresent(title: string) {
+ return await this.getTabByTitle(title).isPresent();
+ }
+
+ async isTabDisplayed(title: string) {
+ return await this.getTabByTitle(title).isDisplayed();
+ }
+
+ async getTabTitle(index: number) {
+ return await this.tabLabelsList.get(index - 1).getAttribute('innerText');
+ }
+
+ async clickTab(title: string) {
+ return await this.getTabByTitle(title).click();
+ }
+
+ async getComponentIdOfTab(title: string) {
+ return await this.tabActiveContent.getAttribute('data-automation-id');
+ }
+}
+
diff --git a/e2e/configs.ts b/e2e/configs.ts
index 5fca63a25..f717d3d3a 100755
--- a/e2e/configs.ts
+++ b/e2e/configs.ts
@@ -90,3 +90,9 @@ export const FILES = {
xlsxFile: 'file-xlsx.xlsx',
unsupportedFile: 'file_unsupported.3DS'
};
+
+export const EXTENSIBILITY_CONFIGS = {
+ DEFAULT_EXTENSIONS_CONFIG: 'extensions-default.json',
+ INFO_DRAWER: 'info-drawer-ext.json',
+ INFO_DRAWER_EMPTY: 'info-drawer-no-tabs-ext.json'
+};
diff --git a/e2e/resources/extensibility-configs/extensions-default.json b/e2e/resources/extensibility-configs/extensions-default.json
new file mode 100644
index 000000000..78c062239
--- /dev/null
+++ b/e2e/resources/extensibility-configs/extensions-default.json
@@ -0,0 +1,766 @@
+{
+ "$schema": "../../extension.schema.json",
+ "$name": "app",
+ "$version": "1.0.0",
+ "$references": [
+ "plugin1.json",
+ "plugin2.json",
+ "dev.tools.json"
+ ],
+
+ "rules": [
+ {
+ "id": "app.toolbar.favorite.canToggle",
+ "comment": "workaround for recent files and search api issue",
+ "type": "core.every",
+ "parameters": [
+ {
+ "type": "rule",
+ "value": "core.some",
+ "parameters": [
+ { "type": "rule", "value": "app.selection.canAddFavorite" },
+ { "type": "rule", "value": "app.selection.canRemoveFavorite" }
+ ]
+ },
+ {
+ "type": "rule",
+ "value": "core.some",
+ "parameters": [
+ { "type": "rule", "value": "app.navigation.isRecentFiles" },
+ { "type": "rule", "value": "app.navigation.isSharedFiles" },
+ { "type": "rule", "value": "app.navigation.isSearchResults" }
+ ]
+ }
+ ]
+ },
+ {
+ "id": "app.toolbar.favorite.canAdd",
+ "type": "core.every",
+ "parameters": [
+ { "type": "rule", "value": "app.selection.canAddFavorite" },
+ { "type": "rule", "value": "app.navigation.isNotRecentFiles" },
+ { "type": "rule", "value": "app.navigation.isNotSharedFiles" },
+ { "type": "rule", "value": "app.navigation.isNotSearchResults" }
+ ]
+ },
+ {
+ "id": "app.toolbar.favorite.canRemove",
+ "type": "core.every",
+ "parameters": [
+ { "type": "rule", "value": "app.selection.canRemoveFavorite" },
+ { "type": "rule", "value": "app.navigation.isNotRecentFiles" },
+ { "type": "rule", "value": "app.navigation.isNotSharedFiles" },
+ { "type": "rule", "value": "app.navigation.isNotSearchResults" }
+ ]
+ },
+ {
+ "id": "app.toolbar.info",
+ "type": "core.every",
+ "parameters": [
+ { "type": "rule", "value": "app.selection.notEmpty" },
+ { "type": "rule", "value": "app.navigation.isNotLibraries" },
+ { "type": "rule", "value": "app.navigation.isNotTrashcan" }
+ ]
+ },
+ {
+ "id": "app.toolbar.canCopyNode",
+ "type": "core.every",
+ "parameters": [
+ { "type": "rule", "value": "app.selection.notEmpty" },
+ { "type": "rule", "value": "app.navigation.isNotTrashcan" },
+ { "type": "rule", "value": "app.navigation.isNotLibraries" }
+ ]
+ },
+ {
+ "id": "app.toolbar.permissions",
+ "type": "core.every",
+ "parameters": [
+ { "type": "rule", "value": "app.selection.file" },
+ { "type": "rule", "value": "app.selection.first.canUpdate" },
+ { "type": "rule", "value": "app.navigation.isNotTrashcan" }
+ ]
+ },
+ {
+ "id": "app.toolbar.versions",
+ "type": "core.every",
+ "parameters": [
+ { "type": "rule", "value": "app.selection.file" },
+ { "type": "rule", "value": "app.navigation.isNotTrashcan" }
+ ]
+ },
+ {
+ "id": "app.trashcan.hasSelection",
+ "type": "core.every",
+ "parameters": [
+ { "type": "rule", "value": "app.selection.notEmpty" },
+ { "type": "rule", "value": "app.navigation.isTrashcan" }
+ ]
+ },
+ {
+ "id": "app.toolbar.canEditFolder",
+ "type": "core.every",
+ "parameters": [
+ { "type": "rule", "value": "app.selection.folder" },
+ { "type": "rule", "value": "app.selection.folder.canUpdate" },
+ { "type": "rule", "value": "app.navigation.isNotTrashcan" }
+ ]
+ },
+ {
+ "id": "app.toolbar.canViewFile",
+ "type": "core.every",
+ "parameters": [
+ {
+ "type": "rule",
+ "value": "app.selection.file"
+ },
+ {
+ "type": "rule",
+ "value": "core.not",
+ "parameters": [
+ { "type": "rule", "value": "app.navigation.isTrashcan" }
+ ]
+ }
+ ]
+ },
+ {
+ "id": "app.toolbar.canDownload",
+ "type": "core.every",
+ "parameters": [
+ { "type": "rule", "value": "app.selection.canDownload" },
+ { "type": "rule", "value": "app.navigation.isNotTrashcan" }
+ ]
+ }
+ ],
+
+ "features": {
+ "create": [
+ {
+ "id": "app.create.folder",
+ "order": 100,
+ "icon": "create_new_folder",
+ "title": "APP.NEW_MENU.MENU_ITEMS.CREATE_FOLDER",
+ "description": "APP.NEW_MENU.TOOLTIPS.CREATE_FOLDER",
+ "description-disabled": "APP.NEW_MENU.TOOLTIPS.CREATE_FOLDER_NOT_ALLOWED",
+ "actions": {
+ "click": "CREATE_FOLDER"
+ },
+ "rules": {
+ "enabled": "app.navigation.folder.canCreate"
+ }
+ },
+ {
+ "id": "app.create.uploadFile",
+ "order": 200,
+ "icon": "file_upload",
+ "title": "APP.NEW_MENU.MENU_ITEMS.UPLOAD_FILE",
+ "description": "APP.NEW_MENU.TOOLTIPS.UPLOAD_FILES",
+ "description-disabled": "APP.NEW_MENU.TOOLTIPS.UPLOAD_FILES_NOT_ALLOWED",
+ "actions": {
+ "click": "UPLOAD_FILES"
+ },
+ "rules": {
+ "enabled": "app.navigation.folder.canUpload"
+ }
+ },
+ {
+ "id": "app.create.uploadFolder",
+ "order": 300,
+ "icon": "file_upload",
+ "title": "APP.NEW_MENU.MENU_ITEMS.UPLOAD_FOLDER",
+ "description": "APP.NEW_MENU.TOOLTIPS.UPLOAD_FOLDERS",
+ "description-disabled": "APP.NEW_MENU.TOOLTIPS.UPLOAD_FOLDERS_NOT_ALLOWED",
+ "actions": {
+ "click": "UPLOAD_FOLDER"
+ },
+ "rules": {
+ "enabled": "app.navigation.folder.canUpload"
+ }
+ }
+ ],
+ "navbar": [
+ {
+ "id": "app.navbar.primary",
+ "items": [
+ {
+ "id": "app.navbar.personalFiles",
+ "order": 100,
+ "icon": "folder",
+ "title": "APP.BROWSE.PERSONAL.SIDENAV_LINK.LABEL",
+ "description": "APP.BROWSE.PERSONAL.SIDENAV_LINK.TOOLTIP",
+ "route": "personal-files"
+ },
+ {
+ "id": "app.navbar.libraries",
+ "order": 200,
+ "icon": "group_work",
+ "title": "APP.BROWSE.LIBRARIES.SIDENAV_LINK.LABEL",
+ "description": "APP.BROWSE.LIBRARIES.SIDENAV_LINK.TOOLTIP",
+ "route": "libraries"
+ }
+ ]
+ },
+ {
+ "id": "app.navbar.secondary",
+ "items": [
+ {
+ "id": "app.navbar.shared",
+ "order": 100,
+ "icon": "people",
+ "title": "APP.BROWSE.SHARED.SIDENAV_LINK.LABEL",
+ "description": "APP.BROWSE.SHARED.SIDENAV_LINK.TOOLTIP",
+ "route": "shared"
+ },
+ {
+ "id": "app.navbar.recentFiles",
+ "order": 200,
+ "icon": "schedule",
+ "title": "APP.BROWSE.RECENT.SIDENAV_LINK.LABEL",
+ "description": "APP.BROWSE.RECENT.SIDENAV_LINK.TOOLTIP",
+ "route": "recent-files"
+ },
+ {
+ "id": "app.navbar.favorites",
+ "order": 300,
+ "icon": "star",
+ "title": "APP.BROWSE.FAVORITES.SIDENAV_LINK.LABEL",
+ "description": "APP.BROWSE.FAVORITES.SIDENAV_LINK.TOOLTIP",
+ "route": "favorites"
+ },
+ {
+ "id": "app.navbar.trashcan",
+ "order": 400,
+ "icon": "delete",
+ "title": "APP.BROWSE.TRASHCAN.SIDENAV_LINK.LABEL",
+ "description": "APP.BROWSE.TRASHCAN.SIDENAV_LINK.TOOLTIP",
+ "route": "trashcan"
+ }
+ ]
+ }
+ ],
+ "toolbar": [
+ {
+ "id": "app.toolbar.preview",
+ "order": 100,
+ "title": "APP.ACTIONS.VIEW",
+ "icon": "open_in_browser",
+ "actions": {
+ "click": "VIEW_FILE"
+ },
+ "rules": {
+ "visible": "app.toolbar.canViewFile"
+ }
+ },
+ {
+ "id": "app.toolbar.download",
+ "order": 200,
+ "title": "APP.ACTIONS.DOWNLOAD",
+ "icon": "get_app",
+ "actions": {
+ "click": "DOWNLOAD_NODES"
+ },
+ "rules": {
+ "visible": "app.toolbar.canDownload"
+ }
+ },
+ {
+ "id": "app.toolbar.editFolder",
+ "order": 300,
+ "title": "APP.ACTIONS.EDIT",
+ "icon": "create",
+ "actions": {
+ "click": "EDIT_FOLDER"
+ },
+ "rules": {
+ "visible": "app.toolbar.canEditFolder"
+ }
+ },
+ {
+ "id": "app.toolbar.purgeDeletedNodes",
+ "order": 400,
+ "title": "APP.ACTIONS.DELETE_PERMANENT",
+ "icon": "delete_forever",
+ "actions": {
+ "click": "PURGE_DELETED_NODES"
+ },
+ "rules": {
+ "visible": "app.trashcan.hasSelection"
+ }
+ },
+ {
+ "id": "app.toolbar.restoreDeletedNodes",
+ "order": 500,
+ "title": "APP.ACTIONS.RESTORE",
+ "icon": "restore",
+ "actions": {
+ "click": "RESTORE_DELETED_NODES"
+ },
+ "rules": {
+ "visible": "app.trashcan.hasSelection"
+ }
+ },
+ {
+ "id": "app.toolbar.createLibrary",
+ "order": 600,
+ "title": "Create Library",
+ "icon": "create_new_folder",
+ "actions": {
+ "click": "CREATE_LIBRARY"
+ },
+ "rules": {
+ "visible": "app.navigation.isLibraries"
+ }
+ },
+ {
+ "id": "app.toolbar.info",
+ "type": "custom",
+ "order": 700,
+ "component": "app.toolbar.toggleInfoDrawer",
+ "rules": {
+ "visible": "app.toolbar.info"
+ }
+ },
+ {
+ "id": "app.toolbar.more",
+ "type": "menu",
+ "order": 10000,
+ "icon": "more_vert",
+ "title": "APP.ACTIONS.MORE",
+ "children": [
+ {
+ "id": "app.toolbar.favorite",
+ "comment": "workaround for Recent Files and Search API issue",
+ "type": "custom",
+ "order": 100,
+ "component": "app.toolbar.toggleFavorite",
+ "rules": {
+ "visible": "app.toolbar.favorite.canToggle"
+ }
+ },
+ {
+ "id": "app.toolbar.favorite.add",
+ "order": 200,
+ "title": "APP.ACTIONS.FAVORITE",
+ "icon": "star_border",
+ "actions": {
+ "click": "ADD_FAVORITE"
+ },
+ "rules": {
+ "visible": "app.toolbar.favorite.canAdd"
+ }
+ },
+ {
+ "id": "app.toolbar.favorite.remove",
+ "order": 300,
+ "title": "APP.ACTIONS.FAVORITE",
+ "icon": "star",
+ "actions": {
+ "click": "REMOVE_FAVORITE"
+ },
+ "rules": {
+ "visible": "app.toolbar.favorite.canRemove"
+ }
+ },
+ {
+ "id": "app.toolbar.copy",
+ "order": 400,
+ "title": "APP.ACTIONS.COPY",
+ "icon": "content_copy",
+ "actions": {
+ "click": "COPY_NODES"
+ },
+ "rules": {
+ "visible": "app.toolbar.canCopyNode"
+ }
+ },
+ {
+ "id": "app.toolbar.move",
+ "order": 500,
+ "title": "APP.ACTIONS.MOVE",
+ "icon": "library_books",
+ "actions": {
+ "click": "MOVE_NODES"
+ },
+ "rules": {
+ "visible": "app.selection.canDelete"
+ }
+ },
+ {
+ "id": "app.toolbar.share",
+ "order": 600,
+ "title": "APP.ACTIONS.SHARE",
+ "icon": "share",
+ "actions": {
+ "click": "SHARE_NODE"
+ },
+ "rules": {
+ "visible": "app.selection.file.canShare"
+ }
+ },
+ {
+ "id": "app.toolbar.unshare",
+ "order": 700,
+ "title": "APP.ACTIONS.UNSHARE",
+ "icon": "stop_screen_share",
+ "actions": {
+ "click": "UNSHARE_NODES"
+ },
+ "rules": {
+ "visible": "app.selection.canUnshare"
+ }
+ },
+ {
+ "id": "app.toolbar.delete",
+ "order": 800,
+ "title": "APP.ACTIONS.DELETE",
+ "icon": "delete",
+ "actions": {
+ "click": "DELETE_NODES"
+ },
+ "rules": {
+ "visible": "app.selection.canDelete"
+ }
+ },
+ {
+ "id": "app.toolbar.deleteLibrary",
+ "order": 900,
+ "title": "APP.ACTIONS.DELETE",
+ "icon": "delete",
+ "actions": {
+ "click": "DELETE_LIBRARY"
+ },
+ "rules": {
+ "visible": "app.selection.library"
+ }
+ },
+ {
+ "id": "app.toolbar.versions",
+ "order": 1000,
+ "title": "APP.ACTIONS.VERSIONS",
+ "icon": "history",
+ "actions": {
+ "click": "MANAGE_VERSIONS"
+ },
+ "rules": {
+ "visible": "app.toolbar.versions"
+ }
+ },
+ {
+ "id": "app.toolbar.permissions",
+ "order": 1100,
+ "title": "APP.ACTIONS.PERMISSIONS",
+ "icon": "settings_input_component",
+ "actions": {
+ "click": "MANAGE_PERMISSIONS"
+ },
+ "rules": {
+ "visible": "app.toolbar.permissions"
+ }
+ }
+ ]
+ }
+ ],
+ "contextMenu": [
+ {
+ "id": "app.context.menu.download",
+ "order": 100,
+ "title": "APP.ACTIONS.DOWNLOAD",
+ "icon": "get_app",
+ "actions": {
+ "click": "DOWNLOAD_NODES"
+ },
+ "rules": {
+ "visible": "app.toolbar.canDownload"
+ }
+ },
+ {
+ "id": "app.context.menu.preview",
+ "order": 200,
+ "title": "APP.ACTIONS.VIEW",
+ "icon": "open_in_browser",
+ "actions": {
+ "click": "VIEW_FILE"
+ },
+ "rules": {
+ "visible": "app.toolbar.canViewFile"
+ }
+ },
+ {
+ "id": "app.context.menu.editFolder",
+ "order": 300,
+ "title": "APP.ACTIONS.EDIT",
+ "icon": "create",
+ "actions": {
+ "click": "EDIT_FOLDER"
+ },
+ "rules": {
+ "visible": "app.toolbar.canEditFolder"
+ }
+ },
+ {
+ "id": "app.context.menu.share",
+ "title": "APP.ACTIONS.SHARE",
+ "order": 400,
+ "icon": "share",
+ "actions": {
+ "click": "SHARE_NODE"
+ },
+ "rules": {
+ "visible": "app.selection.file.canShare"
+ }
+ },
+ {
+ "id": "app.context.menu.favorite.add",
+ "title": "APP.ACTIONS.FAVORITE",
+ "order": 500,
+ "icon": "star_border",
+ "actions": {
+ "click": "ADD_FAVORITE"
+ },
+ "rules": {
+ "visible": "app.toolbar.favorite.canAdd"
+ }
+ },
+ {
+ "id": "app.context.menu.favorite.remove",
+ "title": "APP.ACTIONS.FAVORITE",
+ "order": 600,
+ "icon": "star",
+ "actions": {
+ "click": "REMOVE_FAVORITE"
+ },
+ "rules": {
+ "visible": "app.toolbar.favorite.canRemove"
+ }
+ },
+ {
+ "id": "app.context.menu.favorite",
+ "comment": "workaround for Recent Files and Search API issue",
+ "type": "custom",
+ "order": 501,
+ "component": "app.toolbar.toggleFavorite",
+ "rules": {
+ "visible": "app.toolbar.favorite.canToggle"
+ }
+ },
+ {
+ "id": "app.context.menu.copy",
+ "title": "APP.ACTIONS.COPY",
+ "order": 700,
+ "icon": "content_copy",
+ "actions": {
+ "click": "COPY_NODES"
+ },
+ "rules": {
+ "visible": "app.toolbar.canCopyNode"
+ }
+ },
+ {
+ "id": "app.context.menu.move",
+ "title": "APP.ACTIONS.MOVE",
+ "order": 800,
+ "icon": "library_books",
+ "actions": {
+ "click": "MOVE_NODES"
+ },
+ "rules": {
+ "visible": "app.selection.canDelete"
+ }
+ },
+ {
+ "id": "app.context.menu.delete",
+ "title": "APP.ACTIONS.DELETE",
+ "order": 900,
+ "icon": "delete",
+ "actions": {
+ "click": "DELETE_NODES"
+ },
+ "rules": {
+ "visible": "app.selection.canDelete"
+ }
+ },
+ {
+ "id": "app.context.menu.versions",
+ "title": "APP.ACTIONS.VERSIONS",
+ "order": 1000,
+ "icon": "history",
+ "actions": {
+ "click": "MANAGE_VERSIONS"
+ },
+ "rules": {
+ "visible": "app.toolbar.versions"
+ }
+ },
+ {
+ "id": "app.context.menu.permissions",
+ "title": "APP.ACTIONS.PERMISSIONS",
+ "icon": "settings_input_component",
+ "order": 1100,
+ "actions": {
+ "click": "MANAGE_PERMISSIONS"
+ },
+ "rules": {
+ "visible": "app.toolbar.permissions"
+ }
+ },
+ {
+ "id": "app.context.menu.purgeDeletedNodes",
+ "order": 1200,
+ "title": "APP.ACTIONS.DELETE_PERMANENT",
+ "icon": "delete_forever",
+ "actions": {
+ "click": "PURGE_DELETED_NODES"
+ },
+ "rules": {
+ "visible": "app.trashcan.hasSelection"
+ }
+ },
+ {
+ "id": "app.context.menu.restoreDeletedNodes",
+ "order": 1300,
+ "title": "APP.ACTIONS.RESTORE",
+ "icon": "restore",
+ "actions": {
+ "click": "RESTORE_DELETED_NODES"
+ },
+ "rules": {
+ "visible": "app.trashcan.hasSelection"
+ }
+ }
+ ],
+ "viewer": {
+ "toolbar": [
+ {
+ "id": "app.viewer.favorite.add",
+ "order": 100,
+ "title": "APP.ACTIONS.FAVORITE",
+ "icon": "star_border",
+ "actions": {
+ "click": "ADD_FAVORITE"
+ },
+ "rules": {
+ "visible": "app.toolbar.favorite.canAdd"
+ }
+ },
+ {
+ "id": "app.viewer.favorite.remove",
+ "order": 200,
+ "title": "APP.ACTIONS.FAVORITE",
+ "icon": "star",
+ "actions": {
+ "click": "REMOVE_FAVORITE"
+ },
+ "rules": {
+ "visible": "app.toolbar.favorite.canRemove"
+ }
+ },
+ {
+ "id": "app.viewer.share",
+ "order": 300,
+ "title": "APP.ACTIONS.SHARE",
+ "icon": "share",
+ "actions": {
+ "click": "SHARE_NODE"
+ },
+ "rules": {
+ "visible": "app.selection.file.canShare"
+ }
+ },
+ {
+ "id": "app.viewer.copy",
+ "order": 400,
+ "title": "APP.ACTIONS.COPY",
+ "icon": "content_copy",
+ "actions": {
+ "click": "COPY_NODES"
+ },
+ "rules": {
+ "visible": "app.toolbar.canCopyNode"
+ }
+ },
+ {
+ "id": "app.viewer.move",
+ "order": 500,
+ "title": "APP.ACTIONS.MOVE",
+ "icon": "library_books",
+ "actions": {
+ "click": "MOVE_NODES"
+ },
+ "rules": {
+ "visible": "app.selection.canDelete"
+ }
+ },
+ {
+ "id": "app.viewer.delete",
+ "order": 600,
+ "title": "APP.ACTIONS.DELETE",
+ "icon": "delete",
+ "actions": {
+ "click": "DELETE_NODES"
+ },
+ "rules": {
+ "visible": "app.selection.canDelete"
+ }
+ },
+ {
+ "id": "app.viewer.versions",
+ "order": 700,
+ "title": "APP.ACTIONS.VERSIONS",
+ "icon": "history",
+ "actions": {
+ "click": "MANAGE_VERSIONS"
+ },
+ "rules": {
+ "visible": "app.toolbar.versions"
+ }
+ },
+ {
+ "id": "app.viewer.permissions",
+ "order": 800,
+ "title": "APP.ACTIONS.PERMISSIONS",
+ "icon": "settings_input_component",
+ "actions": {
+ "click": "MANAGE_PERMISSIONS"
+ },
+ "rules": {
+ "visible": "app.toolbar.permissions"
+ }
+ }
+ ],
+ "content": [
+ {
+ "id": "app.viewer.pdf",
+ "disabled": true,
+ "fileExtension": "pdf",
+ "component": "app.components.tabs.metadata"
+ },
+ {
+ "id": "app.viewer.docx",
+ "disabled": true,
+ "fileExtension": "docx",
+ "component": "app.components.tabs.comments"
+ }
+ ]
+ },
+ "sidebar": [
+ {
+ "id": "app.sidebar.properties",
+ "order": 100,
+ "title": "APP.INFO_DRAWER.TABS.PROPERTIES",
+ "component": "app.components.tabs.metadata"
+ },
+ {
+ "id": "app.sidebar.comments",
+ "order": 200,
+ "title": "APP.INFO_DRAWER.TABS.COMMENTS",
+ "component": "app.components.tabs.comments"
+ },
+ {
+ "id": "app.sidebar.versions",
+ "order": 300,
+ "disabled": true,
+ "title": "APP.INFO_DRAWER.TABS.VERSIONS",
+ "component": "app.components.tabs.versions"
+ }
+ ]
+ }
+}
diff --git a/e2e/resources/extensibility-configs/info-drawer-ext.json b/e2e/resources/extensibility-configs/info-drawer-ext.json
new file mode 100644
index 000000000..735c7ba12
--- /dev/null
+++ b/e2e/resources/extensibility-configs/info-drawer-ext.json
@@ -0,0 +1,773 @@
+{
+ "$schema": "../../extension.schema.json",
+ "$name": "app",
+ "$version": "1.0.0",
+ "$references": [
+ "plugin1.json",
+ "plugin2.json",
+ "dev.tools.json"
+ ],
+
+ "rules": [
+ {
+ "id": "app.toolbar.favorite.canToggle",
+ "comment": "workaround for recent files and search api issue",
+ "type": "core.every",
+ "parameters": [
+ {
+ "type": "rule",
+ "value": "core.some",
+ "parameters": [
+ { "type": "rule", "value": "app.selection.canAddFavorite" },
+ { "type": "rule", "value": "app.selection.canRemoveFavorite" }
+ ]
+ },
+ {
+ "type": "rule",
+ "value": "core.some",
+ "parameters": [
+ { "type": "rule", "value": "app.navigation.isRecentFiles" },
+ { "type": "rule", "value": "app.navigation.isSharedFiles" },
+ { "type": "rule", "value": "app.navigation.isSearchResults" }
+ ]
+ }
+ ]
+ },
+ {
+ "id": "app.toolbar.favorite.canAdd",
+ "type": "core.every",
+ "parameters": [
+ { "type": "rule", "value": "app.selection.canAddFavorite" },
+ { "type": "rule", "value": "app.navigation.isNotRecentFiles" },
+ { "type": "rule", "value": "app.navigation.isNotSharedFiles" },
+ { "type": "rule", "value": "app.navigation.isNotSearchResults" }
+ ]
+ },
+ {
+ "id": "app.toolbar.favorite.canRemove",
+ "type": "core.every",
+ "parameters": [
+ { "type": "rule", "value": "app.selection.canRemoveFavorite" },
+ { "type": "rule", "value": "app.navigation.isNotRecentFiles" },
+ { "type": "rule", "value": "app.navigation.isNotSharedFiles" },
+ { "type": "rule", "value": "app.navigation.isNotSearchResults" }
+ ]
+ },
+ {
+ "id": "app.toolbar.info",
+ "type": "core.every",
+ "parameters": [
+ { "type": "rule", "value": "app.selection.notEmpty" },
+ { "type": "rule", "value": "app.navigation.isNotLibraries" },
+ { "type": "rule", "value": "app.navigation.isNotTrashcan" }
+ ]
+ },
+ {
+ "id": "app.toolbar.canCopyNode",
+ "type": "core.every",
+ "parameters": [
+ { "type": "rule", "value": "app.selection.notEmpty" },
+ { "type": "rule", "value": "app.navigation.isNotTrashcan" },
+ { "type": "rule", "value": "app.navigation.isNotLibraries" }
+ ]
+ },
+ {
+ "id": "app.toolbar.permissions",
+ "type": "core.every",
+ "parameters": [
+ { "type": "rule", "value": "app.selection.file" },
+ { "type": "rule", "value": "app.selection.first.canUpdate" },
+ { "type": "rule", "value": "app.navigation.isNotTrashcan" }
+ ]
+ },
+ {
+ "id": "app.toolbar.versions",
+ "type": "core.every",
+ "parameters": [
+ { "type": "rule", "value": "app.selection.file" },
+ { "type": "rule", "value": "app.navigation.isNotTrashcan" }
+ ]
+ },
+ {
+ "id": "app.trashcan.hasSelection",
+ "type": "core.every",
+ "parameters": [
+ { "type": "rule", "value": "app.selection.notEmpty" },
+ { "type": "rule", "value": "app.navigation.isTrashcan" }
+ ]
+ },
+ {
+ "id": "app.toolbar.canEditFolder",
+ "type": "core.every",
+ "parameters": [
+ { "type": "rule", "value": "app.selection.folder" },
+ { "type": "rule", "value": "app.selection.folder.canUpdate" },
+ { "type": "rule", "value": "app.navigation.isNotTrashcan" }
+ ]
+ },
+ {
+ "id": "app.toolbar.canViewFile",
+ "type": "core.every",
+ "parameters": [
+ {
+ "type": "rule",
+ "value": "app.selection.file"
+ },
+ {
+ "type": "rule",
+ "value": "core.not",
+ "parameters": [
+ { "type": "rule", "value": "app.navigation.isTrashcan" }
+ ]
+ }
+ ]
+ },
+ {
+ "id": "app.toolbar.canDownload",
+ "type": "core.every",
+ "parameters": [
+ { "type": "rule", "value": "app.selection.canDownload" },
+ { "type": "rule", "value": "app.navigation.isNotTrashcan" }
+ ]
+ }
+ ],
+
+ "features": {
+ "create": [
+ {
+ "id": "app.create.folder",
+ "order": 100,
+ "icon": "create_new_folder",
+ "title": "APP.NEW_MENU.MENU_ITEMS.CREATE_FOLDER",
+ "description": "APP.NEW_MENU.TOOLTIPS.CREATE_FOLDER",
+ "description-disabled": "APP.NEW_MENU.TOOLTIPS.CREATE_FOLDER_NOT_ALLOWED",
+ "actions": {
+ "click": "CREATE_FOLDER"
+ },
+ "rules": {
+ "enabled": "app.navigation.folder.canCreate"
+ }
+ },
+ {
+ "id": "app.create.uploadFile",
+ "order": 200,
+ "icon": "file_upload",
+ "title": "APP.NEW_MENU.MENU_ITEMS.UPLOAD_FILE",
+ "description": "APP.NEW_MENU.TOOLTIPS.UPLOAD_FILES",
+ "description-disabled": "APP.NEW_MENU.TOOLTIPS.UPLOAD_FILES_NOT_ALLOWED",
+ "actions": {
+ "click": "UPLOAD_FILES"
+ },
+ "rules": {
+ "enabled": "app.navigation.folder.canUpload"
+ }
+ },
+ {
+ "id": "app.create.uploadFolder",
+ "order": 300,
+ "icon": "file_upload",
+ "title": "APP.NEW_MENU.MENU_ITEMS.UPLOAD_FOLDER",
+ "description": "APP.NEW_MENU.TOOLTIPS.UPLOAD_FOLDERS",
+ "description-disabled": "APP.NEW_MENU.TOOLTIPS.UPLOAD_FOLDERS_NOT_ALLOWED",
+ "actions": {
+ "click": "UPLOAD_FOLDER"
+ },
+ "rules": {
+ "enabled": "app.navigation.folder.canUpload"
+ }
+ }
+ ],
+ "navbar": [
+ {
+ "id": "app.navbar.primary",
+ "items": [
+ {
+ "id": "app.navbar.personalFiles",
+ "order": 100,
+ "icon": "folder",
+ "title": "APP.BROWSE.PERSONAL.SIDENAV_LINK.LABEL",
+ "description": "APP.BROWSE.PERSONAL.SIDENAV_LINK.TOOLTIP",
+ "route": "personal-files"
+ },
+ {
+ "id": "app.navbar.libraries",
+ "order": 200,
+ "icon": "group_work",
+ "title": "APP.BROWSE.LIBRARIES.SIDENAV_LINK.LABEL",
+ "description": "APP.BROWSE.LIBRARIES.SIDENAV_LINK.TOOLTIP",
+ "route": "libraries"
+ }
+ ]
+ },
+ {
+ "id": "app.navbar.secondary",
+ "items": [
+ {
+ "id": "app.navbar.shared",
+ "order": 100,
+ "icon": "people",
+ "title": "APP.BROWSE.SHARED.SIDENAV_LINK.LABEL",
+ "description": "APP.BROWSE.SHARED.SIDENAV_LINK.TOOLTIP",
+ "route": "shared"
+ },
+ {
+ "id": "app.navbar.recentFiles",
+ "order": 200,
+ "icon": "schedule",
+ "title": "APP.BROWSE.RECENT.SIDENAV_LINK.LABEL",
+ "description": "APP.BROWSE.RECENT.SIDENAV_LINK.TOOLTIP",
+ "route": "recent-files"
+ },
+ {
+ "id": "app.navbar.favorites",
+ "order": 300,
+ "icon": "star",
+ "title": "APP.BROWSE.FAVORITES.SIDENAV_LINK.LABEL",
+ "description": "APP.BROWSE.FAVORITES.SIDENAV_LINK.TOOLTIP",
+ "route": "favorites"
+ },
+ {
+ "id": "app.navbar.trashcan",
+ "order": 400,
+ "icon": "delete",
+ "title": "APP.BROWSE.TRASHCAN.SIDENAV_LINK.LABEL",
+ "description": "APP.BROWSE.TRASHCAN.SIDENAV_LINK.TOOLTIP",
+ "route": "trashcan"
+ }
+ ]
+ }
+ ],
+ "toolbar": [
+ {
+ "id": "app.toolbar.preview",
+ "order": 100,
+ "title": "APP.ACTIONS.VIEW",
+ "icon": "open_in_browser",
+ "actions": {
+ "click": "VIEW_FILE"
+ },
+ "rules": {
+ "visible": "app.toolbar.canViewFile"
+ }
+ },
+ {
+ "id": "app.toolbar.download",
+ "order": 200,
+ "title": "APP.ACTIONS.DOWNLOAD",
+ "icon": "get_app",
+ "actions": {
+ "click": "DOWNLOAD_NODES"
+ },
+ "rules": {
+ "visible": "app.toolbar.canDownload"
+ }
+ },
+ {
+ "id": "app.toolbar.editFolder",
+ "order": 300,
+ "title": "APP.ACTIONS.EDIT",
+ "icon": "create",
+ "actions": {
+ "click": "EDIT_FOLDER"
+ },
+ "rules": {
+ "visible": "app.toolbar.canEditFolder"
+ }
+ },
+ {
+ "id": "app.toolbar.purgeDeletedNodes",
+ "order": 400,
+ "title": "APP.ACTIONS.DELETE_PERMANENT",
+ "icon": "delete_forever",
+ "actions": {
+ "click": "PURGE_DELETED_NODES"
+ },
+ "rules": {
+ "visible": "app.trashcan.hasSelection"
+ }
+ },
+ {
+ "id": "app.toolbar.restoreDeletedNodes",
+ "order": 500,
+ "title": "APP.ACTIONS.RESTORE",
+ "icon": "restore",
+ "actions": {
+ "click": "RESTORE_DELETED_NODES"
+ },
+ "rules": {
+ "visible": "app.trashcan.hasSelection"
+ }
+ },
+ {
+ "id": "app.toolbar.createLibrary",
+ "order": 600,
+ "title": "Create Library",
+ "icon": "create_new_folder",
+ "actions": {
+ "click": "CREATE_LIBRARY"
+ },
+ "rules": {
+ "visible": "app.navigation.isLibraries"
+ }
+ },
+ {
+ "id": "app.toolbar.info",
+ "type": "custom",
+ "order": 700,
+ "component": "app.toolbar.toggleInfoDrawer",
+ "rules": {
+ "visible": "app.toolbar.info"
+ }
+ },
+ {
+ "id": "app.toolbar.more",
+ "type": "menu",
+ "order": 10000,
+ "icon": "more_vert",
+ "title": "APP.ACTIONS.MORE",
+ "children": [
+ {
+ "id": "app.toolbar.favorite",
+ "comment": "workaround for Recent Files and Search API issue",
+ "type": "custom",
+ "order": 100,
+ "component": "app.toolbar.toggleFavorite",
+ "rules": {
+ "visible": "app.toolbar.favorite.canToggle"
+ }
+ },
+ {
+ "id": "app.toolbar.favorite.add",
+ "order": 200,
+ "title": "APP.ACTIONS.FAVORITE",
+ "icon": "star_border",
+ "actions": {
+ "click": "ADD_FAVORITE"
+ },
+ "rules": {
+ "visible": "app.toolbar.favorite.canAdd"
+ }
+ },
+ {
+ "id": "app.toolbar.favorite.remove",
+ "order": 300,
+ "title": "APP.ACTIONS.FAVORITE",
+ "icon": "star",
+ "actions": {
+ "click": "REMOVE_FAVORITE"
+ },
+ "rules": {
+ "visible": "app.toolbar.favorite.canRemove"
+ }
+ },
+ {
+ "id": "app.toolbar.copy",
+ "order": 400,
+ "title": "APP.ACTIONS.COPY",
+ "icon": "content_copy",
+ "actions": {
+ "click": "COPY_NODES"
+ },
+ "rules": {
+ "visible": "app.toolbar.canCopyNode"
+ }
+ },
+ {
+ "id": "app.toolbar.move",
+ "order": 500,
+ "title": "APP.ACTIONS.MOVE",
+ "icon": "library_books",
+ "actions": {
+ "click": "MOVE_NODES"
+ },
+ "rules": {
+ "visible": "app.selection.canDelete"
+ }
+ },
+ {
+ "id": "app.toolbar.share",
+ "order": 600,
+ "title": "APP.ACTIONS.SHARE",
+ "icon": "share",
+ "actions": {
+ "click": "SHARE_NODE"
+ },
+ "rules": {
+ "visible": "app.selection.file.canShare"
+ }
+ },
+ {
+ "id": "app.toolbar.unshare",
+ "order": 700,
+ "title": "APP.ACTIONS.UNSHARE",
+ "icon": "stop_screen_share",
+ "actions": {
+ "click": "UNSHARE_NODES"
+ },
+ "rules": {
+ "visible": "app.selection.canUnshare"
+ }
+ },
+ {
+ "id": "app.toolbar.delete",
+ "order": 800,
+ "title": "APP.ACTIONS.DELETE",
+ "icon": "delete",
+ "actions": {
+ "click": "DELETE_NODES"
+ },
+ "rules": {
+ "visible": "app.selection.canDelete"
+ }
+ },
+ {
+ "id": "app.toolbar.deleteLibrary",
+ "order": 900,
+ "title": "APP.ACTIONS.DELETE",
+ "icon": "delete",
+ "actions": {
+ "click": "DELETE_LIBRARY"
+ },
+ "rules": {
+ "visible": "app.selection.library"
+ }
+ },
+ {
+ "id": "app.toolbar.versions",
+ "order": 1000,
+ "title": "APP.ACTIONS.VERSIONS",
+ "icon": "history",
+ "actions": {
+ "click": "MANAGE_VERSIONS"
+ },
+ "rules": {
+ "visible": "app.toolbar.versions"
+ }
+ },
+ {
+ "id": "app.toolbar.permissions",
+ "order": 1100,
+ "title": "APP.ACTIONS.PERMISSIONS",
+ "icon": "settings_input_component",
+ "actions": {
+ "click": "MANAGE_PERMISSIONS"
+ },
+ "rules": {
+ "visible": "app.toolbar.permissions"
+ }
+ }
+ ]
+ }
+ ],
+ "contextMenu": [
+ {
+ "id": "app.context.menu.download",
+ "order": 100,
+ "title": "APP.ACTIONS.DOWNLOAD",
+ "icon": "get_app",
+ "actions": {
+ "click": "DOWNLOAD_NODES"
+ },
+ "rules": {
+ "visible": "app.toolbar.canDownload"
+ }
+ },
+ {
+ "id": "app.context.menu.preview",
+ "order": 200,
+ "title": "APP.ACTIONS.VIEW",
+ "icon": "open_in_browser",
+ "actions": {
+ "click": "VIEW_FILE"
+ },
+ "rules": {
+ "visible": "app.toolbar.canViewFile"
+ }
+ },
+ {
+ "id": "app.context.menu.editFolder",
+ "order": 300,
+ "title": "APP.ACTIONS.EDIT",
+ "icon": "create",
+ "actions": {
+ "click": "EDIT_FOLDER"
+ },
+ "rules": {
+ "visible": "app.toolbar.canEditFolder"
+ }
+ },
+ {
+ "id": "app.context.menu.share",
+ "title": "APP.ACTIONS.SHARE",
+ "order": 400,
+ "icon": "share",
+ "actions": {
+ "click": "SHARE_NODE"
+ },
+ "rules": {
+ "visible": "app.selection.file.canShare"
+ }
+ },
+ {
+ "id": "app.context.menu.favorite.add",
+ "title": "APP.ACTIONS.FAVORITE",
+ "order": 500,
+ "icon": "star_border",
+ "actions": {
+ "click": "ADD_FAVORITE"
+ },
+ "rules": {
+ "visible": "app.toolbar.favorite.canAdd"
+ }
+ },
+ {
+ "id": "app.context.menu.favorite.remove",
+ "title": "APP.ACTIONS.FAVORITE",
+ "order": 600,
+ "icon": "star",
+ "actions": {
+ "click": "REMOVE_FAVORITE"
+ },
+ "rules": {
+ "visible": "app.toolbar.favorite.canRemove"
+ }
+ },
+ {
+ "id": "app.context.menu.favorite",
+ "comment": "workaround for Recent Files and Search API issue",
+ "type": "custom",
+ "order": 501,
+ "component": "app.toolbar.toggleFavorite",
+ "rules": {
+ "visible": "app.toolbar.favorite.canToggle"
+ }
+ },
+ {
+ "id": "app.context.menu.copy",
+ "title": "APP.ACTIONS.COPY",
+ "order": 700,
+ "icon": "content_copy",
+ "actions": {
+ "click": "COPY_NODES"
+ },
+ "rules": {
+ "visible": "app.toolbar.canCopyNode"
+ }
+ },
+ {
+ "id": "app.context.menu.move",
+ "title": "APP.ACTIONS.MOVE",
+ "order": 800,
+ "icon": "library_books",
+ "actions": {
+ "click": "MOVE_NODES"
+ },
+ "rules": {
+ "visible": "app.selection.canDelete"
+ }
+ },
+ {
+ "id": "app.context.menu.delete",
+ "title": "APP.ACTIONS.DELETE",
+ "order": 900,
+ "icon": "delete",
+ "actions": {
+ "click": "DELETE_NODES"
+ },
+ "rules": {
+ "visible": "app.selection.canDelete"
+ }
+ },
+ {
+ "id": "app.context.menu.versions",
+ "title": "APP.ACTIONS.VERSIONS",
+ "order": 1000,
+ "icon": "history",
+ "actions": {
+ "click": "MANAGE_VERSIONS"
+ },
+ "rules": {
+ "visible": "app.toolbar.versions"
+ }
+ },
+ {
+ "id": "app.context.menu.permissions",
+ "title": "APP.ACTIONS.PERMISSIONS",
+ "icon": "settings_input_component",
+ "order": 1100,
+ "actions": {
+ "click": "MANAGE_PERMISSIONS"
+ },
+ "rules": {
+ "visible": "app.toolbar.permissions"
+ }
+ },
+ {
+ "id": "app.context.menu.purgeDeletedNodes",
+ "order": 1200,
+ "title": "APP.ACTIONS.DELETE_PERMANENT",
+ "icon": "delete_forever",
+ "actions": {
+ "click": "PURGE_DELETED_NODES"
+ },
+ "rules": {
+ "visible": "app.trashcan.hasSelection"
+ }
+ },
+ {
+ "id": "app.context.menu.restoreDeletedNodes",
+ "order": 1300,
+ "title": "APP.ACTIONS.RESTORE",
+ "icon": "restore",
+ "actions": {
+ "click": "RESTORE_DELETED_NODES"
+ },
+ "rules": {
+ "visible": "app.trashcan.hasSelection"
+ }
+ }
+ ],
+ "viewer": {
+ "toolbar": [
+ {
+ "id": "app.viewer.favorite.add",
+ "order": 100,
+ "title": "APP.ACTIONS.FAVORITE",
+ "icon": "star_border",
+ "actions": {
+ "click": "ADD_FAVORITE"
+ },
+ "rules": {
+ "visible": "app.toolbar.favorite.canAdd"
+ }
+ },
+ {
+ "id": "app.viewer.favorite.remove",
+ "order": 200,
+ "title": "APP.ACTIONS.FAVORITE",
+ "icon": "star",
+ "actions": {
+ "click": "REMOVE_FAVORITE"
+ },
+ "rules": {
+ "visible": "app.toolbar.favorite.canRemove"
+ }
+ },
+ {
+ "id": "app.viewer.share",
+ "order": 300,
+ "title": "APP.ACTIONS.SHARE",
+ "icon": "share",
+ "actions": {
+ "click": "SHARE_NODE"
+ },
+ "rules": {
+ "visible": "app.selection.file.canShare"
+ }
+ },
+ {
+ "id": "app.viewer.copy",
+ "order": 400,
+ "title": "APP.ACTIONS.COPY",
+ "icon": "content_copy",
+ "actions": {
+ "click": "COPY_NODES"
+ },
+ "rules": {
+ "visible": "app.toolbar.canCopyNode"
+ }
+ },
+ {
+ "id": "app.viewer.move",
+ "order": 500,
+ "title": "APP.ACTIONS.MOVE",
+ "icon": "library_books",
+ "actions": {
+ "click": "MOVE_NODES"
+ },
+ "rules": {
+ "visible": "app.selection.canDelete"
+ }
+ },
+ {
+ "id": "app.viewer.delete",
+ "order": 600,
+ "title": "APP.ACTIONS.DELETE",
+ "icon": "delete",
+ "actions": {
+ "click": "DELETE_NODES"
+ },
+ "rules": {
+ "visible": "app.selection.canDelete"
+ }
+ },
+ {
+ "id": "app.viewer.versions",
+ "order": 700,
+ "title": "APP.ACTIONS.VERSIONS",
+ "icon": "history",
+ "actions": {
+ "click": "MANAGE_VERSIONS"
+ },
+ "rules": {
+ "visible": "app.toolbar.versions"
+ }
+ },
+ {
+ "id": "app.viewer.permissions",
+ "order": 800,
+ "title": "APP.ACTIONS.PERMISSIONS",
+ "icon": "settings_input_component",
+ "actions": {
+ "click": "MANAGE_PERMISSIONS"
+ },
+ "rules": {
+ "visible": "app.toolbar.permissions"
+ }
+ }
+ ],
+ "content": [
+ {
+ "id": "app.viewer.pdf",
+ "disabled": true,
+ "fileExtension": "pdf",
+ "component": "app.components.tabs.metadata"
+ },
+ {
+ "id": "app.viewer.docx",
+ "disabled": true,
+ "fileExtension": "docx",
+ "component": "app.components.tabs.comments"
+ }
+ ]
+ },
+ "sidebar": [
+ {
+ "id": "app.sidebar.properties",
+ "order": 1,
+ "title": "MY PROPERTIES",
+ "component": "app.components.tabs.metadata"
+ },
+ {
+ "id": "app.sidebar.custom",
+ "order": 2,
+ "icon": "mood",
+ "title": "MY CUSTOM TITLE",
+ "component": "app.toolbar.toggleFavorite"
+ },
+ {
+ "id": "app.sidebar.no_title",
+ "order": 3,
+ "icon": "check_circle",
+ "component": "app.components.tabs.metadata"
+ },
+ {
+ "id": "app.sidebar.comments",
+ "order": 4,
+ "disabled": true,
+ "title": "APP.INFO_DRAWER.TABS.COMMENTS",
+ "component": "app.components.tabs.comments"
+ }
+ ]
+ }
+}
diff --git a/e2e/resources/extensibility-configs/info-drawer-no-tabs-ext.json b/e2e/resources/extensibility-configs/info-drawer-no-tabs-ext.json
new file mode 100644
index 000000000..aec64dafd
--- /dev/null
+++ b/e2e/resources/extensibility-configs/info-drawer-no-tabs-ext.json
@@ -0,0 +1,745 @@
+{
+ "$schema": "../../extension.schema.json",
+ "$name": "app",
+ "$version": "1.0.0",
+ "$references": [
+ "plugin1.json",
+ "plugin2.json",
+ "dev.tools.json"
+ ],
+
+ "rules": [
+ {
+ "id": "app.toolbar.favorite.canToggle",
+ "comment": "workaround for recent files and search api issue",
+ "type": "core.every",
+ "parameters": [
+ {
+ "type": "rule",
+ "value": "core.some",
+ "parameters": [
+ { "type": "rule", "value": "app.selection.canAddFavorite" },
+ { "type": "rule", "value": "app.selection.canRemoveFavorite" }
+ ]
+ },
+ {
+ "type": "rule",
+ "value": "core.some",
+ "parameters": [
+ { "type": "rule", "value": "app.navigation.isRecentFiles" },
+ { "type": "rule", "value": "app.navigation.isSharedFiles" },
+ { "type": "rule", "value": "app.navigation.isSearchResults" }
+ ]
+ }
+ ]
+ },
+ {
+ "id": "app.toolbar.favorite.canAdd",
+ "type": "core.every",
+ "parameters": [
+ { "type": "rule", "value": "app.selection.canAddFavorite" },
+ { "type": "rule", "value": "app.navigation.isNotRecentFiles" },
+ { "type": "rule", "value": "app.navigation.isNotSharedFiles" },
+ { "type": "rule", "value": "app.navigation.isNotSearchResults" }
+ ]
+ },
+ {
+ "id": "app.toolbar.favorite.canRemove",
+ "type": "core.every",
+ "parameters": [
+ { "type": "rule", "value": "app.selection.canRemoveFavorite" },
+ { "type": "rule", "value": "app.navigation.isNotRecentFiles" },
+ { "type": "rule", "value": "app.navigation.isNotSharedFiles" },
+ { "type": "rule", "value": "app.navigation.isNotSearchResults" }
+ ]
+ },
+ {
+ "id": "app.toolbar.info",
+ "type": "core.every",
+ "parameters": [
+ { "type": "rule", "value": "app.selection.notEmpty" },
+ { "type": "rule", "value": "app.navigation.isNotLibraries" },
+ { "type": "rule", "value": "app.navigation.isNotTrashcan" }
+ ]
+ },
+ {
+ "id": "app.toolbar.canCopyNode",
+ "type": "core.every",
+ "parameters": [
+ { "type": "rule", "value": "app.selection.notEmpty" },
+ { "type": "rule", "value": "app.navigation.isNotTrashcan" },
+ { "type": "rule", "value": "app.navigation.isNotLibraries" }
+ ]
+ },
+ {
+ "id": "app.toolbar.permissions",
+ "type": "core.every",
+ "parameters": [
+ { "type": "rule", "value": "app.selection.file" },
+ { "type": "rule", "value": "app.selection.first.canUpdate" },
+ { "type": "rule", "value": "app.navigation.isNotTrashcan" }
+ ]
+ },
+ {
+ "id": "app.toolbar.versions",
+ "type": "core.every",
+ "parameters": [
+ { "type": "rule", "value": "app.selection.file" },
+ { "type": "rule", "value": "app.navigation.isNotTrashcan" }
+ ]
+ },
+ {
+ "id": "app.trashcan.hasSelection",
+ "type": "core.every",
+ "parameters": [
+ { "type": "rule", "value": "app.selection.notEmpty" },
+ { "type": "rule", "value": "app.navigation.isTrashcan" }
+ ]
+ },
+ {
+ "id": "app.toolbar.canEditFolder",
+ "type": "core.every",
+ "parameters": [
+ { "type": "rule", "value": "app.selection.folder" },
+ { "type": "rule", "value": "app.selection.folder.canUpdate" },
+ { "type": "rule", "value": "app.navigation.isNotTrashcan" }
+ ]
+ },
+ {
+ "id": "app.toolbar.canViewFile",
+ "type": "core.every",
+ "parameters": [
+ {
+ "type": "rule",
+ "value": "app.selection.file"
+ },
+ {
+ "type": "rule",
+ "value": "core.not",
+ "parameters": [
+ { "type": "rule", "value": "app.navigation.isTrashcan" }
+ ]
+ }
+ ]
+ },
+ {
+ "id": "app.toolbar.canDownload",
+ "type": "core.every",
+ "parameters": [
+ { "type": "rule", "value": "app.selection.canDownload" },
+ { "type": "rule", "value": "app.navigation.isNotTrashcan" }
+ ]
+ }
+ ],
+
+ "features": {
+ "create": [
+ {
+ "id": "app.create.folder",
+ "order": 100,
+ "icon": "create_new_folder",
+ "title": "APP.NEW_MENU.MENU_ITEMS.CREATE_FOLDER",
+ "description": "APP.NEW_MENU.TOOLTIPS.CREATE_FOLDER",
+ "description-disabled": "APP.NEW_MENU.TOOLTIPS.CREATE_FOLDER_NOT_ALLOWED",
+ "actions": {
+ "click": "CREATE_FOLDER"
+ },
+ "rules": {
+ "enabled": "app.navigation.folder.canCreate"
+ }
+ },
+ {
+ "id": "app.create.uploadFile",
+ "order": 200,
+ "icon": "file_upload",
+ "title": "APP.NEW_MENU.MENU_ITEMS.UPLOAD_FILE",
+ "description": "APP.NEW_MENU.TOOLTIPS.UPLOAD_FILES",
+ "description-disabled": "APP.NEW_MENU.TOOLTIPS.UPLOAD_FILES_NOT_ALLOWED",
+ "actions": {
+ "click": "UPLOAD_FILES"
+ },
+ "rules": {
+ "enabled": "app.navigation.folder.canUpload"
+ }
+ },
+ {
+ "id": "app.create.uploadFolder",
+ "order": 300,
+ "icon": "file_upload",
+ "title": "APP.NEW_MENU.MENU_ITEMS.UPLOAD_FOLDER",
+ "description": "APP.NEW_MENU.TOOLTIPS.UPLOAD_FOLDERS",
+ "description-disabled": "APP.NEW_MENU.TOOLTIPS.UPLOAD_FOLDERS_NOT_ALLOWED",
+ "actions": {
+ "click": "UPLOAD_FOLDER"
+ },
+ "rules": {
+ "enabled": "app.navigation.folder.canUpload"
+ }
+ }
+ ],
+ "navbar": [
+ {
+ "id": "app.navbar.primary",
+ "items": [
+ {
+ "id": "app.navbar.personalFiles",
+ "order": 100,
+ "icon": "folder",
+ "title": "APP.BROWSE.PERSONAL.SIDENAV_LINK.LABEL",
+ "description": "APP.BROWSE.PERSONAL.SIDENAV_LINK.TOOLTIP",
+ "route": "personal-files"
+ },
+ {
+ "id": "app.navbar.libraries",
+ "order": 200,
+ "icon": "group_work",
+ "title": "APP.BROWSE.LIBRARIES.SIDENAV_LINK.LABEL",
+ "description": "APP.BROWSE.LIBRARIES.SIDENAV_LINK.TOOLTIP",
+ "route": "libraries"
+ }
+ ]
+ },
+ {
+ "id": "app.navbar.secondary",
+ "items": [
+ {
+ "id": "app.navbar.shared",
+ "order": 100,
+ "icon": "people",
+ "title": "APP.BROWSE.SHARED.SIDENAV_LINK.LABEL",
+ "description": "APP.BROWSE.SHARED.SIDENAV_LINK.TOOLTIP",
+ "route": "shared"
+ },
+ {
+ "id": "app.navbar.recentFiles",
+ "order": 200,
+ "icon": "schedule",
+ "title": "APP.BROWSE.RECENT.SIDENAV_LINK.LABEL",
+ "description": "APP.BROWSE.RECENT.SIDENAV_LINK.TOOLTIP",
+ "route": "recent-files"
+ },
+ {
+ "id": "app.navbar.favorites",
+ "order": 300,
+ "icon": "star",
+ "title": "APP.BROWSE.FAVORITES.SIDENAV_LINK.LABEL",
+ "description": "APP.BROWSE.FAVORITES.SIDENAV_LINK.TOOLTIP",
+ "route": "favorites"
+ },
+ {
+ "id": "app.navbar.trashcan",
+ "order": 400,
+ "icon": "delete",
+ "title": "APP.BROWSE.TRASHCAN.SIDENAV_LINK.LABEL",
+ "description": "APP.BROWSE.TRASHCAN.SIDENAV_LINK.TOOLTIP",
+ "route": "trashcan"
+ }
+ ]
+ }
+ ],
+ "toolbar": [
+ {
+ "id": "app.toolbar.preview",
+ "order": 100,
+ "title": "APP.ACTIONS.VIEW",
+ "icon": "open_in_browser",
+ "actions": {
+ "click": "VIEW_FILE"
+ },
+ "rules": {
+ "visible": "app.toolbar.canViewFile"
+ }
+ },
+ {
+ "id": "app.toolbar.download",
+ "order": 200,
+ "title": "APP.ACTIONS.DOWNLOAD",
+ "icon": "get_app",
+ "actions": {
+ "click": "DOWNLOAD_NODES"
+ },
+ "rules": {
+ "visible": "app.toolbar.canDownload"
+ }
+ },
+ {
+ "id": "app.toolbar.editFolder",
+ "order": 300,
+ "title": "APP.ACTIONS.EDIT",
+ "icon": "create",
+ "actions": {
+ "click": "EDIT_FOLDER"
+ },
+ "rules": {
+ "visible": "app.toolbar.canEditFolder"
+ }
+ },
+ {
+ "id": "app.toolbar.purgeDeletedNodes",
+ "order": 400,
+ "title": "APP.ACTIONS.DELETE_PERMANENT",
+ "icon": "delete_forever",
+ "actions": {
+ "click": "PURGE_DELETED_NODES"
+ },
+ "rules": {
+ "visible": "app.trashcan.hasSelection"
+ }
+ },
+ {
+ "id": "app.toolbar.restoreDeletedNodes",
+ "order": 500,
+ "title": "APP.ACTIONS.RESTORE",
+ "icon": "restore",
+ "actions": {
+ "click": "RESTORE_DELETED_NODES"
+ },
+ "rules": {
+ "visible": "app.trashcan.hasSelection"
+ }
+ },
+ {
+ "id": "app.toolbar.createLibrary",
+ "order": 600,
+ "title": "Create Library",
+ "icon": "create_new_folder",
+ "actions": {
+ "click": "CREATE_LIBRARY"
+ },
+ "rules": {
+ "visible": "app.navigation.isLibraries"
+ }
+ },
+ {
+ "id": "app.toolbar.info",
+ "type": "custom",
+ "order": 700,
+ "component": "app.toolbar.toggleInfoDrawer",
+ "rules": {
+ "visible": "app.toolbar.info"
+ }
+ },
+ {
+ "id": "app.toolbar.more",
+ "type": "menu",
+ "order": 10000,
+ "icon": "more_vert",
+ "title": "APP.ACTIONS.MORE",
+ "children": [
+ {
+ "id": "app.toolbar.favorite",
+ "comment": "workaround for Recent Files and Search API issue",
+ "type": "custom",
+ "order": 100,
+ "component": "app.toolbar.toggleFavorite",
+ "rules": {
+ "visible": "app.toolbar.favorite.canToggle"
+ }
+ },
+ {
+ "id": "app.toolbar.favorite.add",
+ "order": 200,
+ "title": "APP.ACTIONS.FAVORITE",
+ "icon": "star_border",
+ "actions": {
+ "click": "ADD_FAVORITE"
+ },
+ "rules": {
+ "visible": "app.toolbar.favorite.canAdd"
+ }
+ },
+ {
+ "id": "app.toolbar.favorite.remove",
+ "order": 300,
+ "title": "APP.ACTIONS.FAVORITE",
+ "icon": "star",
+ "actions": {
+ "click": "REMOVE_FAVORITE"
+ },
+ "rules": {
+ "visible": "app.toolbar.favorite.canRemove"
+ }
+ },
+ {
+ "id": "app.toolbar.copy",
+ "order": 400,
+ "title": "APP.ACTIONS.COPY",
+ "icon": "content_copy",
+ "actions": {
+ "click": "COPY_NODES"
+ },
+ "rules": {
+ "visible": "app.toolbar.canCopyNode"
+ }
+ },
+ {
+ "id": "app.toolbar.move",
+ "order": 500,
+ "title": "APP.ACTIONS.MOVE",
+ "icon": "library_books",
+ "actions": {
+ "click": "MOVE_NODES"
+ },
+ "rules": {
+ "visible": "app.selection.canDelete"
+ }
+ },
+ {
+ "id": "app.toolbar.share",
+ "order": 600,
+ "title": "APP.ACTIONS.SHARE",
+ "icon": "share",
+ "actions": {
+ "click": "SHARE_NODE"
+ },
+ "rules": {
+ "visible": "app.selection.file.canShare"
+ }
+ },
+ {
+ "id": "app.toolbar.unshare",
+ "order": 700,
+ "title": "APP.ACTIONS.UNSHARE",
+ "icon": "stop_screen_share",
+ "actions": {
+ "click": "UNSHARE_NODES"
+ },
+ "rules": {
+ "visible": "app.selection.canUnshare"
+ }
+ },
+ {
+ "id": "app.toolbar.delete",
+ "order": 800,
+ "title": "APP.ACTIONS.DELETE",
+ "icon": "delete",
+ "actions": {
+ "click": "DELETE_NODES"
+ },
+ "rules": {
+ "visible": "app.selection.canDelete"
+ }
+ },
+ {
+ "id": "app.toolbar.deleteLibrary",
+ "order": 900,
+ "title": "APP.ACTIONS.DELETE",
+ "icon": "delete",
+ "actions": {
+ "click": "DELETE_LIBRARY"
+ },
+ "rules": {
+ "visible": "app.selection.library"
+ }
+ },
+ {
+ "id": "app.toolbar.versions",
+ "order": 1000,
+ "title": "APP.ACTIONS.VERSIONS",
+ "icon": "history",
+ "actions": {
+ "click": "MANAGE_VERSIONS"
+ },
+ "rules": {
+ "visible": "app.toolbar.versions"
+ }
+ },
+ {
+ "id": "app.toolbar.permissions",
+ "order": 1100,
+ "title": "APP.ACTIONS.PERMISSIONS",
+ "icon": "settings_input_component",
+ "actions": {
+ "click": "MANAGE_PERMISSIONS"
+ },
+ "rules": {
+ "visible": "app.toolbar.permissions"
+ }
+ }
+ ]
+ }
+ ],
+ "contextMenu": [
+ {
+ "id": "app.context.menu.download",
+ "order": 100,
+ "title": "APP.ACTIONS.DOWNLOAD",
+ "icon": "get_app",
+ "actions": {
+ "click": "DOWNLOAD_NODES"
+ },
+ "rules": {
+ "visible": "app.toolbar.canDownload"
+ }
+ },
+ {
+ "id": "app.context.menu.preview",
+ "order": 200,
+ "title": "APP.ACTIONS.VIEW",
+ "icon": "open_in_browser",
+ "actions": {
+ "click": "VIEW_FILE"
+ },
+ "rules": {
+ "visible": "app.toolbar.canViewFile"
+ }
+ },
+ {
+ "id": "app.context.menu.editFolder",
+ "order": 300,
+ "title": "APP.ACTIONS.EDIT",
+ "icon": "create",
+ "actions": {
+ "click": "EDIT_FOLDER"
+ },
+ "rules": {
+ "visible": "app.toolbar.canEditFolder"
+ }
+ },
+ {
+ "id": "app.context.menu.share",
+ "title": "APP.ACTIONS.SHARE",
+ "order": 400,
+ "icon": "share",
+ "actions": {
+ "click": "SHARE_NODE"
+ },
+ "rules": {
+ "visible": "app.selection.file.canShare"
+ }
+ },
+ {
+ "id": "app.context.menu.favorite.add",
+ "title": "APP.ACTIONS.FAVORITE",
+ "order": 500,
+ "icon": "star_border",
+ "actions": {
+ "click": "ADD_FAVORITE"
+ },
+ "rules": {
+ "visible": "app.toolbar.favorite.canAdd"
+ }
+ },
+ {
+ "id": "app.context.menu.favorite.remove",
+ "title": "APP.ACTIONS.FAVORITE",
+ "order": 600,
+ "icon": "star",
+ "actions": {
+ "click": "REMOVE_FAVORITE"
+ },
+ "rules": {
+ "visible": "app.toolbar.favorite.canRemove"
+ }
+ },
+ {
+ "id": "app.context.menu.favorite",
+ "comment": "workaround for Recent Files and Search API issue",
+ "type": "custom",
+ "order": 501,
+ "component": "app.toolbar.toggleFavorite",
+ "rules": {
+ "visible": "app.toolbar.favorite.canToggle"
+ }
+ },
+ {
+ "id": "app.context.menu.copy",
+ "title": "APP.ACTIONS.COPY",
+ "order": 700,
+ "icon": "content_copy",
+ "actions": {
+ "click": "COPY_NODES"
+ },
+ "rules": {
+ "visible": "app.toolbar.canCopyNode"
+ }
+ },
+ {
+ "id": "app.context.menu.move",
+ "title": "APP.ACTIONS.MOVE",
+ "order": 800,
+ "icon": "library_books",
+ "actions": {
+ "click": "MOVE_NODES"
+ },
+ "rules": {
+ "visible": "app.selection.canDelete"
+ }
+ },
+ {
+ "id": "app.context.menu.delete",
+ "title": "APP.ACTIONS.DELETE",
+ "order": 900,
+ "icon": "delete",
+ "actions": {
+ "click": "DELETE_NODES"
+ },
+ "rules": {
+ "visible": "app.selection.canDelete"
+ }
+ },
+ {
+ "id": "app.context.menu.versions",
+ "title": "APP.ACTIONS.VERSIONS",
+ "order": 1000,
+ "icon": "history",
+ "actions": {
+ "click": "MANAGE_VERSIONS"
+ },
+ "rules": {
+ "visible": "app.toolbar.versions"
+ }
+ },
+ {
+ "id": "app.context.menu.permissions",
+ "title": "APP.ACTIONS.PERMISSIONS",
+ "icon": "settings_input_component",
+ "order": 1100,
+ "actions": {
+ "click": "MANAGE_PERMISSIONS"
+ },
+ "rules": {
+ "visible": "app.toolbar.permissions"
+ }
+ },
+ {
+ "id": "app.context.menu.purgeDeletedNodes",
+ "order": 1200,
+ "title": "APP.ACTIONS.DELETE_PERMANENT",
+ "icon": "delete_forever",
+ "actions": {
+ "click": "PURGE_DELETED_NODES"
+ },
+ "rules": {
+ "visible": "app.trashcan.hasSelection"
+ }
+ },
+ {
+ "id": "app.context.menu.restoreDeletedNodes",
+ "order": 1300,
+ "title": "APP.ACTIONS.RESTORE",
+ "icon": "restore",
+ "actions": {
+ "click": "RESTORE_DELETED_NODES"
+ },
+ "rules": {
+ "visible": "app.trashcan.hasSelection"
+ }
+ }
+ ],
+ "viewer": {
+ "toolbar": [
+ {
+ "id": "app.viewer.favorite.add",
+ "order": 100,
+ "title": "APP.ACTIONS.FAVORITE",
+ "icon": "star_border",
+ "actions": {
+ "click": "ADD_FAVORITE"
+ },
+ "rules": {
+ "visible": "app.toolbar.favorite.canAdd"
+ }
+ },
+ {
+ "id": "app.viewer.favorite.remove",
+ "order": 200,
+ "title": "APP.ACTIONS.FAVORITE",
+ "icon": "star",
+ "actions": {
+ "click": "REMOVE_FAVORITE"
+ },
+ "rules": {
+ "visible": "app.toolbar.favorite.canRemove"
+ }
+ },
+ {
+ "id": "app.viewer.share",
+ "order": 300,
+ "title": "APP.ACTIONS.SHARE",
+ "icon": "share",
+ "actions": {
+ "click": "SHARE_NODE"
+ },
+ "rules": {
+ "visible": "app.selection.file.canShare"
+ }
+ },
+ {
+ "id": "app.viewer.copy",
+ "order": 400,
+ "title": "APP.ACTIONS.COPY",
+ "icon": "content_copy",
+ "actions": {
+ "click": "COPY_NODES"
+ },
+ "rules": {
+ "visible": "app.toolbar.canCopyNode"
+ }
+ },
+ {
+ "id": "app.viewer.move",
+ "order": 500,
+ "title": "APP.ACTIONS.MOVE",
+ "icon": "library_books",
+ "actions": {
+ "click": "MOVE_NODES"
+ },
+ "rules": {
+ "visible": "app.selection.canDelete"
+ }
+ },
+ {
+ "id": "app.viewer.delete",
+ "order": 600,
+ "title": "APP.ACTIONS.DELETE",
+ "icon": "delete",
+ "actions": {
+ "click": "DELETE_NODES"
+ },
+ "rules": {
+ "visible": "app.selection.canDelete"
+ }
+ },
+ {
+ "id": "app.viewer.versions",
+ "order": 700,
+ "title": "APP.ACTIONS.VERSIONS",
+ "icon": "history",
+ "actions": {
+ "click": "MANAGE_VERSIONS"
+ },
+ "rules": {
+ "visible": "app.toolbar.versions"
+ }
+ },
+ {
+ "id": "app.viewer.permissions",
+ "order": 800,
+ "title": "APP.ACTIONS.PERMISSIONS",
+ "icon": "settings_input_component",
+ "actions": {
+ "click": "MANAGE_PERMISSIONS"
+ },
+ "rules": {
+ "visible": "app.toolbar.permissions"
+ }
+ }
+ ],
+ "content": [
+ {
+ "id": "app.viewer.pdf",
+ "disabled": true,
+ "fileExtension": "pdf",
+ "component": "app.components.tabs.metadata"
+ },
+ {
+ "id": "app.viewer.docx",
+ "disabled": true,
+ "fileExtension": "docx",
+ "component": "app.components.tabs.comments"
+ }
+ ]
+ }
+ }
+}
diff --git a/e2e/resources/file-docx.docx b/e2e/resources/test-files/file-docx.docx
similarity index 100%
rename from e2e/resources/file-docx.docx
rename to e2e/resources/test-files/file-docx.docx
diff --git a/e2e/resources/file-xlsx.xlsx b/e2e/resources/test-files/file-xlsx.xlsx
similarity index 100%
rename from e2e/resources/file-xlsx.xlsx
rename to e2e/resources/test-files/file-xlsx.xlsx
diff --git a/e2e/resources/file_unsupported.3DS b/e2e/resources/test-files/file_unsupported.3DS
similarity index 100%
rename from e2e/resources/file_unsupported.3DS
rename to e2e/resources/test-files/file_unsupported.3DS
diff --git a/e2e/suites/extensions/ext-info-drawer.test.ts b/e2e/suites/extensions/ext-info-drawer.test.ts
new file mode 100755
index 000000000..7b23d414f
--- /dev/null
+++ b/e2e/suites/extensions/ext-info-drawer.test.ts
@@ -0,0 +1,176 @@
+/*!
+ * @license
+ * Alfresco Example Content Application
+ *
+ * Copyright (C) 2005 - 2018 Alfresco Software Limited
+ *
+ * This file is part of the Alfresco Example Content Application.
+ * If the software was purchased under a paid Alfresco license, the terms of
+ * the paid license agreement will prevail. Otherwise, the software is
+ * provided under the following open source license terms:
+ *
+ * The Alfresco Example Content Application is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * The Alfresco Example Content Application is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with Alfresco. If not, see .
+ */
+
+import { LoginPage, LogoutPage, BrowsingPage } from '../../pages/pages';
+import { InfoDrawer } from './../../components/info-drawer/info-drawer';
+import { RepoClient } from '../../utilities/repo-client/repo-client';
+import { SIDEBAR_LABELS, EXTENSIBILITY_CONFIGS } from '../../configs';
+import { Utils } from '../../utilities/utils';
+
+xit('');
+
+describe('Extensions - Info Drawer', () => {
+ const username = `user-${Utils.random()}`;
+
+ const file = `file-${Utils.random()}.txt`;
+ let fileId;
+
+ const properties_tab = {
+ order: 1,
+ title: 'MY PROPERTIES'
+ };
+
+ const custom_tab = {
+ order: 2,
+ icon: 'mood',
+ title: 'MY CUSTOM TITLE',
+ component: 'app.toolbar.toggleFavorite'
+ };
+
+ const no_title_tab = {
+ order: 3,
+ icon: 'check_circle',
+ title: ''
+ };
+
+ const comments_tab = {
+ title: 'COMMENTS'
+ };
+
+ const apis = {
+ admin: new RepoClient(),
+ user: new RepoClient(username, username)
+ };
+
+ const infoDrawer = new InfoDrawer();
+
+ const loginPage = new LoginPage();
+ const logoutPage = new LogoutPage();
+ const page = new BrowsingPage();
+
+ beforeAll(async (done) => {
+ await apis.admin.people.createUser({ username });
+ fileId = (await apis.user.nodes.createFile(file)).entry.id;
+ done();
+ });
+
+ afterAll(async (done) => {
+ await apis.user.nodes.deleteNodeById(fileId);
+ done();
+ });
+
+ describe('', () => {
+ beforeAll(async (done) => {
+ await loginPage.load();
+ await Utils.setSessionStorageFromConfig('"aca.extension.config"', EXTENSIBILITY_CONFIGS.INFO_DRAWER);
+ await loginPage.loginWith(username);
+ done();
+ });
+
+ beforeEach(async (done) => {
+ await page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.PERSONAL_FILES);
+ await page.dataTable.waitForHeader();
+ await page.dataTable.clearSelection();
+ done();
+ });
+
+ afterAll(async (done) => {
+ await logoutPage.load();
+ done();
+ });
+
+ it('Add a new tab with icon and title - [C284646]', async () => {
+ await page.dataTable.selectItem(file);
+ await page.toolbar.actions.getButtonByTitleAttribute('View details').click();
+ await infoDrawer.waitForInfoDrawerToOpen();
+
+ expect(await infoDrawer.isTabPresent(custom_tab.title)).toBe(true, `${custom_tab.title} tab is not present`);
+ expect(await infoDrawer.getTabTitle(custom_tab.order)).toEqual(`${custom_tab.icon}\n${custom_tab.title}\n`);
+ });
+
+ it('Remove existing tab - [C284647]', async () => {
+ await page.dataTable.selectItem(file);
+ await page.toolbar.actions.getButtonByTitleAttribute('View details').click();
+ await infoDrawer.waitForInfoDrawerToOpen();
+
+ expect(await infoDrawer.isTabPresent(comments_tab.title)).toBe(false, `${comments_tab.title} tab should not be present!`);
+ });
+
+ it('Change tab title - [C284648]', async () => {
+ await page.dataTable.selectItem(file);
+ await page.toolbar.actions.getButtonByTitleAttribute('View details').click();
+ await infoDrawer.waitForInfoDrawerToOpen();
+
+ expect(await infoDrawer.isTabPresent(properties_tab.title)).toBe(true, `${properties_tab.title} tab is not present`);
+ expect(await infoDrawer.getTabTitle(properties_tab.order)).toEqual(properties_tab.title);
+ });
+
+ it('Tab with icon and no title - [C284649]', async () => {
+ await page.dataTable.selectItem(file);
+ await page.toolbar.actions.getButtonByTitleAttribute('View details').click();
+ await infoDrawer.waitForInfoDrawerToOpen();
+
+ expect(await infoDrawer.isTabPresent(no_title_tab.title)).toBe(true, `${no_title_tab.title} tab is not present`);
+ expect(await infoDrawer.getTabTitle(no_title_tab.order)).toEqual(`${no_title_tab.icon}\n`);
+ });
+
+ it('Insert new component in tab - [C284651]', async () => {
+ await page.dataTable.selectItem(file);
+ await page.toolbar.actions.getButtonByTitleAttribute('View details').click();
+ await infoDrawer.waitForInfoDrawerToOpen();
+
+ expect(await infoDrawer.isTabDisplayed(custom_tab.title)).toBe(true, `${custom_tab.title} tab is not displayed`);
+ await infoDrawer.clickTab(custom_tab.title);
+ expect(await infoDrawer.getComponentIdOfTab(custom_tab.title)).toEqual(custom_tab.component);
+ });
+ });
+
+ describe('', () => {
+ beforeAll(async (done) => {
+ await loginPage.load();
+ await Utils.setSessionStorageFromConfig('"aca.extension.config"', EXTENSIBILITY_CONFIGS.INFO_DRAWER_EMPTY);
+ await loginPage.loginWith(username);
+ await page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.PERSONAL_FILES);
+ await page.dataTable.waitForHeader();
+ done();
+ });
+
+ afterAll(async (done) => {
+ await logoutPage.load();
+ done();
+ });
+
+ it('Remove all tabs - [C284650]', async () => {
+ await page.dataTable.selectItem(file);
+ await page.toolbar.actions.getButtonByTitleAttribute('View details').click();
+ await infoDrawer.waitForInfoDrawerToOpen();
+
+ expect(await infoDrawer.isEmpty()).toBe(true, 'Info Drawer is not empty');
+ });
+ });
+
+ xit('');
+
+});
diff --git a/e2e/suites/list-views/tooltips.test.ts b/e2e/suites/list-views/tooltips.test.ts
index c114b7455..a97668cc2 100755
--- a/e2e/suites/list-views/tooltips.test.ts
+++ b/e2e/suites/list-views/tooltips.test.ts
@@ -185,35 +185,35 @@ describe('File / folder tooltips', () => {
.then(done);
});
- it('File with name, no title, no description - [C280143]', () => {
+ xit('File with name, no title, no description - [C280143]', () => {
expect(dataTable.getItemNameTooltip(file)).toEqual(`${file}`);
});
- it('File with name and description, no title - [C280144]', () => {
+ xit('File with name and description, no title - [C280144]', () => {
expect(dataTable.getItemNameTooltip(fileWithDesc)).toEqual(`${fileWithDesc}\n${fileDescription}`);
});
- it('File with name and title, no description - [C280145]', () => {
+ xit('File with name and title, no description - [C280145]', () => {
expect(dataTable.getItemNameTooltip(fileWithTitle)).toEqual(`${fileWithTitle}\n${fileTitle}`);
});
- it('File with name and title and description, all different - [C280146]', () => {
+ xit('File with name and title and description, all different - [C280146]', () => {
expect(dataTable.getItemNameTooltip(fileWithTitleAndDesc)).toEqual(`${fileTitle}\n${fileDescription}`);
});
- it('File with name and title and description, all equal - [C280147]', () => {
+ xit('File with name and title and description, all equal - [C280147]', () => {
expect(dataTable.getItemNameTooltip(fileNameEqTitleEqDesc)).toEqual(`${fileNameEqTitleEqDesc}`);
});
- it('File with name = title, different description - [C280148]', () => {
+ xit('File with name = title, different description - [C280148]', () => {
expect(dataTable.getItemNameTooltip(fileNameEqTitleDiffDesc)).toEqual(`${fileNameEqTitleDiffDesc}\n${fileDescription}`);
});
- it('File with name = description, different title - [C280149]', () => {
+ xit('File with name = description, different title - [C280149]', () => {
expect(dataTable.getItemNameTooltip(fileNameEqDescDiffTitle)).toEqual(`${fileTitle}\n${fileNameEqDescDiffTitle}`);
});
- it('File with title = description, different name - [C280150]', () => {
+ xit('File with title = description, different name - [C280150]', () => {
expect(dataTable.getItemNameTooltip(fileTitleEqDesc)).toEqual(`${fileTitle}`);
});
});
diff --git a/e2e/suites/navigation/breadcrumb.test.ts b/e2e/suites/navigation/breadcrumb.test.ts
index 8954245bd..dc73de2d7 100755
--- a/e2e/suites/navigation/breadcrumb.test.ts
+++ b/e2e/suites/navigation/breadcrumb.test.ts
@@ -233,7 +233,7 @@ describe('Breadcrumb', () => {
.then(done);
});
- it(`Breadcrumb on navigation to a user's home - [C260970]`, () => {
+ xit(`Breadcrumb on navigation to a user's home - [C260970]`, () => {
page.dataTable.doubleClickOnRowByName('User Homes')
.then(() => page.dataTable.doubleClickOnRowByName(user2))
.then(() => expect(breadcrumb.getAllItems()).toEqual([ 'Personal Files', 'User Homes', user2 ]))
diff --git a/e2e/utilities/repo-client/apis/upload/upload-api.ts b/e2e/utilities/repo-client/apis/upload/upload-api.ts
index 15b362bf6..bbbbd86f4 100644
--- a/e2e/utilities/repo-client/apis/upload/upload-api.ts
+++ b/e2e/utilities/repo-client/apis/upload/upload-api.ts
@@ -25,6 +25,7 @@
import { RepoApi } from '../repo-api';
import { E2E_ROOT_PATH } from '../../../../configs';
+
const fs = require('fs');
export class UploadApi extends RepoApi {
@@ -34,7 +35,7 @@ export class UploadApi extends RepoApi {
}
async uploadFile(fileName: string, parentFolderId: string = '-my-') {
- const file = fs.createReadStream(`${E2E_ROOT_PATH}/resources/${fileName}`);
+ const file = fs.createReadStream(`${E2E_ROOT_PATH}/resources/test-files/${fileName}`);
const opts = {
mane: file.name,
nodeType: 'cm:content'
diff --git a/e2e/utilities/utils.ts b/e2e/utilities/utils.ts
index 92da973bf..ac44a4cd5 100755
--- a/e2e/utilities/utils.ts
+++ b/e2e/utilities/utils.ts
@@ -24,7 +24,9 @@
*/
import { browser, promise, ElementFinder, ExpectedConditions as EC } from 'protractor';
-import { BROWSER_WAIT_TIMEOUT } from '../configs';
+import { BROWSER_WAIT_TIMEOUT, E2E_ROOT_PATH, EXTENSIBILITY_CONFIGS } from '../configs';
+
+const fs = require('fs');
export class Utils {
// generate a random value
@@ -42,6 +44,23 @@ export class Utils {
return browser.executeScript('window.sessionStorage.clear();');
}
+ static getSessionStorage() {
+ return browser.executeScript('return window.sessionStorage.getItem("aca.extension.config");');
+ }
+
+ static async setSessionStorageFromConfig(key: string, configFileName: string) {
+ const configFile = `${E2E_ROOT_PATH}/resources/extensibility-configs/${configFileName}`;
+ const fileContent = JSON.stringify(fs.readFileSync(configFile, { encoding: 'utf8' }));
+
+ return await browser.executeScript(`window.sessionStorage.setItem(${key}, ${fileContent});`);
+ }
+
+ static async resetExtensionConfig() {
+ const defConfig = `${E2E_ROOT_PATH}/resources/extensibility-configs/${EXTENSIBILITY_CONFIGS.DEFAULT_EXTENSIONS_CONFIG}`;
+
+ return await this.setSessionStorageFromConfig('"aca.extension.config"', defConfig);
+ }
+
static retryCall(fn: () => Promise , retry: number = 30, delay: number = 1000): Promise {
const pause = (duration) => new Promise(res => setTimeout(res, duration));
diff --git a/protractor.conf.js b/protractor.conf.js
index 17ed65744..d4a6a14d2 100755
--- a/protractor.conf.js
+++ b/protractor.conf.js
@@ -20,7 +20,9 @@ exports.config = {
'./e2e/suites/navigation/*.test.ts',
'./e2e/suites/pagination/*.test.ts',
'./e2e/suites/actions/*.test.ts',
- './e2e/suites/viewer/*.test.ts'
+ './e2e/suites/viewer/*.test.ts',
+
+ './e2e/suites/extensions/*.test.ts'
],
capabilities: {