@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
JavaScript
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 };