Skip to content

Commit e0dbb79

Browse files
committed
v2.2.4
1 parent 8781a47 commit e0dbb79

20 files changed

+2706
-2523
lines changed

browser/react-widgets.js

Lines changed: 5 additions & 5 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

docs/docs.js

Lines changed: 2565 additions & 2407 deletions
Large diffs are not rendered by default.

example/example.jsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ var App = React.createClass({
9292
data: data,
9393
selectValues: []
9494
.concat(self.state.selectValues)
95-
.concat(tag)
95+
.concat(tag.id)
9696
})
9797
}
9898

lib/Calendar.js

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ var Calendar = React.createClass({
5959

6060
displayName: "Calendar",
6161

62-
mixins: [require("./mixins/WidgetMixin"), require("./mixins/PureRenderMixin"), require("./mixins/RtlParentContextMixin")],
62+
mixins: [require("./mixins/WidgetMixin"), require("./mixins/TimeoutMixin"), require("./mixins/PureRenderMixin"), require("./mixins/RtlParentContextMixin")],
6363

6464
propTypes: propTypes,
6565

@@ -196,9 +196,7 @@ var Calendar = React.createClass({
196196

197197
if (+this.props.tabIndex === -1) return;
198198

199-
clearTimeout(this.timer);
200-
201-
this.timer = setTimeout(function () {
199+
this.setTimeout("focus", function () {
202200
if (focused) _this.getDOMNode().focus();
203201

204202
if (focused !== _this.state.focused) {

lib/Combobox.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ var ComboBox = React.createClass({
5858

5959
displayName: "ComboBox",
6060

61-
mixins: [require("./mixins/WidgetMixin"), require("./mixins/TextSearchMixin"), require("./mixins/DataFilterMixin"), require("./mixins/DataHelpersMixin"), require("./mixins/PopupScrollToMixin"), require("./mixins/RtlParentContextMixin")],
61+
mixins: [require("./mixins/WidgetMixin"), require("./mixins/TimeoutMixin"), require("./mixins/DataFilterMixin"), require("./mixins/DataHelpersMixin"), require("./mixins/PopupScrollToMixin"), require("./mixins/RtlParentContextMixin")],
6262

6363
propTypes: propTypes,
6464

lib/DateTimePicker.js

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ var propTypes = {
6262
var DateTimePicker = React.createClass({
6363
displayName: "DateTimePicker",
6464

65-
mixins: [require("./mixins/WidgetMixin"), require("./mixins/PureRenderMixin"), require("./mixins/PopupScrollToMixin"), require("./mixins/RtlParentContextMixin")],
65+
mixins: [require("./mixins/WidgetMixin"), require("./mixins/TimeoutMixin"), require("./mixins/PureRenderMixin"), require("./mixins/PopupScrollToMixin"), require("./mixins/RtlParentContextMixin")],
6666

6767
propTypes: propTypes,
6868

@@ -257,9 +257,7 @@ var DateTimePicker = React.createClass({
257257
var _this = this;
258258
var input = this.refs.valueInput;
259259

260-
clearTimeout(this.timer);
261-
262-
this.timer = setTimeout(function () {
260+
this.setTimeout("focus", function () {
263261
if (focused) input.getDOMNode().focus();else _this.close();
264262

265263
if (focused !== _this.state.focused) {

lib/DropdownList.js

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ var DropdownList = React.createClass({
5252

5353
displayName: "DropdownList",
5454

55-
mixins: [require("./mixins/WidgetMixin"), require("./mixins/PureRenderMixin"), require("./mixins/DataHelpersMixin"), require("./mixins/PopupScrollToMixin"), require("./mixins/RtlParentContextMixin")],
55+
mixins: [require("./mixins/WidgetMixin"), require("./mixins/TimeoutMixin"), require("./mixins/PureRenderMixin"), require("./mixins/DataHelpersMixin"), require("./mixins/PopupScrollToMixin"), require("./mixins/RtlParentContextMixin")],
5656

5757
propTypes: propTypes,
5858

@@ -76,7 +76,7 @@ var DropdownList = React.createClass({
7676
};
7777
},
7878

79-
componentDidMount: function () {
79+
componentDidMount: function componentDidMount() {
8080
validateList(this.refs.list);
8181
},
8282

@@ -166,17 +166,17 @@ var DropdownList = React.createClass({
166166
},
167167

168168
_focus: function (focused, e) {
169-
var self = this;
169+
var _this = this;
170+
170171

171-
clearTimeout(self.timer);
172-
self.timer = setTimeout(function () {
173-
if (focused) self.getDOMNode().focus();else self.close();
172+
this.setTimeout("focus", function () {
173+
if (focused) _this.getDOMNode().focus();else _this.close();
174174

175-
if (focused !== self.state.focused) {
176-
self.notify(focused ? "onFocus" : "onBlur", e);
177-
self.setState({ focused: focused });
175+
if (focused !== _this.state.focused) {
176+
_this.notify(focused ? "onFocus" : "onBlur", e);
177+
_this.setState({ focused: focused });
178178
}
179-
}, 0);
179+
});
180180
},
181181

182182
_onSelect: function (data) {
@@ -242,10 +242,9 @@ var DropdownList = React.createClass({
242242
var _this = this;
243243
var word = ((this._searchTerm || "") + character).toLowerCase();
244244

245-
clearTimeout(this._timer);
246245
this._searchTerm = word;
247246

248-
this._timer = setTimeout(function () {
247+
this.setTimeout("search", function () {
249248
var list = _this.refs.list,
250249
key = _this.props.open ? "focusedItem" : "selectedItem",
251250
item = list.next(_this.state[key], word);

lib/Multiselect.js

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ var Multiselect = React.createClass({
6060

6161
displayName: "Multiselect",
6262

63-
mixins: [require("./mixins/WidgetMixin"), require("./mixins/DataFilterMixin"), require("./mixins/DataHelpersMixin"), require("./mixins/PopupScrollToMixin"), require("./mixins/RtlParentContextMixin")],
63+
mixins: [require("./mixins/WidgetMixin"), require("./mixins/TimeoutMixin"), require("./mixins/DataFilterMixin"), require("./mixins/DataHelpersMixin"), require("./mixins/PopupScrollToMixin"), require("./mixins/RtlParentContextMixin")],
6464

6565
propTypes: propTypes,
6666

@@ -237,9 +237,7 @@ var Multiselect = React.createClass({
237237
var _this = this;
238238
if (this.props.disabled === true) return;
239239

240-
clearTimeout(this.timer);
241-
242-
this.timer = setTimeout(function () {
240+
this.setTimeout("focus", function () {
243241
if (focused) {
244242
_this.refs.input.focus();
245243
_this.open();

lib/NumberPicker.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ var NumberPicker = React.createClass({
4444

4545
displayName: "NumberPicker",
4646

47-
mixins: [require("./mixins/WidgetMixin"), require("./mixins/PureRenderMixin"), require("./mixins/RtlParentContextMixin")],
47+
mixins: [require("./mixins/WidgetMixin"), require("./mixins/TimeoutMixin"), require("./mixins/PureRenderMixin"), require("./mixins/RtlParentContextMixin")],
4848

4949
propTypes: propTypes,
5050

@@ -187,9 +187,9 @@ var NumberPicker = React.createClass({
187187

188188
_focus: function (focused, e) {
189189
var _this = this;
190-
clearTimeout(this.timer);
191190

192-
this.timer = setTimeout(function () {
191+
192+
this.setTimeout("focus", function () {
193193
var el = _this.refs.input.getDOMNode();
194194

195195
focused && el.focus();

lib/SelectList.js

Lines changed: 28 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ var React = require("react"),
1111
PlainList = require("./List"),
1212
GroupableList = require("./ListGroupable"),
1313
validateList = require("./util/validateListInterface"),
14+
filter = require("./util/filter"),
1415
scrollTo = require("./util/dom/scroll");
1516

1617
var propTypes = {
@@ -30,6 +31,7 @@ var propTypes = {
3031

3132
busy: React.PropTypes.bool,
3233

34+
filter: React.PropTypes.string,
3335
delay: React.PropTypes.number,
3436

3537
disabled: React.PropTypes.oneOfType([React.PropTypes.array, React.PropTypes.bool, React.PropTypes.oneOf(["disabled"])]),
@@ -47,7 +49,7 @@ var SelectList = React.createClass({
4749

4850
propTypes: propTypes,
4951

50-
mixins: [require("./mixins/WidgetMixin"), require("./mixins/TextSearchMixin"), require("./mixins/DataHelpersMixin"), require("./mixins/RtlParentContextMixin")],
52+
mixins: [require("./mixins/WidgetMixin"), require("./mixins/TimeoutMixin"), require("./mixins/DataHelpersMixin"), require("./mixins/RtlParentContextMixin")],
5153

5254
getDefaultProps: function getDefaultProps() {
5355
return {
@@ -124,12 +126,13 @@ var SelectList = React.createClass({
124126
"rw-rtl": this.isRtl(),
125127
"rw-loading-mask": this.props.busy
126128
}) }),
127-
React.createElement(List, { ref: "list",
129+
React.createElement(List, _extends({ ref: "list"
130+
}, _.pick(this.props, Object.keys(List.type.propTypes)), {
128131
data: this._data(),
129132
focused: focusedItem,
130133
optID: optID,
131134
itemComponent: this.state.ListItem,
132-
onMove: this._scrollTo })
135+
onMove: this._scrollTo }))
133136
);
134137
},
135138

@@ -172,7 +175,7 @@ var SelectList = React.createClass({
172175
} else if (this.props.multiple && e.keyCode === 65 && e.ctrlKey) {
173176
e.preventDefault();
174177
this._selectAll();
175-
} else this.search(String.fromCharCode(e.keyCode), this._locate);
178+
} else this.search(String.fromCharCode(e.keyCode));
176179

177180
function change(item, cked) {
178181
if (item) {
@@ -238,16 +241,15 @@ var SelectList = React.createClass({
238241
},
239242

240243
_focus: function (focused, e) {
241-
var self = this;
244+
var _this = this;
242245

243-
clearTimeout(self.timer);
244246

245-
self.timer = setTimeout(function () {
246-
if (focused) self.getDOMNode().focus();
247-
if (focused !== self.state.focused) {
248-
self.setState({ focused: focused });
247+
this.setTimeout("focus", function () {
248+
if (focused) _this.getDOMNode().focus();
249+
if (focused !== _this.state.focused) {
250+
_this.setState({ focused: focused });
249251
}
250-
}, 0);
252+
});
251253
},
252254

253255
isDisabledItem: function (item) {
@@ -258,10 +260,20 @@ var SelectList = React.createClass({
258260
return this.isReadOnly() || this._contains(item, this.props.readOnly);
259261
},
260262

261-
_locate: function (word) {
262-
var idx = this.findNextWordIndex(word, this.state.focusedIndex);
263+
search: function (character) {
264+
var _this = this;
265+
var word = ((this._searchTerm || "") + character).toLowerCase(),
266+
list = this.refs.list;
267+
268+
this._searchTerm = word;
263269

264-
if (idx !== -1) this.setFocusedIndex(idx);
270+
this.setTimeout("search", function () {
271+
var focusedItem = list.next(_this.state.focusedItem, word);
272+
273+
_this._searchTerm = "";
274+
275+
if (focusedItem) _this.setState({ focusedItem: focusedItem });
276+
}, this.props.delay);
265277
},
266278

267279
_data: function () {
@@ -278,6 +290,7 @@ var SelectList = React.createClass({
278290

279291
});
280292

293+
281294
function getListItem(parent) {
282295
return React.createClass({
283296

@@ -323,5 +336,4 @@ module.exports = SelectList;
323336

324337
module.exports = controlledInput.createControlledClass(SelectList, { value: "onChange" });
325338

326-
module.exports.BaseSelectList = SelectList;
327-
//!focused && self.next(0)
339+
module.exports.BaseSelectList = SelectList;

lib/SlideTransition.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,9 @@ module.exports = React.createClass({
8989
_wrapChild: function (child, ref) {
9090
return React.createElement(
9191
SlideChildGroup,
92-
{ key: child.key, ref: ref, direction: this.props.direction, duration: this.props.duration },
92+
{ key: child.key, ref: ref,
93+
direction: this.props.direction,
94+
duration: this.props.duration },
9395
child
9496
);
9597
},

lib/TimeList.js

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,9 @@ module.exports = React.createClass({
2222
preserveDate: React.PropTypes.bool,
2323
culture: React.PropTypes.string },
2424

25-
getDefaultProps: function () {
25+
mixins: [require("./mixins/TimeoutMixin")],
26+
27+
getDefaultProps: function getDefaultProps() {
2628
return {
2729
step: 30,
2830
format: "t",
@@ -32,7 +34,7 @@ module.exports = React.createClass({
3234
};
3335
},
3436

35-
getInitialState: function () {
37+
getInitialState: function getInitialState() {
3638
var data = this._dates(this.props),
3739
focusedItem = this._closestDate(data, this.props.value);
3840

@@ -42,7 +44,7 @@ module.exports = React.createClass({
4244
};
4345
},
4446

45-
componentWillReceiveProps: function (nextProps) {
47+
componentWillReceiveProps: function componentWillReceiveProps(nextProps) {
4648
var data = this._dates(nextProps),
4749
focusedItem = this._closestDate(data, this.props.value);
4850

@@ -158,10 +160,9 @@ module.exports = React.createClass({
158160
var _this = this;
159161
var word = ((this._searchTerm || "") + character).toLowerCase();
160162

161-
clearTimeout(this._timer);
162163
this._searchTerm = word;
163164

164-
this._timer = setTimeout(function () {
165+
this.setTimeout("search", function () {
165166
var list = _this.refs.list,
166167
item = list.next(_this.state.focusedItem, word);
167168

lib/mixins/DataFilterMixin.js

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
"use strict";
22
var React = require("react"),
33
filters = require("../util/filter"),
4-
helper = require("./DataHelpersMixin"),
5-
_ = require("../util/_");
4+
helper = require("./DataHelpersMixin");
65

76
var filterTypes = Object.keys(filters).filter(function (i) {
87
return i !== "filter";

lib/mixins/DataHelpersMixin.js

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,16 @@ module.exports = {
2121
},
2222

2323
_dataIndexOf: function (data, item) {
24-
return _.findIndex(data, this._valueMatcher.bind(null, item), this);
24+
var _this = this;
25+
var idx = -1,
26+
len = data.length,
27+
finder = function (datum) {
28+
return _this._valueMatcher(item, datum);
29+
};
30+
31+
while (++idx < len) if (finder(data[idx])) return idx;
32+
33+
return -1;
2534
},
2635

2736
_valueMatcher: function (a, b) {

0 commit comments

Comments
 (0)