Ethnicity / Race (/admin/races) is the HR library of race codes. The page title matches the sidebar; the legacy screen heading is Races and the breadcrumb is Manage Races. Each row is a Code, a Description, and an optional Classification.
Permissions: FunctionId RACE (34), menu HR → Libraries → Ethnicity / Race (function.url = race). View opens the page; Add controls New; Edit and Delete control row actions and bulk delete.
Screen layout
Figure: FoodHub list — New in the page header; data card with Search races…, Export, sortable Code, Description, and Classification, row ⋮, checkboxes, and pagination.
| Region | What you see |
|---|---|
| Page toolbar | Title Ethnicity / Race, subtitle Manage Races, New (Add) on the right, and the ? icon (this article). |
| Data card | Search, Export, column headers, row checkboxes (Delete permission), bulk bar, mobile Sort by, pagination. There is no Filter popover. |
| Modal | Surface B on the list URL (?create=1). Cancel and Save sit in the header. |
Default sort: Description ascending.
List behavior
- Search — placeholder Search races…. The request is sent when the term is empty or at least 3 characters, and matches Code or Description.
- Export — Copy, Excel, and CSV for the current page.
- Sort — Code, Description, Classification (mobile: Sort by combobox).
- Checkboxes + bulk bar — when Delete is allowed.
- New — opens New race:.
- Row ⋮ — Edit · Delete when permitted.
Modal — create and edit
- New race: — required Code and Description. Classification is optional (the origin label is not required).
- Update Race:
`{description}`— same fields, hydrated from the row. - Empty code or description shows This field is required.
- A code already used by another row shows The race code is in use, please try entering another one.
- Save toast: The operation was successful. The API writes an ApplicationLog in category Race.
Delete
A race linked to an employee cannot be deleted. The single-row message is The race could not be deleted, because it is related to a employee. Bulk delete that removes nothing uses The races could not be deleted, because they are associated with a employee. A partial bulk delete keeps the rows that are still in use and reports the legacy partial-success sentence.