import { Accessor } from "ags"; import { tr } from "../i18n/intl"; import { CustomDialog } from "./CustomDialog"; import { Astal, Gtk } from "ags/gtk4"; export type EntryPopupProps = { title: string | Accessor; text?: string | Accessor; cancelText?: string | Accessor; acceptText?: string | Accessor; closeOnAccept?: boolean; entryPlaceholder?: string | Accessor; onAccept: (userInput: string) => void; onCancel?: () => void; onFinish?: () => void; isPassword?: boolean | Accessor; }; export function EntryPopup(props: EntryPopupProps): Astal.Window { props.closeOnAccept = props.closeOnAccept ?? true; let entered: boolean = false; function onActivate(entry: Gtk.Entry|Gtk.PasswordEntry) { props.closeOnAccept && window.close(); entered = true; props.onAccept(entry.text); entry.text = ""; } const entry = props.isPassword ? as Gtk.PasswordEntry : as Gtk.Entry; const window = { entered = true; props.onAccept(entry.text); entry.text = ""; } } ]} onFinish={() => { !entered && props.onCancel?.() props.onFinish?.(); }} /> as Astal.Window; return window; }