@rufous/ui 0.3.43 → 0.3.45

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
@@ -838,7 +838,7 @@ var subscribeIcon_default = SubscribeIcon;
838
838
 
839
839
  // lib/icons/suspendUserIcon.tsx
840
840
  var React30 = __toESM(require("react"), 1);
841
- var SuspendUserIcon = ({ color = "currentColor", size = 24, ...props }) => /* @__PURE__ */ React30.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", width: size, height: size, viewBox: "0 0 24 24", fill: "none", stroke: color, strokeWidth: "1.8", strokeLinecap: "round", strokeLinejoin: "round", ...props }, /* @__PURE__ */ React30.createElement("circle", { cx: "9", cy: "7", r: "4" }), /* @__PURE__ */ React30.createElement("path", { d: "M3 21v-2a7 7 0 0 1 7-7h0" }), /* @__PURE__ */ React30.createElement("line", { x1: "15", y1: "14", x2: "21", y2: "20" }), /* @__PURE__ */ React30.createElement("line", { x1: "21", y1: "14", x2: "15", y2: "20" }));
841
+ var SuspendUserIcon = (({ color = "#3a3a3a", ...props }) => /* @__PURE__ */ React30.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", width: "25.8", height: "25.8", viewBox: "0 0 25.8 25.8", ...props }, /* @__PURE__ */ React30.createElement("g", { id: "Group_24703", "data-name": "Group 24703", transform: "translate(-1737.415 -376.95)" }, /* @__PURE__ */ React30.createElement("g", { id: "Group_24684", "data-name": "Group 24684", transform: "translate(1738.315 377.85)" }, /* @__PURE__ */ React30.createElement("ellipse", { id: "Ellipse_414", "data-name": "Ellipse 414", cx: "4.979", cy: "5.203", rx: "4.979", ry: "5.203", transform: "translate(3.506)", fill: "rgba(0,0,0,0)", stroke: color, strokeWidth: "1.8" }), /* @__PURE__ */ React30.createElement("path", { id: "Path_52609", "data-name": "Path 52609", d: "M128.5,212.538a8.719,8.719,0,0,1,14.56-6.69", transform: "translate(-128.5 -193.195)", fill: "rgba(0,0,0,0)", stroke: color, strokeWidth: "1.8" })), /* @__PURE__ */ React30.createElement("g", { id: "Group_24690", "data-name": "Group 24690", transform: "translate(1750.156 389.69)" }, /* @__PURE__ */ React30.createElement("g", { id: "Group_24741", "data-name": "Group 24741" }, /* @__PURE__ */ React30.createElement("ellipse", { id: "Ellipse_415", "data-name": "Ellipse 415", cx: "6.08", cy: "6.08", rx: "6.08", ry: "6.08", fill: "none", stroke: color, strokeWidth: "1.8", "stroke-dasharray": "470 154" }), /* @__PURE__ */ React30.createElement("line", { id: "Line_419", "data-name": "Line 419", x1: "7", y2: "9", transform: "translate(2.66 1.66)", fill: "none", stroke: color, strokeWidth: "1.8" }))))));
842
842
  var suspendUserIcon_default = SuspendUserIcon;
843
843
 
844
844
  // lib/icons/unsubscribeIcon.tsx
@@ -5217,6 +5217,7 @@ function DataGrid({
5217
5217
  const [sortField, setSortField] = (0, import_react17.useState)(null);
5218
5218
  const [sortDirection, setSortDirection] = (0, import_react17.useState)(null);
5219
5219
  const [filterText, setFilterText] = (0, import_react17.useState)("");
5220
+ const prevFilterText = (0, import_react17.useRef)("");
5220
5221
  const [currentPage, setCurrentPage] = (0, import_react17.useState)(1);
5221
5222
  const activePage = paginationModel ? paginationModel.page + 1 : currentPage;
5222
5223
  const activePageSize = paginationModel ? paginationModel.pageSize : pageSize;
@@ -5506,7 +5507,15 @@ function DataGrid({
5506
5507
  });
5507
5508
  }, [data, filterText, advancedFilters, resolvedColumns, searchableColumns]);
5508
5509
  (0, import_react17.useEffect)(() => {
5509
- if (!onSearchChange || !filterText) return;
5510
+ if (!onSearchChange) return;
5511
+ if (!filterText) {
5512
+ if (prevFilterText.current !== "") {
5513
+ onSearchChange("");
5514
+ }
5515
+ prevFilterText.current = "";
5516
+ return;
5517
+ }
5518
+ prevFilterText.current = filterText;
5510
5519
  if (filteredData.length === 0) onSearchChange(filterText);
5511
5520
  }, [filteredData, filterText, onSearchChange]);
5512
5521
  const sortedData = (0, import_react17.useMemo)(() => {
@@ -5695,7 +5704,7 @@ function DataGrid({
5695
5704
  const showExportBtn = !tOpts.hideExport && !hideTopExport;
5696
5705
  const showTitle = !tOpts.hideTitle;
5697
5706
  const showRecordCount = !tOpts.hideRecordCount;
5698
- return /* @__PURE__ */ import_react17.default.createElement("div", { className: ["dg-root", sxClass, className].filter(Boolean).join(" ") }, !tOpts.hideHeader && /* @__PURE__ */ import_react17.default.createElement("div", { className: `dg-header${customToolbar ? " dg-header--custom" : ""}` }, !customToolbar && (showTitle || showRecordCount) && /* @__PURE__ */ import_react17.default.createElement("div", { className: "dg-header-info" }, showTitle && /* @__PURE__ */ import_react17.default.createElement("h2", null, title), showRecordCount && /* @__PURE__ */ import_react17.default.createElement("p", null, isServer ? totalRows : filteredData.length, " total records")), /* @__PURE__ */ import_react17.default.createElement("div", { className: "dg-header-actions" }, customToolbar ?? /* @__PURE__ */ import_react17.default.createElement(import_react17.default.Fragment, null, showSearch && /* @__PURE__ */ import_react17.default.createElement("div", { className: "dg-search-wrap" }, /* @__PURE__ */ import_react17.default.createElement(Search, { size: 15 }), /* @__PURE__ */ import_react17.default.createElement(
5707
+ return /* @__PURE__ */ import_react17.default.createElement("div", { className: ["dg-root", sxClass, className].filter(Boolean).join(" ") }, !tOpts.hideHeader && /* @__PURE__ */ import_react17.default.createElement("div", { className: `dg-header${customToolbar ? " dg-header--custom" : ""}` }, !customToolbar && (showTitle || showRecordCount) && /* @__PURE__ */ import_react17.default.createElement("div", { className: "dg-header-info" }, showTitle && /* @__PURE__ */ import_react17.default.createElement("h2", null, title), showRecordCount && /* @__PURE__ */ import_react17.default.createElement("p", null, isServer ? totalRows : filteredData.length, " total records")), /* @__PURE__ */ import_react17.default.createElement("div", { className: "dg-header-actions" }, customToolbar ?? /* @__PURE__ */ import_react17.default.createElement(import_react17.default.Fragment, null, headerActions?.position === "before-search" && /* @__PURE__ */ import_react17.default.createElement("div", { className: `dg-header-slot ${alignClass(headerActions.align)}` }, headerActions.content), showSearch && /* @__PURE__ */ import_react17.default.createElement("div", { className: "dg-search-wrap" }, /* @__PURE__ */ import_react17.default.createElement(Search, { size: 15 }), /* @__PURE__ */ import_react17.default.createElement(
5699
5708
  "input",
5700
5709
  {
5701
5710
  className: "dg-search",
@@ -5707,7 +5716,7 @@ function DataGrid({
5707
5716
  if (onPaginationModelChange) onPaginationModelChange({ page: 0, pageSize: activePageSize });
5708
5717
  }
5709
5718
  }
5710
- )), showFilterBtn && /* @__PURE__ */ import_react17.default.createElement(Tooltip, { title: "Filters", placement: "top" }, /* @__PURE__ */ import_react17.default.createElement(
5719
+ )), headerActions?.position === "after-search" && /* @__PURE__ */ import_react17.default.createElement("div", { className: `dg-header-slot ${alignClass(headerActions.align)}` }, headerActions.content), showFilterBtn && /* @__PURE__ */ import_react17.default.createElement(Tooltip, { title: "Filters", placement: "top" }, /* @__PURE__ */ import_react17.default.createElement(
5711
5720
  "button",
5712
5721
  {
5713
5722
  className: `dg-icon-btn ${hasActiveFilters ? "active" : ""}`,
@@ -5721,7 +5730,7 @@ function DataGrid({
5721
5730
  onClick: () => setShowManageColumns(true)
5722
5731
  },
5723
5732
  /* @__PURE__ */ import_react17.default.createElement(Columns2, { size: 16 })
5724
- )), showExportBtn && /* @__PURE__ */ import_react17.default.createElement("button", { className: "dg-action-btn", onClick: handleExport, disabled: loading }, /* @__PURE__ */ import_react17.default.createElement(Download, { size: 14 }), " Export CSV")), headerActions && /* @__PURE__ */ import_react17.default.createElement("div", { className: `dg-header-slot ${alignClass(headerActions.align)}` }, headerActions.content))), !tOpts.hideHeader && /* @__PURE__ */ import_react17.default.createElement("div", { className: `dg-toolbar ${alignClass(toolbarContent?.align)}` }, toolbarContent?.content || ""), isGroupingActive && /* @__PURE__ */ import_react17.default.createElement("div", { className: "dg-grouping-bar" }, /* @__PURE__ */ import_react17.default.createElement("span", { className: "dg-grouping-bar-label" }, "Grouped by"), activeGroupingModel.map((gField) => {
5733
+ )), showExportBtn && /* @__PURE__ */ import_react17.default.createElement("button", { className: "dg-action-btn", onClick: handleExport, disabled: loading }, /* @__PURE__ */ import_react17.default.createElement(Download, { size: 14 }), " Export CSV"), headerActions && (!headerActions.position || headerActions.position === "after-actions") && /* @__PURE__ */ import_react17.default.createElement("div", { className: `dg-header-slot ${alignClass(headerActions.align)}` }, headerActions.content)))), !tOpts.hideHeader && /* @__PURE__ */ import_react17.default.createElement("div", { className: `dg-toolbar ${alignClass(toolbarContent?.align)}` }, toolbarContent?.content || ""), isGroupingActive && /* @__PURE__ */ import_react17.default.createElement("div", { className: "dg-grouping-bar" }, /* @__PURE__ */ import_react17.default.createElement("span", { className: "dg-grouping-bar-label" }, "Grouped by"), activeGroupingModel.map((gField) => {
5725
5734
  const col = resolvedColumns.find((c) => String(c.field) === gField || String(c.key) === gField);
5726
5735
  return /* @__PURE__ */ import_react17.default.createElement("div", { key: gField, className: "dg-group-chip" }, /* @__PURE__ */ import_react17.default.createElement(Layers, { size: 11 }), /* @__PURE__ */ import_react17.default.createElement("span", null, col?.header ?? col?.headerName ?? gField), !disableRowGrouping && /* @__PURE__ */ import_react17.default.createElement(
5727
5736
  "button",
package/dist/main.css CHANGED
@@ -409,6 +409,30 @@
409
409
  .dg-search:focus {
410
410
  border-color: var(--primary-color);
411
411
  }
412
+ .dg-toolbar-select {
413
+ padding: 8px 28px 8px 10px;
414
+ border: 1px solid var(--border-color);
415
+ border-radius: 8px;
416
+ background: var(--background-color);
417
+ color: var(--text-color);
418
+ font-size: 0.875rem;
419
+ font-family: inherit;
420
+ outline: none;
421
+ cursor: pointer;
422
+ transition: border-color 0.2s;
423
+ appearance: none;
424
+ -webkit-appearance: none;
425
+ background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%23888' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");
426
+ background-repeat: no-repeat;
427
+ background-position: right 8px center;
428
+ }
429
+ .dg-toolbar-select:focus {
430
+ border-color: var(--primary-color);
431
+ }
432
+ .dg-toolbar-select:disabled {
433
+ opacity: 0.5;
434
+ cursor: not-allowed;
435
+ }
412
436
  .dg-icon-btn {
413
437
  padding: 8px;
414
438
  border: 1px solid var(--border-color);
package/dist/main.d.cts CHANGED
@@ -274,11 +274,10 @@ interface SubscribeIconProps extends React.SVGProps<SVGSVGElement> {
274
274
  }
275
275
  declare const SubscribeIcon: React.FC<SubscribeIconProps>;
276
276
 
277
- interface SuspendUserProps extends React.SVGProps<SVGSVGElement> {
277
+ interface SuspendUserIconProps extends React.SVGProps<SVGSVGElement> {
278
278
  color?: string;
279
- size?: number;
280
279
  }
281
- declare const SuspendUserIcon: React.FC<SuspendUserProps>;
280
+ declare const SuspendUserIcon: React.FC<SuspendUserIconProps>;
282
281
 
283
282
  interface UnsubscribeIconProps extends React.SVGProps<SVGSVGElement> {
284
283
  color?: string;
@@ -1259,6 +1258,13 @@ interface Action<T> {
1259
1258
  interface DataGridToolbarSlot {
1260
1259
  content: React__default.ReactNode;
1261
1260
  align?: 'left' | 'center' | 'right';
1261
+ /**
1262
+ * Where to inject the slot inside the toolbar action row.
1263
+ * - `'before-search'` — left of the search input
1264
+ * - `'after-search'` — right of search, left of Filter / Columns / Export
1265
+ * - `'after-actions'` — rightmost position, after Export button (default)
1266
+ */
1267
+ position?: 'before-search' | 'after-search' | 'after-actions';
1262
1268
  }
1263
1269
  /**
1264
1270
  * Granular visibility control for the built-in toolbar.
package/dist/main.d.ts CHANGED
@@ -274,11 +274,10 @@ interface SubscribeIconProps extends React.SVGProps<SVGSVGElement> {
274
274
  }
275
275
  declare const SubscribeIcon: React.FC<SubscribeIconProps>;
276
276
 
277
- interface SuspendUserProps extends React.SVGProps<SVGSVGElement> {
277
+ interface SuspendUserIconProps extends React.SVGProps<SVGSVGElement> {
278
278
  color?: string;
279
- size?: number;
280
279
  }
281
- declare const SuspendUserIcon: React.FC<SuspendUserProps>;
280
+ declare const SuspendUserIcon: React.FC<SuspendUserIconProps>;
282
281
 
283
282
  interface UnsubscribeIconProps extends React.SVGProps<SVGSVGElement> {
284
283
  color?: string;
@@ -1259,6 +1258,13 @@ interface Action<T> {
1259
1258
  interface DataGridToolbarSlot {
1260
1259
  content: React__default.ReactNode;
1261
1260
  align?: 'left' | 'center' | 'right';
1261
+ /**
1262
+ * Where to inject the slot inside the toolbar action row.
1263
+ * - `'before-search'` — left of the search input
1264
+ * - `'after-search'` — right of search, left of Filter / Columns / Export
1265
+ * - `'after-actions'` — rightmost position, after Export button (default)
1266
+ */
1267
+ position?: 'before-search' | 'after-search' | 'after-actions';
1262
1268
  }
1263
1269
  /**
1264
1270
  * Granular visibility control for the built-in toolbar.
package/dist/main.js CHANGED
@@ -577,7 +577,7 @@ var subscribeIcon_default = SubscribeIcon;
577
577
 
578
578
  // lib/icons/suspendUserIcon.tsx
579
579
  import * as React30 from "react";
580
- var SuspendUserIcon = ({ color = "currentColor", size = 24, ...props }) => /* @__PURE__ */ React30.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", width: size, height: size, viewBox: "0 0 24 24", fill: "none", stroke: color, strokeWidth: "1.8", strokeLinecap: "round", strokeLinejoin: "round", ...props }, /* @__PURE__ */ React30.createElement("circle", { cx: "9", cy: "7", r: "4" }), /* @__PURE__ */ React30.createElement("path", { d: "M3 21v-2a7 7 0 0 1 7-7h0" }), /* @__PURE__ */ React30.createElement("line", { x1: "15", y1: "14", x2: "21", y2: "20" }), /* @__PURE__ */ React30.createElement("line", { x1: "21", y1: "14", x2: "15", y2: "20" }));
580
+ var SuspendUserIcon = (({ color = "#3a3a3a", ...props }) => /* @__PURE__ */ React30.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", width: "25.8", height: "25.8", viewBox: "0 0 25.8 25.8", ...props }, /* @__PURE__ */ React30.createElement("g", { id: "Group_24703", "data-name": "Group 24703", transform: "translate(-1737.415 -376.95)" }, /* @__PURE__ */ React30.createElement("g", { id: "Group_24684", "data-name": "Group 24684", transform: "translate(1738.315 377.85)" }, /* @__PURE__ */ React30.createElement("ellipse", { id: "Ellipse_414", "data-name": "Ellipse 414", cx: "4.979", cy: "5.203", rx: "4.979", ry: "5.203", transform: "translate(3.506)", fill: "rgba(0,0,0,0)", stroke: color, strokeWidth: "1.8" }), /* @__PURE__ */ React30.createElement("path", { id: "Path_52609", "data-name": "Path 52609", d: "M128.5,212.538a8.719,8.719,0,0,1,14.56-6.69", transform: "translate(-128.5 -193.195)", fill: "rgba(0,0,0,0)", stroke: color, strokeWidth: "1.8" })), /* @__PURE__ */ React30.createElement("g", { id: "Group_24690", "data-name": "Group 24690", transform: "translate(1750.156 389.69)" }, /* @__PURE__ */ React30.createElement("g", { id: "Group_24741", "data-name": "Group 24741" }, /* @__PURE__ */ React30.createElement("ellipse", { id: "Ellipse_415", "data-name": "Ellipse 415", cx: "6.08", cy: "6.08", rx: "6.08", ry: "6.08", fill: "none", stroke: color, strokeWidth: "1.8", "stroke-dasharray": "470 154" }), /* @__PURE__ */ React30.createElement("line", { id: "Line_419", "data-name": "Line 419", x1: "7", y2: "9", transform: "translate(2.66 1.66)", fill: "none", stroke: color, strokeWidth: "1.8" }))))));
581
581
  var suspendUserIcon_default = SuspendUserIcon;
582
582
 
583
583
  // lib/icons/unsubscribeIcon.tsx
@@ -4983,6 +4983,7 @@ function DataGrid({
4983
4983
  const [sortField, setSortField] = useState10(null);
4984
4984
  const [sortDirection, setSortDirection] = useState10(null);
4985
4985
  const [filterText, setFilterText] = useState10("");
4986
+ const prevFilterText = useRef10("");
4986
4987
  const [currentPage, setCurrentPage] = useState10(1);
4987
4988
  const activePage = paginationModel ? paginationModel.page + 1 : currentPage;
4988
4989
  const activePageSize = paginationModel ? paginationModel.pageSize : pageSize;
@@ -5272,7 +5273,15 @@ function DataGrid({
5272
5273
  });
5273
5274
  }, [data, filterText, advancedFilters, resolvedColumns, searchableColumns]);
5274
5275
  useEffect9(() => {
5275
- if (!onSearchChange || !filterText) return;
5276
+ if (!onSearchChange) return;
5277
+ if (!filterText) {
5278
+ if (prevFilterText.current !== "") {
5279
+ onSearchChange("");
5280
+ }
5281
+ prevFilterText.current = "";
5282
+ return;
5283
+ }
5284
+ prevFilterText.current = filterText;
5276
5285
  if (filteredData.length === 0) onSearchChange(filterText);
5277
5286
  }, [filteredData, filterText, onSearchChange]);
5278
5287
  const sortedData = useMemo2(() => {
@@ -5461,7 +5470,7 @@ function DataGrid({
5461
5470
  const showExportBtn = !tOpts.hideExport && !hideTopExport;
5462
5471
  const showTitle = !tOpts.hideTitle;
5463
5472
  const showRecordCount = !tOpts.hideRecordCount;
5464
- return /* @__PURE__ */ React123.createElement("div", { className: ["dg-root", sxClass, className].filter(Boolean).join(" ") }, !tOpts.hideHeader && /* @__PURE__ */ React123.createElement("div", { className: `dg-header${customToolbar ? " dg-header--custom" : ""}` }, !customToolbar && (showTitle || showRecordCount) && /* @__PURE__ */ React123.createElement("div", { className: "dg-header-info" }, showTitle && /* @__PURE__ */ React123.createElement("h2", null, title), showRecordCount && /* @__PURE__ */ React123.createElement("p", null, isServer ? totalRows : filteredData.length, " total records")), /* @__PURE__ */ React123.createElement("div", { className: "dg-header-actions" }, customToolbar ?? /* @__PURE__ */ React123.createElement(React123.Fragment, null, showSearch && /* @__PURE__ */ React123.createElement("div", { className: "dg-search-wrap" }, /* @__PURE__ */ React123.createElement(Search, { size: 15 }), /* @__PURE__ */ React123.createElement(
5473
+ return /* @__PURE__ */ React123.createElement("div", { className: ["dg-root", sxClass, className].filter(Boolean).join(" ") }, !tOpts.hideHeader && /* @__PURE__ */ React123.createElement("div", { className: `dg-header${customToolbar ? " dg-header--custom" : ""}` }, !customToolbar && (showTitle || showRecordCount) && /* @__PURE__ */ React123.createElement("div", { className: "dg-header-info" }, showTitle && /* @__PURE__ */ React123.createElement("h2", null, title), showRecordCount && /* @__PURE__ */ React123.createElement("p", null, isServer ? totalRows : filteredData.length, " total records")), /* @__PURE__ */ React123.createElement("div", { className: "dg-header-actions" }, customToolbar ?? /* @__PURE__ */ React123.createElement(React123.Fragment, null, headerActions?.position === "before-search" && /* @__PURE__ */ React123.createElement("div", { className: `dg-header-slot ${alignClass(headerActions.align)}` }, headerActions.content), showSearch && /* @__PURE__ */ React123.createElement("div", { className: "dg-search-wrap" }, /* @__PURE__ */ React123.createElement(Search, { size: 15 }), /* @__PURE__ */ React123.createElement(
5465
5474
  "input",
5466
5475
  {
5467
5476
  className: "dg-search",
@@ -5473,7 +5482,7 @@ function DataGrid({
5473
5482
  if (onPaginationModelChange) onPaginationModelChange({ page: 0, pageSize: activePageSize });
5474
5483
  }
5475
5484
  }
5476
- )), showFilterBtn && /* @__PURE__ */ React123.createElement(Tooltip, { title: "Filters", placement: "top" }, /* @__PURE__ */ React123.createElement(
5485
+ )), headerActions?.position === "after-search" && /* @__PURE__ */ React123.createElement("div", { className: `dg-header-slot ${alignClass(headerActions.align)}` }, headerActions.content), showFilterBtn && /* @__PURE__ */ React123.createElement(Tooltip, { title: "Filters", placement: "top" }, /* @__PURE__ */ React123.createElement(
5477
5486
  "button",
5478
5487
  {
5479
5488
  className: `dg-icon-btn ${hasActiveFilters ? "active" : ""}`,
@@ -5487,7 +5496,7 @@ function DataGrid({
5487
5496
  onClick: () => setShowManageColumns(true)
5488
5497
  },
5489
5498
  /* @__PURE__ */ React123.createElement(Columns2, { size: 16 })
5490
- )), showExportBtn && /* @__PURE__ */ React123.createElement("button", { className: "dg-action-btn", onClick: handleExport, disabled: loading }, /* @__PURE__ */ React123.createElement(Download, { size: 14 }), " Export CSV")), headerActions && /* @__PURE__ */ React123.createElement("div", { className: `dg-header-slot ${alignClass(headerActions.align)}` }, headerActions.content))), !tOpts.hideHeader && /* @__PURE__ */ React123.createElement("div", { className: `dg-toolbar ${alignClass(toolbarContent?.align)}` }, toolbarContent?.content || ""), isGroupingActive && /* @__PURE__ */ React123.createElement("div", { className: "dg-grouping-bar" }, /* @__PURE__ */ React123.createElement("span", { className: "dg-grouping-bar-label" }, "Grouped by"), activeGroupingModel.map((gField) => {
5499
+ )), showExportBtn && /* @__PURE__ */ React123.createElement("button", { className: "dg-action-btn", onClick: handleExport, disabled: loading }, /* @__PURE__ */ React123.createElement(Download, { size: 14 }), " Export CSV"), headerActions && (!headerActions.position || headerActions.position === "after-actions") && /* @__PURE__ */ React123.createElement("div", { className: `dg-header-slot ${alignClass(headerActions.align)}` }, headerActions.content)))), !tOpts.hideHeader && /* @__PURE__ */ React123.createElement("div", { className: `dg-toolbar ${alignClass(toolbarContent?.align)}` }, toolbarContent?.content || ""), isGroupingActive && /* @__PURE__ */ React123.createElement("div", { className: "dg-grouping-bar" }, /* @__PURE__ */ React123.createElement("span", { className: "dg-grouping-bar-label" }, "Grouped by"), activeGroupingModel.map((gField) => {
5491
5500
  const col = resolvedColumns.find((c) => String(c.field) === gField || String(c.key) === gField);
5492
5501
  return /* @__PURE__ */ React123.createElement("div", { key: gField, className: "dg-group-chip" }, /* @__PURE__ */ React123.createElement(Layers, { size: 11 }), /* @__PURE__ */ React123.createElement("span", null, col?.header ?? col?.headerName ?? gField), !disableRowGrouping && /* @__PURE__ */ React123.createElement(
5493
5502
  "button",
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@rufous/ui",
3
3
  "private": false,
4
- "version": "0.3.43",
4
+ "version": "0.3.45",
5
5
  "type": "module",
6
6
  "description": "Experimental: A lightweight React UI component library (Beta)",
7
7
  "style": "./dist/main.css",