react-table-edit 0.3.8 → 0.4.0

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 (3) hide show
  1. package/dist/index.js +74 -164
  2. package/dist/index.mjs +74 -164
  3. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -1525,42 +1525,15 @@ var TableEdit = (0, import_react12.forwardRef)((props, ref) => {
1525
1525
  const [columnLastEdit, setColumnlastEdit] = (0, import_react12.useState)(0);
1526
1526
  const [objWidthFix, setObjWidthFix] = (0, import_react12.useState)({});
1527
1527
  const [openPopupTree, setOpenPopupTree] = (0, import_react12.useState)(false);
1528
- const [dataDisplay, setDataDisplay] = (0, import_react12.useState)([]);
1529
1528
  const [openPopupSetupColumn, setOpenPopupSetupColumn] = (0, import_react12.useState)(false);
1530
- const [totalCount, setTotalCount] = (0, import_react12.useState)(0);
1531
1529
  const tableElement = (0, import_react12.useRef)(null);
1532
1530
  const gridRef = (0, import_react12.useRef)();
1533
1531
  const lag = window.localStorage.getItem("i18nextLng");
1534
1532
  const lang = lag ? lag : "vi";
1535
1533
  const pagingClient = pagingSetting?.allowPaging && !(editDisable || addDisable);
1534
+ const totalCount = dataSource.length;
1536
1535
  const fieldKey = columns.find((item) => item.isPrimarykey === true)?.field ?? "id";
1537
1536
  const fieldUniKey = columns.filter((item) => item.isUnikey === true)?.map((item) => item.field);
1538
- (0, import_react12.useEffect)(() => {
1539
- if (pagingClient) {
1540
- const length = dataSource.length;
1541
- if (length > 0) {
1542
- const arr = [];
1543
- for (let i = (pagingSetting?.pageSize ?? 0) * ((pagingSetting?.currentPage ?? 0) - 1); i < dataSource.length && i < (pagingSetting?.pageSize ?? 0) * (pagingSetting?.currentPage ?? 0); i++) {
1544
- arr.push(dataSource[i]);
1545
- }
1546
- setDataDisplay(arr);
1547
- }
1548
- setTotalCount(length);
1549
- }
1550
- }, [pagingSetting?.currentPage, pagingSetting?.pageSize]);
1551
- (0, import_react12.useEffect)(() => {
1552
- if (pagingClient && dataDisplay.length > 0) {
1553
- const length = dataSource?.length ?? 0;
1554
- if (length > 0) {
1555
- const arr = [];
1556
- for (let i = (pagingSetting?.pageSize ?? 0) * ((pagingSetting?.currentPage ?? 0) - 1); i < dataSource.length && i < (pagingSetting?.pageSize ?? 0) * (pagingSetting?.currentPage ?? 0); i++) {
1557
- arr.push(dataSource[i]);
1558
- }
1559
- setDataDisplay(arr);
1560
- }
1561
- setTotalCount(length);
1562
- }
1563
- }, [dataSource]);
1564
1537
  (0, import_react12.useEffect)(() => {
1565
1538
  let indexFirst = -1;
1566
1539
  let indexlast = -1;
@@ -1666,7 +1639,7 @@ var TableEdit = (0, import_react12.forwardRef)((props, ref) => {
1666
1639
  }
1667
1640
  }
1668
1641
  }
1669
- changeDataSource(pagingClient ? dataDisplay : dataSource);
1642
+ changeDataSource(dataSource);
1670
1643
  if (dataSourceChange) {
1671
1644
  dataSourceChange(dataSource);
1672
1645
  }
@@ -1686,7 +1659,7 @@ var TableEdit = (0, import_react12.forwardRef)((props, ref) => {
1686
1659
  }
1687
1660
  }
1688
1661
  }
1689
- changeDataSource(pagingClient ? dataDisplay : dataSource);
1662
+ changeDataSource(dataSource);
1690
1663
  if (dataSourceChange) {
1691
1664
  dataSourceChange(dataSource);
1692
1665
  }
@@ -1730,7 +1703,7 @@ var TableEdit = (0, import_react12.forwardRef)((props, ref) => {
1730
1703
  onChange: (val) => {
1731
1704
  row[col.field] = val.target.value;
1732
1705
  if (col.callback) {
1733
- col.callback(val.target.value, indexRow);
1706
+ col.callback(row, val.target.value, indexRow);
1734
1707
  }
1735
1708
  handleDataChange(row, col, indexRow);
1736
1709
  },
@@ -2142,35 +2115,25 @@ var TableEdit = (0, import_react12.forwardRef)((props, ref) => {
2142
2115
  );
2143
2116
  }) }) });
2144
2117
  };
2145
- const moveIndexRowToNewPage = (isUp, addIfLast = false) => {
2146
- if (!isUp) {
2147
- let index = 0;
2148
- if (addIfLast) {
2149
- if (!pagingSetting?.allowPaging || (pagingSetting?.pageSize ?? 0) * ((pagingSetting?.currentPage ?? 1) - 1) + dataDisplay.length >= dataSource.length) {
2150
- changeDataSource(pagingClient ? dataDisplay : dataSource, true);
2151
- }
2152
- }
2153
- if (pagingClient && dataDisplay.length > (pagingSetting?.pageSize ?? 0) && pagingSetting?.setCurrentPage) {
2154
- pagingSetting?.setCurrentPage((pagingSetting?.currentPage ?? 0) + 1);
2155
- } else {
2156
- index = dataDisplay.length - 1;
2157
- }
2158
- if (tableElement) {
2159
- setIndexFocus(index);
2160
- setTimeout(() => {
2161
- tableElement.current?.scrollTo(0, tableElement.current.scrollHeight);
2162
- const element = document.getElementById(`${idTable}-col${columnFistEdit}-row${index + 1}`);
2163
- if (element) {
2164
- if (element.className.includes("react-select") || element.className.includes("form-edit")) {
2165
- element.getElementsByTagName("input")[0]?.focus();
2166
- } else {
2167
- element.focus();
2168
- element.scrollIntoView();
2169
- }
2118
+ const moveIndexRowToNewPage = () => {
2119
+ changeDataSource(dataSource, true);
2120
+ if (pagingClient && pagingSetting?.setCurrentPage && totalCount % (pagingSetting?.pageSize ?? 0) === 0) {
2121
+ pagingSetting?.setCurrentPage((pagingSetting?.currentPage ?? 0) + 1);
2122
+ }
2123
+ if (tableElement) {
2124
+ setIndexFocus(totalCount);
2125
+ setTimeout(() => {
2126
+ tableElement.current?.scrollTo(0, tableElement.current.scrollHeight);
2127
+ const element = document.getElementById(`${idTable}-col${columnFistEdit}-row${totalCount + 1}`);
2128
+ if (element) {
2129
+ if (element.className.includes("react-select") || element.className.includes("form-edit")) {
2130
+ element.getElementsByTagName("input")[0]?.focus();
2131
+ } else {
2132
+ element.focus();
2133
+ element.scrollIntoView();
2170
2134
  }
2171
- }, 100);
2172
- }
2173
- } else {
2135
+ }
2136
+ }, 100);
2174
2137
  }
2175
2138
  };
2176
2139
  const checkKeyDown = (e, row, col, indexRow, indexCol) => {
@@ -2217,17 +2180,13 @@ var TableEdit = (0, import_react12.forwardRef)((props, ref) => {
2217
2180
  } else if (e.code === "ArrowUp") {
2218
2181
  const element = document.getElementById(`${idTable}-col${indexCol}-row${indexRow}`);
2219
2182
  if (element && !(element.getElementsByClassName("select__control--menu-is-open").length > 0 || element.getElementsByClassName("select-100__control--menu-is-open").length > 0 || element.getElementsByClassName("select-200__control--menu-is-open").length > 0 || element.getElementsByClassName("select-300__control--menu-is-open").length > 0 || element.getElementsByClassName("select-400__control--menu-is-open").length > 0 || element.getElementsByClassName("select-500__control--menu-is-open").length > 0)) {
2220
- let index = -1;
2221
2183
  if (indexRow > 1) {
2222
- index = indexRow - 2;
2223
- } else if (pagingClient && (pagingSetting?.currentPage ?? 0) !== 1) {
2224
- index = (pagingSetting?.pageSize ?? 0) - 1;
2225
- pagingSetting?.setCurrentPage((pagingSetting?.currentPage ?? 1) - 1);
2226
- }
2227
- if (index !== -1) {
2228
- setIndexFocus(index);
2184
+ if (pagingClient && (pagingSetting?.currentPage ?? 0) !== 1 && indexRow % (pagingSetting?.pageSize ?? 0) === 1) {
2185
+ pagingSetting?.setCurrentPage((pagingSetting?.currentPage ?? 1) - 1);
2186
+ }
2187
+ setIndexFocus(indexRow - 2);
2229
2188
  setTimeout(() => {
2230
- const element2 = document.getElementById(`${idTable}-col${indexCol}-row${index + 1}`);
2189
+ const element2 = document.getElementById(`${idTable}-col${indexCol}-row${indexRow - 1}`);
2231
2190
  if (element2) {
2232
2191
  if (element2.className.includes("react-select") || element2.className.includes("form-edit")) {
2233
2192
  element2.getElementsByTagName("input")[0]?.focus();
@@ -2243,17 +2202,13 @@ var TableEdit = (0, import_react12.forwardRef)((props, ref) => {
2243
2202
  } else if (e.code === "ArrowDown") {
2244
2203
  const element = document.getElementById(`${idTable}-col${indexCol}-row${indexRow}`);
2245
2204
  if (element && !(element.getElementsByClassName("select__control--menu-is-open").length > 0 || element.getElementsByClassName("select-100__control--menu-is-open").length > 0 || element.getElementsByClassName("select-200__control--menu-is-open").length > 0 || element.getElementsByClassName("select-300__control--menu-is-open").length > 0 || element.getElementsByClassName("select-400__control--menu-is-open").length > 0 || element.getElementsByClassName("select-500__control--menu-is-open").length > 0)) {
2246
- let index = -1;
2247
- if (indexRow < dataDisplay.length) {
2248
- index = indexRow;
2249
- } else if (pagingClient && (pagingSetting?.currentPage ?? 1) * (pagingSetting?.pageSize ?? 0) < totalCount) {
2250
- index = 0;
2251
- pagingSetting?.setCurrentPage((pagingSetting?.currentPage ?? 1) + 1);
2252
- }
2253
- if (index !== -1) {
2254
- setIndexFocus(index);
2205
+ if (indexRow < totalCount) {
2206
+ if (pagingClient && indexRow % (pagingSetting?.pageSize ?? 0) === 0) {
2207
+ pagingSetting?.setCurrentPage((pagingSetting?.currentPage ?? 1) + 1);
2208
+ }
2209
+ setIndexFocus(indexRow);
2255
2210
  setTimeout(() => {
2256
- const element2 = document.getElementById(`${idTable}-col${indexCol}-row${index + 1}`);
2211
+ const element2 = document.getElementById(`${idTable}-col${indexCol}-row${indexRow + 1}`);
2257
2212
  if (element2) {
2258
2213
  if (element2.className.includes("react-select") || element2.className.includes("form-edit")) {
2259
2214
  element2.getElementsByTagName("input")[0]?.focus();
@@ -2267,12 +2222,15 @@ var TableEdit = (0, import_react12.forwardRef)((props, ref) => {
2267
2222
  }
2268
2223
  }
2269
2224
  } else if (e.code === "Tab" && indexCol === columnLastEdit) {
2270
- if (indexRow === dataDisplay.length) {
2271
- moveIndexRowToNewPage(false, true);
2225
+ if (indexRow === totalCount) {
2226
+ moveIndexRowToNewPage();
2272
2227
  } else {
2228
+ if (pagingClient && indexRow % (pagingSetting?.pageSize ?? 0) === 0) {
2229
+ pagingSetting?.setCurrentPage((pagingSetting?.currentPage ?? 1) + 1);
2230
+ }
2273
2231
  setIndexFocus(indexRow);
2274
2232
  setTimeout(() => {
2275
- const element = document.getElementById(`${idTable}-col${columnFistEdit}-row${indexRow + 1}`);
2233
+ const element = document.getElementById(`${idTable}-col${indexCol}-row${indexRow + 1}`);
2276
2234
  if (element) {
2277
2235
  if (element.className.includes("react-select") || element.className.includes("form-edit")) {
2278
2236
  element.getElementsByTagName("input")[0]?.focus();
@@ -2283,15 +2241,19 @@ var TableEdit = (0, import_react12.forwardRef)((props, ref) => {
2283
2241
  }, 100);
2284
2242
  }
2285
2243
  e.preventDefault();
2244
+ return e.code;
2286
2245
  } else if ((e.code === "Enter" || e.code === "NumpadEnter") && (!editDisable && !addDisable)) {
2287
2246
  const element = document.getElementById(`${idTable}-col${indexCol}-row${indexRow}`);
2288
2247
  if (element && !(element.getElementsByClassName("select__control--menu-is-open").length > 0 || element.getElementsByClassName("select-100__control--menu-is-open").length > 0 || element.getElementsByClassName("select-200__control--menu-is-open").length > 0 || element.getElementsByClassName("select-300__control--menu-is-open").length > 0 || element.getElementsByClassName("select-400__control--menu-is-open").length > 0 || element.getElementsByClassName("select-500__control--menu-is-open").length > 0)) {
2289
- if (indexRow === dataDisplay.length) {
2290
- moveIndexRowToNewPage(false, true);
2248
+ if (indexRow === totalCount) {
2249
+ moveIndexRowToNewPage();
2291
2250
  } else {
2251
+ if (pagingClient && indexRow % (pagingSetting?.pageSize ?? 0) === 0) {
2252
+ pagingSetting?.setCurrentPage((pagingSetting?.currentPage ?? 1) + 1);
2253
+ }
2292
2254
  setIndexFocus(indexRow);
2293
2255
  setTimeout(() => {
2294
- const element2 = document.getElementById(`${idTable}-col${columnFistEdit}-row${indexRow + 1}`);
2256
+ const element2 = document.getElementById(`${idTable}-col${indexCol}-row${indexRow + 1}`);
2295
2257
  if (element2) {
2296
2258
  if (element2.className.includes("react-select") || element2.className.includes("form-edit")) {
2297
2259
  element2.getElementsByTagName("input")[0]?.focus();
@@ -2339,18 +2301,13 @@ var TableEdit = (0, import_react12.forwardRef)((props, ref) => {
2339
2301
  }
2340
2302
  });
2341
2303
  const handleAdd = () => {
2342
- changeDataSource(pagingClient ? dataDisplay : dataSource, true);
2343
- let index = 0;
2344
- if (pagingClient && dataDisplay.length > (pagingSetting?.pageSize ?? 0) && pagingSetting?.setCurrentPage) {
2345
- pagingSetting?.setCurrentPage((pagingSetting?.currentPage ?? 0) + 1);
2346
- } else {
2347
- index = dataDisplay.length - 1;
2348
- }
2304
+ changeDataSource(dataSource, true);
2305
+ pagingSetting?.setCurrentPage(Math.floor(totalCount / (pagingSetting?.pageSize ?? 0)) + 1);
2349
2306
  if (tableElement) {
2350
- setIndexFocus(index);
2307
+ setIndexFocus(totalCount);
2351
2308
  setTimeout(() => {
2352
2309
  tableElement.current?.scrollTo(0, tableElement.current.scrollHeight);
2353
- const element = document.getElementById(`${idTable}-col${columnFistEdit}-row${index + 1}`);
2310
+ const element = document.getElementById(`${idTable}-col${columnFistEdit}-row${totalCount + 1}`);
2354
2311
  if (element && !(element.getElementsByClassName("select__control--menu-is-open").length > 0 || element.getElementsByClassName("select-100__control--menu-is-open").length > 0 || element.getElementsByClassName("select-200__control--menu-is-open").length > 0 || element.getElementsByClassName("select-300__control--menu-is-open").length > 0 || element.getElementsByClassName("select-400__control--menu-is-open").length > 0 || element.getElementsByClassName("select-500__control--menu-is-open").length > 0)) {
2355
2312
  if (element.className.includes("react-select") || element.className.includes("form-edit")) {
2356
2313
  element.getElementsByTagName("input")[0]?.focus();
@@ -2370,15 +2327,12 @@ var TableEdit = (0, import_react12.forwardRef)((props, ref) => {
2370
2327
  data[fieldKey] = defaultValue[fieldKey];
2371
2328
  }
2372
2329
  if (pagingClient) {
2373
- if (dataDisplay.length < (pagingSetting?.pageSize ?? 0)) {
2374
- dataDisplay.splice(index, 0, data);
2375
- }
2376
2330
  dataSource.splice(((pagingSetting?.currentPage ?? 1) - 1) * (pagingSetting?.pageSize ?? 0) + index, 0, { ...data });
2377
2331
  } else {
2378
2332
  dataSource.splice(index, 0, data);
2379
2333
  }
2380
- changeDataSource(pagingClient ? dataDisplay : dataSource);
2381
- if (tableElement && index === (pagingClient ? dataDisplay.length : dataSource.length)) {
2334
+ changeDataSource(dataSource);
2335
+ if (tableElement && index === totalCount) {
2382
2336
  setTimeout(() => {
2383
2337
  tableElement.current?.scrollTo(0, tableElement.current.scrollHeight);
2384
2338
  }, 100);
@@ -2388,15 +2342,12 @@ var TableEdit = (0, import_react12.forwardRef)((props, ref) => {
2388
2342
  const handleInsertAfter = () => {
2389
2343
  if (toolbarSetting?.showBottomToolbar && !buttonSetting?.insertAfterDisable && !editDisable && !addDisable) {
2390
2344
  if (pagingClient) {
2391
- if (dataDisplay.length < (pagingSetting?.pageSize ?? 0)) {
2392
- dataDisplay.splice((indexFocus ?? -1) + 1, 0, { ...defaultValue });
2393
- }
2394
2345
  dataSource.splice(((pagingSetting?.currentPage ?? 1) - 1) * (pagingSetting?.pageSize ?? 0) + (indexFocus ?? -1) + 1, 0, { ...{ ...defaultValue } });
2395
2346
  } else {
2396
2347
  dataSource.splice((indexFocus ?? -1) + 1, 0, { ...defaultValue });
2397
2348
  }
2398
- changeDataSource(pagingClient ? dataDisplay : dataSource);
2399
- if (tableElement && indexFocus === dataSource.length) {
2349
+ changeDataSource(dataSource);
2350
+ if (tableElement && indexFocus === totalCount) {
2400
2351
  setTimeout(() => {
2401
2352
  tableElement.current?.scrollTo(0, tableElement.current.scrollHeight);
2402
2353
  }, 100);
@@ -2406,14 +2357,11 @@ var TableEdit = (0, import_react12.forwardRef)((props, ref) => {
2406
2357
  const handleInsertBefore = () => {
2407
2358
  if (toolbarSetting?.showBottomToolbar && !buttonSetting?.insertBeforeDisable && !editDisable && !addDisable) {
2408
2359
  if (pagingClient) {
2409
- if (dataDisplay.length < (pagingSetting?.pageSize ?? 0)) {
2410
- dataDisplay.splice(indexFocus ?? -1, 0, { ...defaultValue });
2411
- }
2412
2360
  dataSource.splice(((pagingSetting?.currentPage ?? 1) - 1) * (pagingSetting?.pageSize ?? 0) + (indexFocus ?? -1), 0, { ...{ ...defaultValue } });
2413
2361
  } else {
2414
2362
  dataSource.splice(indexFocus ?? -1, 0, { ...defaultValue });
2415
2363
  }
2416
- changeDataSource(pagingClient ? dataDisplay : dataSource);
2364
+ changeDataSource(dataSource);
2417
2365
  }
2418
2366
  };
2419
2367
  const handleDeleteAll = () => {
@@ -2446,29 +2394,15 @@ var TableEdit = (0, import_react12.forwardRef)((props, ref) => {
2446
2394
  rowChange(dataRow, row + indexRow, "");
2447
2395
  });
2448
2396
  handleRefeshRow();
2449
- changeDataSource(pagingClient ? dataDisplay : dataSource);
2397
+ changeDataSource(dataSource);
2450
2398
  };
2451
2399
  const changeDataSource = (data, haveNew = false) => {
2452
- if (data.length === 0 && !haveNew) {
2453
- setDataDisplay([]);
2454
- setDataSource([]);
2455
- } else if (!editDisable && !addDisable && setDataSource) {
2456
- if (pagingClient) {
2457
- if (haveNew) {
2458
- data.push(defaultValue ? { ...defaultValue, [fieldKey]: generateUUID() } : {});
2459
- setDataDisplay(data);
2460
- dataSource.push(defaultValue ? { ...defaultValue, [fieldKey]: generateUUID() } : {});
2461
- } else {
2462
- setDataDisplay([...data]);
2463
- }
2464
- setTotalCount(dataSource?.length ?? 0);
2400
+ if (!editDisable && !addDisable && setDataSource) {
2401
+ if (haveNew) {
2402
+ data.push(defaultValue ? { ...defaultValue, [fieldKey]: generateUUID() } : {});
2403
+ setDataSource([...data]);
2465
2404
  } else {
2466
- if (haveNew) {
2467
- data.push(defaultValue ? { ...defaultValue, [fieldKey]: generateUUID() } : {});
2468
- setDataSource([...data]);
2469
- } else {
2470
- setDataSource([...data]);
2471
- }
2405
+ setDataSource([...data]);
2472
2406
  }
2473
2407
  }
2474
2408
  };
@@ -2554,18 +2488,11 @@ var TableEdit = (0, import_react12.forwardRef)((props, ref) => {
2554
2488
  onPaste: (e) => {
2555
2489
  if (!editDisable && (e.target.nodeName === "DIV" || e.target.nodeName === "TD")) {
2556
2490
  navigator.clipboard.readText().then((rs) => {
2557
- if (pagingClient) {
2558
- dataDisplay[indexRow] = JSON.parse(rs);
2559
- if (fieldKey) {
2560
- dataDisplay[indexRow][fieldKey] = defaultValue[fieldKey];
2561
- }
2562
- } else {
2563
- dataSource[indexRow] = JSON.parse(rs);
2564
- if (fieldKey) {
2565
- dataSource[indexRow][fieldKey] = defaultValue[fieldKey];
2566
- }
2491
+ dataSource[indexRow] = JSON.parse(rs);
2492
+ if (fieldKey) {
2493
+ dataSource[indexRow][fieldKey] = defaultValue[fieldKey];
2567
2494
  }
2568
- changeDataSource(pagingClient ? dataDisplay : dataSource);
2495
+ changeDataSource(dataSource);
2569
2496
  notificationSuccess(t("PasteSuccessful"));
2570
2497
  }).catch((ex) => {
2571
2498
  alert(ex);
@@ -2772,22 +2699,16 @@ var TableEdit = (0, import_react12.forwardRef)((props, ref) => {
2772
2699
  children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
2773
2700
  import_reactstrap8.Input,
2774
2701
  {
2775
- checked: (pagingClient ? dataDisplay.length > 0 : dataSource.length > 0) && selectedRows?.length >= (pagingClient ? dataDisplay.length : dataSource.length),
2702
+ checked: totalCount > 0 && selectedRows?.length >= totalCount,
2776
2703
  type: "checkbox",
2777
2704
  className: (0, import_classnames10.default)("cursor-pointer", { "d-none": !isMulti }),
2778
2705
  style: { textAlign: col.textAlign ?? "left", marginTop: 6 },
2779
2706
  onChange: (e) => {
2780
2707
  if (selectEnable) {
2781
2708
  if (e.target.checked) {
2782
- if (pagingClient) {
2783
- setSelectedRows(dataDisplay.map((item) => {
2784
- return item;
2785
- }));
2786
- } else {
2787
- setSelectedRows(dataSource.map((item) => {
2788
- return item;
2789
- }));
2790
- }
2709
+ setSelectedRows(dataSource.map((item) => {
2710
+ return item;
2711
+ }));
2791
2712
  } else {
2792
2713
  setSelectedRows([]);
2793
2714
  }
@@ -2919,7 +2840,7 @@ var TableEdit = (0, import_react12.forwardRef)((props, ref) => {
2919
2840
  /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("div", { className: (0, import_classnames10.default)("r-toolbar-item", { "d-none": editDisable || addDisable }), "aria-disabled": "false", children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(import_reactstrap8.Button, { color: "success", outline: true, onClick: handleAdd, className: "d-flex", children: t("Add item") }) }),
2920
2841
  (indexFocus ?? -1) > -1 ? /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(import_jsx_runtime12.Fragment, { children: [
2921
2842
  /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("div", { className: (0, import_classnames10.default)("r-toolbar-item", { "d-none": editDisable || addDisable || buttonSetting?.duplicateDisable }), "aria-disabled": "false", children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(import_reactstrap8.Button, { color: "success", outline: true, onClick: () => {
2922
- handleDuplicate(pagingClient ? dataDisplay[indexFocus ?? -1] : dataSource[indexFocus ?? -1], indexFocus ?? -1);
2843
+ handleDuplicate(dataSource[indexFocus ?? -1], indexFocus ?? -1);
2923
2844
  }, className: "d-flex", children: t("Duplicate") }) }),
2924
2845
  /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("div", { className: (0, import_classnames10.default)("r-toolbar-item", { "d-none": editDisable || addDisable || buttonSetting?.insertBeforeDisable }), "aria-disabled": "false", children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(import_reactstrap8.Button, { color: "success", outline: true, onClick: handleInsertBefore, className: "d-flex", children: t("Insert item before") }) }),
2925
2846
  /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("div", { className: (0, import_classnames10.default)("r-toolbar-item", { "d-none": editDisable || addDisable || buttonSetting?.insertAfterDisable }), "aria-disabled": "false", children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(import_reactstrap8.Button, { color: "success", outline: true, onClick: handleInsertAfter, className: "d-flex", children: t("Insert item after") }) })
@@ -2959,24 +2880,13 @@ var TableEdit = (0, import_react12.forwardRef)((props, ref) => {
2959
2880
  return renderHeaderCol(col, index, indexParent);
2960
2881
  }) }, indexParent);
2961
2882
  }) }),
2962
- /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("tbody", { className: "r-gridcontent", children: pagingClient ? dataDisplay.map((row, indexRow) => {
2963
- const isSelected = selectedRows?.some((x) => x[fieldKey] === row[fieldKey]);
2964
- return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
2965
- "tr",
2966
- {
2967
- className: (0, import_classnames10.default)("r-row", { "last-row": indexRow === dataDisplay.length - 1 }, { "fisrt-row": indexRow === 0 }),
2968
- children: contentColumns.map((col, indexCol) => {
2969
- return renderContentCol(col, row, indexRow, indexCol, isSelected);
2970
- })
2971
- },
2972
- `row-${indexRow}`
2973
- );
2974
- }) : dataSource.map((row, indexRow) => {
2883
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("tbody", { className: "r-gridcontent", children: dataSource.map((row, indexRow) => {
2975
2884
  const isSelected = selectedRows?.some((x) => x[fieldKey] === row[fieldKey]);
2976
- return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
2885
+ const flagDisplay = !pagingClient || indexRow + 1 > (pagingSetting.pageSize ?? 0) * ((pagingSetting.currentPage ?? 0) - 1) && indexRow < (pagingSetting.pageSize ?? 0) * (pagingSetting.currentPage ?? 0);
2886
+ return flagDisplay && /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
2977
2887
  "tr",
2978
2888
  {
2979
- className: (0, import_classnames10.default)("r-row", { "last-row": indexRow === dataDisplay.length - 1 }, { "fisrt-row": indexRow === 0 }),
2889
+ className: (0, import_classnames10.default)("r-row", { "last-row": indexRow === (pagingClient ? totalCount % (pagingSetting?.pageSize ?? 0) : totalCount - 1) }, { "fisrt-row": indexRow === 0 }),
2980
2890
  children: contentColumns.map((col, indexCol) => {
2981
2891
  return renderContentCol(col, row, indexRow, indexCol, isSelected);
2982
2892
  })
package/dist/index.mjs CHANGED
@@ -1484,42 +1484,15 @@ var TableEdit = forwardRef2((props, ref) => {
1484
1484
  const [columnLastEdit, setColumnlastEdit] = useState5(0);
1485
1485
  const [objWidthFix, setObjWidthFix] = useState5({});
1486
1486
  const [openPopupTree, setOpenPopupTree] = useState5(false);
1487
- const [dataDisplay, setDataDisplay] = useState5([]);
1488
1487
  const [openPopupSetupColumn, setOpenPopupSetupColumn] = useState5(false);
1489
- const [totalCount, setTotalCount] = useState5(0);
1490
1488
  const tableElement = useRef2(null);
1491
1489
  const gridRef = useRef2();
1492
1490
  const lag = window.localStorage.getItem("i18nextLng");
1493
1491
  const lang = lag ? lag : "vi";
1494
1492
  const pagingClient = pagingSetting?.allowPaging && !(editDisable || addDisable);
1493
+ const totalCount = dataSource.length;
1495
1494
  const fieldKey = columns.find((item) => item.isPrimarykey === true)?.field ?? "id";
1496
1495
  const fieldUniKey = columns.filter((item) => item.isUnikey === true)?.map((item) => item.field);
1497
- useEffect5(() => {
1498
- if (pagingClient) {
1499
- const length = dataSource.length;
1500
- if (length > 0) {
1501
- const arr = [];
1502
- for (let i = (pagingSetting?.pageSize ?? 0) * ((pagingSetting?.currentPage ?? 0) - 1); i < dataSource.length && i < (pagingSetting?.pageSize ?? 0) * (pagingSetting?.currentPage ?? 0); i++) {
1503
- arr.push(dataSource[i]);
1504
- }
1505
- setDataDisplay(arr);
1506
- }
1507
- setTotalCount(length);
1508
- }
1509
- }, [pagingSetting?.currentPage, pagingSetting?.pageSize]);
1510
- useEffect5(() => {
1511
- if (pagingClient && dataDisplay.length > 0) {
1512
- const length = dataSource?.length ?? 0;
1513
- if (length > 0) {
1514
- const arr = [];
1515
- for (let i = (pagingSetting?.pageSize ?? 0) * ((pagingSetting?.currentPage ?? 0) - 1); i < dataSource.length && i < (pagingSetting?.pageSize ?? 0) * (pagingSetting?.currentPage ?? 0); i++) {
1516
- arr.push(dataSource[i]);
1517
- }
1518
- setDataDisplay(arr);
1519
- }
1520
- setTotalCount(length);
1521
- }
1522
- }, [dataSource]);
1523
1496
  useEffect5(() => {
1524
1497
  let indexFirst = -1;
1525
1498
  let indexlast = -1;
@@ -1625,7 +1598,7 @@ var TableEdit = forwardRef2((props, ref) => {
1625
1598
  }
1626
1599
  }
1627
1600
  }
1628
- changeDataSource(pagingClient ? dataDisplay : dataSource);
1601
+ changeDataSource(dataSource);
1629
1602
  if (dataSourceChange) {
1630
1603
  dataSourceChange(dataSource);
1631
1604
  }
@@ -1645,7 +1618,7 @@ var TableEdit = forwardRef2((props, ref) => {
1645
1618
  }
1646
1619
  }
1647
1620
  }
1648
- changeDataSource(pagingClient ? dataDisplay : dataSource);
1621
+ changeDataSource(dataSource);
1649
1622
  if (dataSourceChange) {
1650
1623
  dataSourceChange(dataSource);
1651
1624
  }
@@ -1689,7 +1662,7 @@ var TableEdit = forwardRef2((props, ref) => {
1689
1662
  onChange: (val) => {
1690
1663
  row[col.field] = val.target.value;
1691
1664
  if (col.callback) {
1692
- col.callback(val.target.value, indexRow);
1665
+ col.callback(row, val.target.value, indexRow);
1693
1666
  }
1694
1667
  handleDataChange(row, col, indexRow);
1695
1668
  },
@@ -2101,35 +2074,25 @@ var TableEdit = forwardRef2((props, ref) => {
2101
2074
  );
2102
2075
  }) }) });
2103
2076
  };
2104
- const moveIndexRowToNewPage = (isUp, addIfLast = false) => {
2105
- if (!isUp) {
2106
- let index = 0;
2107
- if (addIfLast) {
2108
- if (!pagingSetting?.allowPaging || (pagingSetting?.pageSize ?? 0) * ((pagingSetting?.currentPage ?? 1) - 1) + dataDisplay.length >= dataSource.length) {
2109
- changeDataSource(pagingClient ? dataDisplay : dataSource, true);
2110
- }
2111
- }
2112
- if (pagingClient && dataDisplay.length > (pagingSetting?.pageSize ?? 0) && pagingSetting?.setCurrentPage) {
2113
- pagingSetting?.setCurrentPage((pagingSetting?.currentPage ?? 0) + 1);
2114
- } else {
2115
- index = dataDisplay.length - 1;
2116
- }
2117
- if (tableElement) {
2118
- setIndexFocus(index);
2119
- setTimeout(() => {
2120
- tableElement.current?.scrollTo(0, tableElement.current.scrollHeight);
2121
- const element = document.getElementById(`${idTable}-col${columnFistEdit}-row${index + 1}`);
2122
- if (element) {
2123
- if (element.className.includes("react-select") || element.className.includes("form-edit")) {
2124
- element.getElementsByTagName("input")[0]?.focus();
2125
- } else {
2126
- element.focus();
2127
- element.scrollIntoView();
2128
- }
2077
+ const moveIndexRowToNewPage = () => {
2078
+ changeDataSource(dataSource, true);
2079
+ if (pagingClient && pagingSetting?.setCurrentPage && totalCount % (pagingSetting?.pageSize ?? 0) === 0) {
2080
+ pagingSetting?.setCurrentPage((pagingSetting?.currentPage ?? 0) + 1);
2081
+ }
2082
+ if (tableElement) {
2083
+ setIndexFocus(totalCount);
2084
+ setTimeout(() => {
2085
+ tableElement.current?.scrollTo(0, tableElement.current.scrollHeight);
2086
+ const element = document.getElementById(`${idTable}-col${columnFistEdit}-row${totalCount + 1}`);
2087
+ if (element) {
2088
+ if (element.className.includes("react-select") || element.className.includes("form-edit")) {
2089
+ element.getElementsByTagName("input")[0]?.focus();
2090
+ } else {
2091
+ element.focus();
2092
+ element.scrollIntoView();
2129
2093
  }
2130
- }, 100);
2131
- }
2132
- } else {
2094
+ }
2095
+ }, 100);
2133
2096
  }
2134
2097
  };
2135
2098
  const checkKeyDown = (e, row, col, indexRow, indexCol) => {
@@ -2176,17 +2139,13 @@ var TableEdit = forwardRef2((props, ref) => {
2176
2139
  } else if (e.code === "ArrowUp") {
2177
2140
  const element = document.getElementById(`${idTable}-col${indexCol}-row${indexRow}`);
2178
2141
  if (element && !(element.getElementsByClassName("select__control--menu-is-open").length > 0 || element.getElementsByClassName("select-100__control--menu-is-open").length > 0 || element.getElementsByClassName("select-200__control--menu-is-open").length > 0 || element.getElementsByClassName("select-300__control--menu-is-open").length > 0 || element.getElementsByClassName("select-400__control--menu-is-open").length > 0 || element.getElementsByClassName("select-500__control--menu-is-open").length > 0)) {
2179
- let index = -1;
2180
2142
  if (indexRow > 1) {
2181
- index = indexRow - 2;
2182
- } else if (pagingClient && (pagingSetting?.currentPage ?? 0) !== 1) {
2183
- index = (pagingSetting?.pageSize ?? 0) - 1;
2184
- pagingSetting?.setCurrentPage((pagingSetting?.currentPage ?? 1) - 1);
2185
- }
2186
- if (index !== -1) {
2187
- setIndexFocus(index);
2143
+ if (pagingClient && (pagingSetting?.currentPage ?? 0) !== 1 && indexRow % (pagingSetting?.pageSize ?? 0) === 1) {
2144
+ pagingSetting?.setCurrentPage((pagingSetting?.currentPage ?? 1) - 1);
2145
+ }
2146
+ setIndexFocus(indexRow - 2);
2188
2147
  setTimeout(() => {
2189
- const element2 = document.getElementById(`${idTable}-col${indexCol}-row${index + 1}`);
2148
+ const element2 = document.getElementById(`${idTable}-col${indexCol}-row${indexRow - 1}`);
2190
2149
  if (element2) {
2191
2150
  if (element2.className.includes("react-select") || element2.className.includes("form-edit")) {
2192
2151
  element2.getElementsByTagName("input")[0]?.focus();
@@ -2202,17 +2161,13 @@ var TableEdit = forwardRef2((props, ref) => {
2202
2161
  } else if (e.code === "ArrowDown") {
2203
2162
  const element = document.getElementById(`${idTable}-col${indexCol}-row${indexRow}`);
2204
2163
  if (element && !(element.getElementsByClassName("select__control--menu-is-open").length > 0 || element.getElementsByClassName("select-100__control--menu-is-open").length > 0 || element.getElementsByClassName("select-200__control--menu-is-open").length > 0 || element.getElementsByClassName("select-300__control--menu-is-open").length > 0 || element.getElementsByClassName("select-400__control--menu-is-open").length > 0 || element.getElementsByClassName("select-500__control--menu-is-open").length > 0)) {
2205
- let index = -1;
2206
- if (indexRow < dataDisplay.length) {
2207
- index = indexRow;
2208
- } else if (pagingClient && (pagingSetting?.currentPage ?? 1) * (pagingSetting?.pageSize ?? 0) < totalCount) {
2209
- index = 0;
2210
- pagingSetting?.setCurrentPage((pagingSetting?.currentPage ?? 1) + 1);
2211
- }
2212
- if (index !== -1) {
2213
- setIndexFocus(index);
2164
+ if (indexRow < totalCount) {
2165
+ if (pagingClient && indexRow % (pagingSetting?.pageSize ?? 0) === 0) {
2166
+ pagingSetting?.setCurrentPage((pagingSetting?.currentPage ?? 1) + 1);
2167
+ }
2168
+ setIndexFocus(indexRow);
2214
2169
  setTimeout(() => {
2215
- const element2 = document.getElementById(`${idTable}-col${indexCol}-row${index + 1}`);
2170
+ const element2 = document.getElementById(`${idTable}-col${indexCol}-row${indexRow + 1}`);
2216
2171
  if (element2) {
2217
2172
  if (element2.className.includes("react-select") || element2.className.includes("form-edit")) {
2218
2173
  element2.getElementsByTagName("input")[0]?.focus();
@@ -2226,12 +2181,15 @@ var TableEdit = forwardRef2((props, ref) => {
2226
2181
  }
2227
2182
  }
2228
2183
  } else if (e.code === "Tab" && indexCol === columnLastEdit) {
2229
- if (indexRow === dataDisplay.length) {
2230
- moveIndexRowToNewPage(false, true);
2184
+ if (indexRow === totalCount) {
2185
+ moveIndexRowToNewPage();
2231
2186
  } else {
2187
+ if (pagingClient && indexRow % (pagingSetting?.pageSize ?? 0) === 0) {
2188
+ pagingSetting?.setCurrentPage((pagingSetting?.currentPage ?? 1) + 1);
2189
+ }
2232
2190
  setIndexFocus(indexRow);
2233
2191
  setTimeout(() => {
2234
- const element = document.getElementById(`${idTable}-col${columnFistEdit}-row${indexRow + 1}`);
2192
+ const element = document.getElementById(`${idTable}-col${indexCol}-row${indexRow + 1}`);
2235
2193
  if (element) {
2236
2194
  if (element.className.includes("react-select") || element.className.includes("form-edit")) {
2237
2195
  element.getElementsByTagName("input")[0]?.focus();
@@ -2242,15 +2200,19 @@ var TableEdit = forwardRef2((props, ref) => {
2242
2200
  }, 100);
2243
2201
  }
2244
2202
  e.preventDefault();
2203
+ return e.code;
2245
2204
  } else if ((e.code === "Enter" || e.code === "NumpadEnter") && (!editDisable && !addDisable)) {
2246
2205
  const element = document.getElementById(`${idTable}-col${indexCol}-row${indexRow}`);
2247
2206
  if (element && !(element.getElementsByClassName("select__control--menu-is-open").length > 0 || element.getElementsByClassName("select-100__control--menu-is-open").length > 0 || element.getElementsByClassName("select-200__control--menu-is-open").length > 0 || element.getElementsByClassName("select-300__control--menu-is-open").length > 0 || element.getElementsByClassName("select-400__control--menu-is-open").length > 0 || element.getElementsByClassName("select-500__control--menu-is-open").length > 0)) {
2248
- if (indexRow === dataDisplay.length) {
2249
- moveIndexRowToNewPage(false, true);
2207
+ if (indexRow === totalCount) {
2208
+ moveIndexRowToNewPage();
2250
2209
  } else {
2210
+ if (pagingClient && indexRow % (pagingSetting?.pageSize ?? 0) === 0) {
2211
+ pagingSetting?.setCurrentPage((pagingSetting?.currentPage ?? 1) + 1);
2212
+ }
2251
2213
  setIndexFocus(indexRow);
2252
2214
  setTimeout(() => {
2253
- const element2 = document.getElementById(`${idTable}-col${columnFistEdit}-row${indexRow + 1}`);
2215
+ const element2 = document.getElementById(`${idTable}-col${indexCol}-row${indexRow + 1}`);
2254
2216
  if (element2) {
2255
2217
  if (element2.className.includes("react-select") || element2.className.includes("form-edit")) {
2256
2218
  element2.getElementsByTagName("input")[0]?.focus();
@@ -2298,18 +2260,13 @@ var TableEdit = forwardRef2((props, ref) => {
2298
2260
  }
2299
2261
  });
2300
2262
  const handleAdd = () => {
2301
- changeDataSource(pagingClient ? dataDisplay : dataSource, true);
2302
- let index = 0;
2303
- if (pagingClient && dataDisplay.length > (pagingSetting?.pageSize ?? 0) && pagingSetting?.setCurrentPage) {
2304
- pagingSetting?.setCurrentPage((pagingSetting?.currentPage ?? 0) + 1);
2305
- } else {
2306
- index = dataDisplay.length - 1;
2307
- }
2263
+ changeDataSource(dataSource, true);
2264
+ pagingSetting?.setCurrentPage(Math.floor(totalCount / (pagingSetting?.pageSize ?? 0)) + 1);
2308
2265
  if (tableElement) {
2309
- setIndexFocus(index);
2266
+ setIndexFocus(totalCount);
2310
2267
  setTimeout(() => {
2311
2268
  tableElement.current?.scrollTo(0, tableElement.current.scrollHeight);
2312
- const element = document.getElementById(`${idTable}-col${columnFistEdit}-row${index + 1}`);
2269
+ const element = document.getElementById(`${idTable}-col${columnFistEdit}-row${totalCount + 1}`);
2313
2270
  if (element && !(element.getElementsByClassName("select__control--menu-is-open").length > 0 || element.getElementsByClassName("select-100__control--menu-is-open").length > 0 || element.getElementsByClassName("select-200__control--menu-is-open").length > 0 || element.getElementsByClassName("select-300__control--menu-is-open").length > 0 || element.getElementsByClassName("select-400__control--menu-is-open").length > 0 || element.getElementsByClassName("select-500__control--menu-is-open").length > 0)) {
2314
2271
  if (element.className.includes("react-select") || element.className.includes("form-edit")) {
2315
2272
  element.getElementsByTagName("input")[0]?.focus();
@@ -2329,15 +2286,12 @@ var TableEdit = forwardRef2((props, ref) => {
2329
2286
  data[fieldKey] = defaultValue[fieldKey];
2330
2287
  }
2331
2288
  if (pagingClient) {
2332
- if (dataDisplay.length < (pagingSetting?.pageSize ?? 0)) {
2333
- dataDisplay.splice(index, 0, data);
2334
- }
2335
2289
  dataSource.splice(((pagingSetting?.currentPage ?? 1) - 1) * (pagingSetting?.pageSize ?? 0) + index, 0, { ...data });
2336
2290
  } else {
2337
2291
  dataSource.splice(index, 0, data);
2338
2292
  }
2339
- changeDataSource(pagingClient ? dataDisplay : dataSource);
2340
- if (tableElement && index === (pagingClient ? dataDisplay.length : dataSource.length)) {
2293
+ changeDataSource(dataSource);
2294
+ if (tableElement && index === totalCount) {
2341
2295
  setTimeout(() => {
2342
2296
  tableElement.current?.scrollTo(0, tableElement.current.scrollHeight);
2343
2297
  }, 100);
@@ -2347,15 +2301,12 @@ var TableEdit = forwardRef2((props, ref) => {
2347
2301
  const handleInsertAfter = () => {
2348
2302
  if (toolbarSetting?.showBottomToolbar && !buttonSetting?.insertAfterDisable && !editDisable && !addDisable) {
2349
2303
  if (pagingClient) {
2350
- if (dataDisplay.length < (pagingSetting?.pageSize ?? 0)) {
2351
- dataDisplay.splice((indexFocus ?? -1) + 1, 0, { ...defaultValue });
2352
- }
2353
2304
  dataSource.splice(((pagingSetting?.currentPage ?? 1) - 1) * (pagingSetting?.pageSize ?? 0) + (indexFocus ?? -1) + 1, 0, { ...{ ...defaultValue } });
2354
2305
  } else {
2355
2306
  dataSource.splice((indexFocus ?? -1) + 1, 0, { ...defaultValue });
2356
2307
  }
2357
- changeDataSource(pagingClient ? dataDisplay : dataSource);
2358
- if (tableElement && indexFocus === dataSource.length) {
2308
+ changeDataSource(dataSource);
2309
+ if (tableElement && indexFocus === totalCount) {
2359
2310
  setTimeout(() => {
2360
2311
  tableElement.current?.scrollTo(0, tableElement.current.scrollHeight);
2361
2312
  }, 100);
@@ -2365,14 +2316,11 @@ var TableEdit = forwardRef2((props, ref) => {
2365
2316
  const handleInsertBefore = () => {
2366
2317
  if (toolbarSetting?.showBottomToolbar && !buttonSetting?.insertBeforeDisable && !editDisable && !addDisable) {
2367
2318
  if (pagingClient) {
2368
- if (dataDisplay.length < (pagingSetting?.pageSize ?? 0)) {
2369
- dataDisplay.splice(indexFocus ?? -1, 0, { ...defaultValue });
2370
- }
2371
2319
  dataSource.splice(((pagingSetting?.currentPage ?? 1) - 1) * (pagingSetting?.pageSize ?? 0) + (indexFocus ?? -1), 0, { ...{ ...defaultValue } });
2372
2320
  } else {
2373
2321
  dataSource.splice(indexFocus ?? -1, 0, { ...defaultValue });
2374
2322
  }
2375
- changeDataSource(pagingClient ? dataDisplay : dataSource);
2323
+ changeDataSource(dataSource);
2376
2324
  }
2377
2325
  };
2378
2326
  const handleDeleteAll = () => {
@@ -2405,29 +2353,15 @@ var TableEdit = forwardRef2((props, ref) => {
2405
2353
  rowChange(dataRow, row + indexRow, "");
2406
2354
  });
2407
2355
  handleRefeshRow();
2408
- changeDataSource(pagingClient ? dataDisplay : dataSource);
2356
+ changeDataSource(dataSource);
2409
2357
  };
2410
2358
  const changeDataSource = (data, haveNew = false) => {
2411
- if (data.length === 0 && !haveNew) {
2412
- setDataDisplay([]);
2413
- setDataSource([]);
2414
- } else if (!editDisable && !addDisable && setDataSource) {
2415
- if (pagingClient) {
2416
- if (haveNew) {
2417
- data.push(defaultValue ? { ...defaultValue, [fieldKey]: generateUUID() } : {});
2418
- setDataDisplay(data);
2419
- dataSource.push(defaultValue ? { ...defaultValue, [fieldKey]: generateUUID() } : {});
2420
- } else {
2421
- setDataDisplay([...data]);
2422
- }
2423
- setTotalCount(dataSource?.length ?? 0);
2359
+ if (!editDisable && !addDisable && setDataSource) {
2360
+ if (haveNew) {
2361
+ data.push(defaultValue ? { ...defaultValue, [fieldKey]: generateUUID() } : {});
2362
+ setDataSource([...data]);
2424
2363
  } else {
2425
- if (haveNew) {
2426
- data.push(defaultValue ? { ...defaultValue, [fieldKey]: generateUUID() } : {});
2427
- setDataSource([...data]);
2428
- } else {
2429
- setDataSource([...data]);
2430
- }
2364
+ setDataSource([...data]);
2431
2365
  }
2432
2366
  }
2433
2367
  };
@@ -2513,18 +2447,11 @@ var TableEdit = forwardRef2((props, ref) => {
2513
2447
  onPaste: (e) => {
2514
2448
  if (!editDisable && (e.target.nodeName === "DIV" || e.target.nodeName === "TD")) {
2515
2449
  navigator.clipboard.readText().then((rs) => {
2516
- if (pagingClient) {
2517
- dataDisplay[indexRow] = JSON.parse(rs);
2518
- if (fieldKey) {
2519
- dataDisplay[indexRow][fieldKey] = defaultValue[fieldKey];
2520
- }
2521
- } else {
2522
- dataSource[indexRow] = JSON.parse(rs);
2523
- if (fieldKey) {
2524
- dataSource[indexRow][fieldKey] = defaultValue[fieldKey];
2525
- }
2450
+ dataSource[indexRow] = JSON.parse(rs);
2451
+ if (fieldKey) {
2452
+ dataSource[indexRow][fieldKey] = defaultValue[fieldKey];
2526
2453
  }
2527
- changeDataSource(pagingClient ? dataDisplay : dataSource);
2454
+ changeDataSource(dataSource);
2528
2455
  notificationSuccess(t("PasteSuccessful"));
2529
2456
  }).catch((ex) => {
2530
2457
  alert(ex);
@@ -2731,22 +2658,16 @@ var TableEdit = forwardRef2((props, ref) => {
2731
2658
  children: /* @__PURE__ */ jsx12(
2732
2659
  Input6,
2733
2660
  {
2734
- checked: (pagingClient ? dataDisplay.length > 0 : dataSource.length > 0) && selectedRows?.length >= (pagingClient ? dataDisplay.length : dataSource.length),
2661
+ checked: totalCount > 0 && selectedRows?.length >= totalCount,
2735
2662
  type: "checkbox",
2736
2663
  className: classnames6("cursor-pointer", { "d-none": !isMulti }),
2737
2664
  style: { textAlign: col.textAlign ?? "left", marginTop: 6 },
2738
2665
  onChange: (e) => {
2739
2666
  if (selectEnable) {
2740
2667
  if (e.target.checked) {
2741
- if (pagingClient) {
2742
- setSelectedRows(dataDisplay.map((item) => {
2743
- return item;
2744
- }));
2745
- } else {
2746
- setSelectedRows(dataSource.map((item) => {
2747
- return item;
2748
- }));
2749
- }
2668
+ setSelectedRows(dataSource.map((item) => {
2669
+ return item;
2670
+ }));
2750
2671
  } else {
2751
2672
  setSelectedRows([]);
2752
2673
  }
@@ -2878,7 +2799,7 @@ var TableEdit = forwardRef2((props, ref) => {
2878
2799
  /* @__PURE__ */ jsx12("div", { className: classnames6("r-toolbar-item", { "d-none": editDisable || addDisable }), "aria-disabled": "false", children: /* @__PURE__ */ jsx12(Button3, { color: "success", outline: true, onClick: handleAdd, className: "d-flex", children: t("Add item") }) }),
2879
2800
  (indexFocus ?? -1) > -1 ? /* @__PURE__ */ jsxs11(Fragment13, { children: [
2880
2801
  /* @__PURE__ */ jsx12("div", { className: classnames6("r-toolbar-item", { "d-none": editDisable || addDisable || buttonSetting?.duplicateDisable }), "aria-disabled": "false", children: /* @__PURE__ */ jsx12(Button3, { color: "success", outline: true, onClick: () => {
2881
- handleDuplicate(pagingClient ? dataDisplay[indexFocus ?? -1] : dataSource[indexFocus ?? -1], indexFocus ?? -1);
2802
+ handleDuplicate(dataSource[indexFocus ?? -1], indexFocus ?? -1);
2882
2803
  }, className: "d-flex", children: t("Duplicate") }) }),
2883
2804
  /* @__PURE__ */ jsx12("div", { className: classnames6("r-toolbar-item", { "d-none": editDisable || addDisable || buttonSetting?.insertBeforeDisable }), "aria-disabled": "false", children: /* @__PURE__ */ jsx12(Button3, { color: "success", outline: true, onClick: handleInsertBefore, className: "d-flex", children: t("Insert item before") }) }),
2884
2805
  /* @__PURE__ */ jsx12("div", { className: classnames6("r-toolbar-item", { "d-none": editDisable || addDisable || buttonSetting?.insertAfterDisable }), "aria-disabled": "false", children: /* @__PURE__ */ jsx12(Button3, { color: "success", outline: true, onClick: handleInsertAfter, className: "d-flex", children: t("Insert item after") }) })
@@ -2918,24 +2839,13 @@ var TableEdit = forwardRef2((props, ref) => {
2918
2839
  return renderHeaderCol(col, index, indexParent);
2919
2840
  }) }, indexParent);
2920
2841
  }) }),
2921
- /* @__PURE__ */ jsx12("tbody", { className: "r-gridcontent", children: pagingClient ? dataDisplay.map((row, indexRow) => {
2922
- const isSelected = selectedRows?.some((x) => x[fieldKey] === row[fieldKey]);
2923
- return /* @__PURE__ */ jsx12(
2924
- "tr",
2925
- {
2926
- className: classnames6("r-row", { "last-row": indexRow === dataDisplay.length - 1 }, { "fisrt-row": indexRow === 0 }),
2927
- children: contentColumns.map((col, indexCol) => {
2928
- return renderContentCol(col, row, indexRow, indexCol, isSelected);
2929
- })
2930
- },
2931
- `row-${indexRow}`
2932
- );
2933
- }) : dataSource.map((row, indexRow) => {
2842
+ /* @__PURE__ */ jsx12("tbody", { className: "r-gridcontent", children: dataSource.map((row, indexRow) => {
2934
2843
  const isSelected = selectedRows?.some((x) => x[fieldKey] === row[fieldKey]);
2935
- return /* @__PURE__ */ jsx12(
2844
+ const flagDisplay = !pagingClient || indexRow + 1 > (pagingSetting.pageSize ?? 0) * ((pagingSetting.currentPage ?? 0) - 1) && indexRow < (pagingSetting.pageSize ?? 0) * (pagingSetting.currentPage ?? 0);
2845
+ return flagDisplay && /* @__PURE__ */ jsx12(
2936
2846
  "tr",
2937
2847
  {
2938
- className: classnames6("r-row", { "last-row": indexRow === dataDisplay.length - 1 }, { "fisrt-row": indexRow === 0 }),
2848
+ className: classnames6("r-row", { "last-row": indexRow === (pagingClient ? totalCount % (pagingSetting?.pageSize ?? 0) : totalCount - 1) }, { "fisrt-row": indexRow === 0 }),
2939
2849
  children: contentColumns.map((col, indexCol) => {
2940
2850
  return renderContentCol(col, row, indexRow, indexCol, isSelected);
2941
2851
  })
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "react-table-edit",
3
3
  "license": "MIT",
4
- "version": "0.3.8",
4
+ "version": "0.4.0",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.mjs",
7
7
  "types": "dist/index.d.ts",