ФУНКЦИИ - МЕЖПРОЕКТНАЯ КОММУНИКАЦИЯ: заголовки чекеров в деталях задачи

This commit is contained in:
DCCONSTRUCTIONS 2026-04-27 20:28:42 +03:00
parent b4f9c58eb5
commit 6da9818826
2 changed files with 19 additions and 1 deletions

View File

@ -132,6 +132,21 @@ export const IssueStructuredContentBlocks = observer(function IssueStructuredCon
/>
</div>
<div className="mb-3">
<input
type="text"
value={block.title}
onChange={(event) => updateBlockDraft(block.id, { title: event.target.value })}
onBlur={() => {
const latestBlock = getLatestBlock(block.id);
if (latestBlock) saveBlocks(draftBlocks.map((item) => (item.id === block.id ? latestBlock : item)));
}}
placeholder="Название чекера"
className="nodedc-modal-input h-11 w-full px-4 text-13 text-primary placeholder:text-placeholder"
disabled={disabled}
/>
</div>
<div className="nodedc-structured-checklist">
{block.items.map((item, index) => (
<div key={item.id} className="nodedc-structured-check-row">

View File

@ -23,6 +23,7 @@ export type TIssueStructuredCheckerItem = {
export type TIssueStructuredCheckerBlock = {
id: string;
type: "checker";
title: string;
items: TIssueStructuredCheckerItem[];
};
@ -49,7 +50,7 @@ const normalizeDetailLayout = (value: unknown): TIssueDetailLayout =>
const sanitizeBlocks = (value: unknown): TIssueStructuredBlock[] => {
if (!Array.isArray(value)) return [];
return value.flatMap((block) => {
return value.flatMap<TIssueStructuredBlock>((block) => {
if (!isRecord(block)) return [];
if (block.type === "text") {
@ -82,6 +83,7 @@ const sanitizeBlocks = (value: unknown): TIssueStructuredBlock[] => {
{
id: typeof block.id === "string" ? block.id : createLocalId(),
type: "checker",
title: typeof block.title === "string" ? block.title : "",
items,
},
];
@ -96,6 +98,7 @@ export const createIssueStructuredBlock = (type: "checker" | "text"): TIssueStru
return {
id: createLocalId(),
type: "checker",
title: "",
items: [{ id: createLocalId(), text: "", checked: false }],
};
}