Portal Community

Available Filters

FilterValuesAPI Parameter
Task TypeAll, Approval, Form, Review?type=approval
Due DateAll, Overdue, Due Today, Due This Week, No Deadline?dueFilter=overdue
UrgencyAll, Low, Normal, High, Urgent?urgency=high
Claim StateAll, Unclaimed, Claimed by Me, Claimed by Others?claimState=unclaimed
Workflow NameFree text partial match?workflowName=payroll
StatusPending, Completed, Expired?status=pending

Quick Filter Chips

Above the task list, a row of quick-filter chips provides one-click access to common filter combinations:

All Tasks Overdue Due Today Approvals Only Forms Only Unclaimed Claimed by Me

Advanced Filter Panel

Click the Filter button to open the advanced filter panel on the right side. This allows multi-select on all filter dimensions simultaneously. Applied filters are shown as dismissible tags above the task list.

// Filter panel state (Zustand slice)
interface InboxFilterState {
  type: ('approval' | 'form' | 'review')[];  // empty = all
  dueFilter: 'all' | 'overdue' | 'today' | 'this_week' | 'no_deadline';
  urgency: ('low' | 'normal' | 'high' | 'urgent')[];
  claimState: 'all' | 'unclaimed' | 'claimed_by_me' | 'claimed_by_others';
  workflowName: string;
  status: 'pending' | 'completed' | 'expired';
}

// Convert filter state to API query string
function buildInboxQuery(filters: InboxFilterState): string {
  const params = new URLSearchParams();
  if (filters.type.length > 0) params.set('type', filters.type.join(','));
  if (filters.dueFilter !== 'all') params.set('dueFilter', filters.dueFilter);
  if (filters.urgency.length > 0) params.set('urgency', filters.urgency.join(','));
  if (filters.claimState !== 'all') params.set('claimState', filters.claimState);
  if (filters.workflowName) params.set('workflowName', filters.workflowName);
  params.set('status', filters.status);
  return params.toString();
}

Filter Persistence

Active filters are:

Filter + Sort Together

Filters and sort order are independent. You can filter to "Overdue Approvals" and then sort by "Created Date (Oldest)" to process them in FIFO order. Both settings persist together in the URL.

Applied Filter Tags

When any filter is active (other than the defaults), a row of applied-filter tags appears above the task list. Each tag shows the active filter value and has an ✕ to remove it individually. A "Clear All" link resets all filters to defaults.

API — Filtered Request Example

// Get overdue, unclaimed approval tasks
GET /api/workdesk/inbox?type=approval&dueFilter=overdue&claimState=unclaimed&status=pending

// Get all urgent tasks across all types
GET /api/workdesk/inbox?urgency=urgent&status=pending&sortBy=dueAt&sortDir=asc