diff --git a/ami/main/api/views.py b/ami/main/api/views.py
index 5a6d5aece..57664217c 100644
--- a/ami/main/api/views.py
+++ b/ami/main/api/views.py
@@ -155,6 +155,7 @@ class ProjectViewSet(DefaultViewSet, ProjectMixin):
serializer_class = ProjectSerializer
pagination_class = ProjectPagination
permission_classes = [ObjectPermission]
+ ordering_fields = ["name", "created_at", "updated_at"]
def get_queryset(self):
qs: ProjectQuerySet = super().get_queryset() # type: ignore
diff --git a/ui/package.json b/ui/package.json
index 7c32af6e1..bd8f41ac5 100644
--- a/ui/package.json
+++ b/ui/package.json
@@ -29,7 +29,7 @@
"leaflet": "^1.9.3",
"lodash": "^4.17.21",
"lucide-react": "^1.0.1",
- "nova-ui-kit": "^1.1.34",
+ "nova-ui-kit": "^1.1.36",
"plotly.js": "^2.25.2",
"react": "^18.2.0",
"react-dom": "^18.2.0",
diff --git a/ui/src/design-system/components/sort-control.tsx b/ui/src/design-system/components/sort-control.tsx
index 87a18e2e0..b9887130f 100644
--- a/ui/src/design-system/components/sort-control.tsx
+++ b/ui/src/design-system/components/sort-control.tsx
@@ -1,6 +1,6 @@
import classNames from 'classnames'
-import { ArrowUpDownIcon } from 'lucide-react'
-import { buttonVariants, Select } from 'nova-ui-kit'
+import { ArrowDownIcon, ArrowUpDownIcon } from 'lucide-react'
+import { Button, buttonVariants, Select } from 'nova-ui-kit'
import { STRING, translate } from 'utils/language'
import { TableSortSettings } from './table/types'
import { BasicTooltip } from './tooltip/basic-tooltip'
@@ -16,33 +16,73 @@ export const SortControl = ({ columns, setSort, sort }: SortControlProps) => {
? columns.find((column) => column.sortField === sort.field)
: undefined
+ const changeSortField = (field: string) => {
+ if (sort) {
+ setSort({ field, order: sort.order })
+ } else {
+ setSort({ field, order: 'asc' })
+ }
+ }
+
+ const changeSortOrder = () => {
+ if (sort) {
+ setSort({
+ field: sort.field,
+ order: sort.order === 'asc' ? 'desc' : 'asc',
+ })
+ }
+ }
+
return (
-