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

44 lines (43 loc) 1.74 kB
import { Fragment, jsx, jsxs } from "react/jsx-runtime"; import { useTransition } from "react"; import { ArrowSmallDownIcon, ArrowSmallUpIcon } from "@heroicons/react/24/outline"; import { useRouterInternal } from "../../hooks/useRouterInternal.mjs"; const SortButton = ({ field })=>{ const { router, query } = useRouterInternal(); const searchParams = query; const sort = searchParams.sortColumn === field ? searchParams.sortDirection : null; const [_isPending, startTransition] = useTransition(); const handleClick = ()=>{ startTransition(()=>{ Object.keys(query).forEach((key)=>{ if (key.startsWith("sort")) delete query[key]; }); router?.push({ pathname: location.pathname, query: { ...query, sortColumn: field, sortDirection: "asc" === sort ? "desc" : "asc" } }); }); }; return /*#__PURE__*/ jsxs(Fragment, { children: [ /*#__PURE__*/ jsx("button", { type: "button", onClick: handleClick, className: "absolute inset-0 h-full w-full text-gray-400 hover:text-gray-500" }), "asc" === sort ? /*#__PURE__*/ jsx(ArrowSmallUpIcon, { className: "text-nextadmin-primary-500 h-5 w-5", "aria-hidden": "true" }) : "desc" === sort ? /*#__PURE__*/ jsx(ArrowSmallDownIcon, { className: "text-nextadmin-primary-500 h-5 w-5", "aria-hidden": "true" }) : null ] }); }; const inputs_SortButton = SortButton; export { inputs_SortButton as default };