fix(admin): sync moderation status dropdown
This commit is contained in:
parent
8b866b2bb2
commit
b742450938
8 changed files with 41 additions and 11 deletions
File diff suppressed because one or more lines are too long
1
cmd/telesrv-admin/web/dist/assets/index-D5Lc7N2D.css
vendored
Normal file
1
cmd/telesrv-admin/web/dist/assets/index-D5Lc7N2D.css
vendored
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
4
cmd/telesrv-admin/web/dist/index.html
vendored
4
cmd/telesrv-admin/web/dist/index.html
vendored
|
|
@ -21,8 +21,8 @@
|
||||||
}
|
}
|
||||||
})();
|
})();
|
||||||
</script>
|
</script>
|
||||||
<script type="module" crossorigin src="/assets/index-DRjvnVte.js"></script>
|
<script type="module" crossorigin src="/assets/index-DJw3UpEg.js"></script>
|
||||||
<link rel="stylesheet" crossorigin href="/assets/index-BwxAoLbQ.css">
|
<link rel="stylesheet" crossorigin href="/assets/index-D5Lc7N2D.css">
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div id="root"></div>
|
<div id="root"></div>
|
||||||
|
|
|
||||||
|
|
@ -459,7 +459,9 @@ const translations: Record<Language, Record<string, string>> = {
|
||||||
"moderation.currentQueue": "Current queue",
|
"moderation.currentQueue": "Current queue",
|
||||||
"moderation.criticalCases": "Critical cases",
|
"moderation.criticalCases": "Critical cases",
|
||||||
"moderation.pendingOrFailed": "Pending / failed actions",
|
"moderation.pendingOrFailed": "Pending / failed actions",
|
||||||
"moderation.statusFilter": "Case status filter (comma-separated identifiers)",
|
"moderation.statusFilter": "Case status filter",
|
||||||
|
"moderation.statusFilter.active": "Active queue",
|
||||||
|
"moderation.statusFilter.all": "All statuses",
|
||||||
"moderation.assignee": "Reviewer",
|
"moderation.assignee": "Reviewer",
|
||||||
"moderation.allAssignees": "Leave blank for all",
|
"moderation.allAssignees": "Leave blank for all",
|
||||||
"moderation.case": "Case",
|
"moderation.case": "Case",
|
||||||
|
|
@ -1043,7 +1045,9 @@ const translations: Record<Language, Record<string, string>> = {
|
||||||
"moderation.currentQueue": "当前队列",
|
"moderation.currentQueue": "当前队列",
|
||||||
"moderation.criticalCases": "关键案件",
|
"moderation.criticalCases": "关键案件",
|
||||||
"moderation.pendingOrFailed": "处置待完成 / 失败",
|
"moderation.pendingOrFailed": "处置待完成 / 失败",
|
||||||
"moderation.statusFilter": "案件状态筛选(英文标识以逗号分隔)",
|
"moderation.statusFilter": "案件状态筛选",
|
||||||
|
"moderation.statusFilter.active": "活跃队列",
|
||||||
|
"moderation.statusFilter.all": "全部状态",
|
||||||
"moderation.assignee": "审核人",
|
"moderation.assignee": "审核人",
|
||||||
"moderation.allAssignees": "留空为全部",
|
"moderation.allAssignees": "留空为全部",
|
||||||
"moderation.case": "案件",
|
"moderation.case": "案件",
|
||||||
|
|
@ -1627,7 +1631,9 @@ const translations: Record<Language, Record<string, string>> = {
|
||||||
"moderation.currentQueue": "Текущая очередь",
|
"moderation.currentQueue": "Текущая очередь",
|
||||||
"moderation.criticalCases": "Критические обращения",
|
"moderation.criticalCases": "Критические обращения",
|
||||||
"moderation.pendingOrFailed": "Ожидающие / неудачные действия",
|
"moderation.pendingOrFailed": "Ожидающие / неудачные действия",
|
||||||
"moderation.statusFilter": "Фильтр по статусу (идентификаторы через запятую)",
|
"moderation.statusFilter": "Фильтр по статусу обращения",
|
||||||
|
"moderation.statusFilter.active": "Активная очередь",
|
||||||
|
"moderation.statusFilter.all": "Все статусы",
|
||||||
"moderation.assignee": "Модератор",
|
"moderation.assignee": "Модератор",
|
||||||
"moderation.allAssignees": "Оставьте пустым для всех",
|
"moderation.allAssignees": "Оставьте пустым для всех",
|
||||||
"moderation.case": "Обращение",
|
"moderation.case": "Обращение",
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,18 @@ import type { Navigate } from "../routing";
|
||||||
import type { ModerationCaseRow } from "../types";
|
import type { ModerationCaseRow } from "../types";
|
||||||
|
|
||||||
const defaultStatuses = "open,in_review,action_pending,action_failed,appeal_review";
|
const defaultStatuses = "open,in_review,action_pending,action_failed,appeal_review";
|
||||||
|
const allStatuses = "open,in_review,action_pending,action_failed,resolved,dismissed,appeal_review";
|
||||||
|
const statusFilterOptions = [
|
||||||
|
{ value: defaultStatuses, labelKey: "moderation.statusFilter.active" },
|
||||||
|
{ value: allStatuses, labelKey: "moderation.statusFilter.all" },
|
||||||
|
{ value: "open", labelKey: "moderation.status.open" },
|
||||||
|
{ value: "in_review", labelKey: "moderation.status.in_review" },
|
||||||
|
{ value: "action_pending", labelKey: "moderation.status.action_pending" },
|
||||||
|
{ value: "action_failed", labelKey: "moderation.status.action_failed" },
|
||||||
|
{ value: "appeal_review", labelKey: "moderation.status.appeal_review" },
|
||||||
|
{ value: "resolved", labelKey: "moderation.status.resolved" },
|
||||||
|
{ value: "dismissed", labelKey: "moderation.status.dismissed" }
|
||||||
|
];
|
||||||
|
|
||||||
export function ModerationCasesPage({ navigate }: { navigate: Navigate }) {
|
export function ModerationCasesPage({ navigate }: { navigate: Navigate }) {
|
||||||
const { t } = useI18n();
|
const { t } = useI18n();
|
||||||
|
|
@ -58,11 +70,15 @@ export function ModerationCasesPage({ navigate }: { navigate: Navigate }) {
|
||||||
<form className="toolbar" onSubmit={(event) => { event.preventDefault(); void load(); }}>
|
<form className="toolbar" onSubmit={(event) => { event.preventDefault(); void load(); }}>
|
||||||
<label className="field-inline">
|
<label className="field-inline">
|
||||||
<span>{t("common.status")}</span>
|
<span>{t("common.status")}</span>
|
||||||
<input
|
<select
|
||||||
aria-label={t("moderation.statusFilter")}
|
aria-label={t("moderation.statusFilter")}
|
||||||
value={statuses}
|
value={statuses}
|
||||||
onChange={(event) => setStatuses(event.target.value)}
|
onChange={(event) => setStatuses(event.target.value)}
|
||||||
/>
|
>
|
||||||
|
{statusFilterOptions.map((option) => (
|
||||||
|
<option key={option.value} value={option.value}>{t(option.labelKey)}</option>
|
||||||
|
))}
|
||||||
|
</select>
|
||||||
</label>
|
</label>
|
||||||
<label className="field-inline">
|
<label className="field-inline">
|
||||||
<span>{t("moderation.assignee")}</span>
|
<span>{t("moderation.assignee")}</span>
|
||||||
|
|
|
||||||
|
|
@ -174,6 +174,7 @@ body {
|
||||||
|
|
||||||
button,
|
button,
|
||||||
input,
|
input,
|
||||||
|
select,
|
||||||
textarea {
|
textarea {
|
||||||
font: inherit;
|
font: inherit;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -325,6 +325,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
input,
|
input,
|
||||||
|
select,
|
||||||
textarea {
|
textarea {
|
||||||
color: var(--text);
|
color: var(--text);
|
||||||
background: var(--input-bg);
|
background: var(--input-bg);
|
||||||
|
|
@ -339,12 +340,17 @@ textarea::placeholder {
|
||||||
color: var(--muted-2);
|
color: var(--muted-2);
|
||||||
}
|
}
|
||||||
|
|
||||||
input {
|
input,
|
||||||
|
select {
|
||||||
width: 190px;
|
width: 190px;
|
||||||
height: 34px;
|
height: 34px;
|
||||||
padding: 0 10px;
|
padding: 0 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
select {
|
||||||
|
min-width: 220px;
|
||||||
|
}
|
||||||
|
|
||||||
textarea {
|
textarea {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
padding: 9px 10px;
|
padding: 9px 10px;
|
||||||
|
|
@ -352,6 +358,7 @@ textarea {
|
||||||
}
|
}
|
||||||
|
|
||||||
input:focus,
|
input:focus,
|
||||||
|
select:focus,
|
||||||
textarea:focus {
|
textarea:focus {
|
||||||
border-color: var(--brand);
|
border-color: var(--brand);
|
||||||
box-shadow: 0 0 0 3px var(--focus);
|
box-shadow: 0 0 0 3px var(--focus);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue