Skip to content

Commit e0fbc79

Browse files
committed
feat(select): align selected option over trigger
Closes #1669
1 parent 26eb7ce commit e0fbc79

File tree

7 files changed

+522
-92
lines changed

7 files changed

+522
-92
lines changed

src/demo-app/select/select-demo.html

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
<div style="height: 1000px">This div is for testing scrolled selects.</div>
12
<div class="demo-select">
23
<md-card>
34
<md-select placeholder="Food i would like to eat" [formControl]="foodControl">
@@ -28,3 +29,4 @@
2829
</md-card>
2930

3031
</div>
32+
<div style="height: 500px">This div is for testing scrolled selects.</div>

src/demo-app/select/select-demo.ts

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,14 @@ export class SelectDemo {
2121

2222
drinks = [
2323
{value: 'coke-0', viewValue: 'Coke'},
24-
{value: 'sprite-1', viewValue: 'Sprite', disabled: true},
25-
{value: 'water-2', viewValue: 'Water'}
24+
{value: 'sprite-1', viewValue: 'Sprite'},
25+
{value: 'water-2', viewValue: 'Water'},
26+
{value: 'pepper-3', viewValue: 'Dr. Pepper'},
27+
{value: 'coffee-4', viewValue: 'Coffee'},
28+
{value: 'tea-5', viewValue: 'Tea'},
29+
{value: 'juice-6', viewValue: 'Orange juice'},
30+
{value: 'wine-7', viewValue: 'Wine'},
31+
{value: 'milk-8', viewValue: 'Milk'},
2632
];
2733

2834
toggleDisabled() {

src/lib/select/select-animations.ts

Lines changed: 2 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -42,25 +42,10 @@ export const transformPlaceholder: AnimationEntryMetadata = trigger('transformPl
4242
* When the panel is removed from the DOM, it simply fades out linearly.
4343
*/
4444
export const transformPanel: AnimationEntryMetadata = trigger('transformPanel', [
45-
state('top-ltr', style({
45+
state('showing', style({
4646
opacity: 1,
4747
width: 'calc(100% + 32px)',
48-
transform: `translate3d(-16px, -9px, 0) scaleY(1)`
49-
})),
50-
state('top-rtl', style({
51-
opacity: 1,
52-
width: 'calc(100% + 32px)',
53-
transform: `translate3d(16px, -9px, 0) scaleY(1)`
54-
})),
55-
state('bottom-ltr', style({
56-
opacity: 1,
57-
width: 'calc(100% + 32px)',
58-
transform: `translate3d(-16px, 8px, 0) scaleY(1)`
59-
})),
60-
state('bottom-rtl', style({
61-
opacity: 1,
62-
width: 'calc(100% + 32px)',
63-
transform: `translate3d(16px, 8px, 0) scaleY(1)`
48+
transform: `translate3d(0,0,0) scaleY(1)`
6449
})),
6550
transition('void => *', [
6651
style({

src/lib/select/select.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@
66

77
<template connected-overlay [origin]="origin" [open]="panelOpen" hasBackdrop (backdropClick)="close()"
88
backdropClass="md-overlay-transparent-backdrop" [positions]="_positions" [width]="_getWidth()"
9-
(positionChange)="_updateTransformOrigin($event)">
10-
<div class="md-select-panel" [@transformPanel]="_getPanelState()" (@transformPanel.done)="_onPanelDone()"
9+
[offsetY]="_offsetY" [offsetX]="_offsetX" (attach)="_setScrollTop()">
10+
<div class="md-select-panel" [@transformPanel]="'showing'" (@transformPanel.done)="_onPanelDone()"
1111
(keydown)="_keyManager.onKeydown($event)" [style.transformOrigin]="_transformOrigin">
1212
<div class="md-select-content" [@fadeInContent]="'showing'">
1313
<ng-content></ng-content>

src/lib/select/select.scss

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ $md-select-trigger-height: 30px !default;
55
$md-select-trigger-min-width: 112px !default;
66
$md-select-arrow-size: 5px !default;
77
$md-select-arrow-margin: 4px !default;
8+
$md-select-panel-max-height: 256px !default;
89

910
md-select {
1011
display: inline-block;
@@ -19,6 +20,7 @@ md-select {
1920
min-width: $md-select-trigger-min-width;
2021
cursor: pointer;
2122
position: relative;
23+
box-sizing: border-box;
2224

2325
[aria-disabled='true'] & {
2426
@include md-control-disabled-underline();
@@ -78,7 +80,7 @@ md-select {
7880
@include md-menu-base();
7981
padding-top: 0;
8082
padding-bottom: 0;
81-
transform-origin: top;
83+
max-height: $md-select-panel-max-height;
8284
}
8385

8486
md-option {

0 commit comments

Comments
 (0)