Skip to content

Commit 59b5e54

Browse files
authored
Merge pull request #424 from youda97/invalid-number
Add invalid field for number input and store value when inputted
2 parents 3231be7 + ef8237d commit 59b5e54

File tree

2 files changed

+22
-1
lines changed

2 files changed

+22
-1
lines changed

src/number-input/number.component.ts

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ export class NumberChange {
3333
<label *ngIf="skeleton && label" class="bx--label bx--skeleton"></label>
3434
<div
3535
data-numberinput
36+
[attr.data-invalid]="(invalid ? '' : null)"
3637
class="bx--number"
3738
[ngClass]="{
3839
'bx--number--light': theme === 'light',
@@ -48,7 +49,8 @@ export class NumberChange {
4849
[min]="min"
4950
[max]="max"
5051
[disabled]="disabled"
51-
[required]="required"/>
52+
[required]="required"
53+
(input)="onNumberInputChange($event)"/>
5254
<div *ngIf="!skeleton" class="bx--number__controls">
5355
<button
5456
class="bx--number__control-btn up-icon"
@@ -65,6 +67,9 @@ export class NumberChange {
6567
</svg>
6668
</button>
6769
</div>
70+
<div *ngIf="invalid" class="bx--form-requirement">
71+
{{invalidText}}
72+
</div>
6873
<div *ngIf="helperText" class="bx--form__helper-text">{{helperText}}</div>
6974
</div>
7075
`,
@@ -96,6 +101,10 @@ export class Number implements ControlValueAccessor {
96101
* Set to `true` for a loading number component.
97102
*/
98103
@Input() skeleton = false;
104+
/**
105+
* Set to `true` for an invalid number component.
106+
*/
107+
@Input() invalid = false;
99108
/**
100109
* The unique id for the number component.
101110
*/
@@ -124,6 +133,10 @@ export class Number implements ControlValueAccessor {
124133
* Sets the optional helper text.
125134
*/
126135
@Input() helperText;
136+
/**
137+
* Sets the invalid text.
138+
*/
139+
@Input() invalidText;
127140
/**
128141
* Emits event notifying other classes when a change in state occurs in the input.
129142
*/
@@ -205,4 +218,8 @@ export class Number implements ControlValueAccessor {
205218
this.propagateChange(this.value);
206219
}
207220

221+
onNumberInputChange(event) {
222+
this.value = event.target.value;
223+
this.emitChangeEvent();
224+
}
208225
}

src/number-input/number.stories.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,15 +17,19 @@ storiesOf("Number", module).addDecorator(
1717
[theme]="theme"
1818
[min]="min"
1919
[max]="max"
20+
[invalid]="invalid"
21+
[invalidText]="invalidText"
2022
[disabled]="disabled">
2123
</ibm-number>
2224
`,
2325
props: {
2426
label: text("label", "Number Input Label"),
2527
helperText: text("helper text", "Optional helper text here"),
28+
invalidText: text("Form validation content", "Invalid number"),
2629
theme: select("theme", ["dark", "light"], "dark"),
2730
min: number("min", 0),
2831
max: number("max", 100),
32+
invalid: boolean("Show form validation", false),
2933
disabled: boolean("disabled", false)
3034
}
3135
}))

0 commit comments

Comments
 (0)