Skip to content
This repository was archived by the owner on Nov 30, 2022. It is now read-only.

Commit ad0cf96

Browse files
feat(popover): new popover feature
1 parent bcc62cb commit ad0cf96

10 files changed

+384
-83
lines changed

Diff for: package-lock.json

+2-2
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Diff for: projects/core/src/lib/fab/fab.component.scss

+2-2
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,11 @@ fiv-loading-progress-bar {
1616
pointer-events: none;
1717
}
1818

19-
fiv-icon.ios {
19+
::ng-deep ng-deep fiv-icon.ios {
2020
--fiv-icon-height: 24px;
2121
--fiv-icon-width: 24px;
2222
}
23-
fiv-icon:not(.ios) {
23+
::ng-deep fiv-icon:not(.ios) {
2424
--fiv-icon-height: 25px;
2525
--fiv-icon-width: 25px;
2626
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
import { FivPopover } from './popover.component';
2+
import { Directive, ElementRef, Input, AfterViewInit } from '@angular/core';
3+
import { tap } from 'rxjs/operators';
4+
5+
@Directive({
6+
selector: '[fivPopover]',
7+
exportAs: 'fivPopover'
8+
})
9+
export class PopoverElementDirective implements AfterViewInit {
10+
_show: boolean;
11+
@Input() fivPopover: FivPopover;
12+
13+
@Input('fivPopover.show') set show(visible: boolean) {
14+
this._show = visible;
15+
16+
if (this.show) {
17+
this.fivPopover.openElementRef(this.el);
18+
} else if (this.fivPopover.overlay && this.fivPopover.overlay.open) {
19+
this.fivPopover.close();
20+
}
21+
}
22+
get show() {
23+
return this._show;
24+
}
25+
26+
constructor(private el: ElementRef) {}
27+
28+
open() {
29+
this.show = true;
30+
}
31+
hide() {
32+
this.show = false;
33+
}
34+
35+
ngAfterViewInit(): void {
36+
this.fivPopover.overlay.afterInit
37+
.pipe(
38+
tap(() => {
39+
this.show = this._show;
40+
})
41+
)
42+
.subscribe();
43+
}
44+
}

Diff for: projects/core/src/lib/popover/popover.component.html

+6-3
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,12 @@
11
<fiv-overlay>
2-
<div *ngIf="backdrop" class="popover-backdrop" (click)="close()">
2+
<div *ngIf="backdrop" class="fiv-popover-backdrop" (click)="close()">
33
</div>
4-
<div class="popover-container" [style.left]="left + 'px'" [style.top]="top + 'px'" [style.height]="height + 'px'"
5-
[style.width]="width + 'px'">
4+
<div class="popover-container" [style]="containerStyles">
65
<ng-content>
76
</ng-content>
7+
<svg *ngIf="arrow && !overlaysTarget" class="arrow" [style]="svgStyles">
8+
<polygon [attr.points]="triangle" />
9+
</svg>
810
</div>
11+
912
</fiv-overlay>

Diff for: projects/core/src/lib/popover/popover.component.scss

+7-3
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,20 @@
11
:host {
22
--fiv-popover-backdrop-color: rgba(0, 0, 0, 0.2);
33
}
4+
45
.popover-container {
56
position: absolute;
67
display: block;
78
}
89

9-
.popover-backdrop  {
10+
svg.arrow {
11+
position: absolute;
12+
fill: var(--ion-item-background);
13+
}
14+
15+
.fiv-popover-backdrop {
1016
position: absolute;
1117
display: block;
12-
top: 0;
13-
left: 0;
1418
width: 100vw;
1519
height: 100vh;
1620
background: var(--fiv-popover-backdrop-color);

0 commit comments

Comments
 (0)