Lewati ke konten

Splitter

Tata letak split-pane yang dapat diubah ukurannya - seret handle untuk mengubah ukuran, dibangun di atas primitif resizable-panel milik Reka UI.

Penggunaan

Panel one
Panel two
vue-html
<SSplitter>
  <SSplitterPanel :default-size="30" :min-size="20">Panel one</SSplitterPanel>
  <SSplitterResizeHandle />
  <SSplitterPanel :min-size="20">Panel two</SSplitterPanel>
</SSplitter>

Tiga komponen digunakan bersamaan - SSplitter (grupnya), satu SSplitterPanel per pane, dan satu SSplitterResizeHandle di antara setiap pasangan panel yang ingin draggable. Ukuran default adalah persentase dari total grup (sizeUnit="%" pada SSplitterPanel); berikan sizeUnit="px" untuk panel berbasis pixel sebagai gantinya. defaultSize berbasis pixel juga diterapkan pada layout server-rendered, sebelum grup mengukur container-nya. DashboardSidebar menggunakan ini untuk menjaga lebar default 260px sementara panel utama memenuhi ruang yang tersisa.

SSplitterPanel tidak memiliki visual styling sendiri di luar clipping overflow-nya - penampilan panel sepenuhnya bergantung pada apa yang digunakan, diserahkan kepada konsumen.

Collapsible panels

Panel dengan collapsible tertutup sepenuhnya saat diseret melewati minSize sendiri, hingga collapsedSize (0 secara default - sepenuhnya tersembunyi). Panggil .collapse()/.expand() pada template ref untuk melakukan hal yang sama secara programatik - lihat source DashboardSidebar untuk contoh nyata, yang digerakkan oleh tombol di tempat lain di halaman daripada gesture seret.

Slot default SSplitterPanel di-scope dengan { isCollapsed, isExpanded, collapse, expand } - fungsi collapse()/expand() yang sama seperti metode template-ref di atas, plus boolean isCollapsed/isExpanded live, sehingga konten di dalam panel dapat bereaksi terhadap (atau memicu) state collapse tanpa memerlukan ref sama sekali:

vue-html
<SSplitterPanel collapsible :collapsed-size="0">
  <template #default="{ isCollapsed, expand }">
    <button v-if="isCollapsed" @click="expand()">Expand</button>
    <p v-else>Panel content</p>
  </template>
</SSplitterPanel>

Persistence

autoSaveId (pada SSplitter) mengingat ukuran setiap panel di seluruh reload, melalui localStorage secara default - berikan objek storage kustom (apa pun yang berbentuk { getItem, setItem }) untuk persist di tempat lain, mekanisme yang sama yang DashboardGroup gunakan untuk persist ke cookie. Storage mana pun yang digunakan, layout yang diingat hanya diterapkan setelah mounting, bukan selama SSR - pemanggilan restore layout milik Reka sendiri berjalan di dalam callback watch(), yang SSR render pass Vue tidak flush.

Custom :ui

Masing-masing dari tiga komponen menjaga file tema sendiri. Untuk melihat dengan tepat apa yang akan Anda timpa - kelas default untuk setiap slot - berikut mereka:

Splitter

Theme source "splitter" not found

SplitterPanel

SplitterPanel tidak memiliki visual styling sendiri di luar clipping overflow (lihat Penggunaan di atas), tetapi slot masih ada untuk di-override jika Anda perlu menambahkan milik Anda sendiri:

Theme source "splitter-panel" not found

SplitterResizeHandle

Theme source "splitter-resize-handle" not found

Props

Splitter

PropTipeDefault
direction'horizontal' | 'vertical''horizontal'
autoSaveIdstring-
keyboardResizeBynumber10
storage{ getItem, setItem }- (default localStorage-backed milik Reka)
uiPartial<Record<'root', string | object>>-

SplitterPanel

PropTipeDefault
defaultSizenumber-
minSizenumber-
maxSizenumber-
collapsedSizenumber-
collapsibleboolean-
sizeUnit'px' | '%''%'
ordernumber-
uiPartial<Record<'root', string | object>>-

SplitterResizeHandle

PropTipeDefault
direction'horizontal' | 'vertical''horizontal'
disabledboolean-
uiPartial<Record<SplitterResizeHandleSlot, string | object>>-

Emits

Splitter

EventPayload
layoutnumber[] - ukuran current setiap panel

SplitterPanel

EventPayload
collapse-
expand-
resizenumber

Slots

SplitterPanel

SlotPropsDeskripsi
default{ isCollapsed, isExpanded, collapse, expand }Konten panel, di-scope dengan live collapse state dan fungsi collapse()/expand() yang sama seperti metode template-ref di bawah

Methods

SplitterPanel

Akses ini melalui template ref pada SSplitterPanel.

MethodDeskripsi
collapse()Menutup panel ke collapsedSize
expand()Mengembalikan panel ke ukuran sebelum terakhir kali ditutup
resize(size: number)Mengatur ukuran panel secara langsung, dalam unit apa pun sizeUnit berada
getSize()Mengembalikan ukuran current panel, dalam unit apa pun sizeUnit berada
isCollapsedApakah panel saat ini ditutup
isExpandedApakah panel saat ini dibuka