+ locationFormat="/files"
+ selectionMode="multiple">
diff --git a/demo-shell-ng2/app/components/files/custom-sources.component.ts b/demo-shell-ng2/app/components/files/custom-sources.component.ts
index d047a65729..52ceef4d15 100644
--- a/demo-shell-ng2/app/components/files/custom-sources.component.ts
+++ b/demo-shell-ng2/app/components/files/custom-sources.component.ts
@@ -15,7 +15,8 @@
* limitations under the License.
*/
-import { Component, Input } from '@angular/core';
+import { Component, Input, ViewChild } from '@angular/core';
+import { DocumentListComponent } from 'ng2-alfresco-documentlist';
@Component({
selector: 'adf-custom-sources-demo',
@@ -26,6 +27,9 @@ export class CustomSourcesComponent {
@Input()
selectedSource = '-recent-';
+ @ViewChild(DocumentListComponent)
+ documentList: DocumentListComponent;
+
sources = [
{ title: 'Favorites', value: '-favorites-' },
{ title: 'Recent', value: '-recent-' },
diff --git a/docIndex.md b/docIndex.md
index 7c3bebe61a..23a5b80103 100644
--- a/docIndex.md
+++ b/docIndex.md
@@ -315,6 +315,7 @@ for more information about installing and using the source code.
- [Context menu directive](docs/context-menu.directive.md)
- [Logout directive](docs/logout.directive.md)
+- [Node restore directive](docs/node-restore.directive.md)
- [Node permission directive](docs/node-permission.directive.md)
- [Node favorite directive](docs/node-favorite.directive.md)
- [Upload directive](docs/upload.directive.md)
diff --git a/docs/node-restore.directive.md b/docs/node-restore.directive.md
new file mode 100644
index 0000000000..80cf391891
--- /dev/null
+++ b/docs/node-restore.directive.md
@@ -0,0 +1,52 @@
+# Node Restore directive
+
+
+
+
+
+- [Basic Usage](#basic-usage)
+ * [Properties](#properties)
+ * [Events](#events)
+- [Details](#details)
+
+
+
+
+
+## Basic Usage
+
+```html
+
+
+
+
+
+ ...
+
+```
+
+### Properties
+
+| Name | Type | Default | Description |
+| ----------------- | ------------------- | ------- | ------------------------------- |
+| adf-restore | DeletedNodeEntry[] | [] | Deleted nodes to restore |
+| location | string | '' | Route path to view restored node |
+
+### Events
+
+| Name | Description |
+| --------- | ------------------------------- |
+| restore | Raised when the restore is done |
+
+## Details
+
+'NodeRestoreDirective' directive takes a selection of `DeletedNodeEntry[]` and restores them in their original location.
+If the original location doesn't exist anymore, then they remain in the trash list.
+
+For single node restore, there is action to jump to the location where the node has been restored and for this `location` is used to specify the route path where the list of nodes are rendered
diff --git a/ng2-components/ng2-alfresco-core/index.ts b/ng2-components/ng2-alfresco-core/index.ts
index e20c675848..0462c75648 100644
--- a/ng2-components/ng2-alfresco-core/index.ts
+++ b/ng2-components/ng2-alfresco-core/index.ts
@@ -122,6 +122,7 @@ import {
} from './src/components/info-drawer/info-drawer-layout.component';
import { InfoDrawerComponent, InfoDrawerTabComponent } from './src/components/info-drawer/info-drawer.component';
import { NodePermissionDirective } from './src/directives/node-permission.directive';
+import { NodeRestoreDirective } from './src/directives/node-restore.directive';
import { UploadDirective } from './src/directives/upload.directive';
import { FileSizePipe } from './src/pipes/file-size.pipe';
@@ -141,6 +142,7 @@ export * from './src/components/data-column/data-column-list.component';
export * from './src/components/info-drawer/info-drawer.component';
export * from './src/directives/upload.directive';
export * from './src/directives/highlight.directive';
+export * from './src/directives/node-restore.directive';
export * from './src/directives/node-permission.directive';
export * from './src/directives/node-favorite.directive';
export * from './src/utils/index';
@@ -248,6 +250,7 @@ export function createTranslateLoader(http: Http, logService: LogService) {
...pipes(),
LogoutDirective,
UploadDirective,
+ NodeRestoreDirective,
NodePermissionDirective,
NodeFavoriteDirective,
HighlightDirective,
@@ -291,6 +294,7 @@ export function createTranslateLoader(http: Http, logService: LogService) {
...pipes(),
LogoutDirective,
UploadDirective,
+ NodeRestoreDirective,
NodePermissionDirective,
NodeFavoriteDirective,
HighlightDirective,
diff --git a/ng2-components/ng2-alfresco-core/src/directives/node-restore.directive.spec.ts b/ng2-components/ng2-alfresco-core/src/directives/node-restore.directive.spec.ts
new file mode 100644
index 0000000000..9aa655b4a2
--- /dev/null
+++ b/ng2-components/ng2-alfresco-core/src/directives/node-restore.directive.spec.ts
@@ -0,0 +1,340 @@
+/*!
+ * @license
+ * Copyright 2016 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 { Component, DebugElement } from '@angular/core';
+import { async, ComponentFixture, fakeAsync, TestBed, tick } from '@angular/core/testing';
+import { By } from '@angular/platform-browser';
+import { Router } from '@angular/router';
+import { RouterTestingModule } from '@angular/router/testing';
+import { Observable } from 'rxjs/Rx';
+import { AlfrescoTranslationService } from '../../index';
+import { CoreModule } from '../../index';
+import { AlfrescoApiService } from '../services/alfresco-api.service';
+import { NotificationService } from '../services/notification.service';
+import { NodeRestoreDirective } from './node-restore.directive';
+
+@Component({
+ template: `
+