mirror of
https://github.com/ionic-team/ionic-framework.git
synced 2025-08-17 02:31:34 +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 {
|
||||
Nav as IonNav
|
||||
} from './components/nav/nav';
|
||||
|
@ -1,12 +1,6 @@
|
||||
import { Component, Method } from '@stencil/core';
|
||||
import { FrameworkDelegate, Nav, ViewController } from '../../index';
|
||||
|
||||
@Component({
|
||||
tag: 'stencil-ion-nav-delegate'
|
||||
})
|
||||
export class StencilNavDelegate implements FrameworkDelegate {
|
||||
|
||||
@Method()
|
||||
export class DomFrameworkDelegate implements FrameworkDelegate {
|
||||
attachViewToDom(nav: Nav, enteringView: ViewController): Promise<any> {
|
||||
return new Promise((resolve) => {
|
||||
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> {
|
||||
nav.element.removeChild(leavingView.element);
|
||||
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 { isReady } from '../../utils/helpers';
|
||||
import { DomFrameworkDelegate } from './dom-framework-delegate';
|
||||
|
||||
import {
|
||||
insert as insertImpl,
|
||||
@ -115,13 +115,10 @@ export function hydrateDelegate(navController: NavController): Promise<Framework
|
||||
if (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');
|
||||
document.body.appendChild(element);
|
||||
return isReady(element).then(() => {
|
||||
defaultDelegate = element as any as FrameworkDelegate;
|
||||
return defaultDelegate;
|
||||
});
|
||||
|
||||
// no delegate is set, so fall back to using the DomFrameworkDelegate
|
||||
defaultDelegate = new DomFrameworkDelegate();
|
||||
return Promise.resolve(defaultDelegate);
|
||||
}
|
||||
|
||||
export function hydrateAnimationController(animationController: AnimationController): Promise<Animation> {
|
||||
|
@ -37,7 +37,7 @@ exports.config = {
|
||||
{ components: ['ion-range', 'ion-range-knob']},
|
||||
{ components: ['ion-tabs', 'ion-tab', 'ion-tabbar', 'ion-tab-button', 'ion-tab-highlight'] },
|
||||
{ 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'] },
|
||||
],
|
||||
collections: [
|
||||
|
Reference in New Issue
Block a user