@forgedevstack/grid-table 1.0.0 → 1.0.2
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/CHANGELOG.md +24 -0
- package/README.md +16 -5
- package/dist/grid-table.css +1 -0
- package/dist/index.js +98 -113
- package/dist/index.mjs +98 -113
- package/package.json +9 -6
- package/src/grid-table.scss +26 -0
package/dist/index.js
CHANGED
|
@@ -1133,7 +1133,7 @@ function FilterPopup({
|
|
|
1133
1133
|
"div",
|
|
1134
1134
|
{
|
|
1135
1135
|
ref: popupRef,
|
|
1136
|
-
className: `filter-popup
|
|
1136
|
+
className: `filter-popup ${className}`,
|
|
1137
1137
|
style: {
|
|
1138
1138
|
top: (_a = position == null ? void 0 : position.top) != null ? _a : "100%",
|
|
1139
1139
|
left: (_b = position == null ? void 0 : position.left) != null ? _b : 0,
|
|
@@ -1141,44 +1141,44 @@ function FilterPopup({
|
|
|
1141
1141
|
...style
|
|
1142
1142
|
},
|
|
1143
1143
|
children: [
|
|
1144
|
-
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("div", { className: "filter-popup-header
|
|
1145
|
-
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("span", { className: "
|
|
1144
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("div", { className: "filter-popup-header", children: /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("div", { className: "header-content", children: [
|
|
1145
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("span", { className: "header-title", children: columnHeader }),
|
|
1146
1146
|
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
|
|
1147
1147
|
"button",
|
|
1148
1148
|
{
|
|
1149
1149
|
onClick: onClose,
|
|
1150
|
-
className: "
|
|
1150
|
+
className: "header-close",
|
|
1151
1151
|
"aria-label": "Close",
|
|
1152
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("svg", { className: "
|
|
1152
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("svg", { className: "icon-md", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M6 18L18 6M6 6l12 12" }) })
|
|
1153
1153
|
}
|
|
1154
1154
|
)
|
|
1155
1155
|
] }) }),
|
|
1156
|
-
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("div", { className: "filter-popup-body
|
|
1156
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("div", { className: "filter-popup-body", children: filterType === "select" && filterOptions ? /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(
|
|
1157
1157
|
"select",
|
|
1158
1158
|
{
|
|
1159
1159
|
value: String(value),
|
|
1160
1160
|
onChange: (e) => setValue(e.target.value),
|
|
1161
|
-
className: "w-full px-3 py-2 text-sm rounded
|
|
1161
|
+
className: "w-full px-3 py-2 text-sm rounded",
|
|
1162
1162
|
children: [
|
|
1163
1163
|
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("option", { value: "", children: "Select..." }),
|
|
1164
1164
|
filterOptions.map((opt) => /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("option", { value: String(opt.value), children: opt.label }, String(opt.value)))
|
|
1165
1165
|
]
|
|
1166
1166
|
}
|
|
1167
1167
|
) : /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(import_jsx_runtime2.Fragment, { children: [
|
|
1168
|
-
/* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("div", { children: [
|
|
1169
|
-
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("label", {
|
|
1168
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("div", { className: "filter-field", children: [
|
|
1169
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("label", { children: "Operator" }),
|
|
1170
1170
|
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
|
|
1171
1171
|
"select",
|
|
1172
1172
|
{
|
|
1173
1173
|
value: operator,
|
|
1174
1174
|
onChange: (e) => setOperator(e.target.value),
|
|
1175
|
-
className: "w-full px-3 py-2 text-sm rounded
|
|
1175
|
+
className: "w-full px-3 py-2 text-sm rounded",
|
|
1176
1176
|
children: operators.map((op) => /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("option", { value: op, children: OPERATOR_LABELS[op] }, op))
|
|
1177
1177
|
}
|
|
1178
1178
|
)
|
|
1179
1179
|
] }),
|
|
1180
|
-
/* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("div", { children: [
|
|
1181
|
-
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("label", {
|
|
1180
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("div", { className: "filter-field", children: [
|
|
1181
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("label", { children: "Value" }),
|
|
1182
1182
|
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
|
|
1183
1183
|
"input",
|
|
1184
1184
|
{
|
|
@@ -1187,18 +1187,18 @@ function FilterPopup({
|
|
|
1187
1187
|
onChange: (e) => setValue(e.target.value),
|
|
1188
1188
|
onKeyDown: handleKeyDown,
|
|
1189
1189
|
placeholder: `Filter ${columnHeader}...`,
|
|
1190
|
-
className: "w-full px-3 py-2 text-sm rounded
|
|
1190
|
+
className: "w-full px-3 py-2 text-sm rounded",
|
|
1191
1191
|
autoFocus: true
|
|
1192
1192
|
}
|
|
1193
1193
|
)
|
|
1194
1194
|
] })
|
|
1195
1195
|
] }) }),
|
|
1196
|
-
/* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("div", { className: "filter-popup-footer
|
|
1196
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("div", { className: "filter-popup-footer", children: [
|
|
1197
1197
|
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
|
|
1198
1198
|
"button",
|
|
1199
1199
|
{
|
|
1200
1200
|
onClick: handleClear,
|
|
1201
|
-
className: "
|
|
1201
|
+
className: "filter-clear",
|
|
1202
1202
|
children: translations.clearFilter
|
|
1203
1203
|
}
|
|
1204
1204
|
),
|
|
@@ -1206,7 +1206,7 @@ function FilterPopup({
|
|
|
1206
1206
|
"button",
|
|
1207
1207
|
{
|
|
1208
1208
|
onClick: handleApply,
|
|
1209
|
-
className: "
|
|
1209
|
+
className: "filter-apply",
|
|
1210
1210
|
children: translations.apply
|
|
1211
1211
|
}
|
|
1212
1212
|
)
|
|
@@ -1221,7 +1221,7 @@ var import_jsx_runtime3 = require("react/jsx-runtime");
|
|
|
1221
1221
|
var FilterIcon = ({ active = false }) => /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
|
|
1222
1222
|
"svg",
|
|
1223
1223
|
{
|
|
1224
|
-
className: `
|
|
1224
|
+
className: `icon-sm ${active ? "text-accent-primary" : "text-theme-muted"}`,
|
|
1225
1225
|
fill: "none",
|
|
1226
1226
|
viewBox: "0 0 24 24",
|
|
1227
1227
|
stroke: "currentColor",
|
|
@@ -1239,7 +1239,7 @@ var FilterIcon = ({ active = false }) => /* @__PURE__ */ (0, import_jsx_runtime3
|
|
|
1239
1239
|
var SortIcon = ({ direction }) => /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
|
|
1240
1240
|
"svg",
|
|
1241
1241
|
{
|
|
1242
|
-
className: `
|
|
1242
|
+
className: `icon-sm ${direction ? "text-accent-primary" : "text-theme-muted"}`,
|
|
1243
1243
|
fill: "none",
|
|
1244
1244
|
viewBox: "0 0 24 24",
|
|
1245
1245
|
stroke: "currentColor",
|
|
@@ -1296,36 +1296,23 @@ function HeaderCell({
|
|
|
1296
1296
|
const cellClasses = (0, import_react9.useMemo)(() => {
|
|
1297
1297
|
const classes = [
|
|
1298
1298
|
"grid-header-cell",
|
|
1299
|
-
"relative",
|
|
1300
|
-
"flex",
|
|
1301
|
-
"items-center",
|
|
1302
|
-
"gap-2",
|
|
1303
|
-
"px-4",
|
|
1304
|
-
"py-3",
|
|
1305
|
-
"font-medium",
|
|
1306
|
-
"text-sm",
|
|
1307
|
-
"text-theme-secondary",
|
|
1308
|
-
"select-none",
|
|
1309
|
-
"border-b",
|
|
1310
|
-
"border-theme-border",
|
|
1311
|
-
"transition-colors",
|
|
1312
1299
|
ALIGN_CLASSES[column.align || "left"]
|
|
1313
1300
|
];
|
|
1314
1301
|
if (isSortable) {
|
|
1315
|
-
classes.push("cursor-pointer"
|
|
1302
|
+
classes.push("cursor-pointer");
|
|
1316
1303
|
}
|
|
1317
1304
|
if (isDragging) {
|
|
1318
1305
|
classes.push("opacity-50");
|
|
1319
1306
|
}
|
|
1320
1307
|
if (isDragOver) {
|
|
1321
|
-
classes.push("bg-accent-primary/10"
|
|
1308
|
+
classes.push("bg-accent-primary/10");
|
|
1322
1309
|
}
|
|
1323
1310
|
return classes.join(" ");
|
|
1324
1311
|
}, [column.align, isSortable, isDragging, isDragOver]);
|
|
1325
1312
|
return /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(
|
|
1326
1313
|
"div",
|
|
1327
1314
|
{
|
|
1328
|
-
className: `${cellClasses} ${column.headerClassName || ""} ${column.sticky ?
|
|
1315
|
+
className: `${cellClasses} ${column.headerClassName || ""} ${column.sticky ? `sticky-${column.sticky}` : ""}`,
|
|
1329
1316
|
style: {
|
|
1330
1317
|
width: columnState.width,
|
|
1331
1318
|
minWidth: column.minWidth || MIN_COLUMN_WIDTH,
|
|
@@ -1344,8 +1331,8 @@ function HeaderCell({
|
|
|
1344
1331
|
onClick: handleClick,
|
|
1345
1332
|
...isDraggable ? { ...dragHandleProps, ...dropTargetProps } : {},
|
|
1346
1333
|
children: [
|
|
1347
|
-
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: "grid-header-content
|
|
1348
|
-
isSortable && /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("span", { className: "grid-header-sort
|
|
1334
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: "grid-header-content", children: headerContent }),
|
|
1335
|
+
isSortable && /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("span", { className: "grid-header-sort", children: [
|
|
1349
1336
|
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)(SortIcon, { direction: sortDirection != null ? sortDirection : null }),
|
|
1350
1337
|
isMultiSort && sortIndex !== void 0 && sortIndex >= 0 && sortDirection && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: "text-xs text-theme-muted", children: sortIndex + 1 })
|
|
1351
1338
|
] }),
|
|
@@ -1353,7 +1340,7 @@ function HeaderCell({
|
|
|
1353
1340
|
"button",
|
|
1354
1341
|
{
|
|
1355
1342
|
onClick: handleFilterClick,
|
|
1356
|
-
className: "grid-header-filter
|
|
1343
|
+
className: "grid-header-filter",
|
|
1357
1344
|
"aria-label": "Filter column",
|
|
1358
1345
|
children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(FilterIcon, { active: hasFilter })
|
|
1359
1346
|
}
|
|
@@ -1361,7 +1348,7 @@ function HeaderCell({
|
|
|
1361
1348
|
isResizable && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
|
|
1362
1349
|
"div",
|
|
1363
1350
|
{
|
|
1364
|
-
className: "grid-header-resize
|
|
1351
|
+
className: "grid-header-resize",
|
|
1365
1352
|
onMouseDown: onResizeStart,
|
|
1366
1353
|
onClick: (e) => e.stopPropagation()
|
|
1367
1354
|
}
|
|
@@ -1452,7 +1439,7 @@ function GridHeader({
|
|
|
1452
1439
|
return classes.join(" ");
|
|
1453
1440
|
}, [sticky]);
|
|
1454
1441
|
return /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: `${headerClasses} ${className}`, style, role: "row", children: [
|
|
1455
|
-
enableSelection && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { className: "grid-header-select
|
|
1442
|
+
enableSelection && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { className: "grid-header-select", children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
|
|
1456
1443
|
"input",
|
|
1457
1444
|
{
|
|
1458
1445
|
type: "checkbox",
|
|
@@ -1461,7 +1448,7 @@ function GridHeader({
|
|
|
1461
1448
|
if (el) el.indeterminate = someSelected && !allSelected;
|
|
1462
1449
|
},
|
|
1463
1450
|
onChange: onSelectAll,
|
|
1464
|
-
className: "
|
|
1451
|
+
className: "grid-header-checkbox",
|
|
1465
1452
|
"aria-label": "Select all rows"
|
|
1466
1453
|
}
|
|
1467
1454
|
) }),
|
|
@@ -1478,7 +1465,7 @@ function GridHeader({
|
|
|
1478
1465
|
const hasFilter = state.filters.some((f) => f.columnId === col.id);
|
|
1479
1466
|
const existingFilter = state.filters.find((f) => f.columnId === col.id);
|
|
1480
1467
|
const headerText = typeof col.header === "string" ? col.header : col.id;
|
|
1481
|
-
return /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: "relative", children: [
|
|
1468
|
+
return /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: "relative", style: { position: "relative" }, children: [
|
|
1482
1469
|
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
|
|
1483
1470
|
HeaderCell,
|
|
1484
1471
|
{
|
|
@@ -1598,17 +1585,15 @@ function GridCell({
|
|
|
1598
1585
|
return baseStyle;
|
|
1599
1586
|
}, [style, width, sticky, stickyOffset]);
|
|
1600
1587
|
const alignClass = ALIGN_CLASSES2[align];
|
|
1601
|
-
const
|
|
1588
|
+
const stickyClass = sticky ? `sticky-${sticky}` : "";
|
|
1602
1589
|
return /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(
|
|
1603
1590
|
"div",
|
|
1604
1591
|
{
|
|
1605
1592
|
className: `
|
|
1606
1593
|
grid-cell
|
|
1607
|
-
px-4 py-3
|
|
1608
|
-
flex items-center
|
|
1609
1594
|
${alignClass}
|
|
1610
|
-
${
|
|
1611
|
-
${onClick ? "cursor-pointer
|
|
1595
|
+
${stickyClass}
|
|
1596
|
+
${onClick ? "cursor-pointer" : ""}
|
|
1612
1597
|
${column.cellClassName || ""}
|
|
1613
1598
|
${className}
|
|
1614
1599
|
`.trim(),
|
|
@@ -1616,7 +1601,7 @@ function GridCell({
|
|
|
1616
1601
|
role: "cell",
|
|
1617
1602
|
onClick: onClick ? handleClick : void 0,
|
|
1618
1603
|
children: [
|
|
1619
|
-
showLabel && labelText && /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("span", { className: "grid-cell-label
|
|
1604
|
+
showLabel && labelText && /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("span", { className: "grid-cell-label", children: [
|
|
1620
1605
|
labelText,
|
|
1621
1606
|
":"
|
|
1622
1607
|
] }),
|
|
@@ -1739,23 +1724,23 @@ function GridRow({
|
|
|
1739
1724
|
onMouseEnter: () => setIsHovered(true),
|
|
1740
1725
|
onMouseLeave: () => setIsHovered(false),
|
|
1741
1726
|
children: [
|
|
1742
|
-
enableSelection && /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { className: "grid-row-select
|
|
1727
|
+
enableSelection && /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { className: "grid-row-select", children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
|
|
1743
1728
|
"input",
|
|
1744
1729
|
{
|
|
1745
1730
|
type: "checkbox",
|
|
1746
1731
|
checked: isSelected,
|
|
1747
1732
|
onChange: handleSelectChange,
|
|
1748
1733
|
disabled: isDisabled,
|
|
1749
|
-
className: "
|
|
1734
|
+
className: "grid-row-checkbox",
|
|
1750
1735
|
"aria-label": "Select row"
|
|
1751
1736
|
}
|
|
1752
1737
|
) }),
|
|
1753
|
-
enableExpansion && renderExpansion && /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { className: "grid-row-expand
|
|
1738
|
+
enableExpansion && renderExpansion && /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { className: "grid-row-expand", children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
|
|
1754
1739
|
"button",
|
|
1755
1740
|
{
|
|
1756
1741
|
onClick: handleExpandToggle,
|
|
1757
1742
|
disabled: isDisabled,
|
|
1758
|
-
className: "
|
|
1743
|
+
className: "grid-row-expand-button",
|
|
1759
1744
|
"aria-label": isExpanded ? "Collapse row" : "Expand row",
|
|
1760
1745
|
"aria-expanded": isExpanded,
|
|
1761
1746
|
children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
|
|
@@ -1801,7 +1786,7 @@ function GridRow({
|
|
|
1801
1786
|
align: col.align,
|
|
1802
1787
|
showLabel: isMobile && showMobileLabels && col.showLabelOnMobile !== false,
|
|
1803
1788
|
labelText: typeof col.header === "string" ? col.header : col.id,
|
|
1804
|
-
className: isMobile ? "w-full
|
|
1789
|
+
className: isMobile ? "w-full-sm flex-shrink-0" : "flex-shrink-0",
|
|
1805
1790
|
sticky: col.sticky,
|
|
1806
1791
|
stickyOffset,
|
|
1807
1792
|
onClick: onCellClick
|
|
@@ -1812,7 +1797,7 @@ function GridRow({
|
|
|
1812
1797
|
]
|
|
1813
1798
|
}
|
|
1814
1799
|
),
|
|
1815
|
-
isExpanded && renderExpansion && /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { className: "grid-row-expansion
|
|
1800
|
+
isExpanded && renderExpansion && /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { className: "grid-row-expansion", children: renderExpansion(row) })
|
|
1816
1801
|
] });
|
|
1817
1802
|
}
|
|
1818
1803
|
|
|
@@ -1977,13 +1962,13 @@ function Pagination({
|
|
|
1977
1962
|
return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(
|
|
1978
1963
|
"div",
|
|
1979
1964
|
{
|
|
1980
|
-
className: `grid-pagination
|
|
1965
|
+
className: `grid-pagination ${className}`,
|
|
1981
1966
|
style,
|
|
1982
1967
|
role: "navigation",
|
|
1983
1968
|
"aria-label": "Pagination",
|
|
1984
1969
|
children: [
|
|
1985
|
-
/* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: "grid-pagination-info
|
|
1986
|
-
/* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: "grid-pagination-range
|
|
1970
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: "grid-pagination-info", children: [
|
|
1971
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: "grid-pagination-range", children: [
|
|
1987
1972
|
startItem,
|
|
1988
1973
|
"-",
|
|
1989
1974
|
endItem,
|
|
@@ -1992,8 +1977,8 @@ function Pagination({
|
|
|
1992
1977
|
" ",
|
|
1993
1978
|
totalItems
|
|
1994
1979
|
] }),
|
|
1995
|
-
/* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: "grid-pagination-size
|
|
1996
|
-
/* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("label", { htmlFor: "page-size",
|
|
1980
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: "grid-pagination-size", children: [
|
|
1981
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("label", { htmlFor: "page-size", children: [
|
|
1997
1982
|
translations.rowsPerPage,
|
|
1998
1983
|
":"
|
|
1999
1984
|
] }),
|
|
@@ -2003,19 +1988,19 @@ function Pagination({
|
|
|
2003
1988
|
id: "page-size",
|
|
2004
1989
|
value: pageSize,
|
|
2005
1990
|
onChange: handlePageSizeChange,
|
|
2006
|
-
className: "px-2 py-1 text-sm rounded
|
|
1991
|
+
className: "px-2 py-1 text-sm rounded",
|
|
2007
1992
|
children: pageSizeOptions.map((size) => /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("option", { value: size, children: size }, size))
|
|
2008
1993
|
}
|
|
2009
1994
|
)
|
|
2010
1995
|
] })
|
|
2011
1996
|
] }),
|
|
2012
|
-
/* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: "grid-pagination-controls
|
|
1997
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: "grid-pagination-controls", children: [
|
|
2013
1998
|
showFirstLast && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
|
|
2014
1999
|
"button",
|
|
2015
2000
|
{
|
|
2016
2001
|
onClick: handleFirstPage,
|
|
2017
2002
|
disabled: !canGoPrevious,
|
|
2018
|
-
className: "p-2 rounded
|
|
2003
|
+
className: "p-2 rounded text-theme-secondary",
|
|
2019
2004
|
"aria-label": translations.first,
|
|
2020
2005
|
children: "<<"
|
|
2021
2006
|
}
|
|
@@ -2025,17 +2010,17 @@ function Pagination({
|
|
|
2025
2010
|
{
|
|
2026
2011
|
onClick: handlePreviousPage,
|
|
2027
2012
|
disabled: !canGoPrevious,
|
|
2028
|
-
className: "p-2 rounded
|
|
2013
|
+
className: "p-2 rounded text-theme-secondary",
|
|
2029
2014
|
"aria-label": translations.previous,
|
|
2030
2015
|
children: "<"
|
|
2031
2016
|
}
|
|
2032
2017
|
),
|
|
2033
|
-
showPageNumbers && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: "grid-pagination-pages
|
|
2018
|
+
showPageNumbers && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: "grid-pagination-pages", children: pageNumbers.map(
|
|
2034
2019
|
(pageNum, index) => pageNum === "ellipsis" ? /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: "px-2 text-theme-muted", children: "..." }, `ellipsis-${index}`) : /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
|
|
2035
2020
|
"button",
|
|
2036
2021
|
{
|
|
2037
2022
|
onClick: () => onPageChange(pageNum),
|
|
2038
|
-
className: `min-w-[32px] h-8 px-2 rounded text-sm
|
|
2023
|
+
className: `min-w-[32px] h-8 px-2 rounded text-sm ${pageNum === page ? "active" : ""}`,
|
|
2039
2024
|
"aria-current": pageNum === page ? "page" : void 0,
|
|
2040
2025
|
children: pageNum
|
|
2041
2026
|
},
|
|
@@ -2047,7 +2032,7 @@ function Pagination({
|
|
|
2047
2032
|
{
|
|
2048
2033
|
onClick: handleNextPage,
|
|
2049
2034
|
disabled: !canGoNext,
|
|
2050
|
-
className: "p-2 rounded
|
|
2035
|
+
className: "p-2 rounded text-theme-secondary",
|
|
2051
2036
|
"aria-label": translations.next,
|
|
2052
2037
|
children: ">"
|
|
2053
2038
|
}
|
|
@@ -2057,7 +2042,7 @@ function Pagination({
|
|
|
2057
2042
|
{
|
|
2058
2043
|
onClick: handleLastPage,
|
|
2059
2044
|
disabled: !canGoNext,
|
|
2060
|
-
className: "p-2 rounded
|
|
2045
|
+
className: "p-2 rounded text-theme-secondary",
|
|
2061
2046
|
"aria-label": translations.last,
|
|
2062
2047
|
children: ">>"
|
|
2063
2048
|
}
|
|
@@ -2080,7 +2065,7 @@ function SkeletonCell({ width = DEFAULT_COLUMN_WIDTH, height = 16, animate = tru
|
|
|
2080
2065
|
children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
|
2081
2066
|
"div",
|
|
2082
2067
|
{
|
|
2083
|
-
className: `rounded
|
|
2068
|
+
className: `rounded ${animate ? "animate-pulse" : ""}`,
|
|
2084
2069
|
style: { height: `${height}px`, width: "80%" }
|
|
2085
2070
|
}
|
|
2086
2071
|
)
|
|
@@ -2088,7 +2073,7 @@ function SkeletonCell({ width = DEFAULT_COLUMN_WIDTH, height = 16, animate = tru
|
|
|
2088
2073
|
);
|
|
2089
2074
|
}
|
|
2090
2075
|
function SkeletonRow({ columns, columnWidths, height = 16, animate = true }) {
|
|
2091
|
-
return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { className: "grid-skeleton-row
|
|
2076
|
+
return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { className: "grid-skeleton-row", children: Array.from({ length: columns }).map((_, index) => {
|
|
2092
2077
|
var _a;
|
|
2093
2078
|
return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
|
2094
2079
|
SkeletonCell,
|
|
@@ -2112,7 +2097,7 @@ function Skeleton({
|
|
|
2112
2097
|
animate = true
|
|
2113
2098
|
}) {
|
|
2114
2099
|
return /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: `grid-skeleton ${className}`, style, role: "status", "aria-label": "Loading", children: [
|
|
2115
|
-
showHeader && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { className: "grid-skeleton-header
|
|
2100
|
+
showHeader && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { className: "grid-skeleton-header", children: Array.from({ length: columns }).map((_, index) => {
|
|
2116
2101
|
var _a;
|
|
2117
2102
|
return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
|
2118
2103
|
"div",
|
|
@@ -2122,7 +2107,7 @@ function Skeleton({
|
|
|
2122
2107
|
children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
|
2123
2108
|
"div",
|
|
2124
2109
|
{
|
|
2125
|
-
className: `rounded
|
|
2110
|
+
className: `rounded ${animate ? "animate-pulse" : ""}`,
|
|
2126
2111
|
style: { height: "12px", width: "60%" }
|
|
2127
2112
|
}
|
|
2128
2113
|
)
|
|
@@ -2160,15 +2145,15 @@ function EmptyState({
|
|
|
2160
2145
|
return /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(
|
|
2161
2146
|
"div",
|
|
2162
2147
|
{
|
|
2163
|
-
className: `grid-empty-state
|
|
2148
|
+
className: `grid-empty-state ${className}`,
|
|
2164
2149
|
style,
|
|
2165
2150
|
role: "status",
|
|
2166
2151
|
children: [
|
|
2167
|
-
icon && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { className: "grid-empty-icon
|
|
2168
|
-
!icon && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { className: "grid-empty-icon
|
|
2152
|
+
icon && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { className: "grid-empty-icon", children: icon }),
|
|
2153
|
+
!icon && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { className: "grid-empty-icon", children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
2169
2154
|
"svg",
|
|
2170
2155
|
{
|
|
2171
|
-
className: "
|
|
2156
|
+
className: "icon-lg",
|
|
2172
2157
|
fill: "none",
|
|
2173
2158
|
viewBox: "0 0 24 24",
|
|
2174
2159
|
stroke: "currentColor",
|
|
@@ -2183,8 +2168,8 @@ function EmptyState({
|
|
|
2183
2168
|
)
|
|
2184
2169
|
}
|
|
2185
2170
|
) }),
|
|
2186
|
-
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)("h3", { className: "grid-empty-title
|
|
2187
|
-
displayDescription && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("p", { className: "grid-empty-description
|
|
2171
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)("h3", { className: "grid-empty-title", children: displayTitle }),
|
|
2172
|
+
displayDescription && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("p", { className: "grid-empty-description", children: displayDescription }),
|
|
2188
2173
|
action && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { className: "grid-empty-action", children: action })
|
|
2189
2174
|
]
|
|
2190
2175
|
}
|
|
@@ -2195,13 +2180,13 @@ function EmptyState({
|
|
|
2195
2180
|
var import_react14 = require("react");
|
|
2196
2181
|
var import_jsx_runtime10 = require("react/jsx-runtime");
|
|
2197
2182
|
function DrawerHeader({ title, onClose }) {
|
|
2198
|
-
return /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { className: "drawer-header
|
|
2199
|
-
/* @__PURE__ */ (0, import_jsx_runtime10.jsx)("h3", {
|
|
2183
|
+
return /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { className: "drawer-header", children: [
|
|
2184
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsx)("h3", { children: title }),
|
|
2200
2185
|
/* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
2201
2186
|
"button",
|
|
2202
2187
|
{
|
|
2203
2188
|
onClick: onClose,
|
|
2204
|
-
className: "p-2 rounded
|
|
2189
|
+
className: "p-2 rounded",
|
|
2205
2190
|
"aria-label": "Close",
|
|
2206
2191
|
children: "X"
|
|
2207
2192
|
}
|
|
@@ -2214,8 +2199,8 @@ function FilterContent() {
|
|
|
2214
2199
|
const handleClearAll = (0, import_react14.useCallback)(() => {
|
|
2215
2200
|
actions.clearFilters();
|
|
2216
2201
|
}, [actions]);
|
|
2217
|
-
return /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { className: "drawer-filter-content
|
|
2218
|
-
/* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", {
|
|
2202
|
+
return /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { className: "drawer-filter-content", children: [
|
|
2203
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { children: [
|
|
2219
2204
|
/* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("span", { className: "text-sm text-theme-muted", children: [
|
|
2220
2205
|
filters.length,
|
|
2221
2206
|
" ",
|
|
@@ -2226,7 +2211,7 @@ function FilterContent() {
|
|
|
2226
2211
|
"button",
|
|
2227
2212
|
{
|
|
2228
2213
|
onClick: handleClearAll,
|
|
2229
|
-
className: "text-sm
|
|
2214
|
+
className: "text-sm",
|
|
2230
2215
|
children: translations.clearAll
|
|
2231
2216
|
}
|
|
2232
2217
|
)
|
|
@@ -2250,7 +2235,7 @@ function FilterContent() {
|
|
|
2250
2235
|
}
|
|
2251
2236
|
},
|
|
2252
2237
|
placeholder: `${translations.filter} ${headerText}...`,
|
|
2253
|
-
className: "w-full px-3 py-2 text-sm rounded
|
|
2238
|
+
className: "w-full px-3 py-2 text-sm rounded"
|
|
2254
2239
|
}
|
|
2255
2240
|
)
|
|
2256
2241
|
] }, col.id);
|
|
@@ -2263,8 +2248,8 @@ function SortContent() {
|
|
|
2263
2248
|
const handleClearAll = (0, import_react14.useCallback)(() => {
|
|
2264
2249
|
actions.clearSorting();
|
|
2265
2250
|
}, [actions]);
|
|
2266
|
-
return /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { className: "drawer-sort-content
|
|
2267
|
-
/* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", {
|
|
2251
|
+
return /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { className: "drawer-sort-content", children: [
|
|
2252
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { children: [
|
|
2268
2253
|
/* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("span", { className: "text-sm text-theme-muted", children: [
|
|
2269
2254
|
sorting.length,
|
|
2270
2255
|
" ",
|
|
@@ -2275,7 +2260,7 @@ function SortContent() {
|
|
|
2275
2260
|
"button",
|
|
2276
2261
|
{
|
|
2277
2262
|
onClick: handleClearAll,
|
|
2278
|
-
className: "text-sm
|
|
2263
|
+
className: "text-sm",
|
|
2279
2264
|
children: translations.clearAll
|
|
2280
2265
|
}
|
|
2281
2266
|
)
|
|
@@ -2287,7 +2272,7 @@ function SortContent() {
|
|
|
2287
2272
|
"button",
|
|
2288
2273
|
{
|
|
2289
2274
|
onClick: () => actions.toggleSorting(col.id),
|
|
2290
|
-
className: `w-full
|
|
2275
|
+
className: `w-full px-3 py-2 rounded ${sortItem ? "active" : ""}`,
|
|
2291
2276
|
children: [
|
|
2292
2277
|
/* @__PURE__ */ (0, import_jsx_runtime10.jsx)("span", { className: "text-sm text-theme-primary", children: headerText }),
|
|
2293
2278
|
/* @__PURE__ */ (0, import_jsx_runtime10.jsx)("span", { className: "text-xs text-theme-muted", children: (sortItem == null ? void 0 : sortItem.direction) === "asc" ? translations.sortAsc : (sortItem == null ? void 0 : sortItem.direction) === "desc" ? translations.sortDesc : "-" })
|
|
@@ -2301,14 +2286,14 @@ function SortContent() {
|
|
|
2301
2286
|
function ColumnsContent() {
|
|
2302
2287
|
const { state, actions } = useTableContext();
|
|
2303
2288
|
const { translations, columns, columnStates } = state;
|
|
2304
|
-
return /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { className: "drawer-columns-content
|
|
2305
|
-
/* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", {
|
|
2289
|
+
return /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { className: "drawer-columns-content", children: [
|
|
2290
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { children: [
|
|
2306
2291
|
/* @__PURE__ */ (0, import_jsx_runtime10.jsx)("span", { className: "text-sm text-theme-muted", children: translations.showColumns }),
|
|
2307
2292
|
/* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
2308
2293
|
"button",
|
|
2309
2294
|
{
|
|
2310
2295
|
onClick: actions.resetColumns,
|
|
2311
|
-
className: "text-sm
|
|
2296
|
+
className: "text-sm",
|
|
2312
2297
|
children: translations.resetColumns
|
|
2313
2298
|
}
|
|
2314
2299
|
)
|
|
@@ -2320,7 +2305,7 @@ function ColumnsContent() {
|
|
|
2320
2305
|
return /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(
|
|
2321
2306
|
"label",
|
|
2322
2307
|
{
|
|
2323
|
-
className: "
|
|
2308
|
+
className: "px-3 py-2 rounded cursor-pointer",
|
|
2324
2309
|
children: [
|
|
2325
2310
|
/* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
2326
2311
|
"input",
|
|
@@ -2328,7 +2313,7 @@ function ColumnsContent() {
|
|
|
2328
2313
|
type: "checkbox",
|
|
2329
2314
|
checked: isVisible,
|
|
2330
2315
|
onChange: () => actions.toggleColumnVisibility(col.id),
|
|
2331
|
-
className: "w-4 h-4 rounded
|
|
2316
|
+
className: "w-4 h-4 rounded"
|
|
2332
2317
|
}
|
|
2333
2318
|
),
|
|
2334
2319
|
/* @__PURE__ */ (0, import_jsx_runtime10.jsx)("span", { className: "text-sm text-theme-primary", children: headerText })
|
|
@@ -2373,11 +2358,11 @@ function MobileDrawer({
|
|
|
2373
2358
|
if (!isOpen || !content) {
|
|
2374
2359
|
return null;
|
|
2375
2360
|
}
|
|
2376
|
-
return /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { className: `mobile-drawer-container
|
|
2361
|
+
return /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { className: `mobile-drawer-container ${className}`, style, children: [
|
|
2377
2362
|
/* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
2378
2363
|
"div",
|
|
2379
2364
|
{
|
|
2380
|
-
className: "mobile-drawer-overlay
|
|
2365
|
+
className: "mobile-drawer-overlay",
|
|
2381
2366
|
style: {
|
|
2382
2367
|
opacity: DRAWER_OVERLAY_OPACITY,
|
|
2383
2368
|
transitionDuration: `${DRAWER_ANIMATION_DURATION}ms`
|
|
@@ -2389,7 +2374,7 @@ function MobileDrawer({
|
|
|
2389
2374
|
/* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(
|
|
2390
2375
|
"div",
|
|
2391
2376
|
{
|
|
2392
|
-
className: "mobile-drawer
|
|
2377
|
+
className: "mobile-drawer",
|
|
2393
2378
|
style: {
|
|
2394
2379
|
transitionDuration: `${DRAWER_ANIMATION_DURATION}ms`
|
|
2395
2380
|
},
|
|
@@ -2398,7 +2383,7 @@ function MobileDrawer({
|
|
|
2398
2383
|
"aria-labelledby": "drawer-title",
|
|
2399
2384
|
children: [
|
|
2400
2385
|
/* @__PURE__ */ (0, import_jsx_runtime10.jsx)(DrawerHeader, { title: DRAWER_TITLES[content], onClose }),
|
|
2401
|
-
/* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { className: "drawer-content
|
|
2386
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { className: "drawer-content", children: [
|
|
2402
2387
|
content === "filter" && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(FilterContent, {}),
|
|
2403
2388
|
content === "sort" && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(SortContent, {}),
|
|
2404
2389
|
content === "columns" && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(ColumnsContent, {})
|
|
@@ -2520,7 +2505,7 @@ function GridTableContent({
|
|
|
2520
2505
|
"button",
|
|
2521
2506
|
{
|
|
2522
2507
|
onClick: onRetry,
|
|
2523
|
-
className: "px-4 py-2 bg-accent-primary text-white rounded hover:
|
|
2508
|
+
className: "px-4 py-2 bg-accent-primary text-white rounded hover:opacity-90 cursor-pointer",
|
|
2524
2509
|
children: state.translations.retry
|
|
2525
2510
|
}
|
|
2526
2511
|
)
|
|
@@ -2548,17 +2533,17 @@ function GridTableContent({
|
|
|
2548
2533
|
return /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(
|
|
2549
2534
|
"div",
|
|
2550
2535
|
{
|
|
2551
|
-
className: `grid-table
|
|
2536
|
+
className: `grid-table rounded-lg border overflow-hidden ${classNames.root || ""} ${className}`,
|
|
2552
2537
|
style: containerStyle,
|
|
2553
2538
|
role: "table",
|
|
2554
2539
|
children: [
|
|
2555
2540
|
renderHeader && /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", { className: "grid-table-custom-header", children: renderHeader() }),
|
|
2556
|
-
showGlobalFilter && /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("div", { className: "grid-table-toolbar
|
|
2557
|
-
/* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("div", { className: "
|
|
2541
|
+
showGlobalFilter && /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("div", { className: "grid-table-toolbar", children: [
|
|
2542
|
+
/* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("div", { className: "toolbar-search-wrapper", children: [
|
|
2558
2543
|
/* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
|
|
2559
2544
|
"svg",
|
|
2560
2545
|
{
|
|
2561
|
-
className: "
|
|
2546
|
+
className: "search-icon",
|
|
2562
2547
|
fill: "none",
|
|
2563
2548
|
viewBox: "0 0 24 24",
|
|
2564
2549
|
stroke: "currentColor",
|
|
@@ -2573,16 +2558,16 @@ function GridTableContent({
|
|
|
2573
2558
|
value: state.globalFilter,
|
|
2574
2559
|
onChange: (e) => actions.setGlobalFilter(e.target.value),
|
|
2575
2560
|
placeholder: state.translations.search,
|
|
2576
|
-
className: "w-full pl-10 pr-3 py-2 text-sm rounded
|
|
2561
|
+
className: "w-full pl-10 pr-3 py-2 text-sm rounded"
|
|
2577
2562
|
}
|
|
2578
2563
|
),
|
|
2579
2564
|
state.globalFilter && /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
|
|
2580
2565
|
"button",
|
|
2581
2566
|
{
|
|
2582
2567
|
onClick: () => actions.setGlobalFilter(""),
|
|
2583
|
-
className: "
|
|
2568
|
+
className: "clear-button",
|
|
2584
2569
|
"aria-label": "Clear search",
|
|
2585
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("svg", { className: "
|
|
2570
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("svg", { className: "icon-md", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", strokeWidth: 2, children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M6 18L18 6M6 6l12 12" }) })
|
|
2586
2571
|
}
|
|
2587
2572
|
)
|
|
2588
2573
|
] }),
|
|
@@ -2590,9 +2575,9 @@ function GridTableContent({
|
|
|
2590
2575
|
"button",
|
|
2591
2576
|
{
|
|
2592
2577
|
onClick: () => actions.clearFilters(),
|
|
2593
|
-
className: "
|
|
2578
|
+
className: "filter-badge",
|
|
2594
2579
|
children: [
|
|
2595
|
-
/* @__PURE__ */ (0, import_jsx_runtime11.jsx)("svg", { className: "
|
|
2580
|
+
/* @__PURE__ */ (0, import_jsx_runtime11.jsx)("svg", { className: "icon-md", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", strokeWidth: 2, children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M6 18L18 6M6 6l12 12" }) }),
|
|
2596
2581
|
/* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("span", { children: [
|
|
2597
2582
|
state.filters.length,
|
|
2598
2583
|
" filter",
|
|
@@ -2601,32 +2586,32 @@ function GridTableContent({
|
|
|
2601
2586
|
]
|
|
2602
2587
|
}
|
|
2603
2588
|
),
|
|
2604
|
-
shouldShowMobileView && /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("div", { className: "
|
|
2589
|
+
shouldShowMobileView && /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("div", { className: "toolbar-actions", children: [
|
|
2605
2590
|
/* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
|
|
2606
2591
|
"button",
|
|
2607
2592
|
{
|
|
2608
2593
|
onClick: () => actions.openMobileDrawer("filter"),
|
|
2609
|
-
className: "
|
|
2594
|
+
className: "toolbar-action-button",
|
|
2610
2595
|
"aria-label": state.translations.filter,
|
|
2611
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("svg", { className: "
|
|
2596
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("svg", { className: "icon-md", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", strokeWidth: 2, children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M3 4a1 1 0 011-1h16a1 1 0 011 1v2.586a1 1 0 01-.293.707l-6.414 6.414a1 1 0 00-.293.707V17l-4 4v-6.586a1 1 0 00-.293-.707L3.293 7.293A1 1 0 013 6.586V4z" }) })
|
|
2612
2597
|
}
|
|
2613
2598
|
),
|
|
2614
2599
|
/* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
|
|
2615
2600
|
"button",
|
|
2616
2601
|
{
|
|
2617
2602
|
onClick: () => actions.openMobileDrawer("sort"),
|
|
2618
|
-
className: "
|
|
2603
|
+
className: "toolbar-action-button",
|
|
2619
2604
|
"aria-label": state.translations.sort,
|
|
2620
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("svg", { className: "
|
|
2605
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("svg", { className: "icon-md", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", strokeWidth: 2, children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M7 16V4m0 0L3 8m4-4l4 4m6 0v12m0 0l4-4m-4 4l-4-4" }) })
|
|
2621
2606
|
}
|
|
2622
2607
|
),
|
|
2623
2608
|
/* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
|
|
2624
2609
|
"button",
|
|
2625
2610
|
{
|
|
2626
2611
|
onClick: () => actions.openMobileDrawer("columns"),
|
|
2627
|
-
className: "
|
|
2612
|
+
className: "toolbar-action-button",
|
|
2628
2613
|
"aria-label": state.translations.columns,
|
|
2629
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("svg", { className: "
|
|
2614
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("svg", { className: "icon-md", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", strokeWidth: 2, children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M9 17V7m0 10a2 2 0 01-2 2H5a2 2 0 01-2-2V7a2 2 0 012-2h2a2 2 0 012 2m0 10a2 2 0 002 2h2a2 2 0 002-2M9 7a2 2 0 012-2h2a2 2 0 012 2m0 10V7m0 10a2 2 0 002 2h2a2 2 0 002-2V7a2 2 0 00-2-2h-2a2 2 0 00-2 2" }) })
|
|
2630
2615
|
}
|
|
2631
2616
|
)
|
|
2632
2617
|
] })
|