Skip to content

Commit aa36198

Browse files
committed
0.0.4 build
1 parent ac2ad82 commit aa36198

File tree

5 files changed

+53
-24
lines changed

5 files changed

+53
-24
lines changed

lib/SLDSPicklistBase/index.js

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,8 @@ module.exports = _react2['default'].createClass({
4242
options: [],
4343
initialFocus: false,
4444
modal: false,
45+
className: '',
46+
listClassName: '',
4547
onClick: function onClick() {
4648
console.log('onClick should be defined');
4749
},
@@ -158,6 +160,7 @@ module.exports = _react2['default'].createClass({
158160
ref: 'list',
159161
options: this.props.options,
160162
label: this.props.label,
163+
className: this.props.listClassName,
161164
highlightedIndex: this.state.highlightedIndex,
162165
selectedIndex: this.state.selectedIndex,
163166
onSelect: this.handleSelect,
@@ -185,7 +188,8 @@ module.exports = _react2['default'].createClass({
185188
{
186189
className: 'slds-dropdown slds-dropdown--left slds-dropdown--small slds-dropdown--menu',
187190
targetElement: this.refs.date,
188-
onClose: this.handleClose },
191+
closeOnTabKey: true,
192+
onClose: this.handleCancel },
189193
this.getPopoverContent()
190194
) : null;
191195
},
@@ -218,7 +222,7 @@ module.exports = _react2['default'].createClass({
218222
{
219223
id: this.props.id,
220224
ref: 'button',
221-
className: 'slds-button slds-button--neutral slds-picklist__label',
225+
className: 'slds-button slds-button--neutral slds-picklist__label ' + this.props.className,
222226
'aria-haspopup': 'true',
223227
onBlur: this.handleBlur,
224228
onFocus: this.handleFocus,

lib/SLDSPicklistBase/list.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,10 @@ module.exports = _react2["default"].createClass({
3232
getDefaultProps: function getDefaultProps() {
3333
return {
3434
options: [],
35-
label: "Menu",
35+
label: 'Menu',
3636
selectedIndex: -1,
3737
highlightedIndex: 0,
38+
className: '',
3839
onListBlur: function onListBlur() {
3940
console.log("onListBlur should be overwritten");
4041
},
@@ -156,7 +157,7 @@ module.exports = _react2["default"].createClass({
156157
"div",
157158
{
158159
ref: "scroll",
159-
className: "slds-wrap slds-grow slds-scrollable--y",
160+
className: 'slds-wrap slds-grow slds-scrollable--y ' + this.props.className,
160161
style: {
161162
maxHeight: 260
162163
}

lib/SLDSPopover.js

Lines changed: 35 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -9,38 +9,45 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
99

1010
'use strict';
1111

12-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
12+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
1313

14-
var _react = require("react");
14+
var _react = require('react');
1515

1616
var _react2 = _interopRequireDefault(_react);
1717

18-
var _tetherDrop = require("tether-drop");
18+
var _tetherDrop = require('tether-drop');
1919

2020
var _tetherDrop2 = _interopRequireDefault(_tetherDrop);
2121

22+
var _utils = require('./utils');
23+
2224
//import { TransitionSpring, Spring } from 'react-motion';
2325

24-
module.exports = _react2["default"].createClass({
26+
module.exports = _react2['default'].createClass({
2527

2628
displayName: 'SLDSPopover',
2729

28-
mixins: [require("react-onclickoutside")],
30+
mixins: [require('react-onclickoutside')],
31+
32+
handleClickOutside: function handleClickOutside() {
33+
this.handleClose();
34+
},
2935

30-
handleClickOutside: function handleClickOutside(e) {
36+
handleClose: function handleClose() {
3137
if (this.props.onClose) {
3238
this.props.onClose();
3339
}
3440
},
3541

3642
propTypes: {
37-
targetAttachment: _react2["default"].PropTypes.string
43+
targetAttachment: _react2['default'].PropTypes.string
3844
},
3945

4046
getDefaultProps: function getDefaultProps() {
4147
return {
42-
targetAttachment: "bottom left",
43-
className: "slds-dropdown"
48+
targetAttachment: 'bottom left',
49+
className: 'slds-dropdown',
50+
closeOnTabKey: false
4451
};
4552
},
4653

@@ -71,12 +78,21 @@ module.exports = _react2["default"].createClass({
7178
}
7279
},
7380

81+
handleKeyDown: function handleKeyDown(event) {
82+
if (event.keyCode === _utils.KEYS.TAB) {
83+
if (this.props.closeOnTabKey) {
84+
_utils.EventUtil.trap(event);
85+
this.handleClose();
86+
}
87+
}
88+
},
89+
7490
popoverComp: function popoverComp() {
7591
if (!this.state.isOpen) {
76-
return _react2["default"].createElement("span", null);
92+
return _react2['default'].createElement('span', null);
7793
}
78-
return _react2["default"].createElement(
79-
"div",
94+
return _react2['default'].createElement(
95+
'div',
8096
{ className: 'SLDSPopover ' + this.props.className,
8197
style: {
8298
transform: 'none',
@@ -85,7 +101,9 @@ module.exports = _react2["default"].createClass({
85101
marginBottom: '0.35rem',
86102
float: 'inherit',
87103
position: 'inherit'
88-
} },
104+
},
105+
onKeyDown: this.handleKeyDown
106+
},
89107
this.props.children
90108
);
91109
},
@@ -112,7 +130,7 @@ module.exports = _react2["default"].createClass({
112130

113131
renderPopover: function renderPopover() {
114132

115-
_react2["default"].render(this.popoverComp(), this.popoverElement);
133+
_react2['default'].render(this.popoverComp(), this.popoverElement);
116134

117135
if (this.popoverElement && this.popoverElement.parentNode && this.popoverElement.parentNode.parentNode && this.popoverElement.parentNode.parentNode.className && this.popoverElement.parentNode.parentNode.className.indexOf('drop ') > -1) {
118136
this.popoverElement.parentNode.parentNode.style.zIndex = 10001;
@@ -123,15 +141,15 @@ module.exports = _react2["default"].createClass({
123141
this.drop.position();
124142
}
125143
} else if (window && document) {
126-
this.drop = new _tetherDrop2["default"](this.dropOptions());
144+
this.drop = new _tetherDrop2['default'](this.dropOptions());
127145
this.drop.once('open', this.handleOpen);
128146
}
129147
},
130148

131149
componentWillUnmount: function componentWillUnmount() {
132150

133151
this.drop.destroy();
134-
_react2["default"].unmountComponentAtNode(this.popoverElement);
152+
_react2['default'].unmountComponentAtNode(this.popoverElement);
135153
if (this.popoverElement.parentNode) {
136154
this.popoverElement.parentNode.removeChild(this.popoverElement);
137155
}
@@ -141,7 +159,7 @@ module.exports = _react2["default"].createClass({
141159
},
142160

143161
render: function render() {
144-
return _react2["default"].createElement("span", null);
162+
return _react2['default'].createElement('span', null);
145163
}
146164

147165
});

lib/utils/EventUtil.js

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
1111

1212
'use strict';
1313

14-
module.exports = {
14+
var EventUtil = {
1515

1616
trapEvent: function trapEvent(event) {
1717
event.preventDefault();
@@ -20,6 +20,12 @@ module.exports = {
2020
event.nativeEvent.preventDefault();
2121
event.nativeEvent.stopPropagation();
2222
}
23+
},
24+
25+
trap: function trap(event) {
26+
return EventUtil.trapEvent(event);
2327
}
2428

25-
};
29+
};
30+
31+
module.exports = EventUtil;

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "design-system-react",
3-
"version": "0.0.2",
3+
"version": "0.0.4",
44
"description": "Salesforce Lightning Design System React components",
55
"scripts": {
66
"start": "node server.js",

0 commit comments

Comments
 (0)