baaz-custom-components 3.3.3 → 5.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.mts CHANGED
@@ -57,4 +57,49 @@ type BreadcrumbProps = {
57
57
 
58
58
  declare const CustomBreadcrumb: ({ layoutName, includeFrom, pathname, }: BreadcrumbProps) => react.JSX.Element;
59
59
 
60
- export { type BreadcrumbProps, CustomBreadcrumb, Navbar, type NavbarData, type NavbarEntry, type NavbarProps, type NotificationDataTypes, type RouteTree, type RouterAdapter, type UserData };
60
+ type SortOrder = "asc" | "desc";
61
+ type GridColumn = {
62
+ id: string;
63
+ header: string;
64
+ sortable?: boolean;
65
+ flexgrow?: number;
66
+ resize?: boolean;
67
+ };
68
+ type Filters = {
69
+ columnName: string;
70
+ operators: {
71
+ label: string;
72
+ value: "input" | "date" | "select" | "date-range" | null;
73
+ options?: {
74
+ label: string;
75
+ value: string;
76
+ }[];
77
+ }[];
78
+ };
79
+ type GridProps = {
80
+ data: Record<string, any>[];
81
+ columns: GridColumn[];
82
+ sortKey?: string | null;
83
+ sortOrder?: SortOrder | null;
84
+ onSortChange?: (key: string, order: SortOrder) => void;
85
+ multiselect?: boolean;
86
+ reorder?: boolean;
87
+ overlay?: React.FC | string;
88
+ init?: any;
89
+ onupdatecell?: any;
90
+ fonts?: boolean;
91
+ autoConfig?: boolean | {};
92
+ downloadable?: boolean;
93
+ fileNmae?: string;
94
+ search: boolean;
95
+ searchkey: string;
96
+ searchValue: string;
97
+ onExportPdf?: () => void;
98
+ onExportExcel?: () => void;
99
+ onSearch: (e: React.ChangeEvent<HTMLInputElement>) => void;
100
+ filterList: Filters[];
101
+ };
102
+
103
+ declare function Grid({ data, columns, sortKey, sortOrder, onSortChange, onExportPdf, onExportExcel, downloadable, fileNmae, fonts, ...rest }: GridProps): react.JSX.Element;
104
+
105
+ export { type BreadcrumbProps, CustomBreadcrumb, Grid, type GridProps, Navbar, type NavbarData, type NavbarEntry, type NavbarProps, type NotificationDataTypes, type RouteTree, type RouterAdapter, type UserData };
package/dist/index.d.ts CHANGED
@@ -57,4 +57,49 @@ type BreadcrumbProps = {
57
57
 
58
58
  declare const CustomBreadcrumb: ({ layoutName, includeFrom, pathname, }: BreadcrumbProps) => react.JSX.Element;
59
59
 
60
- export { type BreadcrumbProps, CustomBreadcrumb, Navbar, type NavbarData, type NavbarEntry, type NavbarProps, type NotificationDataTypes, type RouteTree, type RouterAdapter, type UserData };
60
+ type SortOrder = "asc" | "desc";
61
+ type GridColumn = {
62
+ id: string;
63
+ header: string;
64
+ sortable?: boolean;
65
+ flexgrow?: number;
66
+ resize?: boolean;
67
+ };
68
+ type Filters = {
69
+ columnName: string;
70
+ operators: {
71
+ label: string;
72
+ value: "input" | "date" | "select" | "date-range" | null;
73
+ options?: {
74
+ label: string;
75
+ value: string;
76
+ }[];
77
+ }[];
78
+ };
79
+ type GridProps = {
80
+ data: Record<string, any>[];
81
+ columns: GridColumn[];
82
+ sortKey?: string | null;
83
+ sortOrder?: SortOrder | null;
84
+ onSortChange?: (key: string, order: SortOrder) => void;
85
+ multiselect?: boolean;
86
+ reorder?: boolean;
87
+ overlay?: React.FC | string;
88
+ init?: any;
89
+ onupdatecell?: any;
90
+ fonts?: boolean;
91
+ autoConfig?: boolean | {};
92
+ downloadable?: boolean;
93
+ fileNmae?: string;
94
+ search: boolean;
95
+ searchkey: string;
96
+ searchValue: string;
97
+ onExportPdf?: () => void;
98
+ onExportExcel?: () => void;
99
+ onSearch: (e: React.ChangeEvent<HTMLInputElement>) => void;
100
+ filterList: Filters[];
101
+ };
102
+
103
+ declare function Grid({ data, columns, sortKey, sortOrder, onSortChange, onExportPdf, onExportExcel, downloadable, fileNmae, fonts, ...rest }: GridProps): react.JSX.Element;
104
+
105
+ export { type BreadcrumbProps, CustomBreadcrumb, Grid, type GridProps, Navbar, type NavbarData, type NavbarEntry, type NavbarProps, type NotificationDataTypes, type RouteTree, type RouterAdapter, type UserData };
package/dist/index.js CHANGED
@@ -60,6 +60,7 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
60
60
  var index_exports = {};
61
61
  __export(index_exports, {
62
62
  CustomBreadcrumb: () => breadcrumb_default,
63
+ Grid: () => grid_default,
63
64
  Navbar: () => Navbar
64
65
  });
65
66
  module.exports = __toCommonJS(index_exports);
@@ -1947,8 +1948,425 @@ var CustomBreadcrumb = ({
1947
1948
  ] }) });
1948
1949
  };
1949
1950
  var breadcrumb_default = CustomBreadcrumb;
1951
+
1952
+ // src/components/custom/grid/index.tsx
1953
+ var import_react6 = require("react");
1954
+ var import_react_grid = require("@svar-ui/react-grid");
1955
+
1956
+ // src/components/custom/grid/sortableHeaderCell.tsx
1957
+ var import_lucide_react12 = require("lucide-react");
1958
+ var import_jsx_runtime23 = require("react/jsx-runtime");
1959
+ function SortableHeaderCell({ cell, sortKey, sortOrder, onSortChange }) {
1960
+ if (!(cell == null ? void 0 : cell.id)) return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("span", { children: cell == null ? void 0 : cell.text });
1961
+ const active = sortKey === cell.id;
1962
+ const handleClick = () => {
1963
+ if (!onSortChange) return;
1964
+ if (active) {
1965
+ onSortChange(cell.id, sortOrder === "asc" ? "desc" : "asc");
1966
+ } else {
1967
+ onSortChange(cell.id, "asc");
1968
+ }
1969
+ };
1970
+ return /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(
1971
+ "div",
1972
+ {
1973
+ onClick: handleClick,
1974
+ className: "cursor-pointer flex items-center gap-2 justify-between select-none",
1975
+ children: [
1976
+ /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("span", { children: cell.text }),
1977
+ active && (sortOrder === "asc" ? /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_lucide_react12.MoveDown, { className: "w-3 h-4" }) : /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_lucide_react12.MoveUp, { className: "w-3 h-4" }))
1978
+ ]
1979
+ }
1980
+ );
1981
+ }
1982
+ var sortableHeaderCell_default = SortableHeaderCell;
1983
+
1984
+ // src/utils/exportPdf.ts
1985
+ var import_jspdf = __toESM(require("jspdf"));
1986
+ var import_jspdf_autotable = __toESM(require("jspdf-autotable"));
1987
+ function exportPdf(rows, name) {
1988
+ if (!rows.length) return;
1989
+ const doc = new import_jspdf.default();
1990
+ const columns = Object.keys(rows[0]);
1991
+ const body = rows.map((row) => columns.map((col) => {
1992
+ var _a;
1993
+ return String((_a = row[col]) != null ? _a : "");
1994
+ }));
1995
+ (0, import_jspdf_autotable.default)(doc, {
1996
+ head: [columns],
1997
+ body,
1998
+ styles: { fontSize: 8 },
1999
+ headStyles: { fillColor: [40, 40, 40] }
2000
+ });
2001
+ doc.save(`${name != null ? name : "export"}.pdf`);
2002
+ }
2003
+
2004
+ // src/utils/exportExcel.ts
2005
+ var XLSX = __toESM(require("xlsx"));
2006
+ function exportExcel(rows, name) {
2007
+ if (!rows.length) return;
2008
+ const worksheet = XLSX.utils.json_to_sheet(rows);
2009
+ const workbook = XLSX.utils.book_new();
2010
+ XLSX.utils.book_append_sheet(workbook, worksheet, "Data");
2011
+ XLSX.writeFile(workbook, `${name != null ? name : "export"}.xlsx`);
2012
+ }
2013
+
2014
+ // src/components/custom/grid/gridHeader.tsx
2015
+ var import_react5 = require("react");
2016
+ var import_lucide_react13 = require("lucide-react");
2017
+ var import_navigation = require("next/navigation");
2018
+ var import_jsx_runtime24 = require("react/jsx-runtime");
2019
+ var GridHeader = ({
2020
+ onPdf,
2021
+ onExcel,
2022
+ onSearch,
2023
+ download,
2024
+ search,
2025
+ searchValue,
2026
+ searchkey = "",
2027
+ filterList
2028
+ }) => {
2029
+ var _a, _b, _c, _d, _e, _f, _g, _h;
2030
+ const router = (0, import_navigation.useRouter)();
2031
+ const searchParams = (0, import_navigation.useSearchParams)();
2032
+ const [downloadMenu, setDownloadMenu] = (0, import_react5.useState)(false);
2033
+ const [filterMenu, setFilterMenu] = (0, import_react5.useState)(false);
2034
+ const [filter, setFilter] = (0, import_react5.useState)({});
2035
+ const downloadRef = (0, import_react5.useRef)(null);
2036
+ const filterRef = (0, import_react5.useRef)(null);
2037
+ const selectedColumn = filterList.find((f) => f.columnName === filter.column);
2038
+ const selectedOperator = selectedColumn == null ? void 0 : selectedColumn.operators.find(
2039
+ (op) => op.label === filter.operator
2040
+ );
2041
+ const updateParams = (next) => {
2042
+ const params = new URLSearchParams(searchParams.toString());
2043
+ if (next.column) params.set("column", next.column);
2044
+ else params.delete("column");
2045
+ if (next.operator) params.set("operator", next.operator);
2046
+ else params.delete("operator");
2047
+ if (next.value) {
2048
+ (selectedOperator == null ? void 0 : selectedOperator.value) === "date" ? params.set("value", String(Date.parse(next.value))) : params.set("value", next.value);
2049
+ } else params.delete("value");
2050
+ if (next.startDate)
2051
+ params.set("startDate", String(Date.parse(next.startDate)));
2052
+ else params.delete("startDate");
2053
+ if (next.endDate) params.set("endDate", String(Date.parse(next.endDate)));
2054
+ else params.delete("endDate");
2055
+ router.replace(`?${params.toString()}`);
2056
+ };
2057
+ const clearFilters = () => {
2058
+ setFilter({});
2059
+ router.replace("?", { scroll: false });
2060
+ };
2061
+ (0, import_react5.useEffect)(() => {
2062
+ const handleClickOutside = (e) => {
2063
+ if (downloadRef.current && !downloadRef.current.contains(e.target)) {
2064
+ setDownloadMenu(false);
2065
+ }
2066
+ if (filterRef.current && !filterRef.current.contains(e.target)) {
2067
+ setFilterMenu(false);
2068
+ }
2069
+ };
2070
+ document.addEventListener("mousedown", handleClickOutside);
2071
+ return () => document.removeEventListener("mousedown", handleClickOutside);
2072
+ }, []);
2073
+ return /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("div", { className: "flex justify-end gap-4 items-center", children: [
2074
+ filterList.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("div", { className: "relative", ref: filterRef, children: [
2075
+ /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
2076
+ "button",
2077
+ {
2078
+ onClick: () => setFilterMenu((p) => !p),
2079
+ className: "py-2 px-4 rounded-md bg-input hover:bg-muted transition cursor-pointer",
2080
+ children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_lucide_react13.ListFilter, { size: 18 })
2081
+ }
2082
+ ),
2083
+ filterMenu && /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("div", { className: "absolute top-full right-0 mt-2 p-3 !min-w-[30rem] rounded-md border bg-background shadow-lg z-50 flex items-center gap-2", children: [
2084
+ /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(
2085
+ "select",
2086
+ {
2087
+ className: "px-4 py-2 rounded-md bg-input text-sm focus:outline-none",
2088
+ value: (_a = filter.column) != null ? _a : "",
2089
+ onChange: (e) => {
2090
+ const next = {
2091
+ column: e.target.value,
2092
+ operator: null,
2093
+ value: null
2094
+ };
2095
+ setFilter(next);
2096
+ updateParams(next);
2097
+ },
2098
+ children: [
2099
+ /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("option", { value: "", disabled: true, children: "Columns" }),
2100
+ filterList.map((f) => /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("option", { value: f.columnName, children: f.columnName }, f.columnName))
2101
+ ]
2102
+ }
2103
+ ),
2104
+ /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(
2105
+ "select",
2106
+ {
2107
+ className: "px-4 py-2 rounded-md bg-input text-sm focus:outline-none",
2108
+ value: (_b = filter.operator) != null ? _b : "",
2109
+ disabled: !selectedColumn,
2110
+ onChange: (e) => {
2111
+ const next = __spreadProps(__spreadValues({}, filter), {
2112
+ operator: e.target.value,
2113
+ value: void 0
2114
+ });
2115
+ setFilter(next);
2116
+ updateParams(next);
2117
+ },
2118
+ children: [
2119
+ /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("option", { value: "", disabled: true, children: "Operator" }),
2120
+ selectedColumn == null ? void 0 : selectedColumn.operators.map((op) => /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("option", { value: op.label, children: op.label }, op.label))
2121
+ ]
2122
+ }
2123
+ ),
2124
+ (selectedOperator == null ? void 0 : selectedOperator.value) === "input" && /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
2125
+ "input",
2126
+ {
2127
+ className: "px-4 py-2 rounded-md bg-input text-sm focus:outline-none",
2128
+ placeholder: "Filter value",
2129
+ value: (_c = filter.value) != null ? _c : "",
2130
+ onChange: (e) => {
2131
+ const next = __spreadProps(__spreadValues({}, filter), {
2132
+ value: e.target.value
2133
+ });
2134
+ setFilter(next);
2135
+ updateParams(next);
2136
+ }
2137
+ }
2138
+ ),
2139
+ (selectedOperator == null ? void 0 : selectedOperator.value) === "date" && /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
2140
+ "input",
2141
+ {
2142
+ type: "datetime-local",
2143
+ className: "px-4 py-2 rounded-md bg-input text-sm focus:outline-none",
2144
+ value: (_d = filter.value) != null ? _d : "",
2145
+ onChange: (e) => setFilter((prev) => __spreadProps(__spreadValues({}, prev), {
2146
+ value: e.target.value
2147
+ }))
2148
+ }
2149
+ ),
2150
+ (selectedOperator == null ? void 0 : selectedOperator.value) === "select" && /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(
2151
+ "select",
2152
+ {
2153
+ className: "px-2 py-1 rounded-md bg-input text-sm focus:outline-none",
2154
+ value: (_e = filter.value) != null ? _e : "",
2155
+ onChange: (e) => setFilter((prev) => __spreadProps(__spreadValues({}, prev), {
2156
+ value: e.target.value
2157
+ })),
2158
+ children: [
2159
+ /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("option", { value: "", disabled: true, children: "Value" }),
2160
+ (_f = selectedOperator.options) == null ? void 0 : _f.map((opt) => /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("option", { value: opt.value, children: opt.label }, opt.value))
2161
+ ]
2162
+ }
2163
+ ),
2164
+ (selectedOperator == null ? void 0 : selectedOperator.value) === "date-range" && /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("div", { className: "flex items-center gap-2", children: [
2165
+ /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
2166
+ "input",
2167
+ {
2168
+ type: "datetime-local",
2169
+ className: "px-3 py-2 rounded-md bg-input text-sm",
2170
+ value: (_g = filter.startDate) != null ? _g : "",
2171
+ onChange: (e) => {
2172
+ const nextRange = __spreadProps(__spreadValues({}, filter), {
2173
+ startDate: e.target.value
2174
+ });
2175
+ if (nextRange.startDate) {
2176
+ const next = __spreadProps(__spreadValues({}, filter), {
2177
+ startDate: nextRange.startDate
2178
+ });
2179
+ setFilter(next);
2180
+ updateParams(next);
2181
+ }
2182
+ }
2183
+ }
2184
+ ),
2185
+ /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("span", { className: "text-sm text-muted-foreground", children: "to" }),
2186
+ /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
2187
+ "input",
2188
+ {
2189
+ type: "datetime-local",
2190
+ className: "px-3 py-2 rounded-md bg-input text-sm",
2191
+ value: (_h = filter.endDate) != null ? _h : "",
2192
+ onChange: (e) => {
2193
+ const nextRange = __spreadProps(__spreadValues({}, filter), {
2194
+ endDate: e.target.value
2195
+ });
2196
+ if (nextRange.startDate && nextRange.endDate) {
2197
+ const next = __spreadProps(__spreadValues({}, filter), {
2198
+ endDate: nextRange.endDate
2199
+ });
2200
+ setFilter(next);
2201
+ updateParams(next);
2202
+ }
2203
+ }
2204
+ }
2205
+ )
2206
+ ] }),
2207
+ /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
2208
+ "button",
2209
+ {
2210
+ onClick: clearFilters,
2211
+ className: "ml-auto p-2 rounded-md hover:bg-muted transition",
2212
+ title: "Clear filters",
2213
+ children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_lucide_react13.X, { size: 16 })
2214
+ }
2215
+ )
2216
+ ] })
2217
+ ] }),
2218
+ download && /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("div", { className: "relative", ref: downloadRef, children: [
2219
+ /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
2220
+ "button",
2221
+ {
2222
+ onClick: () => setDownloadMenu((p) => !p),
2223
+ className: "py-2 px-4 rounded-md bg-input hover:bg-muted transition",
2224
+ children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_lucide_react13.Download, { size: 18 })
2225
+ }
2226
+ ),
2227
+ downloadMenu && /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("div", { className: "absolute top-full right-0 mt-2 w-32 rounded-md border bg-background shadow-lg z-50", children: [
2228
+ /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(
2229
+ "button",
2230
+ {
2231
+ onClick: () => {
2232
+ onPdf();
2233
+ setDownloadMenu(false);
2234
+ },
2235
+ className: "flex items-center gap-2 w-full px-3 py-2 text-sm hover:bg-muted",
2236
+ children: [
2237
+ /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_lucide_react13.FileText, { size: 14 }),
2238
+ "PDF"
2239
+ ]
2240
+ }
2241
+ ),
2242
+ /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(
2243
+ "button",
2244
+ {
2245
+ onClick: () => {
2246
+ onExcel();
2247
+ setDownloadMenu(false);
2248
+ },
2249
+ className: "flex items-center gap-2 w-full px-3 py-2 text-sm hover:bg-muted",
2250
+ children: [
2251
+ /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_lucide_react13.FileSpreadsheet, { size: 14 }),
2252
+ "Excel"
2253
+ ]
2254
+ }
2255
+ )
2256
+ ] })
2257
+ ] }),
2258
+ search && /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("div", { className: "py-2 px-4 w-[20rem] rounded-md border border-input bg-background flex items-center gap-2 text-sm", children: [
2259
+ /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_lucide_react13.Search, { className: "w-4 h-4" }),
2260
+ /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
2261
+ "input",
2262
+ {
2263
+ placeholder: `Search by ${searchkey}`,
2264
+ className: "w-full focus:outline-none bg-transparent",
2265
+ onChange: onSearch,
2266
+ value: searchValue
2267
+ }
2268
+ )
2269
+ ] })
2270
+ ] });
2271
+ };
2272
+ var gridHeader_default = GridHeader;
2273
+
2274
+ // src/components/custom/grid/index.tsx
2275
+ var import_jsx_runtime25 = require("react/jsx-runtime");
2276
+ function Grid(_a) {
2277
+ var _b = _a, {
2278
+ data,
2279
+ columns,
2280
+ sortKey,
2281
+ sortOrder,
2282
+ onSortChange,
2283
+ onExportPdf,
2284
+ onExportExcel,
2285
+ downloadable = true,
2286
+ fileNmae,
2287
+ fonts
2288
+ } = _b, rest = __objRest(_b, [
2289
+ "data",
2290
+ "columns",
2291
+ "sortKey",
2292
+ "sortOrder",
2293
+ "onSortChange",
2294
+ "onExportPdf",
2295
+ "onExportExcel",
2296
+ "downloadable",
2297
+ "fileNmae",
2298
+ "fonts"
2299
+ ]);
2300
+ const apiRef = (0, import_react6.useRef)(null);
2301
+ const svarColumns = columns.map((col) => {
2302
+ const _a2 = col, { sortable, header } = _a2, columnProps = __objRest(_a2, ["sortable", "header"]);
2303
+ if (!sortable) {
2304
+ return __spreadProps(__spreadValues({}, columnProps), {
2305
+ header
2306
+ });
2307
+ }
2308
+ return __spreadProps(__spreadValues({}, columnProps), {
2309
+ header: {
2310
+ text: header,
2311
+ cell: (props) => /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
2312
+ sortableHeaderCell_default,
2313
+ __spreadProps(__spreadValues({}, props), {
2314
+ sortKey,
2315
+ sortOrder,
2316
+ onSortChange
2317
+ })
2318
+ )
2319
+ }
2320
+ });
2321
+ });
2322
+ const init = (api) => {
2323
+ apiRef.current = api;
2324
+ };
2325
+ const getSelectedData = () => {
2326
+ var _a2, _b2;
2327
+ const selected = (_b2 = (_a2 = apiRef.current) == null ? void 0 : _a2.getState().selectedRows) != null ? _b2 : [];
2328
+ let selectedData = data.filter((row) => {
2329
+ return selected.includes(row.id);
2330
+ });
2331
+ return selectedData;
2332
+ };
2333
+ const handleExportPdf = () => {
2334
+ const selected = getSelectedData();
2335
+ if (selected.length) {
2336
+ exportPdf(selected, fileNmae);
2337
+ } else {
2338
+ onExportPdf == null ? void 0 : onExportPdf();
2339
+ }
2340
+ };
2341
+ const handleExportExcel = () => {
2342
+ const selected = getSelectedData();
2343
+ if (selected.length) {
2344
+ exportExcel(selected, fileNmae);
2345
+ } else {
2346
+ onExportExcel == null ? void 0 : onExportExcel();
2347
+ }
2348
+ };
2349
+ return /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)("div", { className: "w-full h-full overflow-auto flex flex-col gap-4", children: [
2350
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
2351
+ gridHeader_default,
2352
+ {
2353
+ onPdf: handleExportPdf,
2354
+ onExcel: handleExportExcel,
2355
+ download: downloadable,
2356
+ search: rest.search,
2357
+ searchkey: rest.searchkey,
2358
+ onSearch: rest.onSearch,
2359
+ searchValue: rest.searchValue,
2360
+ filterList: rest.filterList
2361
+ }
2362
+ ),
2363
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_react_grid.WillowDark, { fonts, children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_react_grid.Grid, __spreadProps(__spreadValues({}, rest), { data, columns: svarColumns, init })) })
2364
+ ] });
2365
+ }
2366
+ var grid_default = Grid;
1950
2367
  // Annotate the CommonJS export names for ESM import in node:
1951
2368
  0 && (module.exports = {
1952
2369
  CustomBreadcrumb,
2370
+ Grid,
1953
2371
  Navbar
1954
2372
  });