1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
|
import { Opt } from "lib/option"
import Setter from "./Setter"
import icons from "lib/icons"
export type RowProps<T> = {
opt: Opt<T>
title: string
note?: string
type?:
| "number"
| "color"
| "float"
| "object"
| "string"
| "enum"
| "boolean"
| "img"
| "font"
enums?: string[]
max?: number
min?: number
}
export default <T>(props: RowProps<T>) => Widget.Box(
{
attribute: { opt: props.opt },
class_name: "row",
tooltip_text: props.note ? `note: ${props.note}` : "",
},
Widget.Box(
{ vertical: true, vpack: "center" },
Widget.Label({
xalign: 0,
class_name: "row-title",
label: props.title,
}),
Widget.Label({
xalign: 0,
class_name: "id",
label: props.opt.id,
}),
),
Widget.Box({ hexpand: true }),
Widget.Box(
{ vpack: "center" },
Setter(props),
),
Widget.Button({
vpack: "center",
class_name: "reset",
child: Widget.Icon(icons.ui.refresh),
on_clicked: () => props.opt.reset(),
sensitive: props.opt.bind().as(v => v !== props.opt.initial),
}),
)
|