Membuat Tombol Action Kustom
Di NocoBase, Action adalah tombol di dalam Block yang digunakan untuk memicu logika bisnis — seperti "Tambah Baru", "Edit", "Hapus", dll. Contoh ini menunjukkan cara membuat tombol Action kustom dengan ActionModel, dan mengontrol skenario kemunculan tombol melalui ActionSceneEnum.
Disarankan memahami konten berikut terlebih dahulu agar pengembangan lebih lancar:
- Menulis Plugin Pertama Anda — Pembuatan plugin dan struktur direktori
- Plugin — Entry point Plugin dan lifecycle
load() - FlowEngine → Ekstensi Action — Pengantar dasar ActionModel, ActionSceneEnum
- i18n Internasionalisasi — Cara menulis file terjemahan dan penggunaan terjemahan tertunda
tExpr()
Hasil Akhir
Kita akan membuat tiga tombol Action kustom yang masing-masing sesuai dengan tiga skenario Action:
- Action level collection (
collection) — Muncul di action bar atas Block, misalnya di sebelah tombol "Tambah Baru" - Action level record (
record) — Muncul di kolom action setiap baris tabel, misalnya di sebelah "Edit", "Hapus" - Berlaku untuk keduanya (
both) — Muncul di kedua skenario
Source code lengkap lihat @nocobase-example/plugin-simple-action. Jika Anda ingin langsung menjalankannya secara lokal untuk melihat hasilnya:
Berikutnya, mari kita bangun plugin ini dari nol, langkah demi langkah.
Langkah 1: Membuat Skeleton Plugin
Eksekusi di direktori root repository:
Untuk penjelasan detail lihat Menulis Plugin Pertama Anda.
Langkah 2: Membuat Model Action
Setiap Action perlu mendeklarasikan skenario kemunculannya, ditentukan melalui properti static scene:
Action Level Collection
Buat src/client-v2/models/SimpleCollectionActionModel.tsx:
Action Level Record
Buat src/client-v2/models/SimpleRecordActionModel.tsx:
Berlaku untuk Kedua Skenario
Buat src/client-v2/models/SimpleBothActionModel.tsx:
Struktur ketiga cara penulisan ini sama — perbedaannya hanya pada nilai static scene dan teks tombol. Setiap tombol mendengarkan event klik melalui registerFlow({ on: 'click' }), dan menampilkan pesan dengan ctx.message, sehingga user dapat melihat tombol benar-benar berfungsi.
Langkah 3: Menambahkan File Multibahasa
Edit file terjemahan di src/locale/ plugin:
Pertama kali menambahkan file bahasa perlu restart aplikasi agar berlaku.
Untuk cara penulisan file terjemahan dan penggunaan tExpr() lebih lanjut, lihat i18n Internasionalisasi.
Langkah 4: Mendaftarkan di Plugin
Edit src/client-v2/plugin.tsx, daftarkan dengan lazy loading menggunakan registerModelLoaders:
Langkah 5: Mengaktifkan Plugin
Setelah diaktifkan, di "Konfigurasi Action" pada Block tabel Anda dapat menambahkan tombol Action kustom ini.
Source Code Lengkap
- @nocobase-example/plugin-simple-action — Contoh lengkap tiga skenario Action
Ringkasan
Kapabilitas yang digunakan dalam contoh ini:
Tautan Terkait
- Menulis Plugin Pertama Anda — Membuat skeleton plugin dari nol
- Ikhtisar FlowEngine — Penggunaan dasar FlowModel
- FlowEngine → Ekstensi Action — ActionModel, ActionSceneEnum
- FlowEngine → Ekstensi Block — Block Kustom
- FlowEngine → Ekstensi Field — Component Field Kustom
- Component vs FlowModel — Kapan menggunakan FlowModel
- Plugin — Entry point Plugin dan lifecycle load()
- i18n Internasionalisasi — Cara menulis file terjemahan dan penggunaan tExpr
- Dokumentasi FlowEngine Lengkap — Referensi lengkap FlowModel, Flow, Context

