Nxdom Framework

Nusantara eXtreme Development Object Model — dokumentasi resmi

Jendela tambahan

Setelah Nexa.js dimuat, NXUI.NexaElectron (alias NXUI.Electron) membuka route SPA di BrowserWindow baru, menyelaraskan opsi layout dengan mainWindowLayout di electron/electronShell.js, dan meneruskan data lewat WindowPayload.

Electron · Express · NexaJS

Ringkasan alur

  1. Renderer memanggil misalnya NXUI.NexaElectron.bindRouteLink(...) atau NXUI.Electron.openRouteWindow('/rute', { … }).
  2. Preload electronAPI.openRouteWindow → IPC nexa-open-route-window.
  3. electron/main.js memvalidasi path, menggabungkan layout, menambah ?nexaHandoff=… bila ada payload, lalu loadURL di jendela sekunder.

API renderer (tanpa import terpisah)

API Keterangan
NXUI.NexaElectron.isAvailable() true jika window.electronAPI.openRouteWindow ada.
NXUI.NexaElectron.bindRouteLink(container, selector, options) Klik tautan → jendela baru. Opsi: route, kunci layout datar (width, height, ContextMenu, …), data / windowPayload, preset, layout.
NXUI.Electron.openRouteWindow(path, options) Membuka jendela secara programatis (tanpa klik).
NXUI.NexaElectron.WindowPayload() Di route target: baca handoff dari localStorage, hapus kunci, dan bersihkan query URL.
NXUI.ROUTE_WINDOW_LAYOUT_SHELL (dan _COMPACT, ROUTE_WINDOW_HANDOFF_PREFIX) Konstanta layout / prefix handoff.
Tautan & NexaRoute: tautan yang dibuka lewat NexaElectron harus memiliki atribut data-nexa-electron-window pada <a> agar delegasi klik NexaRoute di document tidak memanggil stopPropagation sebelum handler Anda — hanya jika electronAPI.openRouteWindow ada; di browser biasa navigasi SPA tetap normal.

Handoff data / windowPayload

Objek yang dapat di-serialize JSON ditulis ke localStorage (bukan sessionStorage; tiap jendela top-level punya session terpisah). Halaman tujuan memanggil WindowPayload() sekali saat route dimuat.

Contoh singkat

NXUI.NexaElectron.bindRouteLink(container, '#buka-sekunder', { route: '/contoh', width: 960, height: 700, data: { id: 1, label: 'dari induk' }, }); // Di halaman /contoh: const payload = NXUI.NexaElectron.WindowPayload(); if (payload != null) console.log(payload);

Implementasi modul renderer ada di assets/modules/Electron/NexaElectron.js (disematkan sebagai NXUI.NexaElectron dari Nexa.js). Perilaku menu konteks per jendela sekunder dan sanitasi layout mengikuti electron/main.js.

File penting → · Panduan Electron →