@kineticdata/react 6.1.0 → 6.1.1

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.
Files changed (95) hide show
  1. package/README.md +110 -110
  2. package/assets/task/icons/defer.svg +12 -12
  3. package/assets/task/icons/drag-handle.svg +3 -3
  4. package/assets/task/icons/filter.svg +11 -11
  5. package/assets/task/icons/loop.svg +10 -10
  6. package/assets/task/icons/plus_small.svg +5 -5
  7. package/assets/task/icons/routine.svg +9 -9
  8. package/assets/task/icons/scale-minus.svg +11 -11
  9. package/assets/task/icons/scale-plus.svg +13 -13
  10. package/assets/task/icons/start.svg +11 -11
  11. package/assets/task/icons/stop.svg +8 -8
  12. package/lib/apis/core/activity.js +4 -4
  13. package/lib/apis/core/attributeDefinitions.js +55 -0
  14. package/lib/apis/core/attributeDefinitions.test.js +7 -4
  15. package/lib/apis/core/authentication.js +12 -1
  16. package/lib/apis/core/bridgeModels.test.js +46 -23
  17. package/lib/apis/core/bridgedresources.js +41 -41
  18. package/lib/apis/core/fileResources.js +2 -6
  19. package/lib/apis/core/forms.js +51 -2
  20. package/lib/apis/core/forms.test.js +32 -19
  21. package/lib/apis/core/kapps.js +49 -0
  22. package/lib/apis/core/kapps.test.js +16 -10
  23. package/lib/apis/core/notices.js +7 -0
  24. package/lib/apis/core/securityPolicyDefinitions.test.js +7 -4
  25. package/lib/apis/core/space.js +18 -0
  26. package/lib/apis/core/space.test.js +16 -10
  27. package/lib/apis/core/submissionActivities.js +38 -0
  28. package/lib/apis/core/submissions.js +62 -0
  29. package/lib/apis/core/translations.test.js +126 -55
  30. package/lib/apis/core/userPreferences.js +59 -0
  31. package/lib/apis/core/webApis.js +32 -2
  32. package/lib/apis/core/webhooks.test.js +7 -4
  33. package/lib/apis/http.js +22 -11
  34. package/lib/apis/index.js +24 -0
  35. package/lib/apis/integrator/index.js +95 -20
  36. package/lib/components/common/AttributeSelect.js +1 -0
  37. package/lib/components/common/BridgeSelect.js +1 -0
  38. package/lib/components/common/ConnectionSelect.js +2 -1
  39. package/lib/components/common/FormSelect.js +1 -0
  40. package/lib/components/common/NodeSelect.js +1 -0
  41. package/lib/components/common/StaticSelect.js +1 -0
  42. package/lib/components/common/TeamSelect.js +1 -0
  43. package/lib/components/common/ToastContainer.js +3 -3
  44. package/lib/components/common/Typeahead.js +3 -0
  45. package/lib/components/common/UserSelect.js +1 -0
  46. package/lib/components/common/authentication/AuthenticationContainer.js +121 -55
  47. package/lib/components/common/preferences/PreferencesProvider.js +461 -0
  48. package/lib/components/core/attribute_definition/AttributeDefinitionForm.js +7 -7
  49. package/lib/components/core/field_definition/FieldDefinitionForm.js +3 -3
  50. package/lib/components/core/form/FormTable.js +0 -1
  51. package/lib/components/core/integration/IntegrationTable.js +3 -0
  52. package/lib/components/core/space/SpaceForm.js +14 -14
  53. package/lib/components/core/submission/SubmissionActivityForm.js +79 -0
  54. package/lib/components/core/submission/SubmissionForm.js +12 -2
  55. package/lib/components/core/translation/EntryTable.js +8 -7
  56. package/lib/components/core/user/UserForm.js +2 -0
  57. package/lib/components/core/user/UserTable.js +4 -4
  58. package/lib/components/form/Form.js +14 -3
  59. package/lib/components/form/FormState.js +1 -1
  60. package/lib/components/form/SimpleForm.js +2 -2
  61. package/lib/components/index.js +68 -0
  62. package/lib/components/integrator/connection/ConnectionForm.js +62 -18
  63. package/lib/components/integrator/connection/ConnectionTable.js +5 -3
  64. package/lib/components/integrator/connection/config_fields/http.js +19 -19
  65. package/lib/components/integrator/connection/config_fields/sql.js +123 -0
  66. package/lib/components/integrator/integrationTypes.js +27 -5
  67. package/lib/components/integrator/operation/OperationForm.js +24 -4
  68. package/lib/components/integrator/operation/OperationTable.js +3 -5
  69. package/lib/components/integrator/operation/config_fields/http.js +3 -2
  70. package/lib/components/integrator/operation/config_fields/sql.js +81 -0
  71. package/lib/components/system/SystemUserForm.js +2 -0
  72. package/lib/components/table/Table.js +75 -15
  73. package/lib/components/table/Table.redux.js +296 -72
  74. package/lib/components/table/defaults/FilterControl.js +24 -0
  75. package/lib/components/table/defaults/index.js +2 -0
  76. package/lib/components/table/tests/Table.test.js +22 -22
  77. package/lib/components/table/tests/components.js +9 -2
  78. package/lib/components/task/builder/Connector.js +51 -41
  79. package/lib/components/task/builder/Node.js +25 -38
  80. package/lib/components/task/builder/SvgCanvas.js +3 -17
  81. package/lib/components/task/builder/TreeBuilder.js +1 -2
  82. package/lib/components/task/builder/builder.redux.js +52 -32
  83. package/lib/components/task/builder/helpers.js +35 -5
  84. package/lib/components/task/common/UsageTable.js +8 -1
  85. package/lib/components/task/handlers/HandlerTable.js +9 -18
  86. package/lib/components/task/runs/RunTable.js +6 -10
  87. package/lib/components/task/workflows/LinkedWorkflowTable.js +14 -9
  88. package/lib/components/task/workflows/WorkflowTable.js +25 -24
  89. package/lib/helpers/index.js +18 -2
  90. package/lib/index.js +2 -1
  91. package/lib/saga.js +4 -4
  92. package/lib/store.js +2 -1
  93. package/package.json +5 -6
  94. package/proxyhelper.js +201 -201
  95. package/CHANGELOG.md +0 -116
@@ -5,14 +5,17 @@ var _regeneratorRuntime3 = require("@babel/runtime/helpers/regeneratorRuntime")[
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports.unmountTable = exports.serverSideGotoPage = exports.refetchTable = exports.operations = exports.mountTable = exports.isValueEmpty = exports.isClientSide = exports.hasData = exports.generateInitialSortColumn = exports.generateFilters = exports.filterFormKey = exports.configureTable = exports.clientSideRowFilter = exports.clientSideGotoPage = exports.clearFilters = void 0;
9
- var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/toConsumableArray"));
8
+ exports.unmountTable = exports.toggleFilterField = exports.serverSideGotoPage = exports.resetFilterForm = exports.reloadTablePage = exports.refetchTable = exports.operations = exports.mountTable = exports.isValueEmpty = exports.isClientSide = exports.hasTableFiltersApplied = exports.hasData = exports.generateInitialSortColumn = exports.generateFilters = exports.findTableKey = exports.filterFormKey = exports.configureTable = exports.clientSideRowFilter = exports.clientSideGotoPage = exports.clearFilters = void 0;
9
+ var _createForOfIteratorHelper2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/createForOfIteratorHelper"));
10
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/slicedToArray"));
10
11
  var _regeneratorRuntime2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/regeneratorRuntime"));
12
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/toConsumableArray"));
11
13
  var _immutable = require("immutable");
12
14
  var _isarray = _interopRequireDefault(require("isarray"));
13
15
  var _effects = require("redux-saga/effects");
14
16
  var _store = require("../../store");
15
17
  var _ = require("..");
18
+ var _Form = require("../form/Form");
16
19
  var _marked = /*#__PURE__*/_regeneratorRuntime3().mark(pollingTask);
17
20
  var hasData = exports.hasData = function hasData(data) {
18
21
  return (0, _isarray["default"])(data) || data instanceof _immutable.List;
@@ -25,10 +28,10 @@ var getDataSource = function getDataSource(tableData) {
25
28
  var dataSourceFn = tableData.get('dataSource') || noop;
26
29
  return dataSourceFn(tableOptions);
27
30
  };
28
- var isClientSide = exports.isClientSide = function isClientSide(tableData) {
31
+ var isClientSide = exports.isClientSide = function isClientSide(tableData, ignoreData) {
29
32
  var data = tableData.get('data');
30
33
  var dataSource = getDataSource(tableData);
31
- return hasData(data) && (dataSource && (dataSource.clientSideSearch === true || dataSource.clientSide) || !dataSource);
34
+ return (hasData(data) || ignoreData) && (dataSource && (dataSource.clientSideSearch === true || dataSource.clientSide) || !dataSource);
32
35
  };
33
36
  var clientSideGotoPage = exports.clientSideGotoPage = function clientSideGotoPage(tableData, pageNumber) {
34
37
  var data = tableData.get('data');
@@ -73,6 +76,9 @@ var serverSidePrevPage = function serverSidePrevPage(tableData) {
73
76
  return t.set('nextPageToken', t.get('pageTokens').last());
74
77
  });
75
78
  };
79
+ var serverSideReloadPage = function serverSideReloadPage(tableData) {
80
+ return tableData.set('loading', true).set('nextPageToken', tableData.get('pageTokens').last());
81
+ };
76
82
 
77
83
  // should be '' except if op is between, or in
78
84
  var getInitialFilterValue = function getInitialFilterValue(column) {
@@ -122,7 +128,10 @@ var generateInitialSortColumn = exports.generateInitialSortColumn = function gen
122
128
  tableOptions = _ref3$payload.tableOptions,
123
129
  onValidateFilters = _ref3$payload.onValidateFilters,
124
130
  filterForm = _ref3$payload.filterForm,
125
- onFetch = _ref3$payload.onFetch;
131
+ filterSet = _ref3$payload.filterSet,
132
+ onFetch = _ref3$payload.onFetch,
133
+ onColumnSort = _ref3$payload.onColumnSort,
134
+ onColumnToggle = _ref3$payload.onColumnToggle;
126
135
  return !state.getIn(['tables', tableKey, 'mounted']) ? state : state.hasIn(['tables', tableKey, 'configured']) ? state.setIn(['tables', tableKey, 'initialize'], false) : state.mergeIn(['tables', tableKey], (0, _immutable.Map)({
127
136
  data: hasData(data) ? (0, _immutable.fromJS)(data) : data,
128
137
  extraData: null,
@@ -145,11 +154,14 @@ var generateInitialSortColumn = exports.generateInitialSortColumn = function gen
145
154
  error: null,
146
155
  // Filtering
147
156
  filterForm: filterForm,
157
+ filterSet: filterSet,
148
158
  filters: generateFilters(tableKey, columns),
149
159
  appliedFilters: generateFilters(tableKey, columns),
150
160
  validFilters: true,
151
161
  onValidateFilters: onValidateFilters,
152
162
  onFetch: onFetch,
163
+ onColumnSort: onColumnSort,
164
+ onColumnToggle: onColumnToggle,
153
165
  configured: true,
154
166
  initialize: true
155
167
  }));
@@ -173,45 +185,63 @@ var generateInitialSortColumn = exports.generateInitialSortColumn = function gen
173
185
  });
174
186
  });
175
187
  },
176
- SET_ROWS: function SET_ROWS(state, _ref5) {
188
+ TOGGLE_FILTER: function TOGGLE_FILTER(state, _ref5) {
177
189
  var _ref5$payload = _ref5.payload,
178
190
  tableKey = _ref5$payload.tableKey,
179
- rows = _ref5$payload.rows,
180
- data = _ref5$payload.data,
181
- _ref5$payload$extraDa = _ref5$payload.extraData,
182
- extraData = _ref5$payload$extraDa === void 0 ? null : _ref5$payload$extraDa,
183
- nextPageToken = _ref5$payload.nextPageToken,
184
- count = _ref5$payload.count,
185
- _ref5$payload$error = _ref5$payload.error,
186
- error = _ref5$payload$error === void 0 ? null : _ref5$payload$error;
191
+ filters = _ref5$payload.filters;
192
+ return state.updateIn(['tables', tableKey, 'filterSet'], function (filterSet) {
193
+ return !filterSet ? filters : filters.reduce(function (set, filter) {
194
+ return set.includes(filter) ? set.filter(function (f) {
195
+ return f !== filter;
196
+ }) : [].concat((0, _toConsumableArray2["default"])(set), [filter]);
197
+ }, filterSet);
198
+ });
199
+ },
200
+ SET_ROWS: function SET_ROWS(state, _ref6) {
201
+ var _ref6$payload = _ref6.payload,
202
+ tableKey = _ref6$payload.tableKey,
203
+ rows = _ref6$payload.rows,
204
+ data = _ref6$payload.data,
205
+ _ref6$payload$extraDa = _ref6$payload.extraData,
206
+ extraData = _ref6$payload$extraDa === void 0 ? null : _ref6$payload$extraDa,
207
+ nextPageToken = _ref6$payload.nextPageToken,
208
+ count = _ref6$payload.count,
209
+ _ref6$payload$error = _ref6$payload.error,
210
+ error = _ref6$payload$error === void 0 ? null : _ref6$payload$error;
187
211
  return state.updateIn(['tables', tableKey], function (table) {
188
212
  return table && table.set('rows', rows).set('data', data).set('extraData', extraData).set('currentPageToken', nextPageToken).set('nextPageToken', null).set('count', count).set('error', error).set('initializing', false).set('loading', false);
189
213
  });
190
214
  },
191
- NEXT_PAGE: function NEXT_PAGE(state, _ref6) {
192
- var tableKey = _ref6.payload.tableKey;
215
+ NEXT_PAGE: function NEXT_PAGE(state, _ref7) {
216
+ var tableKey = _ref7.payload.tableKey;
193
217
  return state.updateIn(['tables', tableKey], function (tableData) {
194
218
  return isClientSide(tableData) ? clientSideNextPage(tableData) : serverSideNextPage(tableData);
195
219
  }).setIn(['tables', tableKey, 'error'], null);
196
220
  },
197
- PREV_PAGE: function PREV_PAGE(state, _ref7) {
198
- var tableKey = _ref7.payload.tableKey;
221
+ PREV_PAGE: function PREV_PAGE(state, _ref8) {
222
+ var tableKey = _ref8.payload.tableKey;
199
223
  return state.updateIn(['tables', tableKey], function (tableData) {
200
224
  return isClientSide(tableData) ? clientSidePrevPage(tableData) : serverSidePrevPage(tableData);
201
225
  }).setIn(['tables', tableKey, 'error'], null);
202
226
  },
203
- GOTO_PAGE: function GOTO_PAGE(state, _ref8) {
204
- var _ref8$payload = _ref8.payload,
205
- tableKey = _ref8$payload.tableKey,
206
- pageNumber = _ref8$payload.pageNumber;
227
+ GOTO_PAGE: function GOTO_PAGE(state, _ref9) {
228
+ var _ref9$payload = _ref9.payload,
229
+ tableKey = _ref9$payload.tableKey,
230
+ pageNumber = _ref9$payload.pageNumber;
207
231
  return state.updateIn(['tables', tableKey], function (tableData) {
208
232
  return isClientSide(tableData) ? clientSideGotoPage(tableData, pageNumber) : serverSideGotoPage(tableData, pageNumber);
209
233
  }).setIn(['tables', tableKey, 'error'], null);
210
234
  },
211
- SORT_COLUMN: function SORT_COLUMN(state, _ref9) {
212
- var _ref9$payload = _ref9.payload,
213
- tableKey = _ref9$payload.tableKey,
214
- column = _ref9$payload.column;
235
+ RELOAD_PAGE: function RELOAD_PAGE(state, _ref10) {
236
+ var tableKey = _ref10.payload.tableKey;
237
+ return state.hasIn(['tables', tableKey]) ? state.updateIn(['tables', tableKey], function (tableData) {
238
+ return tableData.get('configured') ? (isClientSide(tableData) ? tableData : serverSideReloadPage(tableData)).set('loading', true).set('data', null).set('error', null) : tableData;
239
+ }) : state;
240
+ },
241
+ SORT_COLUMN: function SORT_COLUMN(state, _ref11) {
242
+ var _ref11$payload = _ref11.payload,
243
+ tableKey = _ref11$payload.tableKey,
244
+ column = _ref11$payload.column;
215
245
  return state.updateIn(['tables', tableKey], function (t) {
216
246
  var sortColumn = t.get('sortColumn');
217
247
  var sortDirection = t.get('sortDirection');
@@ -222,48 +252,49 @@ var generateInitialSortColumn = exports.generateInitialSortColumn = function gen
222
252
  .set('sortDirection', sortColumn === column ? sortDirection === 'asc' ? 'desc' : 'asc' : 'asc').set('sortColumn', column).set('error', null);
223
253
  });
224
254
  },
225
- SET_FILTER: function SET_FILTER(state, _ref10) {
226
- var _ref10$payload = _ref10.payload,
227
- tableKey = _ref10$payload.tableKey,
228
- filter = _ref10$payload.filter,
229
- value = _ref10$payload.value;
255
+ SET_FILTER: function SET_FILTER(state, _ref12) {
256
+ var _ref12$payload = _ref12.payload,
257
+ tableKey = _ref12$payload.tableKey,
258
+ filter = _ref12$payload.filter,
259
+ value = _ref12$payload.value;
230
260
  return state.updateIn(['tables', tableKey], function (table) {
231
261
  return table.setIn(['filters', filter, 'value'], value).set('validFilters', evaluateValidFilters(table));
232
262
  });
233
263
  },
234
- APPLY_FILTERS: function APPLY_FILTERS(state, _ref11) {
235
- var tableKey = _ref11.payload.tableKey;
264
+ APPLY_FILTERS: function APPLY_FILTERS(state, _ref13) {
265
+ var tableKey = _ref13.payload.tableKey;
236
266
  return state.updateIn(['tables', tableKey], function (table) {
237
267
  return table.set('loading', true).set('appliedFilters', state.getIn(['tables', tableKey, 'filters'])).set('pageOffset', 0).set('currentPageToken', null).set('nextPageToken', null).set('pageTokens', (0, _immutable.List)()).set('error', null);
238
268
  });
239
269
  },
240
- APPLY_FILTER_FORM: function APPLY_FILTER_FORM(state, _ref12) {
241
- var _ref12$payload = _ref12.payload,
242
- tableKey = _ref12$payload.tableKey,
243
- appliedFilters = _ref12$payload.appliedFilters;
270
+ APPLY_FILTER_FORM: function APPLY_FILTER_FORM(state, _ref14) {
271
+ var _ref14$payload = _ref14.payload,
272
+ tableKey = _ref14$payload.tableKey,
273
+ appliedFilters = _ref14$payload.appliedFilters;
244
274
  return state.updateIn(['tables', tableKey], function (table) {
245
275
  return table.set('loading', true).set('appliedFilters', appliedFilters).set('pageOffset', 0).set('currentPageToken', null).set('nextPageToken', null).set('pageTokens', (0, _immutable.List)()).set('error', null);
246
276
  });
247
277
  },
248
- REFETCH_TABLE_DATA: function REFETCH_TABLE_DATA(state, _ref13) {
249
- var tableKey = _ref13.payload.tableKey;
278
+ REFETCH_TABLE_DATA: function REFETCH_TABLE_DATA(state, _ref15) {
279
+ var tableKey = _ref15.payload.tableKey;
250
280
  return state.hasIn(['tables', tableKey]) ? state.updateIn(['tables', tableKey], function (tableData) {
251
281
  return tableData.get('dataSource') ? tableData.set('loading', true).set('pageOffset', 0).set('currentPageToken', null).set('nextPageToken', null).set('pageTokens', (0, _immutable.List)()).set('data', null).set('error', null) : tableData;
252
282
  }) : state;
253
283
  },
254
- CLEAR_TABLE_FILTERS: function CLEAR_TABLE_FILTERS(state, _ref14) {
255
- var tableKey = _ref14.payload.tableKey;
284
+ CLEAR_TABLE_FILTERS: function CLEAR_TABLE_FILTERS(state, _ref16) {
285
+ var tableKey = _ref16.payload.tableKey;
256
286
  return state.setIn(['tables', tableKey, 'filters'], generateFilters(tableKey, state.getIn(['tables', tableKey, 'columns'])));
257
287
  },
258
- CLEAR_SELECTED_FILTERS: function CLEAR_SELECTED_FILTERS(state, _ref15) {
259
- var tableKey = _ref15.payload.tableKey;
288
+ CLEAR_SELECTED_FILTERS: function CLEAR_SELECTED_FILTERS(state, _ref17) {
289
+ var tableKey = _ref17.payload.tableKey;
260
290
  return state.setIn(['tables', tableKey, 'filters'], state.getIn(['tables', tableKey, 'appliedFilters']));
261
291
  }
262
292
  });
263
- function calculateRowsTask(_ref16) {
264
- var payload = _ref16.payload;
293
+ function calculateRowsTask(_ref18) {
294
+ var type = _ref18.type,
295
+ payload = _ref18.payload;
265
296
  return /*#__PURE__*/(0, _regeneratorRuntime2["default"])().mark(function _callee() {
266
- var tableKey, tableData, response, rows, data, nextPageToken, count, error, extraData, onFetch;
297
+ var _response$data, _response$data2, tableKey, tableData, response, isPageEmpty, rows, data, nextPageToken, count, error, extraData, onFetch;
267
298
  return (0, _regeneratorRuntime2["default"])().wrap(function _callee$(_context) {
268
299
  while (1) switch (_context.prev = _context.next) {
269
300
  case 0:
@@ -275,7 +306,7 @@ function calculateRowsTask(_ref16) {
275
306
  });
276
307
  case 4:
277
308
  tableData = _context.sent;
278
- if (tableData) {
309
+ if (!(!tableData || type === 'RELOAD_PAGE' && !tableData.get('configured'))) {
279
310
  _context.next = 7;
280
311
  break;
281
312
  }
@@ -285,13 +316,29 @@ function calculateRowsTask(_ref16) {
285
316
  return (0, _effects.call)(calculateRows, tableData);
286
317
  case 9:
287
318
  response = _context.sent;
319
+ isPageEmpty = isClientSide(tableData, true) ? (response === null || response === void 0 ? void 0 : (_response$data = response.data) === null || _response$data === void 0 ? void 0 : _response$data.size) <= tableData.get('pageOffset') && tableData.get('pageOffset') > 0 : (response === null || response === void 0 ? void 0 : (_response$data2 = response.data) === null || _response$data2 === void 0 ? void 0 : _response$data2.size) === 0 && tableData.get('pageTokens').size !== 0;
320
+ if (!(isPageEmpty && !isClientSide(tableData, true))) {
321
+ _context.next = 16;
322
+ break;
323
+ }
324
+ _context.next = 14;
325
+ return (0, _effects.put)({
326
+ type: 'PREV_PAGE',
327
+ payload: {
328
+ tableKey: tableKey
329
+ }
330
+ });
331
+ case 14:
332
+ _context.next = 31;
333
+ break;
334
+ case 16:
288
335
  rows = response.rows, data = response.data, nextPageToken = response.nextPageToken, count = response.count, error = response.error, extraData = response.extraData;
289
336
  onFetch = tableData.get('onFetch');
290
337
  if (!error) {
291
- _context.next = 17;
338
+ _context.next = 23;
292
339
  break;
293
340
  }
294
- _context.next = 15;
341
+ _context.next = 21;
295
342
  return (0, _effects.put)({
296
343
  type: 'SET_ROWS',
297
344
  payload: {
@@ -304,11 +351,11 @@ function calculateRowsTask(_ref16) {
304
351
  extraData: extraData
305
352
  }
306
353
  });
307
- case 15:
308
- _context.next = 19;
354
+ case 21:
355
+ _context.next = 28;
309
356
  break;
310
- case 17:
311
- _context.next = 19;
357
+ case 23:
358
+ _context.next = 25;
312
359
  return (0, _effects.put)({
313
360
  type: 'SET_ROWS',
314
361
  payload: {
@@ -320,12 +367,24 @@ function calculateRowsTask(_ref16) {
320
367
  extraData: extraData
321
368
  }
322
369
  });
323
- case 19:
370
+ case 25:
371
+ if (!(isPageEmpty && isClientSide(tableData, true))) {
372
+ _context.next = 28;
373
+ break;
374
+ }
375
+ _context.next = 28;
376
+ return (0, _effects.put)({
377
+ type: 'PREV_PAGE',
378
+ payload: {
379
+ tableKey: tableKey
380
+ }
381
+ });
382
+ case 28:
324
383
  if (!(typeof onFetch === 'function')) {
325
- _context.next = 22;
384
+ _context.next = 31;
326
385
  break;
327
386
  }
328
- _context.next = 22;
387
+ _context.next = 31;
329
388
  return (0, _effects.call)(onFetch, {
330
389
  tableKey: tableKey,
331
390
  rows: rows,
@@ -333,22 +392,22 @@ function calculateRowsTask(_ref16) {
333
392
  error: error,
334
393
  extraData: extraData
335
394
  });
336
- case 22:
337
- _context.next = 27;
395
+ case 31:
396
+ _context.next = 36;
338
397
  break;
339
- case 24:
340
- _context.prev = 24;
398
+ case 33:
399
+ _context.prev = 33;
341
400
  _context.t0 = _context["catch"](0);
342
401
  console.error(_context.t0);
343
- case 27:
402
+ case 36:
344
403
  case "end":
345
404
  return _context.stop();
346
405
  }
347
- }, _callee, null, [[0, 24]]);
406
+ }, _callee, null, [[0, 33]]);
348
407
  })();
349
408
  }
350
- function configureTableTask(_ref17) {
351
- var payload = _ref17.payload;
409
+ function configureTableTask(_ref19) {
410
+ var payload = _ref19.payload;
352
411
  return /*#__PURE__*/(0, _regeneratorRuntime2["default"])().mark(function _callee2() {
353
412
  var filterForm, tableKey, initialFilterValues;
354
413
  return (0, _regeneratorRuntime2["default"])().wrap(function _callee2$(_context2) {
@@ -400,8 +459,8 @@ function pollingTask(tableKey) {
400
459
  }
401
460
  }, _marked);
402
461
  }
403
- function startPollingTask(_ref18) {
404
- var payload = _ref18.payload;
462
+ function startPollingTask(_ref20) {
463
+ var payload = _ref20.payload;
405
464
  return /*#__PURE__*/(0, _regeneratorRuntime2["default"])().mark(function _callee3() {
406
465
  var refreshInterval, tableKey;
407
466
  return (0, _regeneratorRuntime2["default"])().wrap(function _callee3$(_context4) {
@@ -423,8 +482,8 @@ function startPollingTask(_ref18) {
423
482
  }, _callee3);
424
483
  })();
425
484
  }
426
- function stopPollingTask(_ref19) {
427
- var payload = _ref19.payload;
485
+ function stopPollingTask(_ref21) {
486
+ var payload = _ref21.payload;
428
487
  return /*#__PURE__*/(0, _regeneratorRuntime2["default"])().mark(function _callee4() {
429
488
  var tableKey;
430
489
  return (0, _regeneratorRuntime2["default"])().wrap(function _callee4$(_context5) {
@@ -466,11 +525,146 @@ function stopPollingTask(_ref19) {
466
525
  (0, _store.regSaga)((0, _effects.takeEvery)('NEXT_PAGE', calculateRowsTask));
467
526
  (0, _store.regSaga)((0, _effects.takeEvery)('PREV_PAGE', calculateRowsTask));
468
527
  (0, _store.regSaga)((0, _effects.takeEvery)('GOTO_PAGE', calculateRowsTask));
469
- (0, _store.regSaga)((0, _effects.takeEvery)('SORT_COLUMN', calculateRowsTask));
470
- (0, _store.regSaga)((0, _effects.takeEvery)('SORT_DIRECTION', calculateRowsTask));
528
+ (0, _store.regSaga)((0, _effects.takeEvery)('RELOAD_PAGE', calculateRowsTask));
471
529
  (0, _store.regSaga)((0, _effects.takeEvery)('APPLY_FILTERS', calculateRowsTask));
472
530
  (0, _store.regSaga)((0, _effects.takeEvery)('APPLY_FILTER_FORM', calculateRowsTask));
473
531
  (0, _store.regSaga)((0, _effects.takeEvery)('REFETCH_TABLE_DATA', calculateRowsTask));
532
+ (0, _store.regSaga)((0, _effects.takeEvery)('SORT_COLUMN', /*#__PURE__*/(0, _regeneratorRuntime2["default"])().mark(function _callee6(action) {
533
+ var tableKey, _yield$select, _yield$select2, onColumnSort, sortColumn, sortDirection;
534
+ return (0, _regeneratorRuntime2["default"])().wrap(function _callee6$(_context7) {
535
+ while (1) switch (_context7.prev = _context7.next) {
536
+ case 0:
537
+ tableKey = action.payload.tableKey; // Call calculate rows task
538
+ _context7.next = 3;
539
+ return (0, _effects.call)(calculateRowsTask, action);
540
+ case 3:
541
+ _context7.next = 5;
542
+ return (0, _effects.select)(function (state) {
543
+ return [state.getIn(['tables', tableKey, 'onColumnSort']), state.getIn(['tables', tableKey, 'sortColumn', 'value']), state.getIn(['tables', tableKey, 'sortDirection'])];
544
+ });
545
+ case 5:
546
+ _yield$select = _context7.sent;
547
+ _yield$select2 = (0, _slicedToArray2["default"])(_yield$select, 3);
548
+ onColumnSort = _yield$select2[0];
549
+ sortColumn = _yield$select2[1];
550
+ sortDirection = _yield$select2[2];
551
+ if (!(typeof onColumnSort === 'function')) {
552
+ _context7.next = 13;
553
+ break;
554
+ }
555
+ _context7.next = 13;
556
+ return (0, _effects.call)(onColumnSort, {
557
+ tableKey: tableKey,
558
+ sortColumn: sortColumn,
559
+ sortDirection: sortDirection
560
+ });
561
+ case 13:
562
+ case "end":
563
+ return _context7.stop();
564
+ }
565
+ }, _callee6);
566
+ })));
567
+ (0, _store.regSaga)((0, _effects.takeEvery)('TOGGLE_COLUMN', function (_ref22) {
568
+ var tableKey = _ref22.payload.tableKey;
569
+ return /*#__PURE__*/(0, _regeneratorRuntime2["default"])().mark(function _callee7() {
570
+ var _yield$select3, _yield$select4, onColumnToggle, columnSet;
571
+ return (0, _regeneratorRuntime2["default"])().wrap(function _callee7$(_context8) {
572
+ while (1) switch (_context8.prev = _context8.next) {
573
+ case 0:
574
+ _context8.next = 2;
575
+ return (0, _effects.select)(function (state) {
576
+ return [state.getIn(['tables', tableKey, 'onColumnToggle']), state.getIn(['tables', tableKey, 'columnSet'])];
577
+ });
578
+ case 2:
579
+ _yield$select3 = _context8.sent;
580
+ _yield$select4 = (0, _slicedToArray2["default"])(_yield$select3, 2);
581
+ onColumnToggle = _yield$select4[0];
582
+ columnSet = _yield$select4[1];
583
+ if (!(typeof onColumnToggle === 'function')) {
584
+ _context8.next = 9;
585
+ break;
586
+ }
587
+ _context8.next = 9;
588
+ return (0, _effects.call)(onColumnToggle, {
589
+ tableKey: tableKey,
590
+ columnSet: columnSet
591
+ });
592
+ case 9:
593
+ case "end":
594
+ return _context8.stop();
595
+ }
596
+ }, _callee7);
597
+ })();
598
+ }));
599
+ (0, _store.regSaga)((0, _effects.takeEvery)('TOGGLE_FILTER', function (_ref23) {
600
+ var _ref23$payload = _ref23.payload,
601
+ tableKey = _ref23$payload.tableKey,
602
+ filters = _ref23$payload.filters;
603
+ return /*#__PURE__*/(0, _regeneratorRuntime2["default"])().mark(function _callee8() {
604
+ var _yield$select5, _yield$select6, filterSet, appliedFilters, filtersToRemove, _iterator, _step, filter;
605
+ return (0, _regeneratorRuntime2["default"])().wrap(function _callee8$(_context9) {
606
+ while (1) switch (_context9.prev = _context9.next) {
607
+ case 0:
608
+ _context9.next = 2;
609
+ return (0, _effects.select)(function (state) {
610
+ return [state.getIn(['tables', tableKey, 'filterSet']), state.getIn(['tables', tableKey, 'appliedFilters'])];
611
+ });
612
+ case 2:
613
+ _yield$select5 = _context9.sent;
614
+ _yield$select6 = (0, _slicedToArray2["default"])(_yield$select5, 2);
615
+ filterSet = _yield$select6[0];
616
+ appliedFilters = _yield$select6[1];
617
+ // Determine filters that were removed
618
+ filtersToRemove = filters.filter(function (filter) {
619
+ return !filterSet.includes(filter);
620
+ }); // If any filters were removed from the set
621
+ if (!(filtersToRemove.length > 0)) {
622
+ _context9.next = 28;
623
+ break;
624
+ }
625
+ _iterator = (0, _createForOfIteratorHelper2["default"])(filtersToRemove);
626
+ _context9.prev = 9;
627
+ _iterator.s();
628
+ case 11:
629
+ if ((_step = _iterator.n()).done) {
630
+ _context9.next = 17;
631
+ break;
632
+ }
633
+ filter = _step.value;
634
+ _context9.next = 15;
635
+ return (0, _effects.call)(_Form.setValue, filterFormKey(tableKey), filter, null);
636
+ case 15:
637
+ _context9.next = 11;
638
+ break;
639
+ case 17:
640
+ _context9.next = 22;
641
+ break;
642
+ case 19:
643
+ _context9.prev = 19;
644
+ _context9.t0 = _context9["catch"](9);
645
+ _iterator.e(_context9.t0);
646
+ case 22:
647
+ _context9.prev = 22;
648
+ _iterator.f();
649
+ return _context9.finish(22);
650
+ case 25:
651
+ if (!filtersToRemove.some(function (filter) {
652
+ return appliedFilters.get(filter);
653
+ })) {
654
+ _context9.next = 28;
655
+ break;
656
+ }
657
+ _context9.next = 28;
658
+ return (0, _effects.call)(_.submitForm, filterFormKey(tableKey), {
659
+ fieldSet: filterSet
660
+ });
661
+ case 28:
662
+ case "end":
663
+ return _context9.stop();
664
+ }
665
+ }, _callee8, null, [[9, 19, 22, 25]]);
666
+ })();
667
+ }));
474
668
  var operations = exports.operations = (0, _immutable.Map)({
475
669
  includes: function includes(cv, v) {
476
670
  return cv.toLocaleLowerCase().includes(v.toLocaleLowerCase());
@@ -587,8 +781,9 @@ var transformData = function transformData(data, tableData) {
587
781
  var calculateRows = function calculateRows(tableData) {
588
782
  var dataSource = getDataSource(tableData);
589
783
  if (isClientSide(tableData)) {
590
- var data = transformData(tableData.get('data'), tableData);
591
- var rows = applyClientSideFilters(tableData, data);
784
+ var data = tableData.get('data');
785
+ var transformedRows = transformData(data, tableData);
786
+ var rows = applyClientSideFilters(tableData, transformedRows);
592
787
  return Promise.resolve({
593
788
  rows: rows,
594
789
  data: data,
@@ -652,8 +847,37 @@ var refetchTable = exports.refetchTable = function refetchTable(tableKey) {
652
847
  tableKey: tableKey
653
848
  });
654
849
  };
850
+ var reloadTablePage = exports.reloadTablePage = function reloadTablePage(tableKey) {
851
+ return (0, _store.dispatch)('RELOAD_PAGE', {
852
+ tableKey: tableKey
853
+ });
854
+ };
655
855
  var clearFilters = exports.clearFilters = function clearFilters(tableKey) {
656
856
  return (0, _store.dispatch)('CLEAR_TABLE_FILTERS', {
657
857
  tableKey: tableKey
658
858
  });
859
+ };
860
+ var resetFilterForm = exports.resetFilterForm = function resetFilterForm(tableKey) {
861
+ return (0, _store.dispatch)('APPLY_FILTER_FORM', {
862
+ tableKey: tableKey,
863
+ appliedFilters: (0, _immutable.Map)()
864
+ });
865
+ };
866
+ var toggleFilterField = exports.toggleFilterField = function toggleFilterField(tableKey) {
867
+ for (var _len = arguments.length, filters = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
868
+ filters[_key - 1] = arguments[_key];
869
+ }
870
+ return (0, _store.dispatch)('TOGGLE_FILTER', {
871
+ tableKey: tableKey,
872
+ filters: filters
873
+ });
874
+ };
875
+ var hasTableFiltersApplied = exports.hasTableFiltersApplied = function hasTableFiltersApplied(tableKey) {
876
+ var _store$getState$getIn, _store$getState$getIn2;
877
+ return ((_store$getState$getIn = _store.store.getState().getIn(['tables', tableKey, 'appliedFilters'])) === null || _store$getState$getIn === void 0 ? void 0 : (_store$getState$getIn2 = _store$getState$getIn.filter(Boolean)) === null || _store$getState$getIn2 === void 0 ? void 0 : _store$getState$getIn2.size) > 0;
878
+ };
879
+ var findTableKey = exports.findTableKey = function findTableKey(fn) {
880
+ return _store.store.getState().get('tables').keySeq().toList().find(fn || function () {
881
+ return true;
882
+ });
659
883
  };
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"];
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports["default"] = void 0;
8
+ var _react = _interopRequireDefault(require("react"));
9
+ var FilterControl = function FilterControl(_ref) {
10
+ var filterFields = _ref.filterFields;
11
+ return /*#__PURE__*/_react["default"].createElement("div", null, filterFields === null || filterFields === void 0 ? void 0 : filterFields.map(function (field) {
12
+ return /*#__PURE__*/_react["default"].createElement("div", {
13
+ className: "field"
14
+ }, /*#__PURE__*/_react["default"].createElement("input", {
15
+ type: "checkbox",
16
+ id: "filter-toggle-".concat(field.get('name')),
17
+ checked: field.get('checked'),
18
+ onChange: field.get('toggle')
19
+ }), /*#__PURE__*/_react["default"].createElement("label", {
20
+ htmlFor: "filter-toggle-".concat(field.get('name'))
21
+ }, field.get('label')));
22
+ }));
23
+ };
24
+ var _default = exports["default"] = FilterControl;
@@ -17,6 +17,7 @@ var _BodyCell = _interopRequireDefault(require("./BodyCell"));
17
17
  var _Footer = _interopRequireDefault(require("./Footer"));
18
18
  var _FooterRow = _interopRequireDefault(require("./FooterRow"));
19
19
  var _FooterCell = _interopRequireDefault(require("./FooterCell"));
20
+ var _FilterControl = _interopRequireDefault(require("./FilterControl"));
20
21
  var _FilterLayout = _interopRequireDefault(require("./FilterLayout"));
21
22
  var _BooleanFilter = _interopRequireDefault(require("./BooleanFilter"));
22
23
  var _TextFilter = _interopRequireDefault(require("./TextFilter"));
@@ -34,6 +35,7 @@ var DefaultTableConfig = exports.DefaultTableConfig = (0, _immutable.Map)({
34
35
  Footer: _Footer["default"],
35
36
  FooterRow: _FooterRow["default"],
36
37
  FooterCell: _FooterCell["default"],
38
+ FilterControl: _FilterControl["default"],
37
39
  FilterLayout: _FilterLayout["default"],
38
40
  TextFilter: _TextFilter["default"],
39
41
  BooleanFilter: _BooleanFilter["default"],
@@ -91,28 +91,28 @@ var getByTestId = function getByTestId(json, id) {
91
91
  return undefined;
92
92
  };
93
93
 
94
- /*
95
-
96
- * Repeat for: server-side, server-side w/client sort and paginate, client-side
97
- * test sorting by column
98
- * test sorting changing direction
99
- * test default sort parameters
100
-
101
- * test pure-client-side (data prop passed)
102
-
103
- * test overriding default components for whole table
104
- * test altering columns
105
- ** changing component
106
- ** What else *can* be changed???
107
- * test adding columns
108
- * test valueTransform
109
- * test columnSet
110
- * test pageSize
111
- * test sortable
112
- * test omit header
113
- * test include footer
114
-
115
-
94
+ /*
95
+
96
+ * Repeat for: server-side, server-side w/client sort and paginate, client-side
97
+ * test sorting by column
98
+ * test sorting changing direction
99
+ * test default sort parameters
100
+
101
+ * test pure-client-side (data prop passed)
102
+
103
+ * test overriding default components for whole table
104
+ * test altering columns
105
+ ** changing component
106
+ ** What else *can* be changed???
107
+ * test adding columns
108
+ * test valueTransform
109
+ * test columnSet
110
+ * test pageSize
111
+ * test sortable
112
+ * test omit header
113
+ * test include footer
114
+
115
+
116
116
  */
117
117
 
118
118
  describe('<Table />', function () {