@dreamtree-org/twreact-ui 1.0.70 → 1.0.71
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.esm.js +58 -75
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +58 -75
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -3883,7 +3883,7 @@ var Select = /*#__PURE__*/React.forwardRef(function (_ref, forwardedRef) {
|
|
|
3883
3883
|
}, error));
|
|
3884
3884
|
});
|
|
3885
3885
|
|
|
3886
|
-
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"];
|
|
3886
|
+
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", "onPageChange"];
|
|
3887
3887
|
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; }
|
|
3888
3888
|
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; }
|
|
3889
3889
|
var Table = function Table(_ref) {
|
|
@@ -3937,7 +3937,13 @@ var Table = function Table(_ref) {
|
|
|
3937
3937
|
stripedColors = _ref$stripedColors === void 0 ? ["#ffffff", "#f7fafc"] : _ref$stripedColors,
|
|
3938
3938
|
_ref$responsiveBreakp = _ref.responsiveBreakpoint,
|
|
3939
3939
|
responsiveBreakpoint = _ref$responsiveBreakp === void 0 ? 768 : _ref$responsiveBreakp,
|
|
3940
|
-
|
|
3940
|
+
_ref$serverSide = _ref.serverSide,
|
|
3941
|
+
serverSide = _ref$serverSide === void 0 ? false : _ref$serverSide,
|
|
3942
|
+
_ref$totalRecords = _ref.totalRecords,
|
|
3943
|
+
totalRecords = _ref$totalRecords === void 0 ? 0 : _ref$totalRecords,
|
|
3944
|
+
pageNumber = _ref.pageNumber;
|
|
3945
|
+
_ref.onPageChange;
|
|
3946
|
+
var props = _objectWithoutProperties$1(_ref, _excluded$k);
|
|
3941
3947
|
// State for responsive view
|
|
3942
3948
|
var _useState = React.useState(false),
|
|
3943
3949
|
_useState2 = _slicedToArray(_useState, 2),
|
|
@@ -3998,7 +4004,7 @@ var Table = function Table(_ref) {
|
|
|
3998
4004
|
_useState16 = _slicedToArray(_useState15, 2),
|
|
3999
4005
|
expandedRows = _useState16[0],
|
|
4000
4006
|
setExpandedRows = _useState16[1];
|
|
4001
|
-
var _useState17 = React.useState(1),
|
|
4007
|
+
var _useState17 = React.useState(typeof pageNumber === "number" ? pageNumber : 1),
|
|
4002
4008
|
_useState18 = _slicedToArray(_useState17, 2),
|
|
4003
4009
|
currentPage = _useState18[0],
|
|
4004
4010
|
setCurrentPage = _useState18[1];
|
|
@@ -4028,6 +4034,14 @@ var Table = function Table(_ref) {
|
|
|
4028
4034
|
openActionKey = _useState28[0],
|
|
4029
4035
|
setOpenActionKey = _useState28[1];
|
|
4030
4036
|
var openRef = React.useRef(null);
|
|
4037
|
+
React.useEffect(function () {
|
|
4038
|
+
if (typeof pageNumber === "number" && pageNumber !== currentPage) {
|
|
4039
|
+
setCurrentPage(pageNumber);
|
|
4040
|
+
}
|
|
4041
|
+
}, [pageNumber]);
|
|
4042
|
+
React.useEffect(function () {
|
|
4043
|
+
setLimit(pageSize);
|
|
4044
|
+
}, [pageSize]);
|
|
4031
4045
|
|
|
4032
4046
|
// Check if mobile view
|
|
4033
4047
|
React.useEffect(function () {
|
|
@@ -4047,9 +4061,6 @@ var Table = function Table(_ref) {
|
|
|
4047
4061
|
var isValidList = function isValidList(d) {
|
|
4048
4062
|
return Array.isArray(d);
|
|
4049
4063
|
};
|
|
4050
|
-
var setDataForExternal = function setDataForExternal(newData) {
|
|
4051
|
-
if (isValidList(newData)) setTableData(newData);else setTableData([]);
|
|
4052
|
-
};
|
|
4053
4064
|
|
|
4054
4065
|
// Close column menu when clicking outside
|
|
4055
4066
|
React.useEffect(function () {
|
|
@@ -4146,70 +4157,42 @@ var Table = function Table(_ref) {
|
|
|
4146
4157
|
|
|
4147
4158
|
// Sorting
|
|
4148
4159
|
var sortedData = React.useMemo(function () {
|
|
4149
|
-
if (!sortConfig.key) return tableData;
|
|
4160
|
+
if (serverSide || !sortConfig.key) return tableData;
|
|
4150
4161
|
var key = sortConfig.key,
|
|
4151
4162
|
direction = sortConfig.direction;
|
|
4152
4163
|
return _toConsumableArray$1(tableData).sort(function (a, b) {
|
|
4153
|
-
var
|
|
4154
|
-
var
|
|
4155
|
-
if (
|
|
4156
|
-
if (
|
|
4157
|
-
|
|
4158
|
-
if (typeof aValue === "number" && typeof bValue === "number") {
|
|
4159
|
-
return direction === "asc" ? aValue - bValue : bValue - aValue;
|
|
4160
|
-
}
|
|
4161
|
-
var aStr = String(aValue).toLowerCase();
|
|
4162
|
-
var bStr = String(bValue).toLowerCase();
|
|
4163
|
-
if (aStr < bStr) return direction === "asc" ? -1 : 1;
|
|
4164
|
-
if (aStr > bStr) return direction === "asc" ? 1 : -1;
|
|
4165
|
-
return 0;
|
|
4164
|
+
var av = a === null || a === void 0 ? void 0 : a[key];
|
|
4165
|
+
var bv = b === null || b === void 0 ? void 0 : b[key];
|
|
4166
|
+
if (av == null || bv == null) return 0;
|
|
4167
|
+
if (typeof av === "number") return direction === "asc" ? av - bv : bv - av;
|
|
4168
|
+
return direction === "asc" ? String(av).localeCompare(String(bv)) : String(bv).localeCompare(String(av));
|
|
4166
4169
|
});
|
|
4167
|
-
}, [tableData, sortConfig]);
|
|
4170
|
+
}, [tableData, sortConfig, serverSide]);
|
|
4168
4171
|
|
|
4169
4172
|
// Filtering
|
|
4170
4173
|
var filteredData = React.useMemo(function () {
|
|
4171
|
-
if (!filterable || Object.keys(filters).length
|
|
4172
|
-
var
|
|
4174
|
+
if (serverSide || !filterable || !Object.keys(filters).length) return sortedData;
|
|
4175
|
+
var q = (filters.global || "").toLowerCase();
|
|
4173
4176
|
return sortedData.filter(function (row) {
|
|
4174
|
-
|
|
4175
|
-
|
|
4176
|
-
var _ref3 = _slicedToArray(_ref2, 2),
|
|
4177
|
-
key = _ref3[0],
|
|
4178
|
-
value = _ref3[1];
|
|
4179
|
-
if (key === "global") return true;
|
|
4180
|
-
if (!value) return true;
|
|
4181
|
-
var cell = row === null || row === void 0 ? void 0 : row[key];
|
|
4182
|
-
if (cell == null) return false;
|
|
4183
|
-
return String(cell).toLowerCase().includes(String(value).toLowerCase());
|
|
4177
|
+
return Object.values(row || {}).some(function (v) {
|
|
4178
|
+
return String(v).toLowerCase().includes(q);
|
|
4184
4179
|
});
|
|
4185
|
-
if (!perColumnOk) return false;
|
|
4186
|
-
|
|
4187
|
-
// Global filter
|
|
4188
|
-
if (globalQuery) {
|
|
4189
|
-
var matchesVisible = visibleColumns.some(function (col) {
|
|
4190
|
-
var v = row === null || row === void 0 ? void 0 : row[col.key];
|
|
4191
|
-
if (v == null) return false;
|
|
4192
|
-
return String(v).toLowerCase().includes(globalQuery);
|
|
4193
|
-
});
|
|
4194
|
-
if (matchesVisible) return true;
|
|
4195
|
-
return Object.values(row || {}).some(function (v) {
|
|
4196
|
-
return v != null ? String(v).toLowerCase().includes(globalQuery) : false;
|
|
4197
|
-
});
|
|
4198
|
-
}
|
|
4199
|
-
return true;
|
|
4200
4180
|
});
|
|
4201
|
-
}, [sortedData, filters, filterable,
|
|
4202
|
-
|
|
4181
|
+
}, [sortedData, filters, filterable, serverSide]);
|
|
4203
4182
|
// Pagination indices
|
|
4204
4183
|
var startIndex = pagination ? (currentPage - 1) * limit : 0;
|
|
4205
4184
|
var endIndex = pagination ? startIndex + limit : filteredData.length;
|
|
4206
4185
|
|
|
4207
4186
|
// Paginated view
|
|
4208
4187
|
var paginatedData = React.useMemo(function () {
|
|
4209
|
-
if (!pagination) return filteredData;
|
|
4210
|
-
|
|
4211
|
-
|
|
4212
|
-
|
|
4188
|
+
if (!pagination || serverSide) return filteredData;
|
|
4189
|
+
var start = (currentPage - 1) * limit;
|
|
4190
|
+
return filteredData.slice(start, start + limit);
|
|
4191
|
+
}, [filteredData, pagination, serverSide, currentPage, limit]);
|
|
4192
|
+
var totalPages = React.useMemo(function () {
|
|
4193
|
+
if (!pagination) return 1;
|
|
4194
|
+
return serverSide ? Math.max(1, Math.ceil((totalRecords || 0) / limit)) : Math.max(1, Math.ceil(filteredData.length / limit));
|
|
4195
|
+
}, [pagination, serverSide, totalRecords, filteredData.length, limit]);
|
|
4213
4196
|
|
|
4214
4197
|
// Sorting handler
|
|
4215
4198
|
var handleSort = function handleSort(key) {
|
|
@@ -4324,17 +4307,19 @@ var Table = function Table(_ref) {
|
|
|
4324
4307
|
React.useEffect(function () {
|
|
4325
4308
|
if (!onFetch) return;
|
|
4326
4309
|
onFetch({
|
|
4327
|
-
setData:
|
|
4328
|
-
|
|
4310
|
+
setData: function setData(rows) {
|
|
4311
|
+
return setTableData(Array.isArray(rows) ? rows : []);
|
|
4312
|
+
},
|
|
4329
4313
|
setLoading: setLoading,
|
|
4330
|
-
|
|
4331
|
-
|
|
4332
|
-
|
|
4333
|
-
|
|
4334
|
-
nextRecords: paginatedData
|
|
4335
|
-
}
|
|
4314
|
+
filters: filters,
|
|
4315
|
+
page: currentPage,
|
|
4316
|
+
limit: limit,
|
|
4317
|
+
sort: sortConfig
|
|
4336
4318
|
});
|
|
4337
|
-
}, [filters, currentPage, limit]);
|
|
4319
|
+
}, [onFetch, filters, currentPage, limit, sortConfig]);
|
|
4320
|
+
React.useEffect(function () {
|
|
4321
|
+
if (!serverSide) setTableData(data);
|
|
4322
|
+
}, [data, serverSide]);
|
|
4338
4323
|
React.useEffect(function () {
|
|
4339
4324
|
if (!onFetch && isValidList(data)) setTableData(data);
|
|
4340
4325
|
}, [data, onFetch]);
|
|
@@ -4352,13 +4337,11 @@ var Table = function Table(_ref) {
|
|
|
4352
4337
|
applyGlobalSearch();
|
|
4353
4338
|
}
|
|
4354
4339
|
};
|
|
4355
|
-
React.useEffect(function () {
|
|
4356
|
-
setLimit(pageSize);
|
|
4357
|
-
}, [pageSize]);
|
|
4358
4340
|
var handleLimitChange = function handleLimitChange(nextLimit) {
|
|
4359
4341
|
var parsed = Number(nextLimit);
|
|
4360
4342
|
if (!Number.isFinite(parsed) || parsed <= 0) return;
|
|
4361
4343
|
setLimit(parsed);
|
|
4344
|
+
setCurrentPage(1);
|
|
4362
4345
|
onLimitChange === null || onLimitChange === void 0 || onLimitChange(parsed);
|
|
4363
4346
|
};
|
|
4364
4347
|
|
|
@@ -4701,7 +4684,7 @@ var Table = function Table(_ref) {
|
|
|
4701
4684
|
}, /*#__PURE__*/React.createElement("input", {
|
|
4702
4685
|
type: "text",
|
|
4703
4686
|
placeholder: "Filter ".concat(column.label),
|
|
4704
|
-
className: "w-full rounded-md border border-gray-300 px-3 py-1.5 text-sm",
|
|
4687
|
+
className: "w-full rounded-md border border-gray-300 px-3 py-1.5 text-sm font-normal",
|
|
4705
4688
|
value: filters[column.key] || "",
|
|
4706
4689
|
onChange: function onChange(e) {
|
|
4707
4690
|
return handleFilter(column.key, e.target.value);
|
|
@@ -4901,14 +4884,14 @@ var Table = function Table(_ref) {
|
|
|
4901
4884
|
}
|
|
4902
4885
|
}, "Next")))));
|
|
4903
4886
|
};
|
|
4904
|
-
function ActionMenuPortal(
|
|
4905
|
-
var anchorElem =
|
|
4906
|
-
anchorRow =
|
|
4907
|
-
|
|
4908
|
-
actions =
|
|
4909
|
-
|
|
4910
|
-
var onAction =
|
|
4911
|
-
menuRef =
|
|
4887
|
+
function ActionMenuPortal(_ref2) {
|
|
4888
|
+
var anchorElem = _ref2.anchorElem,
|
|
4889
|
+
anchorRow = _ref2.anchorRow,
|
|
4890
|
+
_ref2$actions = _ref2.actions,
|
|
4891
|
+
actions = _ref2$actions === void 0 ? [] : _ref2$actions;
|
|
4892
|
+
_ref2.onClose;
|
|
4893
|
+
var onAction = _ref2.onAction,
|
|
4894
|
+
menuRef = _ref2.menuRef;
|
|
4912
4895
|
var _useState29 = React.useState({
|
|
4913
4896
|
left: 0,
|
|
4914
4897
|
top: 0,
|