tabler-react-2 0.1.126 → 0.1.127

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.
@@ -113,7 +113,7 @@ var DropdownInput = exports.DropdownInput = function DropdownInput(_ref) {
113
113
  var dropdownContent = /*#__PURE__*/_react["default"].createElement("div", _extends({
114
114
  className: "dropdown"
115
115
  }, props), /*#__PURE__*/_react["default"].createElement("a", _extends({
116
- href: "#",
116
+ href: "javascript:void(0)",
117
117
  className: "btn dropdown-toggle ".concat(props.disabled ? "disabled" : "", " ").concat(color ? "btn-".concat(outline ? "outline-" : "").concat(color) : ""),
118
118
  "data-bs-toggle": "dropdown"
119
119
  }, aprops), selectedValue ? selectedValue.label : prompt), /*#__PURE__*/_react["default"].createElement("div", {
@@ -156,7 +156,7 @@ var DropdownInput = exports.DropdownInput = function DropdownInput(_ref) {
156
156
  style: {
157
157
  cursor: isItemDisabled ? "not-allowed" : "pointer"
158
158
  },
159
- href: v.href || "#"
159
+ href: v.href || "javascript:void(0)"
160
160
  }, v.icon && /*#__PURE__*/_react["default"].createElement("span", {
161
161
  className: "dropdown-item-icon"
162
162
  }, v.icon), (_v$dropdownText = v.dropdownText) !== null && _v$dropdownText !== void 0 ? _v$dropdownText : v.label);
@@ -4,9 +4,10 @@ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" ==
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- exports.Table = void 0;
7
+ exports.Table = exports.IconSortDescending = exports.IconSortAscending = exports.IconArrowsSort = void 0;
8
8
  var _react = _interopRequireWildcard(require("react"));
9
9
  var _propTypes = _interopRequireDefault(require("prop-types"));
10
+ var _index = require("../index");
10
11
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
11
12
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
12
13
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
@@ -20,7 +21,7 @@ function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r)
20
21
  function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
21
22
  function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
22
23
  function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
23
- var IconSortDescending = function IconSortDescending(_ref) {
24
+ var IconSortDescending = exports.IconSortDescending = function IconSortDescending(_ref) {
24
25
  var size = _ref.size;
25
26
  return /*#__PURE__*/_react["default"].createElement("svg", {
26
27
  xmlns: "http://www.w3.org/2000/svg",
@@ -49,7 +50,7 @@ var IconSortDescending = function IconSortDescending(_ref) {
49
50
  d: "M18 6l0 12"
50
51
  }));
51
52
  };
52
- var IconSortAscending = function IconSortAscending(_ref2) {
53
+ var IconSortAscending = exports.IconSortAscending = function IconSortAscending(_ref2) {
53
54
  var size = _ref2.size;
54
55
  return /*#__PURE__*/_react["default"].createElement("svg", {
55
56
  xmlns: "http://www.w3.org/2000/svg",
@@ -78,7 +79,7 @@ var IconSortAscending = function IconSortAscending(_ref2) {
78
79
  d: "M18 6l0 12"
79
80
  }));
80
81
  };
81
- var IconArrowsSort = function IconArrowsSort(_ref3) {
82
+ var IconArrowsSort = exports.IconArrowsSort = function IconArrowsSort(_ref3) {
82
83
  var size = _ref3.size;
83
84
  return /*#__PURE__*/_react["default"].createElement("svg", {
84
85
  xmlns: "http://www.w3.org/2000/svg",
@@ -109,9 +110,16 @@ var getValueByAccessor = function getValueByAccessor(object, accessor) {
109
110
  var Table = exports.Table = function Table(_ref4) {
110
111
  var columns = _ref4.columns,
111
112
  data = _ref4.data,
112
- nowrap = _ref4.nowrap,
113
- stickyHeader = _ref4.stickyHeader,
114
- className = _ref4.className;
113
+ _ref4$nowrap = _ref4.nowrap,
114
+ nowrap = _ref4$nowrap === void 0 ? false : _ref4$nowrap,
115
+ _ref4$stickyHeader = _ref4.stickyHeader,
116
+ stickyHeader = _ref4$stickyHeader === void 0 ? false : _ref4$stickyHeader,
117
+ _ref4$className = _ref4.className,
118
+ className = _ref4$className === void 0 ? "" : _ref4$className,
119
+ _ref4$showPagination = _ref4.showPagination,
120
+ showPagination = _ref4$showPagination === void 0 ? false : _ref4$showPagination,
121
+ _ref4$defaultRowsPerP = _ref4.defaultRowsPerPage,
122
+ defaultRowsPerPage = _ref4$defaultRowsPerP === void 0 ? 10 : _ref4$defaultRowsPerP;
115
123
  var _useState = (0, _react.useState)({
116
124
  key: null,
117
125
  direction: "asc"
@@ -119,6 +127,14 @@ var Table = exports.Table = function Table(_ref4) {
119
127
  _useState2 = _slicedToArray(_useState, 2),
120
128
  sortConfig = _useState2[0],
121
129
  setSortConfig = _useState2[1];
130
+ var _useState3 = (0, _react.useState)(1),
131
+ _useState4 = _slicedToArray(_useState3, 2),
132
+ currentPage = _useState4[0],
133
+ setCurrentPage = _useState4[1];
134
+ var _useState5 = (0, _react.useState)(defaultRowsPerPage),
135
+ _useState6 = _slicedToArray(_useState5, 2),
136
+ pageSize = _useState6[0],
137
+ setPageSize = _useState6[1];
122
138
  var defaultSortFn = function defaultSortFn(a, b) {
123
139
  if (a === b) return 0;
124
140
  return a > b ? 1 : -1;
@@ -132,24 +148,32 @@ var Table = exports.Table = function Table(_ref4) {
132
148
  key: accessor,
133
149
  direction: direction
134
150
  });
151
+ setCurrentPage(1);
135
152
  };
136
- var sortedData = _react["default"].useMemo(function () {
137
- if (sortConfig.key) {
138
- var key = sortConfig.key,
139
- direction = sortConfig.direction;
140
- var sortColumn = columns.find(function (col) {
141
- return col.accessor === key;
142
- });
143
- var sortFunction = (sortColumn === null || sortColumn === void 0 ? void 0 : sortColumn.sortFn) || defaultSortFn;
144
- return _toConsumableArray(data).sort(function (a, b) {
145
- var aValue = getValueByAccessor(a, key);
146
- var bValue = getValueByAccessor(b, key);
147
- var order = direction === "asc" ? 1 : -1;
148
- return sortFunction(aValue, bValue) * order;
149
- });
150
- }
151
- return data;
153
+ var sortedData = (0, _react.useMemo)(function () {
154
+ if (!sortConfig.key) return data;
155
+ var key = sortConfig.key,
156
+ direction = sortConfig.direction;
157
+ var sortColumn = columns.find(function (col) {
158
+ return col.accessor === key;
159
+ });
160
+ var sortFunction = (sortColumn === null || sortColumn === void 0 ? void 0 : sortColumn.sortFn) || defaultSortFn;
161
+ var order = direction === "asc" ? 1 : -1;
162
+ return _toConsumableArray(data).sort(function (a, b) {
163
+ var aValue = getValueByAccessor(a, key);
164
+ var bValue = getValueByAccessor(b, key);
165
+ return sortFunction(aValue, bValue) * order;
166
+ });
152
167
  }, [data, sortConfig, columns]);
168
+ var pageSizeOptions = [10, 25, 50, 100];
169
+ var totalPages = (0, _react.useMemo)(function () {
170
+ return Math.max(1, Math.ceil(sortedData.length / pageSize));
171
+ }, [sortedData, pageSize]);
172
+ var paginatedData = (0, _react.useMemo)(function () {
173
+ if (!showPagination) return sortedData;
174
+ var start = (currentPage - 1) * pageSize;
175
+ return sortedData.slice(start, start + pageSize);
176
+ }, [sortedData, currentPage, pageSize, showPagination]);
153
177
  var getSortIcon = function getSortIcon(column) {
154
178
  if (sortConfig.key === column.accessor) {
155
179
  return sortConfig.direction === "asc" ? /*#__PURE__*/_react["default"].createElement(IconSortAscending, {
@@ -166,26 +190,26 @@ var Table = exports.Table = function Table(_ref4) {
166
190
  className: "table-responsive ".concat(nowrap ? "table-nowrap" : "", " ").concat(className)
167
191
  }, /*#__PURE__*/_react["default"].createElement("table", {
168
192
  className: "table table-vcenter ".concat(stickyHeader ? "sticky-top" : "")
169
- }, /*#__PURE__*/_react["default"].createElement("thead", null, /*#__PURE__*/_react["default"].createElement("tr", null, columns.map(function (column, index) {
193
+ }, /*#__PURE__*/_react["default"].createElement("thead", null, /*#__PURE__*/_react["default"].createElement("tr", null, columns.map(function (column, idx) {
170
194
  return /*#__PURE__*/_react["default"].createElement("th", {
171
- key: index,
195
+ key: idx,
172
196
  className: "".concat(column.className || "", " ").concat(column.sortable ? "sortable" : ""),
173
197
  onClick: column.sortable ? function () {
174
- return handleSort(column.accessor, column === null || column === void 0 ? void 0 : column.sortFn);
198
+ return handleSort(column.accessor, column.sortFn);
175
199
  } : undefined,
176
200
  style: {
177
201
  cursor: column.sortable ? "pointer" : "default"
178
202
  }
179
203
  }, column.icon && /*#__PURE__*/_react["default"].createElement("span", {
180
204
  style: {
181
- marginRight: "8px"
205
+ marginRight: 8
182
206
  }
183
207
  }, column.icon), /*#__PURE__*/_react["default"].createElement("span", {
184
208
  style: {
185
- marginRight: "8px"
209
+ marginRight: 8
186
210
  }
187
211
  }, column.label), column.sortable && getSortIcon(column));
188
- }))), /*#__PURE__*/_react["default"].createElement("tbody", null, sortedData.map(function (row, rowIndex) {
212
+ }))), /*#__PURE__*/_react["default"].createElement("tbody", null, paginatedData.map(function (row, rowIndex) {
189
213
  return /*#__PURE__*/_react["default"].createElement("tr", {
190
214
  key: rowIndex
191
215
  }, columns.map(function (column, colIndex) {
@@ -194,21 +218,57 @@ var Table = exports.Table = function Table(_ref4) {
194
218
  className: column.className || ""
195
219
  }, column.render ? column.render(getValueByAccessor(row, column.accessor), row) : getValueByAccessor(row, column.accessor));
196
220
  }));
197
- }))));
221
+ }))), showPagination && /*#__PURE__*/_react["default"].createElement("div", {
222
+ className: "d-flex justify-content-between align-items-center mt-2"
223
+ }, /*#__PURE__*/_react["default"].createElement("div", null, /*#__PURE__*/_react["default"].createElement(_index.Button, {
224
+ onClick: function onClick() {
225
+ return setCurrentPage(function (p) {
226
+ return Math.max(p - 1, 1);
227
+ });
228
+ },
229
+ disabled: currentPage === 1
230
+ }, "Previous"), /*#__PURE__*/_react["default"].createElement(_index.Button, {
231
+ onClick: function onClick() {
232
+ return setCurrentPage(function (p) {
233
+ return Math.min(p + 1, totalPages);
234
+ });
235
+ },
236
+ disabled: currentPage === totalPages,
237
+ style: {
238
+ marginLeft: 8
239
+ }
240
+ }, "Next"), /*#__PURE__*/_react["default"].createElement("span", {
241
+ style: {
242
+ marginLeft: 16
243
+ }
244
+ }, "Page ", currentPage, " of ", totalPages)), /*#__PURE__*/_react["default"].createElement(_index.DropdownInput, {
245
+ prompt: "Rows per page",
246
+ items: pageSizeOptions.map(function (size) {
247
+ return {
248
+ id: size,
249
+ label: size
250
+ };
251
+ }),
252
+ onChange: function onChange(selected) {
253
+ setPageSize(selected.id);
254
+ setCurrentPage(1);
255
+ }
256
+ })));
198
257
  };
199
258
  Table.propTypes = {
200
259
  columns: _propTypes["default"].arrayOf(_propTypes["default"].shape({
201
260
  label: _propTypes["default"].string.isRequired,
202
261
  accessor: _propTypes["default"].string.isRequired,
203
262
  className: _propTypes["default"].string,
204
- // Optional: For adding specific CSS classes
205
263
  render: _propTypes["default"].func,
206
- // Optional: Custom render function for the cell content
207
264
  sortable: _propTypes["default"].bool,
208
- // Optional: Determines if the column is sortable
209
- sortFn: _propTypes["default"].func // Optional: Custom sorting function
265
+ sortFn: _propTypes["default"].func,
266
+ icon: _propTypes["default"].node
210
267
  })).isRequired,
211
268
  data: _propTypes["default"].arrayOf(_propTypes["default"].object).isRequired,
212
269
  nowrap: _propTypes["default"].bool,
213
- stickyHeader: _propTypes["default"].bool
270
+ stickyHeader: _propTypes["default"].bool,
271
+ className: _propTypes["default"].string,
272
+ showPagination: _propTypes["default"].bool,
273
+ defaultRowsPerPage: _propTypes["default"].number
214
274
  };
@@ -2,7 +2,7 @@
2
2
  title: Changelog
3
3
  ---
4
4
 
5
- # 0.1.125
5
+ # 0.1.126
6
6
 
7
7
  - Added support for `disabled` in the `DropdownInput` component.
8
8
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tabler-react-2",
3
- "version": "0.1.126",
3
+ "version": "0.1.127",
4
4
  "description": "A react implementation of Tabler ui",
5
5
  "main": "dist/index.js",
6
6
  "scripts": {