Repository navigation
v1.1.3
Bug fixes in rendering declared views (layouts with several top-level elements, top-level jops tags, views in Router routes, nested tags, views added with addSubView(), views removed while loading) and in the Router hiding routes. No API changes.
Fixes
- Views declared in a layout with more than one top-level element are now rendered in every top-level element. Before, only the declared views (
<X jops …>tags) inside the first top-level element were rendered; tags in the second and later elements stayed in the page as unrendered elements. - A declared view (
<X jops …>) or<Router jops>that is itself a top-level element of a layout is now rendered, e.g. a layout that starts with<Header jops …></Header>followed by other elements. Before, it was rendered only when wrapped in another element. The view that owns the layout keeps the rendered elements as its own, soget(),find(),hide()/show()and removing the view also cover them. - Views declared in the layout of a
Routerroute are now rendered. Before, a route rendered only the plain HTML of its layout, and its<X jops …>tags (and those of the views inside it) stayed in the page as unrendered elements, with no error. - The
Routernow hides inactive routes and covered stacked views even when the app's CSS sets theirdisplay(e.g..stats { display: grid }). It used only thehiddenattribute, which such CSS overrides, so the previous route stayed visible next to the new one. - A declared view nested inside another declared view's tag (
<Outer jops><Inner jops></Inner></Outer>) is now created once and belongs to the outer view. Before, both the outer view and the view containing it could create it, depending on load timing, so it was rendered twice or owned by the wrong view. - A view added with
addSubView()orinsertSubView()now renders the views declared in its layout (<X jops …>tags), before itsonLayout(), as a declared view does. Before, only its plain HTML was shown and those tags stayed unrendered. - A view removed while its declared views are still loading now stops them: the ones that finish loading afterwards are destroyed instead of running
onLayout()/onResume()and staying attached to the removed view.