feat(12.1-01): list row states from one controller call per page

- pact.ListRowStates with the fixed RowState set deleted, negative, disabled
- list response meta.row_states keyed by row id; unknown values dropped
- list messages rowStateDeleted, rowStateNegative, rowStateDisabled
- update writes through the scope the load used, so a soft-deleted record
  a controller includes stays soft-deleted
- DataTable row state badges and text styles
- roster fixture, smoke tests, OpenAPI, TS types, dist, READMEs, docs
This commit is contained in:
Jakub Zych
2026-10-04 23:45:44 +02:00
parent e0ccced76a
commit 61d5fc72ad
35 changed files with 749 additions and 44 deletions

View File

@@ -36,6 +36,10 @@ type listMessageKeys struct {
DeleteSelected string `yaml:"deleteSelected"`
DeleteConfirm string `yaml:"deleteConfirm"`
Deleted string `yaml:"deleted"`
// The row-state badge labels (D-12).
RowStateDeleted string `yaml:"rowStateDeleted"`
RowStateNegative string `yaml:"rowStateNegative"`
RowStateDisabled string `yaml:"rowStateDisabled"`
}
// ListMessages is a list schema's copy, every key resolved (same field order
@@ -51,6 +55,10 @@ type ListMessages struct {
DeleteSelected MessageForms `json:"deleteSelected"`
DeleteConfirm MessageForms `json:"deleteConfirm"`
Deleted MessageForms `json:"deleted"`
// The row-state badge labels (D-12).
RowStateDeleted MessageForms `json:"rowStateDeleted"`
RowStateNegative MessageForms `json:"rowStateNegative"`
RowStateDisabled MessageForms `json:"rowStateDisabled"`
}
// formMessageKeys is the config_form.yaml messages block: phrase keys.
@@ -143,6 +151,10 @@ var (
DeleteSelected: "backend::lang.list.delete_selected",
DeleteConfirm: "backend::lang.messages.list.delete_confirm",
Deleted: "backend::lang.messages.list.deleted",
RowStateDeleted: "backend::lang.messages.list.row_state_deleted",
RowStateNegative: "backend::lang.messages.list.row_state_negative",
RowStateDisabled: "backend::lang.messages.list.row_state_disabled",
}
formMessageDefaults = formMessageKeys{
Create: "backend::lang.messages.form.create",