@hipay/hipay-material-ui 2.1.0-RC1 → 2.2.0-RC1
Sign up to get free protection for your applications and to get access to all the features.
- package/CHANGELOG.md +154 -0
- package/HiAlertModal/HiAlertModal.js +32 -7
- package/HiAppBar/HiAppBar.js +3 -3
- package/HiBreadcrumb/HiBreadcrumb.js +1 -1
- package/HiBreadcrumb/HiStepConnector.js +3 -3
- package/HiButton/HiButton.js +64 -25
- package/HiCell/CellText.js +3 -3
- package/HiCheckbox/HiCheckbox.js +3 -3
- package/HiChip/HiChipSwitch.js +5 -5
- package/HiColoredLabel/HiColoredLabel.js +2 -1
- package/HiDatePicker/HiDatePicker.js +1 -5
- package/HiDatePicker/Overlays/MonthPickerOverlay.js +3 -3
- package/HiDatePicker/Overlays/TimePickerOverlay.js +4 -4
- package/HiDatePicker/Overlays/YearPickerOverlay.js +3 -3
- package/HiDotsStepper/HiDotsStepper.js +4 -4
- package/HiExpansionPanel/HiExpansionPanel.js +19 -10
- package/HiForm/HiAddressField.js +7 -7
- package/HiForm/HiEmailField.js +3 -3
- package/HiForm/HiFormControl.js +6 -6
- package/HiForm/HiInput.js +11 -11
- package/HiForm/HiPasswordField.js +3 -3
- package/HiForm/HiSearchField.js +5 -5
- package/HiForm/HiTextField.js +5 -5
- package/HiForm/index.js +17 -1
- package/HiIcon/HiIcon.js +9 -1
- package/HiMap/HiMap.js +6 -6
- package/HiMap/HiMapExpand.js +4 -4
- package/HiNotice/HiKPI.js +11 -11
- package/HiNotice/HiKPINotice.js +1 -1
- package/HiSelect/HiDynamicSelect.js +7 -7
- package/HiSelect/HiNestedSelect.js +12 -12
- package/HiSelect/HiNestedSelectContent.js +9 -9
- package/HiSelect/HiSelect.js +56 -58
- package/HiSelect/HiSelectContent.js +13 -13
- package/HiSelect/HiSelectInput.js +7 -7
- package/HiSelect/HiSuggestSelect.js +62 -54
- package/HiSelectableList/HiSelectableList.js +28 -9
- package/HiSelectableList/HiSelectableListItem.js +6 -5
- package/HiTable/HiTable.js +3 -3
- package/HiTable/HiTableRow.js +3 -3
- package/es/HiAlertModal/HiAlertModal.js +26 -4
- package/es/HiBreadcrumb/HiBreadcrumb.js +1 -1
- package/es/HiButton/HiButton.js +57 -41
- package/es/HiColoredLabel/HiColoredLabel.js +2 -1
- package/es/HiDatePicker/HiDatePicker.js +1 -3
- package/es/HiExpansionPanel/HiExpansionPanel.js +19 -10
- package/es/HiForm/index.js +3 -1
- package/es/HiIcon/HiIcon.js +9 -1
- package/es/HiNotice/HiKPI.js +8 -8
- package/es/HiNotice/HiKPINotice.js +1 -1
- package/es/HiSelect/HiSelect.js +30 -27
- package/es/HiSelect/HiSuggestSelect.js +61 -52
- package/es/HiSelectableList/HiSelectableList.js +26 -8
- package/es/HiSelectableList/HiSelectableListItem.js +2 -1
- package/index.es.js +1 -1
- package/index.js +1 -1
- package/package.json +1 -2
- package/HiDatePicker/Caption.spec.js +0 -88
- package/HiDatePicker/ListPicker.spec.js +0 -67
- package/HiDatePicker/NavBar.spec.js +0 -55
- package/HiDatePicker/Overlays/MonthPickerOverlay.spec.js +0 -74
- package/HiDatePicker/Overlays/Overlay.spec.js +0 -34
- package/HiDatePicker/Overlays/TimePickerOverlay.spec.js +0 -71
- package/HiDatePicker/Overlays/YearPickerOverlay.spec.js +0 -127
- package/es/HiDatePicker/Caption.spec.js +0 -68
- package/es/HiDatePicker/ListPicker.spec.js +0 -50
- package/es/HiDatePicker/NavBar.spec.js +0 -39
- package/es/HiDatePicker/Overlays/MonthPickerOverlay.spec.js +0 -53
- package/es/HiDatePicker/Overlays/Overlay.spec.js +0 -25
- package/es/HiDatePicker/Overlays/TimePickerOverlay.spec.js +0 -53
- package/es/HiDatePicker/Overlays/YearPickerOverlay.spec.js +0 -92
@@ -41,7 +41,8 @@ class HiSuggestSelect extends React.PureComponent {
|
|
41
41
|
static getDerivedStateFromProps(props, state) {
|
42
42
|
if (JSON.stringify(props.options) !== JSON.stringify(state.options)) {
|
43
43
|
return {
|
44
|
-
options: props.options
|
44
|
+
options: props.options,
|
45
|
+
suggestionFocusIndex: -1
|
45
46
|
};
|
46
47
|
}
|
47
48
|
|
@@ -51,6 +52,14 @@ class HiSuggestSelect extends React.PureComponent {
|
|
51
52
|
constructor(props) {
|
52
53
|
super(props);
|
53
54
|
|
55
|
+
this.getInputElement = el => {
|
56
|
+
this.textInput = el;
|
57
|
+
|
58
|
+
if (this.props.inputRef) {
|
59
|
+
this.props.inputRef(this.textInput);
|
60
|
+
}
|
61
|
+
};
|
62
|
+
|
54
63
|
this.handleSelect = (event, value) => {
|
55
64
|
document.body.style.overflow = 'auto';
|
56
65
|
this.props.onSelect(event, value);
|
@@ -88,67 +97,65 @@ class HiSuggestSelect extends React.PureComponent {
|
|
88
97
|
};
|
89
98
|
|
90
99
|
this.handleKeyDownSearch = event => {
|
91
|
-
if (event.key === 'ArrowDown'
|
92
|
-
|
100
|
+
if (event.key === 'ArrowDown') {
|
101
|
+
event.preventDefault();
|
93
102
|
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
103
|
+
if (this.state.suggestionFocusIndex < this.props.options.length - 1) {
|
104
|
+
this.setState(prevState => ({
|
105
|
+
suggestionFocusIndex: prevState.suggestionFocusIndex + 1
|
106
|
+
}));
|
107
|
+
}
|
108
|
+
} else if (event.key === 'ArrowUp') {
|
109
|
+
event.preventDefault();
|
98
110
|
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
}
|
103
|
-
}
|
111
|
+
if (this.state.suggestionFocusIndex >= 0) {
|
112
|
+
this.setState(prevState => ({
|
113
|
+
suggestionFocusIndex: prevState.suggestionFocusIndex - 1
|
114
|
+
}));
|
115
|
+
}
|
116
|
+
} else if (event.key === 'Enter' && this.state.suggestionFocusIndex >= 0) {
|
117
|
+
event.preventDefault(); // Suggestion focused
|
118
|
+
|
119
|
+
this.handleSelect(event, this.state.options[this.state.suggestionFocusIndex]);
|
104
120
|
} else if (event.key === 'Escape') {
|
105
121
|
this.setState({
|
106
|
-
options: []
|
122
|
+
options: [],
|
123
|
+
suggestionFocusIndex: -1
|
107
124
|
});
|
108
125
|
}
|
109
126
|
};
|
110
127
|
|
111
|
-
this.
|
112
|
-
focused: false,
|
113
|
-
options: props.options
|
114
|
-
};
|
115
|
-
this.handleSelect = this.handleSelect.bind(this);
|
116
|
-
this.handleBlur = this.handleBlur.bind(this);
|
117
|
-
this.handleFocus = this.handleFocus.bind(this);
|
118
|
-
this.getInputElement = this.getInputElement.bind(this);
|
119
|
-
}
|
120
|
-
|
121
|
-
getInputElement(el) {
|
122
|
-
this.textInput = el;
|
123
|
-
|
124
|
-
if (this.props.inputRef) {
|
125
|
-
this.props.inputRef(this.textInput);
|
126
|
-
}
|
127
|
-
}
|
128
|
-
|
129
|
-
handleFocus(event) {
|
130
|
-
this.setState({
|
131
|
-
focused: true
|
132
|
-
});
|
133
|
-
|
134
|
-
if (this.props.onFocusInput) {
|
135
|
-
this.props.onFocusInput(event);
|
136
|
-
}
|
137
|
-
}
|
138
|
-
|
139
|
-
handleBlur(event) {
|
140
|
-
// Si on click sur un élément de HiInput, on garde le focus
|
141
|
-
// Par exemple sur l'icone reset
|
142
|
-
if (!event.relatedTarget || !this.overlay || !this.overlay.contains(event.relatedTarget)) {
|
128
|
+
this.handleFocus = event => {
|
143
129
|
this.setState({
|
144
|
-
|
145
|
-
focused: false
|
130
|
+
focused: true
|
146
131
|
});
|
147
132
|
|
148
|
-
if (this.props.
|
149
|
-
this.props.
|
133
|
+
if (this.props.onFocusInput) {
|
134
|
+
this.props.onFocusInput(event);
|
150
135
|
}
|
151
|
-
}
|
136
|
+
};
|
137
|
+
|
138
|
+
this.handleBlur = event => {
|
139
|
+
// Si on click sur un élément de HiInput, on garde le focus
|
140
|
+
// Par exemple sur l'icone reset
|
141
|
+
if (!event.relatedTarget || !this.overlay || !this.overlay.contains(event.relatedTarget)) {
|
142
|
+
this.setState({
|
143
|
+
options: [],
|
144
|
+
focused: false,
|
145
|
+
suggestionFocusIndex: -1
|
146
|
+
});
|
147
|
+
|
148
|
+
if (this.props.onBlurInput) {
|
149
|
+
this.props.onBlurInput(event);
|
150
|
+
}
|
151
|
+
}
|
152
|
+
};
|
153
|
+
|
154
|
+
this.state = {
|
155
|
+
focused: false,
|
156
|
+
options: props.options,
|
157
|
+
suggestionFocusIndex: -1
|
158
|
+
};
|
152
159
|
}
|
153
160
|
|
154
161
|
render() {
|
@@ -168,7 +175,8 @@ class HiSuggestSelect extends React.PureComponent {
|
|
168
175
|
|
169
176
|
const {
|
170
177
|
focused,
|
171
|
-
options
|
178
|
+
options,
|
179
|
+
suggestionFocusIndex
|
172
180
|
} = this.state;
|
173
181
|
let optionsShown = options; // If loading
|
174
182
|
|
@@ -230,7 +238,8 @@ class HiSuggestSelect extends React.PureComponent {
|
|
230
238
|
hideCheckbox: true,
|
231
239
|
onSelect: this.handleSelect,
|
232
240
|
translations: translations,
|
233
|
-
onKeyDown: this.handleKeyDown
|
241
|
+
onKeyDown: this.handleKeyDown,
|
242
|
+
suggestionFocusIndex: suggestionFocusIndex
|
234
243
|
})))));
|
235
244
|
}
|
236
245
|
|
@@ -8,9 +8,14 @@ import HiSelectableListItem from './HiSelectableListItem';
|
|
8
8
|
import { getNextItemSelectable, foldAccents } from '../utils/helpers';
|
9
9
|
import keycode from 'keycode';
|
10
10
|
import LazyLoad, { forceCheck } from 'react-lazyload';
|
11
|
-
|
11
|
+
import classNames from 'classnames';
|
12
|
+
export const styles = theme => ({
|
12
13
|
root: {
|
13
14
|
padding: 0
|
15
|
+
},
|
16
|
+
suggestionFocus: {
|
17
|
+
backgroundColor: theme.palette.action.hover,
|
18
|
+
fontWeight: theme.typography.fontWeightMedium
|
14
19
|
}
|
15
20
|
});
|
16
21
|
/**
|
@@ -44,7 +49,7 @@ class HiSelectableList extends React.PureComponent {
|
|
44
49
|
}
|
45
50
|
};
|
46
51
|
|
47
|
-
this.buildRecursiveListItem = (item, level = 0) => {
|
52
|
+
this.buildRecursiveListItem = (item, index, level = 0) => {
|
48
53
|
const _this$props = this.props,
|
49
54
|
{
|
50
55
|
checkedIcon,
|
@@ -57,9 +62,11 @@ class HiSelectableList extends React.PureComponent {
|
|
57
62
|
selectedItemIdList,
|
58
63
|
sort,
|
59
64
|
onKeyDown,
|
60
|
-
onKeyUp
|
65
|
+
onKeyUp,
|
66
|
+
suggestionFocusIndex,
|
67
|
+
classes
|
61
68
|
} = _this$props,
|
62
|
-
others = _objectWithoutProperties(_this$props, ["checkedIcon", "disabled", "disabledItemIdList", "hideCheckbox", "hoverIcon", "icon", "lazy", "selectedItemIdList", "sort", "onKeyDown", "onKeyUp"]);
|
69
|
+
others = _objectWithoutProperties(_this$props, ["checkedIcon", "disabled", "disabledItemIdList", "hideCheckbox", "hoverIcon", "icon", "lazy", "selectedItemIdList", "sort", "onKeyDown", "onKeyUp", "suggestionFocusIndex", "classes"]);
|
63
70
|
|
64
71
|
if (sort && item.children) {
|
65
72
|
item.children.sort(this.compareItem);
|
@@ -95,8 +102,13 @@ class HiSelectableList extends React.PureComponent {
|
|
95
102
|
onKeyUp: onKeyUp,
|
96
103
|
selected: selectedItemIdList.includes(item.id) // item props override upper props (disabled, hideCheckbox, icon, level...)
|
97
104
|
,
|
98
|
-
item: item
|
99
|
-
|
105
|
+
item: item,
|
106
|
+
classes: {
|
107
|
+
listItem: classNames({
|
108
|
+
[classes.suggestionFocus]: index === suggestionFocusIndex
|
109
|
+
})
|
110
|
+
}
|
111
|
+
}, item)), item.children && item.children.length > 0 && item.children.filter(subItem => !(subItem.displayed === false)).map(subItem => this.buildRecursiveListItem(subItem, index, level + 1)));
|
100
112
|
|
101
113
|
if (lazy) {
|
102
114
|
return React.createElement(LazyLoad, {
|
@@ -188,7 +200,7 @@ class HiSelectableList extends React.PureComponent {
|
|
188
200
|
this.el = el;
|
189
201
|
}
|
190
202
|
}, itemList.filter(item => !(item.displayed === false)) // don't remove if undefined
|
191
|
-
.map(item => this.buildRecursiveListItem(item)));
|
203
|
+
.map((item, index) => this.buildRecursiveListItem(item, index)));
|
192
204
|
}
|
193
205
|
|
194
206
|
}
|
@@ -277,6 +289,11 @@ HiSelectableList.propTypes = process.env.NODE_ENV !== "production" ? {
|
|
277
289
|
*/
|
278
290
|
selectedItemIdList: PropTypes.array,
|
279
291
|
|
292
|
+
/**
|
293
|
+
* Index de l'item "focus"
|
294
|
+
*/
|
295
|
+
suggestionFocusIndex: PropTypes.number,
|
296
|
+
|
280
297
|
/**
|
281
298
|
* Tri des éléments selon leur label
|
282
299
|
*/
|
@@ -294,5 +311,6 @@ HiSelectableList.propTypes = process.env.NODE_ENV !== "production" ? {
|
|
294
311
|
} : {};
|
295
312
|
export default withStyles(styles, {
|
296
313
|
hiComponent: true,
|
297
|
-
name: 'HmuiHiSelectableList'
|
314
|
+
name: 'HmuiHiSelectableList',
|
315
|
+
index: 51
|
298
316
|
})(HiSelectableList);
|
@@ -179,6 +179,7 @@ class HiSelectableListItem extends React.PureComponent {
|
|
179
179
|
|
180
180
|
if (key === 'space' || key === 'enter') {
|
181
181
|
event.preventDefault();
|
182
|
+
event.stopPropagation();
|
182
183
|
|
183
184
|
if (item) {
|
184
185
|
this.props.onSelect(null, item);
|
@@ -330,7 +331,7 @@ class HiSelectableListItem extends React.PureComponent {
|
|
330
331
|
indeterminateIcon: indeterminateIcon
|
331
332
|
}), type === 'image' && img && React.createElement("img", {
|
332
333
|
src: img,
|
333
|
-
alt:
|
334
|
+
alt: '',
|
334
335
|
onError: e => {
|
335
336
|
if (fallbackImage) {
|
336
337
|
e.target.src = `${fallbackImage}`;
|
package/index.es.js
CHANGED
package/index.js
CHANGED
package/package.json
CHANGED
@@ -1,88 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
4
|
-
|
5
|
-
var _react = _interopRequireDefault(require("react"));
|
6
|
-
|
7
|
-
var _chai = require("chai");
|
8
|
-
|
9
|
-
var _sinon = require("sinon");
|
10
|
-
|
11
|
-
var _moment = _interopRequireDefault(require("react-day-picker/moment"));
|
12
|
-
|
13
|
-
var _testUtils = require("../test-utils");
|
14
|
-
|
15
|
-
var _Caption = _interopRequireDefault(require("./Caption"));
|
16
|
-
|
17
|
-
describe('<Caption />', function () {
|
18
|
-
var shallow;
|
19
|
-
var mount;
|
20
|
-
var classes;
|
21
|
-
var wrapper;
|
22
|
-
var date = new Date();
|
23
|
-
|
24
|
-
var _ref = _react.default.createElement(_Caption.default, {
|
25
|
-
date: date,
|
26
|
-
localeUtils: _moment.default
|
27
|
-
});
|
28
|
-
|
29
|
-
before(function () {
|
30
|
-
shallow = (0, _testUtils.createShallow)({
|
31
|
-
untilSelector: 'Badge'
|
32
|
-
});
|
33
|
-
mount = (0, _testUtils.createMount)();
|
34
|
-
classes = (0, _testUtils.getClasses)(_ref);
|
35
|
-
});
|
36
|
-
after(function () {
|
37
|
-
mount.cleanUp();
|
38
|
-
});
|
39
|
-
|
40
|
-
var _ref2 = _react.default.createElement(_Caption.default, {
|
41
|
-
date: date,
|
42
|
-
localeUtils: _moment.default
|
43
|
-
});
|
44
|
-
|
45
|
-
describe('text with leftIcon', function () {
|
46
|
-
before(function () {
|
47
|
-
wrapper = shallow(_ref2);
|
48
|
-
});
|
49
|
-
it('should render a div containing two spans', function () {
|
50
|
-
_chai.assert.strictEqual(wrapper.name(), 'div');
|
51
|
-
|
52
|
-
_chai.assert.strictEqual(wrapper.childAt(0).is('span'), true, 'should be a span');
|
53
|
-
|
54
|
-
_chai.assert.strictEqual(wrapper.childAt(2).is('span'), true, 'should be a span');
|
55
|
-
});
|
56
|
-
it('should merge user classes & spread custom props to the root node', function () {
|
57
|
-
_chai.assert.strictEqual(wrapper.hasClass(classes.caption), true);
|
58
|
-
});
|
59
|
-
});
|
60
|
-
describe('mount', function () {
|
61
|
-
it('should call onDelete when clicking', function () {
|
62
|
-
var handleClickMonth = (0, _sinon.spy)();
|
63
|
-
var handleClickYear = (0, _sinon.spy)();
|
64
|
-
wrapper = mount(_react.default.createElement(_Caption.default, {
|
65
|
-
date: date,
|
66
|
-
localeUtils: _moment.default,
|
67
|
-
onMonthClick: handleClickMonth,
|
68
|
-
onYearClick: handleClickYear
|
69
|
-
}));
|
70
|
-
|
71
|
-
_chai.assert.strictEqual(wrapper.find('span').length, 2, 'should have 2 spans');
|
72
|
-
|
73
|
-
wrapper.find('span').at(0).simulate('click');
|
74
|
-
|
75
|
-
_chai.assert.strictEqual(handleClickMonth.callCount, 1, 'should have been called once handleClickMonth');
|
76
|
-
|
77
|
-
_chai.assert.strictEqual(handleClickYear.callCount, 0, 'should not have been called handleClickYear');
|
78
|
-
|
79
|
-
wrapper.find('span').at(1).simulate('click');
|
80
|
-
|
81
|
-
_chai.assert.strictEqual(handleClickMonth.callCount, 1, 'should not have been called twice handleClickMonth');
|
82
|
-
|
83
|
-
_chai.assert.strictEqual(handleClickYear.callCount, 1, 'should have been called once handleClickYear');
|
84
|
-
|
85
|
-
wrapper.unmount();
|
86
|
-
});
|
87
|
-
});
|
88
|
-
});
|
@@ -1,67 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
4
|
-
|
5
|
-
var _react = _interopRequireDefault(require("react"));
|
6
|
-
|
7
|
-
var _chai = require("chai");
|
8
|
-
|
9
|
-
var _sinon = require("sinon");
|
10
|
-
|
11
|
-
var _Menu = require("@material-ui/core/Menu");
|
12
|
-
|
13
|
-
var _index = require("../test-utils/index");
|
14
|
-
|
15
|
-
var _ListPicker = _interopRequireDefault(require("./ListPicker"));
|
16
|
-
|
17
|
-
describe('<ListPicker />', function () {
|
18
|
-
var shallow;
|
19
|
-
var mount;
|
20
|
-
var itemList;
|
21
|
-
before(function () {
|
22
|
-
shallow = (0, _index.createShallow)({
|
23
|
-
dive: true
|
24
|
-
});
|
25
|
-
mount = (0, _index.createMount)();
|
26
|
-
itemList = [1, 2, 3, 4];
|
27
|
-
});
|
28
|
-
after(function () {
|
29
|
-
mount.cleanUp();
|
30
|
-
});
|
31
|
-
describe('shallow', function () {
|
32
|
-
it('renders a Scrollable MenuList', function () {
|
33
|
-
var handlerClick = (0, _sinon.spy)();
|
34
|
-
var wrapper = shallow(_react.default.createElement(_ListPicker.default, {
|
35
|
-
itemList: itemList,
|
36
|
-
onItemClick: handlerClick,
|
37
|
-
selectedItem: 2,
|
38
|
-
initAtMiddleScroll: true
|
39
|
-
}));
|
40
|
-
|
41
|
-
_chai.assert.strictEqual(wrapper.name(), 'Scrollbars', 'should render a Scrollbars container');
|
42
|
-
|
43
|
-
_chai.assert.strictEqual(wrapper.dive().find(_Menu.MenuList).length, 1, 'should include a MenuList');
|
44
|
-
|
45
|
-
_chai.assert.strictEqual(wrapper.dive().find(_Menu.MenuItem).length, 4, 'should include 4 MenuItem'); // Click on [4] item
|
46
|
-
|
47
|
-
|
48
|
-
wrapper.dive().find(_Menu.MenuItem).at(3).props().onClick();
|
49
|
-
|
50
|
-
_chai.assert.strictEqual(handlerClick.calledOnce, true, 'should call onChange callback once');
|
51
|
-
|
52
|
-
_chai.assert.strictEqual(handlerClick.calledWith(4), true, 'should call onChange callback with selected item');
|
53
|
-
});
|
54
|
-
});
|
55
|
-
describe('mount', function () {
|
56
|
-
it('should mount', function () {
|
57
|
-
var wrapper = mount(_react.default.createElement(_ListPicker.default, {
|
58
|
-
itemList: itemList,
|
59
|
-
onItemClick: function onItemClick() {},
|
60
|
-
selectedItem: 2,
|
61
|
-
initAtMiddleScroll: true
|
62
|
-
}));
|
63
|
-
|
64
|
-
_chai.assert.strictEqual(wrapper.name(), 'WithStyles(ListPicker)');
|
65
|
-
});
|
66
|
-
});
|
67
|
-
});
|
@@ -1,55 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
4
|
-
|
5
|
-
var _react = _interopRequireDefault(require("react"));
|
6
|
-
|
7
|
-
var _chai = require("chai");
|
8
|
-
|
9
|
-
var _sinon = require("sinon");
|
10
|
-
|
11
|
-
var _moment = _interopRequireDefault(require("react-day-picker/moment"));
|
12
|
-
|
13
|
-
var _IconButton = _interopRequireDefault(require("@material-ui/core/IconButton"));
|
14
|
-
|
15
|
-
var _index = require("../test-utils/index");
|
16
|
-
|
17
|
-
var _NavBar = _interopRequireDefault(require("./NavBar"));
|
18
|
-
|
19
|
-
describe('<NavBar />', function () {
|
20
|
-
var shallow;
|
21
|
-
before(function () {
|
22
|
-
shallow = (0, _index.createShallow)({
|
23
|
-
dive: true
|
24
|
-
});
|
25
|
-
});
|
26
|
-
it('renders a Scrollable MenuList', function () {
|
27
|
-
var handlerNextClick = (0, _sinon.spy)();
|
28
|
-
var handlerPreviousClick = (0, _sinon.spy)();
|
29
|
-
var handlerClockClick = (0, _sinon.spy)();
|
30
|
-
var nextMonth = new Date(2018, 3, 1);
|
31
|
-
var prevMonth = new Date(2018, 1, 1);
|
32
|
-
var wrapper = shallow(_react.default.createElement(_NavBar.default, {
|
33
|
-
nextMonth: nextMonth,
|
34
|
-
previousMonth: prevMonth,
|
35
|
-
onNextClick: handlerNextClick,
|
36
|
-
onPreviousClick: handlerPreviousClick,
|
37
|
-
onClockClick: handlerClockClick,
|
38
|
-
showClockButton: true,
|
39
|
-
localeUtils: _moment.default
|
40
|
-
}));
|
41
|
-
|
42
|
-
_chai.assert.strictEqual(wrapper.find(_IconButton.default).length, 3, 'should include 3 IconButtons'); // Click on [4] item
|
43
|
-
|
44
|
-
|
45
|
-
wrapper.find(_IconButton.default).at(0).props().onClick();
|
46
|
-
wrapper.find(_IconButton.default).at(1).props().onClick();
|
47
|
-
wrapper.find(_IconButton.default).at(2).props().onClick();
|
48
|
-
|
49
|
-
_chai.assert.strictEqual(handlerPreviousClick.calledOnce, true, 'should call onPreviousClick callback once');
|
50
|
-
|
51
|
-
_chai.assert.strictEqual(handlerNextClick.calledOnce, true, 'should call onNextClick callback once');
|
52
|
-
|
53
|
-
_chai.assert.strictEqual(handlerClockClick.calledOnce, true, 'should call onClockClick callback once');
|
54
|
-
});
|
55
|
-
});
|
@@ -1,74 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
4
|
-
|
5
|
-
var _react = _interopRequireDefault(require("react"));
|
6
|
-
|
7
|
-
var _chai = require("chai");
|
8
|
-
|
9
|
-
var _sinon = require("sinon");
|
10
|
-
|
11
|
-
var _moment = _interopRequireDefault(require("react-day-picker/moment"));
|
12
|
-
|
13
|
-
var _index = require("../../test-utils/index");
|
14
|
-
|
15
|
-
var _MonthPickerOverlay = _interopRequireDefault(require("./MonthPickerOverlay"));
|
16
|
-
|
17
|
-
var _ListPicker = _interopRequireDefault(require("../ListPicker"));
|
18
|
-
|
19
|
-
/* eslint-disable */
|
20
|
-
var _ref = _react.default.createElement("span", null, "children");
|
21
|
-
|
22
|
-
var _ref2 = _react.default.createElement("span", null, "children");
|
23
|
-
|
24
|
-
describe('<MonthPickerOverlay />', function () {
|
25
|
-
var shallow;
|
26
|
-
before(function () {
|
27
|
-
shallow = (0, _index.createShallow)({
|
28
|
-
dive: true
|
29
|
-
});
|
30
|
-
});
|
31
|
-
it('renders a functional month ListPicker', function () {
|
32
|
-
var handlerChange = (0, _sinon.spy)();
|
33
|
-
var aprilLabel = 'April';
|
34
|
-
var januaryDate = new Date(1992, 0, 9);
|
35
|
-
var aprilDate = new Date(1992, 3, 9);
|
36
|
-
var wrapper = shallow(_react.default.createElement(_MonthPickerOverlay.default, {
|
37
|
-
value: januaryDate,
|
38
|
-
onChange: handlerChange,
|
39
|
-
localeUtils: _moment.default
|
40
|
-
}, _ref));
|
41
|
-
|
42
|
-
_chai.assert.strictEqual(wrapper.name(), 'CustomOverlayLayout', 'should render a CustomOverlayLayout');
|
43
|
-
|
44
|
-
_chai.assert.strictEqual(wrapper.dive().find(_ListPicker.default).length, 1, 'should include a ListPicker');
|
45
|
-
|
46
|
-
wrapper.dive().find(_ListPicker.default).props().onItemClick(aprilLabel);
|
47
|
-
|
48
|
-
_chai.assert.strictEqual(handlerChange.calledOnce, true, 'should call onChange callback once');
|
49
|
-
|
50
|
-
_chai.assert.strictEqual(handlerChange.calledWith(aprilDate), true, 'should call onChange callback with updated month');
|
51
|
-
});
|
52
|
-
it('check months', function () {
|
53
|
-
var handlerChange = (0, _sinon.spy)();
|
54
|
-
var januaryDate = new Date(1992, 0, 9);
|
55
|
-
var localeUtils = {
|
56
|
-
getMonths: function getMonths() {
|
57
|
-
return ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December', 'Other'];
|
58
|
-
}
|
59
|
-
};
|
60
|
-
var wrapper = shallow(_react.default.createElement(_MonthPickerOverlay.default, {
|
61
|
-
value: januaryDate,
|
62
|
-
onChange: handlerChange,
|
63
|
-
localeUtils: localeUtils
|
64
|
-
}, _ref2));
|
65
|
-
|
66
|
-
_chai.assert.strictEqual(wrapper.name(), 'CustomOverlayLayout', 'should render a CustomOverlayLayout');
|
67
|
-
|
68
|
-
_chai.assert.strictEqual(wrapper.dive().find(_ListPicker.default).length, 1, 'should include a ListPicker');
|
69
|
-
|
70
|
-
wrapper.dive().find(_ListPicker.default).props().onItemClick('Other');
|
71
|
-
|
72
|
-
_chai.assert.strictEqual(handlerChange.callCount, 0, 'should not call onChange with month index >= 12');
|
73
|
-
});
|
74
|
-
});
|
@@ -1,34 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
4
|
-
|
5
|
-
var _react = _interopRequireDefault(require("react"));
|
6
|
-
|
7
|
-
var _chai = require("chai");
|
8
|
-
|
9
|
-
var _index = require("../../test-utils/index");
|
10
|
-
|
11
|
-
var _Overlay = _interopRequireDefault(require("./Overlay"));
|
12
|
-
|
13
|
-
/* eslint-disable */
|
14
|
-
var _ref = _react.default.createElement(_Overlay.default, null);
|
15
|
-
|
16
|
-
var _ref2 = _react.default.createElement(_Overlay.default, null, _react.default.createElement("span", null, "children"));
|
17
|
-
|
18
|
-
describe('<Overlay />', function () {
|
19
|
-
var shallow;
|
20
|
-
var classes;
|
21
|
-
before(function () {
|
22
|
-
shallow = (0, _index.createShallow)({
|
23
|
-
dive: true
|
24
|
-
});
|
25
|
-
classes = (0, _index.getClasses)(_ref);
|
26
|
-
});
|
27
|
-
it('renders a div containing a DayPickerInput', function () {
|
28
|
-
var wrapper = shallow(_ref2);
|
29
|
-
|
30
|
-
_chai.assert.strictEqual(wrapper.dive().name(), 'Paper', 'should render a Paper');
|
31
|
-
|
32
|
-
_chai.assert.strictEqual(wrapper.dive().hasClass(classes.paper), true, 'should render a Paper with paper class');
|
33
|
-
});
|
34
|
-
});
|
@@ -1,71 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
4
|
-
|
5
|
-
var _react = _interopRequireDefault(require("react"));
|
6
|
-
|
7
|
-
var _chai = require("chai");
|
8
|
-
|
9
|
-
var _sinon = require("sinon");
|
10
|
-
|
11
|
-
var _index = require("../../test-utils/index");
|
12
|
-
|
13
|
-
var _TimePickerOverlay = _interopRequireDefault(require("./TimePickerOverlay"));
|
14
|
-
|
15
|
-
var _ListPicker = _interopRequireDefault(require("../ListPicker"));
|
16
|
-
|
17
|
-
/* eslint-disable */
|
18
|
-
var _ref = _react.default.createElement("span", null, "children");
|
19
|
-
|
20
|
-
var _ref2 = _react.default.createElement("span", null, "children");
|
21
|
-
|
22
|
-
describe('<TimePickerOverlay />', function () {
|
23
|
-
var shallow;
|
24
|
-
before(function () {
|
25
|
-
shallow = (0, _index.createShallow)({
|
26
|
-
dive: true
|
27
|
-
});
|
28
|
-
});
|
29
|
-
it('renders a functional hour & minute ListPicker', function () {
|
30
|
-
var handlerChange = (0, _sinon.spy)();
|
31
|
-
var handlerCalendarClick = (0, _sinon.spy)();
|
32
|
-
var hour = 16;
|
33
|
-
var minute = 17;
|
34
|
-
var date = new Date(1992, 3, 9, 0, 0);
|
35
|
-
var dateHour = new Date(1992, 3, 9, hour, 0);
|
36
|
-
var dateMinute = new Date(1992, 3, 9, 0, minute);
|
37
|
-
var wrapper = shallow(_react.default.createElement(_TimePickerOverlay.default, {
|
38
|
-
value: date,
|
39
|
-
onChange: handlerChange,
|
40
|
-
onCalendarClick: handlerCalendarClick
|
41
|
-
}, _ref));
|
42
|
-
|
43
|
-
_chai.assert.strictEqual(wrapper.dive().name(), 'CustomOverlayLayout', 'should render a CustomOverlayLayout');
|
44
|
-
|
45
|
-
_chai.assert.strictEqual(wrapper.dive().find(_ListPicker.default).length, 2, 'should include 2 ListPicker');
|
46
|
-
|
47
|
-
wrapper.dive().find(_ListPicker.default).first().props().onItemClick(hour);
|
48
|
-
wrapper.dive().find(_ListPicker.default).at(1).props().onItemClick(minute);
|
49
|
-
|
50
|
-
_chai.assert.strictEqual(handlerChange.calledTwice, true, 'should call onChange callback twice');
|
51
|
-
|
52
|
-
_chai.assert.strictEqual(handlerChange.calledWith(dateHour), true, 'should call onChange callback with updated hours');
|
53
|
-
|
54
|
-
_chai.assert.strictEqual(handlerChange.calledWith(dateMinute), true, 'should call onChange callback with updated minutes');
|
55
|
-
});
|
56
|
-
it('renders a functional hour & minute ListPicker without callbacks', function () {
|
57
|
-
var hour = 16;
|
58
|
-
var minute = 17;
|
59
|
-
var date = new Date(1992, 3, 9, 0, 0);
|
60
|
-
var wrapper = shallow(_react.default.createElement(_TimePickerOverlay.default, {
|
61
|
-
value: date
|
62
|
-
}, _ref2));
|
63
|
-
|
64
|
-
_chai.assert.strictEqual(wrapper.dive().name(), 'CustomOverlayLayout', 'should render a CustomOverlayLayout');
|
65
|
-
|
66
|
-
_chai.assert.strictEqual(wrapper.dive().find(_ListPicker.default).length, 2, 'should include 2 ListPicker');
|
67
|
-
|
68
|
-
wrapper.dive().find(_ListPicker.default).first().props().onItemClick(hour);
|
69
|
-
wrapper.dive().find(_ListPicker.default).at(1).props().onItemClick(minute);
|
70
|
-
});
|
71
|
-
});
|