@yadsh/dsh-qa-surface 0.9.0 → 0.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +269 -2
- package/lib/access/service.js +49 -10
- package/lib/access/service.js.map +1 -1
- package/lib/account-remotes.js +41 -0
- package/lib/account-remotes.js.map +1 -1
- package/lib/accounts/database.js +140 -0
- package/lib/accounts/database.js.map +1 -1
- package/lib/accounts/errors.js.map +1 -1
- package/lib/accounts/service-token.js +103 -0
- package/lib/accounts/service-token.js.map +1 -0
- package/lib/accounts/store.js +291 -5
- package/lib/accounts/store.js.map +1 -1
- package/lib/admin/conversation-log.js +14 -8
- package/lib/admin/conversation-log.js.map +1 -1
- package/lib/admin/permissions.js +5 -0
- package/lib/admin/permissions.js.map +1 -1
- package/lib/admin/quality-store.js +4 -0
- package/lib/admin/quality-store.js.map +1 -1
- package/lib/admin/service.js +180 -7
- package/lib/admin/service.js.map +1 -1
- package/lib/admin/session-log.js +39 -8
- package/lib/admin/session-log.js.map +1 -1
- package/lib/attachment-rules.js +39 -6
- package/lib/attachment-rules.js.map +1 -1
- package/lib/cli.js +83 -1
- package/lib/cli.js.map +1 -1
- package/lib/client/QaAccountsController.js +213 -4
- package/lib/client/QaAccountsController.js.map +1 -1
- package/lib/client/QaSessionController.js +49 -21
- package/lib/client/QaSessionController.js.map +1 -1
- package/lib/client/QaSurface.js +51 -9
- package/lib/client/QaSurface.js.map +1 -1
- package/lib/client/QaSurfaceGuard.js +12 -5
- package/lib/client/QaSurfaceGuard.js.map +1 -1
- package/lib/client/admin/QaAdmin.js +14 -2
- package/lib/client/admin/QaAdmin.js.map +1 -1
- package/lib/client/admin/pages/SkillFiles.js +78 -0
- package/lib/client/admin/pages/SkillFiles.js.map +1 -0
- package/lib/client/admin/pages/Users.js +74 -3
- package/lib/client/admin/pages/Users.js.map +1 -1
- package/lib/client/admin/routes.js +8 -1
- package/lib/client/admin/routes.js.map +1 -1
- package/lib/client/admin/shared.js +5 -1
- package/lib/client/admin/shared.js.map +1 -1
- package/lib/client/admin/styles.js +2 -0
- package/lib/client/admin/styles.js.map +1 -1
- package/lib/client/attachments.js +41 -11
- package/lib/client/attachments.js.map +1 -1
- package/lib/client/base64.js +22 -1
- package/lib/client/base64.js.map +1 -1
- package/lib/client/components/QaAgentsDrawer.js +9 -6
- package/lib/client/components/QaAgentsDrawer.js.map +1 -1
- package/lib/client/components/QaApproval.js +1 -1
- package/lib/client/components/QaApproval.js.map +1 -1
- package/lib/client/components/QaAuthGate.js +19 -10
- package/lib/client/components/QaAuthGate.js.map +1 -1
- package/lib/client/components/QaChangelog.js +56 -0
- package/lib/client/components/QaChangelog.js.map +1 -1
- package/lib/client/components/QaFilesPanel.js +17 -11
- package/lib/client/components/QaFilesPanel.js.map +1 -1
- package/lib/client/components/QaHeader.js +3 -11
- package/lib/client/components/QaHeader.js.map +1 -1
- package/lib/client/components/QaModal.js.map +1 -1
- package/lib/client/components/QaQuestions.js +4 -4
- package/lib/client/components/QaQuestions.js.map +1 -1
- package/lib/client/components/QaSidebar.js +10 -2
- package/lib/client/components/QaSidebar.js.map +1 -1
- package/lib/client/components/QaWidthHandle.js +111 -5
- package/lib/client/components/QaWidthHandle.js.map +1 -1
- package/lib/client/components/QaWorkspaceBrowser.js +231 -0
- package/lib/client/components/QaWorkspaceBrowser.js.map +1 -0
- package/lib/client/index.js +122 -53
- package/lib/client/index.js.map +1 -1
- package/lib/client/kiosk.js +51 -0
- package/lib/client/kiosk.js.map +1 -0
- package/lib/client/lineage.js +64 -0
- package/lib/client/lineage.js.map +1 -1
- package/lib/client/markdown/blocks.js +122 -7
- package/lib/client/markdown/blocks.js.map +1 -1
- package/lib/client/markdown/inline.js +108 -12
- package/lib/client/markdown/inline.js.map +1 -1
- package/lib/client/markdown/katex-css.js +12 -0
- package/lib/client/markdown/katex-css.js.map +1 -0
- package/lib/client/markdown/math.js +84 -0
- package/lib/client/markdown/math.js.map +1 -0
- package/lib/client/markdown/render.js +74 -5
- package/lib/client/markdown/render.js.map +1 -1
- package/lib/client/settings/card.js +2 -2
- package/lib/client/settings/card.js.map +1 -1
- package/lib/client/settings/sections/attachments.js +6 -5
- package/lib/client/settings/sections/attachments.js.map +1 -1
- package/lib/client/settings/sections/notes.js +64 -0
- package/lib/client/settings/sections/notes.js.map +1 -0
- package/lib/client/settings/sections/sources.js +4 -1
- package/lib/client/settings/sections/sources.js.map +1 -1
- package/lib/client/settings/sections.js +1 -0
- package/lib/client/settings/sections.js.map +1 -1
- package/lib/client/settlement.js +1 -1
- package/lib/client/settlement.js.map +1 -1
- package/lib/client/source-preview.js +3 -0
- package/lib/client/source-preview.js.map +1 -1
- package/lib/client/styles.js +106 -18
- package/lib/client/styles.js.map +1 -1
- package/lib/client/types.js.map +1 -1
- package/lib/client/user-settings/IntegrationTokensPage.js +150 -0
- package/lib/client/user-settings/IntegrationTokensPage.js.map +1 -0
- package/lib/client/user-settings/PasswordSettingsPage.js +48 -0
- package/lib/client/user-settings/PasswordSettingsPage.js.map +1 -0
- package/lib/client/user-settings/SkillCatalog.js +2 -2
- package/lib/client/user-settings/SkillCatalog.js.map +1 -1
- package/lib/client/user-settings/UserSettingsDialog.js +17 -2
- package/lib/client/user-settings/UserSettingsDialog.js.map +1 -1
- package/lib/client/user-settings/copy.js +20 -0
- package/lib/client/user-settings/copy.js.map +1 -1
- package/lib/client.js +31007 -686
- package/lib/client.js.map +1 -1
- package/lib/config-resolvers/attachments.js +6 -5
- package/lib/config-resolvers/attachments.js.map +1 -1
- package/lib/config-resolvers/defaults.js +33 -2
- package/lib/config-resolvers/defaults.js.map +1 -1
- package/lib/config-resolvers/integration.js +94 -0
- package/lib/config-resolvers/integration.js.map +1 -0
- package/lib/config-resolvers/notes.js +26 -0
- package/lib/config-resolvers/notes.js.map +1 -0
- package/lib/config-resolvers/sources.js +4 -0
- package/lib/config-resolvers/sources.js.map +1 -1
- package/lib/config.js +107 -0
- package/lib/config.js.map +1 -1
- package/lib/index.js +348 -12
- package/lib/index.js.map +1 -1
- package/lib/integration/answer.js +100 -0
- package/lib/integration/answer.js.map +1 -0
- package/lib/integration/attachments.js +231 -0
- package/lib/integration/attachments.js.map +1 -0
- package/lib/integration/contract.js +53 -0
- package/lib/integration/contract.js.map +1 -0
- package/lib/integration/host-runner.js +243 -0
- package/lib/integration/host-runner.js.map +1 -0
- package/lib/integration/http.js +538 -0
- package/lib/integration/http.js.map +1 -0
- package/lib/integration/service.js +331 -0
- package/lib/integration/service.js.map +1 -0
- package/lib/integration/transcript-reader.js +202 -0
- package/lib/integration/transcript-reader.js.map +1 -0
- package/lib/integration/transcript.js +148 -0
- package/lib/integration/transcript.js.map +1 -0
- package/lib/personal-skills/index.js +2 -2
- package/lib/personal-skills/index.js.map +1 -1
- package/lib/personal-skills/paths.js +14 -8
- package/lib/personal-skills/paths.js.map +1 -1
- package/lib/personal-skills/provider.js +16 -4
- package/lib/personal-skills/provider.js.map +1 -1
- package/lib/personal-skills/service.js +240 -30
- package/lib/personal-skills/service.js.map +1 -1
- package/lib/prompt-notes.js +103 -6
- package/lib/prompt-notes.js.map +1 -1
- package/lib/provenance/document-preview.js +60 -0
- package/lib/provenance/document-preview.js.map +1 -0
- package/lib/provenance/file-preview.js +191 -19
- package/lib/provenance/file-preview.js.map +1 -1
- package/lib/qa-tools/catalog.js +18 -1
- package/lib/qa-tools/catalog.js.map +1 -1
- package/lib/qa-tools/docs-tools.js +563 -0
- package/lib/qa-tools/docs-tools.js.map +1 -0
- package/lib/qa-tools/file-delete-gate.js +60 -0
- package/lib/qa-tools/file-delete-gate.js.map +1 -0
- package/lib/qa-tools/file-delete.js +156 -0
- package/lib/qa-tools/file-delete.js.map +1 -0
- package/lib/resolve-config.js +6 -0
- package/lib/resolve-config.js.map +1 -1
- package/lib/secure-session.js +83 -3
- package/lib/secure-session.js.map +1 -1
- package/lib/shared/documents.js +22 -0
- package/lib/shared/documents.js.map +1 -0
- package/lib/shared/integration-tokens.js +23 -0
- package/lib/shared/integration-tokens.js.map +1 -0
- package/lib/typert.host.js +1320 -134
- package/lib/typert.remote-client.d.ts +33 -1
- package/lib/typert.remote-client.js +1102 -74
- package/lib/types/access/service.d.ts +33 -2
- package/lib/types/account-remotes.d.ts +30 -1
- package/lib/types/accounts/database.d.ts +53 -0
- package/lib/types/accounts/errors.d.ts +5 -1
- package/lib/types/accounts/service-token.d.ts +70 -0
- package/lib/types/accounts/store.d.ts +131 -1
- package/lib/types/admin/conversation-log.d.ts +12 -0
- package/lib/types/admin/service.d.ts +56 -1
- package/lib/types/admin/session-log.d.ts +21 -0
- package/lib/types/attachment-rules.d.ts +26 -3
- package/lib/types/client/QaAccountsController.d.ts +64 -5
- package/lib/types/client/QaSessionController.d.ts +24 -2
- package/lib/types/client/admin/pages/SkillFiles.d.ts +17 -0
- package/lib/types/client/admin/routes.d.ts +2 -0
- package/lib/types/client/admin/shared.d.ts +2 -0
- package/lib/types/client/attachments.d.ts +21 -4
- package/lib/types/client/base64.d.ts +13 -1
- package/lib/types/client/components/QaAgentsDrawer.d.ts +2 -1
- package/lib/types/client/components/QaFilesPanel.d.ts +16 -4
- package/lib/types/client/components/QaHeader.d.ts +9 -3
- package/lib/types/client/components/QaModal.d.ts +4 -3
- package/lib/types/client/components/QaWidthHandle.d.ts +48 -2
- package/lib/types/client/components/QaWorkspaceBrowser.d.ts +15 -0
- package/lib/types/client/index.d.ts +1 -1
- package/lib/types/client/kiosk.d.ts +34 -0
- package/lib/types/client/lineage.d.ts +42 -0
- package/lib/types/client/markdown/blocks.d.ts +14 -1
- package/lib/types/client/markdown/inline.d.ts +23 -7
- package/lib/types/client/markdown/katex-css.d.ts +11 -0
- package/lib/types/client/markdown/math.d.ts +23 -0
- package/lib/types/client/markdown/render.d.ts +2 -1
- package/lib/types/client/settings/sections/notes.d.ts +12 -0
- package/lib/types/client/settings/sections.d.ts +1 -0
- package/lib/types/client/settlement.d.ts +4 -1
- package/lib/types/client/styles.d.ts +15 -2
- package/lib/types/client/types.d.ts +120 -1
- package/lib/types/client/user-settings/IntegrationTokensPage.d.ts +21 -0
- package/lib/types/client/user-settings/PasswordSettingsPage.d.ts +19 -0
- package/lib/types/client/user-settings/UserSettingsDialog.d.ts +11 -2
- package/lib/types/client/user-settings/copy.d.ts +10 -1
- package/lib/types/config-resolvers/integration.d.ts +47 -0
- package/lib/types/config-resolvers/notes.d.ts +10 -0
- package/lib/types/config.d.ts +10 -0
- package/lib/types/index.d.ts +111 -1
- package/lib/types/integration/answer.d.ts +65 -0
- package/lib/types/integration/attachments.d.ts +85 -0
- package/lib/types/integration/contract.d.ts +196 -0
- package/lib/types/integration/host-runner.d.ts +44 -0
- package/lib/types/integration/http.d.ts +79 -0
- package/lib/types/integration/service.d.ts +120 -0
- package/lib/types/integration/transcript-reader.d.ts +100 -0
- package/lib/types/integration/transcript.d.ts +59 -0
- package/lib/types/personal-skills/index.d.ts +2 -2
- package/lib/types/personal-skills/paths.d.ts +15 -3
- package/lib/types/personal-skills/provider.d.ts +14 -2
- package/lib/types/personal-skills/service.d.ts +89 -14
- package/lib/types/prompt-notes.d.ts +37 -0
- package/lib/types/provenance/document-preview.d.ts +28 -0
- package/lib/types/provenance/file-preview.d.ts +69 -2
- package/lib/types/qa-tools/catalog.d.ts +1 -1
- package/lib/types/qa-tools/docs-tools.d.ts +160 -0
- package/lib/types/qa-tools/file-delete-gate.d.ts +42 -0
- package/lib/types/qa-tools/file-delete.d.ts +32 -0
- package/lib/types/secure-session.d.ts +52 -1
- package/lib/types/shared/documents.d.ts +20 -0
- package/lib/types/shared/integration-tokens.d.ts +24 -0
- package/lib/types/types.d.ts +263 -3
- package/lib/types/ui-mode.d.ts +18 -0
- package/lib/ui-mode.js +22 -0
- package/lib/ui-mode.js.map +1 -0
- package/package.json +12 -10
|
@@ -3,6 +3,70 @@ import { useCallback, useEffect, useState } from "react";
|
|
|
3
3
|
import { ADMIN_ROLE_LABELS, formatCount, formatStamp } from "../copy.js";
|
|
4
4
|
import { Badge, FilterField, Pager, Stamp, adminErrorMessage, useAdminResource, } from "../shared.js";
|
|
5
5
|
const PAGE_SIZE = 25;
|
|
6
|
+
/** The Host's floor; the form refuses a shorter password before the round trip. */
|
|
7
|
+
const MIN_PASSWORD_LENGTH = 8;
|
|
8
|
+
/**
|
|
9
|
+
* The forgotten-password queue: an account asked for a reset from the sign-in
|
|
10
|
+
* screen and nobody has answered it yet.
|
|
11
|
+
*
|
|
12
|
+
* It renders only while somebody is waiting. A permanently empty panel would
|
|
13
|
+
* teach operators to ignore it, and this one has to be noticed: answering a row
|
|
14
|
+
* signs every session of that account out, so the new password must be handed
|
|
15
|
+
* over deliberately.
|
|
16
|
+
*/
|
|
17
|
+
function PasswordResetQueue(props) {
|
|
18
|
+
const { api, token } = props;
|
|
19
|
+
const [requests, setRequests] = useState([]);
|
|
20
|
+
const [drafts, setDrafts] = useState({});
|
|
21
|
+
const [busy, setBusy] = useState();
|
|
22
|
+
const [error, setError] = useState();
|
|
23
|
+
const [notice, setNotice] = useState();
|
|
24
|
+
const load = useCallback(async () => {
|
|
25
|
+
const result = await api.passwordResetRequests(token);
|
|
26
|
+
if (!result.ok) {
|
|
27
|
+
setError(adminErrorMessage(result.error));
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
setError(undefined);
|
|
31
|
+
setRequests(result.value);
|
|
32
|
+
}, [api, token]);
|
|
33
|
+
useEffect(() => {
|
|
34
|
+
void load();
|
|
35
|
+
}, [load]);
|
|
36
|
+
const reset = async (userId) => {
|
|
37
|
+
const password = (drafts[userId] ?? "").trim();
|
|
38
|
+
if (password.length < MIN_PASSWORD_LENGTH) {
|
|
39
|
+
setNotice(undefined);
|
|
40
|
+
setError(`Пароль должен быть не короче ${MIN_PASSWORD_LENGTH} символов.`);
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
setBusy(userId);
|
|
44
|
+
const result = await api.resetPassword(token, userId, password);
|
|
45
|
+
setBusy(undefined);
|
|
46
|
+
if (!result.ok) {
|
|
47
|
+
setNotice(undefined);
|
|
48
|
+
setError(adminErrorMessage(result.error));
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
setError(undefined);
|
|
52
|
+
setNotice(`Новый пароль для ${result.value.user.email} установлен — передайте его пользователю. Заявка закрыта, его сессии завершены.`);
|
|
53
|
+
// The row is gone on the Host's side; the read is what proves it, and it
|
|
54
|
+
// also picks up a request that arrived while this one was being answered.
|
|
55
|
+
setDrafts((current) => ({ ...current, [userId]: "" }));
|
|
56
|
+
await load();
|
|
57
|
+
};
|
|
58
|
+
if (requests.length === 0)
|
|
59
|
+
return null;
|
|
60
|
+
return (_jsxs("div", { className: "dsh-qa-admin__panel", children: [_jsxs("div", { className: "dsh-qa-admin__panel-head", children: [_jsx("h2", { children: "\u0417\u0430\u044F\u0432\u043A\u0438 \u043D\u0430 \u0441\u0431\u0440\u043E\u0441 \u043F\u0430\u0440\u043E\u043B\u044F" }), _jsx(Badge, { tone: "warning", children: requests.length === 1
|
|
61
|
+
? "1 заявка"
|
|
62
|
+
: `${String(requests.length)} заявок` })] }), _jsx("p", { className: "dsh-qa-admin__panel-note", children: "\u041F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044C \u043D\u0435 \u043C\u043E\u0436\u0435\u0442 \u0432\u043E\u0439\u0442\u0438 \u0438 \u043F\u0440\u043E\u0441\u0438\u0442 \u043D\u043E\u0432\u044B\u0439 \u043F\u0430\u0440\u043E\u043B\u044C. \u0421\u0431\u0440\u043E\u0441 \u0437\u0430\u0432\u0435\u0440\u0448\u0430\u0435\u0442 \u0432\u0441\u0435 \u0435\u0433\u043E \u0441\u0435\u0441\u0441\u0438\u0438: \u0441\u0442\u0430\u0440\u044B\u0439 \u043F\u0430\u0440\u043E\u043B\u044C \u0438 \u0432\u044B\u0434\u0430\u043D\u043D\u044B\u0435 \u0442\u043E\u043A\u0435\u043D\u044B \u043F\u0435\u0440\u0435\u0441\u0442\u0430\u044E\u0442 \u0434\u0435\u0439\u0441\u0442\u0432\u043E\u0432\u0430\u0442\u044C." }), error === undefined ? null : (_jsx("p", { className: "dsh-qa-admin__error", role: "alert", children: error })), notice === undefined ? null : (_jsx("p", { className: "dsh-qa-admin__notice", role: "status", children: notice })), _jsxs("table", { className: "dsh-qa-admin__table", children: [_jsx("thead", { children: _jsxs("tr", { children: [_jsx("th", { children: "\u041F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044C" }), _jsx("th", { children: "\u0417\u0430\u043F\u0440\u043E\u0448\u0435\u043D" }), _jsx("th", { children: "\u0417\u0430\u044F\u0432\u043E\u043A" }), _jsx("th", { children: "\u041D\u043E\u0432\u044B\u0439 \u043F\u0430\u0440\u043E\u043B\u044C" }), _jsx("th", {})] }) }), _jsx("tbody", { children: requests.map((request) => (_jsxs("tr", { children: [_jsxs("td", { children: [_jsx("strong", { children: request.displayName }), _jsx("small", { children: request.email }), request.disabled ? (_jsx("small", { children: _jsx(Badge, { tone: "negative", children: "\u041E\u0442\u043A\u043B\u044E\u0447\u0451\u043D" }) })) : null] }), _jsxs("td", { children: [_jsx(Stamp, { value: request.lastRequestedAt }), _jsxs("small", { children: ["\u043F\u0435\u0440\u0432\u044B\u0439 \u0437\u0430\u043F\u0440\u043E\u0441: ", formatStamp(request.requestedAt)] })] }), _jsx("td", { children: formatCount(request.requestCount) }), _jsx("td", { children: _jsx("input", { type: "password", autoComplete: "new-password", minLength: MIN_PASSWORD_LENGTH, placeholder: "\u043D\u0435 \u043A\u043E\u0440\u043E\u0447\u0435 8 \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432", disabled: busy === request.userId, value: drafts[request.userId] ?? "", onChange: (event) => {
|
|
63
|
+
const value = event.currentTarget.value;
|
|
64
|
+
setDrafts((current) => ({
|
|
65
|
+
...current,
|
|
66
|
+
[request.userId]: value,
|
|
67
|
+
}));
|
|
68
|
+
} }) }), _jsx("td", { children: _jsx("button", { type: "button", disabled: busy === request.userId, onClick: () => void reset(request.userId), children: busy === request.userId ? "Сбрасываю…" : "Сбросить" }) })] }, request.userId))) })] })] }));
|
|
69
|
+
}
|
|
6
70
|
/**
|
|
7
71
|
* Users: the table an administrator triages from, and the detail page that
|
|
8
72
|
* separates authorization from the QA subrole assignment — an admin may work
|
|
@@ -40,7 +104,7 @@ export function AdminUsers(props) {
|
|
|
40
104
|
useEffect(() => {
|
|
41
105
|
void load(null, false);
|
|
42
106
|
}, [load]);
|
|
43
|
-
return (_jsxs("section", { className: "dsh-qa-admin__page", "aria-label": "\u041F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u0438", children: [_jsx("div", { className: "dsh-qa-admin__title-row", children: _jsxs("div", { children: [_jsx("h1", { children: "\u041F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u0438" }), _jsx("p", { children: "\u0410\u0434\u043C\u0438\u043D\u0438\u0441\u0442\u0440\u0430\u0442\u0438\u0432\u043D\u0430\u044F \u0440\u043E\u043B\u044C \u0438 \u043F\u0440\u043E\u0444\u0438\u043B\u0438 \u0430\u0433\u0435\u043D\u0442\u0430 \u043D\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u044E\u0442\u0441\u044F \u043D\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043C\u043E. \u0423\u0434\u0430\u043B\u0435\u043D\u0438\u044F \u043D\u0435\u0442: \u0438\u0441\u0442\u043E\u0440\u0438\u044E \u0440\u0430\u0437\u0433\u043E\u0432\u043E\u0440\u043E\u0432 \u0441\u043E\u0445\u0440\u0430\u043D\u044F\u0435\u0442 \u043E\u0442\u043A\u043B\u044E\u0447\u0435\u043D\u0438\u0435." })] }) }), _jsxs("div", { className: "dsh-qa-admin__filters", children: [_jsx(FilterField, { label: "\u041F\u043E\u0438\u0441\u043A", children: _jsx("input", { type: "search", value: search, placeholder: "\u0418\u043C\u044F \u0438\u043B\u0438 \u0430\u0434\u0440\u0435\u0441", onChange: (event) => setSearch(event.currentTarget.value) }) }), _jsx(FilterField, { label: "\u0420\u043E\u043B\u044C", children: _jsxs("select", { value: role, onChange: (event) => setRole(event.currentTarget.value), children: [_jsx("option", { value: "", children: "\u041B\u044E\u0431\u0430\u044F" }), _jsx("option", { value: "admin", children: "\u0410\u0434\u043C\u0438\u043D\u0438\u0441\u0442\u0440\u0430\u0442\u043E\u0440" }), _jsx("option", { value: "reviewer", children: "\u0420\u0435\u0432\u044C\u044E\u0435\u0440" }), _jsx("option", { value: "user", children: "\u041F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044C" })] }) }), _jsx(FilterField, { label: "\u0421\u0442\u0430\u0442\u0443\u0441", children: _jsxs("select", { value: status, onChange: (event) => setStatus(event.currentTarget.value), children: [_jsx("option", { value: "", children: "\u041B\u044E\u0431\u043E\u0439" }), _jsx("option", { value: "active", children: "\u0410\u043A\u0442\u0438\u0432\u043D\u044B\u0435" }), _jsx("option", { value: "disabled", children: "\u041E\u0442\u043A\u043B\u044E\u0447\u0451\u043D\u043D\u044B\u0435" })] }) })] }), error === undefined ? null : (_jsx("p", { className: "dsh-qa-admin__error", role: "alert", children: error })), rows.length === 0 ? (_jsx("p", { className: "dsh-qa-admin__empty", children: loading ? "Загружаю…" : "Никого не нашлось." })) : (_jsxs("table", { className: "dsh-qa-admin__table", children: [_jsx("thead", { children: _jsxs("tr", { children: [_jsx("th", { children: "\u041F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044C" }), _jsx("th", { children: "\u0421\u0442\u0430\u0442\u0443\u0441" }), _jsx("th", { children: "\u0420\u043E\u043B\u044C" }), _jsx("th", { children: "\u041F\u0440\u043E\u0444\u0438\u043B\u0438 QA" }), _jsx("th", { children: "\u041F\u043E\u0441\u043B\u0435\u0434\u043D\u0438\u0439 \u0432\u0445\u043E\u0434" }), _jsx("th", { children: "\u0420\u0430\u0437\u0433\u043E\u0432\u043E\u0440\u044B" }), _jsx("th", { children: "\u041E\u0446\u0435\u043D\u043A\u0438" }), _jsx("th", {})] }) }), _jsx("tbody", { children: rows.map((row) => (_jsxs("tr", { children: [_jsxs("td", { children: [_jsx("strong", { children: row.fullName === "" ? row.displayName : row.fullName }), _jsx("small", { children: row.email })] }), _jsx("td", { children: row.disabled ? (_jsx(Badge, { tone: "negative", children: "\u041E\u0442\u043A\u043B\u044E\u0447\u0451\u043D" })) : (_jsx(Badge, { tone: "positive", children: "\u0410\u043A\u0442\u0438\u0432\u0435\u043D" })) }), _jsx("td", { children: ADMIN_ROLE_LABELS[row.role] }), _jsx("td", { children: row.access.allowedSubroles.join(", ") || "—" }), _jsx("td", { children: _jsx(Stamp, { value: row.lastLoginAt ?? undefined }) }), _jsx("td", { children: formatCount(row.conversations) }), _jsx("td", { children: formatCount(row.feedbackGiven) }), _jsx("td", { children: _jsx("button", { type: "button", onClick: () => props.onOpenUser(row.id), children: "\u041E\u0442\u043A\u0440\u044B\u0442\u044C" }) })] }, row.id))) })] })), _jsx(Pager, { total: total, shown: rows.length, hasMore: cursor !== null, loading: loading, onMore: () => void load(cursor, true), onReset: () => void load(null, false) })] }));
|
|
107
|
+
return (_jsxs("section", { className: "dsh-qa-admin__page", "aria-label": "\u041F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u0438", children: [_jsx("div", { className: "dsh-qa-admin__title-row", children: _jsxs("div", { children: [_jsx("h1", { children: "\u041F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u0438" }), _jsx("p", { children: "\u0410\u0434\u043C\u0438\u043D\u0438\u0441\u0442\u0440\u0430\u0442\u0438\u0432\u043D\u0430\u044F \u0440\u043E\u043B\u044C \u0438 \u043F\u0440\u043E\u0444\u0438\u043B\u0438 \u0430\u0433\u0435\u043D\u0442\u0430 \u043D\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u044E\u0442\u0441\u044F \u043D\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043C\u043E. \u0423\u0434\u0430\u043B\u0435\u043D\u0438\u044F \u043D\u0435\u0442: \u0438\u0441\u0442\u043E\u0440\u0438\u044E \u0440\u0430\u0437\u0433\u043E\u0432\u043E\u0440\u043E\u0432 \u0441\u043E\u0445\u0440\u0430\u043D\u044F\u0435\u0442 \u043E\u0442\u043A\u043B\u044E\u0447\u0435\u043D\u0438\u0435." })] }) }), _jsx(PasswordResetQueue, { api: props.api, token: props.token }), _jsxs("div", { className: "dsh-qa-admin__filters", children: [_jsx(FilterField, { label: "\u041F\u043E\u0438\u0441\u043A", children: _jsx("input", { type: "search", value: search, placeholder: "\u0418\u043C\u044F \u0438\u043B\u0438 \u0430\u0434\u0440\u0435\u0441", onChange: (event) => setSearch(event.currentTarget.value) }) }), _jsx(FilterField, { label: "\u0420\u043E\u043B\u044C", children: _jsxs("select", { value: role, onChange: (event) => setRole(event.currentTarget.value), children: [_jsx("option", { value: "", children: "\u041B\u044E\u0431\u0430\u044F" }), _jsx("option", { value: "admin", children: "\u0410\u0434\u043C\u0438\u043D\u0438\u0441\u0442\u0440\u0430\u0442\u043E\u0440" }), _jsx("option", { value: "reviewer", children: "\u0420\u0435\u0432\u044C\u044E\u0435\u0440" }), _jsx("option", { value: "user", children: "\u041F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044C" })] }) }), _jsx(FilterField, { label: "\u0421\u0442\u0430\u0442\u0443\u0441", children: _jsxs("select", { value: status, onChange: (event) => setStatus(event.currentTarget.value), children: [_jsx("option", { value: "", children: "\u041B\u044E\u0431\u043E\u0439" }), _jsx("option", { value: "active", children: "\u0410\u043A\u0442\u0438\u0432\u043D\u044B\u0435" }), _jsx("option", { value: "disabled", children: "\u041E\u0442\u043A\u043B\u044E\u0447\u0451\u043D\u043D\u044B\u0435" })] }) })] }), error === undefined ? null : (_jsx("p", { className: "dsh-qa-admin__error", role: "alert", children: error })), rows.length === 0 ? (_jsx("p", { className: "dsh-qa-admin__empty", children: loading ? "Загружаю…" : "Никого не нашлось." })) : (_jsxs("table", { className: "dsh-qa-admin__table", children: [_jsx("thead", { children: _jsxs("tr", { children: [_jsx("th", { children: "\u041F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044C" }), _jsx("th", { children: "\u0421\u0442\u0430\u0442\u0443\u0441" }), _jsx("th", { children: "\u0420\u043E\u043B\u044C" }), _jsx("th", { children: "\u041F\u0440\u043E\u0444\u0438\u043B\u0438 QA" }), _jsx("th", { children: "\u041F\u043E\u0441\u043B\u0435\u0434\u043D\u0438\u0439 \u0432\u0445\u043E\u0434" }), _jsx("th", { children: "\u0420\u0430\u0437\u0433\u043E\u0432\u043E\u0440\u044B" }), _jsx("th", { children: "\u041E\u0446\u0435\u043D\u043A\u0438" }), _jsx("th", {})] }) }), _jsx("tbody", { children: rows.map((row) => (_jsxs("tr", { children: [_jsxs("td", { children: [_jsx("strong", { children: row.fullName === "" ? row.displayName : row.fullName }), _jsx("small", { children: row.email })] }), _jsx("td", { children: row.disabled ? (_jsx(Badge, { tone: "negative", children: "\u041E\u0442\u043A\u043B\u044E\u0447\u0451\u043D" })) : (_jsx(Badge, { tone: "positive", children: "\u0410\u043A\u0442\u0438\u0432\u0435\u043D" })) }), _jsx("td", { children: ADMIN_ROLE_LABELS[row.role] }), _jsx("td", { children: row.access.allowedSubroles.join(", ") || "—" }), _jsx("td", { children: _jsx(Stamp, { value: row.lastLoginAt ?? undefined }) }), _jsx("td", { children: formatCount(row.conversations) }), _jsx("td", { children: formatCount(row.feedbackGiven) }), _jsx("td", { children: _jsx("button", { type: "button", onClick: () => props.onOpenUser(row.id), children: "\u041E\u0442\u043A\u0440\u044B\u0442\u044C" }) })] }, row.id))) })] })), _jsx(Pager, { total: total, shown: rows.length, hasMore: cursor !== null, loading: loading, onMore: () => void load(cursor, true), onReset: () => void load(null, false) })] }));
|
|
44
108
|
}
|
|
45
109
|
/** Authorization, assignment and the activity counters of one account. */
|
|
46
110
|
export function AdminUserDetail(props) {
|
|
@@ -58,8 +122,11 @@ export function AdminUserDetail(props) {
|
|
|
58
122
|
setError(adminErrorMessage(result.error));
|
|
59
123
|
return;
|
|
60
124
|
}
|
|
125
|
+
// The update response is the fresh detail: applying it directly both
|
|
126
|
+
// confirms the edit on the next render and skips a second heavy read —
|
|
127
|
+
// a reload here used to re-ask for everything the card has just paid for.
|
|
61
128
|
setError(undefined);
|
|
62
|
-
|
|
129
|
+
resource.apply(result.value);
|
|
63
130
|
};
|
|
64
131
|
if (resource.error !== undefined) {
|
|
65
132
|
return (_jsxs("section", { className: "dsh-qa-admin__page", children: [_jsx("p", { className: "dsh-qa-admin__error", role: "alert", children: adminErrorMessage(resource.error) }), _jsx("button", { type: "button", onClick: props.onBack, children: "\u041A \u0441\u043F\u0438\u0441\u043A\u0443" })] }));
|
|
@@ -94,6 +161,10 @@ export function AdminUserDetail(props) {
|
|
|
94
161
|
? ""
|
|
95
162
|
: ` (плюс ${formatCount(row.grantableTools)} по навыкам)`}${row.deniedTools === 0
|
|
96
163
|
? ""
|
|
97
|
-
: ` (минус ${formatCount(row.deniedTools)} запрещённых)`}, ${formatCount(row.skills)} навыков` })] }, row.subroleId))) })] }), _jsxs("section", { className: "dsh-qa-admin__panel", children: [_jsx("h2", { children: "\u0410\u043A\u0442\u0438\u0432\u043D\u043E\u0441\u0442\u044C" }), _jsxs("dl", { className: "dsh-qa-admin__facts", children: [_jsx("dt", { children: "\u0420\u0430\u0437\u0433\u043E\u0432\u043E\u0440\u044B" }), _jsx("dd", { children: formatCount(detail.activity.conversations) }), _jsx("dt", { children: "\u0421\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u044F" }), _jsx("dd", { children:
|
|
164
|
+
: ` (минус ${formatCount(row.deniedTools)} запрещённых)`}, ${formatCount(row.skills)} навыков` })] }, row.subroleId))) })] }), _jsxs("section", { className: "dsh-qa-admin__panel", children: [_jsx("h2", { children: "\u0410\u043A\u0442\u0438\u0432\u043D\u043E\u0441\u0442\u044C" }), _jsxs("dl", { className: "dsh-qa-admin__facts", children: [_jsx("dt", { children: "\u0420\u0430\u0437\u0433\u043E\u0432\u043E\u0440\u044B" }), _jsx("dd", { children: formatCount(detail.activity.conversations) }), _jsx("dt", { children: "\u0421\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u044F" }), _jsx("dd", { children: _jsx("span", { title: detail.activity.messages === null
|
|
165
|
+
? "Считается на странице «Разговоры»"
|
|
166
|
+
: undefined, children: detail.activity.messages === null
|
|
167
|
+
? "—"
|
|
168
|
+
: formatCount(detail.activity.messages) }) }), _jsx("dt", { children: "\u041F\u043E\u043B\u043E\u0436\u0438\u0442\u0435\u043B\u044C\u043D\u044B\u0435 \u043E\u0446\u0435\u043D\u043A\u0438" }), _jsx("dd", { children: formatCount(detail.activity.positiveRatings) }), _jsx("dt", { children: "\u041D\u0435\u0433\u0430\u0442\u0438\u0432\u043D\u044B\u0435 \u043E\u0446\u0435\u043D\u043A\u0438" }), _jsx("dd", { children: formatCount(detail.activity.negativeRatings) })] }), _jsxs("div", { className: "dsh-qa-admin__actions", children: [_jsx("button", { type: "button", onClick: () => props.onOpenConversations(detail.user.id), children: "\u0420\u0430\u0437\u0433\u043E\u0432\u043E\u0440\u044B \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044F" }), _jsx("button", { type: "button", onClick: props.onOpenAudit, children: "\u0418\u0441\u0442\u043E\u0440\u0438\u044F \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u0439" })] })] })] })] }));
|
|
98
169
|
}
|
|
99
170
|
//# sourceMappingURL=Users.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Users.js","sourceRoot":"","sources":["../../../../src/client/admin/pages/Users.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Users.js","sourceRoot":"","sources":["../../../../src/client/admin/pages/Users.tsx"],"names":[],"mappings":"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"}
|
|
@@ -57,7 +57,11 @@ export function parseAdminRoute(pathname, routePath) {
|
|
|
57
57
|
case "subroles":
|
|
58
58
|
return { page: "subroles" };
|
|
59
59
|
case "skills":
|
|
60
|
-
|
|
60
|
+
// The audience table and the file editor share a section name because
|
|
61
|
+
// they are two views of one thing; the editor is a path below it.
|
|
62
|
+
return rest[0] === "editor"
|
|
63
|
+
? { page: "skill-files" }
|
|
64
|
+
: { page: "skills" };
|
|
61
65
|
case "common":
|
|
62
66
|
return { page: "common" };
|
|
63
67
|
case "conversations":
|
|
@@ -101,6 +105,8 @@ export function adminPath(routePath, route, search = "") {
|
|
|
101
105
|
return "/access/subroles";
|
|
102
106
|
case "skills":
|
|
103
107
|
return "/access/skills";
|
|
108
|
+
case "skill-files":
|
|
109
|
+
return "/skills/editor";
|
|
104
110
|
case "common":
|
|
105
111
|
return "/access/common";
|
|
106
112
|
case "conversations":
|
|
@@ -129,6 +135,7 @@ export function adminSectionOf(route) {
|
|
|
129
135
|
return "users";
|
|
130
136
|
case "subroles":
|
|
131
137
|
case "skills":
|
|
138
|
+
case "skill-files":
|
|
132
139
|
case "common":
|
|
133
140
|
return "access";
|
|
134
141
|
case "conversation":
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"routes.js","sourceRoot":"","sources":["../../../src/client/admin/routes.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;
|
|
1
|
+
{"version":3,"file":"routes.js","sourceRoot":"","sources":["../../../src/client/admin/routes.ts"],"names":[],"mappings":"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"}
|
|
@@ -46,6 +46,10 @@ export function useAdminResource(load, deps) {
|
|
|
46
46
|
const [data, setData] = useState();
|
|
47
47
|
const [error, setError] = useState();
|
|
48
48
|
const [loading, setLoading] = useState(true);
|
|
49
|
+
const apply = useCallback((value) => {
|
|
50
|
+
setData(value);
|
|
51
|
+
setError(undefined);
|
|
52
|
+
}, []);
|
|
49
53
|
const reload = useCallback(async () => {
|
|
50
54
|
setLoading(true);
|
|
51
55
|
try {
|
|
@@ -70,7 +74,7 @@ export function useAdminResource(load, deps) {
|
|
|
70
74
|
useEffect(() => {
|
|
71
75
|
void reload();
|
|
72
76
|
}, [reload]);
|
|
73
|
-
return { data, error, loading, reload };
|
|
77
|
+
return { data, error, loading, reload, apply };
|
|
74
78
|
}
|
|
75
79
|
/** A status chip; the modifier class carries the semantic colour. */
|
|
76
80
|
export function Badge(props) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared.js","sourceRoot":"","sources":["../../../src/client/admin/shared.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEzD,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAE3C,uDAAuD;AACvD,MAAM,UAAU,YAAY,CAAC,KAAc;IACzC,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC5C,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,SAAS,IAAI,KAAK,EAAE,CAAC;QACtE,OAAO,MAAM,CAAE,KAAwC,CAAC,OAAO,IAAI,KAAK,CAAC,CAAC;IAC5E,CAAC;IACD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAc;IAC9C,MAAM,OAAO,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;IACpC,IAAI,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QACvC,OAAO,wCAAwC,CAAC;IAClD,CAAC;IACD,IAAI,wBAAwB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3C,OAAO,iCAAiC,CAAC;IAC3C,CAAC;IACD,IAAI,8BAA8B,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QACjD,OAAO,0CAA0C,CAAC;IACpD,CAAC;IACD,IAAI,+BAA+B,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QAClD,OAAO,qCAAqC,CAAC;IAC/C,CAAC;IACD,IAAI,4BAA4B,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QAC/C,OAAO,6EAA6E,CAAC;IACvF,CAAC;IACD,IAAI,qCAAqC,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QACxD,OAAO,6EAA6E,CAAC;IACvF,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAC9B,IAAoC,EACpC,IAAwB;
|
|
1
|
+
{"version":3,"file":"shared.js","sourceRoot":"","sources":["../../../src/client/admin/shared.tsx"],"names":[],"mappings":"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"}
|
|
@@ -14,6 +14,8 @@ export const QA_ADMIN_CONSOLE_STYLES = String.raw `
|
|
|
14
14
|
.dsh-qa-admin__panel h2{margin:0;font-size:15px}
|
|
15
15
|
.dsh-qa-admin__panel h3{margin:14px 0 6px;font-size:13px;color:var(--dsw-alias-label-secondary)}
|
|
16
16
|
.dsh-qa-admin__panel-head{display:flex;align-items:center;justify-content:space-between;gap:12px}
|
|
17
|
+
.dsh-qa-admin__panel-note{margin:0;color:var(--dsw-alias-label-tertiary);font-size:12px;line-height:17px}
|
|
18
|
+
.dsh-qa-admin__notice{margin:0;color:var(--dsh-qa-success);font-size:12px;line-height:17px}
|
|
17
19
|
.dsh-qa-admin__columns{display:grid;grid-template-columns:minmax(0,360px) minmax(0,1fr);gap:18px;align-items:start}
|
|
18
20
|
.dsh-qa-admin__metrics{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:12px}
|
|
19
21
|
.dsh-qa-admin__metric{display:flex;flex-direction:column;gap:2px;padding:14px 16px;border:1px solid var(--dsw-alias-border-l2);border-radius:12px;background:var(--dsw-alias-bg-layer-3)}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"styles.js","sourceRoot":"","sources":["../../../src/client/admin/styles.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,MAAM,CAAC,GAAG,CAAA
|
|
1
|
+
{"version":3,"file":"styles.js","sourceRoot":"","sources":["../../../src/client/admin/styles.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwGhD,CAAC"}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* remains authoritative — these checks exist so a refusal happens before a
|
|
5
5
|
* round trip, not to replace the Host's own admission.
|
|
6
6
|
*/
|
|
7
|
-
import { countTextLines,
|
|
7
|
+
import { countTextLines, fileExtensionOf, hasAcceptedExtension, } from "../attachment-rules.js";
|
|
8
8
|
import { bytesToBase64 } from "./base64.js";
|
|
9
9
|
import { pluralRu } from "./settings/format.js";
|
|
10
10
|
/** Raster formats the host attachment path accepts. */
|
|
@@ -31,8 +31,9 @@ export function attachmentLimits(config) {
|
|
|
31
31
|
};
|
|
32
32
|
}
|
|
33
33
|
/**
|
|
34
|
-
* The file picker's `accept` value: the raster formats plus either
|
|
35
|
-
* configured
|
|
34
|
+
* The file picker's `accept` value: the raster formats plus either every
|
|
35
|
+
* configured extension and the browser's whole `text/*` family, or nothing
|
|
36
|
+
* when file attachments are off.
|
|
36
37
|
* @param limits - attachment policy in effect.
|
|
37
38
|
* @returns the accept attribute value.
|
|
38
39
|
*/
|
|
@@ -63,11 +64,42 @@ function readAsArrayBuffer(file) {
|
|
|
63
64
|
function isTextMediaType(mediaType) {
|
|
64
65
|
return mediaType.toLowerCase().startsWith("text/");
|
|
65
66
|
}
|
|
66
|
-
/**
|
|
67
|
-
|
|
67
|
+
/**
|
|
68
|
+
* Whether a dropped payload may be attached as a file at all. An extension the
|
|
69
|
+
* operator listed is enough on its own: the list is what the deployment can
|
|
70
|
+
* work with, and a stand whose pipeline reads Word documents lists `docx`
|
|
71
|
+
* rather than hoping the browser calls it text.
|
|
72
|
+
*/
|
|
73
|
+
export function acceptsFileAttachment(name, mediaType, limits) {
|
|
68
74
|
if (!limits.textFiles)
|
|
69
75
|
return false;
|
|
70
|
-
return (
|
|
76
|
+
return (hasAcceptedExtension(name, limits.extensions) || isTextMediaType(mediaType));
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Why one non-image file is refused, in the visitor's terms, or null when it is
|
|
80
|
+
* accepted. The copy used to name a fixed list ("md, txt, log и другие") that
|
|
81
|
+
* had nothing to do with the deployment's own setting, which is how a stand
|
|
82
|
+
* able to read Word documents ended up looking like a text-only one.
|
|
83
|
+
* @param name - display file name.
|
|
84
|
+
* @param mediaType - MIME type the browser reported.
|
|
85
|
+
* @param limits - attachment policy in effect.
|
|
86
|
+
* @returns the refusal message, or null.
|
|
87
|
+
*/
|
|
88
|
+
export function fileAttachmentRefusal(name, mediaType, limits) {
|
|
89
|
+
if (acceptsFileAttachment(name, mediaType, limits))
|
|
90
|
+
return null;
|
|
91
|
+
if (!limits.textFiles) {
|
|
92
|
+
return "Файловые вложения выключены: можно приложить только изображения.";
|
|
93
|
+
}
|
|
94
|
+
// `fileExtensionOf` reports the whole leaf when there is no dot, and a
|
|
95
|
+
// dotfile's leaf is its own name: both mean "no extension to match on", and
|
|
96
|
+
// saying "формат .noextension" about them would be nonsense.
|
|
97
|
+
const leaf = name.trim().toLowerCase();
|
|
98
|
+
const extension = fileExtensionOf(name);
|
|
99
|
+
if (extension === "" || extension === leaf) {
|
|
100
|
+
return "У файла нет расширения, а принять его можно только по расширению из списка разрешённых.";
|
|
101
|
+
}
|
|
102
|
+
return `Формат «.${extension}» не разрешён на этом стенде. Список разрешённых расширений задаёт оператор.`;
|
|
71
103
|
}
|
|
72
104
|
function imageDraftFromBlob(blob, name) {
|
|
73
105
|
return readAsArrayBuffer(blob).then((buffer) => ({
|
|
@@ -93,11 +125,9 @@ export async function draftFromFile(file, limits) {
|
|
|
93
125
|
}
|
|
94
126
|
return imageDraftFromBlob(file, file.name);
|
|
95
127
|
}
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
: "Поддерживаются изображения PNG, JPEG, WebP и GIF.";
|
|
100
|
-
}
|
|
128
|
+
const refusal = fileAttachmentRefusal(file.name, file.type, limits);
|
|
129
|
+
if (refusal !== null)
|
|
130
|
+
return refusal;
|
|
101
131
|
if (file.size > limits.maxFileBytes) {
|
|
102
132
|
return `Файл слишком большой (лимит ${formatFileSize(limits.maxFileBytes)}).`;
|
|
103
133
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"attachments.js","sourceRoot":"","sources":["../../src/client/attachments.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,
|
|
1
|
+
{"version":3,"file":"attachments.js","sourceRoot":"","sources":["../../src/client/attachments.ts"],"names":[],"mappings":"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"}
|
package/lib/client/base64.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Browser-side
|
|
2
|
+
* Browser-side base64. Encoding is chunked so `String.fromCharCode` never
|
|
3
3
|
* crosses the engine's argument limit on large attachments.
|
|
4
4
|
*/
|
|
5
5
|
/**
|
|
@@ -13,4 +13,25 @@ export function bytesToBase64(bytes) {
|
|
|
13
13
|
}
|
|
14
14
|
return btoa(binary);
|
|
15
15
|
}
|
|
16
|
+
/**
|
|
17
|
+
* Decode base64 the Host sent for a file the panel could not read as text.
|
|
18
|
+
*
|
|
19
|
+
* A malformed body is tolerated rather than thrown on: the caller is about to
|
|
20
|
+
* hand the bytes to a download or an image tag, and a partial file is a better
|
|
21
|
+
* outcome than losing the panel to an exception. `atob` still rejects input
|
|
22
|
+
* that is not base64 at all; the caller keeps that refusal.
|
|
23
|
+
*
|
|
24
|
+
* @param value - base64 text, with or without a data-URL prefix.
|
|
25
|
+
* @returns the decoded bytes.
|
|
26
|
+
*/
|
|
27
|
+
export function base64ToBytes(value) {
|
|
28
|
+
const separator = value.indexOf(",");
|
|
29
|
+
const body = (separator === -1 ? value : value.slice(separator + 1)).replace(/\s+/gu, "");
|
|
30
|
+
const binary = atob(body);
|
|
31
|
+
const bytes = new Uint8Array(binary.length);
|
|
32
|
+
for (let index = 0; index < binary.length; index += 1) {
|
|
33
|
+
bytes[index] = binary.charCodeAt(index);
|
|
34
|
+
}
|
|
35
|
+
return bytes;
|
|
36
|
+
}
|
|
16
37
|
//# sourceMappingURL=base64.js.map
|
package/lib/client/base64.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base64.js","sourceRoot":"","sources":["../../src/client/base64.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,KAAiB;IAC7C,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,KAAK,IAAI,MAAM,EAAE,CAAC;QAC1D,MAAM,IAAI,MAAM,CAAC,YAAY,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC;IAC1E,CAAC;IACD,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC;AACtB,CAAC"}
|
|
1
|
+
{"version":3,"file":"base64.js","sourceRoot":"","sources":["../../src/client/base64.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,KAAiB;IAC7C,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,KAAK,IAAI,MAAM,EAAE,CAAC;QAC1D,MAAM,IAAI,MAAM,CAAC,YAAY,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC;IAC1E,CAAC;IACD,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC;AACtB,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,aAAa,CAAC,KAAa;IACzC,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACrC,MAAM,IAAI,GAAG,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAC1E,OAAO,EACP,EAAE,CACH,CAAC;IACF,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC5C,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACtD,KAAK,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IAC1C,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
@@ -17,7 +17,7 @@ export function collectSubagents(byId, rootId, now = Date.now()) {
|
|
|
17
17
|
title: summary.blank ? "Субагент" : summary.displayTitle,
|
|
18
18
|
running: summary.running,
|
|
19
19
|
completed: summary.completed === true,
|
|
20
|
-
meta: relativeTime(summary.updatedAt, now),
|
|
20
|
+
meta: [relativeTime(summary.updatedAt, now)],
|
|
21
21
|
});
|
|
22
22
|
}
|
|
23
23
|
return rows.sort((left, right) => left.running === right.running ? 0 : left.running ? -1 : 1);
|
|
@@ -26,15 +26,18 @@ export function collectSubagents(byId, rootId, now = Date.now()) {
|
|
|
26
26
|
export function QaAgentsDrawer({ agents, activeId, onView, onClose, }) {
|
|
27
27
|
return (_jsxs("aside", { className: "dsh-qa-agents", "aria-label": "\u0421\u0443\u0431\u0430\u0433\u0435\u043D\u0442\u044B \u0447\u0430\u0442\u0430", children: [_jsxs("div", { className: "dsh-qa-agents__head", children: [_jsxs("span", { children: ["\u0421\u0443\u0431\u0430\u0433\u0435\u043D\u0442\u044B (", agents.length, ")"] }), _jsx("button", { type: "button", "aria-label": "\u0417\u0430\u043A\u0440\u044B\u0442\u044C \u0441\u043F\u0438\u0441\u043E\u043A \u0441\u0443\u0431\u0430\u0433\u0435\u043D\u0442\u043E\u0432", title: "\u0417\u0430\u043A\u0440\u044B\u0442\u044C", onClick: onClose, children: _jsx("svg", { viewBox: "0 0 16 16", "aria-hidden": "true", children: _jsx("path", { d: "m4 4 8 8m0-8-8 8" }) }) })] }), _jsx("div", { className: "dsh-qa-agents__list", children: agents.map((agent) => {
|
|
28
28
|
const active = activeId === agent.id;
|
|
29
|
+
const status = agent.running
|
|
30
|
+
? ["выполняется"]
|
|
31
|
+
: agent.completed
|
|
32
|
+
? ["завершён"]
|
|
33
|
+
: agent.meta;
|
|
29
34
|
return (_jsxs("button", { type: "button", className: active
|
|
30
35
|
? "dsh-qa-agents__item dsh-qa-agents__item--active"
|
|
31
36
|
: "dsh-qa-agents__item", onClick: () => onView(agent.id, agent.title), children: [_jsx("span", { className: agent.running
|
|
32
37
|
? "dsh-qa-agents__dot dsh-qa-agents__dot--running"
|
|
33
|
-
: "dsh-qa-agents__dot", "aria-hidden": "true" }), _jsxs("span", { className: "dsh-qa-agents__text", children: [_jsx("span", { className: "dsh-qa-agents__title", children: agent.title }), _jsx("span", { className:
|
|
34
|
-
? "
|
|
35
|
-
: agent.
|
|
36
|
-
? "завершён"
|
|
37
|
-
: agent.meta })] }), _jsx("span", { className: "dsh-qa-agents__open", children: active ? "открыт" : "смотреть" })] }, agent.id));
|
|
38
|
+
: "dsh-qa-agents__dot", "aria-hidden": "true" }), _jsxs("span", { className: "dsh-qa-agents__text", children: [_jsx("span", { className: "dsh-qa-agents__title", children: agent.title }), _jsx("span", { className: status.length > 1
|
|
39
|
+
? "dsh-qa-agents__meta dsh-qa-agents__meta-list"
|
|
40
|
+
: "dsh-qa-agents__meta", children: status.map((part, index) => (_jsx("span", { children: part }, index))) })] }), _jsx("span", { className: "dsh-qa-agents__open", children: active ? "открыт" : "смотреть" })] }, agent.id));
|
|
38
41
|
}) })] }));
|
|
39
42
|
}
|
|
40
43
|
//# sourceMappingURL=QaAgentsDrawer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QaAgentsDrawer.js","sourceRoot":"","sources":["../../../src/client/components/QaAgentsDrawer.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"QaAgentsDrawer.js","sourceRoot":"","sources":["../../../src/client/components/QaAgentsDrawer.tsx"],"names":[],"mappings":"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"}
|
|
@@ -18,6 +18,6 @@ export const QaApproval = memo(function QaApproval(props) {
|
|
|
18
18
|
});
|
|
19
19
|
};
|
|
20
20
|
return (_jsx("div", { className: "dsh-qa-approvals", "aria-label": "\u0417\u0430\u043F\u0440\u043E\u0441\u044B \u043D\u0430 \u043E\u0434\u043E\u0431\u0440\u0435\u043D\u0438\u0435", children: approvals.map((approval) => (_jsxs("section", { className: "dsh-qa-approval", "aria-live": "polite", children: [_jsxs("p", { className: "dsh-qa-approval__strip", children: [_jsx("span", { className: "dsh-qa-approval__dot", "aria-hidden": "true" }), "\u041E\u0436\u0438\u0434\u0430\u0435\u0442 \u043E\u0434\u043E\u0431\u0440\u0435\u043D\u0438\u044F"] }), _jsx("p", { className: "dsh-qa-approval__reason", children: approval.reason ??
|
|
21
|
-
`Инструмент «${approval.toolName}» запрашивает разрешение.` }), _jsxs("p", { className: "dsh-qa-approval__tool", children: [_jsx("code", { children: approval.toolName }), approval.delegated ? "
|
|
21
|
+
`Инструмент «${approval.toolName}» запрашивает разрешение.` }), _jsxs("p", { className: "dsh-qa-approval__tool", children: [_jsx("code", { children: approval.toolName }), approval.delegated ? (_jsx("span", { className: "dsh-qa-approval__delegated", children: "\u0437\u0430\u043F\u0440\u043E\u0441\u0438\u043B \u0441\u0443\u0431\u0430\u0433\u0435\u043D\u0442" })) : null] }), _jsxs("div", { className: "dsh-qa-approval__actions", children: [_jsx("button", { type: "button", className: "dsh-qa-approval__button", disabled: answering === approval.id, onClick: () => answer(approval.id, "rejected"), children: "\u041E\u0442\u043A\u043B\u043E\u043D\u0438\u0442\u044C" }), _jsx("button", { type: "button", className: "dsh-qa-approval__button dsh-qa-approval__button--primary", disabled: answering === approval.id, onClick: () => answer(approval.id, "allowed-once"), children: "\u0420\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044C \u043E\u0434\u0438\u043D \u0440\u0430\u0437" })] })] }, approval.id))) }));
|
|
22
22
|
});
|
|
23
23
|
//# sourceMappingURL=QaApproval.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QaApproval.js","sourceRoot":"","sources":["../../../src/client/components/QaApproval.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAWvC;;;;;GAKG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,UAAU,CAAC,KAAsB;IACvE,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAC;IAChE,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;IAClC,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACxC,MAAM,MAAM,GAAG,CAAC,SAAiB,EAAE,QAA4B,EAAE,EAAE;QACjE,YAAY,CAAC,SAAS,CAAC,CAAC;QACxB,KAAK,KAAK,CAAC,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE;YACpD,YAAY,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;QACtE,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;IACF,OAAO,CACL,cAAK,SAAS,EAAC,kBAAkB,gBAAY,gHAAsB,YAChE,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAC3B,mBAEE,SAAS,EAAC,iBAAiB,eACjB,QAAQ,aAElB,aAAG,SAAS,EAAC,wBAAwB,aACnC,eAAM,SAAS,EAAC,sBAAsB,iBAAa,MAAM,GAAG,yGAE1D,EACJ,YAAG,SAAS,EAAC,yBAAyB,YACnC,QAAQ,CAAC,MAAM;wBACd,eAAe,QAAQ,CAAC,QAAQ,2BAA2B,GAC3D,EACJ,aAAG,SAAS,EAAC,uBAAuB,aAClC,yBAAO,QAAQ,CAAC,QAAQ,GAAQ,EAC/B,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"QaApproval.js","sourceRoot":"","sources":["../../../src/client/components/QaApproval.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAWvC;;;;;GAKG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,UAAU,CAAC,KAAsB;IACvE,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAC;IAChE,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;IAClC,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACxC,MAAM,MAAM,GAAG,CAAC,SAAiB,EAAE,QAA4B,EAAE,EAAE;QACjE,YAAY,CAAC,SAAS,CAAC,CAAC;QACxB,KAAK,KAAK,CAAC,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE;YACpD,YAAY,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;QACtE,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;IACF,OAAO,CACL,cAAK,SAAS,EAAC,kBAAkB,gBAAY,gHAAsB,YAChE,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAC3B,mBAEE,SAAS,EAAC,iBAAiB,eACjB,QAAQ,aAElB,aAAG,SAAS,EAAC,wBAAwB,aACnC,eAAM,SAAS,EAAC,sBAAsB,iBAAa,MAAM,GAAG,yGAE1D,EACJ,YAAG,SAAS,EAAC,yBAAyB,YACnC,QAAQ,CAAC,MAAM;wBACd,eAAe,QAAQ,CAAC,QAAQ,2BAA2B,GAC3D,EACJ,aAAG,SAAS,EAAC,uBAAuB,aAClC,yBAAO,QAAQ,CAAC,QAAQ,GAAQ,EAC/B,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CACpB,eAAM,SAAS,EAAC,4BAA4B,kHAErC,CACR,CAAC,CAAC,CAAC,IAAI,IACN,EACJ,eAAK,SAAS,EAAC,0BAA0B,aACvC,iBACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAC,yBAAyB,EACnC,QAAQ,EAAE,SAAS,KAAK,QAAQ,CAAC,EAAE,EACnC,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,EAAE,UAAU,CAAC,uEAGvC,EACT,iBACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAC,0DAA0D,EACpE,QAAQ,EAAE,SAAS,KAAK,QAAQ,CAAC,EAAE,EACnC,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,EAAE,cAAc,CAAC,mHAG3C,IACL,KArCD,QAAQ,CAAC,EAAE,CAsCR,CACX,CAAC,GACE,CACP,CAAC;AACJ,CAAC,CAAC,CAAC"}
|
|
@@ -13,28 +13,37 @@ function Logo({ logoUrl }) {
|
|
|
13
13
|
*/
|
|
14
14
|
export function QaAuthGate(props) {
|
|
15
15
|
const { snapshot, accounts } = props;
|
|
16
|
-
const
|
|
17
|
-
const
|
|
16
|
+
const gate = snapshot.stage === "gate" ? snapshot : undefined;
|
|
17
|
+
const mode = gate?.mode ?? "login";
|
|
18
|
+
const busy = gate?.busy ?? false;
|
|
19
|
+
const notice = gate?.notice ?? null;
|
|
18
20
|
const [email, setEmail] = useState("");
|
|
19
21
|
const [password, setPassword] = useState("");
|
|
20
22
|
const showRegister = props.allowRegistration;
|
|
23
|
+
// The reset card is the same card with one field: the request only needs an
|
|
24
|
+
// address, and asking for a password the user does not have would be absurd.
|
|
25
|
+
const reset = mode === "reset";
|
|
21
26
|
const submit = (event) => {
|
|
22
27
|
event.preventDefault();
|
|
23
28
|
if (busy)
|
|
24
29
|
return;
|
|
25
|
-
const operation =
|
|
26
|
-
? accounts.
|
|
27
|
-
:
|
|
30
|
+
const operation = reset
|
|
31
|
+
? accounts.requestPasswordReset(email)
|
|
32
|
+
: mode === "register"
|
|
33
|
+
? accounts.register(email, password)
|
|
34
|
+
: accounts.login(email, password);
|
|
28
35
|
void operation;
|
|
29
36
|
};
|
|
30
|
-
return (_jsx("main", { className: "dsh-qa-surface dsh-qa-auth", "aria-label": "\u0412\u0445\u043E\u0434 \u0432 \u043F\u043E\u043C\u043E\u0449\u043D\u0438\u043A", children: _jsxs("form", { className: "dsh-qa-auth__card", onSubmit: submit, children: [_jsxs("div", { className: "dsh-qa-auth__brand", children: [_jsx(Logo, { logoUrl: props.logoUrl }), _jsx("h1", { children: props.title })] }), showRegister ? (_jsxs("div", { className: "dsh-qa-auth__tabs", role: "tablist", "aria-label": "\u0412\u0445\u043E\u0434 \u0438\u043B\u0438 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u044F", children: [_jsx("button", { type: "button", role: "tab", "aria-selected": mode === "login", className: mode === "login"
|
|
37
|
+
return (_jsx("main", { className: "dsh-qa-surface dsh-qa-auth", "aria-label": "\u0412\u0445\u043E\u0434 \u0432 \u043F\u043E\u043C\u043E\u0449\u043D\u0438\u043A", children: _jsxs("form", { className: "dsh-qa-auth__card", onSubmit: submit, children: [_jsxs("div", { className: "dsh-qa-auth__brand", children: [_jsx(Logo, { logoUrl: props.logoUrl }), _jsx("h1", { children: props.title })] }), reset ? (_jsx("p", { className: "dsh-qa-auth__lead", children: "\u0423\u043A\u0430\u0436\u0438\u0442\u0435 email: \u0437\u0430\u044F\u0432\u043A\u0443 \u0443\u0432\u0438\u0434\u0438\u0442 \u043E\u043F\u0435\u0440\u0430\u0442\u043E\u0440 \u0438 \u0441\u0431\u0440\u043E\u0441\u0438\u0442 \u043F\u0430\u0440\u043E\u043B\u044C. \u041F\u043E\u0447\u0442\u0430 \u0441 \u0441\u0441\u044B\u043B\u043A\u043E\u0439 \u043D\u0430 \u044D\u0442\u043E\u043C \u0441\u0442\u0435\u043D\u0434\u0435 \u043D\u0435 \u043D\u0430\u0441\u0442\u0440\u043E\u0435\u043D\u0430." })) : null, showRegister && !reset ? (_jsxs("div", { className: "dsh-qa-auth__tabs", role: "tablist", "aria-label": "\u0412\u0445\u043E\u0434 \u0438\u043B\u0438 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u044F", children: [_jsx("button", { type: "button", role: "tab", "aria-selected": mode === "login", className: mode === "login"
|
|
31
38
|
? "dsh-qa-auth__tab dsh-qa-auth__tab--active"
|
|
32
39
|
: "dsh-qa-auth__tab", onClick: () => accounts.setMode("login"), children: "\u0412\u0445\u043E\u0434" }), _jsx("button", { type: "button", role: "tab", "aria-selected": mode === "register", className: mode === "register"
|
|
33
40
|
? "dsh-qa-auth__tab dsh-qa-auth__tab--active"
|
|
34
|
-
: "dsh-qa-auth__tab", onClick: () => accounts.setMode("register"), children: "\u0420\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u044F" })] })) : null, _jsxs("label", { className: "dsh-qa-auth__field", children: [_jsx("span", { children: "Email" }), _jsx("input", { type: "email", name: "email", autoComplete: "email", required: true, disabled: busy, value: email, onChange: (event) => setEmail(event.currentTarget.value) })] }), _jsxs("label", { className: "dsh-qa-auth__field", children: [_jsx("span", { children: "\u041F\u0430\u0440\u043E\u043B\u044C" }), _jsx("input", { type: "password", name: "password", autoComplete: mode === "register" ? "new-password" : "current-password", required: true, minLength: 8, disabled: busy, value: password, onChange: (event) => setPassword(event.currentTarget.value) })] }),
|
|
41
|
+
: "dsh-qa-auth__tab", onClick: () => accounts.setMode("register"), children: "\u0420\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u044F" })] })) : null, _jsxs("label", { className: "dsh-qa-auth__field", children: [_jsx("span", { children: "Email" }), _jsx("input", { type: "email", name: "email", autoComplete: "email", required: true, disabled: busy, value: email, onChange: (event) => setEmail(event.currentTarget.value) })] }), reset ? null : (_jsxs("label", { className: "dsh-qa-auth__field", children: [_jsx("span", { children: "\u041F\u0430\u0440\u043E\u043B\u044C" }), _jsx("input", { type: "password", name: "password", autoComplete: mode === "register" ? "new-password" : "current-password", required: true, minLength: 8, disabled: busy, value: password, onChange: (event) => setPassword(event.currentTarget.value) })] })), gate !== undefined && gate.error !== null ? (_jsx("p", { className: "dsh-qa-auth__error", role: "alert", children: gate.error })) : null, notice === null ? null : (_jsx("p", { className: "dsh-qa-auth__notice", role: "status", children: notice })), _jsx("button", { type: "submit", className: "dsh-qa-auth__submit", disabled: busy, children: busy
|
|
35
42
|
? "Подождите…"
|
|
36
|
-
:
|
|
37
|
-
? "
|
|
38
|
-
: "
|
|
43
|
+
: reset
|
|
44
|
+
? "Отправить заявку"
|
|
45
|
+
: mode === "register"
|
|
46
|
+
? "Зарегистрироваться"
|
|
47
|
+
: "Войти" }), _jsx("button", { type: "button", className: "dsh-qa-auth__link", disabled: busy, onClick: () => accounts.setMode(reset ? "login" : "reset"), children: reset ? "Вернуться ко входу" : "Забыли пароль?" })] }) }));
|
|
39
48
|
}
|
|
40
49
|
//# sourceMappingURL=QaAuthGate.js.map
|