Hoppa till innehåll

Modal

Component for displaying configuration in a modal window.

Modal

[[toc]]

Props

export let title; // Modal title text, required.
export let open = false; // Change this prop to open or close modal, required.
export let element; // Modal DOM element.

Components

name props is required on all components (even in advanced configuration) for the reset function to work properly.

Events

  • open - triggers when the modal opens.
  • close - triggers when the modal closes (outside click, close button, cancel button).
  • save - triggers when the modal is saved.

Example

Standard

<script>
import { Panel, Modal, InputField, NodeSelector } from '@soleil-se/config-svelte';
let open = false;
</script>
<Panel>
<button class="btn btn-primary" on:click={() => (open = true)}>Modal</button>
<Modal title="Edit" bind:open>
<InputField name="textModal" label="Text in modal" />
<NodeSelector name="pageModal" label="Page in modal" />
</Modal>
</Panel>

Advanced

Advanced configs are not recommended.

<script>
import { Panel, Modal, InputField, NodeSelector } from '@soleil-se/config-svelte';
import { onSave } from '@soleil-se/config-svelte/utils';
export let values;
let open = false;
onSave(() => values);
</script>
<Panel>
<button class="btn btn-primary" on:click={() => (open = true)}>Modal</button>
<Modal title="Edit" bind:open>
<InputField name="textModal" bind:value={values.textModal} label="Text in modal" />
<NodeSelector name="pageModal" bind:value={values.nodeModal} label="Page in modal" />
</Modal>
</Panel>

CSS variables

  • --modal-width - Width of modal, default is 600px.
<Modal title="Edit" bind:open --modal-width="800px">
<InputField name="textModal" label="Text in modal" />
<NodeSelector name="pageModal" label="Page in modal" />
</Modal>

Slots

  • default - Modal content.
  • footer - Modal footer.
<script>
import { Modal } from '@soleil-se/config-svelte';
let open = false;
</script>
<Modal title="More info" bind:open>
<p>Content in default slot.</p>
<svelte:fragment slot="footer">
<button class="btn btn-primary" type="button" on:click={() => (open = false)}>OK</button>
</svelte:fragment>
</Modal>