Skip to content

Commit 1aea0ff

Browse files
committed
Spinner: Removed value option. Don't change empty values to zero on init. Don't enforce min/max on blur.
1 parent 257021b commit 1aea0ff

File tree

7 files changed

+97
-108
lines changed

7 files changed

+97
-108
lines changed

demos/spinner/time.html

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,13 +24,17 @@
2424

2525
_parse: function( value ) {
2626
if ( typeof value === "string" ) {
27+
// already a timestamp
28+
if ( Number( value ) == value ) {
29+
return Number( value );
30+
}
2731
return +Globalize.parseDate( value );
2832
}
2933
return value;
3034
},
3135

32-
_format: function() {
33-
return Globalize.format( new Date(this.options.value), "t" );
36+
_format: function( value ) {
37+
return Globalize.format( new Date(value), "t" );
3438
}
3539
});
3640

tests/unit/spinner/spinner_core.js

Lines changed: 19 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,8 @@ module( "spinner: core" );
44

55
test( "keydown UP on input, increases value not greater than max", function() {
66
expect( 5 );
7-
var element = $( "#spin" ).spinner({
7+
var element = $( "#spin" ).val( 70 ).spinner({
88
max: 100,
9-
value: 70,
109
step: 10
1110
});
1211

@@ -24,9 +23,8 @@ test( "keydown UP on input, increases value not greater than max", function() {
2423

2524
test( "keydown DOWN on input, decreases value not less than min", function() {
2625
expect( 5 );
27-
var element = $( "#spin" ).spinner({
26+
var element = $( "#spin" ).val( 50 ).spinner({
2827
min: 20,
29-
value: 50,
3028
step: 10
3129
});
3230

@@ -44,9 +42,8 @@ test( "keydown DOWN on input, decreases value not less than min", function() {
4442

4543
test( "keydown PAGE_UP on input, increases value not greater than max", function() {
4644
expect( 5 );
47-
var element = $( "#spin" ).spinner({
45+
var element = $( "#spin" ).val( 70 ).spinner({
4846
max: 100,
49-
value: 70,
5047
page: 10
5148
});
5249

@@ -64,9 +61,8 @@ test( "keydown PAGE_UP on input, increases value not greater than max", function
6461

6562
test( "keydown PAGE_DOWN on input, decreases value not less than min", function() {
6663
expect( 5 );
67-
var element = $( "#spin" ).spinner({
64+
var element = $( "#spin" ).val( 50 ).spinner({
6865
min: 20,
69-
value: 50,
7066
page: 10
7167
});
7268

@@ -84,9 +80,8 @@ test( "keydown PAGE_DOWN on input, decreases value not less than min", function(
8480

8581
test( "mouse click on up button, increases value not greater than max", function() {
8682
expect( 3 );
87-
var element = $( "#spin" ).spinner({
88-
max: 20,
89-
value: 18
83+
var element = $( "#spin" ).val( 18 ).spinner({
84+
max: 20
9085
}),
9186
button = element.spinner( "widget" ).find( ".ui-spinner-up" );
9287

@@ -100,9 +95,8 @@ test( "mouse click on up button, increases value not greater than max", function
10095

10196
test( "mouse click on up button, increases value not greater than max", function() {
10297
expect( 3 );
103-
var element = $( "#spin" ).spinner({
104-
min: 0,
105-
value: 2
98+
var element = $( "#spin" ).val( 2 ).spinner({
99+
min: 0
106100
}),
107101
button = element.spinner( "widget" ).find( ".ui-spinner-down" );
108102

@@ -137,29 +131,26 @@ test( "mousewheel on input", function() {
137131
});
138132

139133
test( "reading HTML5 attributes", function() {
140-
expect( 8 );
134+
expect( 6 );
141135
var markup = "<input type='number' min='-100' max='100' value='5' step='2'>",
142136
element = $( markup ).spinner();
143-
equal( element.spinner( "option", "value" ), 5, "value from markup" );
144137
equal( element.spinner( "option", "min" ), -100, "min from markup" );
145138
equal( element.spinner( "option", "max" ), 100, "max from markup" );
146139
equal( element.spinner( "option", "step" ), 2, "step from markup" );
147140

148141
element = $( markup ).spinner({
149142
min: -200,
150143
max: 200,
151-
value: 20,
152144
step: 5
153145
});
154-
equal( element.spinner( "option", "value" ), 20, "value from options" );
155146
equal( element.spinner( "option", "min" ), -200, "min from options" );
156147
equal( element.spinner( "option", "max" ), 200, "max from options" );
157148
equal( element.spinner( "option", "step" ), 5, "stop from options" );
158149
});
159150

160151
test( "ARIA attributes", function() {
161152
expect( 7 );
162-
var element = $( "#spin" ).spinner({ min: -5, max: 5, value: 2 });
153+
var element = $( "#spin" ).val( 2 ).spinner({ min: -5, max: 5 });
163154

164155
equal( element.attr( "role" ), "spinbutton", "role" );
165156
equal( element.attr( "aria-valuemin" ), -5, "aria-valuemin" );
@@ -185,17 +176,22 @@ test( "focus text field when pressing button", function() {
185176
ok( element[ 0 ] === document.activeElement, "focused after" );
186177
});
187178

179+
test( "don't clear invalid value on blur", function() {
180+
expect( 1 );
181+
var element = $( "#spin" ).spinner();
182+
element.focus().val( "a" ).blur();
183+
equal( element.val(), "a" );
184+
});
185+
188186
test( "precision", function() {
189187
expect( 2 );
190-
var element = $( "#spin" ).spinner({
191-
value: .05,
188+
var element = $( "#spin" ).val( .05 ).spinner({
192189
step: .0001
193190
});
194191
element.spinner( "stepUp" );
195192
equal( element.val(), "0.0501", "precision from step" );
196193

197-
element.spinner( "option", {
198-
value: 1.05,
194+
element.val( 1.05 ).spinner( "option", {
199195
step: 1
200196
});
201197
element.spinner( "stepDown" );

tests/unit/spinner/spinner_defaults.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ commonWidgetTests( "spinner", {
77
numberFormat: null,
88
page: 10,
99
step: 1,
10-
value: 0,
1110

1211
// callbacks
1312
change: null,

tests/unit/spinner/spinner_events.js

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -129,24 +129,28 @@ test( "change", function() {
129129
});
130130
}
131131

132+
element.focus();
132133
shouldChange( false, "key UP, before blur" );
133134
spinner_simulateKeyDownUp( element, $.ui.keyCode.UP );
134135
shouldChange( true, "blur after key UP" );
135136
element.blur();
136137

138+
element.focus();
137139
shouldChange( false, "key DOWN, before blur" );
138140
spinner_simulateKeyDownUp( element, $.ui.keyCode.DOWN );
139141
shouldChange( true, "blur after key DOWN" );
140142
element.blur();
141143

144+
element.focus();
142145
shouldChange( false, "key PAGE_UP, before blur" );
143146
spinner_simulateKeyDownUp( element, $.ui.keyCode.PAGE_UP );
144147
shouldChange( true, "blur after key PAGE_UP" );
145148
element.blur();
146149

150+
element.focus();
147151
shouldChange( false, "key PAGE_DOWN, before blur" );
148152
spinner_simulateKeyDownUp( element, $.ui.keyCode.PAGE_DOWN );
149-
shouldChange( true, "key PAGE_DOWN" );
153+
shouldChange( true, "blur after key PAGE_DOWN" );
150154
element.blur();
151155

152156
shouldChange( false, "many keys, before blur" );

tests/unit/spinner/spinner_methods.js

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ test( "destroy", function() {
1111

1212
test( "disable", function() {
1313
expect( 14 );
14-
var element = $( "#spin" ).spinner({ value: 2 }),
14+
var element = $( "#spin" ).val( 2 ).spinner(),
1515
wrapper = $( "#spin" ).spinner( "widget" );
1616

1717
ok( !wrapper.hasClass( "ui-spinner-disabled" ), "before: wrapper does not have ui-spinner-disabled class" );
@@ -71,9 +71,8 @@ test( "enable", function() {
7171

7272
test( "pageDown", function() {
7373
expect( 4 );
74-
var element = $( "#spin" ).spinner({
74+
var element = $( "#spin" ).val( -12 ).spinner({
7575
page: 20,
76-
value: -12,
7776
min: -100
7877
});
7978

@@ -92,9 +91,8 @@ test( "pageDown", function() {
9291

9392
test( "pageUp", function() {
9493
expect( 4 );
95-
var element = $( "#spin" ).spinner({
94+
var element = $( "#spin" ).val( 12 ).spinner({
9695
page: 20,
97-
value: 12,
9896
max: 100
9997
});
10098

@@ -113,9 +111,8 @@ test( "pageUp", function() {
113111

114112
test( "stepDown", function() {
115113
expect( 4 );
116-
var element = $( "#spin" ).spinner({
114+
var element = $( "#spin" ).val( 0 ).spinner({
117115
step: 2,
118-
value: 0,
119116
min: -15
120117
});
121118

@@ -134,9 +131,8 @@ test( "stepDown", function() {
134131

135132
test( "stepUp", function() {
136133
expect( 4 );
137-
var element = $( "#spin" ).spinner({
134+
var element = $( "#spin" ).val( 0 ).spinner({
138135
step: 2,
139-
value: 0,
140136
max: 15
141137
});
142138

@@ -155,7 +151,7 @@ test( "stepUp", function() {
155151

156152
test( "value", function() {
157153
expect( 2 );
158-
var element = $( "#spin" ).spinner({ value: 0 });
154+
var element = $( "#spin" ).val( 0 ).spinner();
159155

160156
element.spinner( "value", 10 );
161157
equals( element.val(), 10, "change value via value method" );

tests/unit/spinner/spinner_options.js

Lines changed: 25 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -3,30 +3,27 @@
33
module( "spinner: options" );
44

55
test( "numberFormat, number", function() {
6-
expect( 1 );
7-
var element = $( "#spin" ).spinner({
8-
value: "1",
9-
numberFormat: "n"
10-
});
11-
equal( element.val(), "1.00", "n" );
6+
expect( 2 );
7+
var element = $( "#spin" ).val( 0 ).spinner({ numberFormat: "n" });
8+
equal( element.val(), "0.00", "formatted on init" );
9+
element.spinner( "stepUp" );
10+
equal( element.val(), "1.00", "formatted after step" );
1211
});
1312

1413
test( "numberFormat, number, simple", function() {
15-
expect( 1 );
16-
var element = $( "#spin" ).spinner({
17-
value: "1",
18-
numberFormat: "n0"
19-
});
20-
equal( element.val(), "1", "n0" );
14+
expect( 2 );
15+
var element = $( "#spin" ).val( 0 ).spinner({ numberFormat: "n0" });
16+
equal( element.val(), "0", "formatted on init" );
17+
element.spinner( "stepUp" );
18+
equal( element.val(), "1", "formatted after step" );
2119
});
2220

2321
test( "numberFormat, currency", function() {
24-
expect( 1 );
25-
var element = $( "#spin" ).spinner({
26-
value: "1",
27-
numberFormat: "C"
28-
});
29-
equal( element.val(), "$1.00", "C" );
22+
expect( 2 );
23+
var element = $( "#spin" ).val( 0 ).spinner({ numberFormat: "C" });
24+
equal( element.val(), "$0.00", "formatted on init" );
25+
element.spinner( "stepUp" );
26+
equal( element.val(), "$1.00", "formatted after step" );
3027
});
3128

3229
/* TODO figure out how to test this properly
@@ -69,32 +66,31 @@ test("incremental - true (default)", function() {
6966

7067
test( "max", function() {
7168
expect( 3 );
72-
var element = $( "#spin" ).spinner({ max: 100, value: 1000 });
73-
equals( element.val(), 100, "max constrained if value option is greater" );
69+
var element = $( "#spin" ).val( 1000 ).spinner({ max: 100 });
70+
equals( element.val(), 1000, "value not constrained on init" );
7471

7572
element.spinner( "value", 1000 );
7673
equals( element.val(), 100, "max constrained if value method is greater" );
7774

7875
element.val( 1000 ).blur();
79-
equals( element.val(), 100, "max constrained if manual entry" );
76+
equals( element.val(), 1000, "max not constrained if manual entry" );
8077
});
8178

8279
test( "min", function() {
8380
expect( 3 );
84-
var element = $( "#spin" ).spinner({ min: -100, value: -1000 });
85-
equals( element.val(), -100, "min constrained if value option is greater" );
81+
var element = $( "#spin" ).val( -1000 ).spinner({ min: -100 });
82+
equals( element.val(), -1000, "value not constrained on init" );
8683

8784
element.spinner( "value", -1000 );
8885
equals( element.val(), -100, "min constrained if value method is greater" );
8986

9087
element.val( -1000 ).blur();
91-
equals( element.val(), -100, "min constrained if manual entry" );
88+
equals( element.val(), -1000, "min not constrained if manual entry" );
9289
});
9390

9491
test( "step, 2", function() {
95-
expect( 4 );
96-
var element = $( "#spin" ).spinner({ step: 2 });
97-
equals( element.val(), "0", "value initialized to 0" );
92+
expect( 3 );
93+
var element = $( "#spin" ).val( 0 ).spinner({ step: 2 });
9894

9995
element.spinner( "stepUp" );
10096
equals( element.val(), "2", "stepUp" );
@@ -107,16 +103,13 @@ test( "step, 2", function() {
107103
});
108104

109105
test( "step, 0.7", function() {
110-
expect( 2 );
111-
var element = $("#spin").spinner({
106+
expect( 1 );
107+
var element = $("#spin").val( 0 ).spinner({
112108
step: 0.7
113109
});
114-
equals( element.val(), "0", "value initialized to 0" );
115110

116111
element.spinner( "stepUp" );
117112
equals( element.val(), "0.7", "stepUp" );
118113
});
119114

120-
// TODO: test value
121-
122115
})( jQuery );

0 commit comments

Comments
 (0)