@configuratorware/configurator-admingui 1.40.2 → 1.40.4
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/Components/List.js +14 -4
- package/Screens/Channel/Containers/Edit.js +8 -0
- package/Screens/Channel/Reducers/Reducer.js +3 -0
- package/Screens/Channel/Translations.js +2 -1
- package/Screens/DesignProductionMethods/Containers/Edit.js +5 -1
- package/Screens/DesignProductionMethods/Reducers/DesignProductionMethodsReducer.js +3 -0
- package/Screens/DesignProductionMethods/Translations.js +4 -2
- package/Screens/Designer/Components/TemplateDefaultList.js +30 -10
- package/UIComponents/Table/Table.js +24 -21
- package/package.json +2 -2
- package/src/Components/List.js +10 -1
- package/src/Screens/Channel/Containers/Edit.js +11 -0
- package/src/Screens/Channel/Reducers/Reducer.js +1 -0
- package/src/Screens/Channel/Translations.js +1 -0
- package/src/Screens/DesignProductionMethods/Containers/Edit.js +17 -8
- package/src/Screens/DesignProductionMethods/Reducers/DesignProductionMethodsReducer.js +1 -0
- package/src/Screens/DesignProductionMethods/Translations.js +4 -2
- package/src/Screens/Designer/Components/TemplateDefaultList.js +22 -8
- package/src/UIComponents/Table/Table.js +26 -24
package/Components/List.js
CHANGED
|
@@ -243,7 +243,8 @@ var List = /*#__PURE__*/function (_Component) {
|
|
|
243
243
|
|
|
244
244
|
_this.props.onRowSelection(rows, event);
|
|
245
245
|
},
|
|
246
|
-
selected: _this.selectedRows
|
|
246
|
+
selected: _this.selectedRows,
|
|
247
|
+
isRowSelectable: _this.props.isRowSelectable
|
|
247
248
|
}, /*#__PURE__*/_react["default"].createElement(_Table.TableHead, {
|
|
248
249
|
showCheckbox: showCheckboxes
|
|
249
250
|
}, _this.renderPaginationWithTools(), /*#__PURE__*/_react["default"].createElement(_Table.TableRow, null, columns.map(function (column, i) {
|
|
@@ -266,9 +267,7 @@ var List = /*#__PURE__*/function (_Component) {
|
|
|
266
267
|
}, data.map(function (row, index) {
|
|
267
268
|
return /*#__PURE__*/_react["default"].createElement(_Table.TableRow, {
|
|
268
269
|
key: index,
|
|
269
|
-
style:
|
|
270
|
-
cursor: 'pointer'
|
|
271
|
-
}
|
|
270
|
+
style: _this.getRowStyle(index)
|
|
272
271
|
}, columns.map(function (column, i) {
|
|
273
272
|
return shownColumns[i] && /*#__PURE__*/_react["default"].createElement(_Table.TableRowColumn, {
|
|
274
273
|
key: i,
|
|
@@ -386,6 +385,17 @@ var List = /*#__PURE__*/function (_Component) {
|
|
|
386
385
|
|
|
387
386
|
return null;
|
|
388
387
|
}
|
|
388
|
+
}, {
|
|
389
|
+
key: "getRowStyle",
|
|
390
|
+
value: function getRowStyle(index) {
|
|
391
|
+
if (this.props.getRowStyle) {
|
|
392
|
+
return this.props.getRowStyle(index);
|
|
393
|
+
}
|
|
394
|
+
|
|
395
|
+
return {
|
|
396
|
+
cursor: 'pointer'
|
|
397
|
+
};
|
|
398
|
+
}
|
|
389
399
|
}, {
|
|
390
400
|
key: "render",
|
|
391
401
|
value: function render() {
|
|
@@ -47,6 +47,14 @@ var formFields = [{
|
|
|
47
47
|
label: 'Hide prices',
|
|
48
48
|
type: 'checkbox'
|
|
49
49
|
}]
|
|
50
|
+
}, {
|
|
51
|
+
name: 'settings',
|
|
52
|
+
type: _SimpleNestedData["default"],
|
|
53
|
+
fields: [{
|
|
54
|
+
name: 'vatrate',
|
|
55
|
+
label: 'VAT rate',
|
|
56
|
+
type: 'number'
|
|
57
|
+
}]
|
|
50
58
|
}, {
|
|
51
59
|
name: 'globalDiscountPercentage',
|
|
52
60
|
label: 'discountPercentage',
|
|
@@ -62,7 +62,11 @@ var formFields = [{
|
|
|
62
62
|
type: _SimpleNestedData["default"],
|
|
63
63
|
fields: [{
|
|
64
64
|
name: 'vectorsRequired',
|
|
65
|
-
label: '
|
|
65
|
+
label: 'vectorsRequired',
|
|
66
|
+
type: 'checkbox'
|
|
67
|
+
}, {
|
|
68
|
+
name: 'vectorizedLogoMandatory',
|
|
69
|
+
label: 'vectorizedLogoMandatory',
|
|
66
70
|
type: 'checkbox'
|
|
67
71
|
}, {
|
|
68
72
|
name: 'visualizationEffect',
|
|
@@ -21,7 +21,8 @@ require("../../App/i18n").use({
|
|
|
21
21
|
embroidery: 'embroidery',
|
|
22
22
|
doming: 'doming'
|
|
23
23
|
},
|
|
24
|
-
|
|
24
|
+
vectorsRequired: 'Colorize step is mandatory',
|
|
25
|
+
vectorizedLogoMandatory: 'Force using vectorized logo',
|
|
25
26
|
'Maximum Color Amount': 'Maximum Color Amount',
|
|
26
27
|
'Minimum Font Size': 'Minimum Font Size',
|
|
27
28
|
'Has Engraving Background Colors': 'Has Engraving Background Colors',
|
|
@@ -56,7 +57,8 @@ require("../../App/i18n").use({
|
|
|
56
57
|
embroidery: 'Stick',
|
|
57
58
|
doming: 'Doming'
|
|
58
59
|
},
|
|
59
|
-
|
|
60
|
+
vectorsRequired: 'Umfärben erzwingen',
|
|
61
|
+
vectorizedLogoMandatory: 'Vektorisierte Bilddaten müssen verwendet werden',
|
|
60
62
|
'Maximum Color Amount': 'Maximale Farbanzahl',
|
|
61
63
|
'Minimum Font Size': 'Minimale Schriftgröße',
|
|
62
64
|
'Has Engraving Background Colors': 'Hat Gravur-Hintergrundfarben',
|
|
@@ -208,11 +208,7 @@ var TemplateDefaultList = /*#__PURE__*/function (_Component) {
|
|
|
208
208
|
var _this$props = _this.props,
|
|
209
209
|
list = _this$props.list,
|
|
210
210
|
sourceItemId = _this$props.sourceItemId;
|
|
211
|
-
var
|
|
212
|
-
var excludedIds = movedItems.map(function (item) {
|
|
213
|
-
return item.id;
|
|
214
|
-
});
|
|
215
|
-
excludedIds.push(sourceItemId);
|
|
211
|
+
var excludedIds = [sourceItemId];
|
|
216
212
|
return _lodash["default"].get(list, 'data', []).filter(function (item) {
|
|
217
213
|
return excludedIds.indexOf(item.id) === -1;
|
|
218
214
|
});
|
|
@@ -226,9 +222,7 @@ var TemplateDefaultList = /*#__PURE__*/function (_Component) {
|
|
|
226
222
|
var data = _this.getAvailableItems();
|
|
227
223
|
|
|
228
224
|
var newItems = _lodash["default"].filter(data, function (item, index) {
|
|
229
|
-
return
|
|
230
|
-
id: item.id
|
|
231
|
-
});
|
|
225
|
+
return selectedRows.indexOf(index) !== -1 || selectedRows === 'all';
|
|
232
226
|
});
|
|
233
227
|
|
|
234
228
|
_this.setState({
|
|
@@ -256,6 +250,30 @@ var TemplateDefaultList = /*#__PURE__*/function (_Component) {
|
|
|
256
250
|
});
|
|
257
251
|
});
|
|
258
252
|
|
|
253
|
+
_defineProperty(_assertThisInitialized(_this), "isItemAtIndexMoved", function (index) {
|
|
254
|
+
var clickedItem = _this.props.list.data[index];
|
|
255
|
+
return _lodash["default"].find(_this.state.movedItems, {
|
|
256
|
+
id: clickedItem.id
|
|
257
|
+
});
|
|
258
|
+
});
|
|
259
|
+
|
|
260
|
+
_defineProperty(_assertThisInitialized(_this), "isRowSelectable", function (index) {
|
|
261
|
+
return !_this.isItemAtIndexMoved(index);
|
|
262
|
+
});
|
|
263
|
+
|
|
264
|
+
_defineProperty(_assertThisInitialized(_this), "getRowStyle", function (index) {
|
|
265
|
+
if (_this.isItemAtIndexMoved(index)) {
|
|
266
|
+
return {
|
|
267
|
+
cursor: 'not-allowed',
|
|
268
|
+
backgroundColor: 'lightgreen'
|
|
269
|
+
};
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
return {
|
|
273
|
+
cursor: 'pointer'
|
|
274
|
+
};
|
|
275
|
+
});
|
|
276
|
+
|
|
259
277
|
_defineProperty(_assertThisInitialized(_this), "onMovedItemsChange", function () {
|
|
260
278
|
var movedItemIds = _this.state.movedItems.map(function (item) {
|
|
261
279
|
return item.id;
|
|
@@ -356,7 +374,7 @@ var TemplateDefaultList = /*#__PURE__*/function (_Component) {
|
|
|
356
374
|
data: data,
|
|
357
375
|
columns: columns,
|
|
358
376
|
shownColumns: shownColumns,
|
|
359
|
-
rowsTotal:
|
|
377
|
+
rowsTotal: total,
|
|
360
378
|
rowsPerPage: this.state.listParams.limit,
|
|
361
379
|
onRowSelection: this.onRowSelection,
|
|
362
380
|
selected: selected || this.state.selectedRows,
|
|
@@ -368,7 +386,9 @@ var TemplateDefaultList = /*#__PURE__*/function (_Component) {
|
|
|
368
386
|
onSortChange: this.onSortChange,
|
|
369
387
|
onShownColumnsChange: this.onShownColumnsChange,
|
|
370
388
|
showCheckboxes: !!this.props.onDeleteItems,
|
|
371
|
-
onMoveItems: this.onMoveItems
|
|
389
|
+
onMoveItems: this.onMoveItems,
|
|
390
|
+
isRowSelectable: this.isRowSelectable,
|
|
391
|
+
getRowStyle: this.getRowStyle
|
|
372
392
|
})), /*#__PURE__*/_react["default"].createElement(_Grid["default"], {
|
|
373
393
|
container: true,
|
|
374
394
|
alignItems: "center",
|
|
@@ -66,32 +66,35 @@ var UITable = /*#__PURE__*/function (_React$Component) {
|
|
|
66
66
|
|
|
67
67
|
_defineProperty(_assertThisInitialized(_this), "onRowSelected", function (event, id) {
|
|
68
68
|
var isMultiple = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
|
|
69
|
-
var selected = _this.state.selected;
|
|
70
|
-
var selectedIndex = selected.indexOf(id);
|
|
71
|
-
var newSelected = [];
|
|
72
69
|
|
|
73
|
-
if (!
|
|
74
|
-
|
|
70
|
+
if (!_this.props.isRowSelectable || _this.props.isRowSelectable(id) === true) {
|
|
71
|
+
var selected = _this.state.selected;
|
|
72
|
+
var selectedIndex = selected.indexOf(id);
|
|
73
|
+
var newSelected = [];
|
|
74
|
+
|
|
75
|
+
if (!isMultiple && selected.length === 1) {
|
|
76
|
+
if ((0, _first["default"])(selected) !== id) {
|
|
77
|
+
newSelected.push(id);
|
|
78
|
+
}
|
|
79
|
+
} else if (!isMultiple && selected.length > 1) {
|
|
75
80
|
newSelected.push(id);
|
|
81
|
+
} else if (selectedIndex === -1) {
|
|
82
|
+
newSelected = newSelected.concat(selected, id);
|
|
83
|
+
} else if (selectedIndex === 0) {
|
|
84
|
+
newSelected = newSelected.concat(selected.slice(1));
|
|
85
|
+
} else if (selectedIndex === selected.length - 1) {
|
|
86
|
+
newSelected = newSelected.concat(selected.slice(0, -1));
|
|
87
|
+
} else if (selectedIndex > 0) {
|
|
88
|
+
newSelected = newSelected.concat(selected.slice(0, selectedIndex), selected.slice(selectedIndex + 1));
|
|
76
89
|
}
|
|
77
|
-
} else if (!isMultiple && selected.length > 1) {
|
|
78
|
-
newSelected.push(id);
|
|
79
|
-
} else if (selectedIndex === -1) {
|
|
80
|
-
newSelected = newSelected.concat(selected, id);
|
|
81
|
-
} else if (selectedIndex === 0) {
|
|
82
|
-
newSelected = newSelected.concat(selected.slice(1));
|
|
83
|
-
} else if (selectedIndex === selected.length - 1) {
|
|
84
|
-
newSelected = newSelected.concat(selected.slice(0, -1));
|
|
85
|
-
} else if (selectedIndex > 0) {
|
|
86
|
-
newSelected = newSelected.concat(selected.slice(0, selectedIndex), selected.slice(selectedIndex + 1));
|
|
87
|
-
}
|
|
88
90
|
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
91
|
+
_this.setState({
|
|
92
|
+
selected: newSelected,
|
|
93
|
+
allSelected: false
|
|
94
|
+
});
|
|
93
95
|
|
|
94
|
-
|
|
96
|
+
_this.onSelectedCallback(newSelected, event);
|
|
97
|
+
}
|
|
95
98
|
});
|
|
96
99
|
|
|
97
100
|
_defineProperty(_assertThisInitialized(_this), "isSelected", function (id) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@configuratorware/configurator-admingui",
|
|
3
|
-
"version": "1.40.
|
|
3
|
+
"version": "1.40.4",
|
|
4
4
|
"license": "UNLICENSED",
|
|
5
5
|
"private": false,
|
|
6
6
|
"dependencies": {
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
"react-redux-i18n": "^1.9.3",
|
|
30
30
|
"react-router": "^3.2.6",
|
|
31
31
|
"react-sortable-hoc": "^1.11.0",
|
|
32
|
-
"redhotmagma-visualization": "1.40.
|
|
32
|
+
"redhotmagma-visualization": "1.40.4",
|
|
33
33
|
"redux": "^4.1.0",
|
|
34
34
|
"redux-logger": "^3.0.6",
|
|
35
35
|
"redux-persist": "^5.10.0",
|
package/src/Components/List.js
CHANGED
|
@@ -243,6 +243,14 @@ export default class List extends Component {
|
|
|
243
243
|
}
|
|
244
244
|
return null;
|
|
245
245
|
}
|
|
246
|
+
|
|
247
|
+
getRowStyle(index) {
|
|
248
|
+
if(this.props.getRowStyle) {
|
|
249
|
+
return this.props.getRowStyle(index);
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
return { cursor: 'pointer' };
|
|
253
|
+
}
|
|
246
254
|
|
|
247
255
|
renderTable = () => {
|
|
248
256
|
const { rowActions, columns, data, showCheckboxes, onDeleteItems, renderAction } = this.props;
|
|
@@ -267,6 +275,7 @@ export default class List extends Component {
|
|
|
267
275
|
this.props.onRowSelection(rows, event);
|
|
268
276
|
}}
|
|
269
277
|
selected={this.selectedRows}
|
|
278
|
+
isRowSelectable={this.props.isRowSelectable}
|
|
270
279
|
>
|
|
271
280
|
<TableHead showCheckbox={showCheckboxes}>
|
|
272
281
|
{this.renderPaginationWithTools()}
|
|
@@ -297,7 +306,7 @@ export default class List extends Component {
|
|
|
297
306
|
<TableBody className="list-body">
|
|
298
307
|
{data.map((row, index) => {
|
|
299
308
|
return (
|
|
300
|
-
<TableRow key={index} style={
|
|
309
|
+
<TableRow key={index} style={this.getRowStyle(index)}>
|
|
301
310
|
{columns.map(
|
|
302
311
|
(column, i) =>
|
|
303
312
|
shownColumns[i] && (
|
|
@@ -31,6 +31,17 @@ const formFields = [
|
|
|
31
31
|
},
|
|
32
32
|
],
|
|
33
33
|
},
|
|
34
|
+
{
|
|
35
|
+
name: 'settings',
|
|
36
|
+
type: SimpleNestedData,
|
|
37
|
+
fields: [
|
|
38
|
+
{
|
|
39
|
+
name: 'vatrate',
|
|
40
|
+
label: 'VAT rate',
|
|
41
|
+
type: 'number',
|
|
42
|
+
},
|
|
43
|
+
],
|
|
44
|
+
},
|
|
34
45
|
{
|
|
35
46
|
name: 'globalDiscountPercentage',
|
|
36
47
|
label: 'discountPercentage',
|
|
@@ -5,8 +5,8 @@ import SimpleNestedData from '../../../Components/FormFragments/SimpleNestedData
|
|
|
5
5
|
import Toggle from '../../../Components/FormFragments/Toggle';
|
|
6
6
|
import { T } from '../../../App/i18n';
|
|
7
7
|
import TranslationFinder, { findTranslation } from '../../../Components/TranslationFinder';
|
|
8
|
-
import {LocalizedPriceTextField} from
|
|
9
|
-
import LocalizedPriceValue from
|
|
8
|
+
import { LocalizedPriceTextField } from '../../../Components/LocalizedPriceTextField';
|
|
9
|
+
import LocalizedPriceValue from '../../../Components/LocalizedPriceValue';
|
|
10
10
|
|
|
11
11
|
const formFields = [
|
|
12
12
|
{
|
|
@@ -29,7 +29,12 @@ const formFields = [
|
|
|
29
29
|
fields: [
|
|
30
30
|
{
|
|
31
31
|
name: 'vectorsRequired',
|
|
32
|
-
label: '
|
|
32
|
+
label: 'vectorsRequired',
|
|
33
|
+
type: 'checkbox',
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
name: 'vectorizedLogoMandatory',
|
|
37
|
+
label: 'vectorizedLogoMandatory',
|
|
33
38
|
type: 'checkbox',
|
|
34
39
|
},
|
|
35
40
|
{
|
|
@@ -192,9 +197,13 @@ const formFields = [
|
|
|
192
197
|
className: 'table',
|
|
193
198
|
array: {
|
|
194
199
|
disableAdd: ({ parentSchema, value }) => {
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
200
|
+
const colorAmountDependent =
|
|
201
|
+
parentSchema.colorAmountDependent &&
|
|
202
|
+
parentSchema.colorAmountDependent.value;
|
|
203
|
+
const itemAmountDependent =
|
|
204
|
+
parentSchema.itemAmountDependent &&
|
|
205
|
+
parentSchema.itemAmountDependent.value;
|
|
206
|
+
return !colorAmountDependent && !itemAmountDependent && value.length > 0;
|
|
198
207
|
},
|
|
199
208
|
addButtonLabel: 'designProductionMethod.prices.addButtonLabel',
|
|
200
209
|
columns: null,
|
|
@@ -203,13 +212,13 @@ const formFields = [
|
|
|
203
212
|
name: 'price',
|
|
204
213
|
label: 'Price',
|
|
205
214
|
type: LocalizedPriceTextField,
|
|
206
|
-
renderValue: value => <LocalizedPriceValue data={value}/>,
|
|
215
|
+
renderValue: value => <LocalizedPriceValue data={value} />,
|
|
207
216
|
},
|
|
208
217
|
{
|
|
209
218
|
name: 'priceNet',
|
|
210
219
|
label: 'Price Net',
|
|
211
220
|
type: LocalizedPriceTextField,
|
|
212
|
-
renderValue: value => <LocalizedPriceValue data={value}/>,
|
|
221
|
+
renderValue: value => <LocalizedPriceValue data={value} />,
|
|
213
222
|
},
|
|
214
223
|
{
|
|
215
224
|
name: 'colorAmountFrom',
|
|
@@ -20,7 +20,8 @@ require('../../App/i18n').use(
|
|
|
20
20
|
embroidery: 'embroidery',
|
|
21
21
|
doming: 'doming',
|
|
22
22
|
},
|
|
23
|
-
|
|
23
|
+
vectorsRequired: 'Colorize step is mandatory',
|
|
24
|
+
vectorizedLogoMandatory: 'Force using vectorized logo',
|
|
24
25
|
'Maximum Color Amount': 'Maximum Color Amount',
|
|
25
26
|
'Minimum Font Size': 'Minimum Font Size',
|
|
26
27
|
'Has Engraving Background Colors': 'Has Engraving Background Colors',
|
|
@@ -56,7 +57,8 @@ require('../../App/i18n').use(
|
|
|
56
57
|
embroidery: 'Stick',
|
|
57
58
|
doming: 'Doming',
|
|
58
59
|
},
|
|
59
|
-
|
|
60
|
+
vectorsRequired: 'Umfärben erzwingen',
|
|
61
|
+
vectorizedLogoMandatory: 'Vektorisierte Bilddaten müssen verwendet werden',
|
|
60
62
|
'Maximum Color Amount': 'Maximale Farbanzahl',
|
|
61
63
|
'Minimum Font Size': 'Minimale Schriftgröße',
|
|
62
64
|
'Has Engraving Background Colors': 'Hat Gravur-Hintergrundfarben',
|
|
@@ -175,10 +175,8 @@ export default class TemplateDefaultList extends Component {
|
|
|
175
175
|
|
|
176
176
|
getAvailableItems = () => {
|
|
177
177
|
const { list, sourceItemId } = this.props;
|
|
178
|
-
const { movedItems } = this.state;
|
|
179
178
|
|
|
180
|
-
const excludedIds =
|
|
181
|
-
excludedIds.push(sourceItemId);
|
|
179
|
+
const excludedIds = [sourceItemId];
|
|
182
180
|
|
|
183
181
|
return _.get(list, 'data', []).filter(item => excludedIds.indexOf(item.id) === -1);
|
|
184
182
|
};
|
|
@@ -188,10 +186,7 @@ export default class TemplateDefaultList extends Component {
|
|
|
188
186
|
const data = this.getAvailableItems();
|
|
189
187
|
|
|
190
188
|
const newItems = _.filter(data, (item, index) => {
|
|
191
|
-
return (
|
|
192
|
-
(selectedRows.indexOf(index) !== -1 || selectedRows === 'all') &&
|
|
193
|
-
!_.find(movedItems, { id: item.id })
|
|
194
|
-
);
|
|
189
|
+
return (selectedRows.indexOf(index) !== -1 || selectedRows === 'all');
|
|
195
190
|
});
|
|
196
191
|
|
|
197
192
|
this.setState(
|
|
@@ -222,6 +217,23 @@ export default class TemplateDefaultList extends Component {
|
|
|
222
217
|
}
|
|
223
218
|
);
|
|
224
219
|
};
|
|
220
|
+
|
|
221
|
+
isItemAtIndexMoved= (index) => {
|
|
222
|
+
const clickedItem = this.props.list.data[index];
|
|
223
|
+
|
|
224
|
+
return _.find(this.state.movedItems, { id: clickedItem.id });
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
isRowSelectable = (index) => {
|
|
228
|
+
return !this.isItemAtIndexMoved(index);
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
getRowStyle = (index) => {
|
|
232
|
+
if (this.isItemAtIndexMoved(index)) {
|
|
233
|
+
return { cursor: 'not-allowed', backgroundColor: 'lightgreen' };
|
|
234
|
+
}
|
|
235
|
+
return { cursor: 'pointer' };
|
|
236
|
+
}
|
|
225
237
|
|
|
226
238
|
onMovedItemsChange = () => {
|
|
227
239
|
const movedItemIds = this.state.movedItems.map(item => item.id);
|
|
@@ -261,7 +273,7 @@ export default class TemplateDefaultList extends Component {
|
|
|
261
273
|
data={data}
|
|
262
274
|
columns={columns}
|
|
263
275
|
shownColumns={shownColumns}
|
|
264
|
-
rowsTotal={
|
|
276
|
+
rowsTotal={total}
|
|
265
277
|
rowsPerPage={this.state.listParams.limit}
|
|
266
278
|
onRowSelection={this.onRowSelection}
|
|
267
279
|
selected={selected || this.state.selectedRows}
|
|
@@ -274,6 +286,8 @@ export default class TemplateDefaultList extends Component {
|
|
|
274
286
|
onShownColumnsChange={this.onShownColumnsChange}
|
|
275
287
|
showCheckboxes={!!this.props.onDeleteItems}
|
|
276
288
|
onMoveItems={this.onMoveItems}
|
|
289
|
+
isRowSelectable={this.isRowSelectable}
|
|
290
|
+
getRowStyle={this.getRowStyle}
|
|
277
291
|
/>
|
|
278
292
|
</Grid>
|
|
279
293
|
|
|
@@ -30,35 +30,37 @@ class UITable extends React.Component {
|
|
|
30
30
|
}
|
|
31
31
|
|
|
32
32
|
onRowSelected = (event, id, isMultiple = false) => {
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
33
|
+
if (!this.props.isRowSelectable || this.props.isRowSelectable(id) === true) {
|
|
34
|
+
const { selected } = this.state;
|
|
35
|
+
const selectedIndex = selected.indexOf(id);
|
|
36
|
+
let newSelected = [];
|
|
36
37
|
|
|
37
|
-
|
|
38
|
-
|
|
38
|
+
if (!isMultiple && selected.length === 1) {
|
|
39
|
+
if (first(selected) !== id) {
|
|
40
|
+
newSelected.push(id);
|
|
41
|
+
}
|
|
42
|
+
} else if (!isMultiple && selected.length > 1) {
|
|
39
43
|
newSelected.push(id);
|
|
44
|
+
} else if (selectedIndex === -1) {
|
|
45
|
+
newSelected = newSelected.concat(selected, id);
|
|
46
|
+
} else if (selectedIndex === 0) {
|
|
47
|
+
newSelected = newSelected.concat(selected.slice(1));
|
|
48
|
+
} else if (selectedIndex === selected.length - 1) {
|
|
49
|
+
newSelected = newSelected.concat(selected.slice(0, -1));
|
|
50
|
+
} else if (selectedIndex > 0) {
|
|
51
|
+
newSelected = newSelected.concat(
|
|
52
|
+
selected.slice(0, selectedIndex),
|
|
53
|
+
selected.slice(selectedIndex + 1)
|
|
54
|
+
);
|
|
40
55
|
}
|
|
41
|
-
} else if (!isMultiple && selected.length > 1) {
|
|
42
|
-
newSelected.push(id);
|
|
43
|
-
} else if (selectedIndex === -1) {
|
|
44
|
-
newSelected = newSelected.concat(selected, id);
|
|
45
|
-
} else if (selectedIndex === 0) {
|
|
46
|
-
newSelected = newSelected.concat(selected.slice(1));
|
|
47
|
-
} else if (selectedIndex === selected.length - 1) {
|
|
48
|
-
newSelected = newSelected.concat(selected.slice(0, -1));
|
|
49
|
-
} else if (selectedIndex > 0) {
|
|
50
|
-
newSelected = newSelected.concat(
|
|
51
|
-
selected.slice(0, selectedIndex),
|
|
52
|
-
selected.slice(selectedIndex + 1)
|
|
53
|
-
);
|
|
54
|
-
}
|
|
55
56
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
57
|
+
this.setState({
|
|
58
|
+
selected: newSelected,
|
|
59
|
+
allSelected: false,
|
|
60
|
+
});
|
|
60
61
|
|
|
61
|
-
|
|
62
|
+
this.onSelectedCallback(newSelected, event);
|
|
63
|
+
}
|
|
62
64
|
};
|
|
63
65
|
|
|
64
66
|
isSelected = id => this.state.selected.indexOf(id) !== -1;
|