trotl-table 1.0.80 → 1.0.82
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/dist/Table.cjs.js +113 -80
- package/dist/Table.cjs.js.map +1 -1
- package/dist/Table.esm.js +113 -80
- package/dist/Table.esm.js.map +1 -1
- package/package.json +1 -1
package/dist/Table.cjs.js
CHANGED
|
@@ -9677,6 +9677,8 @@ function TableInner({
|
|
|
9677
9677
|
enableMouseRightClick = null,
|
|
9678
9678
|
customColumns = [],
|
|
9679
9679
|
groupDefaultOpen = false,
|
|
9680
|
+
groupExpanded = null,
|
|
9681
|
+
onExpandedGroupsChange = () => {},
|
|
9680
9682
|
showIcons = true,
|
|
9681
9683
|
timeoutLoading = 5,
|
|
9682
9684
|
t
|
|
@@ -9744,7 +9746,7 @@ function TableInner({
|
|
|
9744
9746
|
});
|
|
9745
9747
|
const [contextMenuModal, setContextMenuModal] = React.useState({
|
|
9746
9748
|
visible: false,
|
|
9747
|
-
title:
|
|
9749
|
+
title: "",
|
|
9748
9750
|
component: null
|
|
9749
9751
|
});
|
|
9750
9752
|
React.useEffect(() => {
|
|
@@ -9759,7 +9761,7 @@ function TableInner({
|
|
|
9759
9761
|
row: null
|
|
9760
9762
|
});
|
|
9761
9763
|
const handleEscape = event => {
|
|
9762
|
-
if (event.key ===
|
|
9764
|
+
if (event.key === "Escape") {
|
|
9763
9765
|
setContextMenu({
|
|
9764
9766
|
visible: false,
|
|
9765
9767
|
x: 0,
|
|
@@ -9768,13 +9770,13 @@ function TableInner({
|
|
|
9768
9770
|
});
|
|
9769
9771
|
}
|
|
9770
9772
|
};
|
|
9771
|
-
window.addEventListener(
|
|
9772
|
-
window.addEventListener(
|
|
9773
|
-
window.addEventListener(
|
|
9773
|
+
window.addEventListener("click", handleClick);
|
|
9774
|
+
window.addEventListener("contextmenu", handleClick);
|
|
9775
|
+
window.addEventListener("keydown", handleEscape);
|
|
9774
9776
|
return () => {
|
|
9775
|
-
window.removeEventListener(
|
|
9776
|
-
window.removeEventListener(
|
|
9777
|
-
window.removeEventListener(
|
|
9777
|
+
window.removeEventListener("click", handleClick);
|
|
9778
|
+
window.removeEventListener("contextmenu", handleClick);
|
|
9779
|
+
window.removeEventListener("keydown", handleEscape);
|
|
9778
9780
|
};
|
|
9779
9781
|
}, [contextMenu.visible]);
|
|
9780
9782
|
React.useEffect(() => {
|
|
@@ -10052,7 +10054,7 @@ function TableInner({
|
|
|
10052
10054
|
updateSearchFromUrl();
|
|
10053
10055
|
|
|
10054
10056
|
// Listen for URL changes (back/forward navigation)
|
|
10055
|
-
window.addEventListener(
|
|
10057
|
+
window.addEventListener("popstate", updateSearchFromUrl);
|
|
10056
10058
|
|
|
10057
10059
|
// Listen for programmatic URL changes if you use history.pushState/replaceState
|
|
10058
10060
|
const originalPushState = window.history.pushState;
|
|
@@ -10066,7 +10068,7 @@ function TableInner({
|
|
|
10066
10068
|
updateSearchFromUrl();
|
|
10067
10069
|
};
|
|
10068
10070
|
return () => {
|
|
10069
|
-
window.removeEventListener(
|
|
10071
|
+
window.removeEventListener("popstate", updateSearchFromUrl);
|
|
10070
10072
|
// Restore original methods
|
|
10071
10073
|
window.history.pushState = originalPushState;
|
|
10072
10074
|
window.history.replaceState = originalReplaceState;
|
|
@@ -10109,7 +10111,7 @@ function TableInner({
|
|
|
10109
10111
|
const closeContextMenuModal = React.useCallback(() => {
|
|
10110
10112
|
setContextMenuModal({
|
|
10111
10113
|
visible: false,
|
|
10112
|
-
title:
|
|
10114
|
+
title: "",
|
|
10113
10115
|
component: null
|
|
10114
10116
|
});
|
|
10115
10117
|
}, []);
|
|
@@ -10163,7 +10165,7 @@ function TableInner({
|
|
|
10163
10165
|
};
|
|
10164
10166
|
|
|
10165
10167
|
// Listen for popstate (back/forward navigation)
|
|
10166
|
-
window.addEventListener(
|
|
10168
|
+
window.addEventListener("popstate", handleDateParamChange);
|
|
10167
10169
|
|
|
10168
10170
|
// Listen for programmatic URL changes
|
|
10169
10171
|
const originalPushState = window.history.pushState;
|
|
@@ -10178,10 +10180,10 @@ function TableInner({
|
|
|
10178
10180
|
};
|
|
10179
10181
|
|
|
10180
10182
|
// Listen for hashchange (in case date params are in hash)
|
|
10181
|
-
window.addEventListener(
|
|
10183
|
+
window.addEventListener("hashchange", handleDateParamChange);
|
|
10182
10184
|
return () => {
|
|
10183
|
-
window.removeEventListener(
|
|
10184
|
-
window.removeEventListener(
|
|
10185
|
+
window.removeEventListener("popstate", handleDateParamChange);
|
|
10186
|
+
window.removeEventListener("hashchange", handleDateParamChange);
|
|
10185
10187
|
window.history.pushState = originalPushState;
|
|
10186
10188
|
window.history.replaceState = originalReplaceState;
|
|
10187
10189
|
};
|
|
@@ -10189,15 +10191,15 @@ function TableInner({
|
|
|
10189
10191
|
const filterRows = React.useCallback(rows => {
|
|
10190
10192
|
// Check for date-related URL params first
|
|
10191
10193
|
const urlParams = new URLSearchParams(urlSearchString);
|
|
10192
|
-
const _dateParams = [
|
|
10194
|
+
const _dateParams = ["startDate", "endDate", "date"];
|
|
10193
10195
|
let dateFiltered = rows;
|
|
10194
10196
|
for (const paramKey of _dateParams) {
|
|
10195
10197
|
const paramValue = urlParams.get(paramKey);
|
|
10196
10198
|
if (!paramValue) continue;
|
|
10197
10199
|
|
|
10198
10200
|
// Check if it's a range (contains ~)
|
|
10199
|
-
if (paramValue.includes(
|
|
10200
|
-
const [startTs, endTs] = paramValue.split(
|
|
10201
|
+
if (paramValue.includes("~")) {
|
|
10202
|
+
const [startTs, endTs] = paramValue.split("~").map(Number);
|
|
10201
10203
|
if (isNaN(startTs) || isNaN(endTs)) continue;
|
|
10202
10204
|
dateFiltered = dateFiltered.filter(row => {
|
|
10203
10205
|
// Check if any date field in the row falls within the range
|
|
@@ -10311,12 +10313,24 @@ function TableInner({
|
|
|
10311
10313
|
rows: sortRows(g.rows || [])
|
|
10312
10314
|
}));
|
|
10313
10315
|
}, [normalizedGroups, sorting, filterRows, getAccessorValue]);
|
|
10316
|
+
const emitExpandedChange = React.useCallback((nextState, toggledGroupId) => {
|
|
10317
|
+
if (typeof onExpandedGroupsChange === "function") {
|
|
10318
|
+
onExpandedGroupsChange(nextState, toggledGroupId);
|
|
10319
|
+
}
|
|
10320
|
+
if (typeof groupExpanded === "function") {
|
|
10321
|
+
groupExpanded(nextState, toggledGroupId);
|
|
10322
|
+
}
|
|
10323
|
+
}, [onExpandedGroupsChange, groupExpanded]);
|
|
10314
10324
|
const [expandedGroups, setExpandedGroups] = React.useState({});
|
|
10315
10325
|
const toggleGroup = gid => {
|
|
10316
|
-
setExpandedGroups(prev =>
|
|
10317
|
-
|
|
10318
|
-
|
|
10319
|
-
|
|
10326
|
+
setExpandedGroups(prev => {
|
|
10327
|
+
const next = {
|
|
10328
|
+
...prev,
|
|
10329
|
+
[gid]: !prev[gid]
|
|
10330
|
+
};
|
|
10331
|
+
emitExpandedChange(next, gid);
|
|
10332
|
+
return next;
|
|
10333
|
+
});
|
|
10320
10334
|
};
|
|
10321
10335
|
React.useEffect(() => {
|
|
10322
10336
|
// Pre-populate expansion state for all groups
|
|
@@ -10331,6 +10345,11 @@ function TableInner({
|
|
|
10331
10345
|
return next;
|
|
10332
10346
|
});
|
|
10333
10347
|
}, [normalizedGroups, groupKey, groupDefaultOpen]);
|
|
10348
|
+
React.useEffect(() => {
|
|
10349
|
+
if (groupExpanded && typeof groupExpanded === "object") {
|
|
10350
|
+
setExpandedGroups(groupExpanded);
|
|
10351
|
+
}
|
|
10352
|
+
}, [groupExpanded]);
|
|
10334
10353
|
const groupRowsById = React.useMemo(() => {
|
|
10335
10354
|
const map = {};
|
|
10336
10355
|
for (const g of sortedGroupedData) {
|
|
@@ -10391,7 +10410,7 @@ function TableInner({
|
|
|
10391
10410
|
if (!el) return;
|
|
10392
10411
|
|
|
10393
10412
|
// Try to find the actual scrollable grid element created by react-virtualized
|
|
10394
|
-
const grid = el.querySelector(
|
|
10413
|
+
const grid = el.querySelector(".ReactVirtualized__Grid");
|
|
10395
10414
|
const check = () => {
|
|
10396
10415
|
if (!grid) {
|
|
10397
10416
|
setHeaderPadRight(0);
|
|
@@ -10422,10 +10441,14 @@ function TableInner({
|
|
|
10422
10441
|
cancelAnimationFrame(raf);
|
|
10423
10442
|
try {
|
|
10424
10443
|
ro.disconnect();
|
|
10425
|
-
} catch {
|
|
10444
|
+
} catch {
|
|
10445
|
+
/* noop */
|
|
10446
|
+
}
|
|
10426
10447
|
try {
|
|
10427
10448
|
mo.disconnect();
|
|
10428
|
-
} catch {
|
|
10449
|
+
} catch {
|
|
10450
|
+
/* noop */
|
|
10451
|
+
}
|
|
10429
10452
|
};
|
|
10430
10453
|
}, [listRef, tableDataFlat.length]);
|
|
10431
10454
|
|
|
@@ -10452,7 +10475,7 @@ function TableInner({
|
|
|
10452
10475
|
if (res && res.success === false) return;
|
|
10453
10476
|
} catch (err) {
|
|
10454
10477
|
// if callback throws, don't block deletion
|
|
10455
|
-
console.error(
|
|
10478
|
+
console.error("deleteCallback threw", err);
|
|
10456
10479
|
}
|
|
10457
10480
|
}
|
|
10458
10481
|
setLocalData(prev => {
|
|
@@ -10522,8 +10545,18 @@ function TableInner({
|
|
|
10522
10545
|
const isUndefinedLike = v === undefined || typeof v === "string" && v.trim().toLowerCase() === "undefined";
|
|
10523
10546
|
const isNoData = isUndefinedLike;
|
|
10524
10547
|
|
|
10548
|
+
// Custom column type (editable in-table)
|
|
10549
|
+
if (col && col.type === "custom") {
|
|
10550
|
+
const customComp = col["modal-comp"];
|
|
10551
|
+
if (customComp) {
|
|
10552
|
+
return /*#__PURE__*/React.createElement("customComp", {
|
|
10553
|
+
value: v
|
|
10554
|
+
});
|
|
10555
|
+
}
|
|
10556
|
+
}
|
|
10557
|
+
|
|
10525
10558
|
// Checkbox column type (editable in-table)
|
|
10526
|
-
if (col && col.type ===
|
|
10559
|
+
if (col && col.type === "checkbox") {
|
|
10527
10560
|
const checked = isUndefinedLike ? false : !!v;
|
|
10528
10561
|
return /*#__PURE__*/React.createElement("input", {
|
|
10529
10562
|
type: "checkbox",
|
|
@@ -10554,14 +10587,14 @@ function TableInner({
|
|
|
10554
10587
|
try {
|
|
10555
10588
|
onCellChangeRef.current?.(row, accessor, next);
|
|
10556
10589
|
} catch (err) {
|
|
10557
|
-
console.error(
|
|
10590
|
+
console.error("onCellChange error", err);
|
|
10558
10591
|
}
|
|
10559
10592
|
}
|
|
10560
10593
|
});
|
|
10561
10594
|
}
|
|
10562
10595
|
|
|
10563
10596
|
// Switch column type (uses internal Switch component)
|
|
10564
|
-
if (col && col.type ===
|
|
10597
|
+
if (col && col.type === "switch") {
|
|
10565
10598
|
const checked = isUndefinedLike ? false : !!v;
|
|
10566
10599
|
return /*#__PURE__*/React.createElement("div", {
|
|
10567
10600
|
title: isNoData ? translate("noData") : undefined,
|
|
@@ -10572,7 +10605,7 @@ function TableInner({
|
|
|
10572
10605
|
}, /*#__PURE__*/React.createElement(Switch.default, {
|
|
10573
10606
|
checked: checked,
|
|
10574
10607
|
onChange: valOrEvent => {
|
|
10575
|
-
const next = typeof valOrEvent ===
|
|
10608
|
+
const next = typeof valOrEvent === "boolean" ? valOrEvent : valOrEvent && valOrEvent.target ? !!valOrEvent.target.checked : !!valOrEvent;
|
|
10576
10609
|
setLocalData(prev => {
|
|
10577
10610
|
if (isGrouped) {
|
|
10578
10611
|
return prev.map(g => ({
|
|
@@ -10592,30 +10625,30 @@ function TableInner({
|
|
|
10592
10625
|
try {
|
|
10593
10626
|
onCellChangeRef.current?.(row, accessor, next);
|
|
10594
10627
|
} catch (err) {
|
|
10595
|
-
console.error(
|
|
10628
|
+
console.error("onCellChange error", err);
|
|
10596
10629
|
}
|
|
10597
10630
|
}
|
|
10598
10631
|
}));
|
|
10599
10632
|
}
|
|
10600
10633
|
|
|
10601
10634
|
// Color column type (display color swatch background)
|
|
10602
|
-
if (col && col.type ===
|
|
10635
|
+
if (col && col.type === "color") {
|
|
10603
10636
|
const colorVal = isUndefinedLike ? "transparent" : v || "transparent";
|
|
10604
10637
|
const text = isUndefinedLike ? "..." : String(colorVal) ;
|
|
10605
10638
|
return /*#__PURE__*/React.createElement("div", {
|
|
10606
10639
|
style: {
|
|
10607
|
-
width:
|
|
10608
|
-
height:
|
|
10609
|
-
minHeight:
|
|
10640
|
+
width: "100%",
|
|
10641
|
+
height: "100%",
|
|
10642
|
+
minHeight: "20px",
|
|
10610
10643
|
backgroundColor: colorVal,
|
|
10611
|
-
color:
|
|
10612
|
-
border:
|
|
10613
|
-
boxSizing:
|
|
10614
|
-
display:
|
|
10615
|
-
alignItems:
|
|
10616
|
-
justifyContent:
|
|
10617
|
-
fontSize:
|
|
10618
|
-
overflow:
|
|
10644
|
+
color: "#000",
|
|
10645
|
+
border: "1px solid #ccc",
|
|
10646
|
+
boxSizing: "border-box",
|
|
10647
|
+
display: "flex",
|
|
10648
|
+
alignItems: "center",
|
|
10649
|
+
justifyContent: "center",
|
|
10650
|
+
fontSize: "12px",
|
|
10651
|
+
overflow: "hidden"
|
|
10619
10652
|
},
|
|
10620
10653
|
title: isNoData ? translate("noData") : text,
|
|
10621
10654
|
onClick: () => triggerCellCallback(row, col, colorVal)
|
|
@@ -10623,7 +10656,7 @@ function TableInner({
|
|
|
10623
10656
|
}
|
|
10624
10657
|
|
|
10625
10658
|
// Input column type (editable text)
|
|
10626
|
-
if (col && col.type ===
|
|
10659
|
+
if (col && col.type === "input") {
|
|
10627
10660
|
const text = isNoData ? "" : v == null ? "" : String(v);
|
|
10628
10661
|
return /*#__PURE__*/React.createElement("input", {
|
|
10629
10662
|
type: "text",
|
|
@@ -10656,7 +10689,7 @@ function TableInner({
|
|
|
10656
10689
|
try {
|
|
10657
10690
|
onCellChangeRef.current?.(row, accessor, next);
|
|
10658
10691
|
} catch (err) {
|
|
10659
|
-
console.error(
|
|
10692
|
+
console.error("onCellChange error", err);
|
|
10660
10693
|
}
|
|
10661
10694
|
},
|
|
10662
10695
|
style: {
|
|
@@ -10667,7 +10700,7 @@ function TableInner({
|
|
|
10667
10700
|
}
|
|
10668
10701
|
|
|
10669
10702
|
// Number column type (format decimals) - default two decimals
|
|
10670
|
-
if (col && col.type ===
|
|
10703
|
+
if (col && col.type === "number") {
|
|
10671
10704
|
if (isNoData) {
|
|
10672
10705
|
return /*#__PURE__*/React.createElement("span", {
|
|
10673
10706
|
title: translate("noData")
|
|
@@ -10691,7 +10724,7 @@ function TableInner({
|
|
|
10691
10724
|
title: formatted
|
|
10692
10725
|
}, formatted);
|
|
10693
10726
|
}
|
|
10694
|
-
if (col && col.type ===
|
|
10727
|
+
if (col && col.type === "array") {
|
|
10695
10728
|
const arr = Array.isArray(v) ? v : [];
|
|
10696
10729
|
const list = formatArrayValue(arr, col);
|
|
10697
10730
|
const count = arr.length;
|
|
@@ -10794,7 +10827,7 @@ function TableInner({
|
|
|
10794
10827
|
const from = tableDataFlat[fromIndex];
|
|
10795
10828
|
let to = null;
|
|
10796
10829
|
let emptyGroupId = null;
|
|
10797
|
-
if (typeof toIndexOrGroup ===
|
|
10830
|
+
if (typeof toIndexOrGroup === "object" && toIndexOrGroup && toIndexOrGroup.emptyGroupId) {
|
|
10798
10831
|
emptyGroupId = toIndexOrGroup.emptyGroupId;
|
|
10799
10832
|
} else {
|
|
10800
10833
|
to = tableDataFlat[toIndexOrGroup];
|
|
@@ -10889,7 +10922,7 @@ function TableInner({
|
|
|
10889
10922
|
newRow = res.newRow;
|
|
10890
10923
|
}
|
|
10891
10924
|
} catch (err) {
|
|
10892
|
-
console.error(
|
|
10925
|
+
console.error("duplicateCallback threw", err);
|
|
10893
10926
|
}
|
|
10894
10927
|
}
|
|
10895
10928
|
// fallback simple clone if callback didn't provide newRow
|
|
@@ -10960,13 +10993,13 @@ function TableInner({
|
|
|
10960
10993
|
key: key,
|
|
10961
10994
|
style: {
|
|
10962
10995
|
...style,
|
|
10963
|
-
background:
|
|
10964
|
-
border:
|
|
10965
|
-
textAlign:
|
|
10966
|
-
color:
|
|
10996
|
+
background: "#f6f6fa",
|
|
10997
|
+
border: "2px dashed #bbb",
|
|
10998
|
+
textAlign: "center",
|
|
10999
|
+
color: "#888",
|
|
10967
11000
|
minHeight: rowHeight,
|
|
10968
|
-
display:
|
|
10969
|
-
alignItems:
|
|
11001
|
+
display: "flex",
|
|
11002
|
+
alignItems: "center"
|
|
10970
11003
|
},
|
|
10971
11004
|
className: "table-row group-row empty-group-drop",
|
|
10972
11005
|
onClick: () => toggleGroup(gid)
|
|
@@ -10995,7 +11028,7 @@ function TableInner({
|
|
|
10995
11028
|
}), /*#__PURE__*/React.createElement("div", {
|
|
10996
11029
|
className: "table-cell group-header",
|
|
10997
11030
|
title: `${translate(item.groupName)} (0)`
|
|
10998
|
-
}, item.expanded ? "▾" : "▸", " ", translate(item.groupName), " (0) \u2014 ", translate("DropHereToMoveIntoThisGroup")), showActions && /*#__PURE__*/React.createElement("div", {
|
|
11031
|
+
}, item.expanded ? "▾" : "▸", " ", translate(item.groupName), " (0) \u2014", " ", translate("DropHereToMoveIntoThisGroup")), showActions && /*#__PURE__*/React.createElement("div", {
|
|
10999
11032
|
className: "table-cell action-cell",
|
|
11000
11033
|
style: actionColumnStyle
|
|
11001
11034
|
}));
|
|
@@ -11047,7 +11080,7 @@ function TableInner({
|
|
|
11047
11080
|
// Insert custom columns at specified places
|
|
11048
11081
|
if (Array.isArray(customColumns)) {
|
|
11049
11082
|
customColumns.forEach(col => {
|
|
11050
|
-
if (typeof col.place ===
|
|
11083
|
+
if (typeof col.place === "number") {
|
|
11051
11084
|
allColumns.splice(col.place, 0, {
|
|
11052
11085
|
...col,
|
|
11053
11086
|
isCustom: true
|
|
@@ -11059,7 +11092,7 @@ function TableInner({
|
|
|
11059
11092
|
const handleRowDoubleClick = e => {
|
|
11060
11093
|
if (!doubleClickEnable) return;
|
|
11061
11094
|
// ignore if the event originated on an interactive element
|
|
11062
|
-
if (e.target.closest(
|
|
11095
|
+
if (e.target.closest(".checkbox-cell") || e.target.closest("button") || e.target.closest("input") || e.target.closest("a")) {
|
|
11063
11096
|
return;
|
|
11064
11097
|
}
|
|
11065
11098
|
editCallbackRef.current(row);
|
|
@@ -11086,7 +11119,7 @@ function TableInner({
|
|
|
11086
11119
|
className: "row-main",
|
|
11087
11120
|
onDoubleClick: doubleClickEnable ? handleRowDoubleClick : undefined,
|
|
11088
11121
|
style: {
|
|
11089
|
-
display:
|
|
11122
|
+
display: "flex",
|
|
11090
11123
|
flex: 1
|
|
11091
11124
|
}
|
|
11092
11125
|
}, enableMultiSelect && /*#__PURE__*/React.createElement("div", {
|
|
@@ -11113,7 +11146,7 @@ function TableInner({
|
|
|
11113
11146
|
className: "table-cell",
|
|
11114
11147
|
style: cellStyle,
|
|
11115
11148
|
onClick: () => triggerCellCallback(row, col)
|
|
11116
|
-
}, col.isCustom ? typeof col.render ===
|
|
11149
|
+
}, col.isCustom ? typeof col.render === "function" ? col.render(row, i) : col.render : renderCell(cellValue, resolvedAccessor, row, col));
|
|
11117
11150
|
})), showActions && /*#__PURE__*/React.createElement("div", {
|
|
11118
11151
|
className: "table-cell action-cell",
|
|
11119
11152
|
style: actionColumnStyle
|
|
@@ -11219,7 +11252,7 @@ function TableInner({
|
|
|
11219
11252
|
const allColumns = [...columns];
|
|
11220
11253
|
if (Array.isArray(customColumns)) {
|
|
11221
11254
|
customColumns.forEach(col => {
|
|
11222
|
-
if (typeof col.place ===
|
|
11255
|
+
if (typeof col.place === "number") {
|
|
11223
11256
|
allColumns.splice(col.place, 0, {
|
|
11224
11257
|
...col,
|
|
11225
11258
|
isCustom: true
|
|
@@ -11231,9 +11264,9 @@ function TableInner({
|
|
|
11231
11264
|
className: "table-container",
|
|
11232
11265
|
ref: setTableRef,
|
|
11233
11266
|
style: useExternalDndContext && enableExternalRowDrop ? {
|
|
11234
|
-
transition:
|
|
11235
|
-
background: isExternalOver && canExternalDrop ?
|
|
11236
|
-
outline: isExternalOver && canExternalDrop ?
|
|
11267
|
+
transition: "background 0.15s",
|
|
11268
|
+
background: isExternalOver && canExternalDrop ? "rgba(100,108,255,0.15)" : undefined,
|
|
11269
|
+
outline: isExternalOver && canExternalDrop ? "2px dashed #646cff" : undefined
|
|
11237
11270
|
} : undefined
|
|
11238
11271
|
}, /*#__PURE__*/React.createElement("div", {
|
|
11239
11272
|
className: "table-header",
|
|
@@ -11295,8 +11328,8 @@ function TableInner({
|
|
|
11295
11328
|
className: "table-empty",
|
|
11296
11329
|
style: {
|
|
11297
11330
|
padding: 24,
|
|
11298
|
-
textAlign:
|
|
11299
|
-
color:
|
|
11331
|
+
textAlign: "center",
|
|
11332
|
+
color: "#666"
|
|
11300
11333
|
}
|
|
11301
11334
|
}, translate("noData")) : /*#__PURE__*/React.createElement(AutoSizer, null, ({
|
|
11302
11335
|
height,
|
|
@@ -11317,15 +11350,15 @@ function TableInner({
|
|
|
11317
11350
|
cancelLabel: translate("cancel"),
|
|
11318
11351
|
showCancel: true,
|
|
11319
11352
|
showConfirm: true
|
|
11320
|
-
}, /*#__PURE__*/React.createElement("p", null, translate("areYouSureYouWantToDelete"), " ", /*#__PURE__*/React.createElement("strong", null, pendingDelete ? pendingDelete[deleteLabelKey] ?? pendingDelete.name ?? pendingDelete.id :
|
|
11353
|
+
}, /*#__PURE__*/React.createElement("p", null, translate("areYouSureYouWantToDelete"), " ", /*#__PURE__*/React.createElement("strong", null, pendingDelete ? pendingDelete[deleteLabelKey] ?? pendingDelete.name ?? pendingDelete.id : ""), "?")));
|
|
11321
11354
|
const contextMenuMarkup = contextMenu.visible && rightClickActions.length > 0 ? /*#__PURE__*/React.createElement("div", {
|
|
11322
11355
|
style: {
|
|
11323
|
-
position:
|
|
11356
|
+
position: "fixed",
|
|
11324
11357
|
top: contextMenu.y,
|
|
11325
11358
|
left: contextMenu.x,
|
|
11326
|
-
backgroundColor:
|
|
11327
|
-
border:
|
|
11328
|
-
boxShadow:
|
|
11359
|
+
backgroundColor: "#fff",
|
|
11360
|
+
border: "1px solid #ccc",
|
|
11361
|
+
boxShadow: "0 2px 8px rgba(0,0,0,.15)",
|
|
11329
11362
|
zIndex: 9999,
|
|
11330
11363
|
minWidth: 160,
|
|
11331
11364
|
padding: 0,
|
|
@@ -11335,11 +11368,11 @@ function TableInner({
|
|
|
11335
11368
|
}, rightClickActions.map((action, i) => /*#__PURE__*/React.createElement("div", {
|
|
11336
11369
|
key: i,
|
|
11337
11370
|
style: {
|
|
11338
|
-
padding:
|
|
11339
|
-
cursor:
|
|
11340
|
-
borderBottom: i < rightClickActions.length - 1 ?
|
|
11341
|
-
backgroundColor: hoveredActionIndex === i ?
|
|
11342
|
-
color: hoveredActionIndex === i ?
|
|
11371
|
+
padding: "8px 12px",
|
|
11372
|
+
cursor: "pointer",
|
|
11373
|
+
borderBottom: i < rightClickActions.length - 1 ? "1px solid #eee" : "none",
|
|
11374
|
+
backgroundColor: hoveredActionIndex === i ? "#f5f5f5" : "#fff",
|
|
11375
|
+
color: hoveredActionIndex === i ? "#000" : "#333"
|
|
11343
11376
|
},
|
|
11344
11377
|
onMouseEnter: () => setHoveredActionIndex(i),
|
|
11345
11378
|
onMouseLeave: () => setHoveredActionIndex(null),
|
|
@@ -11347,17 +11380,17 @@ function TableInner({
|
|
|
11347
11380
|
}, action.label || action.text || `Action ${i + 1}`))) : null;
|
|
11348
11381
|
const contextMenuModalMarkup = contextMenuModal.visible && contextMenuModal.component ? /*#__PURE__*/React.createElement(Modal.default, {
|
|
11349
11382
|
isOpen: true,
|
|
11350
|
-
title: contextMenuModal.title ||
|
|
11383
|
+
title: contextMenuModal.title || "",
|
|
11351
11384
|
onConfirm: () => setContextMenuModal({
|
|
11352
11385
|
visible: false,
|
|
11353
|
-
title:
|
|
11386
|
+
title: "",
|
|
11354
11387
|
component: null
|
|
11355
11388
|
}),
|
|
11356
11389
|
onCancel: () => closeContextMenuModal(),
|
|
11357
11390
|
showConfirm: false,
|
|
11358
11391
|
showCancel: true,
|
|
11359
|
-
cancelLabel: translate(
|
|
11360
|
-
}, typeof contextMenuModal.component ===
|
|
11392
|
+
cancelLabel: translate("cancel")
|
|
11393
|
+
}, typeof contextMenuModal.component === "function" ? /*#__PURE__*/React.createElement(contextMenuModal.component, {
|
|
11361
11394
|
row: contextMenu.row
|
|
11362
11395
|
}) : contextMenuModal.component) : null;
|
|
11363
11396
|
return /*#__PURE__*/React.createElement(React.Fragment, null, tableMarkup, contextMenuMarkup, contextMenuModalMarkup);
|