Appearance
Modal
Modal component is used to display content in a layered window that appears above the page content.
Usage
html
<j-button>Open modal</j-button>
<j-modal>
<j-box p="500">
<j-text variant="heading-sm">Modal header</j-text>
<j-text variant="body">Modal content</j-text>
</j-box>
</j-modal>
<script>
const button = document.querySelector("j-button");
const modal = document.querySelect("j-modal");
button.addEventListener("click", () => {
modal.open = true;
});
</script>
jsx
export default function Checkbox() {
const [open, setOpen] = useState(false);
return (
<>
<j-button onClick={() => setOpen(true)}>Open modal</j-button>
<j-modal
label="Name"
open={open}
onToggle={(e) => setOpen(e.target.open)}
>
<j-box p="500">
<j-text variant="heading-sm">Modal header</j-text>
<j-text variant="body">Modal content</j-text>
</j-box>
</j-modal>
</>
);
}
vue
<template>
<j-button @click="() => (isOpen = true)">Open modal</j-button>
<j-modal size="sm" :open="isOpen" @toggle="(e) => (isOpen = e.target.open)">
<j-box p="500">
<j-text variant="heading-sm">Modal header</j-text>
<j-text variant="body">Modal content</j-text>
</j-box>
</j-modal>
</template>
<script setup>
import { ref } from "vue";
const isOpen = ref(false);
</script>
Properties
Size string
Use the size property to change the size of the modal. You can set the value to xs, sm, md, lg, xl, or fullscreen.
html
<j-modal size="sm">
<j-box p="500">
<j-text variant="heading-sm">Modal header</j-text>
<j-text variant="body">Modal content</j-text>
</j-box>
</j-modal>
Open boolean
Use the open property to control whether the modal is visible or not.
html
<j-modal open>
<template slot="header">Modal header</template>
Modal content
<template slot="footer">Modal footer</template>
</j-modal>
Slots
Header
Use the header slot to provide a custom header for the modal.
Custom header
Modal content Modal footerhtml
<j-modal size="md">
<template slot="header">
<h2>Custom header</h2>
</template>
Modal content
<template slot="footer">Modal footer</template>
</j-modal>
Footer
Use the footer slot to provide a custom footer for the modal.
html
<j-modal size="lg">
<template slot="header">Modal header</template>
Modal content
<template slot="footer">
<button>Cancel</button>
<button>Save</button>
</template>
</j-modal>
Events
Toggle
The toggle event is fired when the modal open
property is set to either to false
or true
;
js
const modal = document.querySelector("j-modal");
modal.addEventListener("toggle", (event) => {
console.log("Modal is open:", event.target.open);
});