quirk-ui 0.1.159 → 0.1.160
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/core/components/Modal/Modal.test.cjs +1 -1
- package/dist/core/components/Modal/Modal.test.mjs +25 -64
- package/dist/core/components/Modal/index.cjs +1 -1
- package/dist/core/components/Modal/index.mjs +73 -76
- package/dist/core.d.ts +1 -1
- package/dist/index38.css +1 -1
- package/dist/main.d.ts +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";const t=require("react/jsx-runtime"),e=require("../../../react.esm-C_9Ma9mj.cjs"),n=require("./index.cjs");require("../../../index-CW_Ehh1q.cjs");e.describe("Modal",()=>{e.beforeEach(()=>{document.body.innerHTML=""}),e.describe("Rendering",()=>{e.it("renders the trigger button",()=>{e.render(t.jsx(n.Modal,{content:t.jsx("div",{children:"Modal Content"}),trigger:t.jsx("button",{children:"Open Modal"})})),e.globalExpect(e.screen.getByRole("button",{name:"Open Modal"})).toBeInTheDocument()}),e.it("does not render modal content initially",()=>{e.render(t.jsx(n.Modal,{content:t.jsx("div",{children:"Modal Content"}),trigger:t.jsx("button",{children:"Open Modal"})})),e.globalExpect(e.screen.queryByText("Modal Content")).not.toBeInTheDocument()}),e.it("renders modal content when trigger is clicked",()=>{e.render(t.jsx(n.Modal,{content:t.jsx("div",{children:"Modal Content"}),trigger:t.jsx("button",{children:"Open Modal"})})),e.fireEvent.click(e.screen.getByRole("button",{name:"Open Modal"})),e.globalExpect(e.screen.getByText("Modal Content")).toBeInTheDocument()})}),e.describe("Rich text + form render props",()=>{e.it("renders rich text via renderRichText when richTextBlocks provided",()=>{const o=[{_type:"block",_key:"a"}],r=e.vi.fn(()=>t.jsx("p",{children:"Rich text content"}));e.render(t.jsx(n.Modal,{trigger:t.jsx("button",{children:"Open"}),isOpen:!0,richTextBlocks:o,renderRichText:r})),e.globalExpect(r).toHaveBeenCalledWith({blocks:o}),e.globalExpect(e.screen.getByText("Rich text content")).toBeInTheDocument()}),e.it("renders rich text inside .intro wrapper",()=>{const o=[{_type:"block",_key:"a"}];e.render(t.jsx(n.Modal,{trigger:t.jsx("button",{children:"Open"}),isOpen:!0,richTextBlocks:o,renderRichText:()=>t.jsx("p",{children:"Intro text"})})),e.globalExpect(document.querySelector(".intro")).toBeInTheDocument()}),e.it("renders form via renderForm when formData provided",()=>{const o={_id:"form-1",heading:"Contact"},r=e.vi.fn(()=>t.jsx("form",{"data-testid":"the-form"}));e.render(t.jsx(n.Modal,{trigger:t.jsx("button",{children:"Open"}),isOpen:!0,formData:o,renderForm:r})),e.globalExpect(r).toHaveBeenCalledWith(o),e.globalExpect(e.screen.getByTestId("the-form")).toBeInTheDocument()}),e.it("renders both rich text and form together",()=>{const o=[{_type:"block",_key:"a"}],r={_id:"form-1"};e.render(t.jsx(n.Modal,{trigger:t.jsx("button",{children:"Open"}),isOpen:!0,richTextBlocks:o,renderRichText:()=>t.jsx("p",{children:"Intro"}),formData:r,renderForm:()=>t.jsx("form",{"data-testid":"form"})})),e.globalExpect(e.screen.getByText("Intro")).toBeInTheDocument(),e.globalExpect(e.screen.getByTestId("form")).toBeInTheDocument(),e.globalExpect(document.querySelector(".intro")).toBeInTheDocument()}),e.it("explicit content prop takes priority over render props",()=>{const o=[{_type:"block",_key:"a"}],r=e.vi.fn(()=>t.jsx("p",{children:"Should not render"}));e.render(t.jsx(n.Modal,{trigger:t.jsx("button",{children:"Open"}),isOpen:!0,content:t.jsx("p",{children:"Explicit content"}),richTextBlocks:o,renderRichText:r})),e.globalExpect(e.screen.getByText("Explicit content")).toBeInTheDocument(),e.globalExpect(r).not.toHaveBeenCalled()}),e.it("does not render intro when richTextBlocks is empty",()=>{e.render(t.jsx(n.Modal,{trigger:t.jsx("button",{children:"Open"}),isOpen:!0,richTextBlocks:[],renderRichText:()=>t.jsx("p",{children:"Should not render"})})),e.globalExpect(document.querySelector(".intro")).not.toBeInTheDocument()})}),e.describe("Sizes",()=>{e.it("applies small size",()=>{e.render(t.jsx(n.Modal,{content:t.jsx("div",{children:"Content"}),trigger:t.jsx("button",{children:"Open"}),isOpen:!0,size:"sm"})),e.globalExpect(document.querySelector(".container")).toHaveClass("size-sm")}),e.it("applies medium size by default",()=>{e.render(t.jsx(n.Modal,{content:t.jsx("div",{children:"Content"}),trigger:t.jsx("button",{children:"Open"}),isOpen:!0})),e.globalExpect(document.querySelector(".container")).toHaveClass("size-md")}),e.it("applies large size",()=>{e.render(t.jsx(n.Modal,{content:t.jsx("div",{children:"Content"}),trigger:t.jsx("button",{children:"Open"}),isOpen:!0,size:"lg"})),e.globalExpect(document.querySelector(".container")).toHaveClass("size-lg")})}),e.describe("Title",()=>{e.it("renders title when provided",()=>{e.render(t.jsx(n.Modal,{content:t.jsx("div",{children:"Content"}),trigger:t.jsx("button",{children:"Open"}),title:"Modal Title",isOpen:!0})),e.globalExpect(e.screen.getByText("Modal Title")).toBeInTheDocument()}),e.it("does not render title when not provided",()=>{e.render(t.jsx(n.Modal,{content:t.jsx("div",{children:"Content"}),trigger:t.jsx("button",{children:"Open"}),isOpen:!0})),e.globalExpect(document.querySelector(".title")).not.toBeInTheDocument()}),e.it("sets id on title for aria-labelledby",()=>{e.render(t.jsx(n.Modal,{content:t.jsx("div",{children:"Content"}),trigger:t.jsx("button",{children:"Open"}),title:"My Modal",isOpen:!0})),e.globalExpect(e.screen.getByText("My Modal")).toHaveAttribute("id","modal-title")})}),e.describe("Close Button",()=>{e.it("shows close button by default",()=>{e.render(t.jsx(n.Modal,{content:t.jsx("div",{children:"Content"}),trigger:t.jsx("button",{children:"Open"}),isOpen:!0})),e.globalExpect(e.screen.getByRole("button",{name:/close/i})).toBeInTheDocument()}),e.it("hides close button when showCloseButton is false",()=>{e.render(t.jsx(n.Modal,{content:t.jsx("div",{children:"Content"}),trigger:t.jsx("button",{children:"Open"}),isOpen:!0,showCloseButton:!1})),e.globalExpect(e.screen.queryByRole("button",{name:/close/i})).not.toBeInTheDocument()}),e.it("closes modal when close button is clicked",()=>{e.render(t.jsx(n.Modal,{content:t.jsx("div",{children:"Modal Content"}),trigger:t.jsx("button",{children:"Open Modal"})})),e.fireEvent.click(e.screen.getByRole("button",{name:"Open Modal"})),e.globalExpect(e.screen.getByText("Modal Content")).toBeInTheDocument(),e.fireEvent.click(e.screen.getByRole("button",{name:/close/i})),e.globalExpect(e.screen.queryByText("Modal Content")).not.toBeInTheDocument()})}),e.describe("Overlay Click",()=>{e.it("closes modal when clicking overlay by default",()=>{e.render(t.jsx(n.Modal,{content:t.jsx("div",{children:"Modal Content"}),trigger:t.jsx("button",{children:"Open Modal"})})),e.fireEvent.click(e.screen.getByRole("button",{name:"Open Modal"})),e.fireEvent.click(document.querySelector(".overlay")),e.globalExpect(e.screen.queryByText("Modal Content")).not.toBeInTheDocument()}),e.it("does not close when closeOnOverlayClick is false",()=>{e.render(t.jsx(n.Modal,{content:t.jsx("div",{children:"Modal Content"}),trigger:t.jsx("button",{children:"Open Modal"}),closeOnOverlayClick:!1})),e.fireEvent.click(e.screen.getByRole("button",{name:"Open Modal"})),e.fireEvent.click(document.querySelector(".overlay")),e.globalExpect(e.screen.getByText("Modal Content")).toBeInTheDocument()}),e.it("does not close when clicking modal content",()=>{e.render(t.jsx(n.Modal,{content:t.jsx("div",{children:"Modal Content"}),trigger:t.jsx("button",{children:"Open Modal"})})),e.fireEvent.click(e.screen.getByRole("button",{name:"Open Modal"})),e.fireEvent.click(e.screen.getByText("Modal Content")),e.globalExpect(e.screen.getByText("Modal Content")).toBeInTheDocument()})}),e.describe("Escape Key",()=>{e.it("closes modal on Escape key by default",async()=>{e.render(t.jsx(n.Modal,{content:t.jsx("div",{children:"Modal Content"}),trigger:t.jsx("button",{children:"Open Modal"})})),e.fireEvent.click(e.screen.getByRole("button",{name:"Open Modal"})),e.fireEvent.keyDown(document,{key:"Escape"}),await e.waitForWrapper(()=>{e.globalExpect(e.screen.queryByText("Modal Content")).not.toBeInTheDocument()})}),e.it("does not close on Escape if closeOnEscape is false",async()=>{e.render(t.jsx(n.Modal,{content:t.jsx("div",{children:"Modal Content"}),trigger:t.jsx("button",{children:"Open Modal"}),closeOnEscape:!1})),e.fireEvent.click(e.screen.getByRole("button",{name:"Open Modal"})),e.fireEvent.keyDown(document,{key:"Escape"}),await e.waitForWrapper(()=>{e.globalExpect(e.screen.getByText("Modal Content")).toBeInTheDocument()})})}),e.describe("Controlled Mode",()=>{e.it("respects controlled open state",()=>{const{rerender:o}=e.render(t.jsx(n.Modal,{content:t.jsx("div",{children:"Modal Content"}),trigger:t.jsx("button",{children:"Open Modal"}),isOpen:!1}));e.globalExpect(e.screen.queryByText("Modal Content")).not.toBeInTheDocument(),o(t.jsx(n.Modal,{content:t.jsx("div",{children:"Modal Content"}),trigger:t.jsx("button",{children:"Open Modal"}),isOpen:!0})),e.globalExpect(e.screen.getByText("Modal Content")).toBeInTheDocument()}),e.it("calls onOpen when trigger is clicked in controlled mode",()=>{const o=e.vi.fn();e.render(t.jsx(n.Modal,{content:t.jsx("div",{children:"Content"}),trigger:t.jsx("button",{children:"Open"}),isOpen:!1,onOpen:o})),e.fireEvent.click(e.screen.getByRole("button",{name:"Open"})),e.globalExpect(o).toHaveBeenCalled()}),e.it("calls onClose when close button is clicked in controlled mode",()=>{const o=e.vi.fn();e.render(t.jsx(n.Modal,{content:t.jsx("div",{children:"Content"}),trigger:t.jsx("button",{children:"Open"}),isOpen:!0,onClose:o})),e.fireEvent.click(e.screen.getByRole("button",{name:/close/i})),e.globalExpect(o).toHaveBeenCalled()})}),e.describe("Accessibility",()=>{e.it("has dialog role",()=>{e.render(t.jsx(n.Modal,{content:t.jsx("div",{children:"Content"}),trigger:t.jsx("button",{children:"Open"}),isOpen:!0})),e.globalExpect(e.screen.getByRole("dialog")).toBeInTheDocument()}),e.it("has aria-modal attribute",()=>{e.render(t.jsx(n.Modal,{content:t.jsx("div",{children:"Content"}),trigger:t.jsx("button",{children:"Open"}),isOpen:!0})),e.globalExpect(e.screen.getByRole("dialog")).toHaveAttribute("aria-modal","true")}),e.it("links title with aria-labelledby",()=>{e.render(t.jsx(n.Modal,{content:t.jsx("div",{children:"Content"}),trigger:t.jsx("button",{children:"Open"}),title:"My Modal",isOpen:!0})),e.globalExpect(e.screen.getByRole("dialog")).toHaveAttribute("aria-labelledby","modal-title")})}),e.describe("Custom Styling",()=>{e.it("applies custom className to modal",()=>{e.render(t.jsx(n.Modal,{content:t.jsx("div",{children:"Content"}),trigger:t.jsx("button",{children:"Open"}),className:"custom-modal",isOpen:!0})),e.globalExpect(document.querySelector(".modal")).toHaveClass("custom-modal")}),e.it("applies custom className to overlay",()=>{e.render(t.jsx(n.Modal,{content:t.jsx("div",{children:"Content"}),trigger:t.jsx("button",{children:"Open"}),overlayClassName:"custom-overlay",isOpen:!0})),e.globalExpect(document.querySelector(".overlay")).toHaveClass("custom-overlay")}),e.it("applies custom inline styles",()=>{e.render(t.jsx(n.Modal,{content:t.jsx("div",{children:"Content"}),trigger:t.jsx("button",{children:"Open"}),style:{maxWidth:"500px"},isOpen:!0})),e.globalExpect(document.querySelector(".modal").style.maxWidth).toBe("500px")})})});
|
|
1
|
+
"use strict";const t=require("react/jsx-runtime"),e=require("../../../react.esm-C_9Ma9mj.cjs"),n=require("./index.cjs");require("../../../index-CW_Ehh1q.cjs");e.describe("Modal",()=>{e.beforeEach(()=>{document.body.innerHTML=""}),e.describe("Rendering",()=>{e.it("renders the trigger button",()=>{e.render(t.jsx(n.Modal,{content:t.jsx("div",{children:"Modal Content"}),trigger:t.jsx("button",{children:"Open Modal"})})),e.globalExpect(e.screen.getByRole("button",{name:"Open Modal"})).toBeInTheDocument()}),e.it("does not render modal content initially",()=>{e.render(t.jsx(n.Modal,{content:t.jsx("div",{children:"Modal Content"}),trigger:t.jsx("button",{children:"Open Modal"})})),e.globalExpect(e.screen.queryByText("Modal Content")).not.toBeInTheDocument()}),e.it("renders modal content when trigger is clicked",()=>{e.render(t.jsx(n.Modal,{content:t.jsx("div",{children:"Modal Content"}),trigger:t.jsx("button",{children:"Open Modal"})})),e.fireEvent.click(e.screen.getByRole("button",{name:"Open Modal"})),e.globalExpect(e.screen.getByText("Modal Content")).toBeInTheDocument()})}),e.describe("Rich text + form render props",()=>{e.it("renders rich text via renderRichText when richTextBlocks provided",()=>{const o=[{_type:"block",_key:"a"}],r=e.vi.fn(()=>t.jsx("p",{children:"Rich text content"}));e.render(t.jsx(n.Modal,{trigger:t.jsx("button",{children:"Open"}),isOpen:!0,richTextBlocks:o,renderRichText:r})),e.globalExpect(r).toHaveBeenCalledWith({blocks:o}),e.globalExpect(e.screen.getByText("Rich text content")).toBeInTheDocument()}),e.it("renders rich text inside .intro wrapper",()=>{const o=[{_type:"block",_key:"a"}];e.render(t.jsx(n.Modal,{trigger:t.jsx("button",{children:"Open"}),isOpen:!0,richTextBlocks:o,renderRichText:()=>t.jsx("p",{children:"Intro text"})})),e.globalExpect(document.querySelector(".intro")).toBeInTheDocument()}),e.it("renders form via renderForm when formData provided",()=>{const o={_id:"form-1",heading:"Contact"},r=e.vi.fn(()=>t.jsx("form",{"data-testid":"the-form"}));e.render(t.jsx(n.Modal,{trigger:t.jsx("button",{children:"Open"}),isOpen:!0,formData:o,renderForm:r})),e.globalExpect(r).toHaveBeenCalledWith(o),e.globalExpect(e.screen.getByTestId("the-form")).toBeInTheDocument()}),e.it("renders both rich text and form together",()=>{const o=[{_type:"block",_key:"a"}],r={_id:"form-1"};e.render(t.jsx(n.Modal,{trigger:t.jsx("button",{children:"Open"}),isOpen:!0,richTextBlocks:o,renderRichText:()=>t.jsx("p",{children:"Intro"}),formData:r,renderForm:()=>t.jsx("form",{"data-testid":"form"})})),e.globalExpect(e.screen.getByText("Intro")).toBeInTheDocument(),e.globalExpect(e.screen.getByTestId("form")).toBeInTheDocument(),e.globalExpect(document.querySelector(".intro")).toBeInTheDocument()}),e.it("explicit content prop takes priority over render props",()=>{const o=[{_type:"block",_key:"a"}],r=e.vi.fn(()=>t.jsx("p",{children:"Should not render"}));e.render(t.jsx(n.Modal,{trigger:t.jsx("button",{children:"Open"}),isOpen:!0,content:t.jsx("p",{children:"Explicit content"}),richTextBlocks:o,renderRichText:r})),e.globalExpect(e.screen.getByText("Explicit content")).toBeInTheDocument(),e.globalExpect(r).not.toHaveBeenCalled()}),e.it("does not render intro when richTextBlocks is empty",()=>{e.render(t.jsx(n.Modal,{trigger:t.jsx("button",{children:"Open"}),isOpen:!0,richTextBlocks:[],renderRichText:()=>t.jsx("p",{children:"Should not render"})})),e.globalExpect(document.querySelector(".intro")).not.toBeInTheDocument()})}),e.describe("Sizes",()=>{e.it("applies small size",()=>{e.render(t.jsx(n.Modal,{content:t.jsx("div",{children:"Content"}),trigger:t.jsx("button",{children:"Open"}),isOpen:!0,size:"sm"})),e.globalExpect(document.querySelector(".container")).toHaveClass("size-sm")}),e.it("applies medium size by default",()=>{e.render(t.jsx(n.Modal,{content:t.jsx("div",{children:"Content"}),trigger:t.jsx("button",{children:"Open"}),isOpen:!0})),e.globalExpect(document.querySelector(".container")).toHaveClass("size-md")}),e.it("applies large size",()=>{e.render(t.jsx(n.Modal,{content:t.jsx("div",{children:"Content"}),trigger:t.jsx("button",{children:"Open"}),isOpen:!0,size:"lg"})),e.globalExpect(document.querySelector(".container")).toHaveClass("size-lg")})}),e.describe("Title",()=>{e.it("does not render title when not provided",()=>{e.render(t.jsx(n.Modal,{content:t.jsx("div",{children:"Content"}),trigger:t.jsx("button",{children:"Open"}),isOpen:!0})),e.globalExpect(document.querySelector(".title")).not.toBeInTheDocument()})}),e.describe("Close Button",()=>{e.it("shows close button by default",()=>{e.render(t.jsx(n.Modal,{content:t.jsx("div",{children:"Content"}),trigger:t.jsx("button",{children:"Open"}),isOpen:!0})),e.globalExpect(e.screen.getByRole("button",{name:/close/i})).toBeInTheDocument()}),e.it("hides close button when showCloseButton is false",()=>{e.render(t.jsx(n.Modal,{content:t.jsx("div",{children:"Content"}),trigger:t.jsx("button",{children:"Open"}),isOpen:!0,showCloseButton:!1})),e.globalExpect(e.screen.queryByRole("button",{name:/close/i})).not.toBeInTheDocument()}),e.it("closes modal when close button is clicked",()=>{e.render(t.jsx(n.Modal,{content:t.jsx("div",{children:"Modal Content"}),trigger:t.jsx("button",{children:"Open Modal"})})),e.fireEvent.click(e.screen.getByRole("button",{name:"Open Modal"})),e.globalExpect(e.screen.getByText("Modal Content")).toBeInTheDocument(),e.fireEvent.click(e.screen.getByRole("button",{name:/close/i})),e.globalExpect(e.screen.queryByText("Modal Content")).not.toBeInTheDocument()})}),e.describe("Overlay Click",()=>{e.it("closes modal when clicking overlay by default",()=>{e.render(t.jsx(n.Modal,{content:t.jsx("div",{children:"Modal Content"}),trigger:t.jsx("button",{children:"Open Modal"})})),e.fireEvent.click(e.screen.getByRole("button",{name:"Open Modal"})),e.fireEvent.click(document.querySelector(".overlay")),e.globalExpect(e.screen.queryByText("Modal Content")).not.toBeInTheDocument()}),e.it("does not close when closeOnOverlayClick is false",()=>{e.render(t.jsx(n.Modal,{content:t.jsx("div",{children:"Modal Content"}),trigger:t.jsx("button",{children:"Open Modal"}),closeOnOverlayClick:!1})),e.fireEvent.click(e.screen.getByRole("button",{name:"Open Modal"})),e.fireEvent.click(document.querySelector(".overlay")),e.globalExpect(e.screen.getByText("Modal Content")).toBeInTheDocument()}),e.it("does not close when clicking modal content",()=>{e.render(t.jsx(n.Modal,{content:t.jsx("div",{children:"Modal Content"}),trigger:t.jsx("button",{children:"Open Modal"})})),e.fireEvent.click(e.screen.getByRole("button",{name:"Open Modal"})),e.fireEvent.click(e.screen.getByText("Modal Content")),e.globalExpect(e.screen.getByText("Modal Content")).toBeInTheDocument()})}),e.describe("Escape Key",()=>{e.it("closes modal on Escape key by default",async()=>{e.render(t.jsx(n.Modal,{content:t.jsx("div",{children:"Modal Content"}),trigger:t.jsx("button",{children:"Open Modal"})})),e.fireEvent.click(e.screen.getByRole("button",{name:"Open Modal"})),e.fireEvent.keyDown(document,{key:"Escape"}),await e.waitForWrapper(()=>{e.globalExpect(e.screen.queryByText("Modal Content")).not.toBeInTheDocument()})}),e.it("does not close on Escape if closeOnEscape is false",async()=>{e.render(t.jsx(n.Modal,{content:t.jsx("div",{children:"Modal Content"}),trigger:t.jsx("button",{children:"Open Modal"}),closeOnEscape:!1})),e.fireEvent.click(e.screen.getByRole("button",{name:"Open Modal"})),e.fireEvent.keyDown(document,{key:"Escape"}),await e.waitForWrapper(()=>{e.globalExpect(e.screen.getByText("Modal Content")).toBeInTheDocument()})})}),e.describe("Controlled Mode",()=>{e.it("respects controlled open state",()=>{const{rerender:o}=e.render(t.jsx(n.Modal,{content:t.jsx("div",{children:"Modal Content"}),trigger:t.jsx("button",{children:"Open Modal"}),isOpen:!1}));e.globalExpect(e.screen.queryByText("Modal Content")).not.toBeInTheDocument(),o(t.jsx(n.Modal,{content:t.jsx("div",{children:"Modal Content"}),trigger:t.jsx("button",{children:"Open Modal"}),isOpen:!0})),e.globalExpect(e.screen.getByText("Modal Content")).toBeInTheDocument()}),e.it("calls onOpen when trigger is clicked in controlled mode",()=>{const o=e.vi.fn();e.render(t.jsx(n.Modal,{content:t.jsx("div",{children:"Content"}),trigger:t.jsx("button",{children:"Open"}),isOpen:!1,onOpen:o})),e.fireEvent.click(e.screen.getByRole("button",{name:"Open"})),e.globalExpect(o).toHaveBeenCalled()}),e.it("calls onClose when close button is clicked in controlled mode",()=>{const o=e.vi.fn();e.render(t.jsx(n.Modal,{content:t.jsx("div",{children:"Content"}),trigger:t.jsx("button",{children:"Open"}),isOpen:!0,onClose:o})),e.fireEvent.click(e.screen.getByRole("button",{name:/close/i})),e.globalExpect(o).toHaveBeenCalled()})}),e.describe("Accessibility",()=>{e.it("has dialog role",()=>{e.render(t.jsx(n.Modal,{content:t.jsx("div",{children:"Content"}),trigger:t.jsx("button",{children:"Open"}),isOpen:!0})),e.globalExpect(e.screen.getByRole("dialog")).toBeInTheDocument()}),e.it("has aria-modal attribute",()=>{e.render(t.jsx(n.Modal,{content:t.jsx("div",{children:"Content"}),trigger:t.jsx("button",{children:"Open"}),isOpen:!0})),e.globalExpect(e.screen.getByRole("dialog")).toHaveAttribute("aria-modal","true")})}),e.describe("Custom Styling",()=>{e.it("applies custom className to modal",()=>{e.render(t.jsx(n.Modal,{content:t.jsx("div",{children:"Content"}),trigger:t.jsx("button",{children:"Open"}),className:"custom-modal",isOpen:!0})),e.globalExpect(document.querySelector(".modal")).toHaveClass("custom-modal")}),e.it("applies custom className to overlay",()=>{e.render(t.jsx(n.Modal,{content:t.jsx("div",{children:"Content"}),trigger:t.jsx("button",{children:"Open"}),overlayClassName:"custom-overlay",isOpen:!0})),e.globalExpect(document.querySelector(".overlay")).toHaveClass("custom-overlay")}),e.it("applies custom inline styles",()=>{e.render(t.jsx(n.Modal,{content:t.jsx("div",{children:"Content"}),trigger:t.jsx("button",{children:"Open"}),style:{maxWidth:"500px"},isOpen:!0})),e.globalExpect(document.querySelector(".modal").style.maxWidth).toBe("500px")})})});
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { jsx as e } from "react/jsx-runtime";
|
|
2
|
-
import { d, b as h, i as r, r as l, g as t, s as n, f as
|
|
2
|
+
import { d, b as h, i as r, r as l, g as t, s as n, f as i, v as s, w as u } from "../../../react.esm-DjxyacK8.js";
|
|
3
3
|
import { Modal as o } from "./index.mjs";
|
|
4
4
|
import "../../../index-DPGXWTtt.js";
|
|
5
5
|
d("Modal", () => {
|
|
@@ -37,22 +37,22 @@ d("Modal", () => {
|
|
|
37
37
|
trigger: /* @__PURE__ */ e("button", { children: "Open Modal" })
|
|
38
38
|
}
|
|
39
39
|
)
|
|
40
|
-
),
|
|
40
|
+
), i.click(n.getByRole("button", { name: "Open Modal" })), t(n.getByText("Modal Content")).toBeInTheDocument();
|
|
41
41
|
});
|
|
42
42
|
}), d("Rich text + form render props", () => {
|
|
43
43
|
r("renders rich text via renderRichText when richTextBlocks provided", () => {
|
|
44
|
-
const
|
|
44
|
+
const c = [{ _type: "block", _key: "a" }], a = s.fn(() => /* @__PURE__ */ e("p", { children: "Rich text content" }));
|
|
45
45
|
l(
|
|
46
46
|
/* @__PURE__ */ e(
|
|
47
47
|
o,
|
|
48
48
|
{
|
|
49
49
|
trigger: /* @__PURE__ */ e("button", { children: "Open" }),
|
|
50
50
|
isOpen: !0,
|
|
51
|
-
richTextBlocks:
|
|
51
|
+
richTextBlocks: c,
|
|
52
52
|
renderRichText: a
|
|
53
53
|
}
|
|
54
54
|
)
|
|
55
|
-
), t(a).toHaveBeenCalledWith({ blocks:
|
|
55
|
+
), t(a).toHaveBeenCalledWith({ blocks: c }), t(n.getByText("Rich text content")).toBeInTheDocument();
|
|
56
56
|
}), r("renders rich text inside .intro wrapper", () => {
|
|
57
57
|
l(
|
|
58
58
|
/* @__PURE__ */ e(
|
|
@@ -66,18 +66,18 @@ d("Modal", () => {
|
|
|
66
66
|
)
|
|
67
67
|
), t(document.querySelector(".intro")).toBeInTheDocument();
|
|
68
68
|
}), r("renders form via renderForm when formData provided", () => {
|
|
69
|
-
const
|
|
69
|
+
const c = { _id: "form-1", heading: "Contact" }, a = s.fn(() => /* @__PURE__ */ e("form", { "data-testid": "the-form" }));
|
|
70
70
|
l(
|
|
71
71
|
/* @__PURE__ */ e(
|
|
72
72
|
o,
|
|
73
73
|
{
|
|
74
74
|
trigger: /* @__PURE__ */ e("button", { children: "Open" }),
|
|
75
75
|
isOpen: !0,
|
|
76
|
-
formData:
|
|
76
|
+
formData: c,
|
|
77
77
|
renderForm: a
|
|
78
78
|
}
|
|
79
79
|
)
|
|
80
|
-
), t(a).toHaveBeenCalledWith(
|
|
80
|
+
), t(a).toHaveBeenCalledWith(c), t(n.getByTestId("the-form")).toBeInTheDocument();
|
|
81
81
|
}), r("renders both rich text and form together", () => {
|
|
82
82
|
l(
|
|
83
83
|
/* @__PURE__ */ e(
|
|
@@ -93,7 +93,7 @@ d("Modal", () => {
|
|
|
93
93
|
)
|
|
94
94
|
), t(n.getByText("Intro")).toBeInTheDocument(), t(n.getByTestId("form")).toBeInTheDocument(), t(document.querySelector(".intro")).toBeInTheDocument();
|
|
95
95
|
}), r("explicit content prop takes priority over render props", () => {
|
|
96
|
-
const
|
|
96
|
+
const c = [{ _type: "block", _key: "a" }], a = s.fn(() => /* @__PURE__ */ e("p", { children: "Should not render" }));
|
|
97
97
|
l(
|
|
98
98
|
/* @__PURE__ */ e(
|
|
99
99
|
o,
|
|
@@ -101,7 +101,7 @@ d("Modal", () => {
|
|
|
101
101
|
trigger: /* @__PURE__ */ e("button", { children: "Open" }),
|
|
102
102
|
isOpen: !0,
|
|
103
103
|
content: /* @__PURE__ */ e("p", { children: "Explicit content" }),
|
|
104
|
-
richTextBlocks:
|
|
104
|
+
richTextBlocks: c,
|
|
105
105
|
renderRichText: a
|
|
106
106
|
}
|
|
107
107
|
)
|
|
@@ -157,19 +157,7 @@ d("Modal", () => {
|
|
|
157
157
|
), t(document.querySelector(".container")).toHaveClass("size-lg");
|
|
158
158
|
});
|
|
159
159
|
}), d("Title", () => {
|
|
160
|
-
r("
|
|
161
|
-
l(
|
|
162
|
-
/* @__PURE__ */ e(
|
|
163
|
-
o,
|
|
164
|
-
{
|
|
165
|
-
content: /* @__PURE__ */ e("div", { children: "Content" }),
|
|
166
|
-
trigger: /* @__PURE__ */ e("button", { children: "Open" }),
|
|
167
|
-
title: "Modal Title",
|
|
168
|
-
isOpen: !0
|
|
169
|
-
}
|
|
170
|
-
)
|
|
171
|
-
), t(n.getByText("Modal Title")).toBeInTheDocument();
|
|
172
|
-
}), r("does not render title when not provided", () => {
|
|
160
|
+
r("does not render title when not provided", () => {
|
|
173
161
|
l(
|
|
174
162
|
/* @__PURE__ */ e(
|
|
175
163
|
o,
|
|
@@ -180,18 +168,6 @@ d("Modal", () => {
|
|
|
180
168
|
}
|
|
181
169
|
)
|
|
182
170
|
), t(document.querySelector(".title")).not.toBeInTheDocument();
|
|
183
|
-
}), r("sets id on title for aria-labelledby", () => {
|
|
184
|
-
l(
|
|
185
|
-
/* @__PURE__ */ e(
|
|
186
|
-
o,
|
|
187
|
-
{
|
|
188
|
-
content: /* @__PURE__ */ e("div", { children: "Content" }),
|
|
189
|
-
trigger: /* @__PURE__ */ e("button", { children: "Open" }),
|
|
190
|
-
title: "My Modal",
|
|
191
|
-
isOpen: !0
|
|
192
|
-
}
|
|
193
|
-
)
|
|
194
|
-
), t(n.getByText("My Modal")).toHaveAttribute("id", "modal-title");
|
|
195
171
|
});
|
|
196
172
|
}), d("Close Button", () => {
|
|
197
173
|
r("shows close button by default", () => {
|
|
@@ -230,7 +206,7 @@ d("Modal", () => {
|
|
|
230
206
|
trigger: /* @__PURE__ */ e("button", { children: "Open Modal" })
|
|
231
207
|
}
|
|
232
208
|
)
|
|
233
|
-
),
|
|
209
|
+
), i.click(n.getByRole("button", { name: "Open Modal" })), t(n.getByText("Modal Content")).toBeInTheDocument(), i.click(n.getByRole("button", { name: /close/i })), t(n.queryByText("Modal Content")).not.toBeInTheDocument();
|
|
234
210
|
});
|
|
235
211
|
}), d("Overlay Click", () => {
|
|
236
212
|
r("closes modal when clicking overlay by default", () => {
|
|
@@ -242,7 +218,7 @@ d("Modal", () => {
|
|
|
242
218
|
trigger: /* @__PURE__ */ e("button", { children: "Open Modal" })
|
|
243
219
|
}
|
|
244
220
|
)
|
|
245
|
-
),
|
|
221
|
+
), i.click(n.getByRole("button", { name: "Open Modal" })), i.click(document.querySelector(".overlay")), t(n.queryByText("Modal Content")).not.toBeInTheDocument();
|
|
246
222
|
}), r("does not close when closeOnOverlayClick is false", () => {
|
|
247
223
|
l(
|
|
248
224
|
/* @__PURE__ */ e(
|
|
@@ -253,7 +229,7 @@ d("Modal", () => {
|
|
|
253
229
|
closeOnOverlayClick: !1
|
|
254
230
|
}
|
|
255
231
|
)
|
|
256
|
-
),
|
|
232
|
+
), i.click(n.getByRole("button", { name: "Open Modal" })), i.click(document.querySelector(".overlay")), t(n.getByText("Modal Content")).toBeInTheDocument();
|
|
257
233
|
}), r("does not close when clicking modal content", () => {
|
|
258
234
|
l(
|
|
259
235
|
/* @__PURE__ */ e(
|
|
@@ -263,7 +239,7 @@ d("Modal", () => {
|
|
|
263
239
|
trigger: /* @__PURE__ */ e("button", { children: "Open Modal" })
|
|
264
240
|
}
|
|
265
241
|
)
|
|
266
|
-
),
|
|
242
|
+
), i.click(n.getByRole("button", { name: "Open Modal" })), i.click(n.getByText("Modal Content")), t(n.getByText("Modal Content")).toBeInTheDocument();
|
|
267
243
|
});
|
|
268
244
|
}), d("Escape Key", () => {
|
|
269
245
|
r("closes modal on Escape key by default", async () => {
|
|
@@ -275,7 +251,7 @@ d("Modal", () => {
|
|
|
275
251
|
trigger: /* @__PURE__ */ e("button", { children: "Open Modal" })
|
|
276
252
|
}
|
|
277
253
|
)
|
|
278
|
-
),
|
|
254
|
+
), i.click(n.getByRole("button", { name: "Open Modal" })), i.keyDown(document, { key: "Escape" }), await u(() => {
|
|
279
255
|
t(n.queryByText("Modal Content")).not.toBeInTheDocument();
|
|
280
256
|
});
|
|
281
257
|
}), r("does not close on Escape if closeOnEscape is false", async () => {
|
|
@@ -288,13 +264,13 @@ d("Modal", () => {
|
|
|
288
264
|
closeOnEscape: !1
|
|
289
265
|
}
|
|
290
266
|
)
|
|
291
|
-
),
|
|
267
|
+
), i.click(n.getByRole("button", { name: "Open Modal" })), i.keyDown(document, { key: "Escape" }), await u(() => {
|
|
292
268
|
t(n.getByText("Modal Content")).toBeInTheDocument();
|
|
293
269
|
});
|
|
294
270
|
});
|
|
295
271
|
}), d("Controlled Mode", () => {
|
|
296
272
|
r("respects controlled open state", () => {
|
|
297
|
-
const { rerender:
|
|
273
|
+
const { rerender: c } = l(
|
|
298
274
|
/* @__PURE__ */ e(
|
|
299
275
|
o,
|
|
300
276
|
{
|
|
@@ -304,7 +280,7 @@ d("Modal", () => {
|
|
|
304
280
|
}
|
|
305
281
|
)
|
|
306
282
|
);
|
|
307
|
-
t(n.queryByText("Modal Content")).not.toBeInTheDocument(),
|
|
283
|
+
t(n.queryByText("Modal Content")).not.toBeInTheDocument(), c(
|
|
308
284
|
/* @__PURE__ */ e(
|
|
309
285
|
o,
|
|
310
286
|
{
|
|
@@ -315,7 +291,7 @@ d("Modal", () => {
|
|
|
315
291
|
)
|
|
316
292
|
), t(n.getByText("Modal Content")).toBeInTheDocument();
|
|
317
293
|
}), r("calls onOpen when trigger is clicked in controlled mode", () => {
|
|
318
|
-
const
|
|
294
|
+
const c = s.fn();
|
|
319
295
|
l(
|
|
320
296
|
/* @__PURE__ */ e(
|
|
321
297
|
o,
|
|
@@ -323,12 +299,12 @@ d("Modal", () => {
|
|
|
323
299
|
content: /* @__PURE__ */ e("div", { children: "Content" }),
|
|
324
300
|
trigger: /* @__PURE__ */ e("button", { children: "Open" }),
|
|
325
301
|
isOpen: !1,
|
|
326
|
-
onOpen:
|
|
302
|
+
onOpen: c
|
|
327
303
|
}
|
|
328
304
|
)
|
|
329
|
-
),
|
|
305
|
+
), i.click(n.getByRole("button", { name: "Open" })), t(c).toHaveBeenCalled();
|
|
330
306
|
}), r("calls onClose when close button is clicked in controlled mode", () => {
|
|
331
|
-
const
|
|
307
|
+
const c = s.fn();
|
|
332
308
|
l(
|
|
333
309
|
/* @__PURE__ */ e(
|
|
334
310
|
o,
|
|
@@ -336,10 +312,10 @@ d("Modal", () => {
|
|
|
336
312
|
content: /* @__PURE__ */ e("div", { children: "Content" }),
|
|
337
313
|
trigger: /* @__PURE__ */ e("button", { children: "Open" }),
|
|
338
314
|
isOpen: !0,
|
|
339
|
-
onClose:
|
|
315
|
+
onClose: c
|
|
340
316
|
}
|
|
341
317
|
)
|
|
342
|
-
),
|
|
318
|
+
), i.click(n.getByRole("button", { name: /close/i })), t(c).toHaveBeenCalled();
|
|
343
319
|
});
|
|
344
320
|
}), d("Accessibility", () => {
|
|
345
321
|
r("has dialog role", () => {
|
|
@@ -364,21 +340,6 @@ d("Modal", () => {
|
|
|
364
340
|
}
|
|
365
341
|
)
|
|
366
342
|
), t(n.getByRole("dialog")).toHaveAttribute("aria-modal", "true");
|
|
367
|
-
}), r("links title with aria-labelledby", () => {
|
|
368
|
-
l(
|
|
369
|
-
/* @__PURE__ */ e(
|
|
370
|
-
o,
|
|
371
|
-
{
|
|
372
|
-
content: /* @__PURE__ */ e("div", { children: "Content" }),
|
|
373
|
-
trigger: /* @__PURE__ */ e("button", { children: "Open" }),
|
|
374
|
-
title: "My Modal",
|
|
375
|
-
isOpen: !0
|
|
376
|
-
}
|
|
377
|
-
)
|
|
378
|
-
), t(n.getByRole("dialog")).toHaveAttribute(
|
|
379
|
-
"aria-labelledby",
|
|
380
|
-
"modal-title"
|
|
381
|
-
);
|
|
382
343
|
});
|
|
383
344
|
}), d("Custom Styling", () => {
|
|
384
345
|
r("applies custom className to modal", () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require('../../../index38.css');const e=require("react/jsx-runtime"),
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require('../../../index38.css');const e=require("react/jsx-runtime"),c=require("react"),A=require("react-dom"),C=require("../../../x-Dft9NVe_.cjs"),F="_overlay_k02re_2",K="_fadeIn_k02re_1",X="_container_k02re_19",B="_modal_k02re_49",G="_slideUp_k02re_1",H="_closeButton_k02re_60",J="_title_k02re_87",Q="_content_k02re_97",V="_intro_k02re_116",W="_trigger_k02re_121",s={overlay:F,fadeIn:K,container:X,"size-sm":"_size-sm_k02re_26","size-md":"_size-md_k02re_30","size-lg":"_size-lg_k02re_34","size-xl":"_size-xl_k02re_38","size-full":"_size-full_k02re_42",modal:B,slideUp:G,closeButton:H,title:J,content:Q,intro:V,trigger:W},Y=()=>{typeof document<"u"&&(document.body.style.overflow="hidden")},E=()=>{typeof document<"u"&&(document.body.style.overflow="")};function Z({content:v,trigger:x,isOpen:y,onOpen:l,onClose:o,size:p="md",closeOnEscape:k=!0,closeOnOverlayClick:$=!0,showCloseButton:w=!0,className:N,overlayClassName:q,style:S,richTextBlocks:d,renderRichText:g,formData:b,renderForm:h}){const[I,z]=c.useState(!1),f=c.useRef(null),m=y!==void 0,t=m?y:I,L=()=>{m||z(!0),l==null||l()},a=()=>{m||z(!1),o==null||o()},M=()=>t?a():L(),P=()=>{$&&a()};c.useEffect(()=>{if(!k||!t)return;const n=i=>{i.key==="Escape"&&a()};return document.addEventListener("keydown",n),()=>document.removeEventListener("keydown",n)},[t,k]),c.useEffect(()=>(t?Y():E(),()=>E()),[t]),c.useEffect(()=>{if(!t||!f.current)return;const n=f.current,i=n.querySelectorAll('button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])'),r=i[0],u=i[i.length-1],j=_=>{_.key==="Tab"&&(_.shiftKey?document.activeElement===r&&(_.preventDefault(),u==null||u.focus()):document.activeElement===u&&(_.preventDefault(),r==null||r.focus()))};return n.addEventListener("keydown",j),r==null||r.focus(),()=>n.removeEventListener("keydown",j)},[t]);const R=s[`size-${p}`]??"",U=v!==void 0?v:e.jsxs(e.Fragment,{children:[d!=null&&d.length&&g?e.jsx("div",{className:s.intro,children:g({blocks:d})}):null,b&&h?h(b):null]}),D=t?e.jsx("div",{className:`${s.overlay} ${q??""}`.trim(),onClick:P,role:"dialog","aria-modal":"true",children:e.jsxs("div",{className:`${R} ${s.container}`,children:[w&&e.jsx("button",{"aria-label":"Close",className:s.closeButton,onClick:a,type:"button",children:e.jsx(C.X,{size:20})}),e.jsx("div",{ref:f,className:`${s.modal} ${N??""}`.trim(),style:S,onClick:n=>n.stopPropagation(),children:e.jsx("div",{className:s.content,children:U})})]})}):null;return e.jsxs(e.Fragment,{children:[e.jsx("div",{className:s.trigger,onClick:M,children:x}),typeof window<"u"&&A.createPortal(D,document.body)]})}exports.Modal=Z;
|
|
@@ -1,111 +1,108 @@
|
|
|
1
|
-
import { jsxs as f, Fragment as
|
|
2
|
-
import { useState as
|
|
3
|
-
import { createPortal as
|
|
4
|
-
import { X as
|
|
5
|
-
import '../../../index38.css';const H = "
|
|
6
|
-
overlay:
|
|
7
|
-
fadeIn:
|
|
8
|
-
container:
|
|
9
|
-
"size-sm": "_size-
|
|
10
|
-
"size-md": "_size-
|
|
11
|
-
"size-lg": "_size-
|
|
12
|
-
"size-xl": "_size-
|
|
13
|
-
"size-full": "_size-
|
|
14
|
-
modal:
|
|
15
|
-
slideUp:
|
|
16
|
-
closeButton:
|
|
17
|
-
title:
|
|
18
|
-
content:
|
|
1
|
+
import { jsxs as f, Fragment as w, jsx as l } from "react/jsx-runtime";
|
|
2
|
+
import { useState as R, useRef as X, useEffect as v } from "react";
|
|
3
|
+
import { createPortal as B } from "react-dom";
|
|
4
|
+
import { X as F } from "../../../x-CnsEH4Ox.js";
|
|
5
|
+
import '../../../index38.css';const G = "_overlay_k02re_2", H = "_fadeIn_k02re_1", J = "_container_k02re_19", Q = "_modal_k02re_49", V = "_slideUp_k02re_1", W = "_closeButton_k02re_60", Y = "_title_k02re_87", Z = "_content_k02re_97", T = "_intro_k02re_116", O = "_trigger_k02re_121", n = {
|
|
6
|
+
overlay: G,
|
|
7
|
+
fadeIn: H,
|
|
8
|
+
container: J,
|
|
9
|
+
"size-sm": "_size-sm_k02re_26",
|
|
10
|
+
"size-md": "_size-md_k02re_30",
|
|
11
|
+
"size-lg": "_size-lg_k02re_34",
|
|
12
|
+
"size-xl": "_size-xl_k02re_38",
|
|
13
|
+
"size-full": "_size-full_k02re_42",
|
|
14
|
+
modal: Q,
|
|
15
|
+
slideUp: V,
|
|
16
|
+
closeButton: W,
|
|
17
|
+
title: Y,
|
|
18
|
+
content: Z,
|
|
19
|
+
intro: T,
|
|
19
20
|
trigger: O
|
|
20
21
|
}, ee = () => {
|
|
21
22
|
typeof document < "u" && (document.body.style.overflow = "hidden");
|
|
22
|
-
},
|
|
23
|
+
}, N = () => {
|
|
23
24
|
typeof document < "u" && (document.body.style.overflow = "");
|
|
24
25
|
};
|
|
25
|
-
function
|
|
26
|
+
function re({
|
|
26
27
|
content: k,
|
|
27
|
-
trigger:
|
|
28
|
-
isOpen:
|
|
29
|
-
onOpen:
|
|
30
|
-
onClose:
|
|
31
|
-
size:
|
|
32
|
-
closeOnEscape:
|
|
33
|
-
closeOnOverlayClick:
|
|
34
|
-
showCloseButton:
|
|
35
|
-
className:
|
|
36
|
-
overlayClassName:
|
|
37
|
-
style:
|
|
38
|
-
title
|
|
28
|
+
trigger: $,
|
|
29
|
+
isOpen: y,
|
|
30
|
+
onOpen: r,
|
|
31
|
+
onClose: i,
|
|
32
|
+
size: I = "md",
|
|
33
|
+
closeOnEscape: g = !0,
|
|
34
|
+
closeOnOverlayClick: L = !0,
|
|
35
|
+
showCloseButton: S = !0,
|
|
36
|
+
className: U,
|
|
37
|
+
overlayClassName: j,
|
|
38
|
+
style: x,
|
|
39
|
+
// title,
|
|
39
40
|
richTextBlocks: c,
|
|
40
41
|
renderRichText: h,
|
|
41
|
-
formData:
|
|
42
|
-
renderForm:
|
|
42
|
+
formData: b,
|
|
43
|
+
renderForm: p
|
|
43
44
|
}) {
|
|
44
|
-
const [
|
|
45
|
-
|
|
46
|
-
},
|
|
47
|
-
|
|
48
|
-
},
|
|
49
|
-
|
|
45
|
+
const [P, z] = R(!1), _ = X(null), m = y !== void 0, e = m ? y : P, q = () => {
|
|
46
|
+
m || z(!0), r == null || r();
|
|
47
|
+
}, d = () => {
|
|
48
|
+
m || z(!1), i == null || i();
|
|
49
|
+
}, A = () => e ? d() : q(), C = () => {
|
|
50
|
+
L && d();
|
|
50
51
|
};
|
|
51
|
-
|
|
52
|
-
if (!
|
|
53
|
-
const
|
|
54
|
-
|
|
52
|
+
v(() => {
|
|
53
|
+
if (!g || !e) return;
|
|
54
|
+
const t = (s) => {
|
|
55
|
+
s.key === "Escape" && d();
|
|
55
56
|
};
|
|
56
|
-
return document.addEventListener("keydown",
|
|
57
|
-
}, [
|
|
58
|
-
if (!
|
|
59
|
-
const
|
|
57
|
+
return document.addEventListener("keydown", t), () => document.removeEventListener("keydown", t);
|
|
58
|
+
}, [e, g]), v(() => (e ? ee() : N(), () => N()), [e]), v(() => {
|
|
59
|
+
if (!e || !_.current) return;
|
|
60
|
+
const t = _.current, s = t.querySelectorAll(
|
|
60
61
|
'button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])'
|
|
61
|
-
),
|
|
62
|
-
u.key === "Tab" && (u.shiftKey ? document.activeElement ===
|
|
62
|
+
), o = s[0], a = s[s.length - 1], E = (u) => {
|
|
63
|
+
u.key === "Tab" && (u.shiftKey ? document.activeElement === o && (u.preventDefault(), a == null || a.focus()) : document.activeElement === a && (u.preventDefault(), o == null || o.focus()));
|
|
63
64
|
};
|
|
64
|
-
return
|
|
65
|
-
}, [
|
|
66
|
-
const
|
|
67
|
-
c != null && c.length && h ? /* @__PURE__ */
|
|
68
|
-
|
|
69
|
-
] }),
|
|
65
|
+
return t.addEventListener("keydown", E), o == null || o.focus(), () => t.removeEventListener("keydown", E);
|
|
66
|
+
}, [e]);
|
|
67
|
+
const D = n[`size-${I}`] ?? "", K = k !== void 0 ? k : /* @__PURE__ */ f(w, { children: [
|
|
68
|
+
c != null && c.length && h ? /* @__PURE__ */ l("div", { className: n.intro, children: h({ blocks: c }) }) : null,
|
|
69
|
+
b && p ? p(b) : null
|
|
70
|
+
] }), M = e ? /* @__PURE__ */ l(
|
|
70
71
|
"div",
|
|
71
72
|
{
|
|
72
|
-
className: `${
|
|
73
|
-
onClick:
|
|
73
|
+
className: `${n.overlay} ${j ?? ""}`.trim(),
|
|
74
|
+
onClick: C,
|
|
74
75
|
role: "dialog",
|
|
75
76
|
"aria-modal": "true",
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
U && /* @__PURE__ */ o(
|
|
77
|
+
children: /* @__PURE__ */ f("div", { className: `${D} ${n.container}`, children: [
|
|
78
|
+
S && /* @__PURE__ */ l(
|
|
79
79
|
"button",
|
|
80
80
|
{
|
|
81
81
|
"aria-label": "Close",
|
|
82
|
-
className:
|
|
83
|
-
onClick:
|
|
82
|
+
className: n.closeButton,
|
|
83
|
+
onClick: d,
|
|
84
84
|
type: "button",
|
|
85
|
-
children: /* @__PURE__ */
|
|
85
|
+
children: /* @__PURE__ */ l(F, { size: 20 })
|
|
86
86
|
}
|
|
87
87
|
),
|
|
88
|
-
/* @__PURE__ */
|
|
88
|
+
/* @__PURE__ */ l(
|
|
89
89
|
"div",
|
|
90
90
|
{
|
|
91
91
|
ref: _,
|
|
92
|
-
className: `${
|
|
93
|
-
style:
|
|
94
|
-
onClick: (
|
|
95
|
-
children:
|
|
96
|
-
m && /* @__PURE__ */ o("div", { className: e.title, id: "modal-title", children: m }),
|
|
97
|
-
/* @__PURE__ */ o("div", { className: e.content, children: M })
|
|
98
|
-
]
|
|
92
|
+
className: `${n.modal} ${U ?? ""}`.trim(),
|
|
93
|
+
style: x,
|
|
94
|
+
onClick: (t) => t.stopPropagation(),
|
|
95
|
+
children: /* @__PURE__ */ l("div", { className: n.content, children: K })
|
|
99
96
|
}
|
|
100
97
|
)
|
|
101
98
|
] })
|
|
102
99
|
}
|
|
103
100
|
) : null;
|
|
104
|
-
return /* @__PURE__ */ f(
|
|
105
|
-
/* @__PURE__ */
|
|
106
|
-
typeof window < "u" &&
|
|
101
|
+
return /* @__PURE__ */ f(w, { children: [
|
|
102
|
+
/* @__PURE__ */ l("div", { className: n.trigger, onClick: A, children: $ }),
|
|
103
|
+
typeof window < "u" && B(M, document.body)
|
|
107
104
|
] });
|
|
108
105
|
}
|
|
109
106
|
export {
|
|
110
|
-
|
|
107
|
+
re as Modal
|
|
111
108
|
};
|
package/dist/core.d.ts
CHANGED
|
@@ -966,7 +966,7 @@ declare const marginClassMap: {
|
|
|
966
966
|
readonly xl: string;
|
|
967
967
|
};
|
|
968
968
|
|
|
969
|
-
export declare function Modal({ content, trigger, isOpen: controlledIsOpen, onOpen, onClose, size, closeOnEscape, closeOnOverlayClick, showCloseButton, className, overlayClassName, style,
|
|
969
|
+
export declare function Modal({ content, trigger, isOpen: controlledIsOpen, onOpen, onClose, size, closeOnEscape, closeOnOverlayClick, showCloseButton, className, overlayClassName, style, richTextBlocks, renderRichText, formData, renderForm, }: ModalProps): JSX.Element;
|
|
970
970
|
|
|
971
971
|
declare type ModalContextValue = {
|
|
972
972
|
isOpen: boolean;
|
package/dist/index38.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
.
|
|
1
|
+
._overlay_k02re_2{position:fixed;top:0;left:0;width:100vw;height:100vh;background-color:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000;animation:_fadeIn_k02re_1 .2s ease;padding:var(--spacing-md, 1rem);overflow-y:auto}._container_k02re_19{position:relative;display:flex;flex-direction:column}._size-sm_k02re_26{width:90%;max-width:400px}._size-md_k02re_30{width:90%;max-width:600px}._size-lg_k02re_34{width:90%;max-width:800px}._size-xl_k02re_38{width:90%;max-width:1200px}._size-full_k02re_42{width:95%;height:95dvh;max-height:95dvh}._modal_k02re_49{position:relative;background-color:var(--color-background, #fff);border-radius:var(--radius-lg, .5rem);padding:var(--spacing-xl, 2rem);max-height:90dvh;overflow-y:auto;animation:_slideUp_k02re_1 .3s ease}._closeButton_k02re_60{background:none;border:none;cursor:pointer;padding:var(--spacing-xs, .25rem);margin-bottom:var(--spacing-xs);border-radius:var(--radius-sm, .25rem);color:#fff;transition:all .2s ease;display:flex;align-items:center;justify-content:center;align-self:flex-end;z-index:1}._closeButton_k02re_60:hover{background-color:var(--color-secondary-10, #f5f5f5);color:var(--color-text-primary, #333)}._closeButton_k02re_60:focus-visible{outline:2px solid var(--color-primary-100, #007bff);outline-offset:2px}._title_k02re_87{font-size:var(--font-size-xl, 1.5rem);font-weight:var(--font-weight-bold, 700);color:var(--color-heading, #111);margin-bottom:var(--spacing-lg, 1.5rem);padding-right:var(--spacing-xl, 2rem);line-height:var(--line-height-heading, 1.2)}._content_k02re_97{color:var(--color-text-primary, #333);line-height:var(--line-height-normal, 1.5);display:flex;flex-direction:column;gap:var(--spacing-xl)}._content_k02re_97 video,._content_k02re_97 img{max-width:100%;height:auto;border-radius:var(--radius-md, .5rem)}._content_k02re_97 video{width:100%}._intro_k02re_116{background-color:red}._trigger_k02re_121{width:auto;display:inline-block;cursor:pointer}@keyframes _fadeIn_k02re_1{0%{opacity:0}to{opacity:1}}@keyframes _slideUp_k02re_1{0%{opacity:0;transform:translateY(30px) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}}@media (max-width: 768px){._modal_k02re_49{padding:var(--spacing-lg, 1.5rem);max-height:85dvh}._size-sm_k02re_26,._size-md_k02re_30,._size-lg_k02re_34,._size-xl_k02re_38{width:95%}._title_k02re_87{font-size:var(--font-size-lg, 1.25rem);padding-right:var(--spacing-lg, 1.5rem)}}@media (max-width: 480px){._overlay_k02re_2{padding:var(--spacing-sm, .5rem)}._modal_k02re_49{padding:var(--spacing-md, 1rem);max-height:90dvh}._title_k02re_87{font-size:var(--font-size-md, 1rem);margin-bottom:var(--spacing-md, 1rem)}}
|
package/dist/main.d.ts
CHANGED
|
@@ -1215,7 +1215,7 @@ export { MarkdownBlockProps }
|
|
|
1215
1215
|
|
|
1216
1216
|
export { MetricType }
|
|
1217
1217
|
|
|
1218
|
-
export declare function Modal({ content, trigger, isOpen: controlledIsOpen, onOpen, onClose, size, closeOnEscape, closeOnOverlayClick, showCloseButton, className, overlayClassName, style,
|
|
1218
|
+
export declare function Modal({ content, trigger, isOpen: controlledIsOpen, onOpen, onClose, size, closeOnEscape, closeOnOverlayClick, showCloseButton, className, overlayClassName, style, richTextBlocks, renderRichText, formData, renderForm, }: ModalProps): JSX.Element;
|
|
1219
1219
|
|
|
1220
1220
|
declare type ModalContextValue = {
|
|
1221
1221
|
isOpen: boolean;
|