1
1
import { View } from "tns-core-modules/ui/core/view" ;
2
2
import { LayoutBase } from "tns-core-modules/ui/layouts/layout-base" ;
3
+ import { Page } from "tns-core-modules/ui/page" ;
4
+ import { Frame } from "tns-core-modules/ui/frame" ;
3
5
4
6
export type NgView = ( View & ViewExtensions ) ;
5
7
@@ -157,6 +159,19 @@ export function getSingleViewRecursive(nodes: Array<any>, nestLevel: number): Vi
157
159
return rootLayout ;
158
160
}
159
161
162
+ const frameMeta : ViewClassMeta = {
163
+ insertChild : ( parent : Frame , child : NgView , next : any ) => {
164
+ // Page cannot be added to Frame with _addChildFromBuilder (trows "use defaultPage" error)
165
+ if ( isInvisibleNode ( child ) ) {
166
+ return ;
167
+ } else if ( child instanceof Page ) {
168
+ parent . navigate ( { create : ( ) => child } ) ;
169
+ } else {
170
+ throw new Error ( "Only a Page can be a child of Frame" ) ;
171
+ }
172
+ }
173
+ }
174
+
160
175
// Register default NativeScript components
161
176
// Note: ActionBar related components are registerd together with action-bar directives.
162
177
registerElement ( "AbsoluteLayout" , ( ) => require ( "tns-core-modules/ui/layouts/absolute-layout" ) . AbsoluteLayout ) ;
@@ -166,7 +181,7 @@ registerElement("Button", () => require("tns-core-modules/ui/button").Button);
166
181
registerElement ( "ContentView" , ( ) => require ( "tns-core-modules/ui/content-view" ) . ContentView ) ;
167
182
registerElement ( "DatePicker" , ( ) => require ( "tns-core-modules/ui/date-picker" ) . DatePicker ) ;
168
183
registerElement ( "DockLayout" , ( ) => require ( "tns-core-modules/ui/layouts/dock-layout" ) . DockLayout ) ;
169
- registerElement ( "Frame" , ( ) => require ( "tns-core-modules/ui/frame" ) . Frame ) ;
184
+ registerElement ( "Frame" , ( ) => require ( "tns-core-modules/ui/frame" ) . Frame , frameMeta ) ;
170
185
registerElement ( "GridLayout" , ( ) => require ( "tns-core-modules/ui/layouts/grid-layout" ) . GridLayout ) ;
171
186
registerElement ( "HtmlView" , ( ) => require ( "tns-core-modules/ui/html-view" ) . HtmlView ) ;
172
187
registerElement ( "Image" , ( ) => require ( "tns-core-modules/ui/image" ) . Image ) ;
0 commit comments