shared library (#1080)

* shared project scaffold

* rules package

* move evaluators to shared lib

* add rxjs peer dependency

* use dedicated material namespaces

* create store package, move actions

* move selectors to shared library

* move generic effects to shared lib

* move routing extensions

* minor code reorg

* fix unit tests

* move content-api service

* move permission service

* update tests

* update plint config

* move page layout

* css variables

* use dedicated css property

* move generic error component to shared lib

* fix test
This commit is contained in:
Denys Vuika
2019-04-25 14:56:54 +01:00
committed by GitHub
parent f3c5ffb977
commit 9db1c2989f
175 changed files with 1552 additions and 1153 deletions
@@ -0,0 +1,107 @@
/*!
* @license
* Alfresco Example Content Application
*
* Copyright (C) 2005 - 2019 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 <http://www.gnu.org/licenses/>.
*/
import { Action } from '@ngrx/store';
import { Node, Person, Group, RepositoryInfo } from '@alfresco/js-api';
import { AppState } from '../states/app.state';
export enum AppActionTypes {
SetInitialState = 'SET_INITIAL_STATE',
SetLanguagePicker = 'SET_LANGUAGE_PICKER',
SetCurrentFolder = 'SET_CURRENT_FOLDER',
SetCurrentUrl = 'SET_CURRENT_URL',
SetUserProfile = 'SET_USER_PROFILE',
SetRepositoryInfo = 'SET_REPOSITORY_INFO',
ToggleInfoDrawer = 'TOGGLE_INFO_DRAWER',
ToggleDocumentDisplayMode = 'TOGGLE_DOCUMENT_DISPLAY_MODE',
Logout = 'LOGOUT',
ReloadDocumentList = 'RELOAD_DOCUMENT_LIST',
SetInfoDrawerState = 'SET_INFO_DRAWER_STATE',
CloseModalDialogs = 'CLOSE_MODAL_DIALOGS'
}
export class SetInitialStateAction implements Action {
readonly type = AppActionTypes.SetInitialState;
constructor(public payload: AppState) {}
}
export class SetLanguagePickerAction implements Action {
readonly type = AppActionTypes.SetLanguagePicker;
constructor(public payload: boolean) {}
}
export class SetCurrentFolderAction implements Action {
readonly type = AppActionTypes.SetCurrentFolder;
constructor(public payload: Node) {}
}
export class SetCurrentUrlAction implements Action {
readonly type = AppActionTypes.SetCurrentUrl;
constructor(public payload: string) {}
}
export class SetUserProfileAction implements Action {
readonly type = AppActionTypes.SetUserProfile;
constructor(public payload: { person: Person; groups: Group[] }) {}
}
export class ToggleInfoDrawerAction implements Action {
readonly type = AppActionTypes.ToggleInfoDrawer;
}
export class ToggleDocumentDisplayMode implements Action {
readonly type = AppActionTypes.ToggleDocumentDisplayMode;
}
export class LogoutAction implements Action {
readonly type = AppActionTypes.Logout;
}
export class ReloadDocumentListAction implements Action {
readonly type = AppActionTypes.ReloadDocumentList;
constructor(public payload?: any) {}
}
export class SetInfoDrawerStateAction implements Action {
readonly type = AppActionTypes.SetInfoDrawerState;
constructor(public payload: boolean) {}
}
export class CloseModalDialogsAction implements Action {
readonly type = AppActionTypes.CloseModalDialogs;
}
export class SetRepositoryInfoAction implements Action {
readonly type = AppActionTypes.SetRepositoryInfo;
constructor(public payload: RepositoryInfo) {}
}
@@ -0,0 +1,63 @@
/*!
* @license
* Alfresco Example Content Application
*
* Copyright (C) 2005 - 2019 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 <http://www.gnu.org/licenses/>.
*/
import { Action } from '@ngrx/store';
import { SiteBody } from '@alfresco/js-api';
export enum LibraryActionTypes {
Delete = 'DELETE_LIBRARY',
Create = 'CREATE_LIBRARY',
Navigate = 'NAVIGATE_LIBRARY',
Update = 'UPDATE_LIBRARY',
Leave = 'LEAVE_LIBRARY'
}
export class DeleteLibraryAction implements Action {
readonly type = LibraryActionTypes.Delete;
constructor(public payload?: string) {}
}
export class CreateLibraryAction implements Action {
readonly type = LibraryActionTypes.Create;
}
export class NavigateLibraryAction implements Action {
readonly type = LibraryActionTypes.Navigate;
constructor(public payload?: string) {}
}
export class UpdateLibraryAction implements Action {
readonly type = LibraryActionTypes.Update;
constructor(public payload?: SiteBody) {}
}
export class LeaveLibraryAction implements Action {
readonly type = LibraryActionTypes.Leave;
constructor(public payload?: string) {}
}
@@ -0,0 +1,163 @@
/*!
* @license
* Alfresco Example Content Application
*
* Copyright (C) 2005 - 2019 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 <http://www.gnu.org/licenses/>.
*/
import { Action } from '@ngrx/store';
import { MinimalNodeEntity } from '@alfresco/js-api';
export enum NodeActionTypes {
SetSelection = 'SET_SELECTED_NODES',
Delete = 'DELETE_NODES',
UndoDelete = 'UNDO_DELETE_NODES',
RestoreDeleted = 'RESTORE_DELETED_NODES',
PurgeDeleted = 'PURGE_DELETED_NODES',
Download = 'DOWNLOAD_NODES',
CreateFolder = 'CREATE_FOLDER',
EditFolder = 'EDIT_FOLDER',
Share = 'SHARE_NODE',
Unshare = 'UNSHARE_NODES',
Copy = 'COPY_NODES',
Move = 'MOVE_NODES',
ManagePermissions = 'MANAGE_PERMISSIONS',
PrintFile = 'PRINT_FILE',
ManageVersions = 'MANAGE_VERSIONS',
EditOffline = 'EDIT_OFFLINE',
UnlockForWriting = 'UNLOCK_WRITE_LOCK',
AddFavorite = 'ADD_FAVORITE',
RemoveFavorite = 'REMOVE_FAVORITE'
}
export class SetSelectedNodesAction implements Action {
readonly type = NodeActionTypes.SetSelection;
constructor(public payload: MinimalNodeEntity[] = []) {}
}
export class DeleteNodesAction implements Action {
readonly type = NodeActionTypes.Delete;
constructor(public payload: MinimalNodeEntity[] = []) {}
}
export class UndoDeleteNodesAction implements Action {
readonly type = NodeActionTypes.UndoDelete;
constructor(public payload: any[] = []) {}
}
export class RestoreDeletedNodesAction implements Action {
readonly type = NodeActionTypes.RestoreDeleted;
constructor(public payload: Array<MinimalNodeEntity>) {}
}
export class PurgeDeletedNodesAction implements Action {
readonly type = NodeActionTypes.PurgeDeleted;
constructor(public payload: Array<MinimalNodeEntity>) {}
}
export class DownloadNodesAction implements Action {
readonly type = NodeActionTypes.Download;
constructor(public payload: MinimalNodeEntity[] = []) {}
}
export class CreateFolderAction implements Action {
readonly type = NodeActionTypes.CreateFolder;
constructor(public payload: string) {}
}
export class EditFolderAction implements Action {
readonly type = NodeActionTypes.EditFolder;
constructor(public payload: MinimalNodeEntity) {}
}
export class ShareNodeAction implements Action {
readonly type = NodeActionTypes.Share;
constructor(public payload: MinimalNodeEntity) {}
}
export class UnshareNodesAction implements Action {
readonly type = NodeActionTypes.Unshare;
constructor(public payload: Array<MinimalNodeEntity>) {}
}
export class CopyNodesAction implements Action {
readonly type = NodeActionTypes.Copy;
constructor(public payload: Array<MinimalNodeEntity>) {}
}
export class MoveNodesAction implements Action {
readonly type = NodeActionTypes.Move;
constructor(public payload: Array<MinimalNodeEntity>) {}
}
export class ManagePermissionsAction implements Action {
readonly type = NodeActionTypes.ManagePermissions;
constructor(public payload: MinimalNodeEntity) {}
}
export class PrintFileAction implements Action {
readonly type = NodeActionTypes.PrintFile;
constructor(public payload: MinimalNodeEntity) {}
}
export class ManageVersionsAction implements Action {
readonly type = NodeActionTypes.ManageVersions;
constructor(public payload: MinimalNodeEntity) {}
}
export class EditOfflineAction implements Action {
readonly type = NodeActionTypes.EditOffline;
constructor(public payload: any) {}
}
export class UnlockWriteAction implements Action {
readonly type = NodeActionTypes.UnlockForWriting;
constructor(public payload: any) {}
}
export class AddFavoriteAction implements Action {
readonly type = NodeActionTypes.AddFavorite;
constructor(public payload: Array<MinimalNodeEntity>) {}
}
export class RemoveFavoriteAction implements Action {
readonly type = NodeActionTypes.RemoveFavorite;
constructor(public payload: Array<MinimalNodeEntity>) {}
}
@@ -0,0 +1,58 @@
/*!
* @license
* Alfresco Example Content Application
*
* Copyright (C) 2005 - 2019 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 <http://www.gnu.org/licenses/>.
*/
import { Action } from '@ngrx/store';
import { MinimalNodeEntity } from '@alfresco/js-api';
export enum RouterActionTypes {
NavigateUrl = 'NAVIGATE_URL',
NavigateRoute = 'NAVIGATE_ROUTE',
NavigateFolder = 'NAVIGATE_FOLDER',
NavigateParentFolder = 'NAVIGATE_PARENT_FOLDER'
}
export class NavigateUrlAction implements Action {
readonly type = RouterActionTypes.NavigateUrl;
constructor(public payload: string) {}
}
export class NavigateRouteAction implements Action {
readonly type = RouterActionTypes.NavigateRoute;
constructor(public payload: any[]) {}
}
export class NavigateToFolder implements Action {
readonly type = RouterActionTypes.NavigateFolder;
constructor(public payload: MinimalNodeEntity) {}
}
export class NavigateToParentFolder implements Action {
readonly type = RouterActionTypes.NavigateParentFolder;
constructor(public payload: MinimalNodeEntity) {}
}
@@ -0,0 +1,54 @@
/*!
* @license
* Alfresco Example Content Application
*
* Copyright (C) 2005 - 2019 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 <http://www.gnu.org/licenses/>.
*/
import { Action } from '@ngrx/store';
import { SearchOptionModel } from '../models/search-option.model';
export enum SearchActionTypes {
SearchByTerm = 'SEARCH_BY_TERM',
ToggleFilter = 'TOGGLE_SEARCH_FILTER',
ShowFilter = 'SHOW_SEARCH_FILTER',
HideFilter = 'HIDE_SEARCH_FILTER'
}
export class SearchByTermAction implements Action {
readonly type = SearchActionTypes.SearchByTerm;
constructor(
public payload: string,
public searchOptions?: SearchOptionModel[]
) {}
}
export class ToggleSearchFilterAction implements Action {
readonly type = SearchActionTypes.ToggleFilter;
}
export class ShowSearchFilterAction implements Action {
readonly type = SearchActionTypes.ShowFilter;
}
export class HideSearchFilterAction implements Action {
readonly type = SearchActionTypes.HideFilter;
}
@@ -0,0 +1,70 @@
/*!
* @license
* Alfresco Example Content Application
*
* Copyright (C) 2005 - 2019 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 <http://www.gnu.org/licenses/>.
*/
import { Action } from '@ngrx/store';
export enum SnackbarActionTypes {
Info = 'SNACKBAR_INFO',
Warning = 'SNACKBAR_WARNING',
Error = 'SNACKBAR_ERROR'
}
export interface SnackbarAction extends Action {
payload: string;
params?: Object;
userAction?: SnackbarUserAction;
duration: number;
}
export class SnackbarUserAction {
constructor(public title: string, public action: Action) {}
}
export class SnackbarInfoAction implements SnackbarAction {
readonly type = SnackbarActionTypes.Info;
userAction?: SnackbarUserAction;
duration = 4000;
constructor(public payload: string, public params?: Object) {}
}
export class SnackbarWarningAction implements SnackbarAction {
readonly type = SnackbarActionTypes.Warning;
userAction?: SnackbarUserAction;
duration = 4000;
constructor(public payload: string, public params?: Object) {}
}
export class SnackbarErrorAction implements SnackbarAction {
readonly type = SnackbarActionTypes.Error;
userAction?: SnackbarUserAction;
duration = 4000;
constructor(public payload: string, public params?: Object) {}
}
@@ -0,0 +1,48 @@
/*!
* @license
* Alfresco Example Content Application
*
* Copyright (C) 2005 - 2019 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 <http://www.gnu.org/licenses/>.
*/
import { Action } from '@ngrx/store';
export enum UploadActionTypes {
UploadFiles = 'UPLOAD_FILES',
UploadFolder = 'UPLOAD_FOLDER',
UploadFileVersion = 'UPLOAD_FILE_VERSION'
}
export class UploadFilesAction implements Action {
readonly type = UploadActionTypes.UploadFiles;
constructor(public payload: any) {}
}
export class UploadFolderAction implements Action {
readonly type = UploadActionTypes.UploadFolder;
constructor(public payload: any) {}
}
export class UploadFileVersionAction implements Action {
readonly type = UploadActionTypes.UploadFileVersion;
}
@@ -0,0 +1,51 @@
/*!
* @license
* Alfresco Example Content Application
*
* Copyright (C) 2005 - 2019 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 <http://www.gnu.org/licenses/>.
*/
import { Action } from '@ngrx/store';
import { MinimalNodeEntity } from '@alfresco/js-api';
export enum ViewerActionTypes {
ViewFile = 'VIEW_FILE',
ViewNode = 'VIEW_NODE',
FullScreen = 'FULLSCREEN_VIEWER'
}
export class ViewFileAction implements Action {
readonly type = ViewerActionTypes.ViewFile;
constructor(public payload: MinimalNodeEntity, public parentId?: string) {}
}
export class ViewNodeAction implements Action {
readonly type = ViewerActionTypes.ViewNode;
constructor(public nodeId: string, public location?: string) {}
}
export class FullscreenViewerAction implements Action {
readonly type = ViewerActionTypes.FullScreen;
constructor(public payload: MinimalNodeEntity) {}
}