Skip to content

Commit 956895e

Browse files
authored
Merge branch 'master' into ng15
2 parents f22fa24 + e2b39cd commit 956895e

File tree

6 files changed

+61
-17
lines changed

6 files changed

+61
-17
lines changed

src/dropdown/list/dropdown-list.component.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -67,10 +67,10 @@ import { ScrollCustomEvent } from "./scroll-custom-event.interface";
6767
[attr.aria-selected]="item.selected"
6868
[id]="getItemId(i)"
6969
[attr.title]=" showTitles ? item.content : null"
70+
[attr.disabled]="item.disabled"
7071
[ngClass]="{
7172
'bx--list-box__menu-item--active': item.selected,
72-
'bx--list-box__menu-item--highlighted': highlightedItem === getItemId(i),
73-
disabled: item.disabled
73+
'bx--list-box__menu-item--highlighted': highlightedItem === getItemId(i)
7474
}">
7575
<div
7676
#listItem
@@ -277,7 +277,6 @@ export class DropdownList implements AbstractDropdownView, AfterViewInit, OnDest
277277
this.updateIndex();
278278
this.setupFocusObservable();
279279
setTimeout(() => {
280-
if (this.getSelected() !== []) { return; }
281280
this.doEmitSelect();
282281
});
283282
}

src/grid/grid.directive.ts

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,9 @@
1-
import { Directive, HostBinding, Input, OnInit } from "@angular/core";
1+
import {
2+
Directive,
3+
HostBinding,
4+
Input,
5+
OnChanges
6+
} from "@angular/core";
27

38
/**
49
* [See demo](../../?path=/story/components-grid--basic)
@@ -37,7 +42,7 @@ export class RowDirective {
3742
@Directive({
3843
selector: "[ibmCol]"
3944
})
40-
export class ColumnDirective implements OnInit {
45+
export class ColumnDirective implements OnChanges {
4146
@Input() class = "";
4247

4348
@Input() columnNumbers = {};
@@ -51,12 +56,14 @@ export class ColumnDirective implements OnInit {
5156
return this._columnClasses.join(" ");
5257
}
5358

54-
set(classes: string) {
59+
set columnClasses(classes: string) {
5560
this._columnClasses = classes.split(" ");
5661
}
5762

58-
ngOnInit() {
63+
ngOnChanges() {
5964
try {
65+
// Reset classes so we don't apply classes for the same breakpoint multiple times
66+
this._columnClasses = [];
6067
const columnKeys = Object.keys(this.columnNumbers);
6168
if (columnKeys.length <= 0) {
6269
this._columnClasses.push("bx--col");
@@ -78,7 +85,7 @@ export class ColumnDirective implements OnInit {
7885
}
7986

8087
if (this.class) {
81-
this._columnClasses.push(this.class);
88+
this._columnClasses = [...new Set([...this._columnClasses, ...this.class.split(" ")])];
8289
}
8390
}
8491
}

src/timepicker-select/timepicker-select.component.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ import { NG_VALUE_ACCESSOR } from "@angular/forms";
2222
<select
2323
#select
2424
[attr.id]="id"
25+
[attr.aria-label]="ariaLabel"
2526
[disabled]="disabled"
2627
(change)="onChange($event)"
2728
class="bx--select-input">
@@ -44,6 +45,8 @@ export class TimePickerSelect extends Select {
4445

4546
@Input() id = `timepicker-select-${TimePickerSelect.selectCount++}`;
4647

48+
@Input() ariaLabel: string;
49+
4750
/**
4851
* Set to true for a loading select.
4952
*/

src/timepicker/timepicker.component.spec.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import { TimePicker } from "./timepicker.component";
1111
(valueChange)="onChange()"
1212
[(value)]="value"
1313
label="test"
14+
size="lg"
1415
disabled="false">
1516
</ibm-timepicker>`
1617
})
@@ -50,6 +51,12 @@ describe("TimePicker", () => {
5051
expect(element.getAttribute("theme")).toEqual("dark");
5152
});
5253

54+
it("should set size to large", () => {
55+
fixture = TestBed.createComponent(TimePickerTest);
56+
element = fixture.debugElement.query(By.css("ibm-timepicker")).nativeElement;
57+
expect(element.getAttribute("size")).toEqual("lg");
58+
});
59+
5360
it("should set disabled to false", () => {
5461
fixture = TestBed.createComponent(TimePickerTest);
5562
element = fixture.debugElement.query(By.css("ibm-timepicker")).nativeElement;

src/timepicker/timepicker.component.ts

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,24 @@ import { NG_VALUE_ACCESSOR, ControlValueAccessor } from "@angular/forms";
1717
@Component({
1818
selector: "ibm-timepicker",
1919
template: `
20-
<label *ngIf="!skeleton && label" [for]="id" class="bx--label">
20+
<label
21+
*ngIf="!skeleton && label"
22+
[for]="id"
23+
[ngClass]="{
24+
'bx--label': true,
25+
'bx--visually-hidden': hideLabel
26+
}">
2127
<ng-container *ngIf="!isTemplate(label)">{{label}}</ng-container>
2228
<ng-template *ngIf="isTemplate(label)" [ngTemplateOutlet]="label"></ng-template>
2329
</label>
2430
<div
2531
class="bx--time-picker"
26-
[ngClass]="{'bx--time-picker--invalid' : invalid}">
32+
[ngClass]="{
33+
'bx--time-picker--invalid' : invalid,
34+
'bx--time-picker--sm': size === 'sm',
35+
'bx--time-picker--md': size === 'md',
36+
'bx--time-picker--lg': size === 'lg'
37+
}">
2738
<div class="bx--time-picker__input">
2839
<input
2940
[ngClass]="{
@@ -36,7 +47,7 @@ import { NG_VALUE_ACCESSOR, ControlValueAccessor } from "@angular/forms";
3647
[pattern]="pattern"
3748
[attr.id]="id"
3849
[disabled]="disabled"
39-
maxlength="5"
50+
[attr.maxlength]="maxLength"
4051
(change)="onChange($event)"
4152
type="text"
4253
class="bx--time-picker__input-field bx--text-input">
@@ -65,11 +76,13 @@ export class TimePicker implements ControlValueAccessor {
6576
@Input() invalid = false;
6677
@Input() invalidText: string | TemplateRef<any>;
6778
@Input() label: string | TemplateRef<any>;
79+
@Input() hideLabel = false;
6880
@Input() placeholder = "hh:mm";
6981
@Input() pattern = "(1[012]|[0-9]):[0-5][0-9]";
7082
@Input() id = `timepicker-${TimePicker.timePickerCount++}`;
7183
@Input() disabled = false;
7284
@Input() value: string;
85+
@Input() maxLength = 5;
7386

7487
/**
7588
* Set to true for a loading select.
@@ -81,6 +94,11 @@ export class TimePicker implements ControlValueAccessor {
8194
*/
8295
@Input() theme: "light" | "dark" = "dark";
8396

97+
/**
98+
* `sm`, `md` (default), or `lg` select size
99+
*/
100+
@Input() size: "sm" | "md" | "lg" = "md";
101+
84102
@Output() valueChange: EventEmitter<string> = new EventEmitter();
85103

86104
/**

src/timepicker/timepicker.stories.ts

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -32,12 +32,21 @@ storiesOf("Components|Time Picker", module)
3232
(valueChange)="timePickerChange($event)"
3333
[value]="value"
3434
[disabled]="disableTime"
35+
[size]="size"
3536
label="Select a time">
36-
<ibm-timepicker-select [theme]="theme" (valueChange)="timePickerSelectChange($event)" [disabled]="disabledSelect" display="inline">
37+
<ibm-timepicker-select
38+
[theme]="theme"
39+
(valueChange)="timePickerSelectChange($event)"
40+
[disabled]="disabledSelect"
41+
ariaLabel="Open list of options">
3742
<option selected value="AM">AM</option>
3843
<option value="PM">PM</option>
3944
</ibm-timepicker-select>
40-
<ibm-timepicker-select [theme]="theme" (valueChange)="timePickerSelectChange($event)" [disabled]="disabledSelect" display="inline">
45+
<ibm-timepicker-select
46+
[theme]="theme"
47+
(valueChange)="timePickerSelectChange($event)"
48+
[disabled]="disabledSelect"
49+
ariaLabel="Open list of options">
4150
<option selected value="Time Zone 1">Time Zone 1</option>
4251
<option value="Time Zone 2">Time Zone 2</option>
4352
</ibm-timepicker-select>
@@ -51,6 +60,7 @@ storiesOf("Components|Time Picker", module)
5160
disableTime: boolean("disabled time", false),
5261
disabledSelect: boolean("disabled selects", false),
5362
theme: select("Theme", ["dark", "light"], "dark"),
63+
size: select("Size", ["sm", "md", "lg"], "md"),
5464
invalid: boolean("Show form validation", false),
5565
invalidText: text("Form validation text", "A valid value is required")
5666
}
@@ -66,17 +76,17 @@ storiesOf("Components|Time Picker", module)
6676
[theme]="theme"
6777
(valueChange)="timePickerSelectChange($event)"
6878
[disabled]="disabledSelect"
69-
display="inline"
70-
[(ngModel)]="period">
79+
[(ngModel)]="period"
80+
ariaLabel="Open list of options">
7181
<option selected value="AM">AM</option>
7282
<option value="PM">PM</option>
7383
</ibm-timepicker-select>
7484
<ibm-timepicker-select
7585
[theme]="theme"
7686
(valueChange)="timePickerSelectChange($event)"
7787
[disabled]="disabledSelect"
78-
display="inline"
79-
[(ngModel)]="timeZone">
88+
[(ngModel)]="timeZone"
89+
ariaLabel="Open list of options">
8090
<option selected value="Time Zone 1">Time Zone 1</option>
8191
<option value="Time Zone 2">Time Zone 2</option>
8292
</ibm-timepicker-select>

0 commit comments

Comments
 (0)