* Implemented strict linting standards and prettier formatting config. * More linter fixes and type updates. * More linter updates and type fixes * Remove noisy comments * Linter and type updates * Linter, formatting and type updates. * Linter updates * Type updates * Type updates * fixed all linter errors * Fixed all linting, formatting and type issues. * Resolve merge conflicts.
34 lines
1.0 KiB
TypeScript
34 lines
1.0 KiB
TypeScript
import { Label } from './Label';
|
|
import { Inputter } from './Inputter';
|
|
import icons from 'lib/icons';
|
|
import { RowProps } from 'lib/types/options';
|
|
import { GBox } from 'lib/types/widget';
|
|
|
|
export const Option = <T extends string | number | boolean | object>(
|
|
props: RowProps<T>,
|
|
className: string = '',
|
|
): GBox => {
|
|
const isUnsaved = Variable(false);
|
|
|
|
return Widget.Box({
|
|
class_name: 'option-item',
|
|
hexpand: true,
|
|
children: [
|
|
Widget.Box({
|
|
hpack: 'start',
|
|
vpack: 'center',
|
|
hexpand: true,
|
|
child: Label(props.title, props.subtitle || '', props.subtitleLink),
|
|
}),
|
|
Inputter(props, className, isUnsaved),
|
|
Widget.Button({
|
|
vpack: 'center',
|
|
class_name: 'reset-options',
|
|
child: Widget.Icon(icons.ui.refresh),
|
|
on_clicked: () => props.opt.reset(),
|
|
sensitive: props.opt.bind().as((v) => v !== props.opt.initial),
|
|
}),
|
|
],
|
|
});
|
|
};
|