Skip to content

Commit d179ae7

Browse files
author
esuau
committed
feat(number): Implement with no label
1 parent 8284614 commit d179ae7

File tree

4 files changed

+42
-9
lines changed

4 files changed

+42
-9
lines changed

src/i18n/en.json

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -80,9 +80,6 @@
8080
"NOTIFICATION": {
8181
"CLOSE_BUTTON": "Close alert notification"
8282
},
83-
"NUMBER": {
84-
"LABEL": "Number Input label"
85-
},
8683
"OVERFLOW_MENU": {
8784
"OVERFLOW": "Overflow"
8885
},

src/number-input/number.component.spec.ts

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ describe("Number", () => {
1212
let containerElement: HTMLElement;
1313
let buttonUp: HTMLButtonElement;
1414
let buttonDown: HTMLButtonElement;
15+
let labelElement: HTMLDivElement;
1516
let helperTextElement: HTMLDivElement;
1617

1718
beforeEach(() => {
@@ -26,6 +27,7 @@ describe("Number", () => {
2627
fixture = TestBed.createComponent(Number);
2728
component = fixture.componentInstance;
2829
inputElement = fixture.debugElement.query(By.css("input")).nativeElement;
30+
containerElement = fixture.debugElement.query(By.css(".bx--number")).nativeElement;
2931
});
3032

3133
it("should work", () => {
@@ -63,8 +65,20 @@ describe("Number", () => {
6365
expect(inputElement.required).toEqual(true);
6466
});
6567

68+
it("should bind input label", () => {
69+
component.label = "Number Input";
70+
fixture.detectChanges();
71+
labelElement = fixture.debugElement.query(By.css(".bx--label")).nativeElement;
72+
expect(labelElement.innerHTML.includes("Number Input")).toEqual(true);
73+
expect(containerElement.className.includes("bx--number--nolabel")).toEqual(false);
74+
75+
component.label = null;
76+
fixture.detectChanges();
77+
expect(fixture.debugElement.query(By.css(".bx--label"))).toBeNull();
78+
expect(containerElement.className.includes("bx--number--nolabel")).toEqual(true);
79+
});
80+
6681
it("should bind input helperText", () => {
67-
containerElement = fixture.debugElement.query(By.css(".bx--number")).nativeElement;
6882
component.helperText = "Helper text here.";
6983
fixture.detectChanges();
7084
helperTextElement = fixture.debugElement.query(By.css(".bx--form__helper-text")).nativeElement;
@@ -116,7 +130,6 @@ describe("Number", () => {
116130
});
117131

118132
it("should have dark and light theme", () => {
119-
containerElement = fixture.debugElement.query(By.css(".bx--number")).nativeElement;
120133
component.theme = "dark";
121134
fixture.detectChanges();
122135
expect(containerElement.className.includes("bx--number--light")).toEqual(false);

src/number-input/number.component.ts

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import { Component, Input, HostBinding, EventEmitter, Output } from "@angular/core";
22
import { NG_VALUE_ACCESSOR, ControlValueAccessor } from "@angular/forms";
3-
import { I18n } from "../i18n/i18n.module";
43

54
/**
65
* Used to emit changes performed on number input components.
@@ -35,9 +34,10 @@ export class NumberChange {
3534
class="bx--number"
3635
[ngClass]="{
3736
'bx--number--light': theme === 'light',
37+
'bx--number--nolabel': !label,
3838
'bx--number--helpertext': helperText
3939
}">
40-
<label [for]="id" class="bx--label">{{label}}</label>
40+
<label *ngIf="label" [for]="id" class="bx--label">{{label}}</label>
4141
<input
4242
type="number"
4343
[id]="id"
@@ -112,7 +112,7 @@ export class Number implements ControlValueAccessor {
112112
/**
113113
* Sets the text inside the `label` tag.
114114
*/
115-
@Input() label = this.i18n.get().NUMBER.LABEL;
115+
@Input() label;
116116
/**
117117
* Sets the optional helper text.
118118
*/
@@ -122,7 +122,11 @@ export class Number implements ControlValueAccessor {
122122
*/
123123
@Output() change = new EventEmitter<NumberChange>();
124124

125-
constructor(protected i18n: I18n) {
125+
/**
126+
* Creates an instance of `Number`.
127+
* @memberof Number
128+
*/
129+
constructor() {
126130
Number.numberCount++;
127131
}
128132

src/number-input/number.stories.ts

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,24 @@ storiesOf("Number", module).addDecorator(
1010
)
1111
.addDecorator(withKnobs)
1212
.add("Basic", () => ({
13+
template: `
14+
<div style="width: 250px;">
15+
<ibm-number
16+
label="Number Input label"
17+
[theme]="theme"
18+
[min]="min"
19+
[max]="max"
20+
[disabled]="disabled"></ibm-number>
21+
</div>
22+
`,
23+
props: {
24+
theme: select("theme", ["dark", "light"], "dark"),
25+
min: number("min", 0),
26+
max: number("max", 100),
27+
disabled: boolean("disabled", false)
28+
}
29+
}))
30+
.add("With no label", () => ({
1331
template: `
1432
<div style="width: 250px;">
1533
<ibm-number
@@ -30,6 +48,7 @@ storiesOf("Number", module).addDecorator(
3048
template: `
3149
<div style="width: 250px;">
3250
<ibm-number
51+
label="Number Input label"
3352
helperText="Optional helper text here"
3453
[theme]="theme"
3554
[min]="min"

0 commit comments

Comments
 (0)