Skip to content

Commit 8ed5b98

Browse files
committed
feat: Add missing time picker attributes
Signed-off-by: Akshat Patel <[email protected]>
1 parent 947ec6d commit 8ed5b98

File tree

4 files changed

+47
-9
lines changed

4 files changed

+47
-9
lines changed

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)