@rufous/ui 0.2.83 → 0.2.84
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/main.cjs +15 -13
- package/dist/main.css +30 -4
- package/dist/main.js +15 -13
- package/package.json +1 -1
package/dist/main.cjs
CHANGED
|
@@ -4345,9 +4345,10 @@ function DataGrid({
|
|
|
4345
4345
|
const menuRef = (0, import_react23.useRef)(null);
|
|
4346
4346
|
const [showManageColumns, setShowManageColumns] = (0, import_react23.useState)(false);
|
|
4347
4347
|
const [showAdvancedFilter, setShowAdvancedFilter] = (0, import_react23.useState)(false);
|
|
4348
|
-
const
|
|
4348
|
+
const filterableColumnsProp = initialColumnsProp.filter((c) => c.filterable !== false);
|
|
4349
|
+
const initialFilterCol = String(filterableColumnsProp[0]?.field || filterableColumnsProp[0]?.key || "");
|
|
4349
4350
|
const [advancedFilters, setAdvancedFilters] = (0, import_react23.useState)([
|
|
4350
|
-
{ column: initialFilterCol, operator: getDefaultOperator(
|
|
4351
|
+
{ column: initialFilterCol, operator: getDefaultOperator(filterableColumnsProp[0]?.type), value: "", logic: "AND" }
|
|
4351
4352
|
]);
|
|
4352
4353
|
const [colSearch, setColSearch] = (0, import_react23.useState)("");
|
|
4353
4354
|
(0, import_react23.useEffect)(() => {
|
|
@@ -4616,6 +4617,7 @@ function DataGrid({
|
|
|
4616
4617
|
return offset2;
|
|
4617
4618
|
};
|
|
4618
4619
|
const hasActiveFilters = advancedFilters.some((f) => f.value);
|
|
4620
|
+
const activeMenuCol = activeMenu ? resolvedColumns.find((c) => String(c.field) === activeMenu) : null;
|
|
4619
4621
|
return /* @__PURE__ */ import_react23.default.createElement("div", { className: ["dg-root", sxClass, className].filter(Boolean).join(" ") }, /* @__PURE__ */ import_react23.default.createElement("div", { className: "dg-header" }, /* @__PURE__ */ import_react23.default.createElement("div", { className: "dg-header-info" }, /* @__PURE__ */ import_react23.default.createElement("h2", null, title), /* @__PURE__ */ import_react23.default.createElement("p", null, filteredData.length, " total records")), /* @__PURE__ */ import_react23.default.createElement("div", { className: "dg-header-actions" }, /* @__PURE__ */ import_react23.default.createElement("div", { className: "dg-search-wrap" }, /* @__PURE__ */ import_react23.default.createElement(import_lucide_react2.Search, { size: 15 }), /* @__PURE__ */ import_react23.default.createElement(
|
|
4620
4622
|
"input",
|
|
4621
4623
|
{
|
|
@@ -4641,7 +4643,7 @@ function DataGrid({
|
|
|
4641
4643
|
onClick: () => setShowManageColumns(true)
|
|
4642
4644
|
},
|
|
4643
4645
|
/* @__PURE__ */ import_react23.default.createElement(import_lucide_react2.Columns, { size: 16 })
|
|
4644
|
-
)), /* @__PURE__ */ import_react23.default.createElement("button", { className: "dg-action-btn", onClick: handleExport }, /* @__PURE__ */ import_react23.default.createElement(import_lucide_react2.Download, { size: 14 }), " Export CSV"))), /* @__PURE__ */ import_react23.default.createElement("div", { className: "dg-table-wrap" }, /* @__PURE__ */ import_react23.default.createElement("table", { className: "dg-table" }, /* @__PURE__ */ import_react23.default.createElement("thead", null, /* @__PURE__ */ import_react23.default.createElement("tr", null, visibleColumns.map((col, idx) => {
|
|
4646
|
+
)), /* @__PURE__ */ import_react23.default.createElement("button", { className: "dg-action-btn", onClick: handleExport }, /* @__PURE__ */ import_react23.default.createElement(import_lucide_react2.Download, { size: 14 }), " Export CSV"))), /* @__PURE__ */ import_react23.default.createElement("div", { className: `dg-table-wrap${paginatedData.length === 0 ? " dg-table-wrap--empty" : ""}` }, /* @__PURE__ */ import_react23.default.createElement("table", { className: "dg-table" }, /* @__PURE__ */ import_react23.default.createElement("thead", null, /* @__PURE__ */ import_react23.default.createElement("tr", null, visibleColumns.map((col, idx) => {
|
|
4645
4647
|
const colField = String(col.field);
|
|
4646
4648
|
const width = columnWidths[colField] || 200;
|
|
4647
4649
|
const leftOffset = getLeftOffset(col, idx);
|
|
@@ -4683,7 +4685,7 @@ function DataGrid({
|
|
|
4683
4685
|
}
|
|
4684
4686
|
)))
|
|
4685
4687
|
);
|
|
4686
|
-
}), actions && /* @__PURE__ */ import_react23.default.createElement("th", { style: { width: 0, padding: 0 } }))), /* @__PURE__ */ import_react23.default.createElement("tbody", null, paginatedData.length
|
|
4688
|
+
}), actions && /* @__PURE__ */ import_react23.default.createElement("th", { style: { width: 0, padding: 0 } }))), /* @__PURE__ */ import_react23.default.createElement("tbody", null, paginatedData.length > 0 && paginatedData.map((item) => /* @__PURE__ */ import_react23.default.createElement("tr", { key: item.id, className: "dg-tbody-row", onDoubleClick: () => onRowDoubleClick?.(item) }, visibleColumns.map((col, idx) => {
|
|
4687
4689
|
const colField = String(col.field);
|
|
4688
4690
|
const width = columnWidths[colField] || 200;
|
|
4689
4691
|
const leftOffset = getLeftOffset(col, idx);
|
|
@@ -4723,7 +4725,7 @@ function DataGrid({
|
|
|
4723
4725
|
},
|
|
4724
4726
|
action.icon
|
|
4725
4727
|
)))));
|
|
4726
|
-
})())))))), /* @__PURE__ */ import_react23.default.createElement("div", { className: "dg-pagination" }, /* @__PURE__ */ import_react23.default.createElement("div", { className: "dg-page-info" }, /* @__PURE__ */ import_react23.default.createElement("div", { className: "dg-per-page" }, /* @__PURE__ */ import_react23.default.createElement("span", null, "Rows per page:"), /* @__PURE__ */ import_react23.default.createElement(
|
|
4728
|
+
})()))))), paginatedData.length === 0 && /* @__PURE__ */ import_react23.default.createElement("div", { className: "dg-empty-state" }, /* @__PURE__ */ import_react23.default.createElement("svg", { className: "dg-empty-icon", viewBox: "0 0 200 160", fill: "none", xmlns: "http://www.w3.org/2000/svg" }, /* @__PURE__ */ import_react23.default.createElement("rect", { x: "20", y: "30", width: "160", height: "100", rx: "8", fill: "var(--hover-color)", stroke: "var(--border-color)", strokeWidth: "1.5" }), /* @__PURE__ */ import_react23.default.createElement("rect", { x: "20", y: "30", width: "160", height: "28", rx: "8", fill: "var(--border-color)", opacity: "0.5" }), /* @__PURE__ */ import_react23.default.createElement("rect", { x: "20", y: "50", width: "160", height: "8", rx: "0", fill: "var(--border-color)", opacity: "0.5" }), /* @__PURE__ */ import_react23.default.createElement("line", { x1: "72", y1: "30", x2: "72", y2: "130", stroke: "var(--border-color)", strokeWidth: "1" }), /* @__PURE__ */ import_react23.default.createElement("line", { x1: "128", y1: "30", x2: "128", y2: "130", stroke: "var(--border-color)", strokeWidth: "1" }), /* @__PURE__ */ import_react23.default.createElement("line", { x1: "20", y1: "78", x2: "180", y2: "78", stroke: "var(--border-color)", strokeWidth: "1" }), /* @__PURE__ */ import_react23.default.createElement("line", { x1: "20", y1: "104", x2: "180", y2: "104", stroke: "var(--border-color)", strokeWidth: "1" }), /* @__PURE__ */ import_react23.default.createElement("rect", { x: "32", y: "87", width: "28", height: "6", rx: "3", fill: "var(--border-color)", opacity: "0.4" }), /* @__PURE__ */ import_react23.default.createElement("rect", { x: "84", y: "87", width: "28", height: "6", rx: "3", fill: "var(--border-color)", opacity: "0.4" }), /* @__PURE__ */ import_react23.default.createElement("rect", { x: "140", y: "87", width: "28", height: "6", rx: "3", fill: "var(--border-color)", opacity: "0.4" }), /* @__PURE__ */ import_react23.default.createElement("rect", { x: "32", y: "113", width: "20", height: "6", rx: "3", fill: "var(--border-color)", opacity: "0.3" }), /* @__PURE__ */ import_react23.default.createElement("rect", { x: "84", y: "113", width: "32", height: "6", rx: "3", fill: "var(--border-color)", opacity: "0.3" }), /* @__PURE__ */ import_react23.default.createElement("rect", { x: "140", y: "113", width: "20", height: "6", rx: "3", fill: "var(--border-color)", opacity: "0.3" }), /* @__PURE__ */ import_react23.default.createElement("circle", { cx: "148", cy: "108", r: "26", fill: "var(--surface-color)", stroke: "var(--border-color)", strokeWidth: "1.5" }), /* @__PURE__ */ import_react23.default.createElement("circle", { cx: "145", cy: "105", r: "10", stroke: "var(--text-secondary)", strokeWidth: "2.5", opacity: "0.5" }), /* @__PURE__ */ import_react23.default.createElement("line", { x1: "152", y1: "113", x2: "161", y2: "122", stroke: "var(--text-secondary)", strokeWidth: "2.5", strokeLinecap: "round", opacity: "0.5" }), /* @__PURE__ */ import_react23.default.createElement("line", { x1: "141", y1: "101", x2: "149", y2: "109", stroke: "var(--text-secondary)", strokeWidth: "2", strokeLinecap: "round", opacity: "0.5" }), /* @__PURE__ */ import_react23.default.createElement("line", { x1: "149", y1: "101", x2: "141", y2: "109", stroke: "var(--text-secondary)", strokeWidth: "2", strokeLinecap: "round", opacity: "0.5" })), /* @__PURE__ */ import_react23.default.createElement("p", { className: "dg-empty-title" }, "No data found"), /* @__PURE__ */ import_react23.default.createElement("p", { className: "dg-empty-subtitle" }, filterText || hasActiveFilters ? "Try adjusting your search or filters" : "No records to display"))), /* @__PURE__ */ import_react23.default.createElement("div", { className: "dg-pagination" }, /* @__PURE__ */ import_react23.default.createElement("div", { className: "dg-page-info" }, /* @__PURE__ */ import_react23.default.createElement("div", { className: "dg-per-page" }, /* @__PURE__ */ import_react23.default.createElement("span", null, "Rows per page:"), /* @__PURE__ */ import_react23.default.createElement(
|
|
4727
4729
|
"select",
|
|
4728
4730
|
{
|
|
4729
4731
|
value: pageSize,
|
|
@@ -4744,16 +4746,14 @@ function DataGrid({
|
|
|
4744
4746
|
...menuPosition.right !== void 0 ? { right: menuPosition.right } : {}
|
|
4745
4747
|
}
|
|
4746
4748
|
},
|
|
4747
|
-
/* @__PURE__ */ import_react23.default.createElement("button", { className: "dg-menu-item", onClick: () => handleSort(activeMenu, "asc") }, /* @__PURE__ */ import_react23.default.createElement(import_lucide_react2.ArrowUp, { size: 14 }), " Sort ascending"),
|
|
4748
|
-
/* @__PURE__ */ import_react23.default.createElement("button", { className: "dg-menu-item", onClick: () => handleSort(activeMenu, "desc") }, /* @__PURE__ */ import_react23.default.createElement(import_lucide_react2.ArrowDown, { size: 14 }), " Sort descending"),
|
|
4749
|
-
/* @__PURE__ */ import_react23.default.createElement("div", { className: "dg-menu-divider" }),
|
|
4749
|
+
activeMenuCol?.sortable !== false && /* @__PURE__ */ import_react23.default.createElement(import_react23.default.Fragment, null, /* @__PURE__ */ import_react23.default.createElement("button", { className: "dg-menu-item", onClick: () => handleSort(activeMenu, "asc") }, /* @__PURE__ */ import_react23.default.createElement(import_lucide_react2.ArrowUp, { size: 14 }), " Sort ascending"), /* @__PURE__ */ import_react23.default.createElement("button", { className: "dg-menu-item", onClick: () => handleSort(activeMenu, "desc") }, /* @__PURE__ */ import_react23.default.createElement(import_lucide_react2.ArrowDown, { size: 14 }), " Sort descending"), /* @__PURE__ */ import_react23.default.createElement("div", { className: "dg-menu-divider" })),
|
|
4750
4750
|
(() => {
|
|
4751
|
-
const col =
|
|
4751
|
+
const col = activeMenuCol;
|
|
4752
4752
|
if (!col) return null;
|
|
4753
4753
|
return /* @__PURE__ */ import_react23.default.createElement(import_react23.default.Fragment, null, col.pinned === "left" ? /* @__PURE__ */ import_react23.default.createElement("button", { className: "dg-menu-item", onClick: () => togglePin(activeMenu, "left") }, /* @__PURE__ */ import_react23.default.createElement(import_lucide_react2.Pin, { size: 14, style: { transform: "rotate(0deg)", opacity: 0.5 } }), " Unpin") : /* @__PURE__ */ import_react23.default.createElement("button", { className: "dg-menu-item", onClick: () => togglePin(activeMenu, "left") }, /* @__PURE__ */ import_react23.default.createElement(import_lucide_react2.Pin, { size: 14, style: { transform: "rotate(45deg)" } }), " Pin left"), col.pinned === "right" ? /* @__PURE__ */ import_react23.default.createElement("button", { className: "dg-menu-item", onClick: () => togglePin(activeMenu, "right") }, /* @__PURE__ */ import_react23.default.createElement(import_lucide_react2.Pin, { size: 14, style: { transform: "rotate(0deg)", opacity: 0.5 } }), " Unpin") : /* @__PURE__ */ import_react23.default.createElement("button", { className: "dg-menu-item", onClick: () => togglePin(activeMenu, "right") }, /* @__PURE__ */ import_react23.default.createElement(import_lucide_react2.Pin, { size: 14, style: { transform: "rotate(-45deg)" } }), " Pin right"));
|
|
4754
4754
|
})(),
|
|
4755
4755
|
/* @__PURE__ */ import_react23.default.createElement("div", { className: "dg-menu-divider" }),
|
|
4756
|
-
/* @__PURE__ */ import_react23.default.createElement("button", { className: "dg-menu-item", onClick: () => {
|
|
4756
|
+
activeMenuCol?.filterable !== false && /* @__PURE__ */ import_react23.default.createElement("button", { className: "dg-menu-item", onClick: () => {
|
|
4757
4757
|
setShowAdvancedFilter(true);
|
|
4758
4758
|
setActiveMenu(null);
|
|
4759
4759
|
} }, /* @__PURE__ */ import_react23.default.createElement(import_lucide_react2.Filter, { size: 14 }), " Filter\u2026"),
|
|
@@ -4817,7 +4817,7 @@ function DataGrid({
|
|
|
4817
4817
|
setAdvancedFilters((p) => p.map((fi, i) => i === idx ? { ...fi, column: newColKey, operator: defaultOp, value: "" } : fi));
|
|
4818
4818
|
}
|
|
4819
4819
|
},
|
|
4820
|
-
resolvedColumns.map((c) => /* @__PURE__ */ import_react23.default.createElement("option", { key: String(c.key), value: String(c.key) }, c.header))
|
|
4820
|
+
resolvedColumns.filter((c) => c.filterable !== false).map((c) => /* @__PURE__ */ import_react23.default.createElement("option", { key: String(c.key), value: String(c.key) }, c.header))
|
|
4821
4821
|
), (() => {
|
|
4822
4822
|
const col = resolvedColumns.find((c) => String(c.key) === f.column);
|
|
4823
4823
|
const operators = getOperatorsForType(col?.type);
|
|
@@ -4865,7 +4865,8 @@ function DataGrid({
|
|
|
4865
4865
|
className: "dg-action-btn",
|
|
4866
4866
|
style: { alignSelf: "flex-start", marginTop: 4 },
|
|
4867
4867
|
onClick: () => {
|
|
4868
|
-
const firstCol = resolvedColumns
|
|
4868
|
+
const firstCol = resolvedColumns.find((c) => c.filterable !== false);
|
|
4869
|
+
if (!firstCol) return;
|
|
4869
4870
|
const defaultOp = getDefaultOperator(firstCol?.type);
|
|
4870
4871
|
setAdvancedFilters((p) => [...p, { column: String(firstCol.key), operator: defaultOp, value: "", logic: "AND" }]);
|
|
4871
4872
|
}
|
|
@@ -4877,7 +4878,8 @@ function DataGrid({
|
|
|
4877
4878
|
{
|
|
4878
4879
|
className: "dg-action-btn",
|
|
4879
4880
|
onClick: () => {
|
|
4880
|
-
const firstCol = resolvedColumns
|
|
4881
|
+
const firstCol = resolvedColumns.find((c) => c.filterable !== false);
|
|
4882
|
+
if (!firstCol) return;
|
|
4881
4883
|
setAdvancedFilters([{ column: String(firstCol.key), operator: getDefaultOperator(firstCol?.type), value: "", logic: "AND" }]);
|
|
4882
4884
|
}
|
|
4883
4885
|
},
|
package/dist/main.css
CHANGED
|
@@ -416,6 +416,10 @@
|
|
|
416
416
|
overflow-x: auto;
|
|
417
417
|
flex: 1;
|
|
418
418
|
}
|
|
419
|
+
.dg-table-wrap--empty {
|
|
420
|
+
display: flex;
|
|
421
|
+
flex-direction: column;
|
|
422
|
+
}
|
|
419
423
|
.dg-table {
|
|
420
424
|
width: 100%;
|
|
421
425
|
border-collapse: collapse;
|
|
@@ -880,11 +884,33 @@
|
|
|
880
884
|
--tf-hover-border-color: var(--text-secondary);
|
|
881
885
|
--tf-primary-color: var(--primary-color);
|
|
882
886
|
}
|
|
883
|
-
.dg-empty {
|
|
884
|
-
|
|
885
|
-
|
|
887
|
+
.dg-empty-state {
|
|
888
|
+
flex: 1;
|
|
889
|
+
display: flex;
|
|
890
|
+
flex-direction: column;
|
|
891
|
+
align-items: center;
|
|
892
|
+
justify-content: center;
|
|
893
|
+
padding: 40px 20px;
|
|
894
|
+
gap: 12px;
|
|
895
|
+
position: sticky;
|
|
896
|
+
left: 0;
|
|
897
|
+
min-height: 280px;
|
|
898
|
+
}
|
|
899
|
+
.dg-empty-icon {
|
|
900
|
+
width: min(30%, 180px);
|
|
901
|
+
height: auto;
|
|
902
|
+
}
|
|
903
|
+
.dg-empty-title {
|
|
904
|
+
margin: 0;
|
|
905
|
+
font-size: 1rem;
|
|
906
|
+
font-weight: 600;
|
|
886
907
|
color: var(--text-secondary);
|
|
887
|
-
|
|
908
|
+
}
|
|
909
|
+
.dg-empty-subtitle {
|
|
910
|
+
margin: 0;
|
|
911
|
+
font-size: 0.82rem;
|
|
912
|
+
color: var(--text-secondary);
|
|
913
|
+
opacity: 0.65;
|
|
888
914
|
}
|
|
889
915
|
|
|
890
916
|
/* lib/style.css */
|
package/dist/main.js
CHANGED
|
@@ -4215,9 +4215,10 @@ function DataGrid({
|
|
|
4215
4215
|
const menuRef = useRef9(null);
|
|
4216
4216
|
const [showManageColumns, setShowManageColumns] = useState9(false);
|
|
4217
4217
|
const [showAdvancedFilter, setShowAdvancedFilter] = useState9(false);
|
|
4218
|
-
const
|
|
4218
|
+
const filterableColumnsProp = initialColumnsProp.filter((c) => c.filterable !== false);
|
|
4219
|
+
const initialFilterCol = String(filterableColumnsProp[0]?.field || filterableColumnsProp[0]?.key || "");
|
|
4219
4220
|
const [advancedFilters, setAdvancedFilters] = useState9([
|
|
4220
|
-
{ column: initialFilterCol, operator: getDefaultOperator(
|
|
4221
|
+
{ column: initialFilterCol, operator: getDefaultOperator(filterableColumnsProp[0]?.type), value: "", logic: "AND" }
|
|
4221
4222
|
]);
|
|
4222
4223
|
const [colSearch, setColSearch] = useState9("");
|
|
4223
4224
|
useEffect9(() => {
|
|
@@ -4486,6 +4487,7 @@ function DataGrid({
|
|
|
4486
4487
|
return offset2;
|
|
4487
4488
|
};
|
|
4488
4489
|
const hasActiveFilters = advancedFilters.some((f) => f.value);
|
|
4490
|
+
const activeMenuCol = activeMenu ? resolvedColumns.find((c) => String(c.field) === activeMenu) : null;
|
|
4489
4491
|
return /* @__PURE__ */ React75.createElement("div", { className: ["dg-root", sxClass, className].filter(Boolean).join(" ") }, /* @__PURE__ */ React75.createElement("div", { className: "dg-header" }, /* @__PURE__ */ React75.createElement("div", { className: "dg-header-info" }, /* @__PURE__ */ React75.createElement("h2", null, title), /* @__PURE__ */ React75.createElement("p", null, filteredData.length, " total records")), /* @__PURE__ */ React75.createElement("div", { className: "dg-header-actions" }, /* @__PURE__ */ React75.createElement("div", { className: "dg-search-wrap" }, /* @__PURE__ */ React75.createElement(Search, { size: 15 }), /* @__PURE__ */ React75.createElement(
|
|
4490
4492
|
"input",
|
|
4491
4493
|
{
|
|
@@ -4511,7 +4513,7 @@ function DataGrid({
|
|
|
4511
4513
|
onClick: () => setShowManageColumns(true)
|
|
4512
4514
|
},
|
|
4513
4515
|
/* @__PURE__ */ React75.createElement(Columns, { size: 16 })
|
|
4514
|
-
)), /* @__PURE__ */ React75.createElement("button", { className: "dg-action-btn", onClick: handleExport }, /* @__PURE__ */ React75.createElement(Download, { size: 14 }), " Export CSV"))), /* @__PURE__ */ React75.createElement("div", { className: "dg-table-wrap" }, /* @__PURE__ */ React75.createElement("table", { className: "dg-table" }, /* @__PURE__ */ React75.createElement("thead", null, /* @__PURE__ */ React75.createElement("tr", null, visibleColumns.map((col, idx) => {
|
|
4516
|
+
)), /* @__PURE__ */ React75.createElement("button", { className: "dg-action-btn", onClick: handleExport }, /* @__PURE__ */ React75.createElement(Download, { size: 14 }), " Export CSV"))), /* @__PURE__ */ React75.createElement("div", { className: `dg-table-wrap${paginatedData.length === 0 ? " dg-table-wrap--empty" : ""}` }, /* @__PURE__ */ React75.createElement("table", { className: "dg-table" }, /* @__PURE__ */ React75.createElement("thead", null, /* @__PURE__ */ React75.createElement("tr", null, visibleColumns.map((col, idx) => {
|
|
4515
4517
|
const colField = String(col.field);
|
|
4516
4518
|
const width = columnWidths[colField] || 200;
|
|
4517
4519
|
const leftOffset = getLeftOffset(col, idx);
|
|
@@ -4553,7 +4555,7 @@ function DataGrid({
|
|
|
4553
4555
|
}
|
|
4554
4556
|
)))
|
|
4555
4557
|
);
|
|
4556
|
-
}), actions && /* @__PURE__ */ React75.createElement("th", { style: { width: 0, padding: 0 } }))), /* @__PURE__ */ React75.createElement("tbody", null, paginatedData.length
|
|
4558
|
+
}), actions && /* @__PURE__ */ React75.createElement("th", { style: { width: 0, padding: 0 } }))), /* @__PURE__ */ React75.createElement("tbody", null, paginatedData.length > 0 && paginatedData.map((item) => /* @__PURE__ */ React75.createElement("tr", { key: item.id, className: "dg-tbody-row", onDoubleClick: () => onRowDoubleClick?.(item) }, visibleColumns.map((col, idx) => {
|
|
4557
4559
|
const colField = String(col.field);
|
|
4558
4560
|
const width = columnWidths[colField] || 200;
|
|
4559
4561
|
const leftOffset = getLeftOffset(col, idx);
|
|
@@ -4593,7 +4595,7 @@ function DataGrid({
|
|
|
4593
4595
|
},
|
|
4594
4596
|
action.icon
|
|
4595
4597
|
)))));
|
|
4596
|
-
})())))))), /* @__PURE__ */ React75.createElement("div", { className: "dg-pagination" }, /* @__PURE__ */ React75.createElement("div", { className: "dg-page-info" }, /* @__PURE__ */ React75.createElement("div", { className: "dg-per-page" }, /* @__PURE__ */ React75.createElement("span", null, "Rows per page:"), /* @__PURE__ */ React75.createElement(
|
|
4598
|
+
})()))))), paginatedData.length === 0 && /* @__PURE__ */ React75.createElement("div", { className: "dg-empty-state" }, /* @__PURE__ */ React75.createElement("svg", { className: "dg-empty-icon", viewBox: "0 0 200 160", fill: "none", xmlns: "http://www.w3.org/2000/svg" }, /* @__PURE__ */ React75.createElement("rect", { x: "20", y: "30", width: "160", height: "100", rx: "8", fill: "var(--hover-color)", stroke: "var(--border-color)", strokeWidth: "1.5" }), /* @__PURE__ */ React75.createElement("rect", { x: "20", y: "30", width: "160", height: "28", rx: "8", fill: "var(--border-color)", opacity: "0.5" }), /* @__PURE__ */ React75.createElement("rect", { x: "20", y: "50", width: "160", height: "8", rx: "0", fill: "var(--border-color)", opacity: "0.5" }), /* @__PURE__ */ React75.createElement("line", { x1: "72", y1: "30", x2: "72", y2: "130", stroke: "var(--border-color)", strokeWidth: "1" }), /* @__PURE__ */ React75.createElement("line", { x1: "128", y1: "30", x2: "128", y2: "130", stroke: "var(--border-color)", strokeWidth: "1" }), /* @__PURE__ */ React75.createElement("line", { x1: "20", y1: "78", x2: "180", y2: "78", stroke: "var(--border-color)", strokeWidth: "1" }), /* @__PURE__ */ React75.createElement("line", { x1: "20", y1: "104", x2: "180", y2: "104", stroke: "var(--border-color)", strokeWidth: "1" }), /* @__PURE__ */ React75.createElement("rect", { x: "32", y: "87", width: "28", height: "6", rx: "3", fill: "var(--border-color)", opacity: "0.4" }), /* @__PURE__ */ React75.createElement("rect", { x: "84", y: "87", width: "28", height: "6", rx: "3", fill: "var(--border-color)", opacity: "0.4" }), /* @__PURE__ */ React75.createElement("rect", { x: "140", y: "87", width: "28", height: "6", rx: "3", fill: "var(--border-color)", opacity: "0.4" }), /* @__PURE__ */ React75.createElement("rect", { x: "32", y: "113", width: "20", height: "6", rx: "3", fill: "var(--border-color)", opacity: "0.3" }), /* @__PURE__ */ React75.createElement("rect", { x: "84", y: "113", width: "32", height: "6", rx: "3", fill: "var(--border-color)", opacity: "0.3" }), /* @__PURE__ */ React75.createElement("rect", { x: "140", y: "113", width: "20", height: "6", rx: "3", fill: "var(--border-color)", opacity: "0.3" }), /* @__PURE__ */ React75.createElement("circle", { cx: "148", cy: "108", r: "26", fill: "var(--surface-color)", stroke: "var(--border-color)", strokeWidth: "1.5" }), /* @__PURE__ */ React75.createElement("circle", { cx: "145", cy: "105", r: "10", stroke: "var(--text-secondary)", strokeWidth: "2.5", opacity: "0.5" }), /* @__PURE__ */ React75.createElement("line", { x1: "152", y1: "113", x2: "161", y2: "122", stroke: "var(--text-secondary)", strokeWidth: "2.5", strokeLinecap: "round", opacity: "0.5" }), /* @__PURE__ */ React75.createElement("line", { x1: "141", y1: "101", x2: "149", y2: "109", stroke: "var(--text-secondary)", strokeWidth: "2", strokeLinecap: "round", opacity: "0.5" }), /* @__PURE__ */ React75.createElement("line", { x1: "149", y1: "101", x2: "141", y2: "109", stroke: "var(--text-secondary)", strokeWidth: "2", strokeLinecap: "round", opacity: "0.5" })), /* @__PURE__ */ React75.createElement("p", { className: "dg-empty-title" }, "No data found"), /* @__PURE__ */ React75.createElement("p", { className: "dg-empty-subtitle" }, filterText || hasActiveFilters ? "Try adjusting your search or filters" : "No records to display"))), /* @__PURE__ */ React75.createElement("div", { className: "dg-pagination" }, /* @__PURE__ */ React75.createElement("div", { className: "dg-page-info" }, /* @__PURE__ */ React75.createElement("div", { className: "dg-per-page" }, /* @__PURE__ */ React75.createElement("span", null, "Rows per page:"), /* @__PURE__ */ React75.createElement(
|
|
4597
4599
|
"select",
|
|
4598
4600
|
{
|
|
4599
4601
|
value: pageSize,
|
|
@@ -4614,16 +4616,14 @@ function DataGrid({
|
|
|
4614
4616
|
...menuPosition.right !== void 0 ? { right: menuPosition.right } : {}
|
|
4615
4617
|
}
|
|
4616
4618
|
},
|
|
4617
|
-
/* @__PURE__ */ React75.createElement("button", { className: "dg-menu-item", onClick: () => handleSort(activeMenu, "asc") }, /* @__PURE__ */ React75.createElement(ArrowUp, { size: 14 }), " Sort ascending"),
|
|
4618
|
-
/* @__PURE__ */ React75.createElement("button", { className: "dg-menu-item", onClick: () => handleSort(activeMenu, "desc") }, /* @__PURE__ */ React75.createElement(ArrowDown, { size: 14 }), " Sort descending"),
|
|
4619
|
-
/* @__PURE__ */ React75.createElement("div", { className: "dg-menu-divider" }),
|
|
4619
|
+
activeMenuCol?.sortable !== false && /* @__PURE__ */ React75.createElement(React75.Fragment, null, /* @__PURE__ */ React75.createElement("button", { className: "dg-menu-item", onClick: () => handleSort(activeMenu, "asc") }, /* @__PURE__ */ React75.createElement(ArrowUp, { size: 14 }), " Sort ascending"), /* @__PURE__ */ React75.createElement("button", { className: "dg-menu-item", onClick: () => handleSort(activeMenu, "desc") }, /* @__PURE__ */ React75.createElement(ArrowDown, { size: 14 }), " Sort descending"), /* @__PURE__ */ React75.createElement("div", { className: "dg-menu-divider" })),
|
|
4620
4620
|
(() => {
|
|
4621
|
-
const col =
|
|
4621
|
+
const col = activeMenuCol;
|
|
4622
4622
|
if (!col) return null;
|
|
4623
4623
|
return /* @__PURE__ */ React75.createElement(React75.Fragment, null, col.pinned === "left" ? /* @__PURE__ */ React75.createElement("button", { className: "dg-menu-item", onClick: () => togglePin(activeMenu, "left") }, /* @__PURE__ */ React75.createElement(Pin, { size: 14, style: { transform: "rotate(0deg)", opacity: 0.5 } }), " Unpin") : /* @__PURE__ */ React75.createElement("button", { className: "dg-menu-item", onClick: () => togglePin(activeMenu, "left") }, /* @__PURE__ */ React75.createElement(Pin, { size: 14, style: { transform: "rotate(45deg)" } }), " Pin left"), col.pinned === "right" ? /* @__PURE__ */ React75.createElement("button", { className: "dg-menu-item", onClick: () => togglePin(activeMenu, "right") }, /* @__PURE__ */ React75.createElement(Pin, { size: 14, style: { transform: "rotate(0deg)", opacity: 0.5 } }), " Unpin") : /* @__PURE__ */ React75.createElement("button", { className: "dg-menu-item", onClick: () => togglePin(activeMenu, "right") }, /* @__PURE__ */ React75.createElement(Pin, { size: 14, style: { transform: "rotate(-45deg)" } }), " Pin right"));
|
|
4624
4624
|
})(),
|
|
4625
4625
|
/* @__PURE__ */ React75.createElement("div", { className: "dg-menu-divider" }),
|
|
4626
|
-
/* @__PURE__ */ React75.createElement("button", { className: "dg-menu-item", onClick: () => {
|
|
4626
|
+
activeMenuCol?.filterable !== false && /* @__PURE__ */ React75.createElement("button", { className: "dg-menu-item", onClick: () => {
|
|
4627
4627
|
setShowAdvancedFilter(true);
|
|
4628
4628
|
setActiveMenu(null);
|
|
4629
4629
|
} }, /* @__PURE__ */ React75.createElement(Filter, { size: 14 }), " Filter\u2026"),
|
|
@@ -4687,7 +4687,7 @@ function DataGrid({
|
|
|
4687
4687
|
setAdvancedFilters((p) => p.map((fi, i) => i === idx ? { ...fi, column: newColKey, operator: defaultOp, value: "" } : fi));
|
|
4688
4688
|
}
|
|
4689
4689
|
},
|
|
4690
|
-
resolvedColumns.map((c) => /* @__PURE__ */ React75.createElement("option", { key: String(c.key), value: String(c.key) }, c.header))
|
|
4690
|
+
resolvedColumns.filter((c) => c.filterable !== false).map((c) => /* @__PURE__ */ React75.createElement("option", { key: String(c.key), value: String(c.key) }, c.header))
|
|
4691
4691
|
), (() => {
|
|
4692
4692
|
const col = resolvedColumns.find((c) => String(c.key) === f.column);
|
|
4693
4693
|
const operators = getOperatorsForType(col?.type);
|
|
@@ -4735,7 +4735,8 @@ function DataGrid({
|
|
|
4735
4735
|
className: "dg-action-btn",
|
|
4736
4736
|
style: { alignSelf: "flex-start", marginTop: 4 },
|
|
4737
4737
|
onClick: () => {
|
|
4738
|
-
const firstCol = resolvedColumns
|
|
4738
|
+
const firstCol = resolvedColumns.find((c) => c.filterable !== false);
|
|
4739
|
+
if (!firstCol) return;
|
|
4739
4740
|
const defaultOp = getDefaultOperator(firstCol?.type);
|
|
4740
4741
|
setAdvancedFilters((p) => [...p, { column: String(firstCol.key), operator: defaultOp, value: "", logic: "AND" }]);
|
|
4741
4742
|
}
|
|
@@ -4747,7 +4748,8 @@ function DataGrid({
|
|
|
4747
4748
|
{
|
|
4748
4749
|
className: "dg-action-btn",
|
|
4749
4750
|
onClick: () => {
|
|
4750
|
-
const firstCol = resolvedColumns
|
|
4751
|
+
const firstCol = resolvedColumns.find((c) => c.filterable !== false);
|
|
4752
|
+
if (!firstCol) return;
|
|
4751
4753
|
setAdvancedFilters([{ column: String(firstCol.key), operator: getDefaultOperator(firstCol?.type), value: "", logic: "AND" }]);
|
|
4752
4754
|
}
|
|
4753
4755
|
},
|