Skip to content

Commit e419ec6

Browse files
committed
feat(popover): fix MD animations and start from the right side
references #5420
1 parent 60f02ce commit e419ec6

File tree

2 files changed

+13
-5
lines changed

2 files changed

+13
-5
lines changed

src/components/popover/popover.md.scss

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,14 @@
33
// Material Design Popover
44
// --------------------------------------------------
55

6-
$popover-md-width: 200px !default;
6+
$popover-md-width: 250px !default;
77
$popover-md-max-height: 90% !default;
88

99
$popover-md-border-radius: 2px !default;
1010
$popover-md-text-color: #000 !default;
1111
$popover-md-background: #fafafa !default;
1212
$popover-md-box-shadow-color: rgba(0, 0, 0, .3) !default;
13-
$popover-md-box-shadow: 0 3px 12px 2px $alert-md-box-shadow-color !default;
13+
$popover-md-box-shadow: 0 3px 12px 2px $popover-md-box-shadow-color !default;
1414

1515
$popover-md-item-background: $popover-md-background !default;
1616

@@ -24,6 +24,8 @@ $popover-md-item-background: $popover-md-background !default;
2424
min-height: 0;
2525
max-height: $popover-md-max-height;
2626

27+
transform-origin: top left;
28+
2729
border-radius: $popover-md-border-radius;
2830
color: $popover-md-text-color;
2931
background: $popover-md-background;

src/components/popover/popover.ts

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -242,6 +242,9 @@ class PopoverTransition extends Transition {
242242

243243

244244
positionView(nativeEle: HTMLElement, ev) {
245+
let originY = 'top';
246+
let originX = 'left';
247+
245248
// Popover content width and height
246249
let popoverEle = <HTMLElement>nativeEle.querySelector('.popover-content');
247250
let popoverDim = popoverEle.getBoundingClientRect();
@@ -289,6 +292,7 @@ class PopoverTransition extends Transition {
289292
popoverCSS.left = POPOVER_BODY_PADDING;
290293
} else if (popoverWidth + POPOVER_BODY_PADDING + popoverCSS.left > bodyWidth) {
291294
popoverCSS.left = bodyWidth - popoverWidth - POPOVER_BODY_PADDING;
295+
originX = 'right';
292296
}
293297

294298
// If the popover when popped down stretches past bottom of screen,
@@ -297,6 +301,7 @@ class PopoverTransition extends Transition {
297301
arrowCSS.top = targetTop - (arrowHeight + 1);
298302
popoverCSS.top = targetTop - popoverHeight - (arrowHeight - 1);
299303
nativeEle.className = nativeEle.className + ' popover-bottom';
304+
originY = 'bottom';
300305
// If there isn't room for it to pop up above the target cut it off
301306
} else if (targetTop + targetHeight + popoverHeight > bodyHeight) {
302307
popoverEle.style.bottom = POPOVER_BODY_PADDING + '%';
@@ -307,6 +312,8 @@ class PopoverTransition extends Transition {
307312

308313
popoverEle.style.top = popoverCSS.top + 'px';
309314
popoverEle.style.left = popoverCSS.left + 'px';
315+
316+
popoverEle.style.transformOrigin = originY + " " + originX;
310317
}
311318
}
312319

@@ -370,12 +377,11 @@ class PopoverMdPopIn extends PopoverTransition {
370377
let content = new Animation(ele.querySelector('.popover-content'));
371378
let viewport = new Animation(ele.querySelector('.popover-viewport'));
372379

373-
content.fromTo('maxWidth', '0%', '90%');
374-
content.fromTo('maxHeight', '0%', '90%');
380+
content.fromTo('scale', '0', '1');
375381
viewport.fromTo('opacity', '0', '1');
376382

377383
this
378-
.easing('ease')
384+
.easing('cubic-bezier(.55,0,.55,.2)')
379385
.duration(500)
380386
.add(content)
381387
.add(viewport);

0 commit comments

Comments
 (0)