Skip to main content

Documentation: SidebarTreeTable Component (English)

1. Overview

SidebarTreeTable is a flexible layout component that combines a hierarchical tree sidebar (TreeGroupEditor) with a powerful data table (MejikDatatable). It is designed for managing and displaying items that belong to structured categories. The primary use case is filtering the data table’s content based on the selected category in the tree. This component follows an “inversion of control” pattern for data loading. It manages all the parameters for pagination, sorting, and filtering, but it delegates the actual API call to a loader function provided by the parent component.

2. Features

  • Combined View: Integrates a collapsible tree-based navigation with a feature-rich data table.
  • Parent-Controlled Data Loading: Provides maximum flexibility by letting the parent component handle the actual data fetching logic via a loader function prop.
  • State Management: Internally manages all datatable parameters (pagination, sorting, filtering) and passes them to the parent’s loader.
  • Mirrored Datatable Functionality: Exposes most of MejikDatatable’s props and events, acting as a powerful and convenient wrapper.
  • Slot Passthrough: Any scoped slots provided to SidebarTreeTable are passed directly to MejikDatatable, allowing for full customization of table cells and rows.
  • CRUD Events: Emits events for tree management (add, edit, delete), allowing the parent page to handle the logic.

3. Props

Component & Tree Configuration

Data Loading & State

Mirrored MejikDatatable Props

These props are passed directly to the underlying MejikDatatable component.

4. The loader Function Contract

The parent component must provide a loader function. This function will be called automatically by SidebarTreeTable whenever the data needs to be refreshed (e.g., on page change, sort, or node selection). The function will receive one argument: a params object with the following structure:
The parent’s function should use these params to make an API call and then update its own rows, totalRows, and isLoading data properties.

5. Pass-Through Slots

Any scoped slots passed to <SidebarTreeTable> will be automatically forwarded to the underlying <MejikDatatable>. This allows you to customize the rendering of table cells.

6. Emitted Events

The component emits events from both the tree and the datatable. Tree events are for management, while datatable events are for informational purposes or advanced state management in the parent.
  • Tree Events: @node-selected, @add-node, @edit-node, @delete-node
  • Datatable Events: @on-page-change, @on-per-page-change, @on-sort-change, @on-search, @on-column-filter, @on-selected-rows-change, @on-cell-click, @action
  • .sync Events: update:isLoading, update:selectedRows, update:paginationOptions, update:sortOptions

7. Usage Example



Dokumentasi: Komponen SidebarTreeTable (Bahasa Indonesia)

1. Gambaran Umum

SidebarTreeTable adalah komponen tata letak (layout) fleksibel yang menggabungkan sidebar pohon hierarkis (TreeGroupEditor) dengan tabel data yang kuat (MejikDatatable). Komponen ini dirancang untuk mengelola dan menampilkan item yang termasuk dalam kategori terstruktur. Kasus penggunaan utamanya adalah untuk memfilter konten tabel data berdasarkan kategori yang dipilih di pohon. Komponen ini mengikuti pola “inversion of control” untuk pemuatan data. Ia mengelola semua parameter untuk paginasi, pengurutan, dan pemfilteran, tetapi mendelegasikan panggilan API sebenarnya ke sebuah fungsi loader yang disediakan oleh komponen induk.

2. Fitur

  • Tampilan Gabungan: Mengintegrasikan navigasi berbasis pohon yang dapat dilipat dengan tabel data yang kaya fitur.
  • Pemuatan Data Dikontrol Induk: Memberikan fleksibilitas maksimum dengan membiarkan komponen induk menangani logika pengambilan data melalui prop fungsi loader.
  • Manajemen State: Secara internal mengelola semua parameter datatable (paginasi, pengurutan, filter) dan meneruskannya ke loader milik induk.
  • Fungsionalitas Datatable Cerminan: Mengekspos sebagian besar props dan event dari MejikDatatable, berfungsi sebagai pembungkus (wrapper) yang kuat dan nyaman.
  • Penerusan Slot (Slot Passthrough): Setiap scoped slot yang diberikan ke SidebarTreeTable diteruskan langsung ke MejikDatatable, memungkinkan kustomisasi penuh pada sel dan baris tabel.
  • Event CRUD: Memancarkan event untuk manajemen pohon (tambah, edit, hapus), memungkinkan halaman induk menangani logikanya.

3. Props

Konfigurasi Komponen & Pohon

Pemuatan Data & State

Props Cerminan MejikDatatable

Props ini diteruskan langsung ke komponen MejikDatatable di dalamnya.

4. Kontrak Fungsi loader

Komponen induk wajib menyediakan fungsi loader. Fungsi ini akan dipanggil secara otomatis oleh SidebarTreeTable setiap kali data perlu diperbarui (misalnya, saat ganti halaman, mengurutkan, atau memilih node). Fungsi ini akan menerima satu argumen: sebuah objek params dengan struktur berikut:
Fungsi di komponen induk harus menggunakan parameter ini untuk melakukan panggilan API dan kemudian memperbarui properti data miliknya sendiri yaitu rows, totalRows, dan isLoading.

5. Penerusan Slot (Pass-Through Slots)

Setiap scoped slot yang diteruskan ke <SidebarTreeTable> akan secara otomatis diteruskan ke <MejikDatatable> di dalamnya. Hal ini memungkinkan Anda untuk menyesuaikan rendering sel tabel.

6. Event yang Di-emit

Komponen ini memancarkan event dari pohon dan datatable. Event pohon adalah untuk manajemen, sedangkan event datatable adalah untuk tujuan informasi atau manajemen state lanjutan di komponen induk.
  • Event Pohon: @node-selected, @add-node, @edit-node, @delete-node
  • Event Datatable: @on-page-change, @on-per-page-change, @on-sort-change, @on-search, @on-column-filter, @on-selected-rows-change, @on-cell-click, @action
  • Event .sync: update:isLoading, update:selectedRows, update:paginationOptions, update:sortOptions

7. Contoh Penggunaan