Skip to content

LoadingCard ​

Indikator loading dengan icon + judul (+ waktu berjalan opsional), dengan ProgressBar komposit opsional.

Bagian dari: vue-salayout · Family: Feedback


Import ​

ts
import { LoadingCard } from '@bpmlib/vue-salayout';

Instalasi: lihat Installation & Setup di halaman utama.


Usage ​

vue
<script setup lang="ts">
import { LoadingCard } from '@bpmlib/vue-salayout';
</script>

<template>
  <LoadingCard title="Mengambil data..." with-time :progress="0.4" />
</template>

API Reference ​

NOTE

Dibangun di atas useCardFoundation (region body/children, sama seperti BasicCard) dan composable internal useLoadingIcon. Tidak diekspos publik.

LoadingCard ​

Cara Penggunaan:

Icon, judul, dan (opsional) waktu berjalan render langsung di region body — bukan lewat slot. Slot publik body milik component ini (untuk konten tambahan) justru berada di dalam region children, bersama ProgressBar kalau progress diset. Region children hanya muncul kalau slot body diisi atau progress diset.

Props

NameTypeDefaultDescription
iconType'truck' | 'find' | 'cog''truck'Icon default bawaan + animasinya. Diabaikan kalau image atau slot icon diisi
imagestring-URL gambar custom (gif/png/dst), di-render sebagai <img>. Menang atas iconType, kalah dari slot icon
titlestring'Mengambil Data... Harap Tunggu Sebentar'Judul di bawah icon
withTimebooleanfalseTampilkan waktu berjalan, update tiap detik
compactbooleanfalseLayout horizontal (icon kiri, teks kanan, flex-1) alih-alih stacked/center
progressboolean | number-Render ProgressBar kalau diset. number (0-1): width manual. true: trickle otomatis Lihat selengkapnya
barColorCardAccent'primary'Diteruskan ke prop color milik ProgressBar internal
colorCardColor'card'Warna body, atau map warna body/children
bodyColorCardAccent'card'Warna region body, menang atas color
childrenColorCardAccent(family body)Warna region children, menang atas color.children
altCardTogglefalseToggle shade -alt untuk body/children
noPaddingCardTogglefalseHilangkan padding per region
noAnimatebooleanfalseMatikan animasi fade-in-up saat kartu muncul
overflowingbooleanfalseClip konten yang melebihi wrapper luar
progress ​

Diteruskan langsung ke prop progress milik ProgressBar internal — lihat halaman tersebut untuk detail mode manual vs. trickle otomatis.

Contoh:

vue
<!-- manual, 65% -->
<LoadingCard title="Mengunggah berkas..." :progress="0.65" />

<!-- trickle otomatis -->
<LoadingCard title="Menyinkronkan..." :progress="true" />

Use Case: number cocok saat progress bisa diukur pasti (upload, download); true cocok saat progress tidak diketahui pastinya (request async tanpa event progress).

Slots

NameDescription
iconOverride penuh icon, menang atas image/iconType
bodyKonten tambahan, di dalam region children, di samping ProgressBar

Contoh:

vue
<LoadingCard title="Memuat laporan..." :progress="0.3">
  <template #body>
    <p>Ini bisa memakan waktu beberapa menit.</p>
  </template>
</LoadingCard>

Events

NamePayloadDescription
loadingTime{ seconds: number; stringTime: string; startTime: Date }Emit saat unmount dengan total waktu berjalan

Examples ​

1. Icon Type & Layout Compact ​

vue
<LoadingCard icon-type="find" title="Mencari data..." compact />

2. Custom Image ​

vue
<LoadingCard image="https://example.com/loading.gif" title="Memuat..." />

Styling ​

Styling sepenuhnya self-contained — lihat Import CSS di halaman utama.

CSS Variables ​

Gradient background body mengikuti --color-primary/--color-primary-alt (bukan barColor) — warna region lain mengikuti token yang sama dengan BasicCard, lihat Accent Palette & alt Shading.


Used By / Built On ​

Built on: ProgressBar — dipasang otomatis di region children saat prop progress diset, dengan corner flush (bukan pill).

Bagian dari family Feedback: