@premieroctet/next-admin
Version:
Next-Admin provides a customizable and turnkey admin dashboard for applications built with Next.js and powered by the Prisma ORM. It aims to simplify the development process by providing a turnkey admin system that can be easily integrated into your proje
223 lines (222 loc) • 14.9 kB
JavaScript
;
var __webpack_require__ = {};
(()=>{
__webpack_require__.n = (module)=>{
var getter = module && module.__esModule ? ()=>module['default'] : ()=>module;
__webpack_require__.d(getter, {
a: getter
});
return getter;
};
})();
(()=>{
__webpack_require__.d = (exports1, definition)=>{
for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
enumerable: true,
get: definition[key]
});
};
})();
(()=>{
__webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
})();
(()=>{
__webpack_require__.r = (exports1)=>{
if ('undefined' != typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
value: 'Module'
});
Object.defineProperty(exports1, '__esModule', {
value: true
});
};
})();
var __webpack_exports__ = {};
__webpack_require__.r(__webpack_exports__);
__webpack_require__.d(__webpack_exports__, {
DataTable: ()=>DataTable
});
const jsx_runtime_namespaceObject = require("react/jsx-runtime");
const core_namespaceObject = require("@dnd-kit/core");
const sortable_namespaceObject = require("@dnd-kit/sortable");
const outline_namespaceObject = require("@heroicons/react/24/outline");
const react_table_namespaceObject = require("@tanstack/react-table");
const external_react_namespaceObject = require("react");
const ConfigContext_js_namespaceObject = require("../context/ConfigContext.js");
const useRouterInternal_js_namespaceObject = require("../hooks/useRouterInternal.js");
const tools_js_namespaceObject = require("../utils/tools.js");
const external_EmptyState_js_namespaceObject = require("./EmptyState.js");
var external_EmptyState_js_default = /*#__PURE__*/ __webpack_require__.n(external_EmptyState_js_namespaceObject);
const Table_js_namespaceObject = require("./radix/Table.js");
const external_SortableTableRow_js_namespaceObject = require("./SortableTableRow.js");
var external_SortableTableRow_js_default = /*#__PURE__*/ __webpack_require__.n(external_SortableTableRow_js_namespaceObject);
function DataTable({ columns, data, resource, resourcesIdProperty, rowSelection, setRowSelection, icon, onRemoveClick, deletable = false, onOrderChange, orderField }) {
const { basePath } = (0, ConfigContext_js_namespaceObject.useConfig)();
const { router } = (0, useRouterInternal_js_namespaceObject.useRouterInternal)();
const columnsVisibility = columns.reduce((acc, column)=>{
const key = column.accessorKey;
if (data[0]) acc[key] = Object.keys(data[0]).includes(key);
return acc;
}, {});
const modelIdProperty = resourcesIdProperty[resource];
const handleColumnOrderChange = onOrderChange ? (value)=>{
onOrderChange(value);
} : void 0;
const handleDragEnd = (event)=>{
const { active, over } = event;
if (over && active.id !== over.id) onOrderChange?.({
currentId: active.id,
moveOverId: over.id
});
};
const table = (0, react_table_namespaceObject.useReactTable)({
data,
manualSorting: true,
columns,
getCoreRowModel: (0, react_table_namespaceObject.getCoreRowModel)(),
initialState: {
columnVisibility: columnsVisibility
},
state: {
rowSelection
},
enableRowSelection: true,
onColumnOrderChange: handleColumnOrderChange,
onRowSelectionChange: setRowSelection
});
(0, external_react_namespaceObject.useEffect)(()=>{
const searchParams = new URLSearchParams(window.location.search);
const pageNumber = Number(searchParams.get("page"));
if (!table.getRowModel().rows?.length && pageNumber && pageNumber > 1) {
const searchParamsObject = Object.fromEntries(searchParams.entries());
router.replace({
pathname: location.pathname,
query: {
...searchParamsObject,
page: 1
}
});
}
}, [
router,
table
]);
return /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("div", {
className: "bg-nextadmin-background-default dark:bg-dark-nextadmin-background-emphasis border-nextadmin-border-default dark:border-dark-nextadmin-border-default overflow-hidden rounded-lg border",
children: orderField ? /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(core_namespaceObject.DndContext, {
onDragEnd: handleDragEnd,
children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsxs)(Table_js_namespaceObject.Table, {
children: [
table.getRowModel().rows?.length > 0 && /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(Table_js_namespaceObject.TableHeader, {
children: table.getHeaderGroups().map((headerGroup)=>/*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsxs)(Table_js_namespaceObject.TableRow, {
className: "border-b-nextadmin-border-strong dark:border-b-dark-nextadmin-border-default",
children: [
/*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(Table_js_namespaceObject.TableHead, {
className: "w-10"
}),
headerGroup.headers.map((header)=>/*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(Table_js_namespaceObject.TableHead, {
children: header.isPlaceholder ? null : (0, react_table_namespaceObject.flexRender)(header.column.columnDef.header, header.getContext())
}, header.id))
]
}, headerGroup.id))
}),
/*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(Table_js_namespaceObject.TableBody, {
children: table.getRowModel().rows?.length ? /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(sortable_namespaceObject.SortableContext, {
items: data.map((row)=>row[modelIdProperty].value),
children: table.getRowModel().rows.map((row)=>/*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsxs)(external_SortableTableRow_js_default(), {
id: row.original[modelIdProperty].value,
"data-state": row.getIsSelected() && "selected",
className: `hover:bg-nextadmin-background-muted text-nextadmin-content-inverted dark:text-dark-nextadmin-content-inverted dark:hover:bg-dark-nextadmin-background-muted/75 border-b-nextadmin-border-strong dark:border-b-dark-nextadmin-border-default cursor-pointer border-b ${row.getIsSelected() ? "bg-nextadmin-background-emphasis/40 dark:bg-dark-nextadmin-background-subtle" : "even:bg-nextadmin-background-subtle dark:even:bg-dark-nextadmin-background-subtle/60"}`,
onClick: ()=>{
window.location.href = `${basePath}/${(0, tools_js_namespaceObject.slugify)(resource)}/${row.original[modelIdProperty].value}`;
},
grabElement: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(Table_js_namespaceObject.TableCell, {
className: "pr-0",
children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(outline_namespaceObject.Bars2Icon, {
className: "text-nextadmin-content-default dark:text-dark-nextadmin-content-default h-5 w-5 cursor-grab active:cursor-grabbing"
})
}),
children: [
row.getVisibleCells().map((cell)=>/*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(Table_js_namespaceObject.TableCell, {
className: `group py-3 ${"__nextadmin-actions" === cell.column.id && "text-right"}`,
children: (0, react_table_namespaceObject.flexRender)(cell.column.columnDef.cell, cell.getContext())
}, cell.id)),
deletable && onRemoveClick && /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(Table_js_namespaceObject.TableCell, {
className: "flex justify-end",
children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(outline_namespaceObject.XMarkIcon, {
onClick: (e)=>{
e.stopPropagation();
return onRemoveClick(row.original[modelIdProperty].value);
},
className: "text-nextadmin-content-default dark:text-dark-nextadmin-content-default h-5 w-5 cursor-pointer"
})
})
]
}, row.id))
}) : /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(Table_js_namespaceObject.TableRow, {
children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(Table_js_namespaceObject.TableCell, {
colSpan: table.getAllColumns().length,
className: "h-24 text-center",
children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_EmptyState_js_default(), {
resource: resource,
icon: icon
})
})
})
})
]
})
}) : /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsxs)(Table_js_namespaceObject.Table, {
children: [
table.getRowModel().rows?.length > 0 && /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(Table_js_namespaceObject.TableHeader, {
children: table.getHeaderGroups().map((headerGroup)=>/*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(Table_js_namespaceObject.TableRow, {
className: "border-b-nextadmin-border-strong dark:border-b-dark-nextadmin-border-default",
children: headerGroup.headers.map((header)=>/*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(Table_js_namespaceObject.TableHead, {
children: header.isPlaceholder ? null : (0, react_table_namespaceObject.flexRender)(header.column.columnDef.header, header.getContext())
}, header.id))
}, headerGroup.id))
}),
/*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(Table_js_namespaceObject.TableBody, {
children: table.getRowModel().rows?.length ? table.getRowModel().rows.map((row)=>/*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsxs)(Table_js_namespaceObject.TableRow, {
"data-state": row.getIsSelected() && "selected",
className: `hover:bg-nextadmin-background-muted text-nextadmin-content-inverted dark:text-dark-nextadmin-content-inverted dark:hover:bg-dark-nextadmin-background-muted/75 border-b-nextadmin-border-strong dark:border-b-dark-nextadmin-border-default cursor-pointer border-b ${row.getIsSelected() ? "bg-nextadmin-background-emphasis/40 dark:bg-dark-nextadmin-background-subtle" : "even:bg-nextadmin-background-subtle dark:even:bg-dark-nextadmin-background-subtle/60"}`,
onClick: ()=>{
window.location.href = `${basePath}/${(0, tools_js_namespaceObject.slugify)(resource)}/${row.original[modelIdProperty].value}`;
},
children: [
row.getVisibleCells().map((cell)=>/*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(Table_js_namespaceObject.TableCell, {
className: `group py-3 ${"__nextadmin-actions" === cell.column.id ? "text-right" : ""}`,
children: (0, react_table_namespaceObject.flexRender)(cell.column.columnDef.cell, cell.getContext())
}, cell.id)),
deletable && onRemoveClick && /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(Table_js_namespaceObject.TableCell, {
className: "flex justify-end",
children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(outline_namespaceObject.XMarkIcon, {
onClick: (e)=>{
e.stopPropagation();
return onRemoveClick(row.original[modelIdProperty].value);
},
className: "text-nextadmin-content-default dark:text-dark-nextadmin-content-default h-5 w-5 cursor-pointer"
})
})
]
}, row.id)) : /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(Table_js_namespaceObject.TableRow, {
children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(Table_js_namespaceObject.TableCell, {
colSpan: table.getAllColumns().length,
className: "h-24 text-center",
children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_EmptyState_js_default(), {
resource: resource,
icon: icon
})
})
})
})
]
})
});
}
exports.DataTable = __webpack_exports__.DataTable;
for(var __webpack_i__ in __webpack_exports__)if (-1 === [
"DataTable"
].indexOf(__webpack_i__)) exports[__webpack_i__] = __webpack_exports__[__webpack_i__];
Object.defineProperty(exports, '__esModule', {
value: true
});