feat: add sort functionality to Audit Log Resource Types list with new filter options

This commit is contained in:
Yashwin 2026-04-09 14:34:20 +05:30
parent d26456ab94
commit ccbda2c0ae
2 changed files with 25 additions and 4 deletions

View File

@ -66,7 +66,8 @@ const AuditLogResourceTypes = (): ReactElement => {
const [search, setSearch] = useState<string>('');
const [debouncedSearch, setDebouncedSearch] = useState<string>('');
const [typeFilter, setTypeFilter] = useState<string | null>(null);
const [moduleIdFilter, setModuleIdFilter] = useState<string | null>(null);
const [moduleIdFilter, setModuleIdFilter] = useState<string| null>(null);
const [sort, setSort] = useState<string>('asc');
const {
register,
@ -95,7 +96,8 @@ const AuditLogResourceTypes = (): ReactElement => {
const response = await auditLogService.getAllResourceTypes(currentPage, limit, {
search: debouncedSearch,
type: typeFilter,
module_id: moduleIdFilter
module_id: moduleIdFilter,
sort
});
if (response.success) {
setResourceTypes(response.data);
@ -107,7 +109,7 @@ const AuditLogResourceTypes = (): ReactElement => {
} finally {
setIsLoading(false);
}
}, [currentPage, limit, debouncedSearch, typeFilter, moduleIdFilter]);
}, [currentPage, limit, debouncedSearch, typeFilter, moduleIdFilter, sort]);
const fetchModules = async () => {
try {
@ -325,13 +327,31 @@ const AuditLogResourceTypes = (): ReactElement => {
placeholder="All Modules"
/>
{(debouncedSearch || typeFilter || moduleIdFilter) && (
{/* Sort Filter */}
<FilterDropdown
label="Sort By"
options={[
{ value: 'newest', label: 'Newest First' },
{ value: 'oldest', label: 'Oldest First' },
{ value: 'asc', label: 'Name (A-Z)' },
{ value: 'desc', label: 'Name (Z-A)' },
]}
value={sort}
onChange={(val) => {
setSort(val as string || 'newest');
setCurrentPage(1);
}}
placeholder="Sort Order"
/>
{(debouncedSearch || typeFilter || moduleIdFilter || sort !== 'asc') && (
<button
onClick={() => {
setSearch('');
setDebouncedSearch('');
setTypeFilter(null);
setModuleIdFilter(null);
setSort('asc');
setCurrentPage(1);
}}
className="text-xs text-[#ef4444] hover:underline font-medium ml-1"

View File

@ -75,6 +75,7 @@ export const auditLogService = {
if (filters.search) params.append('search', filters.search);
if (filters.type) params.append('type', filters.type);
if (filters.module_id) params.append('module_id', filters.module_id);
if (filters.sort) params.append('sort', filters.sort);
const response = await apiClient.get(`/audit-log-resource-types?${params.toString()}`);
return response.data;