swarm-ui: a todo switched from clear to upsert drops its prefix flag
This commit is contained in:
parent
06f3e76329
commit
fb8aa23e66
5 changed files with 34 additions and 12 deletions
|
|
@ -200,6 +200,20 @@ export function reparent(
|
|||
};
|
||||
}
|
||||
|
||||
// A todo with its op switched. A clear carries no text, and only a clear may
|
||||
// be a prefix, so each is reset where the new op has no place for it.
|
||||
export function withOp(
|
||||
node: Extract<FlowNode, { kind: "todo" }>,
|
||||
op: "upsert" | "clear",
|
||||
): Extract<FlowNode, { kind: "todo" }> {
|
||||
return {
|
||||
...node,
|
||||
op,
|
||||
text: op === "clear" ? "" : node.text,
|
||||
prefix: op === "clear" ? node.prefix : false,
|
||||
};
|
||||
}
|
||||
|
||||
// The node with `next.id` swapped for `next`. A node keeps its place and its
|
||||
// kind-class: the source stays the source, and nothing with children becomes
|
||||
// a todo.
|
||||
|
|
|
|||
|
|
@ -185,7 +185,7 @@ export function FlowEditorPage({
|
|||
reload and drop my edits
|
||||
</Button>
|
||||
<Button onClick={() => void load(true)}>
|
||||
keep my edits on top of the latest
|
||||
keep my edits (replaces this flow's latest version)
|
||||
</Button>
|
||||
</div>
|
||||
) : null}
|
||||
|
|
|
|||
|
|
@ -16,6 +16,7 @@ import {
|
|||
replaceNode,
|
||||
type Edit,
|
||||
type Limits,
|
||||
withOp,
|
||||
} from "./FlowDraft.js";
|
||||
import {
|
||||
kindValues,
|
||||
|
|
@ -237,14 +238,7 @@ function TodoFields({
|
|||
label="op"
|
||||
value={node.op}
|
||||
options={opList}
|
||||
onChange={(op) =>
|
||||
onChange({
|
||||
...node,
|
||||
op: op as TodoNode["op"],
|
||||
// A clear carries no text.
|
||||
text: op === "clear" ? "" : node.text,
|
||||
})
|
||||
}
|
||||
onChange={(op) => onChange(withOp(node, op as TodoNode["op"]))}
|
||||
/>
|
||||
<SelectField
|
||||
id={`${keyPrefix}-to-kind`}
|
||||
|
|
|
|||
Loading…
Reference in a new issue