diff --git a/demo-shell/resources/i18n/en.json b/demo-shell/resources/i18n/en.json index cfddbddc2e..e4effabf11 100644 --- a/demo-shell/resources/i18n/en.json +++ b/demo-shell/resources/i18n/en.json @@ -20,6 +20,7 @@ "TAG": "Tag", "SOCIAL": "Social", "SETTINGS": "Settings", + "OVERLAY_VIEWER": "Overlay Viewer", "ABOUT": "About" }, "DOCUMENT_LIST": { diff --git a/demo-shell/src/app/app.module.ts b/demo-shell/src/app/app.module.ts index 58b430752e..3c0d5b9585 100644 --- a/demo-shell/src/app/app.module.ts +++ b/demo-shell/src/app/app.module.ts @@ -20,6 +20,7 @@ import { AboutComponent } from './components/about/about.component'; import { FormComponent } from './components/form/form.component'; import { FormListComponent } from './components/form/form-list.component'; import { CustomSourcesComponent } from './components/files/custom-sources.component'; +import { OverlayViewerComponent } from './components/overlay-viewer/overlay-viewer.component'; import { ProcessServiceComponent } from './components/process-service/process-service.component'; import { ShowDiagramComponent } from './components/process-service/show-diagram.component'; @@ -83,7 +84,8 @@ import { ProcessAttachmentsComponent } from './components/process-service/proces CustomSourcesComponent, VersionManagerDialogAdapterComponent, TaskAttachmentsComponent, - ProcessAttachmentsComponent + ProcessAttachmentsComponent, + OverlayViewerComponent ], providers: [ TranslateService, diff --git a/demo-shell/src/app/app.routes.ts b/demo-shell/src/app/app.routes.ts index f9a7b5938f..913e872f5b 100644 --- a/demo-shell/src/app/app.routes.ts +++ b/demo-shell/src/app/app.routes.ts @@ -41,6 +41,7 @@ import { UploadButtonComponent } from '@alfresco/adf-content-services'; import { FileViewComponent } from './components/file-view/file-view.component'; import { CustomSourcesComponent } from './components/files/custom-sources.component'; import { FormListComponent } from './components/form/form-list.component'; +import { OverlayViewerComponent } from './components/overlay-viewer/overlay-viewer.component'; export const appRoutes: Routes = [ { path: 'login', component: LoginComponent }, @@ -149,7 +150,12 @@ export const appRoutes: Routes = [ }, { path: 'about', component: AboutComponent }, { path: 'form', component: FormComponent }, - { path: 'form-list', component: FormListComponent } + { path: 'form-list', component: FormListComponent }, + { + path: 'overlay-viewer', + component: OverlayViewerComponent, + canActivate: [AuthGuardEcm] + } ] } ]; diff --git a/demo-shell/src/app/components/app-layout/app-layout.component.ts b/demo-shell/src/app/components/app-layout/app-layout.component.ts index 0563949534..fc3c044d31 100644 --- a/demo-shell/src/app/components/app-layout/app-layout.component.ts +++ b/demo-shell/src/app/components/app-layout/app-layout.component.ts @@ -41,6 +41,7 @@ export class AppLayoutComponent { { href: '/tag', icon: 'local_offer', title: 'APP_LAYOUT.TAG' }, { href: '/social', icon: 'thumb_up', title: 'APP_LAYOUT.SOCIAL' }, { href: '/settings', icon: 'settings', title: 'APP_LAYOUT.SETTINGS' }, + { href: '/overlay-viewer', icon: 'pageview', title: 'APP_LAYOUT.OVERLAY_VIEWER' }, { href: '/about', icon: 'info_outline', title: 'APP_LAYOUT.ABOUT' } ]; diff --git a/demo-shell/src/app/components/overlay-viewer/overlay-viewer.component.html b/demo-shell/src/app/components/overlay-viewer/overlay-viewer.component.html new file mode 100644 index 0000000000..75acdca195 --- /dev/null +++ b/demo-shell/src/app/components/overlay-viewer/overlay-viewer.component.html @@ -0,0 +1,12 @@ +

Overlay Viewer

+ + + + + + diff --git a/demo-shell/src/app/components/overlay-viewer/overlay-viewer.component.ts b/demo-shell/src/app/components/overlay-viewer/overlay-viewer.component.ts new file mode 100644 index 0000000000..f57b8e690a --- /dev/null +++ b/demo-shell/src/app/components/overlay-viewer/overlay-viewer.component.ts @@ -0,0 +1,36 @@ +/*! + * @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, Input } from '@angular/core'; + +@Component({ + templateUrl: 'overlay-viewer.component.html' +}) +export class OverlayViewerComponent { + + @Input() + showViewer: boolean = false; + + nodeId: string; + + showPreview(event) { + if (event.value.entry.isFile) { + this.nodeId = event.value.entry.id; + this.showViewer = true; + } + } +} diff --git a/docs/viewer.component.md b/docs/viewer.component.md index 409b1e805c..e003bb3f3f 100644 --- a/docs/viewer.component.md +++ b/docs/viewer.component.md @@ -67,6 +67,42 @@ Using with file url: | print | any | Yes | Raised when user clicks the 'Print' button. | | share | any | Yes | Raised when user clicks the 'Share' button. | +## Integrating with DocumentList component + +Below is the most simple integration of Pagination and DocumentList components within your custom component: + +```html + + + + + +``` + +And the component controller class implementation can look like the following: + +```ts +export class OverlayViewerComponent { + + @Input() + showViewer: boolean = false; + + nodeId: string; + + showPreview(event) { + if (event.value.entry.isFile) { + this.nodeId = event.value.entry.id; + this.showViewer = true; + } + } +} +``` + ## Details ### Supported file formats diff --git a/lib/core/viewer/components/viewer.component.ts b/lib/core/viewer/components/viewer.component.ts index 826b7d09c8..9b49e2365d 100644 --- a/lib/core/viewer/components/viewer.component.ts +++ b/lib/core/viewer/components/viewer.component.ts @@ -18,7 +18,7 @@ import { Location } from '@angular/common'; import { Component, ContentChild, EventEmitter, HostListener, - Input, OnChanges, OnDestroy, Output, TemplateRef, ViewEncapsulation + Input, OnChanges, Output, SimpleChanges, TemplateRef, ViewEncapsulation } from '@angular/core'; import { MinimalNodeEntryEntity } from 'alfresco-js-api'; import { BaseEvent } from '../../events'; @@ -37,7 +37,7 @@ import { ViewerToolbarComponent } from './viewer-toolbar.component'; host: { 'class': 'adf-viewer' }, encapsulation: ViewEncapsulation.None }) -export class ViewerComponent implements OnDestroy, OnChanges { +export class ViewerComponent implements OnChanges { @ContentChild(ViewerToolbarComponent) toolbar: ViewerToolbarComponent; @@ -146,7 +146,7 @@ export class ViewerComponent implements OnDestroy, OnChanges { private renditionService: RenditionsService) { } - ngOnChanges(changes) { + ngOnChanges(changes: SimpleChanges) { if (this.showViewer) { if (!this.urlFile && !this.blobFile && !this.fileNodeId) { throw new Error('Attribute urlFile or fileNodeId or blobFile is required'); @@ -308,26 +308,10 @@ export class ViewerComponent implements OnDestroy, OnChanges { if (this.otherMenu) { this.otherMenu.hidden = false; } - this.cleanup(); this.showViewer = false; this.showViewerChange.emit(this.showViewer); } - /** - * cleanup before the close - */ - cleanup() { - this.urlFileContent = ''; - this.displayName = ''; - this.fileNodeId = null; - this.extension = null; - this.mimeType = null; - } - - ngOnDestroy() { - this.cleanup(); - } - /** * get File name from url *