@dreamtree-org/twreact-ui 1.0.63 → 1.0.64
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/index.css +1 -1
- package/dist/index.esm.css +1 -1
- package/dist/index.esm.js +506 -201
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +506 -201
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.esm.js
CHANGED
|
@@ -220,7 +220,7 @@ const Check = createLucideIcon$1("Check", [
|
|
|
220
220
|
*/
|
|
221
221
|
|
|
222
222
|
|
|
223
|
-
const ChevronDown = createLucideIcon$1("ChevronDown", [
|
|
223
|
+
const ChevronDown$1 = createLucideIcon$1("ChevronDown", [
|
|
224
224
|
["path", { d: "m6 9 6 6 6-6", key: "qrunsl" }]
|
|
225
225
|
]);
|
|
226
226
|
|
|
@@ -374,6 +374,20 @@ const Info = createLucideIcon$1("Info", [
|
|
|
374
374
|
*/
|
|
375
375
|
|
|
376
376
|
|
|
377
|
+
const List = createLucideIcon$1("List", [
|
|
378
|
+
["line", { x1: "8", x2: "21", y1: "6", y2: "6", key: "7ey8pc" }],
|
|
379
|
+
["line", { x1: "8", x2: "21", y1: "12", y2: "12", key: "rjfblc" }],
|
|
380
|
+
["line", { x1: "8", x2: "21", y1: "18", y2: "18", key: "c3b1m8" }],
|
|
381
|
+
["line", { x1: "3", x2: "3.01", y1: "6", y2: "6", key: "1g7gq3" }],
|
|
382
|
+
["line", { x1: "3", x2: "3.01", y1: "12", y2: "12", key: "1pjlvk" }],
|
|
383
|
+
["line", { x1: "3", x2: "3.01", y1: "18", y2: "18", key: "28t2mc" }]
|
|
384
|
+
]);
|
|
385
|
+
|
|
386
|
+
/**
|
|
387
|
+
* lucide-react v0.0.1 - ISC
|
|
388
|
+
*/
|
|
389
|
+
|
|
390
|
+
|
|
377
391
|
const Loader2 = createLucideIcon$1("Loader2", [
|
|
378
392
|
["path", { d: "M21 12a9 9 0 1 1-6.219-8.56", key: "13zald" }]
|
|
379
393
|
]);
|
|
@@ -456,6 +470,24 @@ const Plus = createLucideIcon$1("Plus", [
|
|
|
456
470
|
*/
|
|
457
471
|
|
|
458
472
|
|
|
473
|
+
const RefreshCcw = createLucideIcon$1("RefreshCcw", [
|
|
474
|
+
[
|
|
475
|
+
"path",
|
|
476
|
+
{ d: "M21 12a9 9 0 0 0-9-9 9.75 9.75 0 0 0-6.74 2.74L3 8", key: "14sxne" }
|
|
477
|
+
],
|
|
478
|
+
["path", { d: "M3 3v5h5", key: "1xhq8a" }],
|
|
479
|
+
[
|
|
480
|
+
"path",
|
|
481
|
+
{ d: "M3 12a9 9 0 0 0 9 9 9.75 9.75 0 0 0 6.74-2.74L21 16", key: "1hlbsb" }
|
|
482
|
+
],
|
|
483
|
+
["path", { d: "M16 16h5v5", key: "ccwih5" }]
|
|
484
|
+
]);
|
|
485
|
+
|
|
486
|
+
/**
|
|
487
|
+
* lucide-react v0.0.1 - ISC
|
|
488
|
+
*/
|
|
489
|
+
|
|
490
|
+
|
|
459
491
|
const Search = createLucideIcon$1("Search", [
|
|
460
492
|
["circle", { cx: "11", cy: "11", r: "8", key: "4ej97u" }],
|
|
461
493
|
["path", { d: "m21 21-4.3-4.3", key: "1qie3q" }]
|
|
@@ -3664,7 +3696,7 @@ var Select = /*#__PURE__*/React__default.forwardRef(function (_ref, forwardedRef
|
|
|
3664
3696
|
return _objectSpread$a(_objectSpread$a({}, prev), {}, _defineProperty$4({}, group.label, !prev[group.label]));
|
|
3665
3697
|
});
|
|
3666
3698
|
}
|
|
3667
|
-
}, /*#__PURE__*/React__default.createElement(ChevronDown, {
|
|
3699
|
+
}, /*#__PURE__*/React__default.createElement(ChevronDown$1, {
|
|
3668
3700
|
className: cn$1("h-4 w-4 text-gray-400 transition-transform", {
|
|
3669
3701
|
"rotate-180": collapsedGroups[group.label]
|
|
3670
3702
|
})
|
|
@@ -3773,7 +3805,7 @@ var Select = /*#__PURE__*/React__default.forwardRef(function (_ref, forwardedRef
|
|
|
3773
3805
|
"aria-label": "Clear selection"
|
|
3774
3806
|
}, /*#__PURE__*/React__default.createElement(X, {
|
|
3775
3807
|
className: "h-4 w-4"
|
|
3776
|
-
})), /*#__PURE__*/React__default.createElement(ChevronDown, {
|
|
3808
|
+
})), /*#__PURE__*/React__default.createElement(ChevronDown$1, {
|
|
3777
3809
|
className: cn$1("h-4 w-4 text-gray-400 transition-transform", {
|
|
3778
3810
|
"rotate-180": isOpen
|
|
3779
3811
|
})
|
|
@@ -3831,7 +3863,7 @@ var Select = /*#__PURE__*/React__default.forwardRef(function (_ref, forwardedRef
|
|
|
3831
3863
|
}, error));
|
|
3832
3864
|
});
|
|
3833
3865
|
|
|
3834
|
-
var _excluded$k = ["data", "columns", "sortable", "filterable", "selectable", "pagination", "pageSize", "onSort", "onFilter", "onFetch", "onFilterChange", "onSelectionChange", "onRowClick", "hasDetails", "DetailsComponent", "className", "withAction", "onAction", "actions", "showSerial", "cellClass", "rowClass", "globalSearch", "limitOptions", "showLimitSelector", "onLimitChange"];
|
|
3866
|
+
var _excluded$k = ["data", "columns", "sortable", "filterable", "selectable", "pagination", "pageSize", "onSort", "onFilter", "onFetch", "onFilterChange", "onSelectionChange", "onRowClick", "hasDetails", "DetailsComponent", "className", "withAction", "onAction", "actions", "showSerial", "cellClass", "rowClass", "globalSearch", "limitOptions", "showLimitSelector", "onLimitChange", "showReloadButton", "renderReloadButton", "onReload", "stripedRows", "stripedColors", "responsiveBreakpoint"];
|
|
3835
3867
|
function ownKeys$9(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
3836
3868
|
function _objectSpread$9(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$9(Object(t), true).forEach(function (r) { _defineProperty$4(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$9(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
3837
3869
|
var Table = function Table(_ref) {
|
|
@@ -3875,87 +3907,123 @@ var Table = function Table(_ref) {
|
|
|
3875
3907
|
_ref$showLimitSelecto = _ref.showLimitSelector,
|
|
3876
3908
|
showLimitSelector = _ref$showLimitSelecto === void 0 ? true : _ref$showLimitSelecto,
|
|
3877
3909
|
onLimitChange = _ref.onLimitChange,
|
|
3910
|
+
_ref$showReloadButton = _ref.showReloadButton,
|
|
3911
|
+
showReloadButton = _ref$showReloadButton === void 0 ? true : _ref$showReloadButton,
|
|
3912
|
+
renderReloadButton = _ref.renderReloadButton,
|
|
3913
|
+
onReload = _ref.onReload,
|
|
3914
|
+
_ref$stripedRows = _ref.stripedRows,
|
|
3915
|
+
stripedRows = _ref$stripedRows === void 0 ? true : _ref$stripedRows,
|
|
3916
|
+
_ref$stripedColors = _ref.stripedColors,
|
|
3917
|
+
stripedColors = _ref$stripedColors === void 0 ? ["#ffffff", "#f7fafc"] : _ref$stripedColors,
|
|
3918
|
+
_ref$responsiveBreakp = _ref.responsiveBreakpoint,
|
|
3919
|
+
responsiveBreakpoint = _ref$responsiveBreakp === void 0 ? 768 : _ref$responsiveBreakp,
|
|
3878
3920
|
props = _objectWithoutProperties$1(_ref, _excluded$k);
|
|
3879
|
-
//
|
|
3880
|
-
var _useState = useState(
|
|
3921
|
+
// State for responsive view
|
|
3922
|
+
var _useState = useState(false),
|
|
3881
3923
|
_useState2 = _slicedToArray(_useState, 2),
|
|
3882
|
-
|
|
3883
|
-
|
|
3884
|
-
|
|
3924
|
+
isMobileView = _useState2[0],
|
|
3925
|
+
setIsMobileView = _useState2[1];
|
|
3926
|
+
|
|
3927
|
+
// Keep original table data / loading
|
|
3928
|
+
var _useState3 = useState(Array.isArray(data) ? data : []),
|
|
3885
3929
|
_useState4 = _slicedToArray(_useState3, 2),
|
|
3886
|
-
|
|
3887
|
-
|
|
3930
|
+
tableData = _useState4[0],
|
|
3931
|
+
setTableData = _useState4[1];
|
|
3932
|
+
var _useState5 = useState(false),
|
|
3933
|
+
_useState6 = _slicedToArray(_useState5, 2),
|
|
3934
|
+
loading = _useState6[0],
|
|
3935
|
+
setLoading = _useState6[1];
|
|
3888
3936
|
|
|
3889
|
-
//
|
|
3890
|
-
var
|
|
3937
|
+
// Column visibility state
|
|
3938
|
+
var _useState7 = useState(function () {
|
|
3891
3939
|
return Array.isArray(columns) ? columns.map(function (c) {
|
|
3892
3940
|
return _objectSpread$9({}, c);
|
|
3893
3941
|
}) : [];
|
|
3894
3942
|
}),
|
|
3895
|
-
|
|
3896
|
-
columnsState =
|
|
3897
|
-
setColumnsState =
|
|
3943
|
+
_useState8 = _slicedToArray(_useState7, 2),
|
|
3944
|
+
columnsState = _useState8[0],
|
|
3945
|
+
setColumnsState = _useState8[1];
|
|
3898
3946
|
useEffect(function () {
|
|
3899
|
-
//
|
|
3947
|
+
// Sync when prop changes
|
|
3900
3948
|
setColumnsState(Array.isArray(columns) ? columns.map(function (c) {
|
|
3901
3949
|
return _objectSpread$9({}, c);
|
|
3902
3950
|
}) : []);
|
|
3903
3951
|
}, [columns]);
|
|
3904
3952
|
|
|
3905
|
-
//
|
|
3906
|
-
var
|
|
3907
|
-
|
|
3908
|
-
showColumnMenu =
|
|
3909
|
-
setShowColumnMenu =
|
|
3953
|
+
// Popover state for column toggler
|
|
3954
|
+
var _useState9 = useState(false),
|
|
3955
|
+
_useState0 = _slicedToArray(_useState9, 2),
|
|
3956
|
+
showColumnMenu = _useState0[0],
|
|
3957
|
+
setShowColumnMenu = _useState0[1];
|
|
3910
3958
|
var columnMenuRef = useRef(null);
|
|
3911
3959
|
var columnToggleBtnRef = useRef(null);
|
|
3912
|
-
var
|
|
3913
|
-
|
|
3914
|
-
limit =
|
|
3915
|
-
setLimit =
|
|
3960
|
+
var _useState1 = useState(pageSize),
|
|
3961
|
+
_useState10 = _slicedToArray(_useState1, 2),
|
|
3962
|
+
limit = _useState10[0],
|
|
3963
|
+
setLimit = _useState10[1];
|
|
3916
3964
|
|
|
3917
|
-
//
|
|
3918
|
-
var
|
|
3965
|
+
// Other states
|
|
3966
|
+
var _useState11 = useState({
|
|
3919
3967
|
key: null,
|
|
3920
3968
|
direction: "asc"
|
|
3921
3969
|
}),
|
|
3922
|
-
_useState10 = _slicedToArray(_useState1, 2),
|
|
3923
|
-
sortConfig = _useState10[0],
|
|
3924
|
-
setSortConfig = _useState10[1];
|
|
3925
|
-
var _useState11 = useState(new Set()),
|
|
3926
3970
|
_useState12 = _slicedToArray(_useState11, 2),
|
|
3927
|
-
|
|
3928
|
-
|
|
3971
|
+
sortConfig = _useState12[0],
|
|
3972
|
+
setSortConfig = _useState12[1];
|
|
3929
3973
|
var _useState13 = useState(new Set()),
|
|
3930
3974
|
_useState14 = _slicedToArray(_useState13, 2),
|
|
3931
|
-
|
|
3932
|
-
|
|
3933
|
-
var _useState15 = useState(
|
|
3975
|
+
selectedRows = _useState14[0],
|
|
3976
|
+
setSelectedRows = _useState14[1];
|
|
3977
|
+
var _useState15 = useState(new Set()),
|
|
3934
3978
|
_useState16 = _slicedToArray(_useState15, 2),
|
|
3935
|
-
|
|
3936
|
-
|
|
3937
|
-
var _useState17 = useState(
|
|
3979
|
+
expandedRows = _useState16[0],
|
|
3980
|
+
setExpandedRows = _useState16[1];
|
|
3981
|
+
var _useState17 = useState(1),
|
|
3938
3982
|
_useState18 = _slicedToArray(_useState17, 2),
|
|
3939
|
-
|
|
3940
|
-
|
|
3941
|
-
var _useState19 = useState(
|
|
3983
|
+
currentPage = _useState18[0],
|
|
3984
|
+
setCurrentPage = _useState18[1];
|
|
3985
|
+
var _useState19 = useState({}),
|
|
3942
3986
|
_useState20 = _slicedToArray(_useState19, 2),
|
|
3943
|
-
|
|
3944
|
-
|
|
3945
|
-
|
|
3946
|
-
//popover per-row
|
|
3947
|
-
var _useState21 = useState(null),
|
|
3987
|
+
filters = _useState20[0],
|
|
3988
|
+
setFilters = _useState20[1];
|
|
3989
|
+
var _useState21 = useState(filters.global || ""),
|
|
3948
3990
|
_useState22 = _slicedToArray(_useState21, 2),
|
|
3949
|
-
|
|
3950
|
-
|
|
3991
|
+
searchInput = _useState22[0],
|
|
3992
|
+
setSearchInput = _useState22[1];
|
|
3993
|
+
var _useState23 = useState(false),
|
|
3994
|
+
_useState24 = _slicedToArray(_useState23, 2),
|
|
3995
|
+
showMobileFilters = _useState24[0],
|
|
3996
|
+
setShowMobileFilters = _useState24[1];
|
|
3997
|
+
|
|
3998
|
+
// Popover per-row
|
|
3999
|
+
var _useState25 = useState(null),
|
|
4000
|
+
_useState26 = _slicedToArray(_useState25, 2),
|
|
4001
|
+
actionAnchor = _useState26[0],
|
|
4002
|
+
setActionAnchor = _useState26[1];
|
|
3951
4003
|
var actionMenuRef = useRef(null);
|
|
3952
4004
|
|
|
3953
|
-
//
|
|
3954
|
-
var
|
|
3955
|
-
|
|
3956
|
-
openActionKey =
|
|
3957
|
-
setOpenActionKey =
|
|
4005
|
+
// Per-row action menu open key
|
|
4006
|
+
var _useState27 = useState(null),
|
|
4007
|
+
_useState28 = _slicedToArray(_useState27, 2),
|
|
4008
|
+
openActionKey = _useState28[0],
|
|
4009
|
+
setOpenActionKey = _useState28[1];
|
|
3958
4010
|
var openRef = useRef(null);
|
|
4011
|
+
|
|
4012
|
+
// Check if mobile view
|
|
4013
|
+
useEffect(function () {
|
|
4014
|
+
var checkMobile = function checkMobile() {
|
|
4015
|
+
setIsMobileView(window.innerWidth < responsiveBreakpoint);
|
|
4016
|
+
};
|
|
4017
|
+
|
|
4018
|
+
// Initial check
|
|
4019
|
+
checkMobile();
|
|
4020
|
+
|
|
4021
|
+
// Add event listener
|
|
4022
|
+
window.addEventListener("resize", checkMobile);
|
|
4023
|
+
return function () {
|
|
4024
|
+
window.removeEventListener("resize", checkMobile);
|
|
4025
|
+
};
|
|
4026
|
+
}, [responsiveBreakpoint]);
|
|
3959
4027
|
var isValidList = function isValidList(d) {
|
|
3960
4028
|
return Array.isArray(d);
|
|
3961
4029
|
};
|
|
@@ -3963,7 +4031,7 @@ var Table = function Table(_ref) {
|
|
|
3963
4031
|
if (isValidList(newData)) setTableData(newData);else setTableData([]);
|
|
3964
4032
|
};
|
|
3965
4033
|
|
|
3966
|
-
//
|
|
4034
|
+
// Close column menu when clicking outside
|
|
3967
4035
|
useEffect(function () {
|
|
3968
4036
|
var onDocClick = function onDocClick(e) {
|
|
3969
4037
|
if (showColumnMenu && columnMenuRef.current && !columnMenuRef.current.contains(e.target) && columnToggleBtnRef.current && !columnToggleBtnRef.current.contains(e.target)) {
|
|
@@ -3976,7 +4044,7 @@ var Table = function Table(_ref) {
|
|
|
3976
4044
|
};
|
|
3977
4045
|
}, [showColumnMenu]);
|
|
3978
4046
|
|
|
3979
|
-
//
|
|
4047
|
+
// Close per-row actionmenu when clicking outside
|
|
3980
4048
|
useEffect(function () {
|
|
3981
4049
|
var handler = function handler(e) {
|
|
3982
4050
|
if (openActionKey && openRef.current && !openRef.current.contains(e.target)) {
|
|
@@ -3989,7 +4057,7 @@ var Table = function Table(_ref) {
|
|
|
3989
4057
|
};
|
|
3990
4058
|
}, [openActionKey]);
|
|
3991
4059
|
|
|
3992
|
-
//
|
|
4060
|
+
// Visible columns derived from columnsState
|
|
3993
4061
|
var visibleColumns = useMemo(function () {
|
|
3994
4062
|
return columnsState.filter(function (col) {
|
|
3995
4063
|
return col.isVisible !== false;
|
|
@@ -4006,7 +4074,7 @@ var Table = function Table(_ref) {
|
|
|
4006
4074
|
setCurrentPage(1);
|
|
4007
4075
|
};
|
|
4008
4076
|
|
|
4009
|
-
//
|
|
4077
|
+
// Handle actions
|
|
4010
4078
|
var handleOnAction = function handleOnAction(action, row) {
|
|
4011
4079
|
var _action$onClick;
|
|
4012
4080
|
(_action$onClick = action.onClick) === null || _action$onClick === void 0 || _action$onClick.call(action, {
|
|
@@ -4056,7 +4124,7 @@ var Table = function Table(_ref) {
|
|
|
4056
4124
|
return String(globalIndex);
|
|
4057
4125
|
};
|
|
4058
4126
|
|
|
4059
|
-
//
|
|
4127
|
+
// Sorting
|
|
4060
4128
|
var sortedData = useMemo(function () {
|
|
4061
4129
|
if (!sortConfig.key) return tableData;
|
|
4062
4130
|
var key = sortConfig.key,
|
|
@@ -4078,19 +4146,17 @@ var Table = function Table(_ref) {
|
|
|
4078
4146
|
});
|
|
4079
4147
|
}, [tableData, sortConfig]);
|
|
4080
4148
|
|
|
4081
|
-
//
|
|
4149
|
+
// Filtering
|
|
4082
4150
|
var filteredData = useMemo(function () {
|
|
4083
|
-
// if no filtering enabled, return sortedData
|
|
4084
|
-
|
|
4085
4151
|
if (!filterable || Object.keys(filters).length === 0) return sortedData;
|
|
4086
4152
|
var globalQuery = String(filters.global || "").trim().toLowerCase();
|
|
4087
4153
|
return sortedData.filter(function (row) {
|
|
4088
|
-
//
|
|
4154
|
+
// Per-column filters
|
|
4089
4155
|
var perColumnOk = Object.entries(filters).every(function (_ref2) {
|
|
4090
4156
|
var _ref3 = _slicedToArray(_ref2, 2),
|
|
4091
4157
|
key = _ref3[0],
|
|
4092
4158
|
value = _ref3[1];
|
|
4093
|
-
if (key === "global") return true;
|
|
4159
|
+
if (key === "global") return true;
|
|
4094
4160
|
if (!value) return true;
|
|
4095
4161
|
var cell = row === null || row === void 0 ? void 0 : row[key];
|
|
4096
4162
|
if (cell == null) return false;
|
|
@@ -4098,18 +4164,14 @@ var Table = function Table(_ref) {
|
|
|
4098
4164
|
});
|
|
4099
4165
|
if (!perColumnOk) return false;
|
|
4100
4166
|
|
|
4101
|
-
//
|
|
4102
|
-
// fallback to searching all row values
|
|
4167
|
+
// Global filter
|
|
4103
4168
|
if (globalQuery) {
|
|
4104
|
-
// try visible columns
|
|
4105
4169
|
var matchesVisible = visibleColumns.some(function (col) {
|
|
4106
4170
|
var v = row === null || row === void 0 ? void 0 : row[col.key];
|
|
4107
4171
|
if (v == null) return false;
|
|
4108
4172
|
return String(v).toLowerCase().includes(globalQuery);
|
|
4109
4173
|
});
|
|
4110
4174
|
if (matchesVisible) return true;
|
|
4111
|
-
|
|
4112
|
-
// fallback: check any value in the row object
|
|
4113
4175
|
return Object.values(row || {}).some(function (v) {
|
|
4114
4176
|
return v != null ? String(v).toLowerCase().includes(globalQuery) : false;
|
|
4115
4177
|
});
|
|
@@ -4118,18 +4180,18 @@ var Table = function Table(_ref) {
|
|
|
4118
4180
|
});
|
|
4119
4181
|
}, [sortedData, filters, filterable, visibleColumns]);
|
|
4120
4182
|
|
|
4121
|
-
//
|
|
4183
|
+
// Pagination indices
|
|
4122
4184
|
var startIndex = pagination ? (currentPage - 1) * limit : 0;
|
|
4123
4185
|
var endIndex = pagination ? startIndex + limit : filteredData.length;
|
|
4124
4186
|
|
|
4125
|
-
//
|
|
4187
|
+
// Paginated view
|
|
4126
4188
|
var paginatedData = useMemo(function () {
|
|
4127
4189
|
if (!pagination) return filteredData;
|
|
4128
4190
|
return filteredData.slice(startIndex, endIndex);
|
|
4129
4191
|
}, [filteredData, startIndex, endIndex, pagination]);
|
|
4130
4192
|
var totalPages = Math.max(1, Math.ceil(filteredData.length / limit));
|
|
4131
4193
|
|
|
4132
|
-
//
|
|
4194
|
+
// Sorting handler
|
|
4133
4195
|
var handleSort = function handleSort(key) {
|
|
4134
4196
|
if (!sortable) return;
|
|
4135
4197
|
var direction = sortConfig.key === key && sortConfig.direction === "asc" ? "desc" : "asc";
|
|
@@ -4140,10 +4202,9 @@ var Table = function Table(_ref) {
|
|
|
4140
4202
|
onSort === null || onSort === void 0 || onSort(key, direction);
|
|
4141
4203
|
};
|
|
4142
4204
|
|
|
4143
|
-
//
|
|
4205
|
+
// Selection handlers
|
|
4144
4206
|
var handleSelectAll = function handleSelectAll() {
|
|
4145
4207
|
var newSelection = new Set(selectedRows);
|
|
4146
|
-
// select/deselect all rows on current page
|
|
4147
4208
|
var pageRowKeys = paginatedData.map(function (r, i) {
|
|
4148
4209
|
return getRowKey(r, startIndex + i);
|
|
4149
4210
|
});
|
|
@@ -4201,7 +4262,7 @@ var Table = function Table(_ref) {
|
|
|
4201
4262
|
return row === null || row === void 0 ? void 0 : row[column.key];
|
|
4202
4263
|
};
|
|
4203
4264
|
|
|
4204
|
-
// UI counts
|
|
4265
|
+
// UI counts
|
|
4205
4266
|
var visibleCount = (showSerial ? 1 : 0) + visibleColumns.length + (selectable ? 1 : 0) + (hasDetails ? 1 : 0) + (withAction ? 1 : 0);
|
|
4206
4267
|
var toggleActions = function toggleActions(e, actionCellKey, row) {
|
|
4207
4268
|
e.stopPropagation();
|
|
@@ -4241,32 +4302,28 @@ var Table = function Table(_ref) {
|
|
|
4241
4302
|
};
|
|
4242
4303
|
}, [actionAnchor]);
|
|
4243
4304
|
useEffect(function () {
|
|
4244
|
-
if (onFetch)
|
|
4245
|
-
|
|
4246
|
-
|
|
4247
|
-
|
|
4248
|
-
|
|
4249
|
-
|
|
4250
|
-
|
|
4251
|
-
|
|
4252
|
-
|
|
4253
|
-
|
|
4254
|
-
|
|
4255
|
-
|
|
4256
|
-
|
|
4257
|
-
});
|
|
4258
|
-
}
|
|
4259
|
-
}, [filters, onFetch, currentPage, limit, paginatedData]);
|
|
4305
|
+
if (!onFetch) return;
|
|
4306
|
+
onFetch({
|
|
4307
|
+
setData: setDataForExternal,
|
|
4308
|
+
filters: filters,
|
|
4309
|
+
setLoading: setLoading,
|
|
4310
|
+
pagination: {
|
|
4311
|
+
currentPage: currentPage,
|
|
4312
|
+
limit: limit,
|
|
4313
|
+
totalPages: totalPages,
|
|
4314
|
+
nextRecords: paginatedData
|
|
4315
|
+
}
|
|
4316
|
+
});
|
|
4317
|
+
}, [filters, currentPage, limit, onFetch]);
|
|
4260
4318
|
useEffect(function () {
|
|
4261
4319
|
if (!onFetch && isValidList(data)) setTableData(data);
|
|
4262
4320
|
}, [data, onFetch]);
|
|
4263
4321
|
|
|
4264
|
-
//
|
|
4322
|
+
// Global search
|
|
4265
4323
|
useEffect(function () {
|
|
4266
4324
|
setSearchInput(filters.global || "");
|
|
4267
4325
|
}, [filters.global]);
|
|
4268
4326
|
var applyGlobalSearch = function applyGlobalSearch() {
|
|
4269
|
-
// apply filter only when user clicks Search or presses Enter
|
|
4270
4327
|
handleFilter("global", searchInput);
|
|
4271
4328
|
};
|
|
4272
4329
|
var onGlobalKeyDown = function onGlobalKeyDown(e) {
|
|
@@ -4285,38 +4342,274 @@ var Table = function Table(_ref) {
|
|
|
4285
4342
|
onLimitChange === null || onLimitChange === void 0 || onLimitChange(parsed);
|
|
4286
4343
|
};
|
|
4287
4344
|
|
|
4288
|
-
//
|
|
4345
|
+
// Render mobile card
|
|
4346
|
+
var renderMobileCard = function renderMobileCard(row, rowIndexInPage) {
|
|
4347
|
+
var globalIndex = startIndex + rowIndexInPage;
|
|
4348
|
+
var key = getRowKey(row, globalIndex);
|
|
4349
|
+
var actionCellKey = "actions-".concat(key);
|
|
4350
|
+
var extraRowClass = typeof rowClass === "function" ? rowClass({
|
|
4351
|
+
row: row,
|
|
4352
|
+
rowIndex: globalIndex
|
|
4353
|
+
}) : "";
|
|
4354
|
+
var safeExtraRowClass = typeof extraRowClass === "string" ? extraRowClass.trim() : "";
|
|
4355
|
+
var stripeBg = stripedRows && !selectedRows.has(key) ? stripedColors[globalIndex % stripedColors.length] : undefined;
|
|
4356
|
+
return /*#__PURE__*/React__default.createElement("div", {
|
|
4357
|
+
key: key,
|
|
4358
|
+
style: stripeBg ? {
|
|
4359
|
+
backgroundColor: stripeBg
|
|
4360
|
+
} : undefined,
|
|
4361
|
+
className: cn$1("border rounded-lg mb-3 shadow-sm overflow-hidden transition-all duration-200", {
|
|
4362
|
+
"cursor-pointer": !!onRowClick,
|
|
4363
|
+
"bg-primary-50 border-primary-200": selectedRows.has(key),
|
|
4364
|
+
"hover:shadow-md": !selectedRows.has(key)
|
|
4365
|
+
}, safeExtraRowClass),
|
|
4366
|
+
onClick: function onClick() {
|
|
4367
|
+
return onRowClick === null || onRowClick === void 0 ? void 0 : onRowClick(row, globalIndex);
|
|
4368
|
+
}
|
|
4369
|
+
}, /*#__PURE__*/React__default.createElement("div", {
|
|
4370
|
+
className: "flex items-center justify-between p-4 border-b bg-gray-50"
|
|
4371
|
+
}, /*#__PURE__*/React__default.createElement("div", {
|
|
4372
|
+
className: "flex items-center gap-3"
|
|
4373
|
+
}, hasDetails && /*#__PURE__*/React__default.createElement("button", {
|
|
4374
|
+
onClick: function onClick(e) {
|
|
4375
|
+
e.stopPropagation();
|
|
4376
|
+
toggleExpandRow(row, rowIndexInPage);
|
|
4377
|
+
},
|
|
4378
|
+
"aria-expanded": expandedRows.has(key),
|
|
4379
|
+
className: "p-1 rounded hover:bg-gray-200"
|
|
4380
|
+
}, expandedRows.has(key) ? "▾" : "▸"), selectable && /*#__PURE__*/React__default.createElement("input", {
|
|
4381
|
+
type: "checkbox",
|
|
4382
|
+
className: "rounded border-gray-300 h-4 w-4",
|
|
4383
|
+
checked: selectedRows.has(key),
|
|
4384
|
+
onChange: function onChange(e) {
|
|
4385
|
+
e.stopPropagation();
|
|
4386
|
+
handleSelectRow(row, rowIndexInPage);
|
|
4387
|
+
},
|
|
4388
|
+
onClick: function onClick(e) {
|
|
4389
|
+
return e.stopPropagation();
|
|
4390
|
+
}
|
|
4391
|
+
}), showSerial && /*#__PURE__*/React__default.createElement("span", {
|
|
4392
|
+
className: "text-sm font-medium text-gray-600"
|
|
4393
|
+
}, "#", globalIndex + 1)), withAction && /*#__PURE__*/React__default.createElement("div", {
|
|
4394
|
+
className: "relative"
|
|
4395
|
+
}, /*#__PURE__*/React__default.createElement("button", {
|
|
4396
|
+
onClick: function onClick(e) {
|
|
4397
|
+
e.stopPropagation();
|
|
4398
|
+
toggleActions(e, actionCellKey, row);
|
|
4399
|
+
},
|
|
4400
|
+
"aria-expanded": openActionKey === actionCellKey,
|
|
4401
|
+
className: "p-1.5 rounded hover:bg-gray-200",
|
|
4402
|
+
title: "Actions"
|
|
4403
|
+
}, /*#__PURE__*/React__default.createElement(MoreVertical, {
|
|
4404
|
+
className: "h-4 w-4"
|
|
4405
|
+
})), actionAnchor && actionAnchor.key === actionCellKey && /*#__PURE__*/createPortal(/*#__PURE__*/React__default.createElement(ActionMenuPortal, {
|
|
4406
|
+
anchorElem: actionAnchor.elem,
|
|
4407
|
+
anchorRow: actionAnchor.row,
|
|
4408
|
+
actions: actionsToUse,
|
|
4409
|
+
onClose: function onClose() {
|
|
4410
|
+
setOpenActionKey(null);
|
|
4411
|
+
setActionAnchor(null);
|
|
4412
|
+
},
|
|
4413
|
+
onAction: function onAction(action) {
|
|
4414
|
+
handleOnAction(action, row);
|
|
4415
|
+
setOpenActionKey(null);
|
|
4416
|
+
setActionAnchor(null);
|
|
4417
|
+
},
|
|
4418
|
+
menuRef: actionMenuRef
|
|
4419
|
+
}), document.body))), /*#__PURE__*/React__default.createElement("div", {
|
|
4420
|
+
className: "p-4"
|
|
4421
|
+
}, visibleColumns.map(function (column, colIndex) {
|
|
4422
|
+
var extraCellClass = typeof cellClass === "function" ? cellClass({
|
|
4423
|
+
row: row,
|
|
4424
|
+
rowIndex: globalIndex,
|
|
4425
|
+
column: column,
|
|
4426
|
+
columnIndex: colIndex
|
|
4427
|
+
}) : "";
|
|
4428
|
+
var safeExtraCellClass = typeof extraCellClass === "string" ? extraCellClass.trim() : "";
|
|
4429
|
+
return /*#__PURE__*/React__default.createElement("div", {
|
|
4430
|
+
key: column.key,
|
|
4431
|
+
className: cn$1("flex justify-between items-center flex-row py-2 border-b last:border-b-0", safeExtraCellClass)
|
|
4432
|
+
}, /*#__PURE__*/React__default.createElement("div", {
|
|
4433
|
+
className: "text-xs font-medium text-gray-500 uppercase tracking-wide mb-1 sm:mb-0 sm:w-1/3 sm:pr-2"
|
|
4434
|
+
}, column.label), /*#__PURE__*/React__default.createElement("div", {
|
|
4435
|
+
className: "text-sm text-gray-900 sm:w-2/3 sm:pl-2 break-words"
|
|
4436
|
+
}, renderCell(column, row, globalIndex)));
|
|
4437
|
+
})), hasDetails && expandedRows.has(key) && DetailsComponent && /*#__PURE__*/React__default.createElement("div", {
|
|
4438
|
+
className: "border-t bg-gray-50 p-4"
|
|
4439
|
+
}, /*#__PURE__*/React__default.createElement(DetailsComponent, {
|
|
4440
|
+
row: row,
|
|
4441
|
+
index: globalIndex
|
|
4442
|
+
})));
|
|
4443
|
+
};
|
|
4444
|
+
|
|
4445
|
+
// Render mobile filters
|
|
4446
|
+
var renderMobileFilters = function renderMobileFilters() {
|
|
4447
|
+
return /*#__PURE__*/React__default.createElement("div", {
|
|
4448
|
+
className: "mb-4 p-3 bg-gray-50 rounded-lg"
|
|
4449
|
+
}, /*#__PURE__*/React__default.createElement("div", {
|
|
4450
|
+
className: "flex items-center justify-between mb-3"
|
|
4451
|
+
}, /*#__PURE__*/React__default.createElement("h3", {
|
|
4452
|
+
className: "text-sm font-medium text-gray-700"
|
|
4453
|
+
}, "Filters"), /*#__PURE__*/React__default.createElement("button", {
|
|
4454
|
+
onClick: function onClick() {
|
|
4455
|
+
return setShowMobileFilters(!showMobileFilters);
|
|
4456
|
+
},
|
|
4457
|
+
className: "text-xs text-gray-500 hover:text-gray-700"
|
|
4458
|
+
}, showMobileFilters ? "Hide" : "Show")), showMobileFilters && /*#__PURE__*/React__default.createElement("div", {
|
|
4459
|
+
className: "space-y-3"
|
|
4460
|
+
}, globalSearch && /*#__PURE__*/React__default.createElement("div", null, /*#__PURE__*/React__default.createElement("div", {
|
|
4461
|
+
className: "relative"
|
|
4462
|
+
}, /*#__PURE__*/React__default.createElement("input", {
|
|
4463
|
+
type: "text",
|
|
4464
|
+
placeholder: "Search...",
|
|
4465
|
+
className: "w-full rounded-md border border-gray-300 px-4 py-2 text-sm",
|
|
4466
|
+
value: searchInput,
|
|
4467
|
+
onChange: function onChange(e) {
|
|
4468
|
+
return setSearchInput(e.target.value);
|
|
4469
|
+
},
|
|
4470
|
+
onKeyDown: onGlobalKeyDown
|
|
4471
|
+
}), /*#__PURE__*/React__default.createElement(Search, {
|
|
4472
|
+
className: "absolute right-3 top-2.5 h-4 w-4 text-gray-400"
|
|
4473
|
+
}))), filterable && visibleColumns.map(function (column) {
|
|
4474
|
+
return /*#__PURE__*/React__default.createElement("div", {
|
|
4475
|
+
key: column.key
|
|
4476
|
+
}, /*#__PURE__*/React__default.createElement("label", {
|
|
4477
|
+
className: "block text-xs font-medium text-gray-600 mb-1"
|
|
4478
|
+
}, column.label), /*#__PURE__*/React__default.createElement("input", {
|
|
4479
|
+
type: "text",
|
|
4480
|
+
placeholder: "Filter ".concat(column.label),
|
|
4481
|
+
className: "w-full rounded-md border border-gray-300 px-3 py-2 text-sm",
|
|
4482
|
+
value: filters[column.key] || "",
|
|
4483
|
+
onChange: function onChange(e) {
|
|
4484
|
+
return handleFilter(column.key, e.target.value);
|
|
4485
|
+
}
|
|
4486
|
+
}));
|
|
4487
|
+
})));
|
|
4488
|
+
};
|
|
4489
|
+
|
|
4490
|
+
// Render
|
|
4289
4491
|
return /*#__PURE__*/React__default.createElement("div", {
|
|
4290
|
-
className: "w-full"
|
|
4291
|
-
},
|
|
4292
|
-
className: "
|
|
4492
|
+
className: "w-full border rounded-lg md:rounded-md bg-white"
|
|
4493
|
+
}, /*#__PURE__*/React__default.createElement("div", {
|
|
4494
|
+
className: "flex flex-col md:flex-row justify-between items-start md:items-center gap-3 p-4 border-b"
|
|
4495
|
+
}, /*#__PURE__*/React__default.createElement("div", {
|
|
4496
|
+
className: "flex flex-col sm:flex-row items-start sm:items-center gap-3 w-full md:w-auto"
|
|
4497
|
+
}, showReloadButton && /*#__PURE__*/React__default.createElement(React__default.Fragment, null, renderReloadButton ? typeof renderReloadButton === "function" ? renderReloadButton() : renderReloadButton : /*#__PURE__*/React__default.createElement("button", {
|
|
4498
|
+
type: "button",
|
|
4499
|
+
className: "px-4 py-2 bg-primary-100 flex items-center gap-2 rounded-lg md:rounded text-primary-700 hover:bg-primary-200 transition-colors",
|
|
4500
|
+
onClick: onReload
|
|
4501
|
+
}, /*#__PURE__*/React__default.createElement(RefreshCcw, {
|
|
4502
|
+
className: "size-4"
|
|
4503
|
+
}), /*#__PURE__*/React__default.createElement("span", {
|
|
4504
|
+
className: "hidden sm:inline"
|
|
4505
|
+
}, "Reload"))), showLimitSelector && /*#__PURE__*/React__default.createElement("div", {
|
|
4506
|
+
className: "flex items-center gap-2"
|
|
4507
|
+
}, /*#__PURE__*/React__default.createElement("label", {
|
|
4508
|
+
htmlFor: "pagination-limit",
|
|
4509
|
+
className: "text-sm text-gray-600 whitespace-nowrap"
|
|
4510
|
+
}, "Show"), /*#__PURE__*/React__default.createElement(Select, {
|
|
4511
|
+
options: Array.isArray(limitOptions) && limitOptions.length > 0 ? limitOptions.map(function (opt) {
|
|
4512
|
+
return {
|
|
4513
|
+
label: String(opt),
|
|
4514
|
+
value: opt
|
|
4515
|
+
};
|
|
4516
|
+
}) : [25, 50, 100].map(function (opt) {
|
|
4517
|
+
return {
|
|
4518
|
+
label: String(opt),
|
|
4519
|
+
value: opt
|
|
4520
|
+
};
|
|
4521
|
+
}),
|
|
4522
|
+
value: limit,
|
|
4523
|
+
allowClear: false,
|
|
4524
|
+
placeholder: "",
|
|
4525
|
+
onChange: function onChange(e) {
|
|
4526
|
+
return handleLimitChange(e);
|
|
4527
|
+
},
|
|
4528
|
+
className: "w-20 md:w-30"
|
|
4529
|
+
}), /*#__PURE__*/React__default.createElement("p", {
|
|
4530
|
+
className: "text-sm text-gray-600 whitespace-nowrap"
|
|
4531
|
+
}, "entries"))), /*#__PURE__*/React__default.createElement("div", {
|
|
4532
|
+
className: "flex flex-col sm:flex-row items-start sm:items-center gap-3 w-full md:w-auto"
|
|
4533
|
+
}, /*#__PURE__*/React__default.createElement("div", {
|
|
4534
|
+
className: "text-sm text-gray-700 whitespace-nowrap"
|
|
4535
|
+
}, filteredData.length === 0 ? 0 : startIndex + 1, " -", " ", Math.min(endIndex, filteredData.length), " of ", filteredData.length, " ", "results"), pagination && /*#__PURE__*/React__default.createElement("div", {
|
|
4536
|
+
className: "flex items-center gap-1"
|
|
4537
|
+
}, /*#__PURE__*/React__default.createElement("div", {
|
|
4538
|
+
className: "flex gap-1"
|
|
4539
|
+
}, /*#__PURE__*/React__default.createElement("button", {
|
|
4540
|
+
className: "rounded-lg md:rounded-md border border-gray-300 p-2 disabled:opacity-50 hover:bg-gray-50",
|
|
4541
|
+
disabled: currentPage === 1,
|
|
4542
|
+
onClick: function onClick() {
|
|
4543
|
+
return setCurrentPage(function (p) {
|
|
4544
|
+
return Math.max(1, p - 1);
|
|
4545
|
+
});
|
|
4546
|
+
},
|
|
4547
|
+
"aria-label": "Previous page"
|
|
4548
|
+
}, /*#__PURE__*/React__default.createElement(ChevronLeft, {
|
|
4549
|
+
className: "size-4 md:size-5 text-gray-800"
|
|
4550
|
+
})), /*#__PURE__*/React__default.createElement("button", {
|
|
4551
|
+
className: "rounded-lg md:rounded-md border border-gray-300 p-2 disabled:opacity-50 hover:bg-gray-50",
|
|
4552
|
+
disabled: currentPage === totalPages,
|
|
4553
|
+
onClick: function onClick() {
|
|
4554
|
+
return setCurrentPage(function (p) {
|
|
4555
|
+
return Math.min(totalPages, p + 1);
|
|
4556
|
+
});
|
|
4557
|
+
},
|
|
4558
|
+
"aria-label": "Next page"
|
|
4559
|
+
}, /*#__PURE__*/React__default.createElement(ChevronRight, {
|
|
4560
|
+
className: "size-4 md:size-5 text-gray-800"
|
|
4561
|
+
})))))), globalSearch && /*#__PURE__*/React__default.createElement("div", {
|
|
4562
|
+
className: "p-4 border-b"
|
|
4563
|
+
}, /*#__PURE__*/React__default.createElement("div", {
|
|
4564
|
+
className: "flex flex-col sm:flex-row items-start sm:items-center gap-2"
|
|
4293
4565
|
}, /*#__PURE__*/React__default.createElement("div", {
|
|
4294
4566
|
className: "relative w-full"
|
|
4295
4567
|
}, /*#__PURE__*/React__default.createElement("input", {
|
|
4296
4568
|
type: "text",
|
|
4297
|
-
placeholder: "
|
|
4298
|
-
className: "rounded-md border border-gray-300 px-4 py-3
|
|
4569
|
+
placeholder: "Search...",
|
|
4570
|
+
className: "w-full rounded-lg md:rounded-md border border-gray-300 px-4 py-3 md:py-2 text-sm flex-1 outline-none pr-12",
|
|
4299
4571
|
value: searchInput,
|
|
4300
4572
|
onChange: function onChange(e) {
|
|
4301
4573
|
return setSearchInput(e.target.value);
|
|
4302
|
-
}
|
|
4303
|
-
|
|
4304
|
-
onKeyDown: onGlobalKeyDown // apply on Enter
|
|
4574
|
+
},
|
|
4575
|
+
onKeyDown: onGlobalKeyDown
|
|
4305
4576
|
}), /*#__PURE__*/React__default.createElement("button", {
|
|
4306
|
-
onClick: applyGlobalSearch
|
|
4307
|
-
,
|
|
4308
|
-
className: "rounded-md border bg-secondary-100 border-gray-300 px-4 py-2 text-sm hover:bg-gray-100 absolute right-0 left-0 w-fit ml-auto h-full",
|
|
4577
|
+
onClick: applyGlobalSearch,
|
|
4578
|
+
className: "absolute right-2 top-1/2 transform -translate-y-1/2 p-2 rounded-lg hover:bg-gray-100",
|
|
4309
4579
|
title: "Search"
|
|
4310
4580
|
}, /*#__PURE__*/React__default.createElement(Search, {
|
|
4311
|
-
className: "text-gray-400"
|
|
4581
|
+
className: "h-4 w-4 text-gray-400"
|
|
4312
4582
|
}))), /*#__PURE__*/React__default.createElement("button", {
|
|
4313
4583
|
onClick: function onClick() {
|
|
4314
4584
|
setSearchInput("");
|
|
4315
4585
|
handleFilter("global", "");
|
|
4316
4586
|
},
|
|
4317
|
-
className: "rounded-md border border-gray-300
|
|
4318
|
-
|
|
4319
|
-
|
|
4587
|
+
className: "whitespace-nowrap rounded-lg md:rounded-md border border-gray-300 px-4 py-3 md:py-2 text-sm hover:bg-gray-100 w-full sm:w-auto"
|
|
4588
|
+
}, "Clear"))), filterable && isMobileView && renderMobileFilters(), showColumnMenu && /*#__PURE__*/React__default.createElement("div", {
|
|
4589
|
+
ref: columnMenuRef,
|
|
4590
|
+
className: "absolute right-4 mt-2 w-56 z-50 bg-white rounded-lg shadow-lg ring-1 ring-black ring-opacity-5 p-3 lg:block sm:block hidden",
|
|
4591
|
+
onClick: function onClick(e) {
|
|
4592
|
+
return e.stopPropagation();
|
|
4593
|
+
}
|
|
4594
|
+
}, /*#__PURE__*/React__default.createElement("p", {
|
|
4595
|
+
className: "text-sm font-medium text-center mb-2"
|
|
4596
|
+
}, "Show / hide columns"), /*#__PURE__*/React__default.createElement("div", {
|
|
4597
|
+
className: "max-h-56 overflow-auto"
|
|
4598
|
+
}, columnsState.map(function (col) {
|
|
4599
|
+
return /*#__PURE__*/React__default.createElement("label", {
|
|
4600
|
+
key: col.key,
|
|
4601
|
+
className: "flex cursor-pointer items-center gap-2 px-2 py-1.5 hover:bg-gray-50 rounded"
|
|
4602
|
+
}, /*#__PURE__*/React__default.createElement("input", {
|
|
4603
|
+
type: "checkbox",
|
|
4604
|
+
checked: col.isVisible !== false,
|
|
4605
|
+
onChange: function onChange() {
|
|
4606
|
+
return toggleColumnVisibility(col.key);
|
|
4607
|
+
},
|
|
4608
|
+
className: "rounded"
|
|
4609
|
+
}), /*#__PURE__*/React__default.createElement("span", {
|
|
4610
|
+
className: "text-sm font-normal"
|
|
4611
|
+
}, col.label));
|
|
4612
|
+
}))), !isMobileView && /*#__PURE__*/React__default.createElement("div", {
|
|
4320
4613
|
className: "overflow-x-auto"
|
|
4321
4614
|
}, /*#__PURE__*/React__default.createElement("table", _extends({
|
|
4322
4615
|
className: cn$1("min-w-full divide-y divide-gray-200", className)
|
|
@@ -4352,7 +4645,7 @@ var Table = function Table(_ref) {
|
|
|
4352
4645
|
className: cn$1("h-3 w-3", {
|
|
4353
4646
|
"text-primary-600": sortConfig.key === column.key && sortConfig.direction === "asc"
|
|
4354
4647
|
})
|
|
4355
|
-
}), /*#__PURE__*/React__default.createElement(ChevronDown, {
|
|
4648
|
+
}), /*#__PURE__*/React__default.createElement(ChevronDown$1, {
|
|
4356
4649
|
className: cn$1("h-3 w-3 -mt-1", {
|
|
4357
4650
|
"text-primary-600": sortConfig.key === column.key && sortConfig.direction === "desc"
|
|
4358
4651
|
})
|
|
@@ -4373,53 +4666,54 @@ var Table = function Table(_ref) {
|
|
|
4373
4666
|
className: "p-1 rounded hover:bg-gray-100"
|
|
4374
4667
|
}, /*#__PURE__*/React__default.createElement(MoreVertical, {
|
|
4375
4668
|
className: "h-4 w-4"
|
|
4376
|
-
})),
|
|
4377
|
-
ref: columnMenuRef,
|
|
4378
|
-
className: "absolute right-0 mt-2 w-56 z-50 bg-white rounded-md shadow-lg ring-1 ring-black ring-opacity-5 p-2",
|
|
4379
|
-
onClick: function onClick(e) {
|
|
4380
|
-
return e.stopPropagation();
|
|
4381
|
-
}
|
|
4382
|
-
}, /*#__PURE__*/React__default.createElement("p", {
|
|
4383
|
-
className: "text-sm font-normal text-center"
|
|
4384
|
-
}, "Show / hide columns"), /*#__PURE__*/React__default.createElement("div", {
|
|
4385
|
-
className: "max-h-56 overflow-auto"
|
|
4386
|
-
}, columnsState.map(function (col) {
|
|
4387
|
-
return /*#__PURE__*/React__default.createElement("label", {
|
|
4388
|
-
key: col.key,
|
|
4389
|
-
className: "flex cursor-pointer items-center gap-2 px-2 py-1 hover:bg-gray-50 rounded"
|
|
4390
|
-
}, /*#__PURE__*/React__default.createElement("input", {
|
|
4391
|
-
type: "checkbox",
|
|
4392
|
-
checked: col.isVisible !== false,
|
|
4393
|
-
onChange: function onChange() {
|
|
4394
|
-
return toggleColumnVisibility(col.key);
|
|
4395
|
-
}
|
|
4396
|
-
}), /*#__PURE__*/React__default.createElement("span", {
|
|
4397
|
-
className: "text-sm font-normal"
|
|
4398
|
-
}, col.label));
|
|
4399
|
-
}))))), withAction && /*#__PURE__*/React__default.createElement("th", {
|
|
4669
|
+
})))), withAction && /*#__PURE__*/React__default.createElement("th", {
|
|
4400
4670
|
className: "w-12 px-4 py-3"
|
|
4401
|
-
})), /*#__PURE__*/React__default.createElement("tr", null,
|
|
4671
|
+
})), filterable && /*#__PURE__*/React__default.createElement("tr", null, hasDetails && /*#__PURE__*/React__default.createElement("th", {
|
|
4672
|
+
className: "pb-4"
|
|
4673
|
+
}), showSerial && /*#__PURE__*/React__default.createElement("th", {
|
|
4674
|
+
className: "pb-4"
|
|
4675
|
+
}), selectable && /*#__PURE__*/React__default.createElement("th", {
|
|
4676
|
+
className: "pb-4"
|
|
4677
|
+
}), visibleColumns.map(function (column) {
|
|
4402
4678
|
return /*#__PURE__*/React__default.createElement("th", {
|
|
4403
|
-
className: "text-left pl-6 pb-4"
|
|
4404
|
-
}, /*#__PURE__*/React__default.createElement("input", {
|
|
4405
4679
|
key: column.key,
|
|
4680
|
+
className: "px-6 pb-4"
|
|
4681
|
+
}, /*#__PURE__*/React__default.createElement("input", {
|
|
4406
4682
|
type: "text",
|
|
4407
|
-
placeholder: "Filter ".concat(column.label
|
|
4408
|
-
className: "rounded-md border border-gray-300 px-3 py-1 text-sm
|
|
4683
|
+
placeholder: "Filter ".concat(column.label),
|
|
4684
|
+
className: "w-full rounded-md border border-gray-300 px-3 py-1.5 text-sm",
|
|
4409
4685
|
value: filters[column.key] || "",
|
|
4410
4686
|
onChange: function onChange(e) {
|
|
4411
4687
|
return handleFilter(column.key, e.target.value);
|
|
4412
4688
|
}
|
|
4413
4689
|
}));
|
|
4414
|
-
})
|
|
4690
|
+
}), /*#__PURE__*/React__default.createElement("th", {
|
|
4691
|
+
className: "pb-4"
|
|
4692
|
+
}), withAction && /*#__PURE__*/React__default.createElement("th", {
|
|
4693
|
+
className: "pb-4"
|
|
4694
|
+
}))), /*#__PURE__*/React__default.createElement("tbody", {
|
|
4415
4695
|
className: "divide-y divide-gray-200 bg-white"
|
|
4416
4696
|
}, loading ? /*#__PURE__*/React__default.createElement("tr", null, /*#__PURE__*/React__default.createElement("td", {
|
|
4417
4697
|
colSpan: visibleCount,
|
|
4418
|
-
className: "px-6 py-
|
|
4419
|
-
},
|
|
4698
|
+
className: "px-6 py-8 text-center"
|
|
4699
|
+
}, /*#__PURE__*/React__default.createElement("div", {
|
|
4700
|
+
className: "flex flex-col items-center gap-2"
|
|
4701
|
+
}, /*#__PURE__*/React__default.createElement("div", {
|
|
4702
|
+
className: "h-6 w-6 animate-spin rounded-full border-2 border-primary-600 border-t-transparent"
|
|
4703
|
+
}), /*#__PURE__*/React__default.createElement("span", {
|
|
4704
|
+
className: "text-sm text-gray-500"
|
|
4705
|
+
}, "Loading...")))) : paginatedData.length === 0 ? /*#__PURE__*/React__default.createElement("tr", null, /*#__PURE__*/React__default.createElement("td", {
|
|
4420
4706
|
colSpan: visibleCount,
|
|
4421
|
-
className: "px-6 py-
|
|
4422
|
-
},
|
|
4707
|
+
className: "px-6 py-8 text-center"
|
|
4708
|
+
}, /*#__PURE__*/React__default.createElement("div", {
|
|
4709
|
+
className: "flex flex-col items-center gap-2"
|
|
4710
|
+
}, /*#__PURE__*/React__default.createElement("div", {
|
|
4711
|
+
className: "text-gray-400"
|
|
4712
|
+
}, /*#__PURE__*/React__default.createElement(List, {
|
|
4713
|
+
className: "h-8 w-8"
|
|
4714
|
+
})), /*#__PURE__*/React__default.createElement("span", {
|
|
4715
|
+
className: "text-sm text-gray-500"
|
|
4716
|
+
}, "No results found.")))) : paginatedData.map(function (row, rowIndexInPage) {
|
|
4423
4717
|
var globalIndex = startIndex + rowIndexInPage;
|
|
4424
4718
|
var key = getRowKey(row, globalIndex);
|
|
4425
4719
|
var actionCellKey = "actions-".concat(key);
|
|
@@ -4428,9 +4722,13 @@ var Table = function Table(_ref) {
|
|
|
4428
4722
|
rowIndex: globalIndex
|
|
4429
4723
|
}) : "";
|
|
4430
4724
|
var safeExtraRowClass = typeof extraRowClass === "string" ? extraRowClass.trim() : "";
|
|
4725
|
+
var stripeBg = stripedRows && !selectedRows.has(key) ? stripedColors[globalIndex % stripedColors.length] : undefined;
|
|
4431
4726
|
return /*#__PURE__*/React__default.createElement(React__default.Fragment, {
|
|
4432
4727
|
key: key
|
|
4433
4728
|
}, /*#__PURE__*/React__default.createElement("tr", {
|
|
4729
|
+
style: stripeBg ? {
|
|
4730
|
+
backgroundColor: stripeBg
|
|
4731
|
+
} : undefined,
|
|
4434
4732
|
className: cn$1("hover:bg-gray-50", {
|
|
4435
4733
|
"cursor-pointer": !!onRowClick,
|
|
4436
4734
|
"bg-primary-50": selectedRows.has(key)
|
|
@@ -4471,9 +4769,7 @@ var Table = function Table(_ref) {
|
|
|
4471
4769
|
var safeExtraCellClass = typeof extraCellClass === "string" ? extraCellClass.trim() : "";
|
|
4472
4770
|
return /*#__PURE__*/React__default.createElement("td", {
|
|
4473
4771
|
key: column.key,
|
|
4474
|
-
className: cn$1("px-6 py-4 whitespace-nowrap text-sm text-gray-900",
|
|
4475
|
-
// append the cellClass string only if it's a string
|
|
4476
|
-
safeExtraCellClass)
|
|
4772
|
+
className: cn$1("px-6 py-4 whitespace-nowrap text-sm text-gray-900", safeExtraCellClass)
|
|
4477
4773
|
}, renderCell(column, row, globalIndex));
|
|
4478
4774
|
}), withAction && /*#__PURE__*/React__default.createElement("td", {
|
|
4479
4775
|
className: "px-4 py-4 text-sm text-right",
|
|
@@ -4493,6 +4789,7 @@ var Table = function Table(_ref) {
|
|
|
4493
4789
|
className: "h-4 w-4"
|
|
4494
4790
|
}))), actionAnchor && actionAnchor.key === actionCellKey && /*#__PURE__*/createPortal(/*#__PURE__*/React__default.createElement(ActionMenuPortal, {
|
|
4495
4791
|
anchorElem: actionAnchor.elem,
|
|
4792
|
+
anchorRow: actionAnchor.row,
|
|
4496
4793
|
actions: actionsToUse,
|
|
4497
4794
|
onClose: function onClose() {
|
|
4498
4795
|
setOpenActionKey(null);
|
|
@@ -4511,62 +4808,71 @@ var Table = function Table(_ref) {
|
|
|
4511
4808
|
row: row,
|
|
4512
4809
|
index: globalIndex
|
|
4513
4810
|
})))));
|
|
4514
|
-
})))),
|
|
4515
|
-
className: "
|
|
4811
|
+
})))), isMobileView && /*#__PURE__*/React__default.createElement("div", {
|
|
4812
|
+
className: "p-4"
|
|
4813
|
+
}, loading ? /*#__PURE__*/React__default.createElement("div", {
|
|
4814
|
+
className: "py-8 text-center"
|
|
4815
|
+
}, /*#__PURE__*/React__default.createElement("div", {
|
|
4816
|
+
className: "flex flex-col items-center gap-2"
|
|
4817
|
+
}, /*#__PURE__*/React__default.createElement("div", {
|
|
4818
|
+
className: "h-6 w-6 animate-spin rounded-full border-2 border-primary-600 border-t-transparent"
|
|
4819
|
+
}), /*#__PURE__*/React__default.createElement("span", {
|
|
4820
|
+
className: "text-sm text-gray-500"
|
|
4821
|
+
}, "Loading..."))) : paginatedData.length === 0 ? /*#__PURE__*/React__default.createElement("div", {
|
|
4822
|
+
className: "py-8 text-center"
|
|
4823
|
+
}, /*#__PURE__*/React__default.createElement("div", {
|
|
4824
|
+
className: "flex flex-col items-center gap-2"
|
|
4825
|
+
}, /*#__PURE__*/React__default.createElement("div", {
|
|
4826
|
+
className: "text-gray-400"
|
|
4827
|
+
}, /*#__PURE__*/React__default.createElement(List, {
|
|
4828
|
+
className: "h-8 w-8"
|
|
4829
|
+
})), /*#__PURE__*/React__default.createElement("span", {
|
|
4830
|
+
className: "text-sm text-gray-500"
|
|
4831
|
+
}, "No results found."))) : paginatedData.map(function (row, rowIndexInPage) {
|
|
4832
|
+
return renderMobileCard(row, rowIndexInPage);
|
|
4833
|
+
})), pagination && /*#__PURE__*/React__default.createElement("div", {
|
|
4834
|
+
className: "p-4 border-t"
|
|
4835
|
+
}, /*#__PURE__*/React__default.createElement("div", {
|
|
4836
|
+
className: "flex flex-col sm:flex-row items-center justify-between gap-3"
|
|
4516
4837
|
}, /*#__PURE__*/React__default.createElement("div", {
|
|
4517
|
-
className: "text-sm text-gray-700"
|
|
4518
|
-
}, "Showing ", filteredData.length === 0 ? 0 : startIndex + 1, " to", " ", Math.min(endIndex, filteredData.length), " of ", filteredData.length, " ", "results"), /*#__PURE__*/React__default.createElement("div", {
|
|
4519
|
-
className: "flex items-center gap-1"
|
|
4520
|
-
}, showLimitSelector && /*#__PURE__*/React__default.createElement("div", {
|
|
4521
|
-
className: "flex items-center space-x-2"
|
|
4522
|
-
}, /*#__PURE__*/React__default.createElement("label", {
|
|
4523
|
-
htmlFor: "pagination-limit",
|
|
4524
4838
|
className: "text-sm text-gray-600"
|
|
4525
|
-
}, "
|
|
4526
|
-
|
|
4527
|
-
return {
|
|
4528
|
-
label: String(opt),
|
|
4529
|
-
value: opt
|
|
4530
|
-
};
|
|
4531
|
-
}) : [25, 50, 100].map(function (opt) {
|
|
4532
|
-
return {
|
|
4533
|
-
label: String(opt),
|
|
4534
|
-
value: opt
|
|
4535
|
-
};
|
|
4536
|
-
}),
|
|
4537
|
-
value: limit,
|
|
4538
|
-
allowClear: false,
|
|
4539
|
-
onChange: function onChange(e) {
|
|
4540
|
-
return handleLimitChange(e);
|
|
4541
|
-
},
|
|
4542
|
-
className: "w-20"
|
|
4543
|
-
})), /*#__PURE__*/React__default.createElement("div", {
|
|
4544
|
-
className: "flex gap-1"
|
|
4839
|
+
}, "Page ", currentPage, " of ", totalPages), /*#__PURE__*/React__default.createElement("div", {
|
|
4840
|
+
className: "flex items-center gap-2"
|
|
4545
4841
|
}, /*#__PURE__*/React__default.createElement("button", {
|
|
4546
|
-
className: "rounded-md border border-gray-300 px-
|
|
4842
|
+
className: "rounded-lg md:rounded-md border border-gray-300 px-4 py-2 text-sm disabled:opacity-50 hover:bg-gray-50",
|
|
4547
4843
|
disabled: currentPage === 1,
|
|
4548
4844
|
onClick: function onClick() {
|
|
4549
4845
|
return setCurrentPage(function (p) {
|
|
4550
4846
|
return Math.max(1, p - 1);
|
|
4551
4847
|
});
|
|
4552
4848
|
}
|
|
4553
|
-
}, "Previous"),
|
|
4554
|
-
|
|
4849
|
+
}, "Previous"), /*#__PURE__*/React__default.createElement("div", {
|
|
4850
|
+
className: "flex items-center gap-1"
|
|
4851
|
+
}, Array.from({
|
|
4852
|
+
length: Math.min(5, totalPages)
|
|
4555
4853
|
}, function (_, i) {
|
|
4556
|
-
|
|
4557
|
-
|
|
4854
|
+
var pageNum;
|
|
4855
|
+
if (totalPages <= 5) {
|
|
4856
|
+
pageNum = i + 1;
|
|
4857
|
+
} else if (currentPage <= 3) {
|
|
4858
|
+
pageNum = i + 1;
|
|
4859
|
+
} else if (currentPage >= totalPages - 2) {
|
|
4860
|
+
pageNum = totalPages - 4 + i;
|
|
4861
|
+
} else {
|
|
4862
|
+
pageNum = currentPage - 2 + i;
|
|
4863
|
+
}
|
|
4558
4864
|
return /*#__PURE__*/React__default.createElement("button", {
|
|
4559
|
-
key:
|
|
4560
|
-
className: cn$1("
|
|
4561
|
-
"bg-primary-600 text-white":
|
|
4562
|
-
"border border-gray-300":
|
|
4865
|
+
key: pageNum,
|
|
4866
|
+
className: cn$1("h-8 w-8 rounded-lg md:rounded-md text-sm", {
|
|
4867
|
+
"bg-primary-600 text-white": pageNum === currentPage,
|
|
4868
|
+
"border border-gray-300 hover:bg-gray-50": pageNum !== currentPage
|
|
4563
4869
|
}),
|
|
4564
4870
|
onClick: function onClick() {
|
|
4565
|
-
return setCurrentPage(
|
|
4871
|
+
return setCurrentPage(pageNum);
|
|
4566
4872
|
}
|
|
4567
|
-
},
|
|
4568
|
-
}), /*#__PURE__*/React__default.createElement("button", {
|
|
4569
|
-
className: "rounded-md border border-gray-300 px-
|
|
4873
|
+
}, pageNum);
|
|
4874
|
+
})), /*#__PURE__*/React__default.createElement("button", {
|
|
4875
|
+
className: "rounded-lg md:rounded-md border border-gray-300 px-4 py-2 text-sm disabled:opacity-50 hover:bg-gray-50",
|
|
4570
4876
|
disabled: currentPage === totalPages,
|
|
4571
4877
|
onClick: function onClick() {
|
|
4572
4878
|
return setCurrentPage(function (p) {
|
|
@@ -4576,7 +4882,7 @@ var Table = function Table(_ref) {
|
|
|
4576
4882
|
}, "Next")))));
|
|
4577
4883
|
};
|
|
4578
4884
|
|
|
4579
|
-
/* ---------------- ActionMenuPortal (
|
|
4885
|
+
/* ---------------- ActionMenuPortal (updated for mobile) ---------------- */
|
|
4580
4886
|
function ActionMenuPortal(_ref4) {
|
|
4581
4887
|
var anchorElem = _ref4.anchorElem,
|
|
4582
4888
|
anchorRow = _ref4.anchorRow,
|
|
@@ -4585,10 +4891,10 @@ function ActionMenuPortal(_ref4) {
|
|
|
4585
4891
|
_ref4.onClose;
|
|
4586
4892
|
var onAction = _ref4.onAction,
|
|
4587
4893
|
menuRef = _ref4.menuRef;
|
|
4588
|
-
var
|
|
4589
|
-
|
|
4590
|
-
setTick =
|
|
4591
|
-
var
|
|
4894
|
+
var _useState29 = useState(0),
|
|
4895
|
+
_useState30 = _slicedToArray(_useState29, 2),
|
|
4896
|
+
setTick = _useState30[1];
|
|
4897
|
+
var _useState31 = useState({
|
|
4592
4898
|
left: 0,
|
|
4593
4899
|
top: 0,
|
|
4594
4900
|
transformOrigin: "top right",
|
|
@@ -4596,9 +4902,9 @@ function ActionMenuPortal(_ref4) {
|
|
|
4596
4902
|
width: 180,
|
|
4597
4903
|
opacity: 0
|
|
4598
4904
|
}),
|
|
4599
|
-
|
|
4600
|
-
style =
|
|
4601
|
-
setStyle =
|
|
4905
|
+
_useState32 = _slicedToArray(_useState31, 2),
|
|
4906
|
+
style = _useState32[0],
|
|
4907
|
+
setStyle = _useState32[1];
|
|
4602
4908
|
var menuWidth = 180;
|
|
4603
4909
|
var maxMenuHeight = 320;
|
|
4604
4910
|
var computePosition = function computePosition() {
|
|
@@ -4645,7 +4951,6 @@ function ActionMenuPortal(_ref4) {
|
|
|
4645
4951
|
window.removeEventListener("resize", onScrollOrResize);
|
|
4646
4952
|
window.removeEventListener("scroll", onScrollOrResize, true);
|
|
4647
4953
|
};
|
|
4648
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
4649
4954
|
}, [anchorElem]);
|
|
4650
4955
|
return /*#__PURE__*/createPortal(/*#__PURE__*/React__default.createElement("div", {
|
|
4651
4956
|
ref: menuRef,
|
|
@@ -4656,7 +4961,7 @@ function ActionMenuPortal(_ref4) {
|
|
|
4656
4961
|
maxHeight: style.maxHeight,
|
|
4657
4962
|
transformOrigin: style.transformOrigin
|
|
4658
4963
|
},
|
|
4659
|
-
className: "absolute z-50 bg-white rounded-
|
|
4964
|
+
className: "absolute z-50 bg-white rounded-lg shadow-lg ring-1 ring-black ring-opacity-5 overflow-y-auto transition-opacity duration-150 ease-out",
|
|
4660
4965
|
onClick: function onClick(e) {
|
|
4661
4966
|
return e.stopPropagation();
|
|
4662
4967
|
}
|
|
@@ -15241,7 +15546,7 @@ var Sidebar = function Sidebar(_ref2) {
|
|
|
15241
15546
|
className: "flex-1 truncate"
|
|
15242
15547
|
}, item.label), hasChildren && /*#__PURE__*/React__default.createElement("span", {
|
|
15243
15548
|
className: "ml-2 flex-shrink-0"
|
|
15244
|
-
}, isExpanded ? /*#__PURE__*/React__default.createElement(
|
|
15549
|
+
}, isExpanded ? /*#__PURE__*/React__default.createElement(ChevronDown, {
|
|
15245
15550
|
className: "h-4 w-4"
|
|
15246
15551
|
}) : /*#__PURE__*/React__default.createElement(ChevronRight, {
|
|
15247
15552
|
className: "h-4 w-4"
|