achery-ui 0.5.7 → 0.5.8

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.cjs CHANGED
@@ -1013,7 +1013,13 @@ function AppBar({
1013
1013
 
1014
1014
  // src/components/Table/Table.css.ts
1015
1015
  var emptyState = "Table_emptyState__1a2tbysb";
1016
+ var pageButton = "Table_pageButton__1a2tbyse";
1017
+ var pageButtonActive = "Table_pageButtonActive__1a2tbysg Table_pageButton__1a2tbyse";
1018
+ var pageNavButton = "Table_pageNavButton__1a2tbysf Table_pageButton__1a2tbyse";
1019
+ var pageSizeSelect = "Table_pageSizeSelect__1a2tbysi";
1016
1020
  var pagination = "Table_pagination__1a2tbysc";
1021
+ var paginationControls = "Table_paginationControls__1a2tbysd";
1022
+ var paginationEllipsis = "Table_paginationEllipsis__1a2tbysh";
1017
1023
  var sortIndicator = "Table_sortIndicator__1a2tbys6";
1018
1024
  var table = "Table_table__1a2tbys2";
1019
1025
  var tableScroll = "Table_tableScroll__1a2tbys1";
@@ -1025,6 +1031,22 @@ var thSortable = "Table_thSortable__1a2tbys5 Table_th__1a2tbys4";
1025
1031
  var thead = "Table_thead__1a2tbys3";
1026
1032
  var toolbar = "Table_toolbar__1a2tbysa";
1027
1033
  var tr = "Table_tr__1a2tbys7";
1034
+ function buildPageWindow(current, total, window2) {
1035
+ const pages = /* @__PURE__ */ new Set();
1036
+ pages.add(0);
1037
+ pages.add(total - 1);
1038
+ for (let i = Math.max(0, current - window2); i <= Math.min(total - 1, current + window2); i++) {
1039
+ pages.add(i);
1040
+ }
1041
+ const sorted = Array.from(pages).sort((a, b) => a - b);
1042
+ const result = [];
1043
+ for (let i = 0; i < sorted.length; i++) {
1044
+ const page = sorted[i];
1045
+ if (i > 0 && page - sorted[i - 1] > 1) result.push(null);
1046
+ result.push(page);
1047
+ }
1048
+ return result;
1049
+ }
1028
1050
  function Table({
1029
1051
  columns,
1030
1052
  data,
@@ -1040,6 +1062,9 @@ function Table({
1040
1062
  pageSize,
1041
1063
  totalRows,
1042
1064
  onPageChange,
1065
+ onPageSizeChange,
1066
+ pageSizeOptions,
1067
+ paginationWindow = 2,
1043
1068
  toolbar: toolbar2,
1044
1069
  emptyState: emptyState2,
1045
1070
  className
@@ -1116,35 +1141,38 @@ function Table({
1116
1141
  }
1117
1142
  ),
1118
1143
  pageSize && totalPages !== null && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: pagination, children: [
1119
- /* @__PURE__ */ jsxRuntime.jsx(
1120
- Button,
1144
+ pageSizeOptions && /* @__PURE__ */ jsxRuntime.jsx(
1145
+ "select",
1121
1146
  {
1122
- variant: "ghost",
1123
- size: "sm",
1124
- glyph: "arrow-right",
1125
- onClick: () => onPageChange?.(pageIndex - 1),
1126
- disabled: isFirstPage,
1127
- "aria-label": "Previous page",
1128
- style: { transform: "rotate(180deg)" }
1147
+ className: pageSizeSelect,
1148
+ value: pageSize,
1149
+ onChange: (e) => onPageSizeChange?.(Number(e.target.value)),
1150
+ "aria-label": "Rows per page",
1151
+ children: pageSizeOptions.map((n) => /* @__PURE__ */ jsxRuntime.jsxs("option", { value: n, children: [
1152
+ n,
1153
+ " / page"
1154
+ ] }, n))
1129
1155
  }
1130
1156
  ),
1131
- /* @__PURE__ */ jsxRuntime.jsxs("span", { children: [
1132
- "Page ",
1133
- pageIndex + 1,
1134
- " of ",
1135
- totalPages
1136
- ] }),
1137
- /* @__PURE__ */ jsxRuntime.jsx(
1138
- Button,
1139
- {
1140
- variant: "ghost",
1141
- size: "sm",
1142
- glyph: "arrow-right",
1143
- onClick: () => onPageChange?.(pageIndex + 1),
1144
- disabled: isLastPage,
1145
- "aria-label": "Next page"
1146
- }
1147
- )
1157
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: paginationControls, children: [
1158
+ /* @__PURE__ */ jsxRuntime.jsx("button", { className: pageNavButton, onClick: () => onPageChange?.(0), disabled: isFirstPage, "aria-label": "First page", children: "\xAB" }),
1159
+ /* @__PURE__ */ jsxRuntime.jsx("button", { className: pageNavButton, onClick: () => onPageChange?.(pageIndex - 1), disabled: isFirstPage, "aria-label": "Previous page", children: "\u2039" }),
1160
+ buildPageWindow(pageIndex, totalPages, paginationWindow).map(
1161
+ (entry, i) => entry === null ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: paginationEllipsis, children: "\u2026" }, `ellipsis-${i}`) : /* @__PURE__ */ jsxRuntime.jsx(
1162
+ "button",
1163
+ {
1164
+ className: entry === pageIndex ? pageButtonActive : pageButton,
1165
+ onClick: () => onPageChange?.(entry),
1166
+ "aria-label": `Page ${entry + 1}`,
1167
+ "aria-current": entry === pageIndex ? "page" : void 0,
1168
+ children: entry + 1
1169
+ },
1170
+ entry
1171
+ )
1172
+ ),
1173
+ /* @__PURE__ */ jsxRuntime.jsx("button", { className: pageNavButton, onClick: () => onPageChange?.(pageIndex + 1), disabled: isLastPage, "aria-label": "Next page", children: "\u203A" }),
1174
+ /* @__PURE__ */ jsxRuntime.jsx("button", { className: pageNavButton, onClick: () => onPageChange?.(totalPages - 1), disabled: isLastPage, "aria-label": "Last page", children: "\xBB" })
1175
+ ] })
1148
1176
  ] })
1149
1177
  ] });
1150
1178
  }