diff --git a/packages/core/src/components.d.ts b/packages/core/src/components.d.ts index 5b650eeb7d..47c8e1dce8 100644 --- a/packages/core/src/components.d.ts +++ b/packages/core/src/components.d.ts @@ -1840,6 +1840,38 @@ declare global { } +import { + NavPop as IonNavPush +} from './components/nav-push/nav-push'; + +declare global { + interface HTMLIonNavPushElement extends IonNavPush, HTMLStencilElement { + } + var HTMLIonNavPushElement: { + prototype: HTMLIonNavPushElement; + new (): HTMLIonNavPushElement; + }; + interface HTMLElementTagNameMap { + "ion-nav-push": HTMLIonNavPushElement; + } + interface ElementTagNameMap { + "ion-nav-push": HTMLIonNavPushElement; + } + namespace JSX { + interface IntrinsicElements { + "ion-nav-push": JSXElements.IonNavPushAttributes; + } + } + namespace JSXElements { + export interface IonNavPushAttributes extends HTMLAttributes { + component?: any; + data?: any; + url?: string; + } + } +} + + import { Nav as IonNav } from './components/nav/nav'; diff --git a/packages/core/src/components/nav-push/nav-push.tsx b/packages/core/src/components/nav-push/nav-push.tsx new file mode 100644 index 0000000000..4120f08eb3 --- /dev/null +++ b/packages/core/src/components/nav-push/nav-push.tsx @@ -0,0 +1,28 @@ +import { Component, Element, Listen, Prop } from '@stencil/core'; +import { NavResult } from '../../index'; + +@Component({ + tag: 'ion-nav-push', +}) +export class NavPop { + + @Element() element: HTMLElement; + @Prop() component: any; + @Prop() url: string; + @Prop() data: any; + + @Listen('child:click') + push(): Promise { + const nav = this.element.closest('ion-nav') as HTMLIonNavElement; + if (nav) { + const toPush = this.url || this.component; + return nav.push(toPush, this.data); + } + return Promise.resolve(null); + } + + render() { + return ; + } + +} diff --git a/packages/core/src/components/nav-push/readme.md b/packages/core/src/components/nav-push/readme.md new file mode 100644 index 0000000000..5d2c5f2380 --- /dev/null +++ b/packages/core/src/components/nav-push/readme.md @@ -0,0 +1,45 @@ +# ion-nav-push + + + + + + +## Properties + +#### component + +any + + +#### data + +any + + +#### url + +string + + +## Attributes + +#### component + +any + + +#### data + +any + + +#### url + +string + + + +---------------------------------------------- + +*Built with [StencilJS](https://stenciljs.com/)* diff --git a/packages/core/src/components/nav-push/test/basic/index.html b/packages/core/src/components/nav-push/test/basic/index.html new file mode 100644 index 0000000000..0df74408db --- /dev/null +++ b/packages/core/src/components/nav-push/test/basic/index.html @@ -0,0 +1,103 @@ + + + + + Nav Push + + + + + + + + + + + +