Lewati ke konten

Modal - Vue

Modal

banner-background
import { Modal } from '@idds/vue';

Confirmation Provider Setup

ConfirmationProvider memungkinkan Anda memanggil modal konfirmasi secara imperatif menggunakan promise, tanpa perlu me-manage state isOpen atau render modal secara manual di setiap komponen.

<template>
  <ConfirmationProvider>
    <router-view />
  </ConfirmationProvider>
</template>

<script setup lang="ts">
import { ConfirmationProvider } from '@idds/vue';
</script>

Penggunaan (useConfirmation Hook)

Gunakan hook useConfirmation untuk menampilkan modal. Fungsi confirm() mengembalikan Promise yang akan resolve ke true (dikonfirmasi) atau false (dibatalkan).

<script setup lang="ts">
import { useConfirmation, Button } from '@idds/vue';

const { confirm } = useConfirmation();

const handleDelete = async () => {
  const isConfirmed = await confirm({
    title: 'Hapus Data?',
    message: 'Apakah Anda yakin ingin menghapus data ini?',
    confirmText: 'Hapus',
    cancelText: 'Batal',
    confirmClassName: 'bg-red-600 hover:bg-red-700',
  });

  if (isConfirmed) {
    console.log('User confirmed deletion');
  }
};
</script>

<template>
  <Button @click="handleDelete" variant="error">Hapus Item</Button>
</template>
NameTypeDefaultRequiredDescription
modelValue?booleanfalseNoValue yang dikontrol (v-model) - apakah modal terbuka.
title?stringNoJudul modal (atau gunakan slot title).
description?stringNoDeskripsi modal (opsional).
size?'sm' | 'md' | 'lg' | 'xl' | 'full''md'NoUkuran modal.
variant?'default' | 'centered' | 'fullscreen''default'NoVariant modal.
showCloseButton?booleantrueNoApakah tombol close ditampilkan.
showHeader?booleantrueNoApakah header ditampilkan.
showFooter?booleanfalseNoApakah footer ditampilkan (gunakan slot footer untuk konten).
closeLabel?string'Close modal'NoLabel untuk tombol close (accessibility).
closeOnBackdrop?booleantrueNoApakah modal bisa ditutup dengan klik backdrop.
closeOnEscape?booleantrueNoApakah modal bisa ditutup dengan tombol Escape.
persistent?booleanfalseNoJika true, modal tidak bisa ditutup (harus ditutup secara programmatic).
paddingBody?string'16px 24px'NoCustom padding untuk body modal.