Skip to content

Commit 1ac723b

Browse files
committed
rebuild
1 parent 39af64d commit 1ac723b

17 files changed

Lines changed: 572 additions & 429 deletions

dist/css/react-widgets.css

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/react-widgets.js

Lines changed: 366 additions & 281 deletions
Large diffs are not rendered by default.

lib/Combobox.js

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -91,8 +91,8 @@ var propTypes = {
9191
onSelect: _react2['default'].PropTypes.func,
9292

9393
autoFocus: _react2['default'].PropTypes.bool,
94-
disabled: _utilPropTypes2['default'].disabled,
95-
readOnly: _utilPropTypes2['default'].readOnly,
94+
disabled: _utilPropTypes2['default'].disabled.acceptsArray,
95+
readOnly: _utilPropTypes2['default'].readOnly.acceptsArray,
9696

9797
suggest: _utilPropTypes2['default'].filter,
9898
filter: _utilPropTypes2['default'].filter,
@@ -219,8 +219,6 @@ var ComboBox = _react2['default'].createClass(babelHelpers.createDecoratedObject
219219
var placeholder = _props2.placeholder;
220220
var value = _props2.value;
221221
var open = _props2.open;
222-
var disabled = _props2.disabled;
223-
var readOnly = _props2.readOnly;
224222
var List = _props2.listComponent;
225223

226224
List = List || groupBy && _ListGroupable2['default'] || _List2['default'];
@@ -235,6 +233,8 @@ var ComboBox = _react2['default'].createClass(babelHelpers.createDecoratedObject
235233
var focused = _state.focused;
236234

237235
var items = this._data(),
236+
disabled = _utilInteraction.isDisabled(this.props),
237+
readOnly = _utilInteraction.isReadOnly(this.props),
238238
valueItem = _utilDataHelpers.dataItem(data, value, valueField),
239239
// take value from the raw data
240240
inputID = _utilWidgetHelpers.instanceId(this, '_input'),
@@ -305,8 +305,7 @@ var ComboBox = _react2['default'].createClass(babelHelpers.createDecoratedObject
305305
babelHelpers._extends({}, popupProps, {
306306
onOpening: function () {
307307
return _this.refs.list.forceUpdate();
308-
},
309-
onRequestClose: this.close
308+
}
310309
}),
311310
_react2['default'].createElement(
312311
'div',

lib/DateTimePicker.js

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -242,6 +242,7 @@ var DateTimePicker = _react2['default'].createClass(babelHelpers.createDecorated
242242
ref: 'element',
243243
tabIndex: '-1',
244244
onKeyDown: this._keyDown,
245+
onKeyPress: this._keyPress,
245246
onFocus: this._focus.bind(null, true),
246247
onBlur: this._focus.bind(null, false),
247248
className: _classnames2['default'](className, 'rw-datetimepicker', 'rw-widget', (_cx = {
@@ -315,7 +316,6 @@ var DateTimePicker = _react2['default'].createClass(babelHelpers.createDecorated
315316
{
316317
dropUp: dropUp,
317318
open: timeIsOpen,
318-
onRequestClose: this.close,
319319
duration: duration,
320320
onOpening: function () {
321321
return _this.refs.timePopup.forceUpdate();
@@ -349,8 +349,7 @@ var DateTimePicker = _react2['default'].createClass(babelHelpers.createDecorated
349349
className: 'rw-calendar-popup',
350350
dropUp: dropUp,
351351
open: calendarIsOpen,
352-
duration: duration,
353-
onRequestClose: this.close
352+
duration: duration
354353
},
355354
shouldRenderList && _react2['default'].createElement(Calendar, babelHelpers._extends({}, calProps, {
356355
ref: 'calPopup',
@@ -411,6 +410,16 @@ var DateTimePicker = _react2['default'].createClass(babelHelpers.createDecorated
411410
if (open === popups.TIME) this.refs.timePopup._keyDown(e);
412411
}
413412
}
413+
}, {
414+
key: '_keyPress',
415+
decorators: [_utilInteraction.widgetEditable],
416+
value: function _keyPress(e) {
417+
_utilWidgetHelpers.notify(this.props.onKeyPress, [e]);
418+
419+
if (e.defaultPrevented) return;
420+
421+
if (this.props.open === popups.TIME) this.refs.timePopup._keyPress(e);
422+
}
414423
}, {
415424
key: '_focus',
416425
decorators: [_utilInteraction.widgetEnabled],

lib/DropdownList.js

Lines changed: 29 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -93,9 +93,8 @@ var propTypes = {
9393
dropUp: _react2['default'].PropTypes.bool,
9494
duration: _react2['default'].PropTypes.number, //popup
9595

96-
disabled: _utilPropTypes2['default'].disabled,
97-
98-
readOnly: _utilPropTypes2['default'].readOnly,
96+
disabled: _utilPropTypes2['default'].disabled.acceptsArray,
97+
readOnly: _utilPropTypes2['default'].readOnly.acceptsArray,
9998

10099
messages: _react2['default'].PropTypes.shape({
101100
open: _utilPropTypes2['default'].message,
@@ -197,8 +196,6 @@ var DropdownList = _react2['default'].createClass(babelHelpers.createDecoratedOb
197196
var placeholder = _props2.placeholder;
198197
var value = _props2.value;
199198
var open = _props2.open;
200-
var disabled = _props2.disabled;
201-
var readOnly = _props2.readOnly;
202199
var ValueComponent = _props2.valueComponent;
203200
var List = _props2.listComponent;
204201

@@ -214,6 +211,8 @@ var DropdownList = _react2['default'].createClass(babelHelpers.createDecoratedOb
214211
var focused = _state.focused;
215212

216213
var items = this._data(),
214+
disabled = _utilInteraction.isDisabled(this.props),
215+
readOnly = _utilInteraction.isReadOnly(this.props),
217216
valueItem = _utilDataHelpers.dataItem(data, value, valueField),
218217
// take value from the raw data
219218
listID = _utilWidgetHelpers.instanceId(this, '__listbox');
@@ -233,11 +232,11 @@ var DropdownList = _react2['default'].createClass(babelHelpers.createDecoratedOb
233232
'aria-owns': listID,
234233
'aria-busy': !!busy,
235234
'aria-live': !open && 'polite',
236-
//aria-activedescendant={activeID}
237235
'aria-autocomplete': 'list',
238236
'aria-disabled': disabled,
239237
'aria-readonly': readOnly,
240238
onKeyDown: this._keyDown,
239+
onKeyPress: this._keyPress,
241240
onClick: this._click,
242241
onFocus: this._focus.bind(null, true),
243242
onBlur: this._focus.bind(null, false),
@@ -280,8 +279,7 @@ var DropdownList = _react2['default'].createClass(babelHelpers.createDecoratedOb
280279
},
281280
onOpening: function () {
282281
return _this.refs.list.forceUpdate();
283-
},
284-
onRequestClose: this.close
282+
}
285283
}),
286284
_react2['default'].createElement(
287285
'div',
@@ -398,19 +396,31 @@ var DropdownList = _react2['default'].createClass(babelHelpers.createDecoratedOb
398396
} else if (key === 'ArrowUp') {
399397
if (alt) closeWithFocus();else if (isOpen) this.setState({ focusedItem: list.prev(focusedItem) });else change(list.prev(selectedItem));
400398
e.preventDefault();
401-
} else if (!(this.props.filter && isOpen)) this.search(String.fromCharCode(e.keyCode), function (item) {
402-
isOpen ? _this4.setState({ focusedItem: item }) : change(item);
403-
});
399+
}
404400

405401
function change(item, fromList) {
406402
if (!item) return;
407403
fromList ? self._onSelect(item) : self.change(item);
408404
}
409405
}
406+
}, {
407+
key: '_keyPress',
408+
decorators: [_utilInteraction.widgetEditable],
409+
value: function _keyPress(e) {
410+
var _this5 = this;
411+
412+
_utilWidgetHelpers.notify(this.props.onKeyPress, [e]);
413+
414+
if (e.defaultPrevented) return;
415+
416+
if (!(this.props.filter && this.props.open)) this.search(String.fromCharCode(e.which), function (item) {
417+
_this5.isMounted() && _this5.props.open ? _this5.setState({ focusedItem: item }) : item && _this5.change(item);
418+
});
419+
}
410420
}, {
411421
key: 'change',
412422
value: function change(data) {
413-
if (!_util_2['default'].isShallowEqual(data, this.props.value)) {
423+
if (!_utilDataHelpers.valueMatcher(data, this.props.value, this.props.valueField)) {
414424
_utilWidgetHelpers.notify(this.props.onChange, data);
415425
_utilWidgetHelpers.notify(this.props.onSearch, '');
416426
this.close();
@@ -431,18 +441,20 @@ var DropdownList = _react2['default'].createClass(babelHelpers.createDecoratedOb
431441
}, {
432442
key: 'search',
433443
value: function search(character, cb) {
434-
var _this5 = this;
444+
var _this6 = this;
435445

436446
var word = ((this._searchTerm || '') + character).toLowerCase();
437447

448+
if (!character) return;
449+
438450
this._searchTerm = word;
439451

440452
this.setTimeout('search', function () {
441-
var list = _this5.refs.list,
442-
key = _this5.props.open ? 'focusedItem' : 'selectedItem',
443-
item = list.next(_this5.state[key], word);
453+
var list = _this6.refs.list,
454+
key = _this6.props.open ? 'focusedItem' : 'selectedItem',
455+
item = list.next(_this6.state[key], word);
444456

445-
_this5._searchTerm = '';
457+
_this6._searchTerm = '';
446458
if (item) cb(item);
447459
}, this.props.delay);
448460
}

lib/List.js

Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,8 @@ var _utilDataHelpers = require('./util/dataHelpers');
3232

3333
var _utilWidgetHelpers = require('./util/widgetHelpers');
3434

35+
var _utilInteraction = require('./util/interaction');
36+
3537
var optionId = function optionId(id, idx) {
3638
return id + '__option__' + idx;
3739
};
@@ -50,12 +52,13 @@ exports['default'] = _react2['default'].createClass({
5052
optionComponent: _utilPropTypes2['default'].elementType,
5153
itemComponent: _utilPropTypes2['default'].elementType,
5254

53-
selectedIndex: _react2['default'].PropTypes.number,
54-
focusedIndex: _react2['default'].PropTypes.number,
55-
valueField: _react2['default'].PropTypes.string,
55+
selected: _react2['default'].PropTypes.any,
56+
focused: _react2['default'].PropTypes.any,
57+
valueField: _utilPropTypes2['default'].accessor,
5658
textField: _utilPropTypes2['default'].accessor,
5759

58-
optionID: _react2['default'].PropTypes.func,
60+
disabled: _utilPropTypes2['default'].disabled.acceptsArray,
61+
readOnly: _utilPropTypes2['default'].readOnly.acceptsArray,
5962

6063
messages: _react2['default'].PropTypes.shape({
6164
emptyList: _utilPropTypes2['default'].message
@@ -64,7 +67,6 @@ exports['default'] = _react2['default'].createClass({
6467

6568
getDefaultProps: function getDefaultProps() {
6669
return {
67-
optID: '',
6870
onSelect: function onSelect() {},
6971
optionComponent: _ListOption2['default'],
7072
ariaActiveDescendantKey: 'list',
@@ -104,8 +106,7 @@ exports['default'] = _react2['default'].createClass({
104106
var onSelect = _props2.onSelect;
105107
var ItemComponent = _props2.itemComponent;
106108
var Option = _props2.optionComponent;
107-
var optionID = _props2.optionID;
108-
var props = babelHelpers.objectWithoutProperties(_props2, ['className', 'role', 'data', 'textField', 'valueField', 'focused', 'selected', 'messages', 'onSelect', 'itemComponent', 'optionComponent', 'optionID']);
109+
var props = babelHelpers.objectWithoutProperties(_props2, ['className', 'role', 'data', 'textField', 'valueField', 'focused', 'selected', 'messages', 'onSelect', 'itemComponent', 'optionComponent']);
109110
var id = _utilWidgetHelpers.instanceId(this);
110111
var items;
111112

@@ -114,22 +115,28 @@ exports['default'] = _react2['default'].createClass({
114115
{ className: 'rw-list-empty' },
115116
_util_2['default'].result(messages.emptyList, this.props)
116117
) : data.map(function (item, idx) {
117-
var currentId = optionId(id, idx);
118+
var currentId = optionId(id, idx),
119+
isDisabled = _utilInteraction.isDisabledItem(item, props),
120+
isReadOnly = _utilInteraction.isReadOnlyItem(item, props);
118121

119122
return _react2['default'].createElement(
120123
Option,
121124
{
122125
key: 'item_' + idx,
123126
id: currentId,
124127
dataItem: item,
128+
disabled: isDisabled,
129+
readOnly: isReadOnly,
125130
focused: focused === item,
126131
selected: selected === item,
127-
onClick: onSelect.bind(null, item)
132+
onClick: isDisabled || isReadOnly ? undefined : onSelect.bind(null, item)
128133
},
129134
ItemComponent ? _react2['default'].createElement(ItemComponent, {
130135
item: item,
131136
value: _utilDataHelpers.dataValue(item, valueField),
132-
text: _utilDataHelpers.dataText(item, textField)
137+
text: _utilDataHelpers.dataText(item, textField),
138+
disabled: isDisabled,
139+
readOnly: isReadOnly
133140
}) : _utilDataHelpers.dataText(item, textField)
134141
);
135142
});

lib/ListGroupable.js

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,8 @@ var _utilDataHelpers = require('./util/dataHelpers');
3636

3737
var _utilWidgetHelpers = require('./util/widgetHelpers');
3838

39+
var _utilInteraction = require('./util/interaction');
40+
3941
var optionId = function optionId(id, idx) {
4042
return id + '__option__' + idx;
4143
};
@@ -58,10 +60,11 @@ exports['default'] = _react2['default'].createClass({
5860
selected: _react2['default'].PropTypes.any,
5961
focused: _react2['default'].PropTypes.any,
6062

61-
valueField: _react2['default'].PropTypes.string,
63+
valueField: _utilPropTypes2['default'].accessor,
6264
textField: _utilPropTypes2['default'].accessor,
6365

64-
optID: _react2['default'].PropTypes.string,
66+
disabled: _utilPropTypes2['default'].disabled.acceptsArray,
67+
readOnly: _utilPropTypes2['default'].readOnly.acceptsArray,
6568

6669
groupBy: _utilPropTypes2['default'].accessor,
6770

@@ -72,7 +75,6 @@ exports['default'] = _react2['default'].createClass({
7275

7376
getDefaultProps: function getDefaultProps() {
7477
return {
75-
optID: '',
7678
onSelect: function onSelect() {},
7779
data: [],
7880
optionComponent: _ListOption2['default'],
@@ -187,7 +189,9 @@ exports['default'] = _react2['default'].createClass({
187189
var ItemComponent = _props2.itemComponent;
188190
var Option = _props2.optionComponent;
189191

190-
var currentID = optionId(_utilWidgetHelpers.instanceId(this), idx);
192+
var currentID = optionId(_utilWidgetHelpers.instanceId(this), idx),
193+
isDisabled = _utilInteraction.isDisabledItem(item, this.props),
194+
isReadOnly = _utilInteraction.isReadOnlyItem(item, this.props);
191195

192196
if (focused === item) this._currentActiveID = currentID;
193197

@@ -199,12 +203,16 @@ exports['default'] = _react2['default'].createClass({
199203
dataItem: item,
200204
focused: focused === item,
201205
selected: selected === item,
202-
onClick: onSelect.bind(null, item)
206+
disabled: isDisabled,
207+
readOnly: isReadOnly,
208+
onClick: isDisabled || isReadOnly ? undefined : onSelect.bind(null, item)
203209
},
204210
ItemComponent ? _react2['default'].createElement(ItemComponent, {
205211
item: item,
206212
value: _utilDataHelpers.dataValue(item, valueField),
207-
text: _utilDataHelpers.dataText(item, textField)
213+
text: _utilDataHelpers.dataText(item, textField),
214+
disabled: isDisabled,
215+
readOnly: isReadOnly
208216
}) : _utilDataHelpers.dataText(item, textField)
209217
);
210218
},

lib/ListOption.js

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,9 @@ var ListOption = _react2['default'].createClass({
1818
propTypes: {
1919
dataItem: _react2['default'].PropTypes.any,
2020
focused: _react2['default'].PropTypes.bool,
21-
selected: _react2['default'].PropTypes.bool
21+
selected: _react2['default'].PropTypes.bool,
22+
disabled: _react2['default'].PropTypes.bool,
23+
readOnly: _react2['default'].PropTypes.bool
2224
},
2325

2426
render: function render() {
@@ -27,18 +29,22 @@ var ListOption = _react2['default'].createClass({
2729
var children = _props.children;
2830
var focused = _props.focused;
2931
var selected = _props.selected;
30-
var props = babelHelpers.objectWithoutProperties(_props, ['className', 'children', 'focused', 'selected']);
32+
var disabled = _props.disabled;
33+
var readOnly = _props.readOnly;
34+
var props = babelHelpers.objectWithoutProperties(_props, ['className', 'children', 'focused', 'selected', 'disabled', 'readOnly']);
3135

3236
var classes = {
3337
'rw-state-focus': focused,
34-
'rw-state-selected': selected
38+
'rw-state-selected': selected,
39+
'rw-state-disabled': disabled,
40+
'rw-state-readonly': readOnly
3541
};
3642

3743
return _react2['default'].createElement(
3844
'li',
3945
babelHelpers._extends({
4046
role: 'option',
41-
tabIndex: '-1',
47+
tabIndex: !(disabled || readOnly) ? '-1' : undefined,
4248
'aria-selected': !!selected,
4349
className: _classnames2['default']('rw-list-option', className, classes)
4450
}, props),

lib/Multiselect.js

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ var _utilWidgetHelpers = require('./util/widgetHelpers');
5757
var compatCreate = function compatCreate(props, msgs) {
5858
return typeof msgs.createNew === 'function' ? msgs.createNew(props) : [_react2['default'].createElement(
5959
'strong',
60-
null,
60+
{ key: 'dumb' },
6161
'"' + props.searchTerm + '"'
6262
), ' ' + msgs.createNew];
6363
};
@@ -329,8 +329,7 @@ var Multiselect = _react2['default'].createClass(babelHelpers.createDecoratedObj
329329
babelHelpers._extends({}, popupProps, {
330330
onOpening: function () {
331331
return _this.refs.list.forceUpdate();
332-
},
333-
onRequestClose: this.close
332+
}
334333
}),
335334
_react2['default'].createElement(
336335
'div',

0 commit comments

Comments
 (0)