shelving
Version:
Toolkit for using data in JavaScript.
14 lines (13 loc) • 899 B
JavaScript
import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
import { ArrowRightIcon } from "@heroicons/react/24/solid";
import { useStore } from "../../react/useStore.js";
import { Loading } from "../misc/Loading.js";
import { getButtonClass } from "./Button.js";
import { requireForm } from "./FormContext.js";
/** <button> element that does an asyncronous form action (, getButtonClassdefaults to primary styling). */
export function SubmitButton({ children = SUBMIT_CHILDREN, strong = true, primary = true, ...variants }) {
const form = requireForm();
const busy = useStore(form.busy).value;
return (_jsx("button", { type: "submit", disabled: busy, className: getButtonClass({ strong, primary, ...variants }), children: busy ? _jsx(Loading, {}) : children }));
}
const SUBMIT_CHILDREN = (_jsxs(_Fragment, { children: ["Save", _jsx(ArrowRightIcon, {})] }));