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: