@hipay/hipay-material-ui 2.0.0-beta.61 → 2.0.0-beta.62
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +66 -0
- package/HiDatePicker/HiDateRangeSelector.js +1 -1
- package/{HiSelectNew → HiSelect}/HiDynamicSelect.js +3 -3
- package/{HiSelectNew → HiSelect}/HiNestedSelect.js +9 -9
- package/{HiSelectNew → HiSelect}/HiNestedSelectContent.js +9 -9
- package/HiSelect/HiSelect.js +489 -607
- package/{HiSelectNew → HiSelect}/HiSelectContent.js +7 -7
- package/HiSelect/index.js +41 -3
- package/HiSelectableList/HiSelectableList.js +59 -3
- package/HiSelectableList/HiSelectableListItem.js +22 -10
- package/README.md +15 -0
- package/es/HiDatePicker/HiDateRangeSelector.js +1 -1
- package/es/{HiSelectNew → HiSelect}/HiNestedSelect.js +1 -1
- package/es/{HiSelectNew → HiSelect}/HiNestedSelectContent.js +1 -1
- package/es/HiSelect/HiSelect.js +441 -564
- package/es/{HiSelectNew → HiSelect}/HiSelectContent.js +1 -1
- package/es/HiSelect/index.js +4 -1
- package/es/HiSelectableList/HiSelectableList.js +56 -4
- package/es/HiSelectableList/HiSelectableListItem.js +18 -10
- package/index.es.js +1 -1
- package/index.js +1 -1
- package/package.json +3 -2
- package/umd/hipay-material-ui.development.js +41669 -39595
- package/umd/hipay-material-ui.production.min.js +2 -2
- package/HiSelect/SelectInput.js +0 -369
- package/HiSelectNew/HiSelect.js +0 -929
- package/HiSelectNew/HiSelectField.js +0 -146
- package/HiSelectNew/index.js +0 -69
- package/es/HiSelect/SelectInput.js +0 -321
- package/es/HiSelectNew/HiSelect.js +0 -852
- package/es/HiSelectNew/HiSelectField.js +0 -111
- package/es/HiSelectNew/index.js +0 -6
- /package/{HiSelectNew → HiSelect}/HiDynamicSelectField.js +0 -0
- /package/{HiSelectNew → HiSelect}/HiNestedSelectField.js +0 -0
- /package/{HiSelectNew → HiSelect}/HiSelectInput.js +0 -0
- /package/es/{HiSelectNew → HiSelect}/HiDynamicSelect.js +0 -0
- /package/es/{HiSelectNew → HiSelect}/HiDynamicSelectField.js +0 -0
- /package/es/{HiSelectNew → HiSelect}/HiNestedSelectField.js +0 -0
- /package/es/{HiSelectNew → HiSelect}/HiSelectInput.js +0 -0
|
@@ -37,7 +37,7 @@ export const styles = theme => ({
|
|
|
37
37
|
width: '100%'
|
|
38
38
|
})
|
|
39
39
|
});
|
|
40
|
-
export
|
|
40
|
+
export const filterValue = function (item, searchValue) {
|
|
41
41
|
return searchValue === '' || foldAccents(item.label.toString().toLowerCase()).search(foldAccents(searchValue.toLowerCase())) !== -1;
|
|
42
42
|
};
|
|
43
43
|
/**
|
package/es/HiSelect/index.js
CHANGED
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
export { default } from './HiSelect';
|
|
2
|
+
export { default as HiNestedSelect } from './HiNestedSelect';
|
|
2
3
|
export { default as HiSelectField } from './HiSelectField';
|
|
3
|
-
export { default as
|
|
4
|
+
export { default as HiSelectInput } from './HiSelectInput';
|
|
5
|
+
export { default as HiSelectContent } from './HiSelectContent';
|
|
6
|
+
export { default as HiNestedSelectContent, findFinalItemRecursively, getRecursiveFinalItemIdList } from './HiNestedSelectContent';
|
|
4
7
|
export { default as HiSuggestSelect } from './HiSuggestSelect';
|
|
5
8
|
export { default as HiSuggestSelectField } from './HiSuggestSelectField';
|
|
@@ -5,7 +5,8 @@ import PropTypes from 'prop-types';
|
|
|
5
5
|
import List from '@material-ui/core/List';
|
|
6
6
|
import withStyles from '../styles/withStyles';
|
|
7
7
|
import HiSelectableListItem from './HiSelectableListItem';
|
|
8
|
-
import { foldAccents } from '../utils/helpers';
|
|
8
|
+
import { getNextItemSelectable, foldAccents } from '../utils/helpers';
|
|
9
|
+
import keycode from 'keycode';
|
|
9
10
|
export const styles = () => ({
|
|
10
11
|
root: {
|
|
11
12
|
padding: 0
|
|
@@ -13,6 +14,8 @@ export const styles = () => ({
|
|
|
13
14
|
});
|
|
14
15
|
/**
|
|
15
16
|
* Construit une liste d'item sélectionnable (avec checkbox)
|
|
17
|
+
* - la navigation au clavier est gérée par l'event KeyDown
|
|
18
|
+
* - le premier focus est géré sur le DidMount
|
|
16
19
|
*/
|
|
17
20
|
|
|
18
21
|
class HiSelectableList extends React.PureComponent {
|
|
@@ -23,6 +26,23 @@ class HiSelectableList extends React.PureComponent {
|
|
|
23
26
|
this.props.onSelect(event, item);
|
|
24
27
|
};
|
|
25
28
|
|
|
29
|
+
this.handleKeyDown = event => {
|
|
30
|
+
let nextItem;
|
|
31
|
+
const key = keycode(event);
|
|
32
|
+
|
|
33
|
+
if (key === 'down') {
|
|
34
|
+
event.preventDefault();
|
|
35
|
+
nextItem = getNextItemSelectable(document.activeElement, 'down');
|
|
36
|
+
} else if (key === 'up') {
|
|
37
|
+
event.preventDefault();
|
|
38
|
+
nextItem = getNextItemSelectable(document.activeElement, 'up');
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
if (nextItem) {
|
|
42
|
+
nextItem.focus();
|
|
43
|
+
}
|
|
44
|
+
};
|
|
45
|
+
|
|
26
46
|
this.buildRecursiveListItem = (item, level = 0) => {
|
|
27
47
|
const _this$props = this.props,
|
|
28
48
|
{
|
|
@@ -56,7 +76,8 @@ class HiSelectableList extends React.PureComponent {
|
|
|
56
76
|
onKeyDown: onKeyDown,
|
|
57
77
|
onKeyUp: onKeyUp,
|
|
58
78
|
selected: selectedItemIdList.includes(item.id) // item props override upper props (disabled, hideCheckbox, icon, level...)
|
|
59
|
-
|
|
79
|
+
,
|
|
80
|
+
item: item
|
|
60
81
|
}, item)), item.children && item.children.length > 0 && item.children.filter(subItem => !(subItem.displayed === false)).map(subItem => this.buildRecursiveListItem(subItem, level + 1)));
|
|
61
82
|
};
|
|
62
83
|
|
|
@@ -83,6 +104,23 @@ class HiSelectableList extends React.PureComponent {
|
|
|
83
104
|
};
|
|
84
105
|
}
|
|
85
106
|
|
|
107
|
+
componentDidMount() {
|
|
108
|
+
if (this.props.overlay && this.props.overlay.getElementsByTagName('li')[0]) {
|
|
109
|
+
let item = this.props.overlay.getElementsByTagName('li')[0];
|
|
110
|
+
const value = typeof this.props.value === 'object' ? this.props.value[0] : this.props.value;
|
|
111
|
+
|
|
112
|
+
if (value) {
|
|
113
|
+
if (typeof this.props.value[0] === 'string') {
|
|
114
|
+
item = this.props.overlay.getElementsByTagName('li')[value];
|
|
115
|
+
} else if (typeof this.props.value[0] === 'number') {
|
|
116
|
+
item = this.props.overlay.getElementsByTagName('li')[value - 1];
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
item.focus();
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
|
|
86
124
|
render() {
|
|
87
125
|
const {
|
|
88
126
|
classes,
|
|
@@ -95,7 +133,11 @@ class HiSelectableList extends React.PureComponent {
|
|
|
95
133
|
}
|
|
96
134
|
|
|
97
135
|
return React.createElement(List, {
|
|
98
|
-
className: classes.root
|
|
136
|
+
className: classes.root,
|
|
137
|
+
onKeyDown: this.handleKeyDown,
|
|
138
|
+
innerRef: el => {
|
|
139
|
+
this.el = el;
|
|
140
|
+
}
|
|
99
141
|
}, itemList.filter(item => !(item.displayed === false)) // don't remove if undefined
|
|
100
142
|
.map(item => this.buildRecursiveListItem(item)));
|
|
101
143
|
}
|
|
@@ -170,6 +212,11 @@ HiSelectableList.propTypes = process.env.NODE_ENV !== "production" ? {
|
|
|
170
212
|
*/
|
|
171
213
|
onSelect: PropTypes.func.isRequired,
|
|
172
214
|
|
|
215
|
+
/**
|
|
216
|
+
* Overlay récupéré au niveau de la div précédant le HiSelectInput
|
|
217
|
+
*/
|
|
218
|
+
overlay: PropTypes.object,
|
|
219
|
+
|
|
173
220
|
/**
|
|
174
221
|
* Liste des id des éléments sélectionnés
|
|
175
222
|
*/
|
|
@@ -183,7 +230,12 @@ HiSelectableList.propTypes = process.env.NODE_ENV !== "production" ? {
|
|
|
183
230
|
/**
|
|
184
231
|
* Liste des éléments à placer en premier, peu import le tri
|
|
185
232
|
*/
|
|
186
|
-
sortAppendList: PropTypes.array
|
|
233
|
+
sortAppendList: PropTypes.array,
|
|
234
|
+
|
|
235
|
+
/**
|
|
236
|
+
* Value(s) du select
|
|
237
|
+
*/
|
|
238
|
+
value: PropTypes.oneOfType([PropTypes.number, PropTypes.string, PropTypes.array])
|
|
187
239
|
} : {};
|
|
188
240
|
export default withStyles(styles, {
|
|
189
241
|
hiComponent: true,
|
|
@@ -12,6 +12,7 @@ import HiLoader from '../HiLoader';
|
|
|
12
12
|
import withStyles from '../styles/withStyles';
|
|
13
13
|
import { escapeHTML } from '../utils/helpers';
|
|
14
14
|
import pure from 'recompose/pure';
|
|
15
|
+
import keycode from 'keycode';
|
|
15
16
|
const PureListSubheader = pure(ListSubheader);
|
|
16
17
|
const PureListItem = pure(ListItem);
|
|
17
18
|
export const styles = theme => ({
|
|
@@ -61,9 +62,6 @@ export const styles = theme => ({
|
|
|
61
62
|
cursor: 'default',
|
|
62
63
|
opacity: 'inherit'
|
|
63
64
|
},
|
|
64
|
-
selected: {
|
|
65
|
-
backgroundColor: theme.palette.action.selected
|
|
66
|
-
},
|
|
67
65
|
pinned: {
|
|
68
66
|
display: 'inherit',
|
|
69
67
|
marginRight: 8,
|
|
@@ -160,6 +158,7 @@ export const styles = theme => ({
|
|
|
160
158
|
});
|
|
161
159
|
/**
|
|
162
160
|
* Construit un élément de liste sélectionnable (avec checkbox)
|
|
161
|
+
* - la sélection/déséclection d'un item est géré avec KeyDown
|
|
163
162
|
*/
|
|
164
163
|
|
|
165
164
|
class HiSelectableListItem extends React.PureComponent {
|
|
@@ -172,6 +171,18 @@ class HiSelectableListItem extends React.PureComponent {
|
|
|
172
171
|
});
|
|
173
172
|
};
|
|
174
173
|
|
|
174
|
+
this.handleKeyDown = item => event => {
|
|
175
|
+
const key = keycode(event);
|
|
176
|
+
|
|
177
|
+
if (key === 'space' || key === 'enter') {
|
|
178
|
+
event.preventDefault();
|
|
179
|
+
|
|
180
|
+
if (item) {
|
|
181
|
+
this.props.onSelect(null, item);
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
};
|
|
185
|
+
|
|
175
186
|
this.state = {
|
|
176
187
|
hover: false
|
|
177
188
|
};
|
|
@@ -236,8 +247,6 @@ class HiSelectableListItem extends React.PureComponent {
|
|
|
236
247
|
fallbackImage,
|
|
237
248
|
hideCheckbox,
|
|
238
249
|
onSelect,
|
|
239
|
-
onKeyDown,
|
|
240
|
-
onKeyUp,
|
|
241
250
|
indeterminate,
|
|
242
251
|
indeterminateIcon,
|
|
243
252
|
icon,
|
|
@@ -253,7 +262,8 @@ class HiSelectableListItem extends React.PureComponent {
|
|
|
253
262
|
secondaryLabel,
|
|
254
263
|
thin,
|
|
255
264
|
type,
|
|
256
|
-
color
|
|
265
|
+
color,
|
|
266
|
+
item
|
|
257
267
|
} = this.props; // Return simple loader list item
|
|
258
268
|
|
|
259
269
|
if (type === 'loader') {
|
|
@@ -282,7 +292,6 @@ class HiSelectableListItem extends React.PureComponent {
|
|
|
282
292
|
},
|
|
283
293
|
className: classNames(classes.listItem, classes.listItemHover, {
|
|
284
294
|
[classes.disabled]: disabled,
|
|
285
|
-
[classes.selected]: selected,
|
|
286
295
|
[classes.thin]: thin,
|
|
287
296
|
[classes.pinned]: pinned,
|
|
288
297
|
[classes.inline]: secondaryInline,
|
|
@@ -294,8 +303,7 @@ class HiSelectableListItem extends React.PureComponent {
|
|
|
294
303
|
onClick: onSelect,
|
|
295
304
|
onMouseEnter: this.setHover(true),
|
|
296
305
|
onMouseLeave: this.setHover(false),
|
|
297
|
-
onKeyDown
|
|
298
|
-
onKeyUp
|
|
306
|
+
onKeyDown: this.handleKeyDown(item)
|
|
299
307
|
}, {
|
|
300
308
|
style: {
|
|
301
309
|
paddingLeft: `${paddingLeft + level * 32}px`
|
|
@@ -305,7 +313,7 @@ class HiSelectableListItem extends React.PureComponent {
|
|
|
305
313
|
[classes.labelWithoutSecondaryInline]: !secondaryInline || !secondaryLabel && !info
|
|
306
314
|
})
|
|
307
315
|
}, !hideCheckbox && !pinned && React.createElement(HiCheckbox, {
|
|
308
|
-
tabIndex:
|
|
316
|
+
tabIndex: 0,
|
|
309
317
|
classes: {
|
|
310
318
|
root: !secondaryInline ? classes.checkboxWithSecondaryInline : classes.checkbox
|
|
311
319
|
},
|
package/index.es.js
CHANGED
package/index.js
CHANGED
package/package.json
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hipay/hipay-material-ui",
|
|
3
|
+
"private": false,
|
|
3
4
|
"author": "HiPay PSYCHE Team",
|
|
4
|
-
"version": "2.0.0-beta.
|
|
5
|
+
"version": "2.0.0-beta.62",
|
|
5
6
|
"description": "React components that implement Google's Material Design.",
|
|
6
7
|
"keywords": [
|
|
7
8
|
"react",
|
|
@@ -75,4 +76,4 @@
|
|
|
75
76
|
},
|
|
76
77
|
"main": "./index.js",
|
|
77
78
|
"module": "./index.es.js"
|
|
78
|
-
}
|
|
79
|
+
}
|