mirror of
https://github.com/ionic-team/ionic-framework.git
synced 2025-08-17 10:41:13 +08:00
refactor(nav): remove stencil nav delegate as a component
This commit is contained in:
30
packages/core/src/components.d.ts
vendored
30
packages/core/src/components.d.ts
vendored
@ -1818,36 +1818,6 @@ declare global {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
import {
|
|
||||||
StencilNavDelegate as StencilIonNavDelegate
|
|
||||||
} from './components/nav-controller/stencil-nav-delegate';
|
|
||||||
|
|
||||||
declare global {
|
|
||||||
interface HTMLStencilIonNavDelegateElement extends StencilIonNavDelegate, HTMLElement {
|
|
||||||
}
|
|
||||||
var HTMLStencilIonNavDelegateElement: {
|
|
||||||
prototype: HTMLStencilIonNavDelegateElement;
|
|
||||||
new (): HTMLStencilIonNavDelegateElement;
|
|
||||||
};
|
|
||||||
interface HTMLElementTagNameMap {
|
|
||||||
"stencil-ion-nav-delegate": HTMLStencilIonNavDelegateElement;
|
|
||||||
}
|
|
||||||
interface ElementTagNameMap {
|
|
||||||
"stencil-ion-nav-delegate": HTMLStencilIonNavDelegateElement;
|
|
||||||
}
|
|
||||||
namespace JSX {
|
|
||||||
interface IntrinsicElements {
|
|
||||||
"stencil-ion-nav-delegate": JSXElements.StencilIonNavDelegateAttributes;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
namespace JSXElements {
|
|
||||||
export interface StencilIonNavDelegateAttributes extends HTMLAttributes {
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
import {
|
import {
|
||||||
Nav as IonNav
|
Nav as IonNav
|
||||||
} from './components/nav/nav';
|
} from './components/nav/nav';
|
||||||
|
@ -1,12 +1,6 @@
|
|||||||
import { Component, Method } from '@stencil/core';
|
|
||||||
import { FrameworkDelegate, Nav, ViewController } from '../../index';
|
import { FrameworkDelegate, Nav, ViewController } from '../../index';
|
||||||
|
|
||||||
@Component({
|
export class DomFrameworkDelegate implements FrameworkDelegate {
|
||||||
tag: 'stencil-ion-nav-delegate'
|
|
||||||
})
|
|
||||||
export class StencilNavDelegate implements FrameworkDelegate {
|
|
||||||
|
|
||||||
@Method()
|
|
||||||
attachViewToDom(nav: Nav, enteringView: ViewController): Promise<any> {
|
attachViewToDom(nav: Nav, enteringView: ViewController): Promise<any> {
|
||||||
return new Promise((resolve) => {
|
return new Promise((resolve) => {
|
||||||
const usersElement = document.createElement(enteringView.component) as HTMLElement;
|
const usersElement = document.createElement(enteringView.component) as HTMLElement;
|
||||||
@ -17,7 +11,6 @@ export class StencilNavDelegate implements FrameworkDelegate {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@Method()
|
|
||||||
removeViewFromDom(nav: Nav, leavingView: ViewController): Promise<any> {
|
removeViewFromDom(nav: Nav, leavingView: ViewController): Promise<any> {
|
||||||
nav.element.removeChild(leavingView.element);
|
nav.element.removeChild(leavingView.element);
|
||||||
return Promise.resolve();
|
return Promise.resolve();
|
@ -2,7 +2,7 @@ import { Component, Element, Method, Prop } from '@stencil/core';
|
|||||||
|
|
||||||
import { Animation, AnimationController, ComponentDataPair, FrameworkDelegate, Nav, NavOptions, ViewController } from '../../index';
|
import { Animation, AnimationController, ComponentDataPair, FrameworkDelegate, Nav, NavOptions, ViewController } from '../../index';
|
||||||
|
|
||||||
import { isReady } from '../../utils/helpers';
|
import { DomFrameworkDelegate } from './dom-framework-delegate';
|
||||||
|
|
||||||
import {
|
import {
|
||||||
insert as insertImpl,
|
insert as insertImpl,
|
||||||
@ -115,13 +115,10 @@ export function hydrateDelegate(navController: NavController): Promise<Framework
|
|||||||
if (navController.delegate) {
|
if (navController.delegate) {
|
||||||
return Promise.resolve(navController.delegate);
|
return Promise.resolve(navController.delegate);
|
||||||
}
|
}
|
||||||
// no delegate is set, so fall back to inserting the stencil-ion-nav-delegate
|
|
||||||
const element = document.createElement('stencil-ion-nav-delegate');
|
// no delegate is set, so fall back to using the DomFrameworkDelegate
|
||||||
document.body.appendChild(element);
|
defaultDelegate = new DomFrameworkDelegate();
|
||||||
return isReady(element).then(() => {
|
return Promise.resolve(defaultDelegate);
|
||||||
defaultDelegate = element as any as FrameworkDelegate;
|
|
||||||
return defaultDelegate;
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export function hydrateAnimationController(animationController: AnimationController): Promise<Animation> {
|
export function hydrateAnimationController(animationController: AnimationController): Promise<Animation> {
|
||||||
|
@ -37,7 +37,7 @@ exports.config = {
|
|||||||
{ components: ['ion-range', 'ion-range-knob']},
|
{ components: ['ion-range', 'ion-range-knob']},
|
||||||
{ components: ['ion-tabs', 'ion-tab', 'ion-tabbar', 'ion-tab-button', 'ion-tab-highlight'] },
|
{ components: ['ion-tabs', 'ion-tab', 'ion-tabbar', 'ion-tab-button', 'ion-tab-highlight'] },
|
||||||
{ components: ['ion-toggle'] },
|
{ components: ['ion-toggle'] },
|
||||||
{ components: ['ion-nav', 'ion-nav-controller', 'stencil-ion-nav-delegate'] },
|
{ components: ['ion-nav', 'ion-nav-controller'] },
|
||||||
{ components: ['ion-toast', 'ion-toast-controller'] },
|
{ components: ['ion-toast', 'ion-toast-controller'] },
|
||||||
],
|
],
|
||||||
collections: [
|
collections: [
|
||||||
|
Reference in New Issue
Block a user