Skip to content

Commit c965247

Browse files
committed
feat(package): added mat-link-preview-container component to render the link preview
1 parent 21aadef commit c965247

File tree

5 files changed

+69
-5
lines changed

5 files changed

+69
-5
lines changed
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
<ng-container *ngFor="let link of linkPreviewService.links; trackBy: trackLinks">
2+
<mat-link-preview [link]="link"></mat-link-preview>
3+
</ng-container>
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
:host {
2+
display: block;
3+
}
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
import {async, ComponentFixture, TestBed} from '@angular/core/testing';
2+
3+
import {MatLinkPreviewContainerComponent} from './mat-link-preview-container.component';
4+
import {MatProgressBarModule} from '@angular/material';
5+
import {LinkPreviewService} from '../../..';
6+
import {Link} from 'ngx-linkifyjs';
7+
import {EventEmitter} from '@angular/core';
8+
9+
describe('MatLinkPreviewContainerComponent', () => {
10+
let component: MatLinkPreviewContainerComponent;
11+
let fixture: ComponentFixture<MatLinkPreviewContainerComponent>;
12+
const linkPreviewServicePartial: Partial<LinkPreviewService> = {
13+
onLinkFound: new EventEmitter<Array<Link>>()
14+
};
15+
16+
beforeEach(async(() => {
17+
TestBed.configureTestingModule({
18+
imports: [MatProgressBarModule],
19+
declarations: [MatLinkPreviewContainerComponent],
20+
providers: [{provide: LinkPreviewService, useValue: linkPreviewServicePartial}]
21+
})
22+
.compileComponents();
23+
}));
24+
25+
beforeEach(() => {
26+
fixture = TestBed.createComponent(MatLinkPreviewContainerComponent);
27+
component = fixture.componentInstance;
28+
fixture.detectChanges();
29+
});
30+
31+
it('should create', () => {
32+
expect(component).toBeTruthy();
33+
});
34+
});
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
import {Component, OnInit} from '@angular/core';
2+
import {LinkPreviewService} from '../../..';
3+
import {Link} from 'ngx-linkifyjs';
4+
5+
@Component({
6+
selector: 'mat-link-preview-container',
7+
templateUrl: './mat-link-preview-container.component.html',
8+
styleUrls: ['./mat-link-preview-container.component.scss']
9+
})
10+
export class MatLinkPreviewContainerComponent implements OnInit {
11+
12+
constructor(public linkPreviewService: LinkPreviewService) {
13+
}
14+
15+
ngOnInit() {
16+
}
17+
18+
trackLinks(index: number, link: Link) {
19+
return link ? link.href : undefined;
20+
}
21+
}

src/module/mat-link-preview.module.ts

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,18 @@
11
import {CommonModule} from '@angular/common';
22
import {NgModule, ModuleWithProviders} from '@angular/core';
33

4-
import {LinkPreviewComponent} from './components/link-preview.component';
54
import {LinkPreviewService} from './service/link-preview.service';
65
import {NgxLinkifyjsModule, NgxLinkifyjsService} from 'ngx-linkifyjs';
76
import {HttpClientModule} from '@angular/common/http';
8-
import {MatCardModule} from '@angular/material';
7+
import {MatCardModule, MatProgressBarModule} from '@angular/material';
98
import {MatLinkPreviewDirective} from './directives/mat-link-preview.directive';
9+
import {LinkPreviewComponent} from './components/mat-link-preview/link-preview.component';
10+
import {MatLinkPreviewContainerComponent} from './components/mat-link-preview-container/mat-link-preview-container.component';
1011

1112
// Export module's public API
1213
export {LinkPreview} from './interfaces/linkpreview.interface'
13-
export {LinkPreviewComponent} from './components/link-preview.component';
14+
export {LinkPreviewComponent} from './components/mat-link-preview/link-preview.component';
15+
export {MatLinkPreviewContainerComponent} from './components/mat-link-preview-container/mat-link-preview-container.component';
1416
export {MatLinkPreviewDirective} from './directives/mat-link-preview.directive';
1517
export {LinkPreviewService} from './service/link-preview.service';
1618

@@ -20,9 +22,10 @@ export {LinkPreviewService} from './service/link-preview.service';
2022
HttpClientModule,
2123
NgxLinkifyjsModule,
2224
MatCardModule,
25+
MatProgressBarModule
2326
],
24-
exports: [LinkPreviewComponent, MatLinkPreviewDirective],
25-
declarations: [LinkPreviewComponent, MatLinkPreviewDirective]
27+
exports: [LinkPreviewComponent, MatLinkPreviewContainerComponent, MatLinkPreviewDirective],
28+
declarations: [LinkPreviewComponent, MatLinkPreviewContainerComponent, MatLinkPreviewDirective]
2629
})
2730
export class MatLinkPreviewModule {
2831
static forRoot(): ModuleWithProviders {

0 commit comments

Comments
 (0)