Komponen Vue
Chamilo memiliki sejumlah besar komponen Vue yang diorganisasi berdasarkan area fungsionalitas di assets/vue/components/.
Komponen Dasar
Keluarga Base* di assets/vue/components/basecomponents/ mengenkapsulasi primitif PrimeVue dengan standar khusus Chamilo (tata letak FloatLabel, ikon MDI melalui chamiloIconToClass, pesan validasi yang konsisten, penskalaan Tailwind). Selalu pilih komponen Base* sebelum mengimpor komponen dasar dari PrimeVue — inilah cara antarmuka pengguna tetap konsisten di seluruh SPA dan bagaimana perubahan desain dapat diimplementasikan dari satu lokasi pusat.
Komponen tidak didaftarkan secara global (satu-satunya primitif PrimeVue yang didaftarkan secara global adalah Column, yang digunakan di dalam BaseTable). Impor masing-masing secara eksplisit:
import BaseButton from "@/components/basecomponents/BaseButton.vue"
import BaseDialog from "@/components/basecomponents/BaseDialog.vue"Bidang Formulir
Sebagian besar menerima nilai melalui v-model, mengekspos properti id + label untuk aksesibilitas/pengikatan label mengambang, dan menampilkan validasi melalui pasangan isInvalid / errorText (atau messageText).
BaseInputText.vue
InputText + FloatLabel
Bidang teks satu baris. Berubah menjadi label statis pada bidang input date/time/datetime-local (di mana label mengambang akan menutupi placeholder bawaan).
BaseInputTextWithVuelidate.vue
BaseInputText
Adaptor tipis untuk Vuelidate: meneruskan $error ke isInvalid dan merender $errors[].$message pada slot errors. Gabungkan dengan objek bidang Vuelidate.
BaseTextArea.vue
Textarea + FloatLabel
Bidang teks multiline.
BaseTextAreaWithVuelidate.vue
BaseTextArea
Pola adaptor Vuelidate yang sama seperti BaseInputTextWithVuelidate.
BaseInputNumber.vue
InputNumber
Bidang numerik dengan min / max / step dan tombol peningkatan/penurunan.
BaseInputTags.vue
(kustom)
Tag teks bebas; tag ditambahkan dengan menekan enter/koma dan dihapus dengan menekan backspace.
BaseInputGroup.vue
InputGroup + BaseButton
Bidang teks yang dikombinasikan dengan tombol aksi (gaya pencarian).
BaseCheckbox.vue
Checkbox
Kotak centang biner atau terikat pada nilai dengan label.
BaseRadioButtons.vue
RadioButton
Grup tombol radio yang dikontrol oleh array options: [{label, value}].
BaseToggleButton.vue
BaseButton
Tombol dua keadaan (label dan ikon hidup/mati) yang terikat melalui v-model.
BaseCalendar.vue
DatePicker + FloatLabel
Pemilih tanggal/waktu. Menghormati platform.timepicker_increment dan lokalitas pengguna melalui calendarLocales.
BaseColorPicker.vue
asli <input type="color"> + InputText
Pemilih warna dengan fallback ke teks heksadesimal; menggunakan colorjs.io untuk memvalidasi input heksadesimal manual.
BaseRating.vue
Rating
Bidang penilaian berdasarkan bintang.
BaseFileUpload.vue
asli <input type="file"> + BaseButton
Pemilih file tunggal yang memicu tombol bergaya lampiran.
BaseFileUploadMultiple.vue
asli <input type="file" multiple> + BaseButton
Varian multi-file dari BaseFileUpload.
BaseUploader.vue
Uppy Dashboard
Pengunggah lengkap Uppy (webcam, audio, editor gambar, unggah XHR) dengan lokalisasi yang terikat pada appLocale saat ini. Gunakan ini untuk unggahan kaya dengan progres; gunakan BaseFileUpload* untuk lampiran sederhana.
Seleksi dan Pelengkapan Otomatis
BaseSelect.vue
Dropdown + FloatLabel
Menu tarik-turun untuk pilihan tunggal dengan tombol hapus opsional.
BaseMultiSelect.vue
MultiSelect + FloatLabel
Menu tarik-turun untuk pilihan ganda yang menampilkan item terpilih sebagai chip.
BaseSearchSelect.vue
Dropdown dengan filter
Menu tarik-turun untuk pilihan tunggal dengan kotak pencarian terintegrasi, pengguliran virtual opsional, dan templat opsi dua baris (label + sublabel).
BaseAutocomplete.vue
AutoComplete
Pelengkapan otomatis asinkron (minimal 3 karakter). Mendukung pilihan tunggal atau ganda dan slot chip untuk menyesuaikan chip.
BaseUserFinder.vue
BaseTable + userService
Tabel pencarian pengguna yang dipaginasi dengan seleksi baris. Gunakan ketika fungsionalitas memerlukan pemilih pengguna bergaya admin.
Tombol dan Aksi
BaseButton.vue
Button (PrimeVue)
Tombol standar Chamilo. Menyelesaikan ikon melalui chamiloIconToClass, menormalkan type menjadi severity/variant dari PrimeVue, merender BaseAppLink internal ketika route atau toUrl disediakan (sehingga komponen yang sama menangani kasus router-link, anchor, dan tombol sederhana). Nilai yang diterima untuk type tercantum di validators.js → buttonTypeValidator.
BaseAdvancedSettingsButton.vue
BaseButton
Tombol pengungkapan yang mengalihkan panel "pengaturan lanjutan" yang dimasukkan melalui v-model.
BaseToolbar.vue
Toolbar
Bilah alat aksi dengan slot start / end (atau satu slot default). showTopBorder opsional untuk penataan pemisah.
Tampilan dan Data
BaseTable.vue
DataTable (PrimeVue)
Tabel data standar Chamilo. Mendukung mode server-side (lazy), pengurutan berdasarkan beberapa kolom, filter global, pemilihan baris, dan paginasi. Masukkan kolom sebagai anak <Column> (terdaftar secara global).
BaseCard.vue
Card
Pembungkus kartu yang meneruskan slot header, title, subtitle, footer, dan default (konten).
BaseChart.vue
Chart
Preset grafik pie. Masukkan objek data yang kompatibel dengan Chart.js.
BaseChip.vue
Chip
Chip yang dirender dari objek {value, labelField, imageField}, dengan tombol hapus opsional.
BaseTag.vue
Tag
Label berwarna. Memetakan warning dari Chamilo ke warn di PrimeVue.
BaseAvatarList.vue
Avatar + BaseUserAvatar
Baris avatar dengan penghitung kelebihan (misalnya, "+3"); dikontrol oleh useAvatarList.
BaseUserAvatar.vue
Avatar
Avatar pengguna dengan fallback gambar, status pemuatan, dan label yang dapat diakses.
BaseIcon.vue
<i class="mdi …">
Renderer ikon Chamilo. Menambahkan lencana opsional (teks atau ikon), tooltip, dan pengubah ukuran. Selalu masukkan nama semantik Chamilo (misalnya, "edit"), bukan kelas MDI mentah.
BaseIconField.vue
IconField + InputText
Bidang input pencarian dengan ikon kaca pembesar di sebelah kiri.
BaseDivider.vue
Divider
Pembatas horizontal atau vertikal, dengan judul dan penyelarasan opsional.
Navigasi dan Menu
BaseMenu.vue
Menu (popup)
Menu popup yang memahami rute router di dalam item model[].
BaseDropdownMenu.vue
(kustom)
Pemicu dropdown ringan dengan koordinasi pembukaan tunggal (membuka satu menutup yang lain).
BaseContextMenu.vue
(kustom)
Menu konteks klik kanan / diposisikan, dikontrol oleh visible + position.
BaseSidebarPanelMenu.vue
PanelMenu
Menu navigasi gaya akordeon yang digunakan di bilah sisi; secara otomatis melacak kunci yang diperluas dari model.
BaseRouteTabs.vue
Baris dari BaseAppLink
Bilah tab di mana setiap tab adalah tautan router. Tab aktif secara otomatis disorot berdasarkan rute saat ini.
BaseAppLink.vue
RouterLink atau <a>
Tautan cerdas: merender <a> ketika url ditentukan (eksternal/legacy), jika tidak, maka <RouterLink> dari Vue Router. Gunakan ini sebagai pengganti primitif apa pun untuk menjaga keseragaman antara tautan internal dan eksternal.
Dialog
BaseDialog adalah dasarnya; yang lain dibangun di atasnya untuk alur umum konfirmasi/batal dan penghapusan.
BaseDialog.vue
Dialog
Dialog modal dengan header bertitel (opsional headerIcon) dan tubuh/footer dengan slot. Status terbuka adalah defineModel("isVisible").
BaseDialogConfirmCancel.vue
BaseDialog
Modal konfirmasi/batal dengan dua tombol. Tipe konfirmasi dapat dikonfigurasi (type) (keparahan) dan icon; mengeluarkan confirmClicked / cancelClicked.
BaseDialogDelete.vue
BaseDialogConfirmCancel
Modal pra-dibangun "Apakah Anda yakin ingin menghapus item ini?" dengan tombol konfirmasi yang ditata sebagai bahaya.
Editor dan Konten Kaya
BaseTinyEditor.vue
TinyMCE (melalui components/Editor proyek)
Editor teks kaya dengan FloatLabel, pelacakan status fokus/kosong, dan integrasi dengan konteks kursus saat ini (cidReq). Gunakan ini untuk setiap bidang HTML yang dibuat pengguna.
Pembantu
ChamiloIcons.js
Memetakan nama ikon semantik (edit, delete, eye-on, courses, …) ke kelas CSS MDI. Sekitar 127 entri. Jelajahi di /admin/list-icons pada instansi yang sedang berjalan.
validators.js
Validator properti bersama: iconValidator (harus merupakan nama ikon yang dikenal di Chamilo), sizeValidator (normal / small / large), buttonTypeValidator (tipe yang diizinkan dari BaseButton). Impor ini saat mendefinisikan komponen Base* baru yang mengikuti konvensi ini.
Konvensi pada Komponen Base
v-model melalui
defineModel()— nilai (dan sering kaliisVisible,filters,selectedItems) diekspos sebagai model; gunakanv-model[:name]alih-alih:prop+@update:prop.Label Mengambang — sebagian besar bidang formulir membungkus input mereka dalam PrimeVue
FloatLabel variant="on". Sediakanlabel(teks yang ditampilkan) danid(digunakan untuk mengikat<label for>).Pesan Validasi — bidang mengekspos
isInvaliddan pesan kecil di bawah input (errorText,messageText, atausmallText, tergantung pada komponen). Varian yang kompatibel dengan Vuelidate tersedia untuk yang paling umum.Ikon — gunakan nama semantik Chamilo, bukan kelas MDI mentah. Komponen menyelesaikannya melalui
chamiloIconToClass.Pengukuran —
size="normal" | "small" | "large"adalah properti pengukuran konvensional (lihatsizeValidator).Komposisi daripada Duplikasi —
BaseDialogDeletemembungkusBaseDialogConfirmCancel, yang membungkusBaseDialog;BaseToggleButtondanBaseAdvancedSettingsButtonmembungkusBaseButton. Ketika Anda membutuhkan varian berulang dari komponen yang ada, lebih baik mengkomposisiBase*baru di atasnya daripada mengimplementasikannya ulang di folder fungsionalitas.
Komponen Tata Letak
Terletak di components/layout/:
DashboardLayout.vue
Tata letak utama: bilah atas + bilah samping + area konten
Sidebar.vue
Panel navigasi kiri (dapat dilipat)
TopbarLoggedIn.vue
Bilah atas dengan logo, kotak masuk, avatar
Komponen Area Fungsionalitas
course/
Kartu kursus, filter katalog, formulir kursus
Daftar dan pengelolaan kursus
session/
Kartu sesi, katalog
Daftar sesi
assignments/
Daftar pengumpulan, modal penilaian, formulir
Alur kerja tugas
chat/
DockedChat, pesan obrolan
Obrolan waktu nyata dan tutor AI
filemanager/
CourseDocuments, PersonalFiles
Penjelajah dan pengelolaan berkas
installer/
Step1-Step7, EmailSettings
Asisten instalasi
social/
GroupInfoCard, posting sosial
Fitur jejaring sosial
attendance/
AttendanceTable
Pelacakan kehadiran
usergroup/
GroupMembers
Pengelolaan grup pengguna
Sistem Ikon
Ikon menggunakan Material Design Icons (MDI) sebagai satu-satunya pustaka ikon: <i class="mdi mdi-pencil"></i>
Berkas ChamiloIcons.js menyediakan pemetaan semantik:
Komponen menggunakan BaseIcon atau merujuk ke chamiloIconToClass untuk merender ikon secara konsisten.
Referensi yang dapat dijelajahi dari semua ikon yang tersedia di platform dapat ditemukan di /admin/list-icons pada instansi Chamilo yang sedang berjalan.
Standar Komponen
Composition API — Komponen menggunakan sintaks
<script setup>dari Vue 3Integrasi dengan PrimeVue — Penggunaan intensif komponen PrimeVue (Button, DataTable, Dialog, Menu, dll.)
Axios untuk Panggilan API — Permintaan HTTP ke API backend
Vue I18n — Semua teks yang ditujukan untuk pengguna menggunakan kunci terjemahan
Terakhir diperbarui
Apakah ini membantu?