UNPKG

@payfit/unity-components

Version:

108 lines (107 loc) 4.08 kB
import { CircularIconButton as e } from "../icon-button/CircularIconButton.js"; import { DialogButton as t } from "./parts/DialogActions/DialogButton.js"; import { Children as n, isValidElement as r, useContext as i } from "react"; import { uyTv as a } from "@payfit/unity-themes"; import { jsx as o, jsxs as s } from "react/jsx-runtime"; import { useIntl as c } from "react-intl"; import { useId as l } from "react-aria/useId"; import { Dialog as u, DialogContext as d, DialogTrigger as f, OverlayTriggerStateContext as p } from "react-aria-components/Dialog"; import { Modal as m, ModalOverlay as h } from "react-aria-components/Modal"; //#region src/components/dialog/Dialog.tsx var g = a({ slots: { overlay: [ "uy:@container", "uy:fixed uy:inset-0 uy:z-30 uy:overflow-y-auto", "uy:min-h-full", "uy:flex uy:items-end uy:md:items-center uy:md:justify-center uy:md:text-center", "uy:bg-utility-backdrop", "uy:data-[entering]:animate-fade-in uy:data-[exiting]:animate-fade-out" ], wrapper: [ "uy:w-full uy:max-h-[95dvh] uy:md:max-h-[82dvh] uy:relative uy:isolate", "uy:m-0", "uy:rounded-t-300 uy:md:rounded-200", "uy:overflow-hidden uy:bg-white uy:p-300 uy:pt-400 uy:md:p-400", "uy:text-left uy:align-middle uy:shadow-400", "uy:bg-surface-neutral", "uy:data-[entering]:animate-slide-up-fade-in uy:data-[exiting]:animate-slide-down-fade-out", "uy:md:[animation-delay:100ms] uy:md:data-[entering]:animate-zoom-in uy:md:data-[exiting]:animate-zoom-out" ], content: [ "uy:group/dialog", "uy:grid", "uy:grid-rows-[auto_minmax(0,1fr)_auto]", "uy:min-h-0 uy:max-h-[calc(95dvh-var(--uy-spacing-400)-var(--uy-spacing-300))]", "uy:outline-none" ], dismissIcon: ["uy:absolute uy:right-200 uy:top-200 uy:z-20"] }, variants: { size: { sm: { wrapper: "uy:md:w-4/12 uy:md:max-w-62.5", content: ["uy:md:max-h-[calc(82dvh-(var(--uy-spacing-400)*2))]"] }, md: { wrapper: "uy:md:w-5/12 uy:md:max-w-80", content: ["uy:md:max-h-[calc(82dvh-(var(--uy-spacing-400)*2))]"] }, lg: { wrapper: "uy:md:w-11/12 uy:md:max-w-[1000px] uy:md:rounded-300 uy:md:pt-9 uy:md:px-500 uy:md:pb-400", content: ["uy:md:max-h-[calc(82dvh-(var(--uy-spacing)*9)-var(--uy-spacing-400))]"], dismissIcon: "uy:md:right-300 uy:md:top-300" } } }, defaultVariants: { size: "md" } }), _ = (e) => n.toArray(e).some((e) => r(e) ? r(e) && e.type === t && e.props.variant === "danger" ? !0 : _(e.props.children) : !1); function v({ children: e, isOpen: t, onOpenChange: n, isDismissable: r = !0, size: i = "md", ...a }) { let s = c(), u = l(), { overlay: f, wrapper: p, content: _, dismissIcon: v } = g({ size: i }); return /* @__PURE__ */ o(h, { isDismissable: r, isOpen: t, onOpenChange: n, className: f(), children: /* @__PURE__ */ o(m, { className: p(), "data-unity-dialog": !0, "data-dd-privacy": "allow", children: /* @__PURE__ */ o(d.Provider, { value: { "aria-describedby": u }, children: /* @__PURE__ */ o(y, { "aria-label": a["aria-label"], dialogContentId: u, contentClassName: _(), dismissIconClassName: v(), dismissButtonLabel: s.formatMessage({ id: "unity:component:common:close:label" }), isDismissable: r, size: i, children: e }) }) }) }); } var y = ({ children: t, dialogContentId: n, contentClassName: r, dismissIconClassName: a, dismissButtonLabel: c, isDismissable: l, size: d, ...f }) => { let m = i(p), h = typeof t == "function" ? t({ close: () => m?.close() }) : t; return /* @__PURE__ */ s(u, { role: _(h) ? "alertdialog" : "dialog", "aria-modal": "true", className: r, "aria-label": f["aria-label"], "aria-describedby": n, "data-unity-slot": "dialog", "data-unity-size": d, children: [l && /* @__PURE__ */ o(e, { icon: "CloseOutlined", color: "content.neutral.low", title: c, className: a, slot: "close", size: "large", asElement: "button" }), h] }); }; v.displayName = "Dialog", f.displayName = "DialogTrigger"; //#endregion export { v as Dialog, f as DialogTrigger, g as dialog };