UNPKG

shelving

Version:

Toolkit for using data in JavaScript.

14 lines (13 loc) 899 B
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, {})] }));