Added ags
TODO copy ags config
This commit is contained in:
55
roles/ags/files/widget/settings/Row.ts
Normal file
55
roles/ags/files/widget/settings/Row.ts
Normal file
@@ -0,0 +1,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),
|
||||
}),
|
||||
)
|
||||
Reference in New Issue
Block a user