@dreamtree-org/twreact-ui 1.0.87 → 1.0.89
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 +857 -692
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +1650 -1485
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.esm.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import * as React from 'react';
|
|
2
|
-
import React__default, { forwardRef, createElement, useId, useRef, useState, useEffect, useImperativeHandle, useMemo,
|
|
1
|
+
import * as React$1 from 'react';
|
|
2
|
+
import React__default, { forwardRef, createElement, useId, useRef, useState, useEffect, useImperativeHandle, useMemo, memo, useLayoutEffect, useCallback, createContext, useContext, cloneElement, PureComponent } from 'react';
|
|
3
3
|
import ReactDOM, { createPortal } from 'react-dom';
|
|
4
4
|
|
|
5
5
|
function _extends() {
|
|
@@ -3346,8 +3346,8 @@ function _defineProperty$4(e, r, t) {
|
|
|
3346
3346
|
}
|
|
3347
3347
|
|
|
3348
3348
|
var _excluded$l = ["options", "value", "onChange", "placeholder", "label", "error", "disabled", "required", "multiSelect", "searchable", "grouped", "onMenuItemRender", "className", "allowClear", "creatable", "onCreateOption", "onSearch", "loading", "selectAllOption", "closeOnSelect", "maxTagCount", "renderGroupLabel", "name"];
|
|
3349
|
-
function ownKeys$
|
|
3350
|
-
function _objectSpread$
|
|
3349
|
+
function ownKeys$b(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; }
|
|
3350
|
+
function _objectSpread$b(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$b(Object(t), true).forEach(function (r) { _defineProperty$4(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$b(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
3351
3351
|
|
|
3352
3352
|
/**
|
|
3353
3353
|
* Enhanced Select component (debounce removed)
|
|
@@ -3370,7 +3370,7 @@ var flattenGroups = function flattenGroups() {
|
|
|
3370
3370
|
return groups.reduce(function (acc, g) {
|
|
3371
3371
|
var groupLabel = g.label;
|
|
3372
3372
|
g.options.forEach(function (opt) {
|
|
3373
|
-
return acc.push(_objectSpread$
|
|
3373
|
+
return acc.push(_objectSpread$b(_objectSpread$b({}, opt), {}, {
|
|
3374
3374
|
_group: groupLabel
|
|
3375
3375
|
}));
|
|
3376
3376
|
});
|
|
@@ -3460,7 +3460,7 @@ var Select = /*#__PURE__*/React__default.forwardRef(function (_ref, forwardedRef
|
|
|
3460
3460
|
var flatOptions = useMemo(function () {
|
|
3461
3461
|
if (grouped) return flattenGroups(options);
|
|
3462
3462
|
return options.map(function (opt) {
|
|
3463
|
-
return _objectSpread$
|
|
3463
|
+
return _objectSpread$b({}, opt);
|
|
3464
3464
|
});
|
|
3465
3465
|
}, [options, grouped]);
|
|
3466
3466
|
var selectedValues = multiSelect ? Array.isArray(value) ? value : [] : value;
|
|
@@ -3487,7 +3487,7 @@ var Select = /*#__PURE__*/React__default.forwardRef(function (_ref, forwardedRef
|
|
|
3487
3487
|
}
|
|
3488
3488
|
if (grouped) {
|
|
3489
3489
|
return options.map(function (g) {
|
|
3490
|
-
return _objectSpread$
|
|
3490
|
+
return _objectSpread$b(_objectSpread$b({}, g), {}, {
|
|
3491
3491
|
options: g.options.filter(function (o) {
|
|
3492
3492
|
return o.label.toLowerCase().includes(searchTerm.toLowerCase());
|
|
3493
3493
|
})
|
|
@@ -3714,7 +3714,7 @@ var Select = /*#__PURE__*/React__default.forwardRef(function (_ref, forwardedRef
|
|
|
3714
3714
|
className: "text-xs border border-slate-200 p-0.5 rounded-md cursor-pointer hover:bg-gray-100",
|
|
3715
3715
|
onClick: function onClick() {
|
|
3716
3716
|
return setCollapsedGroups(function (prev) {
|
|
3717
|
-
return _objectSpread$
|
|
3717
|
+
return _objectSpread$b(_objectSpread$b({}, prev), {}, _defineProperty$4({}, group.label, !prev[group.label]));
|
|
3718
3718
|
});
|
|
3719
3719
|
}
|
|
3720
3720
|
}, /*#__PURE__*/React__default.createElement(ChevronDown, {
|
|
@@ -3901,18 +3901,13 @@ var Select = /*#__PURE__*/React__default.forwardRef(function (_ref, forwardedRef
|
|
|
3901
3901
|
}, error));
|
|
3902
3902
|
});
|
|
3903
3903
|
|
|
3904
|
-
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", "serverSide", "totalRecords", "pageNumber"];
|
|
3905
|
-
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; }
|
|
3906
|
-
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; }
|
|
3907
|
-
|
|
3908
|
-
// Move static default actions outside component to prevent recreation
|
|
3909
3904
|
var DEFAULT_ACTIONS = [{
|
|
3910
3905
|
name: "edit",
|
|
3911
3906
|
label: "Edit",
|
|
3912
3907
|
onClick: function onClick() {
|
|
3913
3908
|
return console.log("Edit action clicked");
|
|
3914
3909
|
},
|
|
3915
|
-
icon: /*#__PURE__*/
|
|
3910
|
+
icon: /*#__PURE__*/React.createElement(PenSquare, {
|
|
3916
3911
|
size: 16
|
|
3917
3912
|
})
|
|
3918
3913
|
}, {
|
|
@@ -3921,7 +3916,7 @@ var DEFAULT_ACTIONS = [{
|
|
|
3921
3916
|
onClick: function onClick() {
|
|
3922
3917
|
return console.log("Delete action clicked");
|
|
3923
3918
|
},
|
|
3924
|
-
icon: /*#__PURE__*/
|
|
3919
|
+
icon: /*#__PURE__*/React.createElement(Trash, {
|
|
3925
3920
|
size: 16
|
|
3926
3921
|
})
|
|
3927
3922
|
}, {
|
|
@@ -3930,12 +3925,50 @@ var DEFAULT_ACTIONS = [{
|
|
|
3930
3925
|
onClick: function onClick() {
|
|
3931
3926
|
return console.log("View action clicked");
|
|
3932
3927
|
},
|
|
3933
|
-
icon: /*#__PURE__*/
|
|
3928
|
+
icon: /*#__PURE__*/React.createElement(Eye, {
|
|
3934
3929
|
size: 16
|
|
3935
3930
|
})
|
|
3936
3931
|
}];
|
|
3937
3932
|
|
|
3938
|
-
|
|
3933
|
+
/**
|
|
3934
|
+
* Generate a unique key for a row based on id, _id, or index
|
|
3935
|
+
*/
|
|
3936
|
+
var getRowKey = function getRowKey(row, globalIndex) {
|
|
3937
|
+
if (row == null) return String(globalIndex);
|
|
3938
|
+
if (row.id !== undefined && row.id !== null) return String(row.id);
|
|
3939
|
+
if (row._id !== undefined && row._id !== null) return String(row._id);
|
|
3940
|
+
return String(globalIndex);
|
|
3941
|
+
};
|
|
3942
|
+
|
|
3943
|
+
/**
|
|
3944
|
+
* Custom hook to detect clicks outside of specified refs
|
|
3945
|
+
* @param {Array} refs - Array of React refs to check
|
|
3946
|
+
* @param {boolean} isActive - Whether the hook should be active
|
|
3947
|
+
* @param {Function} onClickOutside - Callback when click is detected outside
|
|
3948
|
+
*/
|
|
3949
|
+
function useClickOutside(refs, isActive, onClickOutside) {
|
|
3950
|
+
useEffect(function () {
|
|
3951
|
+
if (!isActive) return;
|
|
3952
|
+
var handler = function handler(e) {
|
|
3953
|
+
var isOutside = refs.every(function (ref) {
|
|
3954
|
+
return !ref.current || !ref.current.contains(e.target);
|
|
3955
|
+
});
|
|
3956
|
+
if (isOutside) onClickOutside();
|
|
3957
|
+
};
|
|
3958
|
+
document.addEventListener("mousedown", handler, true);
|
|
3959
|
+
return function () {
|
|
3960
|
+
return document.removeEventListener("mousedown", handler, true);
|
|
3961
|
+
};
|
|
3962
|
+
}, [refs, isActive, onClickOutside]);
|
|
3963
|
+
}
|
|
3964
|
+
|
|
3965
|
+
function ownKeys$a(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; }
|
|
3966
|
+
function _objectSpread$a(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$a(Object(t), true).forEach(function (r) { _defineProperty$4(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$a(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
3967
|
+
|
|
3968
|
+
/**
|
|
3969
|
+
* Action menu dropdown component for table row actions
|
|
3970
|
+
* Uses fixed positioning with smart placement above/below anchor
|
|
3971
|
+
*/
|
|
3939
3972
|
var ActionMenu = /*#__PURE__*/memo(function ActionMenu(_ref) {
|
|
3940
3973
|
var _ref$actions = _ref.actions,
|
|
3941
3974
|
actions = _ref$actions === void 0 ? [] : _ref$actions,
|
|
@@ -3952,12 +3985,10 @@ var ActionMenu = /*#__PURE__*/memo(function ActionMenu(_ref) {
|
|
|
3952
3985
|
_useState2 = _slicedToArray(_useState, 2),
|
|
3953
3986
|
pos = _useState2[0],
|
|
3954
3987
|
setPos = _useState2[1];
|
|
3955
|
-
|
|
3956
|
-
// compute position after mount / when anchor changes
|
|
3957
3988
|
useLayoutEffect(function () {
|
|
3958
3989
|
if (!anchorEl || !(menuRef !== null && menuRef !== void 0 && menuRef.current) || typeof window === "undefined") {
|
|
3959
3990
|
setPos(function (p) {
|
|
3960
|
-
return _objectSpread$
|
|
3991
|
+
return _objectSpread$a(_objectSpread$a({}, p), {}, {
|
|
3961
3992
|
visibility: "hidden"
|
|
3962
3993
|
});
|
|
3963
3994
|
});
|
|
@@ -3965,30 +3996,29 @@ var ActionMenu = /*#__PURE__*/memo(function ActionMenu(_ref) {
|
|
|
3965
3996
|
}
|
|
3966
3997
|
var menu = menuRef.current;
|
|
3967
3998
|
var rect = anchorEl.getBoundingClientRect();
|
|
3968
|
-
var menuWidth = menu.offsetWidth || 176;
|
|
3999
|
+
var menuWidth = menu.offsetWidth || 176;
|
|
3969
4000
|
var menuHeight = menu.offsetHeight || menu.scrollHeight || 200;
|
|
3970
4001
|
var viewportWidth = window.innerWidth;
|
|
3971
4002
|
var viewportHeight = window.innerHeight;
|
|
3972
4003
|
var scrollX = window.scrollX || window.pageXOffset || 0;
|
|
3973
4004
|
var scrollY = window.scrollY || window.pageYOffset || 0;
|
|
3974
|
-
|
|
3975
|
-
// prefer placing below the button
|
|
3976
4005
|
var preferBelowTop = rect.bottom + scrollY + 6;
|
|
3977
4006
|
var preferAboveTop = rect.top + scrollY - menuHeight - 6;
|
|
3978
4007
|
|
|
3979
|
-
//
|
|
4008
|
+
// Calculate horizontal position
|
|
3980
4009
|
var left = rect.right + scrollX - menuWidth;
|
|
3981
4010
|
if (left < 8) left = 8;
|
|
3982
|
-
if (left + menuWidth > viewportWidth - 8)
|
|
4011
|
+
if (left + menuWidth > viewportWidth - 8) {
|
|
4012
|
+
left = Math.max(8, viewportWidth - menuWidth - 8);
|
|
4013
|
+
}
|
|
3983
4014
|
|
|
3984
|
-
//
|
|
4015
|
+
// Calculate vertical position
|
|
3985
4016
|
var top;
|
|
3986
4017
|
if (preferBelowTop + menuHeight <= scrollY + viewportHeight - 8) {
|
|
3987
4018
|
top = preferBelowTop;
|
|
3988
4019
|
} else if (preferAboveTop >= scrollY + 8) {
|
|
3989
4020
|
top = preferAboveTop;
|
|
3990
4021
|
} else {
|
|
3991
|
-
// fallback: clamp inside viewport
|
|
3992
4022
|
top = Math.max(scrollY + 8, Math.min(preferBelowTop, scrollY + viewportHeight - menuHeight - 8));
|
|
3993
4023
|
}
|
|
3994
4024
|
setPos({
|
|
@@ -4004,7 +4034,7 @@ var ActionMenu = /*#__PURE__*/memo(function ActionMenu(_ref) {
|
|
|
4004
4034
|
top: pos.top,
|
|
4005
4035
|
left: pos.left,
|
|
4006
4036
|
visibility: pos.visibility,
|
|
4007
|
-
minWidth: 176
|
|
4037
|
+
minWidth: 176
|
|
4008
4038
|
},
|
|
4009
4039
|
onClick: function onClick(e) {
|
|
4010
4040
|
return e.stopPropagation();
|
|
@@ -4030,240 +4060,703 @@ var ActionMenu = /*#__PURE__*/memo(function ActionMenu(_ref) {
|
|
|
4030
4060
|
})));
|
|
4031
4061
|
});
|
|
4032
4062
|
|
|
4033
|
-
|
|
4034
|
-
|
|
4035
|
-
|
|
4036
|
-
|
|
4037
|
-
var handler = function handler(e) {
|
|
4038
|
-
var isOutside = refs.every(function (ref) {
|
|
4039
|
-
return !ref.current || !ref.current.contains(e.target);
|
|
4040
|
-
});
|
|
4041
|
-
if (isOutside) onClickOutside();
|
|
4042
|
-
};
|
|
4063
|
+
/**
|
|
4064
|
+
* Pagination controls component for the table
|
|
4065
|
+
* Supports both header (icon-only) and footer (with page numbers) variants
|
|
4066
|
+
*/
|
|
4043
4067
|
|
|
4044
|
-
|
|
4045
|
-
|
|
4046
|
-
|
|
4047
|
-
|
|
4048
|
-
|
|
4049
|
-
|
|
4068
|
+
// Header pagination (compact, icon-based)
|
|
4069
|
+
function PaginationHeader(_ref) {
|
|
4070
|
+
var currentPage = _ref.currentPage,
|
|
4071
|
+
totalPages = _ref.totalPages,
|
|
4072
|
+
onPageChange = _ref.onPageChange;
|
|
4073
|
+
return /*#__PURE__*/React__default.createElement("div", {
|
|
4074
|
+
className: "flex items-center gap-1"
|
|
4075
|
+
}, totalPages >= 4 && /*#__PURE__*/React__default.createElement("button", {
|
|
4076
|
+
className: "rounded-lg md:rounded-md border border-gray-300 p-2 disabled:opacity-50 hover:bg-gray-50",
|
|
4077
|
+
disabled: currentPage === 1,
|
|
4078
|
+
onClick: function onClick() {
|
|
4079
|
+
return onPageChange(1);
|
|
4080
|
+
},
|
|
4081
|
+
"aria-label": "First page"
|
|
4082
|
+
}, /*#__PURE__*/React__default.createElement(ChevronsLeft, {
|
|
4083
|
+
className: "size-4 md:size-5 text-gray-800"
|
|
4084
|
+
})), /*#__PURE__*/React__default.createElement("button", {
|
|
4085
|
+
className: "rounded-lg md:rounded-md border border-gray-300 p-2 disabled:opacity-50 hover:bg-gray-50",
|
|
4086
|
+
disabled: currentPage === 1,
|
|
4087
|
+
onClick: function onClick() {
|
|
4088
|
+
return onPageChange(Math.max(1, currentPage - 1));
|
|
4089
|
+
},
|
|
4090
|
+
"aria-label": "Previous page"
|
|
4091
|
+
}, /*#__PURE__*/React__default.createElement(ChevronLeft, {
|
|
4092
|
+
className: "size-4 md:size-5 text-gray-800"
|
|
4093
|
+
})), /*#__PURE__*/React__default.createElement("button", {
|
|
4094
|
+
className: "rounded-lg md:rounded-md border border-gray-300 p-2 disabled:opacity-50 hover:bg-gray-50",
|
|
4095
|
+
disabled: currentPage === totalPages,
|
|
4096
|
+
onClick: function onClick() {
|
|
4097
|
+
return onPageChange(Math.min(totalPages, currentPage + 1));
|
|
4098
|
+
},
|
|
4099
|
+
"aria-label": "Next page"
|
|
4100
|
+
}, /*#__PURE__*/React__default.createElement(ChevronRight, {
|
|
4101
|
+
className: "size-4 md:size-5 text-gray-800"
|
|
4102
|
+
})), totalPages >= 4 && /*#__PURE__*/React__default.createElement("button", {
|
|
4103
|
+
className: "rounded-lg md:rounded-md border border-gray-300 p-2 disabled:opacity-50 hover:bg-gray-50",
|
|
4104
|
+
disabled: currentPage === totalPages,
|
|
4105
|
+
onClick: function onClick() {
|
|
4106
|
+
return onPageChange(totalPages);
|
|
4107
|
+
},
|
|
4108
|
+
"aria-label": "Last page"
|
|
4109
|
+
}, /*#__PURE__*/React__default.createElement(ChevronsRight, {
|
|
4110
|
+
className: "size-4 md:size-5 text-gray-800"
|
|
4111
|
+
})));
|
|
4050
4112
|
}
|
|
4051
4113
|
|
|
4052
|
-
//
|
|
4053
|
-
|
|
4054
|
-
|
|
4055
|
-
|
|
4056
|
-
|
|
4057
|
-
|
|
4058
|
-
|
|
4059
|
-
|
|
4060
|
-
|
|
4061
|
-
|
|
4062
|
-
|
|
4063
|
-
|
|
4064
|
-
|
|
4065
|
-
|
|
4066
|
-
|
|
4067
|
-
|
|
4068
|
-
|
|
4069
|
-
|
|
4070
|
-
|
|
4071
|
-
|
|
4072
|
-
|
|
4073
|
-
|
|
4074
|
-
|
|
4075
|
-
|
|
4076
|
-
|
|
4077
|
-
|
|
4078
|
-
|
|
4079
|
-
|
|
4080
|
-
|
|
4081
|
-
|
|
4082
|
-
|
|
4083
|
-
|
|
4084
|
-
className
|
|
4085
|
-
|
|
4086
|
-
|
|
4087
|
-
|
|
4088
|
-
|
|
4089
|
-
|
|
4090
|
-
|
|
4091
|
-
|
|
4092
|
-
|
|
4093
|
-
|
|
4094
|
-
|
|
4095
|
-
|
|
4096
|
-
|
|
4097
|
-
|
|
4098
|
-
|
|
4099
|
-
onLimitChange = _ref2.onLimitChange,
|
|
4100
|
-
_ref2$showReloadButto = _ref2.showReloadButton,
|
|
4101
|
-
showReloadButton = _ref2$showReloadButto === void 0 ? true : _ref2$showReloadButto,
|
|
4102
|
-
renderReloadButton = _ref2.renderReloadButton,
|
|
4103
|
-
onReload = _ref2.onReload,
|
|
4104
|
-
_ref2$stripedRows = _ref2.stripedRows,
|
|
4105
|
-
stripedRows = _ref2$stripedRows === void 0 ? true : _ref2$stripedRows,
|
|
4106
|
-
_ref2$stripedColors = _ref2.stripedColors,
|
|
4107
|
-
stripedColors = _ref2$stripedColors === void 0 ? ["#ffffff", "#f7fafc"] : _ref2$stripedColors,
|
|
4108
|
-
_ref2$responsiveBreak = _ref2.responsiveBreakpoint,
|
|
4109
|
-
responsiveBreakpoint = _ref2$responsiveBreak === void 0 ? 768 : _ref2$responsiveBreak,
|
|
4110
|
-
_ref2$serverSide = _ref2.serverSide,
|
|
4111
|
-
serverSide = _ref2$serverSide === void 0 ? false : _ref2$serverSide,
|
|
4112
|
-
_ref2$totalRecords = _ref2.totalRecords,
|
|
4113
|
-
totalRecords = _ref2$totalRecords === void 0 ? 0 : _ref2$totalRecords,
|
|
4114
|
-
pageNumber = _ref2.pageNumber,
|
|
4115
|
-
props = _objectWithoutProperties$1(_ref2, _excluded$k);
|
|
4116
|
-
// Core state
|
|
4117
|
-
var _useState3 = useState(false),
|
|
4118
|
-
_useState4 = _slicedToArray(_useState3, 2),
|
|
4119
|
-
isMobileView = _useState4[0],
|
|
4120
|
-
setIsMobileView = _useState4[1];
|
|
4121
|
-
var _useState5 = useState(function () {
|
|
4122
|
-
return Array.isArray(data) ? data : [];
|
|
4123
|
-
}),
|
|
4124
|
-
_useState6 = _slicedToArray(_useState5, 2),
|
|
4125
|
-
tableData = _useState6[0],
|
|
4126
|
-
setTableData = _useState6[1];
|
|
4127
|
-
var _useState7 = useState(false),
|
|
4128
|
-
_useState8 = _slicedToArray(_useState7, 2),
|
|
4129
|
-
loading = _useState8[0],
|
|
4130
|
-
setLoading = _useState8[1];
|
|
4131
|
-
var _useState9 = useState(pageSize),
|
|
4132
|
-
_useState0 = _slicedToArray(_useState9, 2),
|
|
4133
|
-
limit = _useState0[0],
|
|
4134
|
-
setLimit = _useState0[1];
|
|
4135
|
-
var _useState1 = useState(function () {
|
|
4136
|
-
return typeof pageNumber === "number" ? pageNumber : 1;
|
|
4137
|
-
}),
|
|
4138
|
-
_useState10 = _slicedToArray(_useState1, 2),
|
|
4139
|
-
currentPage = _useState10[0],
|
|
4140
|
-
setCurrentPage = _useState10[1];
|
|
4141
|
-
|
|
4142
|
-
// Column state
|
|
4143
|
-
var _useState11 = useState(function () {
|
|
4144
|
-
return Array.isArray(columns) ? columns.map(function (c) {
|
|
4145
|
-
return _objectSpread$9({}, c);
|
|
4146
|
-
}) : [];
|
|
4147
|
-
}),
|
|
4148
|
-
_useState12 = _slicedToArray(_useState11, 2),
|
|
4149
|
-
columnsState = _useState12[0],
|
|
4150
|
-
setColumnsState = _useState12[1];
|
|
4151
|
-
var _useState13 = useState(false),
|
|
4152
|
-
_useState14 = _slicedToArray(_useState13, 2),
|
|
4153
|
-
showColumnMenu = _useState14[0],
|
|
4154
|
-
setShowColumnMenu = _useState14[1];
|
|
4155
|
-
|
|
4156
|
-
// Sorting/filtering state
|
|
4157
|
-
var _useState15 = useState({
|
|
4158
|
-
key: null,
|
|
4159
|
-
direction: "asc"
|
|
4160
|
-
}),
|
|
4161
|
-
_useState16 = _slicedToArray(_useState15, 2),
|
|
4162
|
-
sortConfig = _useState16[0],
|
|
4163
|
-
setSortConfig = _useState16[1];
|
|
4164
|
-
var _useState17 = useState({}),
|
|
4165
|
-
_useState18 = _slicedToArray(_useState17, 2),
|
|
4166
|
-
filters = _useState18[0],
|
|
4167
|
-
setFilters = _useState18[1];
|
|
4168
|
-
var _useState19 = useState(""),
|
|
4169
|
-
_useState20 = _slicedToArray(_useState19, 2),
|
|
4170
|
-
searchInput = _useState20[0],
|
|
4171
|
-
setSearchInput = _useState20[1];
|
|
4172
|
-
|
|
4173
|
-
// Selection/expansion state
|
|
4174
|
-
var _useState21 = useState(function () {
|
|
4175
|
-
return new Set();
|
|
4176
|
-
}),
|
|
4177
|
-
_useState22 = _slicedToArray(_useState21, 2),
|
|
4178
|
-
selectedRows = _useState22[0],
|
|
4179
|
-
setSelectedRows = _useState22[1];
|
|
4180
|
-
var _useState23 = useState(function () {
|
|
4181
|
-
return new Set();
|
|
4182
|
-
}),
|
|
4183
|
-
_useState24 = _slicedToArray(_useState23, 2),
|
|
4184
|
-
expandedRows = _useState24[0],
|
|
4185
|
-
setExpandedRows = _useState24[1];
|
|
4186
|
-
|
|
4187
|
-
// Action menu state - simplified to just store the clicked row key
|
|
4188
|
-
var _useState25 = useState(null),
|
|
4189
|
-
_useState26 = _slicedToArray(_useState25, 2),
|
|
4190
|
-
activeActionRowKey = _useState26[0],
|
|
4191
|
-
setActiveActionRowKey = _useState26[1];
|
|
4192
|
-
var _useState27 = useState(false),
|
|
4193
|
-
_useState28 = _slicedToArray(_useState27, 2),
|
|
4194
|
-
showMobileFilters = _useState28[0],
|
|
4195
|
-
setShowMobileFilters = _useState28[1];
|
|
4196
|
-
|
|
4197
|
-
// Refs
|
|
4198
|
-
var columnMenuRef = useRef(null);
|
|
4199
|
-
var columnToggleBtnRef = useRef(null);
|
|
4200
|
-
var actionMenuRef = useRef(null);
|
|
4201
|
-
var actionButtonRefs = useRef({});
|
|
4202
|
-
|
|
4203
|
-
// Actions to use (memoized)
|
|
4204
|
-
var actionsToUse = useMemo(function () {
|
|
4205
|
-
return actions !== undefined ? actions : DEFAULT_ACTIONS;
|
|
4206
|
-
}, [actions]);
|
|
4207
|
-
|
|
4208
|
-
// Sync external props
|
|
4209
|
-
useEffect(function () {
|
|
4210
|
-
if (typeof pageNumber === "number" && pageNumber !== currentPage) {
|
|
4211
|
-
setCurrentPage(pageNumber);
|
|
4114
|
+
// Footer pagination (with page numbers)
|
|
4115
|
+
function PaginationFooter(_ref2) {
|
|
4116
|
+
var currentPage = _ref2.currentPage,
|
|
4117
|
+
totalPages = _ref2.totalPages,
|
|
4118
|
+
onPageChange = _ref2.onPageChange,
|
|
4119
|
+
isMobileView = _ref2.isMobileView;
|
|
4120
|
+
var visiblePageCount = isMobileView ? 5 : 3;
|
|
4121
|
+
return /*#__PURE__*/React__default.createElement("div", {
|
|
4122
|
+
className: "p-4 border-t"
|
|
4123
|
+
}, /*#__PURE__*/React__default.createElement("div", {
|
|
4124
|
+
className: "flex flex-col sm:flex-row items-center justify-between gap-3"
|
|
4125
|
+
}, /*#__PURE__*/React__default.createElement("div", {
|
|
4126
|
+
className: "text-sm text-gray-600"
|
|
4127
|
+
}, "Page ", currentPage, " of ", totalPages), /*#__PURE__*/React__default.createElement("div", {
|
|
4128
|
+
className: "flex items-center gap-1 sm:gap-2"
|
|
4129
|
+
}, totalPages >= 4 && /*#__PURE__*/React__default.createElement("button", {
|
|
4130
|
+
className: cn$1("rounded-lg md:rounded-md border border-gray-300 disabled:opacity-50 hover:bg-gray-50", isMobileView ? "p-2" : "px-4 py-2 text-sm"),
|
|
4131
|
+
disabled: currentPage === 1,
|
|
4132
|
+
onClick: function onClick() {
|
|
4133
|
+
return onPageChange(1);
|
|
4134
|
+
},
|
|
4135
|
+
"aria-label": "First page"
|
|
4136
|
+
}, isMobileView ? /*#__PURE__*/React__default.createElement(ChevronsLeft, {
|
|
4137
|
+
className: "size-4 text-gray-800"
|
|
4138
|
+
}) : "First"), /*#__PURE__*/React__default.createElement("button", {
|
|
4139
|
+
className: cn$1("rounded-lg md:rounded-md border border-gray-300 disabled:opacity-50 hover:bg-gray-50", isMobileView ? "p-2" : "px-4 py-2 text-sm"),
|
|
4140
|
+
disabled: currentPage === 1,
|
|
4141
|
+
onClick: function onClick() {
|
|
4142
|
+
return onPageChange(Math.max(1, currentPage - 1));
|
|
4143
|
+
},
|
|
4144
|
+
"aria-label": "Previous page"
|
|
4145
|
+
}, isMobileView ? /*#__PURE__*/React__default.createElement(ChevronLeft, {
|
|
4146
|
+
className: "size-4 text-gray-800"
|
|
4147
|
+
}) : "Previous"), /*#__PURE__*/React__default.createElement("div", {
|
|
4148
|
+
className: "flex items-center gap-1"
|
|
4149
|
+
}, Array.from({
|
|
4150
|
+
length: Math.min(visiblePageCount, totalPages)
|
|
4151
|
+
}, function (_, i) {
|
|
4152
|
+
var pageNum;
|
|
4153
|
+
if (totalPages <= 5) {
|
|
4154
|
+
pageNum = i + 1;
|
|
4155
|
+
} else if (currentPage <= 3) {
|
|
4156
|
+
pageNum = i + 1;
|
|
4157
|
+
} else if (currentPage >= totalPages - 2) {
|
|
4158
|
+
pageNum = totalPages - 4 + i;
|
|
4159
|
+
} else {
|
|
4160
|
+
pageNum = currentPage - 2 + i;
|
|
4212
4161
|
}
|
|
4213
|
-
|
|
4214
|
-
|
|
4215
|
-
|
|
4216
|
-
|
|
4217
|
-
|
|
4218
|
-
|
|
4219
|
-
|
|
4220
|
-
|
|
4221
|
-
|
|
4222
|
-
|
|
4162
|
+
return /*#__PURE__*/React__default.createElement("button", {
|
|
4163
|
+
key: pageNum,
|
|
4164
|
+
className: cn$1("h-8 w-8 rounded-lg md:rounded-md text-sm", {
|
|
4165
|
+
"bg-primary-600 text-white": pageNum === currentPage,
|
|
4166
|
+
"border border-gray-300 hover:bg-gray-50": pageNum !== currentPage
|
|
4167
|
+
}),
|
|
4168
|
+
onClick: function onClick() {
|
|
4169
|
+
return onPageChange(pageNum);
|
|
4170
|
+
}
|
|
4171
|
+
}, pageNum);
|
|
4172
|
+
})), /*#__PURE__*/React__default.createElement("button", {
|
|
4173
|
+
className: cn$1("rounded-lg md:rounded-md border border-gray-300 disabled:opacity-50 hover:bg-gray-50", isMobileView ? "p-2" : "px-4 py-2 text-sm"),
|
|
4174
|
+
disabled: currentPage === totalPages,
|
|
4175
|
+
onClick: function onClick() {
|
|
4176
|
+
return onPageChange(Math.min(totalPages, currentPage + 1));
|
|
4177
|
+
},
|
|
4178
|
+
"aria-label": "Next page"
|
|
4179
|
+
}, isMobileView ? /*#__PURE__*/React__default.createElement(ChevronRight, {
|
|
4180
|
+
className: "size-4 text-gray-800"
|
|
4181
|
+
}) : "Next"), totalPages >= 4 && /*#__PURE__*/React__default.createElement("button", {
|
|
4182
|
+
className: cn$1("rounded-lg md:rounded-md border border-gray-300 disabled:opacity-50 hover:bg-gray-50", isMobileView ? "p-2" : "px-4 py-2 text-sm"),
|
|
4183
|
+
disabled: currentPage === totalPages,
|
|
4184
|
+
onClick: function onClick() {
|
|
4185
|
+
return onPageChange(totalPages);
|
|
4186
|
+
},
|
|
4187
|
+
"aria-label": "Last page"
|
|
4188
|
+
}, isMobileView ? /*#__PURE__*/React__default.createElement(ChevronsRight, {
|
|
4189
|
+
className: "size-4 text-gray-800"
|
|
4190
|
+
}) : "Last"))));
|
|
4191
|
+
}
|
|
4223
4192
|
|
|
4224
|
-
|
|
4225
|
-
|
|
4226
|
-
|
|
4227
|
-
|
|
4193
|
+
/**
|
|
4194
|
+
* Column visibility toggle menu
|
|
4195
|
+
*/
|
|
4196
|
+
function ColumnMenu(_ref) {
|
|
4197
|
+
var columns = _ref.columns,
|
|
4198
|
+
onToggle = _ref.onToggle,
|
|
4199
|
+
menuRef = _ref.menuRef;
|
|
4200
|
+
return /*#__PURE__*/React__default.createElement("div", {
|
|
4201
|
+
ref: menuRef,
|
|
4202
|
+
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",
|
|
4203
|
+
onClick: function onClick(e) {
|
|
4204
|
+
return e.stopPropagation();
|
|
4228
4205
|
}
|
|
4229
|
-
},
|
|
4230
|
-
|
|
4231
|
-
|
|
4232
|
-
|
|
4233
|
-
|
|
4234
|
-
|
|
4235
|
-
|
|
4236
|
-
|
|
4237
|
-
|
|
4238
|
-
|
|
4239
|
-
|
|
4240
|
-
|
|
4241
|
-
|
|
4206
|
+
}, /*#__PURE__*/React__default.createElement("p", {
|
|
4207
|
+
className: "text-sm font-medium text-center mb-2"
|
|
4208
|
+
}, "Show / hide columns"), /*#__PURE__*/React__default.createElement("div", {
|
|
4209
|
+
className: "max-h-56 overflow-auto"
|
|
4210
|
+
}, columns.map(function (col) {
|
|
4211
|
+
return /*#__PURE__*/React__default.createElement("label", {
|
|
4212
|
+
key: col.key,
|
|
4213
|
+
className: "flex cursor-pointer items-center gap-2 px-2 py-1.5 hover:bg-gray-50 rounded"
|
|
4214
|
+
}, /*#__PURE__*/React__default.createElement("input", {
|
|
4215
|
+
type: "checkbox",
|
|
4216
|
+
checked: col.isVisible !== false,
|
|
4217
|
+
onChange: function onChange() {
|
|
4218
|
+
return onToggle(col.key);
|
|
4219
|
+
},
|
|
4220
|
+
className: "rounded"
|
|
4221
|
+
}), /*#__PURE__*/React__default.createElement("span", {
|
|
4222
|
+
className: "text-sm font-normal"
|
|
4223
|
+
}, col.label));
|
|
4224
|
+
})));
|
|
4225
|
+
}
|
|
4242
4226
|
|
|
4243
|
-
|
|
4244
|
-
|
|
4245
|
-
|
|
4246
|
-
|
|
4247
|
-
var
|
|
4248
|
-
|
|
4249
|
-
|
|
4227
|
+
/**
|
|
4228
|
+
* Mobile-specific filters panel
|
|
4229
|
+
*/
|
|
4230
|
+
function MobileFilters(_ref) {
|
|
4231
|
+
var showMobileFilters = _ref.showMobileFilters,
|
|
4232
|
+
setShowMobileFilters = _ref.setShowMobileFilters,
|
|
4233
|
+
globalSearch = _ref.globalSearch,
|
|
4234
|
+
searchInput = _ref.searchInput,
|
|
4235
|
+
setSearchInput = _ref.setSearchInput,
|
|
4236
|
+
onGlobalKeyDown = _ref.onGlobalKeyDown,
|
|
4237
|
+
filterable = _ref.filterable,
|
|
4238
|
+
visibleColumns = _ref.visibleColumns,
|
|
4239
|
+
filters = _ref.filters,
|
|
4240
|
+
handleFilter = _ref.handleFilter;
|
|
4241
|
+
return /*#__PURE__*/React__default.createElement("div", {
|
|
4242
|
+
className: "mb-4 p-3 bg-gray-50 rounded-lg"
|
|
4243
|
+
}, /*#__PURE__*/React__default.createElement("div", {
|
|
4244
|
+
className: "flex items-center justify-between mb-3"
|
|
4245
|
+
}, /*#__PURE__*/React__default.createElement("h3", {
|
|
4246
|
+
className: "text-sm font-medium text-gray-700"
|
|
4247
|
+
}, "Filters"), /*#__PURE__*/React__default.createElement("button", {
|
|
4248
|
+
onClick: function onClick() {
|
|
4249
|
+
return setShowMobileFilters(function (s) {
|
|
4250
|
+
return !s;
|
|
4251
|
+
});
|
|
4252
|
+
},
|
|
4253
|
+
className: "text-xs text-gray-500 hover:text-gray-700"
|
|
4254
|
+
}, showMobileFilters ? "Hide" : "Show")), showMobileFilters && /*#__PURE__*/React__default.createElement("div", {
|
|
4255
|
+
className: "space-y-3"
|
|
4256
|
+
}, globalSearch && /*#__PURE__*/React__default.createElement("div", {
|
|
4257
|
+
className: "relative"
|
|
4258
|
+
}, /*#__PURE__*/React__default.createElement("input", {
|
|
4259
|
+
type: "text",
|
|
4260
|
+
placeholder: "Search...",
|
|
4261
|
+
className: "w-full rounded-md border border-gray-300 px-4 py-2 text-sm",
|
|
4262
|
+
value: searchInput,
|
|
4263
|
+
onChange: function onChange(e) {
|
|
4264
|
+
return setSearchInput(e.target.value);
|
|
4265
|
+
},
|
|
4266
|
+
onKeyDown: onGlobalKeyDown
|
|
4267
|
+
}), /*#__PURE__*/React__default.createElement(Search, {
|
|
4268
|
+
className: "absolute right-3 top-2.5 h-4 w-4 text-gray-400"
|
|
4269
|
+
})), filterable && visibleColumns.map(function (column) {
|
|
4270
|
+
return /*#__PURE__*/React__default.createElement("div", {
|
|
4271
|
+
key: column.key
|
|
4272
|
+
}, /*#__PURE__*/React__default.createElement("label", {
|
|
4273
|
+
className: "block text-xs font-medium text-gray-600 mb-1"
|
|
4274
|
+
}, column.label), /*#__PURE__*/React__default.createElement("input", {
|
|
4275
|
+
type: "text",
|
|
4276
|
+
placeholder: "Filter ".concat(column.label),
|
|
4277
|
+
className: "w-full rounded-md border border-gray-300 px-3 py-2 text-sm",
|
|
4278
|
+
value: filters[column.key] || "",
|
|
4279
|
+
onChange: function onChange(e) {
|
|
4280
|
+
return handleFilter(column.key, e.target.value);
|
|
4281
|
+
}
|
|
4282
|
+
}));
|
|
4283
|
+
})));
|
|
4284
|
+
}
|
|
4285
|
+
|
|
4286
|
+
/**
|
|
4287
|
+
* Desktop table row component
|
|
4288
|
+
*/
|
|
4289
|
+
function TableRow(_ref) {
|
|
4290
|
+
var row = _ref.row,
|
|
4291
|
+
rowIndexInPage = _ref.rowIndexInPage,
|
|
4292
|
+
startIndex = _ref.startIndex,
|
|
4293
|
+
selectedRows = _ref.selectedRows,
|
|
4294
|
+
expandedRows = _ref.expandedRows,
|
|
4295
|
+
rowClass = _ref.rowClass,
|
|
4296
|
+
stripedRows = _ref.stripedRows,
|
|
4297
|
+
stripedColors = _ref.stripedColors,
|
|
4298
|
+
onRowClick = _ref.onRowClick,
|
|
4299
|
+
hasDetails = _ref.hasDetails,
|
|
4300
|
+
showSerial = _ref.showSerial,
|
|
4301
|
+
selectable = _ref.selectable,
|
|
4302
|
+
visibleColumns = _ref.visibleColumns,
|
|
4303
|
+
cellClass = _ref.cellClass,
|
|
4304
|
+
withAction = _ref.withAction,
|
|
4305
|
+
visibleCount = _ref.visibleCount,
|
|
4306
|
+
DetailsComponent = _ref.DetailsComponent,
|
|
4307
|
+
actionsToUse = _ref.actionsToUse,
|
|
4308
|
+
activeActionRowKey = _ref.activeActionRowKey,
|
|
4309
|
+
activeAnchorEl = _ref.activeAnchorEl,
|
|
4310
|
+
actionButtonRefs = _ref.actionButtonRefs,
|
|
4311
|
+
actionMenuRef = _ref.actionMenuRef,
|
|
4312
|
+
toggleExpandRow = _ref.toggleExpandRow,
|
|
4313
|
+
handleSelectRow = _ref.handleSelectRow,
|
|
4314
|
+
toggleActions = _ref.toggleActions,
|
|
4315
|
+
handleOnAction = _ref.handleOnAction,
|
|
4316
|
+
closeActionMenu = _ref.closeActionMenu,
|
|
4317
|
+
renderCell = _ref.renderCell;
|
|
4318
|
+
var globalIndex = startIndex + rowIndexInPage;
|
|
4319
|
+
var key = getRowKey(row, globalIndex);
|
|
4320
|
+
var actionCellKey = "actions-".concat(key);
|
|
4321
|
+
var isSelected = selectedRows.has(key);
|
|
4322
|
+
var isExpanded = expandedRows.has(key);
|
|
4323
|
+
var extraRowClass = typeof rowClass === "function" ? rowClass({
|
|
4324
|
+
row: row,
|
|
4325
|
+
rowIndex: globalIndex
|
|
4326
|
+
}) : "";
|
|
4327
|
+
var safeExtraRowClass = typeof extraRowClass === "string" ? extraRowClass.trim() : "";
|
|
4328
|
+
var stripeBg = stripedRows && !isSelected ? stripedColors[globalIndex % stripedColors.length] : undefined;
|
|
4329
|
+
return /*#__PURE__*/React__default.createElement(React__default.Fragment, {
|
|
4330
|
+
key: key
|
|
4331
|
+
}, /*#__PURE__*/React__default.createElement("tr", {
|
|
4332
|
+
style: stripeBg ? {
|
|
4333
|
+
backgroundColor: stripeBg
|
|
4334
|
+
} : undefined,
|
|
4335
|
+
className: cn$1("hover:bg-gray-50", {
|
|
4336
|
+
"cursor-pointer": !!onRowClick,
|
|
4337
|
+
"bg-primary-50": isSelected
|
|
4338
|
+
}, safeExtraRowClass),
|
|
4339
|
+
onClick: function onClick() {
|
|
4340
|
+
return onRowClick === null || onRowClick === void 0 ? void 0 : onRowClick(row, globalIndex);
|
|
4341
|
+
}
|
|
4342
|
+
}, hasDetails && /*#__PURE__*/React__default.createElement("td", {
|
|
4343
|
+
className: "px-4 py-4 text-sm"
|
|
4344
|
+
}, /*#__PURE__*/React__default.createElement("button", {
|
|
4345
|
+
onClick: function onClick(e) {
|
|
4346
|
+
e.stopPropagation();
|
|
4347
|
+
toggleExpandRow(row, rowIndexInPage);
|
|
4348
|
+
},
|
|
4349
|
+
"aria-expanded": isExpanded,
|
|
4350
|
+
className: "p-1 rounded hover:bg-gray-100"
|
|
4351
|
+
}, isExpanded ? "▾" : "▸")), showSerial && /*#__PURE__*/React__default.createElement("td", {
|
|
4352
|
+
className: "px-4 py-4 whitespace-nowrap text-sm text-gray-900"
|
|
4353
|
+
}, globalIndex + 1), selectable && /*#__PURE__*/React__default.createElement("td", {
|
|
4354
|
+
className: "px-6 py-4",
|
|
4355
|
+
onClick: function onClick(e) {
|
|
4356
|
+
return e.stopPropagation();
|
|
4357
|
+
}
|
|
4358
|
+
}, /*#__PURE__*/React__default.createElement("input", {
|
|
4359
|
+
type: "checkbox",
|
|
4360
|
+
className: "rounded border-gray-300",
|
|
4361
|
+
checked: isSelected,
|
|
4362
|
+
onChange: function onChange() {
|
|
4363
|
+
return handleSelectRow(row, rowIndexInPage);
|
|
4364
|
+
}
|
|
4365
|
+
})), visibleColumns.map(function (column, columnIndex) {
|
|
4366
|
+
var extraCellClass = typeof cellClass === "function" ? cellClass({
|
|
4367
|
+
row: row,
|
|
4368
|
+
rowIndex: globalIndex,
|
|
4369
|
+
column: column,
|
|
4370
|
+
columnIndex: columnIndex
|
|
4371
|
+
}) : "";
|
|
4372
|
+
var safeExtraCellClass = typeof extraCellClass === "string" ? extraCellClass.trim() : "";
|
|
4373
|
+
return /*#__PURE__*/React__default.createElement("td", {
|
|
4374
|
+
key: column.key,
|
|
4375
|
+
className: cn$1("px-6 py-4 whitespace-nowrap text-sm text-gray-900", safeExtraCellClass)
|
|
4376
|
+
}, renderCell(column, row, globalIndex));
|
|
4377
|
+
}), /*#__PURE__*/React__default.createElement("td", {
|
|
4378
|
+
className: "px-4 py-4"
|
|
4379
|
+
}), withAction && /*#__PURE__*/React__default.createElement("td", {
|
|
4380
|
+
className: "px-4 py-4 text-sm text-right",
|
|
4381
|
+
onClick: function onClick(e) {
|
|
4382
|
+
return e.stopPropagation();
|
|
4383
|
+
}
|
|
4384
|
+
}, /*#__PURE__*/React__default.createElement("div", {
|
|
4385
|
+
className: "relative inline-block"
|
|
4386
|
+
}, /*#__PURE__*/React__default.createElement("button", {
|
|
4387
|
+
ref: function ref(el) {
|
|
4388
|
+
if (el) {
|
|
4389
|
+
actionButtonRefs.current[actionCellKey] = el;
|
|
4390
|
+
}
|
|
4391
|
+
},
|
|
4392
|
+
onClick: function onClick(e) {
|
|
4393
|
+
return toggleActions(e, actionCellKey, row);
|
|
4394
|
+
},
|
|
4395
|
+
"aria-expanded": activeActionRowKey === actionCellKey,
|
|
4396
|
+
className: "p-1 rounded hover:bg-gray-100",
|
|
4397
|
+
title: "Actions"
|
|
4398
|
+
}, /*#__PURE__*/React__default.createElement(MoreVertical, {
|
|
4399
|
+
className: "h-4 w-4"
|
|
4400
|
+
})), activeActionRowKey === actionCellKey && /*#__PURE__*/React__default.createElement(ActionMenu, {
|
|
4401
|
+
actions: actionsToUse,
|
|
4402
|
+
row: row,
|
|
4403
|
+
onAction: function onAction(action) {
|
|
4404
|
+
return handleOnAction(action, row);
|
|
4405
|
+
},
|
|
4406
|
+
menuRef: actionMenuRef,
|
|
4407
|
+
anchorEl: activeAnchorEl,
|
|
4408
|
+
onClose: closeActionMenu
|
|
4409
|
+
})))), hasDetails && isExpanded && DetailsComponent && /*#__PURE__*/React__default.createElement("tr", null, /*#__PURE__*/React__default.createElement("td", {
|
|
4410
|
+
colSpan: visibleCount,
|
|
4411
|
+
className: "px-6 py-4 bg-gray-50"
|
|
4412
|
+
}, /*#__PURE__*/React__default.createElement(DetailsComponent, {
|
|
4413
|
+
row: row,
|
|
4414
|
+
index: globalIndex
|
|
4415
|
+
}))));
|
|
4416
|
+
}
|
|
4417
|
+
|
|
4418
|
+
/**
|
|
4419
|
+
* Mobile card view for a single table row
|
|
4420
|
+
*/
|
|
4421
|
+
function MobileCard(_ref) {
|
|
4422
|
+
var row = _ref.row,
|
|
4423
|
+
rowIndexInPage = _ref.rowIndexInPage,
|
|
4424
|
+
startIndex = _ref.startIndex,
|
|
4425
|
+
selectedRows = _ref.selectedRows,
|
|
4426
|
+
expandedRows = _ref.expandedRows,
|
|
4427
|
+
rowClass = _ref.rowClass,
|
|
4428
|
+
stripedRows = _ref.stripedRows,
|
|
4429
|
+
stripedColors = _ref.stripedColors,
|
|
4430
|
+
onRowClick = _ref.onRowClick,
|
|
4431
|
+
hasDetails = _ref.hasDetails,
|
|
4432
|
+
selectable = _ref.selectable,
|
|
4433
|
+
showSerial = _ref.showSerial,
|
|
4434
|
+
withAction = _ref.withAction,
|
|
4435
|
+
visibleColumns = _ref.visibleColumns,
|
|
4436
|
+
cellClass = _ref.cellClass,
|
|
4437
|
+
DetailsComponent = _ref.DetailsComponent,
|
|
4438
|
+
actionsToUse = _ref.actionsToUse,
|
|
4439
|
+
activeActionRowKey = _ref.activeActionRowKey,
|
|
4440
|
+
activeAnchorEl = _ref.activeAnchorEl,
|
|
4441
|
+
actionButtonRefs = _ref.actionButtonRefs,
|
|
4442
|
+
actionMenuRef = _ref.actionMenuRef,
|
|
4443
|
+
toggleExpandRow = _ref.toggleExpandRow,
|
|
4444
|
+
handleSelectRow = _ref.handleSelectRow,
|
|
4445
|
+
toggleActions = _ref.toggleActions,
|
|
4446
|
+
handleOnAction = _ref.handleOnAction,
|
|
4447
|
+
closeActionMenu = _ref.closeActionMenu,
|
|
4448
|
+
renderCell = _ref.renderCell;
|
|
4449
|
+
var globalIndex = startIndex + rowIndexInPage;
|
|
4450
|
+
var key = getRowKey(row, globalIndex);
|
|
4451
|
+
var actionCellKey = "actions-".concat(key);
|
|
4452
|
+
var isSelected = selectedRows.has(key);
|
|
4453
|
+
var isExpanded = expandedRows.has(key);
|
|
4454
|
+
var extraRowClass = typeof rowClass === "function" ? rowClass({
|
|
4455
|
+
row: row,
|
|
4456
|
+
rowIndex: globalIndex
|
|
4457
|
+
}) : "";
|
|
4458
|
+
var safeExtraRowClass = typeof extraRowClass === "string" ? extraRowClass.trim() : "";
|
|
4459
|
+
var stripeBg = stripedRows && !isSelected ? stripedColors[globalIndex % stripedColors.length] : undefined;
|
|
4460
|
+
return /*#__PURE__*/React__default.createElement("div", {
|
|
4461
|
+
key: key,
|
|
4462
|
+
style: stripeBg ? {
|
|
4463
|
+
backgroundColor: stripeBg
|
|
4464
|
+
} : undefined,
|
|
4465
|
+
className: cn$1("border rounded-lg mb-3 shadow-sm overflow-hidden transition-all duration-200", {
|
|
4466
|
+
"cursor-pointer": !!onRowClick,
|
|
4467
|
+
"bg-primary-50 border-primary-200": isSelected,
|
|
4468
|
+
"hover:shadow-md": !isSelected
|
|
4469
|
+
}, safeExtraRowClass),
|
|
4470
|
+
onClick: function onClick() {
|
|
4471
|
+
return onRowClick === null || onRowClick === void 0 ? void 0 : onRowClick(row, globalIndex);
|
|
4472
|
+
}
|
|
4473
|
+
}, /*#__PURE__*/React__default.createElement("div", {
|
|
4474
|
+
className: "flex items-center justify-between p-4 border-b bg-gray-50"
|
|
4475
|
+
}, /*#__PURE__*/React__default.createElement("div", {
|
|
4476
|
+
className: "flex items-center gap-3"
|
|
4477
|
+
}, hasDetails && /*#__PURE__*/React__default.createElement("button", {
|
|
4478
|
+
onClick: function onClick(e) {
|
|
4479
|
+
e.stopPropagation();
|
|
4480
|
+
toggleExpandRow(row, rowIndexInPage);
|
|
4481
|
+
},
|
|
4482
|
+
"aria-expanded": isExpanded,
|
|
4483
|
+
className: "p-1 rounded hover:bg-gray-200"
|
|
4484
|
+
}, isExpanded ? "▾" : "▸"), selectable && /*#__PURE__*/React__default.createElement("input", {
|
|
4485
|
+
type: "checkbox",
|
|
4486
|
+
className: "rounded border-gray-300 h-4 w-4",
|
|
4487
|
+
checked: isSelected,
|
|
4488
|
+
onChange: function onChange(e) {
|
|
4489
|
+
e.stopPropagation();
|
|
4490
|
+
handleSelectRow(row, rowIndexInPage);
|
|
4491
|
+
},
|
|
4492
|
+
onClick: function onClick(e) {
|
|
4493
|
+
return e.stopPropagation();
|
|
4494
|
+
}
|
|
4495
|
+
}), showSerial && /*#__PURE__*/React__default.createElement("span", {
|
|
4496
|
+
className: "text-sm font-medium text-gray-600"
|
|
4497
|
+
}, "#", globalIndex + 1)), withAction && /*#__PURE__*/React__default.createElement("div", {
|
|
4498
|
+
className: "relative"
|
|
4499
|
+
}, /*#__PURE__*/React__default.createElement("button", {
|
|
4500
|
+
ref: function ref(el) {
|
|
4501
|
+
if (el) {
|
|
4502
|
+
actionButtonRefs.current[actionCellKey] = el;
|
|
4503
|
+
}
|
|
4504
|
+
},
|
|
4505
|
+
onClick: function onClick(e) {
|
|
4506
|
+
return toggleActions(e, actionCellKey, row);
|
|
4507
|
+
},
|
|
4508
|
+
"aria-expanded": activeActionRowKey === actionCellKey,
|
|
4509
|
+
className: "p-1.5 rounded hover:bg-gray-200",
|
|
4510
|
+
title: "Actions"
|
|
4511
|
+
}, /*#__PURE__*/React__default.createElement(MoreVertical, {
|
|
4512
|
+
className: "h-4 w-4"
|
|
4513
|
+
})), activeActionRowKey === actionCellKey && /*#__PURE__*/React__default.createElement(ActionMenu, {
|
|
4514
|
+
actions: actionsToUse,
|
|
4515
|
+
row: row,
|
|
4516
|
+
onAction: function onAction(action) {
|
|
4517
|
+
return handleOnAction(action, row);
|
|
4518
|
+
},
|
|
4519
|
+
menuRef: actionMenuRef,
|
|
4520
|
+
anchorEl: activeAnchorEl,
|
|
4521
|
+
onClose: closeActionMenu
|
|
4522
|
+
}))), /*#__PURE__*/React__default.createElement("div", {
|
|
4523
|
+
className: "p-4"
|
|
4524
|
+
}, visibleColumns.map(function (column, colIndex) {
|
|
4525
|
+
var extraCellClass = typeof cellClass === "function" ? cellClass({
|
|
4526
|
+
row: row,
|
|
4527
|
+
rowIndex: globalIndex,
|
|
4528
|
+
column: column,
|
|
4529
|
+
columnIndex: colIndex
|
|
4530
|
+
}) : "";
|
|
4531
|
+
var safeExtraCellClass = typeof extraCellClass === "string" ? extraCellClass.trim() : "";
|
|
4532
|
+
return /*#__PURE__*/React__default.createElement("div", {
|
|
4533
|
+
key: column.key,
|
|
4534
|
+
className: cn$1("flex justify-between items-center flex-row py-2 border-b last:border-b-0", safeExtraCellClass)
|
|
4535
|
+
}, /*#__PURE__*/React__default.createElement("div", {
|
|
4536
|
+
className: "text-xs font-medium text-gray-500 uppercase tracking-wide mb-1 sm:mb-0 sm:w-1/3 sm:pr-2"
|
|
4537
|
+
}, column.label), /*#__PURE__*/React__default.createElement("div", {
|
|
4538
|
+
className: "text-sm text-gray-900 sm:w-2/3 sm:pl-2 break-words"
|
|
4539
|
+
}, renderCell(column, row, globalIndex)));
|
|
4540
|
+
})), hasDetails && isExpanded && DetailsComponent && /*#__PURE__*/React__default.createElement("div", {
|
|
4541
|
+
className: "border-t bg-gray-50 p-4"
|
|
4542
|
+
}, /*#__PURE__*/React__default.createElement(DetailsComponent, {
|
|
4543
|
+
row: row,
|
|
4544
|
+
index: globalIndex
|
|
4545
|
+
})));
|
|
4546
|
+
}
|
|
4547
|
+
|
|
4548
|
+
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", "serverSide", "totalRecords", "pageNumber", "TheadComponent", "TfootComponent"];
|
|
4549
|
+
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; }
|
|
4550
|
+
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; }
|
|
4551
|
+
var DEFAULT_DATA = [];
|
|
4552
|
+
var DEFAULT_COLUMNS = [];
|
|
4553
|
+
var Table = function Table(_ref) {
|
|
4554
|
+
var _ref$data = _ref.data,
|
|
4555
|
+
initialData = _ref$data === void 0 ? DEFAULT_DATA : _ref$data,
|
|
4556
|
+
_ref$columns = _ref.columns,
|
|
4557
|
+
initialColumns = _ref$columns === void 0 ? DEFAULT_COLUMNS : _ref$columns,
|
|
4558
|
+
_ref$sortable = _ref.sortable,
|
|
4559
|
+
sortable = _ref$sortable === void 0 ? true : _ref$sortable,
|
|
4560
|
+
_ref$filterable = _ref.filterable,
|
|
4561
|
+
filterable = _ref$filterable === void 0 ? false : _ref$filterable,
|
|
4562
|
+
_ref$selectable = _ref.selectable,
|
|
4563
|
+
selectable = _ref$selectable === void 0 ? false : _ref$selectable,
|
|
4564
|
+
_ref$pagination = _ref.pagination,
|
|
4565
|
+
pagination = _ref$pagination === void 0 ? false : _ref$pagination,
|
|
4566
|
+
_ref$pageSize = _ref.pageSize,
|
|
4567
|
+
pageSize = _ref$pageSize === void 0 ? 25 : _ref$pageSize,
|
|
4568
|
+
onSort = _ref.onSort,
|
|
4569
|
+
onFilter = _ref.onFilter,
|
|
4570
|
+
onFetch = _ref.onFetch,
|
|
4571
|
+
onFilterChange = _ref.onFilterChange,
|
|
4572
|
+
onSelectionChange = _ref.onSelectionChange,
|
|
4573
|
+
onRowClick = _ref.onRowClick,
|
|
4574
|
+
_ref$hasDetails = _ref.hasDetails,
|
|
4575
|
+
hasDetails = _ref$hasDetails === void 0 ? false : _ref$hasDetails,
|
|
4576
|
+
_ref$DetailsComponent = _ref.DetailsComponent,
|
|
4577
|
+
DetailsComponent = _ref$DetailsComponent === void 0 ? null : _ref$DetailsComponent,
|
|
4578
|
+
className = _ref.className,
|
|
4579
|
+
_ref$withAction = _ref.withAction,
|
|
4580
|
+
withAction = _ref$withAction === void 0 ? true : _ref$withAction,
|
|
4581
|
+
onAction = _ref.onAction,
|
|
4582
|
+
actions = _ref.actions,
|
|
4583
|
+
_ref$showSerial = _ref.showSerial,
|
|
4584
|
+
showSerial = _ref$showSerial === void 0 ? true : _ref$showSerial,
|
|
4585
|
+
cellClass = _ref.cellClass,
|
|
4586
|
+
rowClass = _ref.rowClass,
|
|
4587
|
+
_ref$globalSearch = _ref.globalSearch,
|
|
4588
|
+
globalSearch = _ref$globalSearch === void 0 ? false : _ref$globalSearch,
|
|
4589
|
+
_ref$limitOptions = _ref.limitOptions,
|
|
4590
|
+
limitOptions = _ref$limitOptions === void 0 ? [10, 25, 50, 100] : _ref$limitOptions,
|
|
4591
|
+
_ref$showLimitSelecto = _ref.showLimitSelector,
|
|
4592
|
+
showLimitSelector = _ref$showLimitSelecto === void 0 ? true : _ref$showLimitSelecto,
|
|
4593
|
+
onLimitChange = _ref.onLimitChange,
|
|
4594
|
+
_ref$showReloadButton = _ref.showReloadButton,
|
|
4595
|
+
showReloadButton = _ref$showReloadButton === void 0 ? true : _ref$showReloadButton,
|
|
4596
|
+
renderReloadButton = _ref.renderReloadButton,
|
|
4597
|
+
onReload = _ref.onReload,
|
|
4598
|
+
_ref$stripedRows = _ref.stripedRows,
|
|
4599
|
+
stripedRows = _ref$stripedRows === void 0 ? true : _ref$stripedRows,
|
|
4600
|
+
_ref$stripedColors = _ref.stripedColors,
|
|
4601
|
+
stripedColors = _ref$stripedColors === void 0 ? ["#ffffff", "#f7fafc"] : _ref$stripedColors,
|
|
4602
|
+
_ref$responsiveBreakp = _ref.responsiveBreakpoint,
|
|
4603
|
+
responsiveBreakpoint = _ref$responsiveBreakp === void 0 ? 768 : _ref$responsiveBreakp,
|
|
4604
|
+
_ref$serverSide = _ref.serverSide,
|
|
4605
|
+
serverSide = _ref$serverSide === void 0 ? false : _ref$serverSide,
|
|
4606
|
+
_ref$totalRecords = _ref.totalRecords,
|
|
4607
|
+
totalRecords = _ref$totalRecords === void 0 ? 0 : _ref$totalRecords,
|
|
4608
|
+
pageNumber = _ref.pageNumber,
|
|
4609
|
+
_ref$TheadComponent = _ref.TheadComponent,
|
|
4610
|
+
TheadComponent = _ref$TheadComponent === void 0 ? null : _ref$TheadComponent,
|
|
4611
|
+
_ref$TfootComponent = _ref.TfootComponent,
|
|
4612
|
+
TfootComponent = _ref$TfootComponent === void 0 ? null : _ref$TfootComponent,
|
|
4613
|
+
props = _objectWithoutProperties$1(_ref, _excluded$k);
|
|
4614
|
+
// State
|
|
4615
|
+
var _useState = useState(false),
|
|
4616
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
4617
|
+
isMobileView = _useState2[0],
|
|
4618
|
+
setIsMobileView = _useState2[1];
|
|
4619
|
+
var _useState3 = useState(function () {
|
|
4620
|
+
return Array.isArray(initialData) ? initialData : [];
|
|
4621
|
+
}),
|
|
4622
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
4623
|
+
tableData = _useState4[0],
|
|
4624
|
+
setTableData = _useState4[1];
|
|
4625
|
+
var _useState5 = useState(false),
|
|
4626
|
+
_useState6 = _slicedToArray(_useState5, 2),
|
|
4627
|
+
loading = _useState6[0],
|
|
4628
|
+
_setLoading = _useState6[1];
|
|
4629
|
+
var _useState7 = useState(pageSize),
|
|
4630
|
+
_useState8 = _slicedToArray(_useState7, 2),
|
|
4631
|
+
limit = _useState8[0],
|
|
4632
|
+
setLimit = _useState8[1];
|
|
4633
|
+
var _useState9 = useState(function () {
|
|
4634
|
+
return typeof pageNumber === "number" ? pageNumber : 1;
|
|
4635
|
+
}),
|
|
4636
|
+
_useState0 = _slicedToArray(_useState9, 2),
|
|
4637
|
+
currentPage = _useState0[0],
|
|
4638
|
+
setCurrentPage = _useState0[1];
|
|
4639
|
+
var _useState1 = useState(function () {
|
|
4640
|
+
return Array.isArray(initialColumns) ? initialColumns.map(function (c) {
|
|
4641
|
+
return _objectSpread$9({}, c);
|
|
4642
|
+
}) : [];
|
|
4643
|
+
}),
|
|
4644
|
+
_useState10 = _slicedToArray(_useState1, 2),
|
|
4645
|
+
columnsState = _useState10[0],
|
|
4646
|
+
setColumnsState = _useState10[1];
|
|
4647
|
+
var _useState11 = useState(false),
|
|
4648
|
+
_useState12 = _slicedToArray(_useState11, 2),
|
|
4649
|
+
showColumnMenu = _useState12[0],
|
|
4650
|
+
setShowColumnMenu = _useState12[1];
|
|
4651
|
+
var _useState13 = useState({
|
|
4652
|
+
key: null,
|
|
4653
|
+
direction: "asc"
|
|
4654
|
+
}),
|
|
4655
|
+
_useState14 = _slicedToArray(_useState13, 2),
|
|
4656
|
+
sortConfig = _useState14[0],
|
|
4657
|
+
setSortConfig = _useState14[1];
|
|
4658
|
+
var _useState15 = useState({}),
|
|
4659
|
+
_useState16 = _slicedToArray(_useState15, 2),
|
|
4660
|
+
filters = _useState16[0],
|
|
4661
|
+
setFilters = _useState16[1];
|
|
4662
|
+
var _useState17 = useState(""),
|
|
4663
|
+
_useState18 = _slicedToArray(_useState17, 2),
|
|
4664
|
+
searchInput = _useState18[0],
|
|
4665
|
+
setSearchInput = _useState18[1];
|
|
4666
|
+
var _useState19 = useState(function () {
|
|
4667
|
+
return new Set();
|
|
4668
|
+
}),
|
|
4669
|
+
_useState20 = _slicedToArray(_useState19, 2),
|
|
4670
|
+
selectedRows = _useState20[0],
|
|
4671
|
+
setSelectedRows = _useState20[1];
|
|
4672
|
+
var _useState21 = useState(function () {
|
|
4673
|
+
return new Set();
|
|
4674
|
+
}),
|
|
4675
|
+
_useState22 = _slicedToArray(_useState21, 2),
|
|
4676
|
+
expandedRows = _useState22[0],
|
|
4677
|
+
setExpandedRows = _useState22[1];
|
|
4678
|
+
var _useState23 = useState(null),
|
|
4679
|
+
_useState24 = _slicedToArray(_useState23, 2),
|
|
4680
|
+
activeActionRowKey = _useState24[0],
|
|
4681
|
+
setActiveActionRowKey = _useState24[1];
|
|
4682
|
+
var _useState25 = useState(false),
|
|
4683
|
+
_useState26 = _slicedToArray(_useState25, 2),
|
|
4684
|
+
showMobileFilters = _useState26[0],
|
|
4685
|
+
setShowMobileFilters = _useState26[1];
|
|
4686
|
+
|
|
4687
|
+
// Refs
|
|
4688
|
+
var columnMenuRef = useRef(null);
|
|
4689
|
+
var columnToggleBtnRef = useRef(null);
|
|
4690
|
+
var actionMenuRef = useRef(null);
|
|
4691
|
+
var actionButtonRefs = useRef({});
|
|
4692
|
+
|
|
4693
|
+
// Memoized values
|
|
4694
|
+
var actionsToUse = useMemo(function () {
|
|
4695
|
+
return actions !== undefined ? actions : DEFAULT_ACTIONS;
|
|
4696
|
+
}, [actions]);
|
|
4697
|
+
|
|
4698
|
+
// Refs for stable initial values
|
|
4699
|
+
var initialPageNumber = useRef(pageNumber);
|
|
4700
|
+
var initialColumnsRef = useRef(initialColumns);
|
|
4701
|
+
var initialDataRef = useRef(initialData);
|
|
4702
|
+
useEffect(function () {
|
|
4703
|
+
setLimit(pageSize);
|
|
4704
|
+
}, [pageSize]);
|
|
4705
|
+
useEffect(function () {
|
|
4706
|
+
var isNotInitialPageNumber = typeof pageNumber === "number" && pageNumber !== initialPageNumber.current;
|
|
4707
|
+
var isNotCurrentPage = typeof pageNumber === "number" && pageNumber !== currentPage;
|
|
4708
|
+
if (isNotInitialPageNumber && isNotCurrentPage) {
|
|
4709
|
+
setCurrentPage(pageNumber);
|
|
4710
|
+
initialPageNumber.current = pageNumber;
|
|
4711
|
+
} else if (isNotCurrentPage) {
|
|
4712
|
+
setCurrentPage(pageNumber);
|
|
4713
|
+
}
|
|
4714
|
+
}, [pageNumber]);
|
|
4715
|
+
useEffect(function () {
|
|
4716
|
+
if (initialColumns !== initialColumnsRef.current) {
|
|
4717
|
+
setColumnsState(Array.isArray(initialColumns) ? initialColumns.map(function (c) {
|
|
4718
|
+
return _objectSpread$9({}, c);
|
|
4719
|
+
}) : []);
|
|
4720
|
+
initialColumnsRef.current = initialColumns;
|
|
4721
|
+
}
|
|
4722
|
+
}, [initialColumns]);
|
|
4723
|
+
useEffect(function () {
|
|
4724
|
+
if (initialData !== initialDataRef.current && Array.isArray(initialData)) {
|
|
4725
|
+
setTableData(initialData);
|
|
4726
|
+
initialDataRef.current = initialData;
|
|
4727
|
+
}
|
|
4728
|
+
}, [initialData]);
|
|
4729
|
+
useEffect(function () {
|
|
4730
|
+
var checkMobile = function checkMobile() {
|
|
4731
|
+
return setIsMobileView(window.innerWidth < responsiveBreakpoint);
|
|
4732
|
+
};
|
|
4733
|
+
checkMobile();
|
|
4734
|
+
window.addEventListener("resize", checkMobile);
|
|
4735
|
+
return function () {
|
|
4736
|
+
return window.removeEventListener("resize", checkMobile);
|
|
4737
|
+
};
|
|
4738
|
+
}, [responsiveBreakpoint]);
|
|
4739
|
+
|
|
4740
|
+
// Click-outside handlers
|
|
4741
|
+
var closeColumnMenu = useCallback(function () {
|
|
4742
|
+
return setShowColumnMenu(false);
|
|
4743
|
+
}, []);
|
|
4744
|
+
var closeActionMenu = useCallback(function () {
|
|
4745
|
+
return setActiveActionRowKey(null);
|
|
4746
|
+
}, []);
|
|
4250
4747
|
useClickOutside([columnMenuRef, columnToggleBtnRef], showColumnMenu, closeColumnMenu);
|
|
4251
4748
|
useClickOutside([actionMenuRef], activeActionRowKey !== null, closeActionMenu);
|
|
4252
4749
|
|
|
4253
|
-
//
|
|
4750
|
+
// Computed values
|
|
4254
4751
|
var activeAnchorEl = useMemo(function () {
|
|
4255
4752
|
if (activeActionRowKey === null) return null;
|
|
4256
4753
|
return actionButtonRefs.current[activeActionRowKey];
|
|
4257
4754
|
}, [activeActionRowKey]);
|
|
4258
|
-
|
|
4259
|
-
// Visible columns (memoized)
|
|
4260
4755
|
var visibleColumns = useMemo(function () {
|
|
4261
4756
|
return columnsState.filter(function (col) {
|
|
4262
4757
|
return col.isVisible !== false;
|
|
4263
4758
|
});
|
|
4264
4759
|
}, [columnsState]);
|
|
4265
|
-
|
|
4266
|
-
// Sorted data (memoized)
|
|
4267
4760
|
var sortedData = useMemo(function () {
|
|
4268
4761
|
if (serverSide || !sortConfig.key) return tableData;
|
|
4269
4762
|
var key = sortConfig.key,
|
|
@@ -4278,8 +4771,6 @@ var Table = function Table(_ref2) {
|
|
|
4278
4771
|
return direction === "asc" ? String(av).localeCompare(String(bv)) : String(bv).localeCompare(String(av));
|
|
4279
4772
|
});
|
|
4280
4773
|
}, [tableData, sortConfig, serverSide]);
|
|
4281
|
-
|
|
4282
|
-
// Filtered data (memoized)
|
|
4283
4774
|
var filteredData = useMemo(function () {
|
|
4284
4775
|
if (serverSide || !filterable || !Object.keys(filters).length) return sortedData;
|
|
4285
4776
|
var q = (filters.global || "").toLowerCase();
|
|
@@ -4289,8 +4780,6 @@ var Table = function Table(_ref2) {
|
|
|
4289
4780
|
});
|
|
4290
4781
|
});
|
|
4291
4782
|
}, [sortedData, filters, filterable, serverSide]);
|
|
4292
|
-
|
|
4293
|
-
// Pagination calculations (memoized)
|
|
4294
4783
|
var _useMemo = useMemo(function () {
|
|
4295
4784
|
var start = pagination ? (currentPage - 1) * limit : 0;
|
|
4296
4785
|
var end = pagination ? start + limit : filteredData.length;
|
|
@@ -4307,22 +4796,31 @@ var Table = function Table(_ref2) {
|
|
|
4307
4796
|
endIndex = _useMemo.endIndex,
|
|
4308
4797
|
paginatedData = _useMemo.paginatedData,
|
|
4309
4798
|
totalPages = _useMemo.totalPages;
|
|
4310
|
-
|
|
4311
|
-
// Column count for colspan (memoized)
|
|
4312
4799
|
var visibleCount = useMemo(function () {
|
|
4313
4800
|
return (showSerial ? 1 : 0) + visibleColumns.length + (selectable ? 1 : 0) + (hasDetails ? 1 : 0) + (withAction ? 1 : 0) + 1;
|
|
4314
|
-
},
|
|
4315
|
-
// column toggler
|
|
4316
|
-
[showSerial, visibleColumns.length, selectable, hasDetails, withAction]);
|
|
4317
|
-
|
|
4318
|
-
// Row key map for selection (memoized per filtered data)
|
|
4801
|
+
}, [showSerial, visibleColumns.length, selectable, hasDetails, withAction]);
|
|
4319
4802
|
var rowKeyMap = useMemo(function () {
|
|
4320
4803
|
return new Map(filteredData.map(function (r, i) {
|
|
4321
4804
|
return [getRowKey(r, i), r];
|
|
4322
4805
|
}));
|
|
4323
4806
|
}, [filteredData]);
|
|
4807
|
+
var allPageSelected = useMemo(function () {
|
|
4808
|
+
if (paginatedData.length === 0) return false;
|
|
4809
|
+
return paginatedData.every(function (r, i) {
|
|
4810
|
+
return selectedRows.has(getRowKey(r, startIndex + i));
|
|
4811
|
+
});
|
|
4812
|
+
}, [paginatedData, selectedRows, startIndex]);
|
|
4813
|
+
var limitOptionsForSelect = useMemo(function () {
|
|
4814
|
+
var opts = Array.isArray(limitOptions) && limitOptions.length > 0 ? limitOptions : [25, 50, 100];
|
|
4815
|
+
return opts.map(function (opt) {
|
|
4816
|
+
return {
|
|
4817
|
+
label: String(opt),
|
|
4818
|
+
value: opt
|
|
4819
|
+
};
|
|
4820
|
+
});
|
|
4821
|
+
}, [limitOptions]);
|
|
4324
4822
|
|
|
4325
|
-
// Callbacks
|
|
4823
|
+
// Callbacks
|
|
4326
4824
|
var toggleColumnVisibility = useCallback(function (key) {
|
|
4327
4825
|
setColumnsState(function (prev) {
|
|
4328
4826
|
return prev.map(function (c) {
|
|
@@ -4370,8 +4868,6 @@ var Table = function Table(_ref2) {
|
|
|
4370
4868
|
return newSelection.add(k);
|
|
4371
4869
|
});
|
|
4372
4870
|
}
|
|
4373
|
-
|
|
4374
|
-
// Notify parent
|
|
4375
4871
|
var selectedData = Array.from(newSelection).map(function (k) {
|
|
4376
4872
|
return rowKeyMap.get(k);
|
|
4377
4873
|
}).filter(Boolean);
|
|
@@ -4411,17 +4907,15 @@ var Table = function Table(_ref2) {
|
|
|
4411
4907
|
}, [startIndex]);
|
|
4412
4908
|
var toggleActions = useCallback(function (e, actionCellKey, row) {
|
|
4413
4909
|
e.stopPropagation();
|
|
4414
|
-
e.preventDefault();
|
|
4415
|
-
|
|
4416
|
-
// Store the button reference
|
|
4910
|
+
e.preventDefault();
|
|
4417
4911
|
if (e.currentTarget) {
|
|
4418
4912
|
actionButtonRefs.current[actionCellKey] = e.currentTarget;
|
|
4419
4913
|
}
|
|
4420
4914
|
setActiveActionRowKey(function (prev) {
|
|
4421
4915
|
if (prev === actionCellKey) {
|
|
4422
|
-
return null;
|
|
4916
|
+
return null;
|
|
4423
4917
|
}
|
|
4424
|
-
return actionCellKey;
|
|
4918
|
+
return actionCellKey;
|
|
4425
4919
|
});
|
|
4426
4920
|
}, []);
|
|
4427
4921
|
var handleOnAction = useCallback(function (action, row) {
|
|
@@ -4455,306 +4949,68 @@ var Table = function Table(_ref2) {
|
|
|
4455
4949
|
var handlePageChange = useCallback(function (newPage) {
|
|
4456
4950
|
setCurrentPage(newPage);
|
|
4457
4951
|
}, []);
|
|
4952
|
+
var renderCell = useCallback(function (column, row, globalIndex) {
|
|
4953
|
+
if (column.render) return column.render(row, globalIndex);
|
|
4954
|
+
return row === null || row === void 0 ? void 0 : row[column.key];
|
|
4955
|
+
}, []);
|
|
4458
4956
|
|
|
4459
4957
|
// Data fetching effect
|
|
4460
4958
|
useEffect(function () {
|
|
4461
4959
|
if (!onFetch) return;
|
|
4960
|
+
var mounted = true;
|
|
4462
4961
|
onFetch({
|
|
4463
4962
|
setData: function setData(rows) {
|
|
4464
|
-
|
|
4963
|
+
if (mounted) setTableData(Array.isArray(rows) ? rows : []);
|
|
4964
|
+
},
|
|
4965
|
+
setLoading: function setLoading(v) {
|
|
4966
|
+
if (mounted) _setLoading(v);
|
|
4465
4967
|
},
|
|
4466
|
-
setLoading: setLoading,
|
|
4467
4968
|
filters: filters,
|
|
4468
4969
|
page: currentPage,
|
|
4469
4970
|
limit: limit,
|
|
4470
4971
|
sort: sortConfig
|
|
4471
4972
|
});
|
|
4472
|
-
|
|
4473
|
-
|
|
4474
|
-
|
|
4973
|
+
return function () {
|
|
4974
|
+
mounted = false;
|
|
4975
|
+
};
|
|
4976
|
+
}, [filters, currentPage, limit, sortConfig]);
|
|
4475
4977
|
useEffect(function () {
|
|
4476
4978
|
setSearchInput(filters.global || "");
|
|
4477
4979
|
}, [filters.global]);
|
|
4478
4980
|
|
|
4479
|
-
//
|
|
4480
|
-
var
|
|
4481
|
-
|
|
4482
|
-
|
|
4483
|
-
|
|
4484
|
-
|
|
4485
|
-
|
|
4486
|
-
|
|
4487
|
-
|
|
4488
|
-
|
|
4489
|
-
|
|
4490
|
-
|
|
4491
|
-
|
|
4492
|
-
|
|
4493
|
-
|
|
4494
|
-
|
|
4495
|
-
|
|
4496
|
-
|
|
4497
|
-
|
|
4498
|
-
|
|
4499
|
-
|
|
4500
|
-
|
|
4501
|
-
|
|
4502
|
-
|
|
4503
|
-
|
|
4504
|
-
|
|
4505
|
-
|
|
4506
|
-
"hover:shadow-md": !isSelected
|
|
4507
|
-
}, safeExtraRowClass),
|
|
4508
|
-
onClick: function onClick() {
|
|
4509
|
-
return onRowClick === null || onRowClick === void 0 ? void 0 : onRowClick(row, globalIndex);
|
|
4510
|
-
}
|
|
4511
|
-
}, /*#__PURE__*/React__default.createElement("div", {
|
|
4512
|
-
className: "flex items-center justify-between p-4 border-b bg-gray-50"
|
|
4513
|
-
}, /*#__PURE__*/React__default.createElement("div", {
|
|
4514
|
-
className: "flex items-center gap-3"
|
|
4515
|
-
}, hasDetails && /*#__PURE__*/React__default.createElement("button", {
|
|
4516
|
-
onClick: function onClick(e) {
|
|
4517
|
-
e.stopPropagation();
|
|
4518
|
-
toggleExpandRow(row, rowIndexInPage);
|
|
4519
|
-
},
|
|
4520
|
-
"aria-expanded": isExpanded,
|
|
4521
|
-
className: "p-1 rounded hover:bg-gray-200"
|
|
4522
|
-
}, isExpanded ? "▾" : "▸"), selectable && /*#__PURE__*/React__default.createElement("input", {
|
|
4523
|
-
type: "checkbox",
|
|
4524
|
-
className: "rounded border-gray-300 h-4 w-4",
|
|
4525
|
-
checked: isSelected,
|
|
4526
|
-
onChange: function onChange(e) {
|
|
4527
|
-
e.stopPropagation();
|
|
4528
|
-
handleSelectRow(row, rowIndexInPage);
|
|
4529
|
-
},
|
|
4530
|
-
onClick: function onClick(e) {
|
|
4531
|
-
return e.stopPropagation();
|
|
4532
|
-
}
|
|
4533
|
-
}), showSerial && /*#__PURE__*/React__default.createElement("span", {
|
|
4534
|
-
className: "text-sm font-medium text-gray-600"
|
|
4535
|
-
}, "#", globalIndex + 1)), withAction && /*#__PURE__*/React__default.createElement("div", {
|
|
4536
|
-
className: "relative"
|
|
4537
|
-
}, /*#__PURE__*/React__default.createElement("button", {
|
|
4538
|
-
ref: function ref(el) {
|
|
4539
|
-
if (el) {
|
|
4540
|
-
actionButtonRefs.current[actionCellKey] = el;
|
|
4541
|
-
}
|
|
4542
|
-
},
|
|
4543
|
-
onClick: function onClick(e) {
|
|
4544
|
-
return toggleActions(e, actionCellKey, row);
|
|
4545
|
-
},
|
|
4546
|
-
"aria-expanded": activeActionRowKey === actionCellKey,
|
|
4547
|
-
className: "p-1.5 rounded hover:bg-gray-200",
|
|
4548
|
-
title: "Actions"
|
|
4549
|
-
}, /*#__PURE__*/React__default.createElement(MoreVertical, {
|
|
4550
|
-
className: "h-4 w-4"
|
|
4551
|
-
})), activeActionRowKey === actionCellKey && /*#__PURE__*/React__default.createElement(ActionMenu, {
|
|
4552
|
-
actions: actionsToUse,
|
|
4553
|
-
row: row,
|
|
4554
|
-
onAction: function onAction(action) {
|
|
4555
|
-
return handleOnAction(action, row);
|
|
4556
|
-
},
|
|
4557
|
-
menuRef: actionMenuRef,
|
|
4558
|
-
anchorEl: activeAnchorEl,
|
|
4559
|
-
onClose: closeActionMenu
|
|
4560
|
-
}))), /*#__PURE__*/React__default.createElement("div", {
|
|
4561
|
-
className: "p-4"
|
|
4562
|
-
}, visibleColumns.map(function (column, colIndex) {
|
|
4563
|
-
var extraCellClass = typeof cellClass === "function" ? cellClass({
|
|
4564
|
-
row: row,
|
|
4565
|
-
rowIndex: globalIndex,
|
|
4566
|
-
column: column,
|
|
4567
|
-
columnIndex: colIndex
|
|
4568
|
-
}) : "";
|
|
4569
|
-
var safeExtraCellClass = typeof extraCellClass === "string" ? extraCellClass.trim() : "";
|
|
4570
|
-
return /*#__PURE__*/React__default.createElement("div", {
|
|
4571
|
-
key: column.key,
|
|
4572
|
-
className: cn$1("flex justify-between items-center flex-row py-2 border-b last:border-b-0", safeExtraCellClass)
|
|
4573
|
-
}, /*#__PURE__*/React__default.createElement("div", {
|
|
4574
|
-
className: "text-xs font-medium text-gray-500 uppercase tracking-wide mb-1 sm:mb-0 sm:w-1/3 sm:pr-2"
|
|
4575
|
-
}, column.label), /*#__PURE__*/React__default.createElement("div", {
|
|
4576
|
-
className: "text-sm text-gray-900 sm:w-2/3 sm:pl-2 break-words"
|
|
4577
|
-
}, renderCell(column, row, globalIndex)));
|
|
4578
|
-
})), hasDetails && isExpanded && DetailsComponent && /*#__PURE__*/React__default.createElement("div", {
|
|
4579
|
-
className: "border-t bg-gray-50 p-4"
|
|
4580
|
-
}, /*#__PURE__*/React__default.createElement(DetailsComponent, {
|
|
4581
|
-
row: row,
|
|
4582
|
-
index: globalIndex
|
|
4583
|
-
})));
|
|
4584
|
-
}, [startIndex, selectedRows, expandedRows, rowClass, stripedRows, stripedColors, onRowClick, hasDetails, selectable, showSerial, withAction, visibleColumns, cellClass, DetailsComponent, actionsToUse, activeActionRowKey, activeAnchorEl, toggleExpandRow, handleSelectRow, toggleActions, handleOnAction, closeActionMenu, renderCell]);
|
|
4585
|
-
|
|
4586
|
-
// Render mobile filters
|
|
4587
|
-
var renderMobileFilters = useCallback(function () {
|
|
4588
|
-
return /*#__PURE__*/React__default.createElement("div", {
|
|
4589
|
-
className: "mb-4 p-3 bg-gray-50 rounded-lg"
|
|
4590
|
-
}, /*#__PURE__*/React__default.createElement("div", {
|
|
4591
|
-
className: "flex items-center justify-between mb-3"
|
|
4592
|
-
}, /*#__PURE__*/React__default.createElement("h3", {
|
|
4593
|
-
className: "text-sm font-medium text-gray-700"
|
|
4594
|
-
}, "Filters"), /*#__PURE__*/React__default.createElement("button", {
|
|
4595
|
-
onClick: function onClick() {
|
|
4596
|
-
return setShowMobileFilters(function (s) {
|
|
4597
|
-
return !s;
|
|
4598
|
-
});
|
|
4599
|
-
},
|
|
4600
|
-
className: "text-xs text-gray-500 hover:text-gray-700"
|
|
4601
|
-
}, showMobileFilters ? "Hide" : "Show")), showMobileFilters && /*#__PURE__*/React__default.createElement("div", {
|
|
4602
|
-
className: "space-y-3"
|
|
4603
|
-
}, globalSearch && /*#__PURE__*/React__default.createElement("div", {
|
|
4604
|
-
className: "relative"
|
|
4605
|
-
}, /*#__PURE__*/React__default.createElement("input", {
|
|
4606
|
-
type: "text",
|
|
4607
|
-
placeholder: "Search...",
|
|
4608
|
-
className: "w-full rounded-md border border-gray-300 px-4 py-2 text-sm",
|
|
4609
|
-
value: searchInput,
|
|
4610
|
-
onChange: function onChange(e) {
|
|
4611
|
-
return setSearchInput(e.target.value);
|
|
4612
|
-
},
|
|
4613
|
-
onKeyDown: onGlobalKeyDown
|
|
4614
|
-
}), /*#__PURE__*/React__default.createElement(Search, {
|
|
4615
|
-
className: "absolute right-3 top-2.5 h-4 w-4 text-gray-400"
|
|
4616
|
-
})), filterable && visibleColumns.map(function (column) {
|
|
4617
|
-
return /*#__PURE__*/React__default.createElement("div", {
|
|
4618
|
-
key: column.key
|
|
4619
|
-
}, /*#__PURE__*/React__default.createElement("label", {
|
|
4620
|
-
className: "block text-xs font-medium text-gray-600 mb-1"
|
|
4621
|
-
}, column.label), /*#__PURE__*/React__default.createElement("input", {
|
|
4622
|
-
type: "text",
|
|
4623
|
-
placeholder: "Filter ".concat(column.label),
|
|
4624
|
-
className: "w-full rounded-md border border-gray-300 px-3 py-2 text-sm",
|
|
4625
|
-
value: filters[column.key] || "",
|
|
4626
|
-
onChange: function onChange(e) {
|
|
4627
|
-
return handleFilter(column.key, e.target.value);
|
|
4628
|
-
}
|
|
4629
|
-
}));
|
|
4630
|
-
})));
|
|
4631
|
-
}, [showMobileFilters, globalSearch, searchInput, onGlobalKeyDown, filterable, visibleColumns, filters, handleFilter]);
|
|
4632
|
-
|
|
4633
|
-
// Check if all page rows are selected
|
|
4634
|
-
var allPageSelected = useMemo(function () {
|
|
4635
|
-
if (paginatedData.length === 0) return false;
|
|
4636
|
-
return paginatedData.every(function (r, i) {
|
|
4637
|
-
return selectedRows.has(getRowKey(r, startIndex + i));
|
|
4638
|
-
});
|
|
4639
|
-
}, [paginatedData, selectedRows, startIndex]);
|
|
4640
|
-
|
|
4641
|
-
// Limit options for selector
|
|
4642
|
-
var limitOptionsForSelect = useMemo(function () {
|
|
4643
|
-
var opts = Array.isArray(limitOptions) && limitOptions.length > 0 ? limitOptions : [25, 50, 100];
|
|
4644
|
-
return opts.map(function (opt) {
|
|
4645
|
-
return {
|
|
4646
|
-
label: String(opt),
|
|
4647
|
-
value: opt
|
|
4648
|
-
};
|
|
4649
|
-
});
|
|
4650
|
-
}, [limitOptions]);
|
|
4651
|
-
|
|
4652
|
-
// Render desktop table rows
|
|
4653
|
-
var renderDesktopTableRows = useCallback(function () {
|
|
4654
|
-
return paginatedData.map(function (row, rowIndexInPage) {
|
|
4655
|
-
var globalIndex = startIndex + rowIndexInPage;
|
|
4656
|
-
var key = getRowKey(row, globalIndex);
|
|
4657
|
-
var actionCellKey = "actions-".concat(key);
|
|
4658
|
-
var isSelected = selectedRows.has(key);
|
|
4659
|
-
var isExpanded = expandedRows.has(key);
|
|
4660
|
-
var extraRowClass = typeof rowClass === "function" ? rowClass({
|
|
4661
|
-
row: row,
|
|
4662
|
-
rowIndex: globalIndex
|
|
4663
|
-
}) : "";
|
|
4664
|
-
var safeExtraRowClass = typeof extraRowClass === "string" ? extraRowClass.trim() : "";
|
|
4665
|
-
var stripeBg = stripedRows && !isSelected ? stripedColors[globalIndex % stripedColors.length] : undefined;
|
|
4666
|
-
return /*#__PURE__*/React__default.createElement(React__default.Fragment, {
|
|
4667
|
-
key: key
|
|
4668
|
-
}, /*#__PURE__*/React__default.createElement("tr", {
|
|
4669
|
-
style: stripeBg ? {
|
|
4670
|
-
backgroundColor: stripeBg
|
|
4671
|
-
} : undefined,
|
|
4672
|
-
className: cn$1("hover:bg-gray-50", {
|
|
4673
|
-
"cursor-pointer": !!onRowClick,
|
|
4674
|
-
"bg-primary-50": isSelected
|
|
4675
|
-
}, safeExtraRowClass),
|
|
4676
|
-
onClick: function onClick() {
|
|
4677
|
-
return onRowClick === null || onRowClick === void 0 ? void 0 : onRowClick(row, globalIndex);
|
|
4678
|
-
}
|
|
4679
|
-
}, hasDetails && /*#__PURE__*/React__default.createElement("td", {
|
|
4680
|
-
className: "px-4 py-4 text-sm"
|
|
4681
|
-
}, /*#__PURE__*/React__default.createElement("button", {
|
|
4682
|
-
onClick: function onClick(e) {
|
|
4683
|
-
e.stopPropagation();
|
|
4684
|
-
toggleExpandRow(row, rowIndexInPage);
|
|
4685
|
-
},
|
|
4686
|
-
"aria-expanded": isExpanded,
|
|
4687
|
-
className: "p-1 rounded hover:bg-gray-100"
|
|
4688
|
-
}, isExpanded ? "▾" : "▸")), showSerial && /*#__PURE__*/React__default.createElement("td", {
|
|
4689
|
-
className: "px-4 py-4 whitespace-nowrap text-sm text-gray-900"
|
|
4690
|
-
}, globalIndex + 1), selectable && /*#__PURE__*/React__default.createElement("td", {
|
|
4691
|
-
className: "px-6 py-4",
|
|
4692
|
-
onClick: function onClick(e) {
|
|
4693
|
-
return e.stopPropagation();
|
|
4694
|
-
}
|
|
4695
|
-
}, /*#__PURE__*/React__default.createElement("input", {
|
|
4696
|
-
type: "checkbox",
|
|
4697
|
-
className: "rounded border-gray-300",
|
|
4698
|
-
checked: isSelected,
|
|
4699
|
-
onChange: function onChange() {
|
|
4700
|
-
return handleSelectRow(row, rowIndexInPage);
|
|
4701
|
-
}
|
|
4702
|
-
})), visibleColumns.map(function (column, columnIndex) {
|
|
4703
|
-
var extraCellClass = typeof cellClass === "function" ? cellClass({
|
|
4704
|
-
row: row,
|
|
4705
|
-
rowIndex: globalIndex,
|
|
4706
|
-
column: column,
|
|
4707
|
-
columnIndex: columnIndex
|
|
4708
|
-
}) : "";
|
|
4709
|
-
var safeExtraCellClass = typeof extraCellClass === "string" ? extraCellClass.trim() : "";
|
|
4710
|
-
return /*#__PURE__*/React__default.createElement("td", {
|
|
4711
|
-
key: column.key,
|
|
4712
|
-
className: cn$1("px-6 py-4 whitespace-nowrap text-sm text-gray-900", safeExtraCellClass)
|
|
4713
|
-
}, renderCell(column, row, globalIndex));
|
|
4714
|
-
}), /*#__PURE__*/React__default.createElement("td", {
|
|
4715
|
-
className: "px-4 py-4"
|
|
4716
|
-
}), withAction && /*#__PURE__*/React__default.createElement("td", {
|
|
4717
|
-
className: "px-4 py-4 text-sm text-right",
|
|
4718
|
-
onClick: function onClick(e) {
|
|
4719
|
-
return e.stopPropagation();
|
|
4720
|
-
}
|
|
4721
|
-
}, /*#__PURE__*/React__default.createElement("div", {
|
|
4722
|
-
className: "relative inline-block"
|
|
4723
|
-
}, /*#__PURE__*/React__default.createElement("button", {
|
|
4724
|
-
ref: function ref(el) {
|
|
4725
|
-
if (el) {
|
|
4726
|
-
actionButtonRefs.current[actionCellKey] = el;
|
|
4727
|
-
}
|
|
4728
|
-
},
|
|
4729
|
-
onClick: function onClick(e) {
|
|
4730
|
-
return toggleActions(e, actionCellKey, row);
|
|
4731
|
-
},
|
|
4732
|
-
"aria-expanded": activeActionRowKey === actionCellKey,
|
|
4733
|
-
className: "p-1 rounded hover:bg-gray-100",
|
|
4734
|
-
title: "Actions"
|
|
4735
|
-
}, /*#__PURE__*/React__default.createElement(MoreVertical, {
|
|
4736
|
-
className: "h-4 w-4"
|
|
4737
|
-
})), activeActionRowKey === actionCellKey && /*#__PURE__*/React__default.createElement(ActionMenu, {
|
|
4738
|
-
actions: actionsToUse,
|
|
4739
|
-
row: row,
|
|
4740
|
-
onAction: function onAction(action) {
|
|
4741
|
-
return handleOnAction(action, row);
|
|
4742
|
-
},
|
|
4743
|
-
menuRef: actionMenuRef,
|
|
4744
|
-
anchorEl: activeAnchorEl,
|
|
4745
|
-
onClose: closeActionMenu
|
|
4746
|
-
})))), hasDetails && isExpanded && DetailsComponent && /*#__PURE__*/React__default.createElement("tr", null, /*#__PURE__*/React__default.createElement("td", {
|
|
4747
|
-
colSpan: visibleCount,
|
|
4748
|
-
className: "px-6 py-4 bg-gray-50"
|
|
4749
|
-
}, /*#__PURE__*/React__default.createElement(DetailsComponent, {
|
|
4750
|
-
row: row,
|
|
4751
|
-
index: globalIndex
|
|
4752
|
-
}))));
|
|
4753
|
-
});
|
|
4754
|
-
}, [paginatedData, startIndex, selectedRows, expandedRows, rowClass, stripedRows, stripedColors, onRowClick, hasDetails, showSerial, selectable, visibleColumns, cellClass, withAction, visibleCount, DetailsComponent, actionsToUse, activeActionRowKey, activeAnchorEl, toggleExpandRow, handleSelectRow, toggleActions, handleOnAction, closeActionMenu, renderCell]);
|
|
4981
|
+
// Shared props for row components
|
|
4982
|
+
var rowSharedProps = {
|
|
4983
|
+
selectedRows: selectedRows,
|
|
4984
|
+
expandedRows: expandedRows,
|
|
4985
|
+
rowClass: rowClass,
|
|
4986
|
+
stripedRows: stripedRows,
|
|
4987
|
+
stripedColors: stripedColors,
|
|
4988
|
+
onRowClick: onRowClick,
|
|
4989
|
+
hasDetails: hasDetails,
|
|
4990
|
+
showSerial: showSerial,
|
|
4991
|
+
selectable: selectable,
|
|
4992
|
+
visibleColumns: visibleColumns,
|
|
4993
|
+
cellClass: cellClass,
|
|
4994
|
+
withAction: withAction,
|
|
4995
|
+
DetailsComponent: DetailsComponent,
|
|
4996
|
+
actionsToUse: actionsToUse,
|
|
4997
|
+
activeActionRowKey: activeActionRowKey,
|
|
4998
|
+
activeAnchorEl: activeAnchorEl,
|
|
4999
|
+
actionButtonRefs: actionButtonRefs,
|
|
5000
|
+
actionMenuRef: actionMenuRef,
|
|
5001
|
+
toggleExpandRow: toggleExpandRow,
|
|
5002
|
+
handleSelectRow: handleSelectRow,
|
|
5003
|
+
toggleActions: toggleActions,
|
|
5004
|
+
handleOnAction: handleOnAction,
|
|
5005
|
+
closeActionMenu: closeActionMenu,
|
|
5006
|
+
renderCell: renderCell
|
|
5007
|
+
};
|
|
4755
5008
|
return /*#__PURE__*/React__default.createElement("div", {
|
|
4756
5009
|
className: "w-full border rounded-lg md:rounded-md bg-white"
|
|
4757
|
-
}, /*#__PURE__*/React__default.createElement(
|
|
5010
|
+
}, TheadComponent && typeof TheadComponent === "function" ? /*#__PURE__*/React__default.createElement(TheadComponent, {
|
|
5011
|
+
columns: columnsState,
|
|
5012
|
+
data: filteredData
|
|
5013
|
+
}) : TheadComponent, /*#__PURE__*/React__default.createElement("div", {
|
|
4758
5014
|
className: "flex flex-col md:flex-row justify-between items-start md:items-center gap-3 p-4 border-b"
|
|
4759
5015
|
}, /*#__PURE__*/React__default.createElement("div", {
|
|
4760
5016
|
className: "flex flex-col sm:flex-row items-start sm:items-center gap-3 w-full md:w-auto"
|
|
@@ -4784,45 +5040,11 @@ var Table = function Table(_ref2) {
|
|
|
4784
5040
|
className: "flex flex-col sm:flex-row items-start sm:items-center gap-3 w-full md:w-auto"
|
|
4785
5041
|
}, /*#__PURE__*/React__default.createElement("div", {
|
|
4786
5042
|
className: "text-sm text-gray-700 whitespace-nowrap"
|
|
4787
|
-
}, filteredData.length === 0 ? 0 : startIndex + 1, " -", " ", Math.min(endIndex, filteredData.length), " of ", filteredData.length, " ", "results"), pagination && /*#__PURE__*/React__default.createElement(
|
|
4788
|
-
|
|
4789
|
-
|
|
4790
|
-
|
|
4791
|
-
|
|
4792
|
-
onClick: function onClick() {
|
|
4793
|
-
return handlePageChange(1);
|
|
4794
|
-
},
|
|
4795
|
-
"aria-label": "First page"
|
|
4796
|
-
}, /*#__PURE__*/React__default.createElement(ChevronsLeft, {
|
|
4797
|
-
className: "size-4 md:size-5 text-gray-800"
|
|
4798
|
-
})), /*#__PURE__*/React__default.createElement("button", {
|
|
4799
|
-
className: "rounded-lg md:rounded-md border border-gray-300 p-2 disabled:opacity-50 hover:bg-gray-50",
|
|
4800
|
-
disabled: currentPage === 1,
|
|
4801
|
-
onClick: function onClick() {
|
|
4802
|
-
return handlePageChange(Math.max(1, currentPage - 1));
|
|
4803
|
-
},
|
|
4804
|
-
"aria-label": "Previous page"
|
|
4805
|
-
}, /*#__PURE__*/React__default.createElement(ChevronLeft, {
|
|
4806
|
-
className: "size-4 md:size-5 text-gray-800"
|
|
4807
|
-
})), /*#__PURE__*/React__default.createElement("button", {
|
|
4808
|
-
className: "rounded-lg md:rounded-md border border-gray-300 p-2 disabled:opacity-50 hover:bg-gray-50",
|
|
4809
|
-
disabled: currentPage === totalPages,
|
|
4810
|
-
onClick: function onClick() {
|
|
4811
|
-
return handlePageChange(Math.min(totalPages, currentPage + 1));
|
|
4812
|
-
},
|
|
4813
|
-
"aria-label": "Next page"
|
|
4814
|
-
}, /*#__PURE__*/React__default.createElement(ChevronRight, {
|
|
4815
|
-
className: "size-4 md:size-5 text-gray-800"
|
|
4816
|
-
})), totalPages >= 4 && /*#__PURE__*/React__default.createElement("button", {
|
|
4817
|
-
className: "rounded-lg md:rounded-md border border-gray-300 p-2 disabled:opacity-50 hover:bg-gray-50",
|
|
4818
|
-
disabled: currentPage === totalPages,
|
|
4819
|
-
onClick: function onClick() {
|
|
4820
|
-
return handlePageChange(totalPages);
|
|
4821
|
-
},
|
|
4822
|
-
"aria-label": "Last page"
|
|
4823
|
-
}, /*#__PURE__*/React__default.createElement(ChevronsRight, {
|
|
4824
|
-
className: "size-4 md:size-5 text-gray-800"
|
|
4825
|
-
}))))), globalSearch && /*#__PURE__*/React__default.createElement("div", {
|
|
5043
|
+
}, filteredData.length === 0 ? 0 : startIndex + 1, " -", " ", Math.min(endIndex, filteredData.length), " of ", filteredData.length, " ", "results"), pagination && /*#__PURE__*/React__default.createElement(PaginationHeader, {
|
|
5044
|
+
currentPage: currentPage,
|
|
5045
|
+
totalPages: totalPages,
|
|
5046
|
+
onPageChange: handlePageChange
|
|
5047
|
+
}))), globalSearch && /*#__PURE__*/React__default.createElement("div", {
|
|
4826
5048
|
className: "p-4 border-b"
|
|
4827
5049
|
}, /*#__PURE__*/React__default.createElement("div", {
|
|
4828
5050
|
className: "flex flex-col sm:flex-row items-start sm:items-center gap-2"
|
|
@@ -4849,31 +5071,22 @@ var Table = function Table(_ref2) {
|
|
|
4849
5071
|
handleFilter("global", "");
|
|
4850
5072
|
},
|
|
4851
5073
|
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"
|
|
4852
|
-
}, "Clear"))), filterable && isMobileView &&
|
|
4853
|
-
|
|
4854
|
-
|
|
4855
|
-
|
|
4856
|
-
|
|
4857
|
-
|
|
4858
|
-
|
|
4859
|
-
|
|
4860
|
-
|
|
4861
|
-
|
|
4862
|
-
|
|
4863
|
-
|
|
4864
|
-
|
|
4865
|
-
|
|
4866
|
-
|
|
4867
|
-
|
|
4868
|
-
checked: col.isVisible !== false,
|
|
4869
|
-
onChange: function onChange() {
|
|
4870
|
-
return toggleColumnVisibility(col.key);
|
|
4871
|
-
},
|
|
4872
|
-
className: "rounded"
|
|
4873
|
-
}), /*#__PURE__*/React__default.createElement("span", {
|
|
4874
|
-
className: "text-sm font-normal"
|
|
4875
|
-
}, col.label));
|
|
4876
|
-
}))), !isMobileView && /*#__PURE__*/React__default.createElement("div", {
|
|
5074
|
+
}, "Clear"))), filterable && isMobileView && /*#__PURE__*/React__default.createElement(MobileFilters, {
|
|
5075
|
+
showMobileFilters: showMobileFilters,
|
|
5076
|
+
setShowMobileFilters: setShowMobileFilters,
|
|
5077
|
+
globalSearch: globalSearch,
|
|
5078
|
+
searchInput: searchInput,
|
|
5079
|
+
setSearchInput: setSearchInput,
|
|
5080
|
+
onGlobalKeyDown: onGlobalKeyDown,
|
|
5081
|
+
filterable: filterable,
|
|
5082
|
+
visibleColumns: visibleColumns,
|
|
5083
|
+
filters: filters,
|
|
5084
|
+
handleFilter: handleFilter
|
|
5085
|
+
}), showColumnMenu && /*#__PURE__*/React__default.createElement(ColumnMenu, {
|
|
5086
|
+
columns: columnsState,
|
|
5087
|
+
onToggle: toggleColumnVisibility,
|
|
5088
|
+
menuRef: columnMenuRef
|
|
5089
|
+
}), !isMobileView && /*#__PURE__*/React__default.createElement("div", {
|
|
4877
5090
|
className: "overflow-x-auto"
|
|
4878
5091
|
}, /*#__PURE__*/React__default.createElement("table", _extends({
|
|
4879
5092
|
className: cn$1("min-w-full divide-y divide-gray-200", className)
|
|
@@ -4975,7 +5188,15 @@ var Table = function Table(_ref2) {
|
|
|
4975
5188
|
className: "h-8 w-8"
|
|
4976
5189
|
})), /*#__PURE__*/React__default.createElement("span", {
|
|
4977
5190
|
className: "text-sm text-gray-500"
|
|
4978
|
-
}, "No results found.")))) :
|
|
5191
|
+
}, "No results found.")))) : paginatedData.map(function (row, rowIndexInPage) {
|
|
5192
|
+
return /*#__PURE__*/React__default.createElement(TableRow, _extends({
|
|
5193
|
+
key: getRowKey(row, startIndex + rowIndexInPage),
|
|
5194
|
+
row: row,
|
|
5195
|
+
rowIndexInPage: rowIndexInPage,
|
|
5196
|
+
startIndex: startIndex,
|
|
5197
|
+
visibleCount: visibleCount
|
|
5198
|
+
}, rowSharedProps));
|
|
5199
|
+
})))), isMobileView && /*#__PURE__*/React__default.createElement("div", {
|
|
4979
5200
|
className: "p-4"
|
|
4980
5201
|
}, loading ? /*#__PURE__*/React__default.createElement("div", {
|
|
4981
5202
|
className: "py-8 text-center"
|
|
@@ -4996,77 +5217,21 @@ var Table = function Table(_ref2) {
|
|
|
4996
5217
|
})), /*#__PURE__*/React__default.createElement("span", {
|
|
4997
5218
|
className: "text-sm text-gray-500"
|
|
4998
5219
|
}, "No results found."))) : paginatedData.map(function (row, rowIndexInPage) {
|
|
4999
|
-
return
|
|
5000
|
-
|
|
5001
|
-
|
|
5002
|
-
|
|
5003
|
-
|
|
5004
|
-
|
|
5005
|
-
|
|
5006
|
-
|
|
5007
|
-
|
|
5008
|
-
}
|
|
5009
|
-
|
|
5010
|
-
|
|
5011
|
-
|
|
5012
|
-
|
|
5013
|
-
|
|
5014
|
-
"aria-label": "First page"
|
|
5015
|
-
}, isMobileView ? /*#__PURE__*/React__default.createElement(ChevronsLeft, {
|
|
5016
|
-
className: "size-4 text-gray-800"
|
|
5017
|
-
}) : "First"), /*#__PURE__*/React__default.createElement("button", {
|
|
5018
|
-
className: cn$1("rounded-lg md:rounded-md border border-gray-300 disabled:opacity-50 hover:bg-gray-50", isMobileView ? "p-2" : "px-4 py-2 text-sm"),
|
|
5019
|
-
disabled: currentPage === 1,
|
|
5020
|
-
onClick: function onClick() {
|
|
5021
|
-
return handlePageChange(Math.max(1, currentPage - 1));
|
|
5022
|
-
},
|
|
5023
|
-
"aria-label": "Previous page"
|
|
5024
|
-
}, isMobileView ? /*#__PURE__*/React__default.createElement(ChevronLeft, {
|
|
5025
|
-
className: "size-4 text-gray-800"
|
|
5026
|
-
}) : "Previous"), /*#__PURE__*/React__default.createElement("div", {
|
|
5027
|
-
className: "flex items-center gap-1"
|
|
5028
|
-
}, Array.from({
|
|
5029
|
-
length: Math.min(isMobileView ? 5 : 3, totalPages)
|
|
5030
|
-
}, function (_, i) {
|
|
5031
|
-
var pageNum;
|
|
5032
|
-
if (totalPages <= 5) {
|
|
5033
|
-
pageNum = i + 1;
|
|
5034
|
-
} else if (currentPage <= 3) {
|
|
5035
|
-
pageNum = i + 1;
|
|
5036
|
-
} else if (currentPage >= totalPages - 2) {
|
|
5037
|
-
pageNum = totalPages - 4 + i;
|
|
5038
|
-
} else {
|
|
5039
|
-
pageNum = currentPage - 2 + i;
|
|
5040
|
-
}
|
|
5041
|
-
return /*#__PURE__*/React__default.createElement("button", {
|
|
5042
|
-
key: pageNum,
|
|
5043
|
-
className: cn$1("h-8 w-8 rounded-lg md:rounded-md text-sm", {
|
|
5044
|
-
"bg-primary-600 text-white": pageNum === currentPage,
|
|
5045
|
-
"border border-gray-300 hover:bg-gray-50": pageNum !== currentPage
|
|
5046
|
-
}),
|
|
5047
|
-
onClick: function onClick() {
|
|
5048
|
-
return handlePageChange(pageNum);
|
|
5049
|
-
}
|
|
5050
|
-
}, pageNum);
|
|
5051
|
-
})), /*#__PURE__*/React__default.createElement("button", {
|
|
5052
|
-
className: cn$1("rounded-lg md:rounded-md border border-gray-300 disabled:opacity-50 hover:bg-gray-50", isMobileView ? "p-2" : "px-4 py-2 text-sm"),
|
|
5053
|
-
disabled: currentPage === totalPages,
|
|
5054
|
-
onClick: function onClick() {
|
|
5055
|
-
return handlePageChange(Math.min(totalPages, currentPage + 1));
|
|
5056
|
-
},
|
|
5057
|
-
"aria-label": "Next page"
|
|
5058
|
-
}, isMobileView ? /*#__PURE__*/React__default.createElement(ChevronRight, {
|
|
5059
|
-
className: "size-4 text-gray-800"
|
|
5060
|
-
}) : "Next"), totalPages >= 4 && /*#__PURE__*/React__default.createElement("button", {
|
|
5061
|
-
className: cn$1("rounded-lg md:rounded-md border border-gray-300 disabled:opacity-50 hover:bg-gray-50", isMobileView ? "p-2" : "px-4 py-2 text-sm"),
|
|
5062
|
-
disabled: currentPage === totalPages,
|
|
5063
|
-
onClick: function onClick() {
|
|
5064
|
-
return handlePageChange(totalPages);
|
|
5065
|
-
},
|
|
5066
|
-
"aria-label": "Last page"
|
|
5067
|
-
}, isMobileView ? /*#__PURE__*/React__default.createElement(ChevronsRight, {
|
|
5068
|
-
className: "size-4 text-gray-800"
|
|
5069
|
-
}) : "Last")))));
|
|
5220
|
+
return /*#__PURE__*/React__default.createElement(MobileCard, _extends({
|
|
5221
|
+
key: getRowKey(row, startIndex + rowIndexInPage),
|
|
5222
|
+
row: row,
|
|
5223
|
+
rowIndexInPage: rowIndexInPage,
|
|
5224
|
+
startIndex: startIndex
|
|
5225
|
+
}, rowSharedProps));
|
|
5226
|
+
})), TfootComponent && typeof TfootComponent === "function" ? /*#__PURE__*/React__default.createElement(TfootComponent, {
|
|
5227
|
+
columns: columnsState,
|
|
5228
|
+
data: filteredData
|
|
5229
|
+
}) : TfootComponent, pagination && /*#__PURE__*/React__default.createElement(PaginationFooter, {
|
|
5230
|
+
currentPage: currentPage,
|
|
5231
|
+
totalPages: totalPages,
|
|
5232
|
+
onPageChange: handlePageChange,
|
|
5233
|
+
isMobileView: isMobileView
|
|
5234
|
+
}));
|
|
5070
5235
|
};
|
|
5071
5236
|
|
|
5072
5237
|
var isCheckBoxInput = (element) => element.type === 'checkbox';
|
|
@@ -17595,7 +17760,7 @@ var canUseDOM = () => !!(typeof window !== "undefined" && typeof window.document
|
|
|
17595
17760
|
var isDOM = /* @__PURE__ */ canUseDOM();
|
|
17596
17761
|
var isRunningInReactNative = () => typeof navigator !== "undefined" && navigator.product === "ReactNative";
|
|
17597
17762
|
var isReactNative = /* @__PURE__ */ isRunningInReactNative();
|
|
17598
|
-
var getUseIsomorphicLayoutEffect = () => isDOM || isReactNative ? React.useLayoutEffect : React.useEffect;
|
|
17763
|
+
var getUseIsomorphicLayoutEffect = () => isDOM || isReactNative ? React$1.useLayoutEffect : React$1.useEffect;
|
|
17599
17764
|
var useIsomorphicLayoutEffect = /* @__PURE__ */ getUseIsomorphicLayoutEffect();
|
|
17600
17765
|
|
|
17601
17766
|
// src/components/Context.ts
|
|
@@ -17605,17 +17770,17 @@ var gT = typeof globalThis !== "undefined" ? globalThis : (
|
|
|
17605
17770
|
{}
|
|
17606
17771
|
);
|
|
17607
17772
|
function getContext() {
|
|
17608
|
-
if (!React.createContext) return {};
|
|
17773
|
+
if (!React$1.createContext) return {};
|
|
17609
17774
|
const contextMap = gT[ContextKey] ??= /* @__PURE__ */ new Map();
|
|
17610
|
-
let realContext = contextMap.get(React.createContext);
|
|
17775
|
+
let realContext = contextMap.get(React$1.createContext);
|
|
17611
17776
|
if (!realContext) {
|
|
17612
|
-
realContext = React.createContext(
|
|
17777
|
+
realContext = React$1.createContext(
|
|
17613
17778
|
null
|
|
17614
17779
|
);
|
|
17615
17780
|
if (process.env.NODE_ENV !== "production") {
|
|
17616
17781
|
realContext.displayName = "ReactRedux";
|
|
17617
17782
|
}
|
|
17618
|
-
contextMap.set(React.createContext, realContext);
|
|
17783
|
+
contextMap.set(React$1.createContext, realContext);
|
|
17619
17784
|
}
|
|
17620
17785
|
return realContext;
|
|
17621
17786
|
}
|
|
@@ -17624,7 +17789,7 @@ var ReactReduxContext = /* @__PURE__ */ getContext();
|
|
|
17624
17789
|
// src/components/Provider.tsx
|
|
17625
17790
|
function Provider(providerProps) {
|
|
17626
17791
|
const { children, context, serverState, store } = providerProps;
|
|
17627
|
-
const contextValue = React.useMemo(() => {
|
|
17792
|
+
const contextValue = React$1.useMemo(() => {
|
|
17628
17793
|
const subscription = createSubscription(store);
|
|
17629
17794
|
const baseContextValue = {
|
|
17630
17795
|
store,
|
|
@@ -17641,7 +17806,7 @@ function Provider(providerProps) {
|
|
|
17641
17806
|
});
|
|
17642
17807
|
}
|
|
17643
17808
|
}, [store, serverState]);
|
|
17644
|
-
const previousState = React.useMemo(() => store.getState(), [store]);
|
|
17809
|
+
const previousState = React$1.useMemo(() => store.getState(), [store]);
|
|
17645
17810
|
useIsomorphicLayoutEffect(() => {
|
|
17646
17811
|
const { subscription } = contextValue;
|
|
17647
17812
|
subscription.onStateChange = subscription.notifyNestedSubs;
|
|
@@ -17655,14 +17820,14 @@ function Provider(providerProps) {
|
|
|
17655
17820
|
};
|
|
17656
17821
|
}, [contextValue, previousState]);
|
|
17657
17822
|
const Context = context || ReactReduxContext;
|
|
17658
|
-
return /* @__PURE__ */ React.createElement(Context.Provider, { value: contextValue }, children);
|
|
17823
|
+
return /* @__PURE__ */ React$1.createElement(Context.Provider, { value: contextValue }, children);
|
|
17659
17824
|
}
|
|
17660
17825
|
var Provider_default = Provider;
|
|
17661
17826
|
|
|
17662
17827
|
// src/hooks/useReduxContext.ts
|
|
17663
17828
|
function createReduxContextHook(context = ReactReduxContext) {
|
|
17664
17829
|
return function useReduxContext2() {
|
|
17665
|
-
const contextValue = React.useContext(context);
|
|
17830
|
+
const contextValue = React$1.useContext(context);
|
|
17666
17831
|
if (process.env.NODE_ENV !== "production" && !contextValue) {
|
|
17667
17832
|
throw new Error(
|
|
17668
17833
|
"could not find react-redux context value; please ensure the component is wrapped in a <Provider>"
|
|
@@ -17723,8 +17888,8 @@ function createSelectorHook(context = ReactReduxContext) {
|
|
|
17723
17888
|
}
|
|
17724
17889
|
const reduxContext = useReduxContext2();
|
|
17725
17890
|
const { store, subscription, getServerState } = reduxContext;
|
|
17726
|
-
const firstRun = React.useRef(true);
|
|
17727
|
-
const wrappedSelector = React.useCallback(
|
|
17891
|
+
const firstRun = React$1.useRef(true);
|
|
17892
|
+
const wrappedSelector = React$1.useCallback(
|
|
17728
17893
|
{
|
|
17729
17894
|
[selector.name](state) {
|
|
17730
17895
|
const selected = selector(state);
|
|
@@ -17787,7 +17952,7 @@ function createSelectorHook(context = ReactReduxContext) {
|
|
|
17787
17952
|
wrappedSelector,
|
|
17788
17953
|
equalityFn
|
|
17789
17954
|
);
|
|
17790
|
-
React.useDebugValue(selectedState);
|
|
17955
|
+
React$1.useDebugValue(selectedState);
|
|
17791
17956
|
return selectedState;
|
|
17792
17957
|
};
|
|
17793
17958
|
Object.assign(useSelector2, {
|