@infinite-table/infinite-react 3.1.0 → 3.1.2

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/index.dev.mjs CHANGED
@@ -7497,7 +7497,7 @@ function getColumnValueToEdit(options) {
7497
7497
  }
7498
7498
  function getColumnRenderingParams(options) {
7499
7499
  var _a, _b;
7500
- const { column, context, rowInfo } = options;
7500
+ const { column, context, rowInfo, visibleColumnsIds } = options;
7501
7501
  const groupByColumnReference = getGroupByColumnReference({
7502
7502
  rowInfo,
7503
7503
  column,
@@ -7517,10 +7517,16 @@ function getColumnRenderingParams(options) {
7517
7517
  });
7518
7518
  const stylingParam = __spreadProps(__spreadValues({
7519
7519
  column: options.column,
7520
- inEdit
7520
+ inEdit,
7521
+ rowHasSelectedCells: false
7521
7522
  }, formattedValueContext), {
7522
7523
  editError: editingCell && editingCell.primaryKey === rowInfo.id && editingCell.columnId === column.id && !editingCell.active && editingCell.accepted instanceof Error ? editingCell.accepted : void 0
7523
7524
  });
7525
+ Object.defineProperty(stylingParam, "rowHasSelectedCells", {
7526
+ get() {
7527
+ return rowInfo.hasSelectedCells(visibleColumnsIds);
7528
+ }
7529
+ });
7524
7530
  const align2 = typeof column.align === "function" ? column.align(__spreadValues({ isHeader: false }, stylingParam)) : (_a = column.align) != null ? _a : "start";
7525
7531
  const verticalAlign = typeof column.verticalAlign === "function" ? column.verticalAlign(__spreadValues({ isHeader: false }, stylingParam)) : (_b = column.verticalAlign) != null ? _b : "center";
7526
7532
  return {
@@ -7550,6 +7556,7 @@ function getColumnRenderParam(options) {
7550
7556
  rowInfo,
7551
7557
  align: align2,
7552
7558
  verticalAlign,
7559
+ visibleColumnsIds,
7553
7560
  columnsMap,
7554
7561
  fieldsToColumn,
7555
7562
  formattedValueContext
@@ -7574,7 +7581,8 @@ function getColumnRenderParam(options) {
7574
7581
  fieldsToColumn,
7575
7582
  align: align2,
7576
7583
  verticalAlign,
7577
- cellSelected
7584
+ cellSelected,
7585
+ rowHasSelectedCells: false
7578
7586
  }, formattedValueContext), {
7579
7587
  editError: editingCell && editingCell.primaryKey === rowInfo.id && editingCell.columnId === column.id && !editingCell.active && editingCell.accepted instanceof Error ? editingCell.accepted : void 0,
7580
7588
  groupByColumn,
@@ -7639,6 +7647,11 @@ function getColumnRenderParam(options) {
7639
7647
  rootGroupBy: dataSourceState.groupBy,
7640
7648
  pivotBy: dataSourceState.pivotBy
7641
7649
  });
7650
+ Object.defineProperty(renderParam, "rowHasSelectedCells", {
7651
+ get() {
7652
+ return rowInfo.hasSelectedCells(visibleColumnsIds);
7653
+ }
7654
+ });
7642
7655
  return renderParam;
7643
7656
  }
7644
7657
  function getRawValueForCell(column, rowInfo) {
@@ -7914,10 +7927,12 @@ function InfiniteTableColumnCellFn(props) {
7914
7927
  api: imperativeApi,
7915
7928
  dataSourceApi
7916
7929
  };
7930
+ const visibleColumnsIds = computed.computedVisibleColumns.map((x) => x.id);
7917
7931
  const colRenderingParams = getColumnRenderingParams({
7918
7932
  column,
7919
7933
  rowInfo,
7920
7934
  columnsMap,
7935
+ visibleColumnsIds,
7921
7936
  fieldsToColumn,
7922
7937
  context: renderingContext
7923
7938
  });
@@ -7984,105 +7999,119 @@ function InfiniteTableColumnCellFn(props) {
7984
7999
  );
7985
8000
  const EditorComponent = (_b = (_a = column.components) == null ? void 0 : _a.Editor) != null ? _b : InfiniteTableColumnEditor;
7986
8001
  const editor = inEdit ? /* @__PURE__ */ React36.createElement(CellEditorContextComponent, { contextValue: renderParam }, /* @__PURE__ */ React36.createElement(EditorComponent, null)) : null;
7987
- const renderChildren = useCallback12(() => {
7988
- if (hidden) {
7989
- return null;
7990
- }
7991
- if (inEdit) {
7992
- return null;
7993
- }
7994
- if (renderFunctions.renderGroupIcon) {
7995
- renderParam.renderBag.groupIcon = /* @__PURE__ */ React36.createElement(
7996
- RenderCellHookComponent,
7997
- {
7998
- render: renderFunctions.renderGroupIcon,
7999
- renderParam: __spreadProps(__spreadValues({}, renderParam), {
8000
- renderBag: __spreadValues({}, renderParam.renderBag)
8001
- })
8002
- }
8003
- );
8004
- }
8005
- if (renderFunctions.renderSelectionCheckBox && selectionMode == "multi-row") {
8006
- renderParam.renderBag.selectionCheckBox = /* @__PURE__ */ React36.createElement(
8007
- RenderCellHookComponent,
8008
- {
8009
- render: defaultRenderSelectionCheckBox,
8010
- renderParam
8011
- }
8012
- );
8013
- if (renderFunctions.renderSelectionCheckBox !== true) {
8014
- renderParam.renderBag.selectionCheckBox = /* @__PURE__ */ React36.createElement(
8002
+ const renderChildren = useCallback12(
8003
+ once(() => {
8004
+ if (hidden) {
8005
+ return null;
8006
+ }
8007
+ if (inEdit) {
8008
+ return null;
8009
+ }
8010
+ if (renderFunctions.renderGroupIcon) {
8011
+ renderParam.renderBag.groupIcon = /* @__PURE__ */ React36.createElement(
8015
8012
  RenderCellHookComponent,
8016
8013
  {
8017
- render: renderFunctions.renderSelectionCheckBox,
8014
+ render: renderFunctions.renderGroupIcon,
8018
8015
  renderParam: __spreadProps(__spreadValues({}, renderParam), {
8019
8016
  renderBag: __spreadValues({}, renderParam.renderBag)
8020
8017
  })
8021
8018
  }
8022
8019
  );
8023
8020
  }
8024
- }
8025
- if (renderFunctions.renderValue) {
8026
- renderParam.renderBag.value = /* @__PURE__ */ React36.createElement(
8027
- RenderCellHookComponent,
8028
- {
8029
- render: renderFunctions.renderValue,
8030
- renderParam: __spreadProps(__spreadValues({}, renderParam), {
8031
- renderBag: __spreadValues({}, renderParam.renderBag)
8032
- })
8033
- }
8034
- );
8035
- }
8036
- if (rowInfo.isGroupRow && renderFunctions.renderGroupValue) {
8037
- renderParam.renderBag.value = /* @__PURE__ */ React36.createElement(
8038
- RenderCellHookComponent,
8039
- {
8040
- render: renderFunctions.renderGroupValue,
8041
- renderParam: __spreadProps(__spreadValues({}, renderParam), {
8042
- renderBag: __spreadValues({}, renderParam.renderBag)
8043
- })
8044
- }
8045
- );
8046
- }
8047
- if (!rowInfo.isGroupRow && renderFunctions.renderLeafValue) {
8048
- renderParam.renderBag.value = /* @__PURE__ */ React36.createElement(
8049
- RenderCellHookComponent,
8050
- {
8051
- render: renderFunctions.renderLeafValue,
8052
- renderParam: __spreadProps(__spreadValues({}, renderParam), {
8053
- renderBag: __spreadValues({}, renderParam.renderBag)
8054
- })
8055
- }
8056
- );
8057
- }
8058
- renderParamRef.current = renderParam;
8059
- let valueToRender = renderParam.renderBag.value;
8060
- if (valueToRender instanceof Date) {
8061
- valueToRender = valueToRender.toLocaleDateString();
8062
- }
8063
- const all = /* @__PURE__ */ React36.createElement(React36.Fragment, null, align2 !== "end" ? renderParam.renderBag.groupIcon : null, align2 !== "end" ? renderParam.renderBag.selectionCheckBox : null, valueToRender, align2 === "end" ? renderParam.renderBag.selectionCheckBox : null, align2 === "end" ? renderParam.renderBag.groupIcon : null);
8064
- if (column.render) {
8065
- return /* @__PURE__ */ React36.createElement(
8066
- RenderCellHookComponent,
8067
- {
8068
- render: column.render,
8069
- renderParam: __spreadProps(__spreadValues({}, renderParam), {
8070
- renderBag: __spreadProps(__spreadValues({}, renderParam.renderBag), { all })
8071
- })
8021
+ if (renderFunctions.renderSelectionCheckBox && selectionMode == "multi-row") {
8022
+ renderParam.renderBag.selectionCheckBox = /* @__PURE__ */ React36.createElement(
8023
+ RenderCellHookComponent,
8024
+ {
8025
+ render: defaultRenderSelectionCheckBox,
8026
+ renderParam
8027
+ }
8028
+ );
8029
+ if (renderFunctions.renderSelectionCheckBox !== true) {
8030
+ renderParam.renderBag.selectionCheckBox = /* @__PURE__ */ React36.createElement(
8031
+ RenderCellHookComponent,
8032
+ {
8033
+ render: renderFunctions.renderSelectionCheckBox,
8034
+ renderParam: __spreadProps(__spreadValues({}, renderParam), {
8035
+ renderBag: __spreadValues({}, renderParam.renderBag)
8036
+ })
8037
+ }
8038
+ );
8072
8039
  }
8073
- );
8074
- }
8075
- return all;
8076
- }, [
8077
- column,
8078
- hidden,
8079
- inEdit,
8080
- ...objectValuesExcept(renderParam, {
8081
- renderBag: true
8082
- })
8083
- ]);
8040
+ }
8041
+ if (renderFunctions.renderValue) {
8042
+ renderParam.renderBag.value = /* @__PURE__ */ React36.createElement(
8043
+ RenderCellHookComponent,
8044
+ {
8045
+ render: renderFunctions.renderValue,
8046
+ renderParam: __spreadProps(__spreadValues({}, renderParam), {
8047
+ renderBag: __spreadValues({}, renderParam.renderBag)
8048
+ })
8049
+ }
8050
+ );
8051
+ }
8052
+ if (rowInfo.isGroupRow && renderFunctions.renderGroupValue) {
8053
+ renderParam.renderBag.value = /* @__PURE__ */ React36.createElement(
8054
+ RenderCellHookComponent,
8055
+ {
8056
+ render: renderFunctions.renderGroupValue,
8057
+ renderParam: __spreadProps(__spreadValues({}, renderParam), {
8058
+ renderBag: __spreadValues({}, renderParam.renderBag)
8059
+ })
8060
+ }
8061
+ );
8062
+ }
8063
+ if (!rowInfo.isGroupRow && renderFunctions.renderLeafValue) {
8064
+ renderParam.renderBag.value = /* @__PURE__ */ React36.createElement(
8065
+ RenderCellHookComponent,
8066
+ {
8067
+ render: renderFunctions.renderLeafValue,
8068
+ renderParam: __spreadProps(__spreadValues({}, renderParam), {
8069
+ renderBag: __spreadValues({}, renderParam.renderBag)
8070
+ })
8071
+ }
8072
+ );
8073
+ }
8074
+ renderParamRef.current = renderParam;
8075
+ let valueToRender = renderParam.renderBag.value;
8076
+ if (valueToRender instanceof Date) {
8077
+ valueToRender = valueToRender.toLocaleDateString();
8078
+ }
8079
+ const all = /* @__PURE__ */ React36.createElement(React36.Fragment, null, align2 !== "end" ? renderParam.renderBag.groupIcon : null, align2 !== "end" ? renderParam.renderBag.selectionCheckBox : null, valueToRender, align2 === "end" ? renderParam.renderBag.selectionCheckBox : null, align2 === "end" ? renderParam.renderBag.groupIcon : null);
8080
+ if (column.render) {
8081
+ return /* @__PURE__ */ React36.createElement(
8082
+ RenderCellHookComponent,
8083
+ {
8084
+ render: column.render,
8085
+ renderParam: __spreadProps(__spreadValues({}, renderParam), {
8086
+ renderBag: __spreadProps(__spreadValues({}, renderParam.renderBag), { all })
8087
+ })
8088
+ }
8089
+ );
8090
+ }
8091
+ return all;
8092
+ }),
8093
+ [
8094
+ column,
8095
+ hidden,
8096
+ inEdit,
8097
+ ...objectValuesExcept(renderParam, {
8098
+ renderBag: true
8099
+ })
8100
+ ]
8101
+ );
8102
+ const visibleColumnIds = computed.computedVisibleColumns.map((x) => x.id);
8103
+ const allColumnIds = computed.computedColumnOrder;
8084
8104
  const rowPropsAndStyleArgs = __spreadProps(__spreadValues({}, formattedValueContext), {
8085
- rowIndex
8105
+ visibleColumnIds,
8106
+ allColumnIds,
8107
+ rowIndex,
8108
+ // we put it as false by default
8109
+ rowHasSelectedCells: false
8110
+ });
8111
+ Object.defineProperty(rowPropsAndStyleArgs, "rowHasSelectedCells", {
8112
+ get() {
8113
+ return rowInfo.hasSelectedCells(visibleColumnIds);
8114
+ }
8086
8115
  });
8087
8116
  const rowComputedClassName = typeof rowClassName === "function" ? rowClassName(rowPropsAndStyleArgs) : rowClassName;
8088
8117
  let colClassName = void 0;
@@ -10288,6 +10317,7 @@ function getEnhancedGroupData(options, deepMapValue) {
10288
10317
  collapsed: false,
10289
10318
  dataSourceHasGrouping: true,
10290
10319
  isCellSelected: returnFalse,
10320
+ hasSelectedCells: returnFalse,
10291
10321
  selfLoaded,
10292
10322
  error: options.error,
10293
10323
  parents,
@@ -10424,6 +10454,7 @@ function enhancedFlatten(param) {
10424
10454
  id: itemId,
10425
10455
  data: item,
10426
10456
  isCellSelected: returnFalse,
10457
+ hasSelectedCells: returnFalse,
10427
10458
  dataSourceHasGrouping: true,
10428
10459
  isGroupRow: false,
10429
10460
  selfLoaded: !!item,
@@ -11718,6 +11749,7 @@ function getRowSelectionApi(param) {
11718
11749
  }
11719
11750
 
11720
11751
  // src/components/DataSource/CellSelectionState.ts
11752
+ var debug4 = dbg("CellSelectionState");
11721
11753
  var WILDCARD = "*";
11722
11754
  var CellSelectionState = class {
11723
11755
  constructor(clone) {
@@ -11760,7 +11792,7 @@ var CellSelectionState = class {
11760
11792
  setCellSelected(rowId, colId, selected) {
11761
11793
  const wildcardRow = rowId === this.wildcard;
11762
11794
  const wildcardColumn = colId === this.wildcard;
11763
- const isSelected = this.isCellSelected(rowId, colId);
11795
+ const isSelected = this.isCellSelected_Internal(rowId, colId);
11764
11796
  if (isSelected === selected) {
11765
11797
  return;
11766
11798
  }
@@ -11938,7 +11970,54 @@ var CellSelectionState = class {
11938
11970
  }
11939
11971
  this.defaultSelection = stateObject.defaultSelection;
11940
11972
  }
11973
+ /**
11974
+ * Returns whether there is at least one selected cell in the row
11975
+ *
11976
+ * @param rowId the row id
11977
+ * @param columnIds the columns currently available in the grid
11978
+ * @returns boolean
11979
+ */
11980
+ isCellSelectionInRow(rowId, columnIds) {
11981
+ if (this.defaultSelection) {
11982
+ const cols2 = this.deselectedRowsToColumns.get(rowId);
11983
+ if (cols2) {
11984
+ if (cols2.has(this.wildcard)) {
11985
+ const explicitlySelectedCols = this.selectedRowsToColumns.get(rowId);
11986
+ return explicitlySelectedCols && explicitlySelectedCols.size > 0 ? columnIds.some((colId) => explicitlySelectedCols.has(colId)) : false;
11987
+ }
11988
+ return columnIds.some((colId) => !cols2.has(colId));
11989
+ }
11990
+ return true;
11991
+ }
11992
+ const cols = this.selectedRowsToColumns.get(rowId);
11993
+ if (cols) {
11994
+ if (cols.has(this.wildcard)) {
11995
+ const explicitlyDeselectedCols = this.deselectedRowsToColumns.get(rowId);
11996
+ if (explicitlyDeselectedCols && explicitlyDeselectedCols.size > 0) {
11997
+ const allDeselected = columnIds.every(
11998
+ (colId) => explicitlyDeselectedCols.has(colId)
11999
+ );
12000
+ return !allDeselected;
12001
+ }
12002
+ return true;
12003
+ }
12004
+ return columnIds ? columnIds.some((colId) => cols.has(colId)) : false;
12005
+ }
12006
+ return false;
12007
+ }
11941
12008
  isCellSelected(rowId, colId) {
12009
+ if (rowId === this.wildcard || colId === this.wildcard) {
12010
+ console.error(
12011
+ `CellSelectionState.isCellSelected should not be called with wildcard`
12012
+ );
12013
+ debug4(
12014
+ `CellSelectionState.isCellSelected should not be called with wildcard`
12015
+ );
12016
+ return false;
12017
+ }
12018
+ return this.isCellSelected_Internal(rowId, colId);
12019
+ }
12020
+ isCellSelected_Internal(rowId, colId) {
11942
12021
  var _a, _b;
11943
12022
  const cacheKey = [rowId, colId];
11944
12023
  const { cache } = this;
@@ -12586,7 +12665,8 @@ function toRowInfo(data, id, index, isRowSelected, cellSelectionState) {
12586
12665
  isGroupRow: false,
12587
12666
  selfLoaded: true,
12588
12667
  rowSelected: false,
12589
- isCellSelected: returnFalse2
12668
+ isCellSelected: returnFalse2,
12669
+ hasSelectedCells: returnFalse2
12590
12670
  };
12591
12671
  if (isRowSelected) {
12592
12672
  rowInfo.rowSelected = isRowSelected(rowInfo);
@@ -12595,6 +12675,9 @@ function toRowInfo(data, id, index, isRowSelected, cellSelectionState) {
12595
12675
  rowInfo.isCellSelected = (colId) => {
12596
12676
  return cellSelectionState.isCellSelected(rowInfo.id, colId);
12597
12677
  };
12678
+ rowInfo.hasSelectedCells = (columnIds) => {
12679
+ return cellSelectionState.isCellSelectionInRow(rowInfo.id, columnIds);
12680
+ };
12598
12681
  }
12599
12682
  return rowInfo;
12600
12683
  }
@@ -12725,6 +12808,7 @@ function concludeReducer(params) {
12725
12808
  const shouldGroup = groupBy.length > 0 || !!pivotBy;
12726
12809
  const selectionDepsChanged = haveDepsChanged(previousState, state, [
12727
12810
  "rowSelection",
12811
+ "cellSelection",
12728
12812
  "isRowSelected",
12729
12813
  "originalLazyGroupDataChangeDetect"
12730
12814
  ]);
@@ -15860,13 +15944,13 @@ function useColumnRowspan(computedVisibleColumns) {
15860
15944
 
15861
15945
  // src/components/InfiniteTable/hooks/useColumnSizeFn.ts
15862
15946
  import { useCallback as useCallback20 } from "react";
15863
- var debug4 = dbg("useColumnSizeFn");
15947
+ var debug5 = dbg("useColumnSizeFn");
15864
15948
  function useColumnSizeFn(columns) {
15865
15949
  const columnSize = useCallback20(
15866
15950
  (index) => {
15867
15951
  const column = columns[index];
15868
15952
  if (false) {
15869
- debug4("cannot find column at index", index, columns);
15953
+ debug5("cannot find column at index", index, columns);
15870
15954
  }
15871
15955
  return column ? column.computedWidth : 0;
15872
15956
  },
@@ -17241,7 +17325,7 @@ var useLicense = (licenseKey = "") => {
17241
17325
  const valid = useMemo11(() => {
17242
17326
  let valid2 = isValidLicense(licenseKey, {
17243
17327
  publishedAt: 1624970570587,
17244
- version: "3.1.0"
17328
+ version: "3.1.2"
17245
17329
  });
17246
17330
  if (!licenseKey && !valid2 && isInsidePlayground) {
17247
17331
  return true;
@@ -19318,15 +19402,16 @@ function MenuComponent(props) {
19318
19402
  if (item.originalMenuItem.onClick) {
19319
19403
  item.originalMenuItem.onClick(event);
19320
19404
  }
19405
+ const onActionParam = {
19406
+ key: item.key,
19407
+ item: item.originalMenuItem,
19408
+ hideMenu: hideAll
19409
+ };
19321
19410
  if (item.originalMenuItem.onAction) {
19322
- item.originalMenuItem.onAction({
19323
- key: item.key,
19324
- item: item.originalMenuItem,
19325
- hideMenu: hideAll
19326
- });
19411
+ item.originalMenuItem.onAction(onActionParam);
19327
19412
  }
19328
19413
  if (onAction) {
19329
- onAction(item.key, item.originalMenuItem);
19414
+ onAction(onActionParam);
19330
19415
  }
19331
19416
  if (item.originalMenuItem.hideMenuOnAction) {
19332
19417
  hideAll();