The kit's comments and docs describe its props and classes directly instead of by reference to another kit.
13 KiB
-
The language picker switches language in place instead of reloading the page. Views re-render; code that publishes translated text words it again through
onLocaleChange(src/i18n/index.js), and<html lang>/dirand the page'sdata-i18nmarkup follow.persistLocalereplacespersistLocaleAndReload, andregisterUnsavedWorkand the switch's unsaved-work prompt are removed, since a switch no longer loses anything (samehkhamis, #1499). -
A map source's
unavailableReasonmay be a function, read when the reason is shown so it follows the locale; the sources fromcreateDefaultMapSources(./maps/defaults) give functions.MapSourceControllerreads either form (samehkhamis, #1499). -
The application views translate their text with
t()as they render, so it follows the active locale; they no longer carrydata-i18n*attributes, andnpm run i18nrejects those in a Vue template. The boot pass (applyDocumentTranslations) still translates static page markup such as the loading screen and a host's own markup (samehkhamis, #1499). -
The page's locale lives in a vue-i18n instance installed in every application view, and
t(),tn()and the Intl formatters read it from there, so a view that translates while rendering renders again when the locale changes.bindLocale(src/i18n/index.js) keeps the locale in a given ref; Core's Vite config builds vue-i18n without its message compiler. Catalogs, messages and call sites are unchanged (samehkhamis, #1499). -
Cockpit's Display popover shows the Display panel's own HUD, Detection, Parameters and 3D groups through Vue teleports:
CockpitDisplayPortalpublishes the popover's slots (publish, withafterRenderto lay out once they have moved) instead of moving the groups itself (samehkhamis, #1499). -
The Cockpit utility strip's measured layout renders from the
gev-cockpitstore: the layout pass publishesutilityLayout(the HUD's--cockpit-utility-*lengths,primaryOnlyandhideCollapsed), and a host constructingCockpitControllerpassespublish.utilityLayoutbeside its other publishers (samehkhamis, #1499). -
The Cockpit Contact and briefing cards' collapse renders from the
gev-cockpitstore: the controller publishescontextCollapsedandsignalCollapsedin its presence, and each card'sdata-collapsedand its toggle's state, words and icon follow it (samehkhamis, #1499). -
The panels' own state classes (
collapsed,dock-pinned,dock-pinned-top,layout-auto-collapsed,accordion-collapsed) render from thegev-panel-chromestore: the shell, the rails and the accordion present each panel's state there instead of writing its classes.layoutLeftPanelRailandlayoutRightPanelRail(./ui/layout) now callonCollapse(panel, {collapsed, auto})and leave drawing it to the host. Without a shell to own the panels, the voice tools'set_panel_opennow reports that there is no panel to open instead of writing its classes (samehkhamis, #1499). -
The shell's panel chrome no longer writes the panels' collapse buttons, the dock tray toggles' names or the dock pins' pressed state: it presents each panel's open and pinned state to the
gev-panel-chromestore, and the buttons, now views, call it there.bindPanelDisclosure(./ui/panels) binds only a panel's Escape; it no longer takesbuttonsoronChange.UiButtonjoins the component kit (samehkhamis, #1499). -
SceneControls(./ui/scenes) no longer takeselementsor writes the Scene panel's buttons, status, progress or runtime chip: it presents them to thegev-scenesstore and the panel's buttons call its actions there.sceneElements,presentSceneButtons,presentSceneProgressandpresentSceneRuntimegive way tosceneButtonsDisabledandscenePercent. It no longer stands down when the page has no Scene panel: ESC still stops a playing scene and the runtime chip still shows (samehkhamis, #1499). -
initFirstRunExperience(via./application/chrome) no longer writes the launcher's classes, attributes or text, or removes the card: it presents them to the welcome view'sgev-first-runstore (its newstoreoption) and connects the controls the view's buttons call (samehkhamis, #1499). -
IntelHUD(./ui/hud) no longer builds or writes#intel-hud: it hands its readouts, visibility, layout variant and style colors to itspublishoption, and Core'sintel-hudview renders them. A page places that view with<div class="gev-view" data-gev-view="intel-hud">instead of a bare#intel-hudelement../layers/vesselsshows the selected vessel's HUD readout throughservices.readouts.presentSelectedVessel()instead of writing#hud-ais-vessel; the application passessrc/hudReadouts.js, which IntelHUD follows (samehkhamis, #1499). -
LocationControls(./ui/location) no longer builds the city and landmark pills or writes the mini status: it presents the tray, including the search error (setSearchError()), and hands it to itspublishoption, and Core's dock renders it and callschooseCity()andchoosePoi(). Itselementsare now onlysearch:resetButtonsandsearchToggleare gone, and the reset buttons and the search toggle call its newreset()andtoggleSearch(). It presents the search field's open and searching state too (searchExpanded,searching; asearchExpandedoption starts it open), set throughsetSearching(),settleSearch()andcloseSearch(), and a host renders the field'sexpandedandsearchingclasses from it;LocationSearchtakes asetSearchingoption in place of writing the field's class, andNavigationControllerasettleSearchoption in place ofsearchInput.createOrbitIndicator()is replaced byshowOrbit(active), which adds the ORBIT indicator to the presented tray asorbit: { active }(null until offered) (samehkhamis, #1499). -
createMapSourceControls()(./ui/maps) no longer renders the map source chips into acontaineror writes astatusElement: it presents the chip row and status badge and hands them to itspublishoption, and Core's dock renders them and callsselect().renderMapStackChips,syncMapStackChipsandMAP_STACK_CHIP_CLASSare removed (samehkhamis, #1499). -
./layers/launchesno longer writes the Space Missions roster or the selected mission panel into#space-mission-panel-host: the layer publishes both throughsubscribePanel(listener)and Core's Space Missions views render them, calling the layer's panel commands (selectMissionAt,selectPreviousMission,selectNextMission,deselectMission,focusSelectedLaunchSite,startSelectedReplay,toggleReplayPause,cancelReplay,setReplaySpeedand theroster*preview inputs). ThebindMissionRosterItemKeyboardPreview,captureMissionRosterFocusandrestoreMissionRosterFocushelpers are gone; the roster keeps focus itself (samehkhamis, #1499). -
./layers/awarenessno longer writes the Contacts panel into#military-awareness-panel: the layer publishes a plain panel view throughsubscribePanel(listener)and Core's Contacts view renders it, calling the layer'snavigatePrevious,focusCurrent,navigateNextandfocusTarget. TheawarenessPanelControlKey,captureAwarenessPanelFocusandrestoreAwarenessPanelFocushelpers are gone; the view keeps focus itself (samehkhamis, #1499). -
./ui/cctvand./ui/radioimport Vue and Pinia: their controllers publish the panel's state to a store that the CCTV and Radio views render, instead of writing the panel's markup themselves (samehkhamis, #1499). -
./ui/display'sbindDisplayControlsis gone: the Display panel's controls and the dock's style buttons call their owner through the display store'sconnect/act, and its allocation and 3D model choices are the kit'sUiSegmented.initDrawTooltakesconnect(actions), which returns their disconnect, and no longer listens on the Draw controls; its view publishescolorandlabeltoo, and the shape choice is aUiSegmented.initGeoFileImporttakesconnect(actions)the same way and no longer listens on the Import button, picker or list, nor restores focus itself: theGeoImportview does both, and itspublishneed not settle once the list renders. Street Level's fit and panorama filters and Recent Imagery's mode areUiSegmentedtoo: the Street Level store's owner answerssetPanoandsetRenderMode, andRecentImageryReadouttakesonSetMode. The Radio panel's and Cockpit's internet radio controls and the tuner slider's events callRadioControls, and the local RTL-SDR card's controlsLocalSdrControls, through the radio store's newconnect/act; the card labels its gain options itself.actreturns what the answering action returned. The Display, Radio, RTL-SDR, Cockpit, mission replay, style parameter, rail card, observation timeline, imagery opacity, Street Level date and Bhote Koshi sliders are the kit'sUiSlider, a native range input that emits numbers, and the pressed toggles are the kit'sUiButton, which gainspressedClass; so are the rail card chips, map source chips and location pills (which now reportaria-pressed), and the voice card's chips are the kit's newUiChip. The selects are the kit's newUiSelect, the status badges its newUiBadgeand the one-line empty states its newUiEmpty. The top-center clear, share, tilt, north-up and reset buttons, and the cockpit's reset, call the shell through the new globe actions store, which also carries the camera's tilt and compass heading. The recording safe frame renders whatRecordingControlspublishes to the new recording store.syncScopeControls(./ui/display),shouldHideCollapsedRightPanels(./ui/layout),bindClearLayersControl(./ui/layers) andcreateStyleParameters(./ui/input; the Display panel renders the style parameters VisualSettings publishes to the display store) are deprecated: the Display view, the rail and the globe actions view now own what they did../ui/inputimports Vue (samehkhamis, #1499). -
./scenespresents the scene sharing dialogs and the EDIT DETAILS / SHARE SCENE bar through a store that the scene panels view renders, so a page that omitslayer-panelsshows neither (samehkhamis, #1499). -
./voice/control'screateVoiceControl({ panel })returns the voice control's presenter instead of element handles: owners write it by part (update('detail', { text })) and listen withon('button', fn), and the command dock renders it from a store.createVoiceCommands'createControlandVoiceCardControls({ ui }instead of{ root }) take the same presenter; theresetoption is gone, since a newer control replaces the previous one (samehkhamis, #1499). -
Pages place each view with a
<div class="gev-view" data-gev-view="NAME">host and write their own loading screen; thebuild/htmltemplate expansion and itsgev:templatemarkers are gone.createApplicationtakesomitViews(for example['provider-settings']) for views an application leaves out (samehkhamis, #1499). -
The page's panels, dock, cockpit and dialogs are Vue views with the same markup as before. Hosts that do not initialize Core's locale pass
localePicker: falsetocreateApplicationControlsto drop the language picker, and Node tests that import application modules register the component loader with--import=<core>/build/register-vue(samehkhamis, #1499). -
The Data, Authoring, Weather, Recent Imagery, Context, CCTV, Street Level and Radio panels are one component,
UiPanel(src/ui/kit/), with the same markup plus the kit'sui-panelclasses, their titles translated byt()rather thandata-i18n;RailPanelbinds it to the panel chrome store.PanelCollapseButtondrops itsinitialandinitialTitleprops and takesstartCollapsed, so before startup presents a panel its button already shows that state's glyph, words andaria-expanded(samehkhamis, #1499). -
The Authoring, shot list and CCTV buttons and Street Level's nearest button are the kit's
UiButton(danger buttons in thealerttone, primary ones theprimaryvariant), keeping their classes; the CCTV on/off, coverage, auto-hop, projection and adjust toggles now say their state witharia-pressed(samehkhamis, #1499). -
Each desktop sidebar has an icon rail that lists every panel on that side and opens one with a click. One panel is open per side in every HUD layout, so the collapsed panel headers no longer take up the sidebars. Phones keep the bottom tab bar. The rail is the first view built with Vue and Pinia, which now ship with the app; see docs/VUE-MIGRATION.md (samehkhamis, #1499).