@rufous/ui 0.1.68 → 0.1.69

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 CHANGED
@@ -30384,22 +30384,31 @@ function DataGrid({
30384
30384
  pageSizeOptions = [5, 10, 25, 50],
30385
30385
  title
30386
30386
  }) {
30387
- const initialColumns = (0, import_react18.useMemo)(() => initialColumnsProp.map((col) => ({
30388
- ...col,
30389
- key: col.key || col.field || "",
30390
- header: col.header || col.headerName || ""
30391
- })), [initialColumnsProp]);
30392
- const [columns, setColumns] = (0, import_react18.useState)(initialColumns);
30387
+ const [columnOverrides, setColumnOverrides] = (0, import_react18.useState)({});
30388
+ const resolvedColumns = (0, import_react18.useMemo)(() => {
30389
+ return initialColumnsProp.map((col) => {
30390
+ const field = String(col.field || col.key || "");
30391
+ const override = columnOverrides[field] || {};
30392
+ return {
30393
+ ...col,
30394
+ field,
30395
+ headerName: col.headerName || col.header || "",
30396
+ hidden: override.hidden !== void 0 ? override.hidden : col.hidden,
30397
+ pinned: override.pinned !== void 0 ? override.pinned : col.pinned
30398
+ };
30399
+ });
30400
+ }, [initialColumnsProp, columnOverrides]);
30393
30401
  const [columnWidths, setColumnWidths] = (0, import_react18.useState)(() => {
30394
30402
  const widths = {};
30395
- initialColumns.forEach((col) => {
30403
+ initialColumnsProp.forEach((col) => {
30404
+ const field = String(col.field || col.key || "");
30396
30405
  const w = col.width || 200;
30397
- widths[String(col.key)] = typeof w === "number" ? w : parseInt(w);
30406
+ widths[field] = typeof w === "number" ? w : parseInt(w);
30398
30407
  });
30399
30408
  return widths;
30400
30409
  });
30401
30410
  const [pageSize, setPageSize] = (0, import_react18.useState)(initialPageSize);
30402
- const [sortKey, setSortKey] = (0, import_react18.useState)(null);
30411
+ const [sortField, setSortField] = (0, import_react18.useState)(null);
30403
30412
  const [sortDirection, setSortDirection] = (0, import_react18.useState)(null);
30404
30413
  const [filterText, setFilterText] = (0, import_react18.useState)("");
30405
30414
  const [currentPage, setCurrentPage] = (0, import_react18.useState)(1);
@@ -30412,40 +30421,15 @@ function DataGrid({
30412
30421
  const menuRef = (0, import_react18.useRef)(null);
30413
30422
  const [showManageColumns, setShowManageColumns] = (0, import_react18.useState)(false);
30414
30423
  const [showAdvancedFilter, setShowAdvancedFilter] = (0, import_react18.useState)(false);
30424
+ const initialFilterCol = String(initialColumnsProp[0]?.field || initialColumnsProp[0]?.key || "");
30415
30425
  const [advancedFilters, setAdvancedFilters] = (0, import_react18.useState)([
30416
- { column: String(initialColumns[0]?.key || ""), operator: "contains", value: "", logic: "AND" }
30426
+ { column: initialFilterCol, operator: "contains", value: "", logic: "AND" }
30417
30427
  ]);
30418
- (0, import_react18.useEffect)(() => {
30419
- setColumns((prevColumns) => {
30420
- return initialColumns.map((newCol) => {
30421
- const prevCol = prevColumns.find((c) => (c.key || c.field) === (newCol.key || newCol.field));
30422
- if (!prevCol) return newCol;
30423
- return {
30424
- ...newCol,
30425
- hidden: prevCol.hidden !== void 0 ? prevCol.hidden : newCol.hidden,
30426
- pinned: prevCol.pinned !== void 0 ? prevCol.pinned : newCol.pinned
30427
- };
30428
- });
30429
- });
30430
- }, [initialColumns]);
30431
- (0, import_react18.useEffect)(() => {
30432
- setColumnWidths((prev) => {
30433
- const next = { ...prev };
30434
- initialColumns.forEach((col) => {
30435
- const key = String(col.key);
30436
- if (next[key] === void 0) {
30437
- const w = col.width || 200;
30438
- next[key] = typeof w === "number" ? w : parseInt(w);
30439
- }
30440
- });
30441
- return next;
30442
- });
30443
- }, [initialColumns]);
30444
30428
  const [colSearch, setColSearch] = (0, import_react18.useState)("");
30445
30429
  (0, import_react18.useEffect)(() => {
30446
30430
  const handleMouseMove = (e) => {
30447
30431
  if (!resizingColumn) return;
30448
- const col = columns.find((c) => String(c.key) === resizingColumn);
30432
+ const col = resolvedColumns.find((c) => String(c.field) === resizingColumn);
30449
30433
  const diff = e.clientX - startX;
30450
30434
  const minW = col?.minWidth ? typeof col.minWidth === "number" ? col.minWidth : parseInt(col.minWidth) : 80;
30451
30435
  const maxW = col?.maxWidth ? typeof col.maxWidth === "number" ? col.maxWidth : parseInt(col.maxWidth) : Infinity;
@@ -30461,7 +30445,7 @@ function DataGrid({
30461
30445
  document.removeEventListener("mousemove", handleMouseMove);
30462
30446
  document.removeEventListener("mouseup", handleMouseUp);
30463
30447
  };
30464
- }, [resizingColumn, startX, startWidth, columns]);
30448
+ }, [resizingColumn, startX, startWidth, resolvedColumns]);
30465
30449
  (0, import_react18.useEffect)(() => {
30466
30450
  const handleClickOutside = (e) => {
30467
30451
  if (menuRef.current && !menuRef.current.contains(e.target)) {
@@ -30471,32 +30455,55 @@ function DataGrid({
30471
30455
  document.addEventListener("mousedown", handleClickOutside);
30472
30456
  return () => document.removeEventListener("mousedown", handleClickOutside);
30473
30457
  }, []);
30474
- const handleSort = (key, dir) => {
30458
+ (0, import_react18.useEffect)(() => {
30459
+ setColumnWidths((prev) => {
30460
+ const next = { ...prev };
30461
+ initialColumnsProp.forEach((col) => {
30462
+ const field = String(col.field || col.key || "");
30463
+ if (next[field] === void 0) {
30464
+ const w = col.width || 200;
30465
+ next[field] = typeof w === "number" ? w : parseInt(w);
30466
+ }
30467
+ });
30468
+ return next;
30469
+ });
30470
+ }, [initialColumnsProp]);
30471
+ const handleSort = (fieldKey, dir) => {
30475
30472
  if (dir !== void 0) {
30476
- setSortKey(key);
30473
+ setSortField(fieldKey);
30477
30474
  setSortDirection(dir);
30478
- } else if (sortKey === key) {
30475
+ } else if (sortField === fieldKey) {
30479
30476
  if (sortDirection === "asc") setSortDirection("desc");
30480
30477
  else {
30481
- setSortKey(null);
30478
+ setSortField(null);
30482
30479
  setSortDirection(null);
30483
30480
  }
30484
30481
  } else {
30485
- setSortKey(key);
30482
+ setSortField(fieldKey);
30486
30483
  setSortDirection("asc");
30487
30484
  }
30488
30485
  setActiveMenu(null);
30489
30486
  };
30490
- const togglePin = (key, side) => {
30491
- setColumns((prev) => prev.map(
30492
- (col) => String(col.key) === key ? { ...col, pinned: col.pinned === side ? void 0 : side } : col
30493
- ));
30487
+ const togglePin = (fieldKey, side) => {
30488
+ setColumnOverrides((prev) => {
30489
+ const current = prev[fieldKey] || {};
30490
+ return {
30491
+ ...prev,
30492
+ [fieldKey]: { ...current, pinned: current.pinned === side ? void 0 : side }
30493
+ };
30494
+ });
30494
30495
  setActiveMenu(null);
30495
30496
  };
30496
- const toggleHide = (key) => {
30497
- setColumns((prev) => prev.map(
30498
- (col) => String(col.key) === key ? { ...col, hidden: !col.hidden } : col
30499
- ));
30497
+ const toggleHide = (fieldKey) => {
30498
+ setColumnOverrides((prev) => {
30499
+ const current = prev[fieldKey] || {};
30500
+ const col = resolvedColumns.find((c) => String(c.field) === fieldKey);
30501
+ if (col?.hideable === false) return prev;
30502
+ return {
30503
+ ...prev,
30504
+ [fieldKey]: { ...current, hidden: !current.hidden }
30505
+ };
30506
+ });
30500
30507
  setActiveMenu(null);
30501
30508
  };
30502
30509
  const filteredData = (0, import_react18.useMemo)(() => {
@@ -30538,30 +30545,30 @@ function DataGrid({
30538
30545
  });
30539
30546
  }, [data, filterText, advancedFilters]);
30540
30547
  const sortedData = (0, import_react18.useMemo)(() => {
30541
- if (!sortKey || !sortDirection) return filteredData;
30542
- const col = columns.find((c) => c.key === sortKey);
30548
+ if (!sortField || !sortDirection) return filteredData;
30549
+ const col = resolvedColumns.find((c) => c.field === sortField);
30543
30550
  return [...filteredData].sort((a, b) => {
30544
- let aVal = a[sortKey];
30545
- let bVal = b[sortKey];
30551
+ let aVal = a[sortField];
30552
+ let bVal = b[sortField];
30546
30553
  if (col?.valueGetter) {
30547
- aVal = col.valueGetter({ value: aVal, row: a, field: String(sortKey) });
30548
- bVal = col.valueGetter({ value: bVal, row: b, field: String(sortKey) });
30554
+ aVal = col.valueGetter({ value: aVal, row: a, field: String(sortField) });
30555
+ bVal = col.valueGetter({ value: bVal, row: b, field: String(sortField) });
30549
30556
  }
30550
30557
  if (aVal < bVal) return sortDirection === "asc" ? -1 : 1;
30551
30558
  if (aVal > bVal) return sortDirection === "asc" ? 1 : -1;
30552
30559
  return 0;
30553
30560
  });
30554
- }, [filteredData, sortKey, sortDirection, columns]);
30561
+ }, [filteredData, sortField, sortDirection, resolvedColumns]);
30555
30562
  const totalPages = Math.max(1, Math.ceil(sortedData.length / pageSize));
30556
30563
  const paginatedData = (0, import_react18.useMemo)(() => {
30557
30564
  const start = (currentPage - 1) * pageSize;
30558
30565
  return sortedData.slice(start, start + pageSize);
30559
30566
  }, [sortedData, currentPage, pageSize]);
30560
30567
  const handleExport = () => {
30561
- const visibleCols = columns.filter((c) => !c.hidden);
30562
- const headers = visibleCols.map((c) => c.header).join(",");
30568
+ const visibleCols = resolvedColumns.filter((c) => !c.hidden);
30569
+ const headers = visibleCols.map((c) => c.headerName).join(",");
30563
30570
  const rows = sortedData.map(
30564
- (item) => visibleCols.map((c) => `"${String(item[c.key]).replace(/"/g, '""')}"`).join(",")
30571
+ (item) => visibleCols.map((c) => `"${String(item[c.field]).replace(/"/g, '""')}"`).join(",")
30565
30572
  );
30566
30573
  const csv = [headers, ...rows].join("\n");
30567
30574
  const blob = new Blob([csv], { type: "text/csv;charset=utf-8;" });
@@ -30572,24 +30579,24 @@ function DataGrid({
30572
30579
  link2.click();
30573
30580
  document.body.removeChild(link2);
30574
30581
  };
30575
- const handleMenuOpen = (e, key) => {
30582
+ const handleMenuOpen = (e, keyStr) => {
30576
30583
  e.stopPropagation();
30577
30584
  const rect = e.currentTarget.getBoundingClientRect();
30578
30585
  setMenuPosition({ top: rect.bottom + 4, left: rect.left });
30579
- setActiveMenu(key);
30586
+ setActiveMenu(keyStr);
30580
30587
  };
30581
30588
  const visibleColumns = (0, import_react18.useMemo)(() => {
30582
- const left = columns.filter((c) => !c.hidden && c.pinned === "left");
30583
- const mid = columns.filter((c) => !c.hidden && !c.pinned);
30584
- const right = columns.filter((c) => !c.hidden && c.pinned === "right");
30589
+ const left = resolvedColumns.filter((c) => !c.hidden && c.pinned === "left");
30590
+ const mid = resolvedColumns.filter((c) => !c.hidden && !c.pinned);
30591
+ const right = resolvedColumns.filter((c) => !c.hidden && c.pinned === "right");
30585
30592
  return [...left, ...mid, ...right];
30586
- }, [columns]);
30593
+ }, [resolvedColumns]);
30587
30594
  const getLeftOffset = (col, idx) => {
30588
30595
  if (col.pinned !== "left") return void 0;
30589
30596
  let offset2 = 0;
30590
30597
  for (let i = 0; i < idx; i++) {
30591
30598
  if (visibleColumns[i].pinned === "left") {
30592
- offset2 += columnWidths[String(visibleColumns[i].key)] || 200;
30599
+ offset2 += columnWidths[String(visibleColumns[i].field)] || 200;
30593
30600
  }
30594
30601
  }
30595
30602
  return offset2;
@@ -30623,14 +30630,14 @@ function DataGrid({
30623
30630
  },
30624
30631
  /* @__PURE__ */ import_react18.default.createElement(import_lucide_react.Columns, { size: 16 })
30625
30632
  ), /* @__PURE__ */ import_react18.default.createElement("button", { className: "dg-action-btn", onClick: handleExport }, /* @__PURE__ */ import_react18.default.createElement(import_lucide_react.Download, { size: 14 }), " Export CSV"))), /* @__PURE__ */ import_react18.default.createElement("div", { className: "dg-table-wrap" }, /* @__PURE__ */ import_react18.default.createElement("table", { className: "dg-table" }, /* @__PURE__ */ import_react18.default.createElement("thead", null, /* @__PURE__ */ import_react18.default.createElement("tr", null, visibleColumns.map((col, idx) => {
30626
- const colKey = String(col.key);
30627
- const width = columnWidths[colKey] || 200;
30633
+ const colField = String(col.field);
30634
+ const width = columnWidths[colField] || 200;
30628
30635
  const leftOffset = getLeftOffset(col, idx);
30629
- const isSorted = sortKey === col.key;
30636
+ const isSorted = sortField === col.field;
30630
30637
  return /* @__PURE__ */ import_react18.default.createElement(
30631
30638
  "th",
30632
30639
  {
30633
- key: colKey,
30640
+ key: colField,
30634
30641
  className: `dg-thead-cell${col.pinned === "left" ? " pinned-left" : col.pinned === "right" ? " pinned-right" : ""} ${col.headerClassName || ""}`,
30635
30642
  style: { width, minWidth: width, left: leftOffset, flex: col.flex }
30636
30643
  },
@@ -30638,25 +30645,25 @@ function DataGrid({
30638
30645
  "div",
30639
30646
  {
30640
30647
  className: `dg-th-label${col.sortable === false ? " no-sort" : ""}`,
30641
- onClick: () => col.sortable !== false && handleSort(col.key)
30648
+ onClick: () => col.sortable !== false && handleSort(col.field || "")
30642
30649
  },
30643
- col.header,
30650
+ col.headerName,
30644
30651
  isSorted && sortDirection === "asc" && /* @__PURE__ */ import_react18.default.createElement(import_lucide_react.ChevronUp, { size: 12 }),
30645
30652
  isSorted && sortDirection === "desc" && /* @__PURE__ */ import_react18.default.createElement(import_lucide_react.ChevronDown, { size: 12 })
30646
30653
  ), /* @__PURE__ */ import_react18.default.createElement("div", { className: "dg-th-actions" }, !col.disableColumnMenu && /* @__PURE__ */ import_react18.default.createElement(
30647
30654
  "button",
30648
30655
  {
30649
30656
  className: "dg-th-menu-btn",
30650
- onClick: (e) => handleMenuOpen(e, colKey)
30657
+ onClick: (e) => handleMenuOpen(e, colField)
30651
30658
  },
30652
30659
  /* @__PURE__ */ import_react18.default.createElement(import_lucide_react.MoreVertical, { size: 13 })
30653
30660
  ), /* @__PURE__ */ import_react18.default.createElement(
30654
30661
  "div",
30655
30662
  {
30656
- className: `dg-resizer${resizingColumn === colKey ? " resizing" : ""}`,
30663
+ className: `dg-resizer${resizingColumn === colField ? " resizing" : ""}`,
30657
30664
  onMouseDown: (e) => {
30658
30665
  e.preventDefault();
30659
- setResizingColumn(colKey);
30666
+ setResizingColumn(colField);
30660
30667
  setStartX(e.clientX);
30661
30668
  setStartWidth(width);
30662
30669
  }
@@ -30664,19 +30671,19 @@ function DataGrid({
30664
30671
  )))
30665
30672
  );
30666
30673
  }), actions && /* @__PURE__ */ import_react18.default.createElement("th", { style: { width: 0, padding: 0 } }))), /* @__PURE__ */ import_react18.default.createElement("tbody", null, paginatedData.length === 0 ? /* @__PURE__ */ import_react18.default.createElement("tr", null, /* @__PURE__ */ import_react18.default.createElement("td", { colSpan: visibleColumns.length + (actions ? 1 : 0), className: "dg-empty" }, "No records found")) : paginatedData.map((item) => /* @__PURE__ */ import_react18.default.createElement("tr", { key: item.id, className: "dg-tbody-row" }, visibleColumns.map((col, idx) => {
30667
- const colKey = String(col.key);
30668
- const width = columnWidths[colKey] || 200;
30674
+ const colField = String(col.field);
30675
+ const width = columnWidths[colField] || 200;
30669
30676
  const leftOffset = getLeftOffset(col, idx);
30670
30677
  return /* @__PURE__ */ import_react18.default.createElement(
30671
30678
  "td",
30672
30679
  {
30673
- key: `${item.id}-${colKey}`,
30680
+ key: `${item.id}-${colField}`,
30674
30681
  className: `dg-td${col.pinned === "left" ? " pinned-left" : ""} ${col.cellClassName || ""}`,
30675
30682
  style: { width, minWidth: width, maxWidth: width, left: leftOffset, flex: col.flex }
30676
30683
  },
30677
30684
  (() => {
30678
- const field = String(col.key);
30679
- const rawValue = item[col.key];
30685
+ const field = String(col.field);
30686
+ const rawValue = item[col.field || ""];
30680
30687
  let value = col.valueGetter ? col.valueGetter({ value: rawValue, row: item, field }) : rawValue;
30681
30688
  const formattedValue = col.valueFormatter ? col.valueFormatter({ value, row: item, field }) : value;
30682
30689
  if (col.renderCell) {
@@ -30744,7 +30751,27 @@ function DataGrid({
30744
30751
  value: colSearch,
30745
30752
  onChange: (e) => setColSearch(e.target.value)
30746
30753
  }
30747
- )), columns.filter((c) => c.header.toLowerCase().includes(colSearch.toLowerCase()) && c.hideable !== false).map((col) => /* @__PURE__ */ import_react18.default.createElement("div", { key: String(col.key), className: "dg-col-row" }, /* @__PURE__ */ import_react18.default.createElement("div", { className: "dg-col-label" }, /* @__PURE__ */ import_react18.default.createElement("div", { className: "dg-col-dot", style: { background: col.hidden ? "var(--border-color)" : "var(--primary-color)" } }), col.header), /* @__PURE__ */ import_react18.default.createElement("button", { className: "dg-icon-btn", onClick: () => toggleHide(String(col.key)) }, col.hidden ? /* @__PURE__ */ import_react18.default.createElement(import_lucide_react.EyeOff, { size: 14 }) : /* @__PURE__ */ import_react18.default.createElement(import_lucide_react.EyeOff, { size: 14, style: { opacity: 0.4 } }))))), /* @__PURE__ */ import_react18.default.createElement("div", { className: "dg-modal-footer" }, /* @__PURE__ */ import_react18.default.createElement("button", { className: "dg-action-btn", onClick: () => setColumns((p) => p.map((c) => ({ ...c, hidden: false }))) }, "Show All"), /* @__PURE__ */ import_react18.default.createElement("button", { className: "dg-action-btn", onClick: () => setColumns((p) => p.map((c) => c.hideable !== false ? { ...c, hidden: true } : c)) }, "Hide All")))), showAdvancedFilter && /* @__PURE__ */ import_react18.default.createElement("div", { className: "dg-modal-overlay", onClick: () => setShowAdvancedFilter(false) }, /* @__PURE__ */ import_react18.default.createElement("div", { className: "dg-modal dg-modal-wide", onClick: (e) => e.stopPropagation() }, /* @__PURE__ */ import_react18.default.createElement("div", { className: "dg-modal-header" }, /* @__PURE__ */ import_react18.default.createElement("h3", null, "Filters"), /* @__PURE__ */ import_react18.default.createElement("button", { className: "dg-icon-btn", onClick: () => setShowAdvancedFilter(false) }, /* @__PURE__ */ import_react18.default.createElement(import_lucide_react.X, { size: 18 }))), /* @__PURE__ */ import_react18.default.createElement("div", { className: "dg-modal-body" }, advancedFilters.map((f, idx) => /* @__PURE__ */ import_react18.default.createElement("div", { key: idx }, idx > 0 && /* @__PURE__ */ import_react18.default.createElement("div", { className: "dg-filter-logic" }, /* @__PURE__ */ import_react18.default.createElement(
30754
+ )), resolvedColumns.filter((c) => c.header.toLowerCase().includes(colSearch.toLowerCase())).map((col) => {
30755
+ const key = String(col.key);
30756
+ const isUnhideable = col.hideable === false;
30757
+ return /* @__PURE__ */ import_react18.default.createElement("div", { key, className: `dg-col-row${isUnhideable ? " disabled" : ""}` }, /* @__PURE__ */ import_react18.default.createElement("div", { className: "dg-col-label" }, /* @__PURE__ */ import_react18.default.createElement("div", { className: "dg-col-dot", style: { background: col.hidden ? "var(--border-color)" : "var(--primary-color)" } }), col.header), !isUnhideable && /* @__PURE__ */ import_react18.default.createElement("button", { className: "dg-icon-btn", onClick: () => toggleHide(key) }, col.hidden ? /* @__PURE__ */ import_react18.default.createElement(import_lucide_react.EyeOff, { size: 14 }) : /* @__PURE__ */ import_react18.default.createElement(import_lucide_react.EyeOff, { size: 14, style: { opacity: 0.4 } })));
30758
+ })), /* @__PURE__ */ import_react18.default.createElement("div", { className: "dg-modal-footer" }, /* @__PURE__ */ import_react18.default.createElement("button", { className: "dg-action-btn", onClick: () => setColumnOverrides((prev) => {
30759
+ const next = { ...prev };
30760
+ resolvedColumns.forEach((c) => {
30761
+ const k = String(c.key);
30762
+ next[k] = { ...next[k], hidden: false };
30763
+ });
30764
+ return next;
30765
+ }) }, "Show All"), /* @__PURE__ */ import_react18.default.createElement("button", { className: "dg-action-btn", onClick: () => {
30766
+ const newOverrides = { ...columnOverrides };
30767
+ resolvedColumns.forEach((c) => {
30768
+ if (c.hideable !== false) {
30769
+ const key = String(c.key);
30770
+ newOverrides[key] = { ...newOverrides[key], hidden: true };
30771
+ }
30772
+ });
30773
+ setColumnOverrides(newOverrides);
30774
+ } }, "Hide All")))), showAdvancedFilter && /* @__PURE__ */ import_react18.default.createElement("div", { className: "dg-modal-overlay", onClick: () => setShowAdvancedFilter(false) }, /* @__PURE__ */ import_react18.default.createElement("div", { className: "dg-modal dg-modal-wide", onClick: (e) => e.stopPropagation() }, /* @__PURE__ */ import_react18.default.createElement("div", { className: "dg-modal-header" }, /* @__PURE__ */ import_react18.default.createElement("h3", null, "Filters"), /* @__PURE__ */ import_react18.default.createElement("button", { className: "dg-icon-btn", onClick: () => setShowAdvancedFilter(false) }, /* @__PURE__ */ import_react18.default.createElement(import_lucide_react.X, { size: 18 }))), /* @__PURE__ */ import_react18.default.createElement("div", { className: "dg-modal-body" }, advancedFilters.map((f, idx) => /* @__PURE__ */ import_react18.default.createElement("div", { key: idx }, idx > 0 && /* @__PURE__ */ import_react18.default.createElement("div", { className: "dg-filter-logic" }, /* @__PURE__ */ import_react18.default.createElement(
30748
30775
  "button",
30749
30776
  {
30750
30777
  className: `dg-logic-btn${f.logic === "AND" ? " active" : ""}`,
@@ -30765,7 +30792,7 @@ function DataGrid({
30765
30792
  value: f.column,
30766
30793
  onChange: (e) => setAdvancedFilters((p) => p.map((fi, i) => i === idx ? { ...fi, column: e.target.value } : fi))
30767
30794
  },
30768
- columns.map((c) => /* @__PURE__ */ import_react18.default.createElement("option", { key: String(c.key), value: String(c.key) }, c.header))
30795
+ resolvedColumns.map((c) => /* @__PURE__ */ import_react18.default.createElement("option", { key: String(c.key), value: String(c.key) }, c.header))
30769
30796
  ), /* @__PURE__ */ import_react18.default.createElement(
30770
30797
  "select",
30771
30798
  {
@@ -30792,7 +30819,7 @@ function DataGrid({
30792
30819
  {
30793
30820
  className: "dg-action-btn",
30794
30821
  style: { alignSelf: "flex-start", marginTop: 4 },
30795
- onClick: () => setAdvancedFilters((p) => [...p, { column: String(columns[0].key), operator: "contains", value: "", logic: "AND" }])
30822
+ onClick: () => setAdvancedFilters((p) => [...p, { column: String(resolvedColumns[0].key), operator: "contains", value: "", logic: "AND" }])
30796
30823
  },
30797
30824
  /* @__PURE__ */ import_react18.default.createElement(import_lucide_react.Plus, { size: 14 }),
30798
30825
  " Add Filter"
@@ -30800,7 +30827,7 @@ function DataGrid({
30800
30827
  "button",
30801
30828
  {
30802
30829
  className: "dg-action-btn",
30803
- onClick: () => setAdvancedFilters([{ column: String(columns[0].key), operator: "contains", value: "", logic: "AND" }])
30830
+ onClick: () => setAdvancedFilters([{ column: String(resolvedColumns[0].key), operator: "contains", value: "", logic: "AND" }])
30804
30831
  },
30805
30832
  /* @__PURE__ */ import_react18.default.createElement(import_lucide_react.Trash2, { size: 14 }),
30806
30833
  " Reset"
package/dist/main.js CHANGED
@@ -172,17 +172,24 @@ import {
172
172
  } from "./chunk-Q5XKCUE3.js";
173
173
  import {
174
174
  AddressLookup_default
175
- } from "./chunk-EB6MPFGC.js";
175
+ } from "./chunk-GHCM2AWR.js";
176
176
  import {
177
177
  FloatingInput
178
178
  } from "./chunk-UPCMMCPQ.js";
179
179
  import {
180
180
  Checkbox
181
181
  } from "./chunk-X357WQOT.js";
182
+ import {
183
+ RufousThemeProvider,
184
+ useRufousTheme
185
+ } from "./chunk-BOE27BFQ.js";
186
+ import {
187
+ APP_THEMES
188
+ } from "./chunk-S7BNFVQO.js";
182
189
  import "./chunk-7KRG7VNW.js";
183
190
  import {
184
191
  DataGrid
185
- } from "./chunk-B6EOV25J.js";
192
+ } from "./chunk-LG4EJGMI.js";
186
193
  import "./chunk-GJGRMMAQ.js";
187
194
  import {
188
195
  RichTextEditor
@@ -203,13 +210,6 @@ import {
203
210
  import {
204
211
  circularProgress_default
205
212
  } from "./chunk-CTBYVXFP.js";
206
- import {
207
- RufousThemeProvider,
208
- useRufousTheme
209
- } from "./chunk-BOE27BFQ.js";
210
- import {
211
- APP_THEMES
212
- } from "./chunk-S7BNFVQO.js";
213
213
  import "./chunk-LI4N7JWK.js";
214
214
  export {
215
215
  APP_THEMES,
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@rufous/ui",
3
3
  "private": false,
4
- "version": "0.1.68",
4
+ "version": "0.1.69",
5
5
  "type": "module",
6
6
  "description": "Experimental: A lightweight React UI component library (Beta)",
7
7
  "style": "./dist/style.css",
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  FloatingInput
3
3
  } from "./chunk-UPCMMCPQ.js";
4
- import {
5
- circularProgress_default
6
- } from "./chunk-CTBYVXFP.js";
7
4
  import {
8
5
  useRufousTheme
9
6
  } from "./chunk-BOE27BFQ.js";
7
+ import {
8
+ circularProgress_default
9
+ } from "./chunk-CTBYVXFP.js";
10
10
 
11
11
  // lib/TextFields/AddressLookup.tsx
12
12
  import React, { useState, useRef, useEffect } from "react";