adwaita-web
Version:
A GTK inspired toolkit designed to build awesome web apps
43 lines (42 loc) • 1.18 kB
JavaScript
import React, { useState } from "react";
import { hasKey } from "../utils/hasKey";
import useControlled from "../utils/useControlled";
import { PageSwitcher } from "./PageSwitcher";
import { Popover } from "./Popover";
function PopoverMenu({
children,
pages: getPages,
open: openProp,
onChangeOpen,
...rest
}) {
const [page, setPage] = useState(0);
const [isOpen, setOpen] = useControlled(openProp, false, onChangeOpen);
const controls = {
close: () => setOpen(false),
back: () => setPage(0),
open: () => setOpen(true),
change: (key) => setPage(pages.findIndex((p) => typeof p === "object" && p !== null && hasKey(p, "key") && p.key === key))
};
const pages = getPages(controls);
const content = /* @__PURE__ */ React.createElement(PageSwitcher, {
expand: true,
transition: "horizontal",
pages,
activePage: page,
mainPage: 0,
useMainPageDimensions: "width"
});
return /* @__PURE__ */ React.createElement(Popover, {
placement: "bottom",
...rest,
open: isOpen,
content,
onOpen: controls.open,
onClose: controls.close,
onDidClose: controls.back
}, children);
}
export {
PopoverMenu
};