Skip to content

SaPaginator (PaginatorContent) — Changelog

v0.1.3 (2026-06-24)

TL;DR

Perubahan:

  • ✨ New: Slot #loadingView, #errorView, #emptyView (New) — override tampilan loading/error/empty state tanpa fork component
  • 📦 Dependencies: Hapus peer dependency floating-vue (Medium) — tooltip dan page selector kini diimplementasi internal
  • 📦 Dependencies: Bump peer dependency @bpmlib/utils-data-container ke ^0.4.0 (Medium) — sync tipe PageConfig yang direstrukturisasi
  • 🐛 Fixed: Kontrol pagination tidak muncul sama sekali di container mode (Medium) — typo 'lengthaware''lengthAware'
  • 🔧 Improved: Simple pagination sekarang menampilkan tombol prev/next (Medium) — sebelumnya hanya lengthAware yang dapat kontrol navigasi
  • 🐛 Fixed: Pagination tidak reset ke halaman 1 saat submit search di container mode (Low)
  • 🔧 Improved: Search bar gunakan JS breakpoint — elemen tunggal di DOM, tidak duplikat (Low)
  • 🔧 Improved: Sinkronisasi tipe DataContainerObject dengan @bpmlib/utils-data-container v0.4.0 (Low)
  • 🎨 Refactor: Tooltip left-aligned; clear button FormInput float tanpa expand form (Low)

Impact: ✨ New: 1 | 🟢 Medium: 4 | 🔵 Low: 4

Backward Compatible: ✅ Ya — kecuali upgrade @bpmlib/utils-data-container ke ^0.4.0 wajib

✨ New

Slot Override untuk Loading, Error, dan Empty State

Tiga slot baru memungkinkan override tampilan state loading, error, dan empty tanpa harus fork component. Jika slot tidak di-pass, tampilan default library tetap digunakan — fully opt-in dan non-breaking.

Poin utama:

  • #loadingView — ganti loading card dengan komponen spinner atau skeleton custom
  • #errorView — expose { message: string, retry: () => void } untuk error UI custom dengan akses pesan dan tombol retry
  • #emptyView — expose { itemText: string, retry: () => void } untuk empty state custom sesuai konteks halaman

🟢 Medium Impact

Bug Fixes:

  • Kontrol pagination tidak pernah muncul di container mode — typo paginationMode === 'lengthaware' diperbaiki ke 'lengthAware'
  • Simple pagination ('simple', 'regular', 'cursor') sekarang menampilkan tombol prev/next — sebelumnya hanya lengthAware yang mendapat kontrol navigasi

Perubahan:

  • Hapus peer dependency floating-vue — tidak perlu lagi install atau import floating-vue/dist/style.css. Tooltip diganti CSS hover internal; page selector dropdown diganti component internal
  • Bump peer dependency @bpmlib/utils-data-container ke ^0.4.0PageConfig kini tidak punya field paginationMode (pindah ke page.setup?.mode); tambah PageSetup interface dan declarePagination() method; hapus PaginationIntent.preferCursor

🔵 Low Impact

Bug Fixes:

  • Pagination di container mode sekarang reset ke halaman 1 saat submit search via container.submitSearch()
  • Clear button (×) pada FormInput tidak lagi melebarkan form saat muncul — kini float absolut di dalam input

Perubahan:

  • Search bar gunakan JS breakpoint (matchMedia) — pada mobile satu form di DOM, pada desktop satu form di DOM; tidak ada elemen duplikat tersembunyi via CSS
  • Sinkronisasi tipe lokal DataContainerObject dengan source package v0.4.0: tambah submitSearch(), modifyFilter(), isUsingFilter(), setSortAsc(), setSortDesc(), declarePagination(); hapus perPage dan isFrontEndPreferCursor dari PageConfig; hapus preferCursor dari PaginationIntent
  • Perbaiki SortConfig.sortDir dari 'a' | 'd' ke 'asc' | 'desc'
  • Tambah SortDirection type alias, PageSetup interface, 'regular' ke PaginationIntent.mode
  • Tooltip button sekarang left-aligned terhadap tepi kiri button (sebelumnya center)