mirror of
https://github.com/misode/misode.github.io.git
synced 2026-04-28 09:18:45 +00:00
Add map node and refactor defaults
This commit is contained in:
@@ -2,21 +2,27 @@ import { AbstractNode, NodeMods, RenderOptions } from "./AbstractNode";
|
||||
import { Path } from "../model/Path";
|
||||
import { TreeView } from "../view/TreeView";
|
||||
|
||||
export interface BooleanNodeMods extends NodeMods<boolean> {
|
||||
force: boolean
|
||||
}
|
||||
|
||||
export class BooleanNode extends AbstractNode<boolean> {
|
||||
constructor(mods?: NodeMods<boolean>) {
|
||||
super(mods)
|
||||
force: boolean
|
||||
|
||||
constructor(mods?: BooleanNodeMods) {
|
||||
super(mods, () => false)
|
||||
this.force = (mods?.force === true)
|
||||
}
|
||||
|
||||
render(path: Path, value: boolean, view: TreeView, options?: RenderOptions) {
|
||||
renderRaw(path: Path, value: boolean, view: TreeView, options?: RenderOptions) {
|
||||
const falseButton = view.registerClick(el => {
|
||||
view.model.set(path, value === false ? undefined : false)
|
||||
view.model.set(path, !this.force && value === false ? undefined : false)
|
||||
})
|
||||
const trueButton = view.registerClick(el => {
|
||||
view.model.set(path, value === true ? undefined : true)
|
||||
view.model.set(path, !this.force && value === true ? undefined : true)
|
||||
})
|
||||
return this.wrap(path, view, `
|
||||
${options?.hideLabel ? `` : `<label>${path.last()}</label>`}
|
||||
return `${options?.hideLabel ? `` : `<label>${path.last()}</label>`}
|
||||
<button${value === false ? ' style="font-weight: bold"' : ' '} data-id="${falseButton}">False</button>
|
||||
<button${value === true ? ' style="font-weight: bold"' : ' '} data-id="${trueButton}">True</button>`)
|
||||
<button${value === true ? ' style="font-weight: bold"' : ' '} data-id="${trueButton}">True</button>`
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user