@onehat/ui 0.3.30 → 0.3.32
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/package.json +1 -1
- package/src/Components/Buttons/Button.js +20 -0
- package/src/Components/Buttons/IconButton.js +68 -51
- package/src/Components/Buttons/SquareButton.js +60 -0
- package/src/Components/Container/Container.js +4 -1
- package/src/Components/Container/ScreenContainer.js +4 -1
- package/src/Components/Editor/Editor.js +15 -1
- package/src/Components/Form/Field/CKEditor/CKEditor.js +2 -1
- package/src/Components/Form/Field/Checkbox/Checkbox.js +2 -1
- package/src/Components/Form/Field/Color.js +2 -1
- package/src/Components/Form/Field/Combo/Combo.js +7 -4
- package/src/Components/Form/Field/Date.js +2 -1
- package/src/Components/Form/Field/DisplayField.js +2 -1
- package/src/Components/Form/Field/File.js +2 -1
- package/src/Components/Form/Field/Input.js +2 -1
- package/src/Components/Form/Field/Number.js +2 -1
- package/src/Components/Form/Field/RadioGroup/RadioGroup.js +2 -1
- package/src/Components/Form/Field/Text.js +2 -1
- package/src/Components/Form/Field/TextArea.js +3 -2
- package/src/Components/Form/Field/Toggle.js +2 -1
- package/src/Components/Form/Form.js +91 -44
- package/src/Components/Grid/Grid.js +67 -53
- package/src/Components/Grid/GridHeaderRow.js +5 -2
- package/src/Components/Grid/GridRow.js +8 -2
- package/src/Components/Hoc/withAlert.js +1 -3
- package/src/Components/Hoc/withComponent.js +59 -0
- package/src/Components/Hoc/withEditor.js +16 -4
- package/src/Components/Hoc/withInlineEditor.js +4 -0
- package/src/Components/Hoc/withPdfButton.js +34 -28
- package/src/Components/Hoc/withPresetButtons.js +26 -1
- package/src/Components/Hoc/withSideEditor.js +7 -1
- package/src/Components/Hoc/withWindowedEditor.js +7 -1
- package/src/Components/Icons/HighPriority.js +20 -0
- package/src/Components/Icons/LowPriority.js +20 -0
- package/src/Components/Icons/MedPriority.js +20 -0
- package/src/Components/Icons/Pdf.js +14 -0
- package/src/Components/Screens/Manager.js +5 -2
- package/src/Components/Tab/TabBar.js +5 -2
- package/src/Components/Toolbar/Pagination.js +2 -1
- package/src/Components/Tree/Tree.js +47 -40
- package/src/Components/Viewer/TagViewer.js +3 -1
- package/src/Components/Viewer/Viewer.js +58 -14
- package/src/Components/index.js +4 -0
- package/src/Functions/getIconButtonFromConfig.js +3 -1
- package/src/Components/Form/Field/Field.js +0 -14
- package/src/Components/Grid/ReactGrid.js +0 -468
- package/src/Components/Grid/SenchaGrid.js +0 -421
- package/src/Components/Grid/reactgrid.css +0 -6
package/src/Components/index.js
CHANGED
|
@@ -8,6 +8,7 @@ import ArrayRadioGroup from './Form/Field/RadioGroup/ArrayRadioGroup.js';
|
|
|
8
8
|
// import BackButton from '../Components/Buttons/BackButton.js';
|
|
9
9
|
import Blank from './Blank.js';
|
|
10
10
|
import BooleanCombo from './Form/Field/Combo/BooleanCombo.js';
|
|
11
|
+
import Button from '../Components/Buttons/Button.js';
|
|
11
12
|
// import CartButtonWithBadge from '../Components/Buttons/CartButtonWithBadge.js';
|
|
12
13
|
// import CKEditor from './Form/Field/CKEditor/CKEditor.js'; // web only
|
|
13
14
|
import Checkbox from './Form/Field/Checkbox/Checkbox.js';
|
|
@@ -37,6 +38,7 @@ import Panel from './Panel/Panel.js';
|
|
|
37
38
|
// import Picker from '../Components/Panel/Picker.js';
|
|
38
39
|
import PlusMinusButton from './Buttons/PlusMinusButton.js';
|
|
39
40
|
import RadioGroup from './Form/Field/RadioGroup/RadioGroup.js';
|
|
41
|
+
import SquareButton from './Buttons/SquareButton.js';
|
|
40
42
|
import TabPanel from './Panel/TabPanel.js';
|
|
41
43
|
import Tag from './Form/Field/Combo/Tag.js';
|
|
42
44
|
import TagViewer from './Viewer/TagViewer.js';
|
|
@@ -58,6 +60,7 @@ const components = {
|
|
|
58
60
|
// BackButton,
|
|
59
61
|
Blank,
|
|
60
62
|
BooleanCombo,
|
|
63
|
+
Button,
|
|
61
64
|
// CartButtonWithBadge,
|
|
62
65
|
Checkbox,
|
|
63
66
|
CheckboxGroup,
|
|
@@ -88,6 +91,7 @@ const components = {
|
|
|
88
91
|
// Picker,
|
|
89
92
|
PlusMinusButton,
|
|
90
93
|
RadioGroup,
|
|
94
|
+
SquareButton,
|
|
91
95
|
TabPanel,
|
|
92
96
|
Tag,
|
|
93
97
|
TagViewer,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import IconButton from '../Components/Buttons/IconButton.js';
|
|
2
2
|
import UiGlobals from '../UiGlobals.js';
|
|
3
3
|
|
|
4
|
-
export default function getIconButtonFromConfig(config, ix) {
|
|
4
|
+
export default function getIconButtonFromConfig(config, ix, parent) {
|
|
5
5
|
const
|
|
6
6
|
{
|
|
7
7
|
key,
|
|
@@ -27,6 +27,8 @@ export default function getIconButtonFromConfig(config, ix) {
|
|
|
27
27
|
};
|
|
28
28
|
return <IconButton
|
|
29
29
|
key={key || ix}
|
|
30
|
+
parent={parent}
|
|
31
|
+
reference={key || ix}
|
|
30
32
|
onPress={handler}
|
|
31
33
|
icon={icon}
|
|
32
34
|
_icon={_icon}
|
|
@@ -1,468 +0,0 @@
|
|
|
1
|
-
import { useState, useEffect, } from 'react';
|
|
2
|
-
import {
|
|
3
|
-
Column as Col,
|
|
4
|
-
Text,
|
|
5
|
-
} from 'native-base';
|
|
6
|
-
import {
|
|
7
|
-
ReactGrid,
|
|
8
|
-
} from '@silevis/reactgrid';
|
|
9
|
-
// import {
|
|
10
|
-
// // Undocumented API
|
|
11
|
-
// getCalculatedScrollLeftValueToLeft,
|
|
12
|
-
// getCalculatedScrollLeftValueToRight,
|
|
13
|
-
// getDerivedStateFromProps,
|
|
14
|
-
// getLocationFromClient,
|
|
15
|
-
// getReactGridOffsets,
|
|
16
|
-
// getScrollLeft,
|
|
17
|
-
// getSizeOfElement,
|
|
18
|
-
// getVisibleColumns,
|
|
19
|
-
// getVisibleScrollAreaWidth,
|
|
20
|
-
// getVisibleSizeOfReactGrid,
|
|
21
|
-
// recalcVisibleRange,
|
|
22
|
-
// setStyles,
|
|
23
|
-
// VS_PAGE_WIDTH,
|
|
24
|
-
// stateDeriver,
|
|
25
|
-
// updateStateProps,
|
|
26
|
-
// } from '@silevis/reactgrid';
|
|
27
|
-
import '@silevis/reactgrid/Styles.css'; // https://www.npmjs.com/package/@silevis/reactgrid
|
|
28
|
-
import './reactgrid.css';
|
|
29
|
-
// import * as Silevis from '@silevis/reactgrid';
|
|
30
|
-
// debugger;
|
|
31
|
-
// import { useReactGridState } from '@silevis/reactgrid/src/lib/Components/StateProvider';
|
|
32
|
-
import oneHatData from '@onehat/data';
|
|
33
|
-
import testProps from '../../Functions/testProps';
|
|
34
|
-
import inArray from '../../Functions/inArray';
|
|
35
|
-
import useForceUpdate from '../../Hooks/useForceUpdate';
|
|
36
|
-
import Loading from '../Messages/Loading';
|
|
37
|
-
import Toolbar from '../Toolbar/Toolbar';
|
|
38
|
-
import PaginationToolbar from '../Toolbar/PaginationToolbar';
|
|
39
|
-
import NoRecordsFound from './NoRecordsFound';
|
|
40
|
-
import AngleRight from '../Icons/AngleRight';
|
|
41
|
-
import _ from 'lodash';
|
|
42
|
-
|
|
43
|
-
// This grid makes @silevis/reactgrid a UI for @onehat/data
|
|
44
|
-
// If you want a simple grid for static data, just use <ReactGrid /> directly.
|
|
45
|
-
|
|
46
|
-
// helper fn from https://reactgrid.com/docs/4.0/2-implementing-core-features/3-column-and-row-reordering/
|
|
47
|
-
const reorderArray = (arr, idxs, to) => {
|
|
48
|
-
const
|
|
49
|
-
movedElements = arr.filter((_, idx) => idxs.includes(idx)),
|
|
50
|
-
targetIdx = Math.min(...idxs) < to ? to += 1 : to -= idxs.filter(idx => idx < to).length,
|
|
51
|
-
leftSide = arr.filter((_, idx) => idx < targetIdx && !idxs.includes(idx)),
|
|
52
|
-
rightSide = arr.filter((_, idx) => idx >= targetIdx && !idxs.includes(idx));
|
|
53
|
-
return [...leftSide, ...movedElements, ...rightSide];
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
export default function Grid(props) {
|
|
57
|
-
const
|
|
58
|
-
{
|
|
59
|
-
// #### General grid configuration ####
|
|
60
|
-
model, // @onehat/data model name
|
|
61
|
-
topToolbar,
|
|
62
|
-
bottomToolbar = 'pagination',
|
|
63
|
-
columnsConfig = [], // json configurations for each column in format:
|
|
64
|
-
// [{
|
|
65
|
-
// text, // header
|
|
66
|
-
// field, // field name from @onehat/data model
|
|
67
|
-
// type, // specify which column type to use (custom or built-in)
|
|
68
|
-
// editable = false,
|
|
69
|
-
// editor,
|
|
70
|
-
// format,
|
|
71
|
-
// renderer, // React component will render the output
|
|
72
|
-
// resizable = true,
|
|
73
|
-
// sortable = true,
|
|
74
|
-
// width = 150, // default of ReactGrid
|
|
75
|
-
// }]
|
|
76
|
-
showHeaders = true,
|
|
77
|
-
showRowExpander = false,
|
|
78
|
-
enableEditors = false,
|
|
79
|
-
cellEditing = false,
|
|
80
|
-
rowEditing = false,
|
|
81
|
-
contextMenuOptions = [], // json configurations for each menu option in format:
|
|
82
|
-
// [{
|
|
83
|
-
// id;
|
|
84
|
-
// label;
|
|
85
|
-
// handler: (selectedRowIds, selectedColIds, selectionMode, selectedRanges) => {},
|
|
86
|
-
// }]
|
|
87
|
-
// columnProps = {},
|
|
88
|
-
// getRowProps = () => {
|
|
89
|
-
// return {
|
|
90
|
-
// bg: '#fff',
|
|
91
|
-
// p: 2,
|
|
92
|
-
// };
|
|
93
|
-
// },
|
|
94
|
-
gridProps = {},
|
|
95
|
-
pullToRefresh = true,
|
|
96
|
-
hideNavColumn = true,
|
|
97
|
-
disableReloadOnChangeFilters = false,
|
|
98
|
-
noneFoundText,
|
|
99
|
-
|
|
100
|
-
// #### ReactGrid overrides ####
|
|
101
|
-
// properties
|
|
102
|
-
customCellTemplates,
|
|
103
|
-
focusLocation,
|
|
104
|
-
initialFocusLocation,
|
|
105
|
-
highlights,
|
|
106
|
-
stickyTopRows = 0,
|
|
107
|
-
stickyBottomRows = 0,
|
|
108
|
-
stickyLeftColumns = 0,
|
|
109
|
-
stickyRightColumns = 0,
|
|
110
|
-
enableFillHandle,
|
|
111
|
-
enableRangeSelection = true,
|
|
112
|
-
enableRowSelection = false,
|
|
113
|
-
enableColumnSelection = false,
|
|
114
|
-
labels,
|
|
115
|
-
enableFullWidthHeader = false,
|
|
116
|
-
enableGroupIdRender = false,
|
|
117
|
-
horizontalStickyBreakpoint,
|
|
118
|
-
verticalStickyBreakpoint,
|
|
119
|
-
disableVirtualScrolling = false,
|
|
120
|
-
|
|
121
|
-
// ReactGrid events
|
|
122
|
-
onCellsChanged,
|
|
123
|
-
onFocusLocationChanged,
|
|
124
|
-
onFocusLocationChanging,
|
|
125
|
-
// onColumnResized,
|
|
126
|
-
// onRowsReordered,
|
|
127
|
-
// onColumnsReordered,
|
|
128
|
-
onContextMenu,
|
|
129
|
-
// canReorderColumns,
|
|
130
|
-
// canReorderRows,
|
|
131
|
-
} = props,
|
|
132
|
-
Repository = model && oneHatData.getRepository(model),
|
|
133
|
-
forceUpdate = useForceUpdate(),
|
|
134
|
-
[isReady, setIsReady] = useState(false),
|
|
135
|
-
[isLoading, setIsLoading] = useState(false),
|
|
136
|
-
onRefresh = () => Repository.load(),
|
|
137
|
-
onColumnsReordered = (targetColumnId, columnIds) => {
|
|
138
|
-
const
|
|
139
|
-
to = columns.findIndex((column) => column.columnId === targetColumnId),
|
|
140
|
-
columnIdxs = columnIds.map((columnId) => columns.findIndex((c) => c.columnId === columnId)),
|
|
141
|
-
reorderedColumns = reorderArray(columns, columnIdxs, to);
|
|
142
|
-
setColumns(reorderedColumns);
|
|
143
|
-
},
|
|
144
|
-
onRowsReordered = () => {},
|
|
145
|
-
onColumnResized = (targetColumnId, newWidth, arr) => {
|
|
146
|
-
const column = _.find(columns, (column) => column.columnId === targetColumnId);
|
|
147
|
-
column.width = newWidth;
|
|
148
|
-
forceUpdate();
|
|
149
|
-
},
|
|
150
|
-
canReorderColumns = (targetColumnId, columnIds, beforeAfter) => {
|
|
151
|
-
// Verify that *all* columns in selection can be reordered
|
|
152
|
-
let canReorder = true;
|
|
153
|
-
_.each(columns, (column) => {
|
|
154
|
-
if (inArray(column.columnId, columnIds) && !column.reorderable) {
|
|
155
|
-
canReorder = false;
|
|
156
|
-
return false;
|
|
157
|
-
}
|
|
158
|
-
});
|
|
159
|
-
|
|
160
|
-
// Verify that targetColumn can be reordered
|
|
161
|
-
const targetColumn = _.find(columns, (column) => column.columnId === targetColumnId);
|
|
162
|
-
if (!targetColumn.reorderable) {
|
|
163
|
-
canReorder = false;
|
|
164
|
-
}
|
|
165
|
-
|
|
166
|
-
return canReorder;
|
|
167
|
-
},
|
|
168
|
-
canReorderRows = (targetRowId, rowIds) => {
|
|
169
|
-
return targetRowId !== 'header'; // Prevent reordering rows to be above header
|
|
170
|
-
},
|
|
171
|
-
getCellType = (field) => {
|
|
172
|
-
const
|
|
173
|
-
schema = Repository.schema,
|
|
174
|
-
propertyDefinition = schema.getPropertyDefinition(field);
|
|
175
|
-
switch(propertyDefinition.type) {
|
|
176
|
-
case 'base64':
|
|
177
|
-
propsToPass[type] = 'text';
|
|
178
|
-
break;
|
|
179
|
-
case 'boolean':
|
|
180
|
-
break;
|
|
181
|
-
case 'currency':
|
|
182
|
-
break;
|
|
183
|
-
case 'date':
|
|
184
|
-
propsToPass[type] = 'date';
|
|
185
|
-
break;
|
|
186
|
-
case 'dateTime':
|
|
187
|
-
break;
|
|
188
|
-
case 'file':
|
|
189
|
-
propsToPass[type] = 'text';
|
|
190
|
-
break;
|
|
191
|
-
case 'float':
|
|
192
|
-
break;
|
|
193
|
-
case 'integer':
|
|
194
|
-
break;
|
|
195
|
-
case 'json':
|
|
196
|
-
propsToPass[type] = 'text';
|
|
197
|
-
break;
|
|
198
|
-
case 'oercent':
|
|
199
|
-
break;
|
|
200
|
-
case 'oercentInt':
|
|
201
|
-
break;
|
|
202
|
-
case 'string':
|
|
203
|
-
propsToPass[type] = 'text';
|
|
204
|
-
break;
|
|
205
|
-
case 'time':
|
|
206
|
-
break;
|
|
207
|
-
case 'uuid':
|
|
208
|
-
propsToPass[type] = 'text';
|
|
209
|
-
break;
|
|
210
|
-
default:
|
|
211
|
-
propsToPass[type] = 'text';
|
|
212
|
-
}
|
|
213
|
-
},
|
|
214
|
-
getColumns = () => {
|
|
215
|
-
const columns = _.map(columnsConfig, (columnConfig) => {
|
|
216
|
-
const {
|
|
217
|
-
field,
|
|
218
|
-
resizable = true,
|
|
219
|
-
sortable = true,
|
|
220
|
-
width = 150, // default of ReactGrid
|
|
221
|
-
} = columnConfig;
|
|
222
|
-
return {
|
|
223
|
-
columnId: field,
|
|
224
|
-
reorderable: sortable,
|
|
225
|
-
resizable,
|
|
226
|
-
width,
|
|
227
|
-
};
|
|
228
|
-
});
|
|
229
|
-
if (!hideNavColumn) {
|
|
230
|
-
columns.push({
|
|
231
|
-
columnId: 'nav',
|
|
232
|
-
reorderable: false,
|
|
233
|
-
resizable: false,
|
|
234
|
-
width: 10,
|
|
235
|
-
});
|
|
236
|
-
}
|
|
237
|
-
|
|
238
|
-
// Try to simulate 'flex' width for a single column
|
|
239
|
-
// const flexColumnConfig = _.find(columnsConfig, (columnConfig) => !!columnConfig.flex);
|
|
240
|
-
// if (flexColumnConfig) {
|
|
241
|
-
// const flexColumn = _.find(columns, (column) => column.columnId === flexColumnConfig.field);
|
|
242
|
-
// const r = ref;
|
|
243
|
-
// debugger;
|
|
244
|
-
// }
|
|
245
|
-
return columns;
|
|
246
|
-
},
|
|
247
|
-
getRows = () => {
|
|
248
|
-
const
|
|
249
|
-
entities = Repository.getEntitiesOnPage(),
|
|
250
|
-
rows = [];
|
|
251
|
-
|
|
252
|
-
if (showHeaders) {
|
|
253
|
-
// Build header row
|
|
254
|
-
const headerCells = [];
|
|
255
|
-
_.each(columns, (column) => {
|
|
256
|
-
// These columns may have been reordered, so match them with columnConfig setting, but user ordering of columns
|
|
257
|
-
const columnConfig = _.find(columnsConfig, (columnConfig) => {
|
|
258
|
-
return columnConfig.field === column.columnId;
|
|
259
|
-
});
|
|
260
|
-
if (!columnConfig) { // e.g rightColumn (nav) cell
|
|
261
|
-
return;
|
|
262
|
-
}
|
|
263
|
-
headerCells.push({
|
|
264
|
-
type: 'header',
|
|
265
|
-
text: columnConfig.text,
|
|
266
|
-
});
|
|
267
|
-
});
|
|
268
|
-
if (!hideNavColumn) {
|
|
269
|
-
headerCells.push({
|
|
270
|
-
type: 'header',
|
|
271
|
-
text: '',
|
|
272
|
-
});
|
|
273
|
-
}
|
|
274
|
-
rows.push({ rowId: 'header', cells: headerCells, });
|
|
275
|
-
}
|
|
276
|
-
|
|
277
|
-
_.each(entities, (entity, ix) => {
|
|
278
|
-
// Build the cells for this row, based on previously defined columns
|
|
279
|
-
const cells = [];
|
|
280
|
-
_.each(columns, (column) => {
|
|
281
|
-
// These columns may have been reordered, so match them with columnConfig setting, but user ordering of columns
|
|
282
|
-
const columnConfig = _.find(columnsConfig, (columnConfig) => {
|
|
283
|
-
return columnConfig.field === column.columnId;
|
|
284
|
-
});
|
|
285
|
-
if (!columnConfig) { // e.g rightColumn (nav) cell
|
|
286
|
-
return;
|
|
287
|
-
}
|
|
288
|
-
const {
|
|
289
|
-
type = 'text', // specify which Column type to use for this cell (custom or built-in)
|
|
290
|
-
field,
|
|
291
|
-
placeholder,
|
|
292
|
-
validator,
|
|
293
|
-
renderer,
|
|
294
|
-
checkedText,
|
|
295
|
-
uncheckedText,
|
|
296
|
-
format,
|
|
297
|
-
} = columnConfig,
|
|
298
|
-
property = entity.properties[field],
|
|
299
|
-
propsToPass = {
|
|
300
|
-
type,
|
|
301
|
-
},
|
|
302
|
-
propsToCheck = {
|
|
303
|
-
placeholder,
|
|
304
|
-
validator,
|
|
305
|
-
renderer,
|
|
306
|
-
checkedText,
|
|
307
|
-
uncheckedText,
|
|
308
|
-
// date,
|
|
309
|
-
format,
|
|
310
|
-
// text,
|
|
311
|
-
};
|
|
312
|
-
_.each(propsToCheck, (prop, name) => {
|
|
313
|
-
if (!_.isEmpty(prop)) {
|
|
314
|
-
propsToPass[name] = prop;
|
|
315
|
-
}
|
|
316
|
-
});
|
|
317
|
-
|
|
318
|
-
// Determine value for this cell
|
|
319
|
-
switch(type) {
|
|
320
|
-
case 'text':
|
|
321
|
-
propsToPass.text = property.displayValue;
|
|
322
|
-
break;
|
|
323
|
-
default:
|
|
324
|
-
}
|
|
325
|
-
|
|
326
|
-
cells.push(propsToPass);
|
|
327
|
-
}); // end each(columns)
|
|
328
|
-
|
|
329
|
-
if (!hideNavColumn) {
|
|
330
|
-
cells.push({
|
|
331
|
-
type: 'text',
|
|
332
|
-
text: '',
|
|
333
|
-
renderer: () => <AngleRight
|
|
334
|
-
color="#aaa"
|
|
335
|
-
variant="ghost"
|
|
336
|
-
alignSelf="center"
|
|
337
|
-
ml={1}
|
|
338
|
-
/>,
|
|
339
|
-
});
|
|
340
|
-
}
|
|
341
|
-
|
|
342
|
-
rows.push({
|
|
343
|
-
rowId: entity.id,
|
|
344
|
-
cells,
|
|
345
|
-
});
|
|
346
|
-
});
|
|
347
|
-
return rows;
|
|
348
|
-
},
|
|
349
|
-
[columns, setColumns] = useState(getColumns());
|
|
350
|
-
|
|
351
|
-
useEffect(() => {
|
|
352
|
-
const
|
|
353
|
-
setTrue = () => setIsLoading(true),
|
|
354
|
-
setFalse = () => setIsLoading(false),
|
|
355
|
-
onChangeFilters = () => {
|
|
356
|
-
if (!Repository.isAutoLoad && Repository.isLoaded && !disableReloadOnChangeFilters) {
|
|
357
|
-
Repository.reload();
|
|
358
|
-
}
|
|
359
|
-
};
|
|
360
|
-
|
|
361
|
-
Repository.on('beforeLoad', setTrue);
|
|
362
|
-
Repository.on('load', setFalse);
|
|
363
|
-
Repository.ons(['changePage', 'changePageSize', 'changeData', 'change'], forceUpdate);
|
|
364
|
-
Repository.on('changeFilters', onChangeFilters);
|
|
365
|
-
|
|
366
|
-
setIsReady(true);
|
|
367
|
-
|
|
368
|
-
return () => {
|
|
369
|
-
Repository.off('beforeLoad', setTrue);
|
|
370
|
-
Repository.off('load', setFalse);
|
|
371
|
-
Repository.offs(['changePage', 'changePageSize', 'changeData', 'change'], forceUpdate);
|
|
372
|
-
Repository.off('changeFilters', onChangeFilters);
|
|
373
|
-
};
|
|
374
|
-
}, [Repository, disableReloadOnChangeFilters, forceUpdate]);
|
|
375
|
-
|
|
376
|
-
if (!Repository) {
|
|
377
|
-
throw Error('No Repository!');
|
|
378
|
-
}
|
|
379
|
-
|
|
380
|
-
if (!isReady) {
|
|
381
|
-
return null;
|
|
382
|
-
}
|
|
383
|
-
|
|
384
|
-
const
|
|
385
|
-
propsToPass = {
|
|
386
|
-
enableRangeSelection,
|
|
387
|
-
enableRowSelection,
|
|
388
|
-
enableColumnSelection,
|
|
389
|
-
enableFullWidthHeader,
|
|
390
|
-
enableGroupIdRender,
|
|
391
|
-
stickyTopRows,
|
|
392
|
-
stickyBottomRows,
|
|
393
|
-
stickyLeftColumns,
|
|
394
|
-
stickyRightColumns,
|
|
395
|
-
disableVirtualScrolling,
|
|
396
|
-
},
|
|
397
|
-
propsToCheck = {
|
|
398
|
-
customCellTemplates,
|
|
399
|
-
focusLocation,
|
|
400
|
-
initialFocusLocation,
|
|
401
|
-
highlights,
|
|
402
|
-
enableFillHandle,
|
|
403
|
-
labels,
|
|
404
|
-
horizontalStickyBreakpoint,
|
|
405
|
-
verticalStickyBreakpoint,
|
|
406
|
-
|
|
407
|
-
onCellsChanged,
|
|
408
|
-
onFocusLocationChanged,
|
|
409
|
-
onFocusLocationChanging,
|
|
410
|
-
// onColumnResized,
|
|
411
|
-
// onRowsReordered,
|
|
412
|
-
// onColumnsReordered,
|
|
413
|
-
onContextMenu,
|
|
414
|
-
// canReorderColumns,
|
|
415
|
-
// canReorderRows,
|
|
416
|
-
};
|
|
417
|
-
_.each(propsToCheck, (prop, name) => {
|
|
418
|
-
if (!_.isEmpty(prop)) {
|
|
419
|
-
propsToPass[name] = prop;
|
|
420
|
-
}
|
|
421
|
-
});
|
|
422
|
-
|
|
423
|
-
propsToPass.onColumnsReordered = onColumnsReordered;
|
|
424
|
-
propsToPass.onColumnResized = onColumnResized;
|
|
425
|
-
propsToPass.canReorderColumns = canReorderColumns;
|
|
426
|
-
propsToPass.canReorderRows = canReorderRows;
|
|
427
|
-
propsToPass.columns = columns;
|
|
428
|
-
propsToPass.rows = getRows();
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
propsToPass.onContextMenu = (selectedRowIds, selectedColIds, selectionMode, menuOptions) => {
|
|
432
|
-
debugger;
|
|
433
|
-
};
|
|
434
|
-
propsToPass.onCellsChanged = (a,b,c,d,e) => {
|
|
435
|
-
debugger;
|
|
436
|
-
};
|
|
437
|
-
propsToPass.onFocusLocationChanged = (pos) => {
|
|
438
|
-
debugger;
|
|
439
|
-
};
|
|
440
|
-
propsToPass.onFocusLocationChanging = (pos) => {
|
|
441
|
-
return true;
|
|
442
|
-
};
|
|
443
|
-
// special props
|
|
444
|
-
// data,
|
|
445
|
-
// treeData,
|
|
446
|
-
|
|
447
|
-
return <Col
|
|
448
|
-
{...testProps('GridPanelContainer')}
|
|
449
|
-
flex={1}
|
|
450
|
-
w="100%"
|
|
451
|
-
>
|
|
452
|
-
{topToolbar && <Toolbar>{topToolbar}</Toolbar>}
|
|
453
|
-
|
|
454
|
-
{isLoading && <Col flex={1}><Loading /></Col>}
|
|
455
|
-
|
|
456
|
-
{!isLoading && (!Repository.getEntitiesOnPage().length ? <NoRecordsFound text={noneFoundText} onRefresh={onRefresh} /> :
|
|
457
|
-
|
|
458
|
-
<ReactGrid
|
|
459
|
-
{...propsToPass}
|
|
460
|
-
{...gridProps}
|
|
461
|
-
/>)}
|
|
462
|
-
|
|
463
|
-
{bottomToolbar && (bottomToolbar === 'pagination' ?
|
|
464
|
-
<PaginationToolbar Repository={Repository} />:
|
|
465
|
-
<Toolbar>{bottomToolbar}</Toolbar>)}
|
|
466
|
-
</Col>;
|
|
467
|
-
|
|
468
|
-
}
|