@codeworker.br/govbr-tw-react
Version:
Biblioteca de componentes React usando Tailwind CSS que implementa o Padrão Digital de Governo.
37 lines (36 loc) • 2.21 kB
JavaScript
var __rest = (this && this.__rest) || function (s, e) {
var t = {};
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
t[p] = s[p];
if (s != null && typeof Object.getOwnPropertySymbols === "function")
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
t[p[i]] = s[p[i]];
}
return t;
};
import { jsx as _jsx } from "react/jsx-runtime";
import { createContext, useContext, useState } from "react";
import flyoutContentVariants from "./variants";
import BASE_CLASSNAMES from "../../config/baseClassNames";
import { cn, getUIDClassName } from "../../libs/utils";
const FlyOutContext = createContext({});
const FlyOut = (_a) => {
var { children, className } = _a, props = __rest(_a, ["children", "className"]);
const [open, toggle] = useState(false);
const suffixCn = getUIDClassName();
return (_jsx(FlyOutContext.Provider, { value: { open, toggle, suffixCn }, children: _jsx("div", Object.assign({ className: cn(className, BASE_CLASSNAMES.flyout.root, "relative") }, props, { children: children })) }));
};
const FlyOutToggle = (_a) => {
var { children, className } = _a, props = __rest(_a, ["children", "className"]);
const { open, toggle, suffixCn } = useContext(FlyOutContext);
return (_jsx("span", Object.assign({ className: cn(className, BASE_CLASSNAMES.flyout.toggle), onClick: () => toggle(!open), role: "button", "aria-expanded": open, "aria-controls": `${BASE_CLASSNAMES.flyout.content}-${suffixCn}` }, props, { children: children })));
};
const FlyOutContent = (_a) => {
var { children, className, position = "bottom-left" } = _a, props = __rest(_a, ["children", "className", "position"]);
const { open, suffixCn } = useContext(FlyOutContext);
return (open && (_jsx("div", Object.assign({ className: cn(className, flyoutContentVariants({ position }), BASE_CLASSNAMES.flyout.content) }, props, { id: `${BASE_CLASSNAMES.flyout.content}-${suffixCn}`, children: children }))));
};
FlyOut.Toggle = FlyOutToggle;
FlyOut.Content = FlyOutContent;
export default FlyOut;