mig-schema-table 3.0.45 → 3.0.47

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.
@@ -15,10 +15,17 @@ function SchemaTable({ Heading = VariableSizeList, checkedIndexes, disabledCheck
15
15
  const [searchQuery, setSearchQuery] = React.useState("");
16
16
  const [columnFilterMap, setColumnFilterMap] = React.useState({});
17
17
  const [popoverConfig, setPopoverConfig] = React.useState();
18
- const [sourceData, setSourceData] = React.useState(Array.isArray(data) ? data : undefined);
18
+ const isDataFunction = data instanceof Function;
19
+ const [sourceData, setSourceData] = React.useState(isDataFunction ? undefined : data);
19
20
  const [isDirty, setIsDirty] = React.useState(false);
20
21
  React.useEffect(() => {
21
- if (sourceData !== undefined || !(data instanceof Function)) {
22
+ if (isDataFunction) {
23
+ return;
24
+ }
25
+ setSourceData(data);
26
+ }, [data, isDataFunction]);
27
+ React.useEffect(() => {
28
+ if (!isDataFunction || sourceData !== undefined) {
22
29
  return;
23
30
  }
24
31
  data({
@@ -27,7 +34,15 @@ function SchemaTable({ Heading = VariableSizeList, checkedIndexes, disabledCheck
27
34
  sortColumn,
28
35
  sortAsc,
29
36
  }).then(setSourceData);
30
- }, [columnFilterMap, data, searchQuery, sortAsc, sortColumn, sourceData]);
37
+ }, [
38
+ columnFilterMap,
39
+ data,
40
+ isDataFunction,
41
+ searchQuery,
42
+ sortAsc,
43
+ sortColumn,
44
+ sourceData,
45
+ ]);
31
46
  const { properties = {} } = schema;
32
47
  const columnNames = React.useMemo(() => {
33
48
  const columns = Object.keys(properties);
@@ -171,7 +186,7 @@ function SchemaTable({ Heading = VariableSizeList, checkedIndexes, disabledCheck
171
186
  const filteredRenderData = React.useMemo(() => {
172
187
  if (!renderData ||
173
188
  (!isColumnFilterable && !isSearchable) ||
174
- data instanceof Function) {
189
+ isDataFunction) {
175
190
  return renderData;
176
191
  }
177
192
  return renderData.filter((item) => {
@@ -220,7 +235,7 @@ function SchemaTable({ Heading = VariableSizeList, checkedIndexes, disabledCheck
220
235
  renderData,
221
236
  isColumnFilterable,
222
237
  isSearchable,
223
- data,
238
+ isDataFunction,
224
239
  searchQuery,
225
240
  columnNames,
226
241
  columnFilterMap,
@@ -229,10 +244,7 @@ function SchemaTable({ Heading = VariableSizeList, checkedIndexes, disabledCheck
229
244
  ]);
230
245
  // Sort the filtered data
231
246
  const sortedRenderData = React.useMemo(() => {
232
- if (!sortColumn ||
233
- !filteredRenderData ||
234
- !sourceData ||
235
- data instanceof Function) {
247
+ if (!sortColumn || !filteredRenderData || !sourceData || isDataFunction) {
236
248
  return filteredRenderData;
237
249
  }
238
250
  const sortSchema = properties[sortColumn];
@@ -288,7 +300,7 @@ function SchemaTable({ Heading = VariableSizeList, checkedIndexes, disabledCheck
288
300
  sortColumn,
289
301
  filteredRenderData,
290
302
  sourceData,
291
- data,
303
+ isDataFunction,
292
304
  properties,
293
305
  config,
294
306
  sortAsc,
@@ -312,23 +324,23 @@ function SchemaTable({ Heading = VariableSizeList, checkedIndexes, disabledCheck
312
324
  const disableColumnFilter = React.useCallback((propName) => {
313
325
  const newColumnFilterMap = Object.assign({}, columnFilterMap);
314
326
  delete newColumnFilterMap[propName];
315
- if (data instanceof Function) {
327
+ if (isDataFunction) {
316
328
  setIsDirty(true);
317
329
  }
318
330
  setColumnFilterMap(newColumnFilterMap);
319
- }, [columnFilterMap, data]);
331
+ }, [columnFilterMap, isDataFunction]);
320
332
  const onSetSortColumn = React.useCallback((x) => {
321
- if (data instanceof Function) {
333
+ if (isDataFunction) {
322
334
  setIsDirty(true);
323
335
  }
324
336
  setSortColumn(x);
325
- }, [data]);
337
+ }, [isDataFunction]);
326
338
  const onSetSortAsc = React.useCallback((x) => {
327
- if (data instanceof Function) {
339
+ if (isDataFunction) {
328
340
  setIsDirty(true);
329
341
  }
330
342
  setSortAsc(x);
331
- }, [data]);
343
+ }, [isDataFunction]);
332
344
  const SchemaTableTh = React.useCallback(({ style, index }) => {
333
345
  const propName = columnNames[index];
334
346
  const propConfig = config ? config[propName] : undefined;
@@ -379,11 +391,11 @@ function SchemaTable({ Heading = VariableSizeList, checkedIndexes, disabledCheck
379
391
  sortedRenderData,
380
392
  ]);
381
393
  const onSearchChange = React.useCallback((e) => {
382
- if (data instanceof Function) {
394
+ if (isDataFunction) {
383
395
  setIsDirty(true);
384
396
  }
385
397
  setSearchQuery(e.currentTarget.value);
386
- }, [data]);
398
+ }, [isDataFunction]);
387
399
  const refreshData = React.useCallback(() => {
388
400
  setIsDirty(false);
389
401
  setSourceData(undefined);
@@ -413,7 +425,7 @@ function SchemaTable({ Heading = VariableSizeList, checkedIndexes, disabledCheck
413
425
  if (!popoverConfig) {
414
426
  return;
415
427
  }
416
- if (data instanceof Function) {
428
+ if (isDataFunction) {
417
429
  setIsDirty(true);
418
430
  }
419
431
  if (newColumnFilterValue === undefined) {
@@ -421,7 +433,7 @@ function SchemaTable({ Heading = VariableSizeList, checkedIndexes, disabledCheck
421
433
  return;
422
434
  }
423
435
  setColumnFilterMap((columnFilterMap) => (Object.assign(Object.assign({}, columnFilterMap), { [popoverConfig.propName]: newColumnFilterValue })));
424
- }, [data, disableColumnFilter, popoverConfig]);
436
+ }, [disableColumnFilter, isDataFunction, popoverConfig]);
425
437
  return (_jsxs("div", Object.assign({ className: `schema-table${onRowClick ? " schema-table--clickable-rows" : ""}`, style: Object.assign(Object.assign({}, style), { width: rowWidth }), role: "table" }, { children: [_jsxs("div", Object.assign({ className: "schema-table__action-container" }, { children: [_jsx("div", Object.assign({ style: { flex: 1 } }, { children: isSearchable ? (_jsx("input", { type: "text", placeholder: searchPlaceholder || "Search...", value: searchQuery, onChange: onSearchChange, onKeyDown: onInputKeyDown, autoFocus: true })) : null })), customElement] })), _jsx(Heading, Object.assign({ height: 50, itemCount: columnCount, itemSize: getColumnWidth, layout: "horizontal", width: rowWidth, sortAsc: sortAsc, setSortAsc: onSetSortAsc, setSortColumn: onSetSortColumn, sortColumn: sortColumn, sortedRenderData: sortedRenderData, className: "schema-table__th-row" }, { children: SchemaTableTh }), `thead_${rowWidth}_${sortColumn}_${sortAsc}_${searchQuery}`), sourceData && !isDirty ? (_jsx(VariableSizeGrid, Object.assign({ className: "schema-table__tbody", height: tableBodyHeight, width: rowWidth, columnWidth: getColumnWidth, rowHeight: getRowHeight, columnCount: columnCount, rowCount: rowCount }, { children: SchemaTableTd }), `tbody_${tableBodyHeight}_${rowWidth}_${sortColumn}_${sortAsc}_${searchQuery}_${columnCount}`)) : (_jsx("div", Object.assign({ style: {
426
438
  width: rowWidth,
427
439
  height: Math.max(50, tableBodyHeight),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mig-schema-table",
3
- "version": "3.0.45",
3
+ "version": "3.0.47",
4
4
  "main": "dist/index.js",
5
5
  "files": [
6
6
  "dist/"