UNPKG

@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
"use strict"; 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 });