@hipay/hipay-material-ui 1.0.0-beta.17 → 1.0.0-beta.19
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/HiColoredLabel/HiColoredLabel.js +6 -1
- package/HiForm/HiInput.js +1 -1
- package/HiTable/BodyCellBuilder.js +22 -7
- package/HiTable/BodyCells/CellLayout.js +24 -1
- package/HiTable/BodyCells/CellStatus.js +1 -1
- package/HiTable/BodyRow.js +32 -9
- package/HiTable/ChildRow.js +3 -9
- package/HiTable/HiTable.js +16 -2
- package/HiTable/HiTableBody.js +39 -27
- package/HiTopBar/HiTopBar.js +3 -4
- package/es/HiColoredLabel/HiColoredLabel.js +6 -2
- package/es/HiForm/HiInput.js +1 -1
- package/es/HiTable/BodyCellBuilder.js +20 -8
- package/es/HiTable/BodyCells/CellLayout.js +23 -2
- package/es/HiTable/BodyCells/CellStatus.js +1 -1
- package/es/HiTable/BodyRow.js +31 -9
- package/es/HiTable/ChildRow.js +3 -10
- package/es/HiTable/HiTable.js +16 -2
- package/es/HiTable/HiTableBody.js +34 -26
- package/es/HiTopBar/HiTopBar.js +5 -4
- package/index.es.js +1 -1
- package/index.js +1 -1
- package/package.json +9 -9
- package/umd/hipay-material-ui.development.js +154 -71
- package/umd/hipay-material-ui.production.min.js +2 -2
package/es/HiTable/BodyRow.js
CHANGED
@@ -50,6 +50,10 @@ class BodyRow extends React.PureComponent {
|
|
50
50
|
constructor(props) {
|
51
51
|
super();
|
52
52
|
|
53
|
+
this.handleOpenRowDetails = type => () => {
|
54
|
+
this.props.onOpenRowDetails(this.props.row.rowId, type);
|
55
|
+
};
|
56
|
+
|
53
57
|
this.state = {
|
54
58
|
live: props.live,
|
55
59
|
style: {
|
@@ -97,10 +101,6 @@ class BodyRow extends React.PureComponent {
|
|
97
101
|
}
|
98
102
|
}
|
99
103
|
|
100
|
-
handleOpenRowDetails() {
|
101
|
-
this.props.onOpenRowDetails(this.props.row.rowId);
|
102
|
-
}
|
103
|
-
|
104
104
|
handleSelect() {
|
105
105
|
this.props.onSelect(this.props.row);
|
106
106
|
}
|
@@ -123,9 +123,10 @@ class BodyRow extends React.PureComponent {
|
|
123
123
|
numberLocale,
|
124
124
|
sticky,
|
125
125
|
innerRow,
|
126
|
-
isDetail
|
126
|
+
isDetail,
|
127
|
+
detailRowsOptions
|
127
128
|
} = _props,
|
128
|
-
other = _objectWithoutProperties(_props, ['classes', 'theme', 'row', 'columns', 'lookupColumns', 'orderedColumns', 'selectable', 'selected', 'onClick', 'view', 'dense', 'dateLocale', 'numberLocale', 'sticky', 'innerRow', 'isDetail']);
|
129
|
+
other = _objectWithoutProperties(_props, ['classes', 'theme', 'row', 'columns', 'lookupColumns', 'orderedColumns', 'selectable', 'selected', 'onClick', 'view', 'dense', 'dateLocale', 'numberLocale', 'sticky', 'innerRow', 'isDetail', 'detailRowsOptions']);
|
129
130
|
|
130
131
|
const { style } = this.state;
|
131
132
|
|
@@ -143,6 +144,19 @@ class BodyRow extends React.PureComponent {
|
|
143
144
|
// If there is no datas don't display the row
|
144
145
|
if (!row.hasOwnProperty('datas')) return false;
|
145
146
|
|
147
|
+
let detailsInfos = {};
|
148
|
+
if (row.details && row.details.length > 0) {
|
149
|
+
detailsInfos = row.details.reduce((memo, item) => {
|
150
|
+
if (item.rows.length > 0 && detailRowsOptions[item.type] && detailRowsOptions[item.type].anchor) {
|
151
|
+
memo[detailRowsOptions[item.type].anchor] = _extends({
|
152
|
+
type: item.type,
|
153
|
+
total: item.rows.length
|
154
|
+
}, detailRowsOptions[item.type]);
|
155
|
+
}
|
156
|
+
return memo;
|
157
|
+
}, {});
|
158
|
+
}
|
159
|
+
|
146
160
|
return React.createElement(
|
147
161
|
TableRow,
|
148
162
|
{
|
@@ -230,8 +244,11 @@ class BodyRow extends React.PureComponent {
|
|
230
244
|
numberLocale: numberLocale,
|
231
245
|
dense: dense,
|
232
246
|
selected: selected,
|
233
|
-
onSelect: this.handleSelect
|
234
|
-
|
247
|
+
onSelect: this.handleSelect
|
248
|
+
}, detailsInfos[colId] && {
|
249
|
+
onOpenDetails: this.handleOpenRowDetails(detailsInfos[colId].type),
|
250
|
+
detailInfos: detailsInfos[colId]
|
251
|
+
}, {
|
235
252
|
childrenCount: isParentAnchor ? row.children.length : null,
|
236
253
|
colId: colId,
|
237
254
|
lookedUp: lookedUp
|
@@ -259,7 +276,8 @@ BodyRow.defaultProps = {
|
|
259
276
|
live: false,
|
260
277
|
innerRow: false,
|
261
278
|
lookupColumns: [],
|
262
|
-
fixedColumnWidth: true
|
279
|
+
fixedColumnWidth: true,
|
280
|
+
detailRowsOptions: {}
|
263
281
|
};
|
264
282
|
BodyRow.propTypes = process.env.NODE_ENV !== "production" ? {
|
265
283
|
/**
|
@@ -270,6 +288,10 @@ BodyRow.propTypes = process.env.NODE_ENV !== "production" ? {
|
|
270
288
|
* Densité d'affichage (joue sur la hauteur des lignes)
|
271
289
|
*/
|
272
290
|
dense: PropTypes.bool,
|
291
|
+
/**
|
292
|
+
* Options utilisées pour décrire le comportement de lignes de détails
|
293
|
+
*/
|
294
|
+
detailRowsOptions: PropTypes.object,
|
273
295
|
/**
|
274
296
|
* Fixe la taille des colonnes selon le type de vue
|
275
297
|
* Sinon les colonnes s'adaptent à l'espace disponible
|
package/es/HiTable/ChildRow.js
CHANGED
@@ -112,9 +112,9 @@ class ChildRow extends React.PureComponent {
|
|
112
112
|
parentIndicatorColumn, parentLabel, parentLabelIcon,
|
113
113
|
children, columns, orderedColumns,
|
114
114
|
selectable, selected,
|
115
|
-
dateLocale, dense, sticky, view
|
115
|
+
dateLocale, dense, sticky, view, row
|
116
116
|
} = _props,
|
117
|
-
other = _objectWithoutProperties(_props, ['classes', 'theme', 'onClose', 'parentRowId', 'parentRowDatas', 'parentIndicatorColumn', 'parentLabel', 'parentLabelIcon', 'children', 'columns', 'orderedColumns', 'selectable', 'selected', 'dateLocale', 'dense', 'sticky', 'view']);
|
117
|
+
other = _objectWithoutProperties(_props, ['classes', 'theme', 'onClose', 'parentRowId', 'parentRowDatas', 'parentIndicatorColumn', 'parentLabel', 'parentLabelIcon', 'children', 'columns', 'orderedColumns', 'selectable', 'selected', 'dateLocale', 'dense', 'sticky', 'view', 'row']);
|
118
118
|
|
119
119
|
let indicator = '';
|
120
120
|
if (parentIndicatorColumn && columns.hasOwnProperty(parentIndicatorColumn)) {
|
@@ -141,10 +141,7 @@ class ChildRow extends React.PureComponent {
|
|
141
141
|
TableBody,
|
142
142
|
null,
|
143
143
|
React.createElement(BodyRow, _extends({
|
144
|
-
row:
|
145
|
-
rowId: parentRowId,
|
146
|
-
datas: parentRowDatas
|
147
|
-
},
|
144
|
+
row: row,
|
148
145
|
selectable: selectable,
|
149
146
|
selected: selected,
|
150
147
|
columns: columns,
|
@@ -277,10 +274,6 @@ ChildRow.propTypes = process.env.NODE_ENV !== "production" ? {
|
|
277
274
|
* Données de la ligne parente
|
278
275
|
*/
|
279
276
|
parentRowDatas: PropTypes.object.isRequired,
|
280
|
-
/**
|
281
|
-
* Ligne des détails de la ligne parente
|
282
|
-
*/
|
283
|
-
parentDetailRows: PropTypes.array,
|
284
277
|
/**
|
285
278
|
* Indicateur du sous-ensemble (en général la date)
|
286
279
|
*/
|
package/es/HiTable/HiTable.js
CHANGED
@@ -586,7 +586,8 @@ class HiTable extends React.Component {
|
|
586
586
|
loading,
|
587
587
|
fixedColumnWidth,
|
588
588
|
disableContextMenu,
|
589
|
-
footerContent
|
589
|
+
footerContent,
|
590
|
+
detailRowsOptions
|
590
591
|
} = this.props;
|
591
592
|
|
592
593
|
const { dateUpdate, isScrollToBottom, groupByIds } = this.state;
|
@@ -668,7 +669,8 @@ class HiTable extends React.Component {
|
|
668
669
|
lookupColumns: lookupColumns,
|
669
670
|
loading: loading,
|
670
671
|
fixedColumnWidth: fixedColumnWidth,
|
671
|
-
disableContextMenu: disableContextMenu
|
672
|
+
disableContextMenu: disableContextMenu,
|
673
|
+
detailRowsOptions: detailRowsOptions
|
672
674
|
}),
|
673
675
|
infiniteScroll && React.createElement(HiTableFooterScroll, {
|
674
676
|
tabId: tabId,
|
@@ -725,6 +727,7 @@ HiTable.defaultProps = {
|
|
725
727
|
dateLocale: 'en-EN',
|
726
728
|
numberLocale: 'en-EN',
|
727
729
|
dense: false,
|
730
|
+
detailRowsOptions: {},
|
728
731
|
height: 450,
|
729
732
|
sticky: true,
|
730
733
|
translations: {
|
@@ -767,6 +770,17 @@ HiTable.propTypes = process.env.NODE_ENV !== "production" ? {
|
|
767
770
|
* Locale utilisé pour le format des dates
|
768
771
|
*/
|
769
772
|
dateLocale: PropTypes.string,
|
773
|
+
/**
|
774
|
+
* Options utilisées pour décrire le comportement de lignes de détails
|
775
|
+
* ex: {
|
776
|
+
* payment_operation: {
|
777
|
+
* anchor: 'transaction_id'
|
778
|
+
* }
|
779
|
+
* }
|
780
|
+
* dans cet exemple, on veut que les lignes de détails de type payment_operation
|
781
|
+
* soient affichable à partir d'un chip button dans les cellules transaction_id
|
782
|
+
*/
|
783
|
+
detailRowsOptions: PropTypes.object,
|
770
784
|
/**
|
771
785
|
* Densité d'affichage (joue sur la hauteur des lignes)
|
772
786
|
*/
|
@@ -150,14 +150,16 @@ class HiTableBody extends React.Component {
|
|
150
150
|
/**
|
151
151
|
* Définit les id des lignes dont les détails sont affichés ou null
|
152
152
|
* (ajoute une ligne pour chaque détails)
|
153
|
+
* vérifie aussi le type du détail
|
153
154
|
*
|
154
155
|
* @param rowId
|
156
|
+
* @param type
|
155
157
|
*/
|
156
|
-
toggleOpenedDetailsRowId(rowId) {
|
158
|
+
toggleOpenedDetailsRowId(rowId, type) {
|
157
159
|
this.setState(prevState => ({
|
158
|
-
openedDetailsRowIdList: prevState.openedDetailsRowIdList.
|
159
|
-
return id !== rowId;
|
160
|
-
}) : [...prevState.openedDetailsRowIdList, rowId]
|
160
|
+
openedDetailsRowIdList: prevState.openedDetailsRowIdList.find(item => item.id === rowId && item.type === type) ? prevState.openedDetailsRowIdList.filter(item => {
|
161
|
+
return item.id !== rowId || item.type !== type;
|
162
|
+
}) : [...prevState.openedDetailsRowIdList, { id: rowId, type: type }]
|
161
163
|
}));
|
162
164
|
this.props.addNewRowRefs();
|
163
165
|
}
|
@@ -195,7 +197,8 @@ class HiTableBody extends React.Component {
|
|
195
197
|
lookupColumns,
|
196
198
|
loading,
|
197
199
|
fixedColumnWidth,
|
198
|
-
disableContextMenu
|
200
|
+
disableContextMenu,
|
201
|
+
detailRowsOptions
|
199
202
|
} = this.props;
|
200
203
|
|
201
204
|
const { openedParentRowId, openedDetailsRowIdList } = this.state;
|
@@ -266,9 +269,6 @@ class HiTableBody extends React.Component {
|
|
266
269
|
// has children
|
267
270
|
const hasChildren = row.hasOwnProperty('children') && row.children.length > 0;
|
268
271
|
|
269
|
-
// has detail rows
|
270
|
-
const hasDetailRows = row.hasOwnProperty('detailRows') && row.detailRows.length > 0;
|
271
|
-
|
272
272
|
const BodyRowProps = _extends({
|
273
273
|
columns,
|
274
274
|
dateLocale,
|
@@ -280,9 +280,9 @@ class HiTableBody extends React.Component {
|
|
280
280
|
}, hasChildren && {
|
281
281
|
openedAsParent: openedParentRowId === row.rowId,
|
282
282
|
onClick: this.setOpenedParentRowId // if row has children, onClick display the children
|
283
|
-
}, hasDetailRows && {
|
284
|
-
onOpenRowDetails: this.toggleOpenedDetailsRowId
|
285
283
|
}, {
|
284
|
+
onOpenRowDetails: this.toggleOpenedDetailsRowId,
|
285
|
+
detailRowsOptions,
|
286
286
|
orderedColumns
|
287
287
|
}, selectable && {
|
288
288
|
selectable,
|
@@ -305,7 +305,6 @@ class HiTableBody extends React.Component {
|
|
305
305
|
parentIndicatorColumn: row.parentIndicatorColumn,
|
306
306
|
parentLabel: row.parentLabel,
|
307
307
|
parentLabelIcon: row.parentLabelIcon,
|
308
|
-
parentDetailRows: row.detailRows,
|
309
308
|
children: row.children,
|
310
309
|
onClose: this.setOpenedParentRowId
|
311
310
|
}, BodyRowProps)));
|
@@ -314,21 +313,25 @@ class HiTableBody extends React.Component {
|
|
314
313
|
}
|
315
314
|
|
316
315
|
// add opened detail rows
|
317
|
-
if (
|
318
|
-
row.
|
319
|
-
|
320
|
-
|
321
|
-
|
322
|
-
|
323
|
-
|
324
|
-
|
325
|
-
|
326
|
-
|
327
|
-
|
328
|
-
|
329
|
-
|
316
|
+
if (row.details && row.details.length > 0) {
|
317
|
+
row.details.forEach(detail => {
|
318
|
+
if (detail.rows.length > 0 && openedDetailsRowIdList.find(item => item.id === row.rowId && item.type === detail.type)) {
|
319
|
+
detail.rows.forEach(detailRow => {
|
320
|
+
const detailRowProps = {
|
321
|
+
row: detailRow,
|
322
|
+
columns,
|
323
|
+
orderedColumns,
|
324
|
+
view,
|
325
|
+
dense,
|
326
|
+
sticky,
|
327
|
+
isDetail: true,
|
328
|
+
fixedColumnWidth,
|
329
|
+
disableContextMenu
|
330
|
+
};
|
330
331
|
|
331
|
-
|
332
|
+
tableRows.push(React.createElement(BodyRow, _extends({ key: `${row.rowId}-${detailRow.rowId}` }, detailRowProps)));
|
333
|
+
});
|
334
|
+
}
|
332
335
|
});
|
333
336
|
}
|
334
337
|
});
|
@@ -367,7 +370,8 @@ HiTableBody.defaultProps = {
|
|
367
370
|
sticky: true,
|
368
371
|
view: 'l',
|
369
372
|
loading: false,
|
370
|
-
disableContextMenu: true
|
373
|
+
disableContextMenu: true,
|
374
|
+
detailRowsOptions: {}
|
371
375
|
};
|
372
376
|
HiTableBody.propTypes = process.env.NODE_ENV !== "production" ? {
|
373
377
|
/**
|
@@ -395,6 +399,10 @@ HiTableBody.propTypes = process.env.NODE_ENV !== "production" ? {
|
|
395
399
|
* Densité d'affichage (joue sur la hauteur des lignes)
|
396
400
|
*/
|
397
401
|
dense: PropTypes.bool,
|
402
|
+
/**
|
403
|
+
* Options utilisées pour décrire le comportement de lignes de détails
|
404
|
+
*/
|
405
|
+
detailRowsOptions: PropTypes.object,
|
398
406
|
/**
|
399
407
|
* Active/désactive le menu contextuel au clic droit sur les cellules du tableau
|
400
408
|
*/
|
package/es/HiTopBar/HiTopBar.js
CHANGED
@@ -77,9 +77,8 @@ export const styles = theme => ({
|
|
77
77
|
color: theme.palette.text.secondary,
|
78
78
|
minWidth: 32
|
79
79
|
},
|
80
|
-
|
81
|
-
|
82
|
-
maxWidth: 80
|
80
|
+
betaWithoutAccountSelector: {
|
81
|
+
marginLeft: 1.5 * theme.spacing.unit
|
83
82
|
},
|
84
83
|
searchInput: {
|
85
84
|
backgroundColor: `${theme.palette.background1} !important`
|
@@ -264,7 +263,9 @@ class HiTopBar extends React.Component {
|
|
264
263
|
accountSelectorContent
|
265
264
|
),
|
266
265
|
beta && React.createElement(HiColoredLabel, {
|
267
|
-
className:
|
266
|
+
className: classNames({
|
267
|
+
[classes.betaWithoutAccountSelector]: !hasAccountSelector
|
268
|
+
}),
|
268
269
|
label: 'BETA',
|
269
270
|
beta: true,
|
270
271
|
color: theme.palette.neutral.dark
|
package/index.es.js
CHANGED
package/index.js
CHANGED
package/package.json
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
"name": "@hipay/hipay-material-ui",
|
3
3
|
"private": false,
|
4
4
|
"author": "HiPay PSYCHE Team",
|
5
|
-
"version": "1.0.0-beta.
|
5
|
+
"version": "1.0.0-beta.19",
|
6
6
|
"description": "HiPay Material-UI Style Guide - React components that implement Google's Material Design from Material-UI.",
|
7
7
|
"main": "./index.js",
|
8
8
|
"repository": {
|
@@ -18,8 +18,8 @@
|
|
18
18
|
"react-dom": "15.3.0 || 16.0.0"
|
19
19
|
},
|
20
20
|
"dependencies": {
|
21
|
-
"react": "16.2.0",
|
22
21
|
"@types/jss": "9.3.0",
|
22
|
+
"@types/react-transition-group": "2.0.6",
|
23
23
|
"babel-runtime": "6.26.0",
|
24
24
|
"brcast": "3.0.1",
|
25
25
|
"classnames": "2.2.5",
|
@@ -34,11 +34,11 @@
|
|
34
34
|
"jss-props-sort": "6.0.0",
|
35
35
|
"jss-vendor-prefixer": "7.0.0",
|
36
36
|
"keycode": "2.1.9",
|
37
|
-
"lodash": "4.
|
37
|
+
"lodash": "4.17.4",
|
38
38
|
"lz-string": "1.4.4",
|
39
39
|
"material-ui": "1.0.0-beta.36",
|
40
40
|
"mdi-material-ui": "2.0.0",
|
41
|
-
"moment": "2.
|
41
|
+
"moment": "2.20.1",
|
42
42
|
"moment-timezone": "0.5.14",
|
43
43
|
"normalize-scroll-left": "0.1.2",
|
44
44
|
"prop-types": "15.6.0",
|
@@ -46,15 +46,15 @@
|
|
46
46
|
"react-contextmenu": "2.9.2",
|
47
47
|
"react-custom-scrollbars": "4.2.1",
|
48
48
|
"react-day-picker": "7.1.9",
|
49
|
-
"react-event-listener": "0.5.
|
50
|
-
"react-jss": "8.1
|
49
|
+
"react-event-listener": "0.5.3",
|
50
|
+
"react-jss": "8.2.1",
|
51
51
|
"react-lifecycles-compat": "1.0.2",
|
52
|
-
"react-pdf": "3.0.
|
53
|
-
"react-popper": "0.8.
|
52
|
+
"react-pdf": "3.0.5",
|
53
|
+
"react-popper": "0.8.2",
|
54
54
|
"react-proptype-conditional-require": "1.0.4",
|
55
55
|
"react-scrollbar-size": "2.0.2",
|
56
56
|
"react-sortable-hoc": "0.6.8",
|
57
|
-
"react-spinners": "0.2.
|
57
|
+
"react-spinners": "0.2.6",
|
58
58
|
"react-transition-group": "2.2.1",
|
59
59
|
"recompose": "0.26.0",
|
60
60
|
"scroll": "2.0.3",
|