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.esm.js
CHANGED
|
@@ -9655,6 +9655,8 @@ function TableInner({
|
|
|
9655
9655
|
enableMouseRightClick = null,
|
|
9656
9656
|
customColumns = [],
|
|
9657
9657
|
groupDefaultOpen = false,
|
|
9658
|
+
groupExpanded = null,
|
|
9659
|
+
onExpandedGroupsChange = () => {},
|
|
9658
9660
|
showIcons = true,
|
|
9659
9661
|
timeoutLoading = 5,
|
|
9660
9662
|
t
|
|
@@ -9722,7 +9724,7 @@ function TableInner({
|
|
|
9722
9724
|
});
|
|
9723
9725
|
const [contextMenuModal, setContextMenuModal] = useState({
|
|
9724
9726
|
visible: false,
|
|
9725
|
-
title:
|
|
9727
|
+
title: "",
|
|
9726
9728
|
component: null
|
|
9727
9729
|
});
|
|
9728
9730
|
useEffect(() => {
|
|
@@ -9737,7 +9739,7 @@ function TableInner({
|
|
|
9737
9739
|
row: null
|
|
9738
9740
|
});
|
|
9739
9741
|
const handleEscape = event => {
|
|
9740
|
-
if (event.key ===
|
|
9742
|
+
if (event.key === "Escape") {
|
|
9741
9743
|
setContextMenu({
|
|
9742
9744
|
visible: false,
|
|
9743
9745
|
x: 0,
|
|
@@ -9746,13 +9748,13 @@ function TableInner({
|
|
|
9746
9748
|
});
|
|
9747
9749
|
}
|
|
9748
9750
|
};
|
|
9749
|
-
window.addEventListener(
|
|
9750
|
-
window.addEventListener(
|
|
9751
|
-
window.addEventListener(
|
|
9751
|
+
window.addEventListener("click", handleClick);
|
|
9752
|
+
window.addEventListener("contextmenu", handleClick);
|
|
9753
|
+
window.addEventListener("keydown", handleEscape);
|
|
9752
9754
|
return () => {
|
|
9753
|
-
window.removeEventListener(
|
|
9754
|
-
window.removeEventListener(
|
|
9755
|
-
window.removeEventListener(
|
|
9755
|
+
window.removeEventListener("click", handleClick);
|
|
9756
|
+
window.removeEventListener("contextmenu", handleClick);
|
|
9757
|
+
window.removeEventListener("keydown", handleEscape);
|
|
9756
9758
|
};
|
|
9757
9759
|
}, [contextMenu.visible]);
|
|
9758
9760
|
useEffect(() => {
|
|
@@ -10030,7 +10032,7 @@ function TableInner({
|
|
|
10030
10032
|
updateSearchFromUrl();
|
|
10031
10033
|
|
|
10032
10034
|
// Listen for URL changes (back/forward navigation)
|
|
10033
|
-
window.addEventListener(
|
|
10035
|
+
window.addEventListener("popstate", updateSearchFromUrl);
|
|
10034
10036
|
|
|
10035
10037
|
// Listen for programmatic URL changes if you use history.pushState/replaceState
|
|
10036
10038
|
const originalPushState = window.history.pushState;
|
|
@@ -10044,7 +10046,7 @@ function TableInner({
|
|
|
10044
10046
|
updateSearchFromUrl();
|
|
10045
10047
|
};
|
|
10046
10048
|
return () => {
|
|
10047
|
-
window.removeEventListener(
|
|
10049
|
+
window.removeEventListener("popstate", updateSearchFromUrl);
|
|
10048
10050
|
// Restore original methods
|
|
10049
10051
|
window.history.pushState = originalPushState;
|
|
10050
10052
|
window.history.replaceState = originalReplaceState;
|
|
@@ -10087,7 +10089,7 @@ function TableInner({
|
|
|
10087
10089
|
const closeContextMenuModal = useCallback(() => {
|
|
10088
10090
|
setContextMenuModal({
|
|
10089
10091
|
visible: false,
|
|
10090
|
-
title:
|
|
10092
|
+
title: "",
|
|
10091
10093
|
component: null
|
|
10092
10094
|
});
|
|
10093
10095
|
}, []);
|
|
@@ -10141,7 +10143,7 @@ function TableInner({
|
|
|
10141
10143
|
};
|
|
10142
10144
|
|
|
10143
10145
|
// Listen for popstate (back/forward navigation)
|
|
10144
|
-
window.addEventListener(
|
|
10146
|
+
window.addEventListener("popstate", handleDateParamChange);
|
|
10145
10147
|
|
|
10146
10148
|
// Listen for programmatic URL changes
|
|
10147
10149
|
const originalPushState = window.history.pushState;
|
|
@@ -10156,10 +10158,10 @@ function TableInner({
|
|
|
10156
10158
|
};
|
|
10157
10159
|
|
|
10158
10160
|
// Listen for hashchange (in case date params are in hash)
|
|
10159
|
-
window.addEventListener(
|
|
10161
|
+
window.addEventListener("hashchange", handleDateParamChange);
|
|
10160
10162
|
return () => {
|
|
10161
|
-
window.removeEventListener(
|
|
10162
|
-
window.removeEventListener(
|
|
10163
|
+
window.removeEventListener("popstate", handleDateParamChange);
|
|
10164
|
+
window.removeEventListener("hashchange", handleDateParamChange);
|
|
10163
10165
|
window.history.pushState = originalPushState;
|
|
10164
10166
|
window.history.replaceState = originalReplaceState;
|
|
10165
10167
|
};
|
|
@@ -10167,15 +10169,15 @@ function TableInner({
|
|
|
10167
10169
|
const filterRows = useCallback(rows => {
|
|
10168
10170
|
// Check for date-related URL params first
|
|
10169
10171
|
const urlParams = new URLSearchParams(urlSearchString);
|
|
10170
|
-
const _dateParams = [
|
|
10172
|
+
const _dateParams = ["startDate", "endDate", "date"];
|
|
10171
10173
|
let dateFiltered = rows;
|
|
10172
10174
|
for (const paramKey of _dateParams) {
|
|
10173
10175
|
const paramValue = urlParams.get(paramKey);
|
|
10174
10176
|
if (!paramValue) continue;
|
|
10175
10177
|
|
|
10176
10178
|
// Check if it's a range (contains ~)
|
|
10177
|
-
if (paramValue.includes(
|
|
10178
|
-
const [startTs, endTs] = paramValue.split(
|
|
10179
|
+
if (paramValue.includes("~")) {
|
|
10180
|
+
const [startTs, endTs] = paramValue.split("~").map(Number);
|
|
10179
10181
|
if (isNaN(startTs) || isNaN(endTs)) continue;
|
|
10180
10182
|
dateFiltered = dateFiltered.filter(row => {
|
|
10181
10183
|
// Check if any date field in the row falls within the range
|
|
@@ -10289,12 +10291,24 @@ function TableInner({
|
|
|
10289
10291
|
rows: sortRows(g.rows || [])
|
|
10290
10292
|
}));
|
|
10291
10293
|
}, [normalizedGroups, sorting, filterRows, getAccessorValue]);
|
|
10294
|
+
const emitExpandedChange = useCallback((nextState, toggledGroupId) => {
|
|
10295
|
+
if (typeof onExpandedGroupsChange === "function") {
|
|
10296
|
+
onExpandedGroupsChange(nextState, toggledGroupId);
|
|
10297
|
+
}
|
|
10298
|
+
if (typeof groupExpanded === "function") {
|
|
10299
|
+
groupExpanded(nextState, toggledGroupId);
|
|
10300
|
+
}
|
|
10301
|
+
}, [onExpandedGroupsChange, groupExpanded]);
|
|
10292
10302
|
const [expandedGroups, setExpandedGroups] = useState({});
|
|
10293
10303
|
const toggleGroup = gid => {
|
|
10294
|
-
setExpandedGroups(prev =>
|
|
10295
|
-
|
|
10296
|
-
|
|
10297
|
-
|
|
10304
|
+
setExpandedGroups(prev => {
|
|
10305
|
+
const next = {
|
|
10306
|
+
...prev,
|
|
10307
|
+
[gid]: !prev[gid]
|
|
10308
|
+
};
|
|
10309
|
+
emitExpandedChange(next, gid);
|
|
10310
|
+
return next;
|
|
10311
|
+
});
|
|
10298
10312
|
};
|
|
10299
10313
|
useEffect(() => {
|
|
10300
10314
|
// Pre-populate expansion state for all groups
|
|
@@ -10309,6 +10323,11 @@ function TableInner({
|
|
|
10309
10323
|
return next;
|
|
10310
10324
|
});
|
|
10311
10325
|
}, [normalizedGroups, groupKey, groupDefaultOpen]);
|
|
10326
|
+
useEffect(() => {
|
|
10327
|
+
if (groupExpanded && typeof groupExpanded === "object") {
|
|
10328
|
+
setExpandedGroups(groupExpanded);
|
|
10329
|
+
}
|
|
10330
|
+
}, [groupExpanded]);
|
|
10312
10331
|
const groupRowsById = useMemo(() => {
|
|
10313
10332
|
const map = {};
|
|
10314
10333
|
for (const g of sortedGroupedData) {
|
|
@@ -10369,7 +10388,7 @@ function TableInner({
|
|
|
10369
10388
|
if (!el) return;
|
|
10370
10389
|
|
|
10371
10390
|
// Try to find the actual scrollable grid element created by react-virtualized
|
|
10372
|
-
const grid = el.querySelector(
|
|
10391
|
+
const grid = el.querySelector(".ReactVirtualized__Grid");
|
|
10373
10392
|
const check = () => {
|
|
10374
10393
|
if (!grid) {
|
|
10375
10394
|
setHeaderPadRight(0);
|
|
@@ -10400,10 +10419,14 @@ function TableInner({
|
|
|
10400
10419
|
cancelAnimationFrame(raf);
|
|
10401
10420
|
try {
|
|
10402
10421
|
ro.disconnect();
|
|
10403
|
-
} catch {
|
|
10422
|
+
} catch {
|
|
10423
|
+
/* noop */
|
|
10424
|
+
}
|
|
10404
10425
|
try {
|
|
10405
10426
|
mo.disconnect();
|
|
10406
|
-
} catch {
|
|
10427
|
+
} catch {
|
|
10428
|
+
/* noop */
|
|
10429
|
+
}
|
|
10407
10430
|
};
|
|
10408
10431
|
}, [listRef, tableDataFlat.length]);
|
|
10409
10432
|
|
|
@@ -10430,7 +10453,7 @@ function TableInner({
|
|
|
10430
10453
|
if (res && res.success === false) return;
|
|
10431
10454
|
} catch (err) {
|
|
10432
10455
|
// if callback throws, don't block deletion
|
|
10433
|
-
console.error(
|
|
10456
|
+
console.error("deleteCallback threw", err);
|
|
10434
10457
|
}
|
|
10435
10458
|
}
|
|
10436
10459
|
setLocalData(prev => {
|
|
@@ -10500,8 +10523,18 @@ function TableInner({
|
|
|
10500
10523
|
const isUndefinedLike = v === undefined || typeof v === "string" && v.trim().toLowerCase() === "undefined";
|
|
10501
10524
|
const isNoData = isUndefinedLike;
|
|
10502
10525
|
|
|
10526
|
+
// Custom column type (editable in-table)
|
|
10527
|
+
if (col && col.type === "custom") {
|
|
10528
|
+
const customComp = col["modal-comp"];
|
|
10529
|
+
if (customComp) {
|
|
10530
|
+
return /*#__PURE__*/React__default.createElement("customComp", {
|
|
10531
|
+
value: v
|
|
10532
|
+
});
|
|
10533
|
+
}
|
|
10534
|
+
}
|
|
10535
|
+
|
|
10503
10536
|
// Checkbox column type (editable in-table)
|
|
10504
|
-
if (col && col.type ===
|
|
10537
|
+
if (col && col.type === "checkbox") {
|
|
10505
10538
|
const checked = isUndefinedLike ? false : !!v;
|
|
10506
10539
|
return /*#__PURE__*/React__default.createElement("input", {
|
|
10507
10540
|
type: "checkbox",
|
|
@@ -10532,14 +10565,14 @@ function TableInner({
|
|
|
10532
10565
|
try {
|
|
10533
10566
|
onCellChangeRef.current?.(row, accessor, next);
|
|
10534
10567
|
} catch (err) {
|
|
10535
|
-
console.error(
|
|
10568
|
+
console.error("onCellChange error", err);
|
|
10536
10569
|
}
|
|
10537
10570
|
}
|
|
10538
10571
|
});
|
|
10539
10572
|
}
|
|
10540
10573
|
|
|
10541
10574
|
// Switch column type (uses internal Switch component)
|
|
10542
|
-
if (col && col.type ===
|
|
10575
|
+
if (col && col.type === "switch") {
|
|
10543
10576
|
const checked = isUndefinedLike ? false : !!v;
|
|
10544
10577
|
return /*#__PURE__*/React__default.createElement("div", {
|
|
10545
10578
|
title: isNoData ? translate("noData") : undefined,
|
|
@@ -10550,7 +10583,7 @@ function TableInner({
|
|
|
10550
10583
|
}, /*#__PURE__*/React__default.createElement(Switch, {
|
|
10551
10584
|
checked: checked,
|
|
10552
10585
|
onChange: valOrEvent => {
|
|
10553
|
-
const next = typeof valOrEvent ===
|
|
10586
|
+
const next = typeof valOrEvent === "boolean" ? valOrEvent : valOrEvent && valOrEvent.target ? !!valOrEvent.target.checked : !!valOrEvent;
|
|
10554
10587
|
setLocalData(prev => {
|
|
10555
10588
|
if (isGrouped) {
|
|
10556
10589
|
return prev.map(g => ({
|
|
@@ -10570,30 +10603,30 @@ function TableInner({
|
|
|
10570
10603
|
try {
|
|
10571
10604
|
onCellChangeRef.current?.(row, accessor, next);
|
|
10572
10605
|
} catch (err) {
|
|
10573
|
-
console.error(
|
|
10606
|
+
console.error("onCellChange error", err);
|
|
10574
10607
|
}
|
|
10575
10608
|
}
|
|
10576
10609
|
}));
|
|
10577
10610
|
}
|
|
10578
10611
|
|
|
10579
10612
|
// Color column type (display color swatch background)
|
|
10580
|
-
if (col && col.type ===
|
|
10613
|
+
if (col && col.type === "color") {
|
|
10581
10614
|
const colorVal = isUndefinedLike ? "transparent" : v || "transparent";
|
|
10582
10615
|
const text = isUndefinedLike ? "..." : String(colorVal) ;
|
|
10583
10616
|
return /*#__PURE__*/React__default.createElement("div", {
|
|
10584
10617
|
style: {
|
|
10585
|
-
width:
|
|
10586
|
-
height:
|
|
10587
|
-
minHeight:
|
|
10618
|
+
width: "100%",
|
|
10619
|
+
height: "100%",
|
|
10620
|
+
minHeight: "20px",
|
|
10588
10621
|
backgroundColor: colorVal,
|
|
10589
|
-
color:
|
|
10590
|
-
border:
|
|
10591
|
-
boxSizing:
|
|
10592
|
-
display:
|
|
10593
|
-
alignItems:
|
|
10594
|
-
justifyContent:
|
|
10595
|
-
fontSize:
|
|
10596
|
-
overflow:
|
|
10622
|
+
color: "#000",
|
|
10623
|
+
border: "1px solid #ccc",
|
|
10624
|
+
boxSizing: "border-box",
|
|
10625
|
+
display: "flex",
|
|
10626
|
+
alignItems: "center",
|
|
10627
|
+
justifyContent: "center",
|
|
10628
|
+
fontSize: "12px",
|
|
10629
|
+
overflow: "hidden"
|
|
10597
10630
|
},
|
|
10598
10631
|
title: isNoData ? translate("noData") : text,
|
|
10599
10632
|
onClick: () => triggerCellCallback(row, col, colorVal)
|
|
@@ -10601,7 +10634,7 @@ function TableInner({
|
|
|
10601
10634
|
}
|
|
10602
10635
|
|
|
10603
10636
|
// Input column type (editable text)
|
|
10604
|
-
if (col && col.type ===
|
|
10637
|
+
if (col && col.type === "input") {
|
|
10605
10638
|
const text = isNoData ? "" : v == null ? "" : String(v);
|
|
10606
10639
|
return /*#__PURE__*/React__default.createElement("input", {
|
|
10607
10640
|
type: "text",
|
|
@@ -10634,7 +10667,7 @@ function TableInner({
|
|
|
10634
10667
|
try {
|
|
10635
10668
|
onCellChangeRef.current?.(row, accessor, next);
|
|
10636
10669
|
} catch (err) {
|
|
10637
|
-
console.error(
|
|
10670
|
+
console.error("onCellChange error", err);
|
|
10638
10671
|
}
|
|
10639
10672
|
},
|
|
10640
10673
|
style: {
|
|
@@ -10645,7 +10678,7 @@ function TableInner({
|
|
|
10645
10678
|
}
|
|
10646
10679
|
|
|
10647
10680
|
// Number column type (format decimals) - default two decimals
|
|
10648
|
-
if (col && col.type ===
|
|
10681
|
+
if (col && col.type === "number") {
|
|
10649
10682
|
if (isNoData) {
|
|
10650
10683
|
return /*#__PURE__*/React__default.createElement("span", {
|
|
10651
10684
|
title: translate("noData")
|
|
@@ -10669,7 +10702,7 @@ function TableInner({
|
|
|
10669
10702
|
title: formatted
|
|
10670
10703
|
}, formatted);
|
|
10671
10704
|
}
|
|
10672
|
-
if (col && col.type ===
|
|
10705
|
+
if (col && col.type === "array") {
|
|
10673
10706
|
const arr = Array.isArray(v) ? v : [];
|
|
10674
10707
|
const list = formatArrayValue(arr, col);
|
|
10675
10708
|
const count = arr.length;
|
|
@@ -10772,7 +10805,7 @@ function TableInner({
|
|
|
10772
10805
|
const from = tableDataFlat[fromIndex];
|
|
10773
10806
|
let to = null;
|
|
10774
10807
|
let emptyGroupId = null;
|
|
10775
|
-
if (typeof toIndexOrGroup ===
|
|
10808
|
+
if (typeof toIndexOrGroup === "object" && toIndexOrGroup && toIndexOrGroup.emptyGroupId) {
|
|
10776
10809
|
emptyGroupId = toIndexOrGroup.emptyGroupId;
|
|
10777
10810
|
} else {
|
|
10778
10811
|
to = tableDataFlat[toIndexOrGroup];
|
|
@@ -10867,7 +10900,7 @@ function TableInner({
|
|
|
10867
10900
|
newRow = res.newRow;
|
|
10868
10901
|
}
|
|
10869
10902
|
} catch (err) {
|
|
10870
|
-
console.error(
|
|
10903
|
+
console.error("duplicateCallback threw", err);
|
|
10871
10904
|
}
|
|
10872
10905
|
}
|
|
10873
10906
|
// fallback simple clone if callback didn't provide newRow
|
|
@@ -10938,13 +10971,13 @@ function TableInner({
|
|
|
10938
10971
|
key: key,
|
|
10939
10972
|
style: {
|
|
10940
10973
|
...style,
|
|
10941
|
-
background:
|
|
10942
|
-
border:
|
|
10943
|
-
textAlign:
|
|
10944
|
-
color:
|
|
10974
|
+
background: "#f6f6fa",
|
|
10975
|
+
border: "2px dashed #bbb",
|
|
10976
|
+
textAlign: "center",
|
|
10977
|
+
color: "#888",
|
|
10945
10978
|
minHeight: rowHeight,
|
|
10946
|
-
display:
|
|
10947
|
-
alignItems:
|
|
10979
|
+
display: "flex",
|
|
10980
|
+
alignItems: "center"
|
|
10948
10981
|
},
|
|
10949
10982
|
className: "table-row group-row empty-group-drop",
|
|
10950
10983
|
onClick: () => toggleGroup(gid)
|
|
@@ -10973,7 +11006,7 @@ function TableInner({
|
|
|
10973
11006
|
}), /*#__PURE__*/React__default.createElement("div", {
|
|
10974
11007
|
className: "table-cell group-header",
|
|
10975
11008
|
title: `${translate(item.groupName)} (0)`
|
|
10976
|
-
}, item.expanded ? "▾" : "▸", " ", translate(item.groupName), " (0) \u2014 ", translate("DropHereToMoveIntoThisGroup")), showActions && /*#__PURE__*/React__default.createElement("div", {
|
|
11009
|
+
}, item.expanded ? "▾" : "▸", " ", translate(item.groupName), " (0) \u2014", " ", translate("DropHereToMoveIntoThisGroup")), showActions && /*#__PURE__*/React__default.createElement("div", {
|
|
10977
11010
|
className: "table-cell action-cell",
|
|
10978
11011
|
style: actionColumnStyle
|
|
10979
11012
|
}));
|
|
@@ -11025,7 +11058,7 @@ function TableInner({
|
|
|
11025
11058
|
// Insert custom columns at specified places
|
|
11026
11059
|
if (Array.isArray(customColumns)) {
|
|
11027
11060
|
customColumns.forEach(col => {
|
|
11028
|
-
if (typeof col.place ===
|
|
11061
|
+
if (typeof col.place === "number") {
|
|
11029
11062
|
allColumns.splice(col.place, 0, {
|
|
11030
11063
|
...col,
|
|
11031
11064
|
isCustom: true
|
|
@@ -11037,7 +11070,7 @@ function TableInner({
|
|
|
11037
11070
|
const handleRowDoubleClick = e => {
|
|
11038
11071
|
if (!doubleClickEnable) return;
|
|
11039
11072
|
// ignore if the event originated on an interactive element
|
|
11040
|
-
if (e.target.closest(
|
|
11073
|
+
if (e.target.closest(".checkbox-cell") || e.target.closest("button") || e.target.closest("input") || e.target.closest("a")) {
|
|
11041
11074
|
return;
|
|
11042
11075
|
}
|
|
11043
11076
|
editCallbackRef.current(row);
|
|
@@ -11064,7 +11097,7 @@ function TableInner({
|
|
|
11064
11097
|
className: "row-main",
|
|
11065
11098
|
onDoubleClick: doubleClickEnable ? handleRowDoubleClick : undefined,
|
|
11066
11099
|
style: {
|
|
11067
|
-
display:
|
|
11100
|
+
display: "flex",
|
|
11068
11101
|
flex: 1
|
|
11069
11102
|
}
|
|
11070
11103
|
}, enableMultiSelect && /*#__PURE__*/React__default.createElement("div", {
|
|
@@ -11091,7 +11124,7 @@ function TableInner({
|
|
|
11091
11124
|
className: "table-cell",
|
|
11092
11125
|
style: cellStyle,
|
|
11093
11126
|
onClick: () => triggerCellCallback(row, col)
|
|
11094
|
-
}, col.isCustom ? typeof col.render ===
|
|
11127
|
+
}, col.isCustom ? typeof col.render === "function" ? col.render(row, i) : col.render : renderCell(cellValue, resolvedAccessor, row, col));
|
|
11095
11128
|
})), showActions && /*#__PURE__*/React__default.createElement("div", {
|
|
11096
11129
|
className: "table-cell action-cell",
|
|
11097
11130
|
style: actionColumnStyle
|
|
@@ -11197,7 +11230,7 @@ function TableInner({
|
|
|
11197
11230
|
const allColumns = [...columns];
|
|
11198
11231
|
if (Array.isArray(customColumns)) {
|
|
11199
11232
|
customColumns.forEach(col => {
|
|
11200
|
-
if (typeof col.place ===
|
|
11233
|
+
if (typeof col.place === "number") {
|
|
11201
11234
|
allColumns.splice(col.place, 0, {
|
|
11202
11235
|
...col,
|
|
11203
11236
|
isCustom: true
|
|
@@ -11209,9 +11242,9 @@ function TableInner({
|
|
|
11209
11242
|
className: "table-container",
|
|
11210
11243
|
ref: setTableRef,
|
|
11211
11244
|
style: useExternalDndContext && enableExternalRowDrop ? {
|
|
11212
|
-
transition:
|
|
11213
|
-
background: isExternalOver && canExternalDrop ?
|
|
11214
|
-
outline: isExternalOver && canExternalDrop ?
|
|
11245
|
+
transition: "background 0.15s",
|
|
11246
|
+
background: isExternalOver && canExternalDrop ? "rgba(100,108,255,0.15)" : undefined,
|
|
11247
|
+
outline: isExternalOver && canExternalDrop ? "2px dashed #646cff" : undefined
|
|
11215
11248
|
} : undefined
|
|
11216
11249
|
}, /*#__PURE__*/React__default.createElement("div", {
|
|
11217
11250
|
className: "table-header",
|
|
@@ -11273,8 +11306,8 @@ function TableInner({
|
|
|
11273
11306
|
className: "table-empty",
|
|
11274
11307
|
style: {
|
|
11275
11308
|
padding: 24,
|
|
11276
|
-
textAlign:
|
|
11277
|
-
color:
|
|
11309
|
+
textAlign: "center",
|
|
11310
|
+
color: "#666"
|
|
11278
11311
|
}
|
|
11279
11312
|
}, translate("noData")) : /*#__PURE__*/React__default.createElement(AutoSizer, null, ({
|
|
11280
11313
|
height,
|
|
@@ -11295,15 +11328,15 @@ function TableInner({
|
|
|
11295
11328
|
cancelLabel: translate("cancel"),
|
|
11296
11329
|
showCancel: true,
|
|
11297
11330
|
showConfirm: true
|
|
11298
|
-
}, /*#__PURE__*/React__default.createElement("p", null, translate("areYouSureYouWantToDelete"), " ", /*#__PURE__*/React__default.createElement("strong", null, pendingDelete ? pendingDelete[deleteLabelKey] ?? pendingDelete.name ?? pendingDelete.id :
|
|
11331
|
+
}, /*#__PURE__*/React__default.createElement("p", null, translate("areYouSureYouWantToDelete"), " ", /*#__PURE__*/React__default.createElement("strong", null, pendingDelete ? pendingDelete[deleteLabelKey] ?? pendingDelete.name ?? pendingDelete.id : ""), "?")));
|
|
11299
11332
|
const contextMenuMarkup = contextMenu.visible && rightClickActions.length > 0 ? /*#__PURE__*/React__default.createElement("div", {
|
|
11300
11333
|
style: {
|
|
11301
|
-
position:
|
|
11334
|
+
position: "fixed",
|
|
11302
11335
|
top: contextMenu.y,
|
|
11303
11336
|
left: contextMenu.x,
|
|
11304
|
-
backgroundColor:
|
|
11305
|
-
border:
|
|
11306
|
-
boxShadow:
|
|
11337
|
+
backgroundColor: "#fff",
|
|
11338
|
+
border: "1px solid #ccc",
|
|
11339
|
+
boxShadow: "0 2px 8px rgba(0,0,0,.15)",
|
|
11307
11340
|
zIndex: 9999,
|
|
11308
11341
|
minWidth: 160,
|
|
11309
11342
|
padding: 0,
|
|
@@ -11313,11 +11346,11 @@ function TableInner({
|
|
|
11313
11346
|
}, rightClickActions.map((action, i) => /*#__PURE__*/React__default.createElement("div", {
|
|
11314
11347
|
key: i,
|
|
11315
11348
|
style: {
|
|
11316
|
-
padding:
|
|
11317
|
-
cursor:
|
|
11318
|
-
borderBottom: i < rightClickActions.length - 1 ?
|
|
11319
|
-
backgroundColor: hoveredActionIndex === i ?
|
|
11320
|
-
color: hoveredActionIndex === i ?
|
|
11349
|
+
padding: "8px 12px",
|
|
11350
|
+
cursor: "pointer",
|
|
11351
|
+
borderBottom: i < rightClickActions.length - 1 ? "1px solid #eee" : "none",
|
|
11352
|
+
backgroundColor: hoveredActionIndex === i ? "#f5f5f5" : "#fff",
|
|
11353
|
+
color: hoveredActionIndex === i ? "#000" : "#333"
|
|
11321
11354
|
},
|
|
11322
11355
|
onMouseEnter: () => setHoveredActionIndex(i),
|
|
11323
11356
|
onMouseLeave: () => setHoveredActionIndex(null),
|
|
@@ -11325,17 +11358,17 @@ function TableInner({
|
|
|
11325
11358
|
}, action.label || action.text || `Action ${i + 1}`))) : null;
|
|
11326
11359
|
const contextMenuModalMarkup = contextMenuModal.visible && contextMenuModal.component ? /*#__PURE__*/React__default.createElement(Modal, {
|
|
11327
11360
|
isOpen: true,
|
|
11328
|
-
title: contextMenuModal.title ||
|
|
11361
|
+
title: contextMenuModal.title || "",
|
|
11329
11362
|
onConfirm: () => setContextMenuModal({
|
|
11330
11363
|
visible: false,
|
|
11331
|
-
title:
|
|
11364
|
+
title: "",
|
|
11332
11365
|
component: null
|
|
11333
11366
|
}),
|
|
11334
11367
|
onCancel: () => closeContextMenuModal(),
|
|
11335
11368
|
showConfirm: false,
|
|
11336
11369
|
showCancel: true,
|
|
11337
|
-
cancelLabel: translate(
|
|
11338
|
-
}, typeof contextMenuModal.component ===
|
|
11370
|
+
cancelLabel: translate("cancel")
|
|
11371
|
+
}, typeof contextMenuModal.component === "function" ? /*#__PURE__*/React__default.createElement(contextMenuModal.component, {
|
|
11339
11372
|
row: contextMenu.row
|
|
11340
11373
|
}) : contextMenuModal.component) : null;
|
|
11341
11374
|
return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, tableMarkup, contextMenuMarkup, contextMenuModalMarkup);
|