@ionic/angular 9.0.6-dev.11790349282.1a877abd → 9.0.6-dev.11790776272.1d27d1bd
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/css/core.css +1 -1
- package/css/core.css.map +1 -1
- package/css/display.css +1 -1
- package/css/display.css.map +1 -1
- package/css/flex-utils.css +1 -1
- package/css/flex-utils.css.map +1 -1
- package/css/float-elements.css.map +1 -1
- package/css/global.bundle.css.map +1 -1
- package/css/ionic/bundle.ionic.css +1 -0
- package/css/ionic/bundle.ionic.css.map +1 -0
- package/css/ionic/core.ionic.css +1 -0
- package/css/ionic/core.ionic.css.map +1 -0
- package/css/ionic/global.bundle.ionic.css +1 -0
- package/css/ionic/global.bundle.ionic.css.map +1 -0
- package/css/ionic/ionic-swiper.ionic.css +1 -0
- package/css/ionic/ionic-swiper.ionic.css.map +1 -0
- package/css/ionic/link.ionic.css +1 -0
- package/css/ionic/link.ionic.css.map +1 -0
- package/css/ionic/structure.ionic.css +1 -0
- package/css/ionic/structure.ionic.css.map +1 -0
- package/css/ionic/typography.ionic.css +1 -0
- package/css/ionic/typography.ionic.css.map +1 -0
- package/css/ionic/utils.bundle.ionic.css +1 -0
- package/css/ionic/utils.bundle.ionic.css.map +1 -0
- package/css/ionic-swiper.css +1 -1
- package/css/ionic-swiper.css.map +1 -1
- package/css/ionic.bundle.css +1 -1
- package/css/ionic.bundle.css.map +1 -1
- package/css/normalize.css.map +1 -1
- package/css/padding.css.map +1 -1
- package/css/palettes/dark.always.css.map +1 -1
- package/css/palettes/dark.class.css.map +1 -1
- package/css/palettes/dark.system.css.map +1 -1
- package/css/palettes/high-contrast-dark.always.css.map +1 -1
- package/css/palettes/high-contrast-dark.class.css.map +1 -1
- package/css/palettes/high-contrast-dark.system.css.map +1 -1
- package/css/palettes/high-contrast.always.css.map +1 -1
- package/css/palettes/high-contrast.class.css.map +1 -1
- package/css/palettes/high-contrast.system.css.map +1 -1
- package/css/structure.css.map +1 -1
- package/css/text-alignment.css.map +1 -1
- package/css/text-transformation.css.map +1 -1
- package/css/typography.css.map +1 -1
- package/css/utils.bundle.css +1 -1
- package/css/utils.bundle.css.map +1 -1
- package/dist/common/directives/navigation/back-button.d.ts +1 -0
- package/dist/common/directives/navigation/back-button.js +15 -4
- package/dist/common/directives/navigation/back-button.js.map +1 -1
- package/dist/common/directives/navigation/nav.d.ts +2 -0
- package/dist/common/directives/navigation/nav.js +12 -4
- package/dist/common/directives/navigation/nav.js.map +1 -1
- package/dist/common/directives/navigation/router-outlet.d.ts +2 -0
- package/dist/common/directives/navigation/router-outlet.js +8 -2
- package/dist/common/directives/navigation/router-outlet.js.map +1 -1
- package/dist/common/index.d.ts +1 -1
- package/dist/common/index.js +1 -1
- package/dist/common/index.js.map +1 -1
- package/dist/common/overlays/modal.d.ts +9 -0
- package/dist/common/overlays/modal.js +14 -12
- package/dist/common/overlays/modal.js.map +1 -1
- package/dist/common/overlays/popover.d.ts +12 -1
- package/dist/common/overlays/popover.js +16 -13
- package/dist/common/overlays/popover.js.map +1 -1
- package/dist/common/utils/boolean-attribute.d.ts +19 -0
- package/dist/common/utils/boolean-attribute.js +31 -0
- package/dist/common/utils/boolean-attribute.js.map +1 -0
- package/dist/common/utils/proxy.d.ts +7 -0
- package/dist/common/utils/proxy.js +5 -0
- package/dist/common/utils/proxy.js.map +1 -1
- package/dist/lazy/directives/angular-component-lib/boolean-attribute.d.ts +35 -0
- package/dist/lazy/directives/angular-component-lib/boolean-attribute.js +43 -0
- package/dist/lazy/directives/angular-component-lib/boolean-attribute.js.map +1 -0
- package/dist/lazy/directives/proxies-list.d.ts +1 -1
- package/dist/lazy/directives/proxies-list.js +3 -0
- package/dist/lazy/directives/proxies-list.js.map +1 -1
- package/dist/lazy/directives/proxies.d.ts +262 -84
- package/dist/lazy/directives/proxies.js +342 -246
- package/dist/lazy/directives/proxies.js.map +1 -1
- package/dist/lazy/ionic-module.d.ts +1 -1
- package/dist/lazy/ionic-module.js +2 -2
- package/dist/standalone/directives/angular-component-lib/boolean-attribute.d.ts +35 -0
- package/dist/standalone/directives/angular-component-lib/boolean-attribute.js +43 -0
- package/dist/standalone/directives/angular-component-lib/boolean-attribute.js.map +1 -0
- package/dist/standalone/directives/checkbox.d.ts +5 -1
- package/dist/standalone/directives/checkbox.js +9 -6
- package/dist/standalone/directives/checkbox.js.map +1 -1
- package/dist/standalone/directives/datetime.d.ts +9 -0
- package/dist/standalone/directives/datetime.js +14 -12
- package/dist/standalone/directives/datetime.js.map +1 -1
- package/dist/standalone/directives/icon.d.ts +3 -0
- package/dist/standalone/directives/icon.js +19 -3
- package/dist/standalone/directives/icon.js.map +1 -1
- package/dist/standalone/directives/input-otp.d.ts +2 -0
- package/dist/standalone/directives/input-otp.js +7 -5
- package/dist/standalone/directives/input-otp.js.map +1 -1
- package/dist/standalone/directives/input.d.ts +10 -0
- package/dist/standalone/directives/input.js +15 -13
- package/dist/standalone/directives/input.js.map +1 -1
- package/dist/standalone/directives/ion-accordion-group.d.ts +5 -1
- package/dist/standalone/directives/ion-accordion-group.js +4 -3
- package/dist/standalone/directives/ion-accordion-group.js.map +1 -1
- package/dist/standalone/directives/ion-accordion.d.ts +3 -1
- package/dist/standalone/directives/ion-accordion.js +4 -3
- package/dist/standalone/directives/ion-accordion.js.map +1 -1
- package/dist/standalone/directives/ion-action-sheet.d.ts +6 -1
- package/dist/standalone/directives/ion-action-sheet.js +4 -3
- package/dist/standalone/directives/ion-action-sheet.js.map +1 -1
- package/dist/standalone/directives/ion-alert.d.ts +6 -1
- package/dist/standalone/directives/ion-alert.js +4 -3
- package/dist/standalone/directives/ion-alert.js.map +1 -1
- package/dist/standalone/directives/ion-app.d.ts +1 -1
- package/dist/standalone/directives/ion-app.js +3 -2
- package/dist/standalone/directives/ion-app.js.map +1 -1
- package/dist/standalone/directives/ion-avatar.d.ts +2 -1
- package/dist/standalone/directives/ion-avatar.js +5 -3
- package/dist/standalone/directives/ion-avatar.js.map +1 -1
- package/dist/standalone/directives/ion-backdrop.d.ts +4 -1
- package/dist/standalone/directives/ion-backdrop.js +4 -3
- package/dist/standalone/directives/ion-backdrop.js.map +1 -1
- package/dist/standalone/directives/ion-badge.d.ts +1 -1
- package/dist/standalone/directives/ion-badge.js +3 -3
- package/dist/standalone/directives/ion-badge.js.map +1 -1
- package/dist/standalone/directives/ion-breadcrumb.d.ts +4 -1
- package/dist/standalone/directives/ion-breadcrumb.js +4 -3
- package/dist/standalone/directives/ion-breadcrumb.js.map +1 -1
- package/dist/standalone/directives/ion-breadcrumbs.d.ts +1 -1
- package/dist/standalone/directives/ion-breadcrumbs.js +3 -3
- package/dist/standalone/directives/ion-breadcrumbs.js.map +1 -1
- package/dist/standalone/directives/ion-button.d.ts +3 -1
- package/dist/standalone/directives/ion-button.js +4 -3
- package/dist/standalone/directives/ion-button.js.map +1 -1
- package/dist/standalone/directives/ion-buttons.d.ts +2 -1
- package/dist/standalone/directives/ion-buttons.js +4 -3
- package/dist/standalone/directives/ion-buttons.js.map +1 -1
- package/dist/standalone/directives/ion-card-content.d.ts +1 -1
- package/dist/standalone/directives/ion-card-content.js +3 -3
- package/dist/standalone/directives/ion-card-content.js.map +1 -1
- package/dist/standalone/directives/ion-card-header.d.ts +2 -1
- package/dist/standalone/directives/ion-card-header.js +4 -3
- package/dist/standalone/directives/ion-card-header.js.map +1 -1
- package/dist/standalone/directives/ion-card-subtitle.d.ts +1 -1
- package/dist/standalone/directives/ion-card-subtitle.js +3 -3
- package/dist/standalone/directives/ion-card-subtitle.js.map +1 -1
- package/dist/standalone/directives/ion-card-title.d.ts +1 -1
- package/dist/standalone/directives/ion-card-title.js +3 -3
- package/dist/standalone/directives/ion-card-title.js.map +1 -1
- package/dist/standalone/directives/ion-card.d.ts +3 -1
- package/dist/standalone/directives/ion-card.js +4 -3
- package/dist/standalone/directives/ion-card.js.map +1 -1
- package/dist/standalone/directives/ion-chip.d.ts +3 -1
- package/dist/standalone/directives/ion-chip.js +4 -3
- package/dist/standalone/directives/ion-chip.js.map +1 -1
- package/dist/standalone/directives/ion-col.d.ts +1 -1
- package/dist/standalone/directives/ion-col.js +3 -3
- package/dist/standalone/directives/ion-col.js.map +1 -1
- package/dist/standalone/directives/ion-content.d.ts +6 -1
- package/dist/standalone/directives/ion-content.js +4 -3
- package/dist/standalone/directives/ion-content.js.map +1 -1
- package/dist/standalone/directives/ion-datetime-button.d.ts +2 -1
- package/dist/standalone/directives/ion-datetime-button.js +4 -3
- package/dist/standalone/directives/ion-datetime-button.js.map +1 -1
- package/dist/standalone/directives/ion-divider.d.ts +13 -0
- package/dist/standalone/directives/ion-divider.js +37 -0
- package/dist/standalone/directives/ion-divider.js.map +1 -0
- package/dist/standalone/directives/ion-fab-button.d.ts +5 -1
- package/dist/standalone/directives/ion-fab-button.js +4 -3
- package/dist/standalone/directives/ion-fab-button.js.map +1 -1
- package/dist/standalone/directives/ion-fab-list.d.ts +2 -1
- package/dist/standalone/directives/ion-fab-list.js +4 -3
- package/dist/standalone/directives/ion-fab-list.js.map +1 -1
- package/dist/standalone/directives/ion-fab.d.ts +3 -1
- package/dist/standalone/directives/ion-fab.js +4 -3
- package/dist/standalone/directives/ion-fab.js.map +1 -1
- package/dist/standalone/directives/ion-footer.d.ts +2 -1
- package/dist/standalone/directives/ion-footer.js +4 -3
- package/dist/standalone/directives/ion-footer.js.map +1 -1
- package/dist/standalone/directives/ion-gallery-item.d.ts +12 -0
- package/dist/standalone/directives/ion-gallery-item.js +36 -0
- package/dist/standalone/directives/ion-gallery-item.js.map +1 -0
- package/dist/standalone/directives/ion-gallery.d.ts +12 -0
- package/dist/standalone/directives/ion-gallery.js +36 -0
- package/dist/standalone/directives/ion-gallery.js.map +1 -0
- package/dist/standalone/directives/ion-grid.d.ts +2 -1
- package/dist/standalone/directives/ion-grid.js +4 -3
- package/dist/standalone/directives/ion-grid.js.map +1 -1
- package/dist/standalone/directives/ion-header.d.ts +3 -1
- package/dist/standalone/directives/ion-header.js +4 -3
- package/dist/standalone/directives/ion-header.js.map +1 -1
- package/dist/standalone/directives/ion-img.d.ts +1 -1
- package/dist/standalone/directives/ion-img.js +3 -3
- package/dist/standalone/directives/ion-img.js.map +1 -1
- package/dist/standalone/directives/ion-infinite-scroll-content.d.ts +1 -1
- package/dist/standalone/directives/ion-infinite-scroll-content.js +3 -3
- package/dist/standalone/directives/ion-infinite-scroll-content.js.map +1 -1
- package/dist/standalone/directives/ion-infinite-scroll.d.ts +3 -1
- package/dist/standalone/directives/ion-infinite-scroll.js +4 -3
- package/dist/standalone/directives/ion-infinite-scroll.js.map +1 -1
- package/dist/standalone/directives/ion-item-divider.d.ts +2 -1
- package/dist/standalone/directives/ion-item-divider.js +4 -3
- package/dist/standalone/directives/ion-item-divider.js.map +1 -1
- package/dist/standalone/directives/ion-item-group.d.ts +1 -1
- package/dist/standalone/directives/ion-item-group.js +4 -3
- package/dist/standalone/directives/ion-item-group.js.map +1 -1
- package/dist/standalone/directives/ion-item-option.d.ts +3 -1
- package/dist/standalone/directives/ion-item-option.js +4 -3
- package/dist/standalone/directives/ion-item-option.js.map +1 -1
- package/dist/standalone/directives/ion-item-options.d.ts +1 -1
- package/dist/standalone/directives/ion-item-options.js +3 -3
- package/dist/standalone/directives/ion-item-options.js.map +1 -1
- package/dist/standalone/directives/ion-item-sliding.d.ts +2 -1
- package/dist/standalone/directives/ion-item-sliding.js +4 -3
- package/dist/standalone/directives/ion-item-sliding.js.map +1 -1
- package/dist/standalone/directives/ion-item.d.ts +4 -1
- package/dist/standalone/directives/ion-item.js +4 -3
- package/dist/standalone/directives/ion-item.js.map +1 -1
- package/dist/standalone/directives/ion-label.d.ts +1 -1
- package/dist/standalone/directives/ion-label.js +3 -3
- package/dist/standalone/directives/ion-label.js.map +1 -1
- package/dist/standalone/directives/ion-list-header.d.ts +1 -1
- package/dist/standalone/directives/ion-list-header.js +3 -3
- package/dist/standalone/directives/ion-list-header.js.map +1 -1
- package/dist/standalone/directives/ion-list.d.ts +2 -1
- package/dist/standalone/directives/ion-list.js +4 -3
- package/dist/standalone/directives/ion-list.js.map +1 -1
- package/dist/standalone/directives/ion-loading.d.ts +7 -1
- package/dist/standalone/directives/ion-loading.js +4 -3
- package/dist/standalone/directives/ion-loading.js.map +1 -1
- package/dist/standalone/directives/ion-menu-button.d.ts +3 -1
- package/dist/standalone/directives/ion-menu-button.js +4 -3
- package/dist/standalone/directives/ion-menu-button.js.map +1 -1
- package/dist/standalone/directives/ion-menu-toggle.d.ts +2 -1
- package/dist/standalone/directives/ion-menu-toggle.js +4 -3
- package/dist/standalone/directives/ion-menu-toggle.js.map +1 -1
- package/dist/standalone/directives/ion-menu.d.ts +3 -1
- package/dist/standalone/directives/ion-menu.js +4 -3
- package/dist/standalone/directives/ion-menu.js.map +1 -1
- package/dist/standalone/directives/ion-nav-link.d.ts +1 -1
- package/dist/standalone/directives/ion-nav-link.js +3 -3
- package/dist/standalone/directives/ion-nav-link.js.map +1 -1
- package/dist/standalone/directives/ion-note.d.ts +1 -1
- package/dist/standalone/directives/ion-note.js +3 -3
- package/dist/standalone/directives/ion-note.js.map +1 -1
- package/dist/standalone/directives/ion-picker-column-option.d.ts +2 -1
- package/dist/standalone/directives/ion-picker-column-option.js +4 -3
- package/dist/standalone/directives/ion-picker-column-option.js.map +1 -1
- package/dist/standalone/directives/ion-picker-column.d.ts +2 -1
- package/dist/standalone/directives/ion-picker-column.js +4 -3
- package/dist/standalone/directives/ion-picker-column.js.map +1 -1
- package/dist/standalone/directives/ion-picker.d.ts +1 -1
- package/dist/standalone/directives/ion-picker.js +3 -3
- package/dist/standalone/directives/ion-picker.js.map +1 -1
- package/dist/standalone/directives/ion-progress-bar.d.ts +2 -1
- package/dist/standalone/directives/ion-progress-bar.js +4 -3
- package/dist/standalone/directives/ion-progress-bar.js.map +1 -1
- package/dist/standalone/directives/ion-radio.d.ts +2 -1
- package/dist/standalone/directives/ion-radio.js +4 -3
- package/dist/standalone/directives/ion-radio.js.map +1 -1
- package/dist/standalone/directives/ion-refresher-content.d.ts +1 -1
- package/dist/standalone/directives/ion-refresher-content.js +3 -3
- package/dist/standalone/directives/ion-refresher-content.js.map +1 -1
- package/dist/standalone/directives/ion-refresher.d.ts +2 -1
- package/dist/standalone/directives/ion-refresher.js +4 -3
- package/dist/standalone/directives/ion-refresher.js.map +1 -1
- package/dist/standalone/directives/ion-reorder-group.d.ts +2 -1
- package/dist/standalone/directives/ion-reorder-group.js +4 -3
- package/dist/standalone/directives/ion-reorder-group.js.map +1 -1
- package/dist/standalone/directives/ion-reorder.d.ts +1 -1
- package/dist/standalone/directives/ion-reorder.js +4 -3
- package/dist/standalone/directives/ion-reorder.js.map +1 -1
- package/dist/standalone/directives/ion-ripple-effect.d.ts +1 -1
- package/dist/standalone/directives/ion-ripple-effect.js +3 -3
- package/dist/standalone/directives/ion-ripple-effect.js.map +1 -1
- package/dist/standalone/directives/ion-row.d.ts +1 -1
- package/dist/standalone/directives/ion-row.js +4 -3
- package/dist/standalone/directives/ion-row.js.map +1 -1
- package/dist/standalone/directives/ion-segment-button.d.ts +2 -1
- package/dist/standalone/directives/ion-segment-button.js +4 -3
- package/dist/standalone/directives/ion-segment-button.js.map +1 -1
- package/dist/standalone/directives/ion-segment-view.d.ts +2 -0
- package/dist/standalone/directives/ion-segment-view.js +3 -2
- package/dist/standalone/directives/ion-segment-view.js.map +1 -1
- package/dist/standalone/directives/ion-select-modal.d.ts +3 -1
- package/dist/standalone/directives/ion-select-modal.js +4 -3
- package/dist/standalone/directives/ion-select-modal.js.map +1 -1
- package/dist/standalone/directives/ion-select-option.d.ts +2 -1
- package/dist/standalone/directives/ion-select-option.js +4 -3
- package/dist/standalone/directives/ion-select-option.js.map +1 -1
- package/dist/standalone/directives/ion-skeleton-text.d.ts +2 -1
- package/dist/standalone/directives/ion-skeleton-text.js +4 -3
- package/dist/standalone/directives/ion-skeleton-text.js.map +1 -1
- package/dist/standalone/directives/ion-spinner.d.ts +2 -1
- package/dist/standalone/directives/ion-spinner.js +4 -3
- package/dist/standalone/directives/ion-spinner.js.map +1 -1
- package/dist/standalone/directives/ion-split-pane.d.ts +2 -1
- package/dist/standalone/directives/ion-split-pane.js +4 -3
- package/dist/standalone/directives/ion-split-pane.js.map +1 -1
- package/dist/standalone/directives/ion-tab-bar.d.ts +2 -1
- package/dist/standalone/directives/ion-tab-bar.js +4 -3
- package/dist/standalone/directives/ion-tab-bar.js.map +1 -1
- package/dist/standalone/directives/ion-tab-button.d.ts +3 -1
- package/dist/standalone/directives/ion-tab-button.js +4 -3
- package/dist/standalone/directives/ion-tab-button.js.map +1 -1
- package/dist/standalone/directives/ion-tab.d.ts +1 -1
- package/dist/standalone/directives/ion-tab.js +3 -3
- package/dist/standalone/directives/ion-tab.js.map +1 -1
- package/dist/standalone/directives/ion-text.d.ts +1 -1
- package/dist/standalone/directives/ion-text.js +3 -3
- package/dist/standalone/directives/ion-text.js.map +1 -1
- package/dist/standalone/directives/ion-thumbnail.d.ts +1 -1
- package/dist/standalone/directives/ion-thumbnail.js +4 -3
- package/dist/standalone/directives/ion-thumbnail.js.map +1 -1
- package/dist/standalone/directives/ion-title.d.ts +1 -1
- package/dist/standalone/directives/ion-title.js +3 -3
- package/dist/standalone/directives/ion-title.js.map +1 -1
- package/dist/standalone/directives/ion-toast.d.ts +5 -1
- package/dist/standalone/directives/ion-toast.js +4 -3
- package/dist/standalone/directives/ion-toast.js.map +1 -1
- package/dist/standalone/directives/ion-toolbar.d.ts +1 -1
- package/dist/standalone/directives/ion-toolbar.js +3 -3
- package/dist/standalone/directives/ion-toolbar.js.map +1 -1
- package/dist/standalone/directives/proxies.d.ts +3 -0
- package/dist/standalone/directives/proxies.js +3 -0
- package/dist/standalone/directives/proxies.js.map +1 -1
- package/dist/standalone/directives/radio-group.d.ts +1 -0
- package/dist/standalone/directives/radio-group.js +13 -4
- package/dist/standalone/directives/radio-group.js.map +1 -1
- package/dist/standalone/directives/range.d.ts +5 -0
- package/dist/standalone/directives/range.js +10 -8
- package/dist/standalone/directives/range.js.map +1 -1
- package/dist/standalone/directives/searchbar.d.ts +4 -0
- package/dist/standalone/directives/searchbar.js +9 -7
- package/dist/standalone/directives/searchbar.js.map +1 -1
- package/dist/standalone/directives/segment.d.ts +4 -0
- package/dist/standalone/directives/segment.js +14 -4
- package/dist/standalone/directives/segment.js.map +1 -1
- package/dist/standalone/directives/select.d.ts +5 -1
- package/dist/standalone/directives/select.js +9 -5
- package/dist/standalone/directives/select.js.map +1 -1
- package/dist/standalone/directives/textarea.d.ts +8 -0
- package/dist/standalone/directives/textarea.js +13 -11
- package/dist/standalone/directives/textarea.js.map +1 -1
- package/dist/standalone/directives/toggle.d.ts +5 -1
- package/dist/standalone/directives/toggle.js +9 -6
- package/dist/standalone/directives/toggle.js.map +1 -1
- package/package.json +5 -2
|
@@ -18,4 +18,6 @@ export declare class IonNav {
|
|
|
18
18
|
constructor(ref: ElementRef, environmentInjector: EnvironmentInjector, injector: Injector, angularDelegate: AngularDelegate, z: NgZone, c: ChangeDetectorRef);
|
|
19
19
|
static ɵfac: i0.ɵɵFactoryDeclaration<IonNav, never>;
|
|
20
20
|
static ɵdir: i0.ɵɵDirectiveDeclaration<IonNav, never, never, { "animated": { "alias": "animated"; "required": false; }; "animation": { "alias": "animation"; "required": false; }; "root": { "alias": "root"; "required": false; }; "rootParams": { "alias": "rootParams"; "required": false; }; "swipeGesture": { "alias": "swipeGesture"; "required": false; }; }, {}, never, never, true, never>;
|
|
21
|
+
static ngAcceptInputType_animated: boolean | string | null | undefined;
|
|
22
|
+
static ngAcceptInputType_swipeGesture: boolean | string | null | undefined;
|
|
21
23
|
}
|
|
@@ -1,9 +1,17 @@
|
|
|
1
1
|
import { __decorate } from "tslib";
|
|
2
2
|
import { Directive, } from '@angular/core';
|
|
3
|
-
import {
|
|
3
|
+
import { nullableBooleanAttribute } from '../../utils/boolean-attribute';
|
|
4
|
+
import { inputNames, ProxyCmp, proxyOutputs } from '../../utils/proxy';
|
|
4
5
|
import * as i0 from "@angular/core";
|
|
5
6
|
import * as i1 from "../../providers/angular-delegate";
|
|
6
|
-
const NAV_INPUTS = [
|
|
7
|
+
const NAV_INPUTS = [
|
|
8
|
+
{ name: 'animated', transform: nullableBooleanAttribute },
|
|
9
|
+
'animation',
|
|
10
|
+
'root',
|
|
11
|
+
'rootParams',
|
|
12
|
+
{ name: 'swipeGesture', transform: nullableBooleanAttribute },
|
|
13
|
+
];
|
|
14
|
+
const NAV_PROXY_INPUTS = inputNames(NAV_INPUTS);
|
|
7
15
|
const NAV_METHODS = [
|
|
8
16
|
'push',
|
|
9
17
|
'insert',
|
|
@@ -30,11 +38,11 @@ let IonNav = class IonNav {
|
|
|
30
38
|
proxyOutputs(this, this.el, ['ionNavDidChange', 'ionNavWillChange']);
|
|
31
39
|
}
|
|
32
40
|
/** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.0", ngImport: i0, type: IonNav, deps: [{ token: i0.ElementRef }, { token: i0.EnvironmentInjector }, { token: i0.Injector }, { token: i1.AngularDelegate }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
33
|
-
/** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "
|
|
41
|
+
/** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "22.0.0", type: IonNav, isStandalone: true, inputs: { animated: ["animated", "animated", nullableBooleanAttribute], animation: "animation", root: "root", rootParams: "rootParams", swipeGesture: ["swipeGesture", "swipeGesture", nullableBooleanAttribute] }, ngImport: i0 });
|
|
34
42
|
};
|
|
35
43
|
IonNav = __decorate([
|
|
36
44
|
ProxyCmp({
|
|
37
|
-
inputs:
|
|
45
|
+
inputs: NAV_PROXY_INPUTS,
|
|
38
46
|
methods: NAV_METHODS,
|
|
39
47
|
})
|
|
40
48
|
], IonNav);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nav.js","sourceRoot":"","sources":["../../../../src/common/directives/navigation/nav.ts"],"names":[],"mappings":";AAAA,OAAO,EAML,SAAS,GAEV,MAAM,eAAe,CAAC;AAIvB,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;;;
|
|
1
|
+
{"version":3,"file":"nav.js","sourceRoot":"","sources":["../../../../src/common/directives/navigation/nav.ts"],"names":[],"mappings":";AAAA,OAAO,EAML,SAAS,GAEV,MAAM,eAAe,CAAC;AAIvB,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;;;AAEvE,MAAM,UAAU,GAAG;IACjB,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,wBAAwB,EAAE;IACzD,WAAW;IACX,MAAM;IACN,YAAY;IACZ,EAAE,IAAI,EAAE,cAAc,EAAE,SAAS,EAAE,wBAAwB,EAAE;CAC9D,CAAC;AAEF,MAAM,gBAAgB,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;AAEhD,MAAM,WAAW,GAAG;IAClB,MAAM;IACN,QAAQ;IACR,aAAa;IACb,KAAK;IACL,OAAO;IACP,WAAW;IACX,aAAa;IACb,SAAS;IACT,UAAU;IACV,WAAW;IACX,YAAY;IACZ,WAAW;IACX,aAAa;CACd,CAAC;AAqBK,IAAM,MAAM,GAAZ,MAAM,MAAM;IAOL;IANF,EAAE,CAAc;IAC1B,YACE,GAAe,EACf,mBAAwC,EACxC,QAAkB,EAClB,eAAgC,EACtB,CAAS,EACnB,CAAoB;QADV,MAAC,GAAD,CAAC,CAAQ;QAGnB,CAAC,CAAC,MAAM,EAAE,CAAC;QACX,IAAI,CAAC,EAAE,GAAG,GAAG,CAAC,aAAa,CAAC;QAC5B,GAAG,CAAC,aAAa,CAAC,QAAQ,GAAG,eAAe,CAAC,MAAM,CAAC,mBAAmB,EAAE,QAAQ,CAAC,CAAC;QACnF,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,EAAE,kBAAkB,CAAC,CAAC,CAAC;IACvE,CAAC;0HAdU,MAAM;8GAAN,MAAM,mEA5Cc,wBAAwB,kHAIpB,wBAAwB;;AAwChD,MAAM;IARlB,QAAQ,CAAC;QACR,MAAM,EAAE,gBAAgB;QACxB,OAAO,EAAE,WAAW;KACrB,CAAC;GAKW,MAAM,CAelB;;2FAfY,MAAM;kBAJlB,SAAS;mBAAC;oBACT,uEAAuE;oBACvE,MAAM,EAAE,UAAU;iBACnB","sourcesContent":["import {\n ElementRef,\n Injector,\n EnvironmentInjector,\n NgZone,\n ChangeDetectorRef,\n Directive,\n EventEmitter,\n} from '@angular/core';\nimport type { Components } from '@ionic/core';\n\nimport { AngularDelegate } from '../../providers/angular-delegate';\nimport { nullableBooleanAttribute } from '../../utils/boolean-attribute';\nimport { inputNames, ProxyCmp, proxyOutputs } from '../../utils/proxy';\n\nconst NAV_INPUTS = [\n { name: 'animated', transform: nullableBooleanAttribute },\n 'animation',\n 'root',\n 'rootParams',\n { name: 'swipeGesture', transform: nullableBooleanAttribute },\n];\n\nconst NAV_PROXY_INPUTS = inputNames(NAV_INPUTS);\n\nconst NAV_METHODS = [\n 'push',\n 'insert',\n 'insertPages',\n 'pop',\n 'popTo',\n 'popToRoot',\n 'removeIndex',\n 'setRoot',\n 'setPages',\n 'getActive',\n 'getByIndex',\n 'canGoBack',\n 'getPrevious',\n];\n\nexport declare interface IonNav extends Components.IonNav {\n /**\n * Event fired when the nav will change components\n */\n ionNavWillChange: EventEmitter<CustomEvent<void>>;\n /**\n * Event fired when the nav has changed components\n */\n ionNavDidChange: EventEmitter<CustomEvent<void>>;\n}\n\n@ProxyCmp({\n inputs: NAV_PROXY_INPUTS,\n methods: NAV_METHODS,\n})\n@Directive({\n // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property\n inputs: NAV_INPUTS,\n})\nexport class IonNav {\n protected el: HTMLElement;\n constructor(\n ref: ElementRef,\n environmentInjector: EnvironmentInjector,\n injector: Injector,\n angularDelegate: AngularDelegate,\n protected z: NgZone,\n c: ChangeDetectorRef\n ) {\n c.detach();\n this.el = ref.nativeElement;\n ref.nativeElement.delegate = angularDelegate.create(environmentInjector, injector);\n proxyOutputs(this, this.el, ['ionNavDidChange', 'ionNavWillChange']);\n }\n}\n"]}
|
|
@@ -100,5 +100,7 @@ export declare abstract class IonRouterOutlet implements OnDestroy, OnInit {
|
|
|
100
100
|
private updateActivatedRouteProxy;
|
|
101
101
|
static ɵfac: i0.ɵɵFactoryDeclaration<IonRouterOutlet, [{ attribute: "name"; }, { attribute: "tabs"; optional: true; }, null, null, null, null, null, { optional: true; skipSelf: true; }]>;
|
|
102
102
|
static ɵdir: i0.ɵɵDirectiveDeclaration<IonRouterOutlet, "ion-router-outlet", ["outlet"], { "animated": { "alias": "animated"; "required": false; }; "animation": { "alias": "animation"; "required": false; }; "mode": { "alias": "mode"; "required": false; }; "swipeGesture": { "alias": "swipeGesture"; "required": false; }; "name": { "alias": "name"; "required": false; }; }, { "stackWillChange": "stackWillChange"; "stackDidChange": "stackDidChange"; "activateEvents": "activate"; "deactivateEvents": "deactivate"; }, never, never, true, never>;
|
|
103
|
+
static ngAcceptInputType_animated: boolean | string | null | undefined;
|
|
104
|
+
static ngAcceptInputType_swipeGesture: boolean | string | null | undefined;
|
|
103
105
|
}
|
|
104
106
|
export declare const provideComponentInputBinding: () => Provider;
|
|
@@ -5,6 +5,7 @@ import { BehaviorSubject, combineLatest, of } from 'rxjs';
|
|
|
5
5
|
import { distinctUntilChanged, filter, switchMap } from 'rxjs/operators';
|
|
6
6
|
import { Config } from '../../providers/config';
|
|
7
7
|
import { NavController } from '../../providers/nav-controller';
|
|
8
|
+
import { nullableBooleanAttribute } from '../../utils/boolean-attribute';
|
|
8
9
|
import { StackController } from './stack-controller';
|
|
9
10
|
import { getUrl, isTabSwitch } from './stack-utils';
|
|
10
11
|
import * as i0 from "@angular/core";
|
|
@@ -334,7 +335,7 @@ export class IonRouterOutlet {
|
|
|
334
335
|
this.currentActivatedRoute$.next({ component, activatedRoute });
|
|
335
336
|
}
|
|
336
337
|
/** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.0", ngImport: i0, type: IonRouterOutlet, deps: [{ token: 'name', attribute: true }, { token: 'tabs', attribute: true, optional: true }, { token: i1.Location }, { token: i0.ElementRef }, { token: i2.Router }, { token: i0.NgZone }, { token: i2.ActivatedRoute }, { token: IonRouterOutlet, optional: true, skipSelf: true }], target: i0.ɵɵFactoryTarget.Directive });
|
|
337
|
-
/** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "
|
|
338
|
+
/** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "22.0.0", type: IonRouterOutlet, isStandalone: true, selector: "ion-router-outlet", inputs: { animated: ["animated", "animated", nullableBooleanAttribute], animation: "animation", mode: "mode", swipeGesture: ["swipeGesture", "swipeGesture", nullableBooleanAttribute], name: "name" }, outputs: { stackWillChange: "stackWillChange", stackDidChange: "stackDidChange", activateEvents: "activate", deactivateEvents: "deactivate" }, exportAs: ["outlet"], ngImport: i0 });
|
|
338
339
|
}
|
|
339
340
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.0", ngImport: i0, type: IonRouterOutlet, decorators: [{
|
|
340
341
|
type: Directive,
|
|
@@ -342,7 +343,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.0", ngImpor
|
|
|
342
343
|
selector: 'ion-router-outlet',
|
|
343
344
|
exportAs: 'outlet',
|
|
344
345
|
// eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
|
|
345
|
-
inputs: [
|
|
346
|
+
inputs: [
|
|
347
|
+
{ name: 'animated', transform: nullableBooleanAttribute },
|
|
348
|
+
'animation',
|
|
349
|
+
'mode',
|
|
350
|
+
{ name: 'swipeGesture', transform: nullableBooleanAttribute },
|
|
351
|
+
],
|
|
346
352
|
}]
|
|
347
353
|
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
348
354
|
type: Attribute,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"router-outlet.js","sourceRoot":"","sources":["../../../../src/common/directives/navigation/router-outlet.ts"],"names":[],"mappings":"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","sourcesContent":["import { Location } from '@angular/common';\nimport {\n ComponentRef,\n ElementRef,\n Injector,\n NgZone,\n OnDestroy,\n OnInit,\n ViewContainerRef,\n inject,\n Attribute,\n Directive,\n EventEmitter,\n Optional,\n Output,\n SkipSelf,\n EnvironmentInjector,\n Input,\n InjectionToken,\n Injectable,\n reflectComponentType,\n} from '@angular/core';\nimport type { Provider } from '@angular/core';\nimport { OutletContext, Router, ActivatedRoute, ChildrenOutletContexts, PRIMARY_OUTLET, Data } from '@angular/router';\nimport { componentOnReady } from '@ionic/core/components';\nimport type { AnimationBuilder } from '@ionic/core/components';\nimport { Observable, BehaviorSubject, Subscription, combineLatest, of } from 'rxjs';\nimport { distinctUntilChanged, filter, switchMap } from 'rxjs/operators';\n\nimport { Config } from '../../providers/config';\nimport { NavController } from '../../providers/nav-controller';\n\nimport { StackController } from './stack-controller';\nimport { RouteView, StackDidChangeEvent, StackWillChangeEvent, getUrl, isTabSwitch } from './stack-utils';\n\n// TODO(FW-2827): types\n\n@Directive({\n selector: 'ion-router-outlet',\n exportAs: 'outlet',\n // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property\n inputs: ['animated', 'animation', 'mode', 'swipeGesture'],\n})\nexport abstract class IonRouterOutlet implements OnDestroy, OnInit {\n abstract outletContent: any;\n\n nativeEl: HTMLIonRouterOutletElement;\n activatedView: RouteView | null = null;\n tabsPrefix: string | undefined;\n\n private _swipeGesture?: boolean;\n private stackCtrl: StackController;\n\n // Maintain map of activated route proxies for each component instance\n private proxyMap = new WeakMap<any, ActivatedRoute>();\n // Keep the latest activated route in a subject for the proxy routes to switch map to\n private currentActivatedRoute$ = new BehaviorSubject<{ component: any; activatedRoute: ActivatedRoute } | null>(null);\n\n private activated: ComponentRef<any> | null = null;\n /** @internal */\n get activatedComponentRef(): ComponentRef<any> | null {\n return this.activated;\n }\n private _activatedRoute: ActivatedRoute | null = null;\n\n /**\n * The name of the outlet\n */\n @Input() name = PRIMARY_OUTLET;\n\n /** @internal */\n @Output() stackWillChange = new EventEmitter<StackWillChangeEvent>();\n /** @internal */\n @Output() stackDidChange = new EventEmitter<StackDidChangeEvent>();\n\n // eslint-disable-next-line @angular-eslint/no-output-rename\n @Output('activate') activateEvents = new EventEmitter<any>();\n // eslint-disable-next-line @angular-eslint/no-output-rename\n @Output('deactivate') deactivateEvents = new EventEmitter<any>();\n\n private parentContexts = inject(ChildrenOutletContexts);\n private location = inject(ViewContainerRef);\n private environmentInjector = inject(EnvironmentInjector);\n private inputBinder = inject(INPUT_BINDER, { optional: true });\n /** @nodoc */\n readonly supportsBindingToComponentInputs = true;\n\n // Ionic providers\n private config = inject(Config);\n private navCtrl = inject(NavController);\n\n set animation(animation: AnimationBuilder) {\n this.nativeEl.animation = animation;\n }\n\n set animated(animated: boolean) {\n this.nativeEl.animated = animated;\n }\n\n set swipeGesture(swipe: boolean) {\n this._swipeGesture = swipe;\n\n this.nativeEl.swipeHandler = swipe\n ? {\n canStart: () => this.stackCtrl.canGoBack(1) && !this.stackCtrl.hasRunningTask(),\n onStart: () => this.stackCtrl.startBackTransition(),\n onEnd: (shouldContinue) => this.stackCtrl.endBackTransition(shouldContinue),\n }\n : undefined;\n\n this.nativeEl.swipeGesture = swipe;\n }\n\n constructor(\n @Attribute('name') name: string,\n @Optional() @Attribute('tabs') tabs: string,\n commonLocation: Location,\n elementRef: ElementRef,\n router: Router,\n zone: NgZone,\n activatedRoute: ActivatedRoute,\n @SkipSelf() @Optional() readonly parentOutlet?: IonRouterOutlet\n ) {\n this.nativeEl = elementRef.nativeElement;\n this.name = name || PRIMARY_OUTLET;\n this.tabsPrefix = tabs === 'true' ? getUrl(router, activatedRoute) : undefined;\n this.stackCtrl = new StackController(this.tabsPrefix, this.nativeEl, router, this.navCtrl, zone, commonLocation);\n this.parentContexts.onChildOutletCreated(this.name, this as any);\n }\n\n ngOnDestroy(): void {\n this.stackCtrl.destroy();\n this.inputBinder?.unsubscribeFromRouteData(this);\n }\n\n getContext(): OutletContext | null {\n return this.parentContexts.getContext(this.name);\n }\n\n ngOnInit(): void {\n this.initializeOutletWithName();\n }\n\n // Note: Ionic deviates from the Angular Router implementation here\n private initializeOutletWithName() {\n if (!this.activated) {\n // If the outlet was not instantiated at the time the route got activated we need to populate\n // the outlet when it is initialized (ie inside a NgIf)\n const context = this.getContext();\n if (context?.route) {\n this.activateWith(context.route, context.injector);\n }\n }\n\n new Promise((resolve) => componentOnReady(this.nativeEl, resolve)).then(() => {\n if (this._swipeGesture === undefined) {\n this.swipeGesture = this.config.getBoolean('swipeBackEnabled', (this.nativeEl as any).mode === 'ios');\n }\n });\n }\n\n get isActivated(): boolean {\n return !!this.activated;\n }\n\n get component(): Record<string, unknown> {\n if (!this.activated) {\n throw new Error('Outlet is not activated');\n }\n return this.activated.instance;\n }\n\n get activatedRoute(): ActivatedRoute {\n if (!this.activated) {\n throw new Error('Outlet is not activated');\n }\n return this._activatedRoute as ActivatedRoute;\n }\n\n get activatedRouteData(): Data {\n if (this._activatedRoute) {\n return this._activatedRoute.snapshot.data;\n }\n return {};\n }\n\n /**\n * Called when the `RouteReuseStrategy` instructs to detach the subtree\n */\n detach(): ComponentRef<any> {\n throw new Error('incompatible reuse strategy');\n }\n\n /**\n * Called when the `RouteReuseStrategy` instructs to re-attach a previously detached subtree\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n attach(_ref: ComponentRef<any>, _activatedRoute: ActivatedRoute): void {\n throw new Error('incompatible reuse strategy');\n }\n\n deactivate(): void {\n if (this.activated) {\n if (this.activatedView) {\n const context = this.getContext()!;\n this.activatedView.savedData = new Map(context.children['contexts']);\n\n /**\n * Angular v11.2.10 introduced a change\n * where this route context is cleared out when\n * a router-outlet is deactivated, However,\n * we need this route information in order to\n * return a user back to the correct tab when\n * leaving and then going back to the tab context.\n */\n const primaryOutlet = this.activatedView.savedData.get('primary');\n if (primaryOutlet && context.route) {\n primaryOutlet.route = { ...context.route };\n }\n\n /**\n * Ensure we are saving the NavigationExtras\n * data otherwise it will be lost\n */\n this.activatedView.savedExtras = {};\n if (context.route) {\n const contextSnapshot = context.route.snapshot;\n\n this.activatedView.savedExtras.queryParams = contextSnapshot.queryParams;\n (this.activatedView.savedExtras.fragment as string | null) = contextSnapshot.fragment;\n }\n }\n const c = this.component;\n this.activatedView = null;\n this.activated = null;\n this._activatedRoute = null;\n this.deactivateEvents.emit(c);\n }\n }\n\n activateWith(activatedRoute: ActivatedRoute, environmentInjector: EnvironmentInjector | null): void {\n if (this.isActivated) {\n throw new Error('Cannot activate an already activated outlet');\n }\n this._activatedRoute = activatedRoute;\n\n let cmpRef: any;\n let enteringView = this.stackCtrl.getExistingView(activatedRoute);\n if (enteringView) {\n cmpRef = this.activated = enteringView.ref;\n const saved = enteringView.savedData;\n if (saved) {\n // self-restore\n const context = this.getContext()!;\n context.children['contexts'] = saved;\n }\n // Updated activated route proxy for this component\n this.updateActivatedRouteProxy(cmpRef.instance, activatedRoute);\n } else {\n const snapshot = (activatedRoute as any)._futureSnapshot;\n\n /**\n * Angular 14 introduces a new `loadComponent` property to the route config.\n * This function will assign a `component` property to the route snapshot.\n * We check for the presence of this property to determine if the route is\n * using standalone components.\n */\n const childContexts = this.parentContexts.getOrCreateContext(this.name).children;\n\n // We create an activated route proxy object that will maintain future updates for this component\n // over its lifecycle in the stack.\n const component$ = new BehaviorSubject<any>(null);\n const activatedRouteProxy = this.createActivatedRouteProxy(component$, activatedRoute);\n\n const injector = new OutletInjector(activatedRouteProxy, childContexts, this.location.injector);\n\n const component = snapshot.routeConfig!.component ?? snapshot.component;\n\n /**\n * View components need to be added as a child of ion-router-outlet\n * for page transitions and swipe to go back.\n * However, createComponent mounts components as siblings of the\n * ViewContainerRef. As a result, outletContent must reference\n * an ng-container inside of ion-router-outlet and not\n * ion-router-outlet itself.\n */\n cmpRef = this.activated = this.outletContent.createComponent(component, {\n index: this.outletContent.length,\n injector,\n environmentInjector: environmentInjector ?? this.environmentInjector,\n });\n\n // Once the component is created we can push it to our local subject supplied to the proxy\n component$.next(cmpRef.instance);\n\n // Calling `markForCheck` to make sure we will run the change detection when the\n // `RouterOutlet` is inside a `ChangeDetectionStrategy.OnPush` component.\n\n /**\n * At this point this.activated has been set earlier\n * in this function, so it is guaranteed to be non-null.\n */\n enteringView = this.stackCtrl.createView(this.activated!, activatedRoute);\n\n // Store references to the proxy by component\n this.proxyMap.set(cmpRef.instance, activatedRouteProxy);\n this.currentActivatedRoute$.next({ component: cmpRef.instance, activatedRoute });\n }\n\n this.inputBinder?.bindActivatedRouteToOutletComponent(this);\n\n this.activatedView = enteringView;\n\n /**\n * The top outlet is set prior to the entering view's transition completing,\n * so that when we have nested outlets (e.g. ion-tabs inside an ion-router-outlet),\n * the tabs outlet will be assigned as the top outlet when a view inside tabs is\n * activated.\n *\n * In this scenario, activeWith is called for both the tabs and the root router outlet.\n * To avoid a race condition, we assign the top outlet synchronously.\n */\n this.navCtrl.setTopOutlet(this);\n\n const leavingView = this.stackCtrl.getActiveView();\n\n this.stackWillChange.emit({\n enteringView,\n tabSwitch: isTabSwitch(enteringView, leavingView),\n });\n\n this.stackCtrl.setActive(enteringView).then((data) => {\n this.activateEvents.emit(cmpRef.instance);\n this.stackDidChange.emit(data);\n });\n }\n\n /**\n * Returns `true` if there are pages in the stack to go back.\n */\n canGoBack(deep = 1, stackId?: string): boolean {\n return this.stackCtrl.canGoBack(deep, stackId);\n }\n\n /**\n * Resolves to `true` if it the outlet was able to sucessfully pop the last N pages.\n */\n pop(deep = 1, stackId?: string): Promise<boolean> {\n return this.stackCtrl.pop(deep, stackId);\n }\n\n /**\n * Returns the URL of the active page of each stack.\n */\n getLastUrl(stackId?: string): string | undefined {\n const active = this.stackCtrl.getLastUrl(stackId);\n return active ? active.url : undefined;\n }\n\n /**\n * Returns the RouteView of the active page of each stack.\n * @internal\n */\n getLastRouteView(stackId?: string): RouteView | undefined {\n return this.stackCtrl.getLastUrl(stackId);\n }\n\n /**\n * Returns the root view in the tab stack.\n * @internal\n */\n getRootView(stackId?: string): RouteView | undefined {\n return this.stackCtrl.getRootUrl(stackId);\n }\n\n /**\n * Returns the active stack ID. In the context of ion-tabs, it means the active tab.\n */\n getActiveStackId(): string | undefined {\n return this.stackCtrl.getActiveStackId();\n }\n\n /**\n * Since the activated route can change over the life time of a component in an ion router outlet, we create\n * a proxy so that we can update the values over time as a user navigates back to components already in the stack.\n */\n private createActivatedRouteProxy(component$: Observable<any>, activatedRoute: ActivatedRoute): ActivatedRoute {\n const proxy: any = new ActivatedRoute();\n\n proxy._futureSnapshot = (activatedRoute as any)._futureSnapshot;\n proxy._routerState = (activatedRoute as any)._routerState;\n proxy.snapshot = activatedRoute.snapshot;\n proxy.outlet = activatedRoute.outlet;\n proxy.component = activatedRoute.component;\n\n // Setup wrappers for the observables so consumers don't have to worry about switching to new observables as the state updates\n (proxy as any)._paramMap = this.proxyObservable(component$, 'paramMap');\n (proxy as any)._queryParamMap = this.proxyObservable(component$, 'queryParamMap');\n proxy.url = this.proxyObservable(component$, 'url');\n proxy.params = this.proxyObservable(component$, 'params');\n proxy.queryParams = this.proxyObservable(component$, 'queryParams');\n proxy.fragment = this.proxyObservable(component$, 'fragment');\n proxy.data = this.proxyObservable(component$, 'data');\n\n return proxy as ActivatedRoute;\n }\n\n /**\n * Create a wrapped observable that will switch to the latest activated route matched by the given component\n */\n private proxyObservable(component$: Observable<any>, path: string): Observable<any> {\n return component$.pipe(\n // First wait until the component instance is pushed\n filter((component) => !!component),\n switchMap((component) =>\n this.currentActivatedRoute$.pipe(\n filter((current) => current !== null && current.component === component),\n switchMap((current) => current && (current.activatedRoute as any)[path]),\n distinctUntilChanged()\n )\n )\n );\n }\n\n /**\n * Updates the activated route proxy for the given component to the new incoming router state\n */\n private updateActivatedRouteProxy(component: any, activatedRoute: ActivatedRoute): void {\n const proxy = this.proxyMap.get(component);\n if (!proxy) {\n throw new Error(`Could not find activated route proxy for view`);\n }\n\n (proxy as any)._futureSnapshot = (activatedRoute as any)._futureSnapshot;\n (proxy as any)._routerState = (activatedRoute as any)._routerState;\n proxy.snapshot = activatedRoute.snapshot;\n proxy.outlet = activatedRoute.outlet;\n proxy.component = activatedRoute.component;\n\n this.currentActivatedRoute$.next({ component, activatedRoute });\n }\n}\n\nclass OutletInjector implements Injector {\n constructor(private route: ActivatedRoute, private childContexts: ChildrenOutletContexts, private parent: Injector) {}\n\n get(token: any, notFoundValue?: any): any {\n if (token === ActivatedRoute) {\n return this.route;\n }\n\n if (token === ChildrenOutletContexts) {\n return this.childContexts;\n }\n\n return this.parent.get(token, notFoundValue);\n }\n}\n\n// TODO: FW-4785 - Remove this once Angular 15 support is dropped\nconst INPUT_BINDER = new InjectionToken<RoutedComponentInputBinder>('');\n\n/**\n * Injectable used as a tree-shakable provider for opting in to binding router data to component\n * inputs.\n *\n * The RouterOutlet registers itself with this service when an `ActivatedRoute` is attached or\n * activated. When this happens, the service subscribes to the `ActivatedRoute` observables (params,\n * queryParams, data) and sets the inputs of the component using `ComponentRef.setInput`.\n * Importantly, when an input does not have an item in the route data with a matching key, this\n * input is set to `undefined`. If it were not done this way, the previous information would be\n * retained if the data got removed from the route (i.e. if a query parameter is removed).\n *\n * The `RouterOutlet` should unregister itself when destroyed via `unsubscribeFromRouteData` so that\n * the subscriptions are cleaned up.\n */\n@Injectable()\nclass RoutedComponentInputBinder {\n private outletDataSubscriptions = new Map<IonRouterOutlet, Subscription>();\n\n bindActivatedRouteToOutletComponent(outlet: IonRouterOutlet): void {\n this.unsubscribeFromRouteData(outlet);\n this.subscribeToRouteData(outlet);\n }\n\n unsubscribeFromRouteData(outlet: IonRouterOutlet): void {\n this.outletDataSubscriptions.get(outlet)?.unsubscribe();\n this.outletDataSubscriptions.delete(outlet);\n }\n\n private subscribeToRouteData(outlet: IonRouterOutlet) {\n const { activatedRoute } = outlet;\n const dataSubscription = combineLatest([activatedRoute.queryParams, activatedRoute.params, activatedRoute.data])\n .pipe(\n switchMap(([queryParams, params, data], index) => {\n data = { ...queryParams, ...params, ...data };\n // Get the first result from the data subscription synchronously so it's available to\n // the component as soon as possible (and doesn't require a second change detection).\n if (index === 0) {\n return of(data);\n }\n // Promise.resolve is used to avoid synchronously writing the wrong data when\n // two of the Observables in the `combineLatest` stream emit one after\n // another.\n return Promise.resolve(data);\n })\n )\n .subscribe((data) => {\n // Outlet may have been deactivated or changed names to be associated with a different\n // route\n if (\n !outlet.isActivated ||\n !outlet.activatedComponentRef ||\n outlet.activatedRoute !== activatedRoute ||\n activatedRoute.component === null\n ) {\n this.unsubscribeFromRouteData(outlet);\n return;\n }\n\n const mirror = reflectComponentType(activatedRoute.component);\n if (!mirror) {\n this.unsubscribeFromRouteData(outlet);\n return;\n }\n\n for (const { templateName } of mirror.inputs) {\n outlet.activatedComponentRef.setInput(templateName, data[templateName]);\n }\n });\n\n this.outletDataSubscriptions.set(outlet, dataSubscription);\n }\n}\n\nexport const provideComponentInputBinding = (): Provider => {\n return {\n provide: INPUT_BINDER,\n useFactory: componentInputBindingFactory,\n deps: [Router],\n };\n};\n\nfunction componentInputBindingFactory(router?: Router) {\n /**\n * We cast the router to any here, since the componentInputBindingEnabled\n * property is not available until Angular v16.\n */\n if ((router as any)?.componentInputBindingEnabled) {\n return new RoutedComponentInputBinder();\n }\n return null;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"router-outlet.js","sourceRoot":"","sources":["../../../../src/common/directives/navigation/router-outlet.ts"],"names":[],"mappings":"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","sourcesContent":["import { Location } from '@angular/common';\nimport {\n ComponentRef,\n ElementRef,\n Injector,\n NgZone,\n OnDestroy,\n OnInit,\n ViewContainerRef,\n inject,\n Attribute,\n Directive,\n EventEmitter,\n Optional,\n Output,\n SkipSelf,\n EnvironmentInjector,\n Input,\n InjectionToken,\n Injectable,\n reflectComponentType,\n} from '@angular/core';\nimport type { Provider } from '@angular/core';\nimport { OutletContext, Router, ActivatedRoute, ChildrenOutletContexts, PRIMARY_OUTLET, Data } from '@angular/router';\nimport { componentOnReady } from '@ionic/core/components';\nimport type { AnimationBuilder } from '@ionic/core/components';\nimport { Observable, BehaviorSubject, Subscription, combineLatest, of } from 'rxjs';\nimport { distinctUntilChanged, filter, switchMap } from 'rxjs/operators';\n\nimport { Config } from '../../providers/config';\nimport { NavController } from '../../providers/nav-controller';\nimport { nullableBooleanAttribute } from '../../utils/boolean-attribute';\n\nimport { StackController } from './stack-controller';\nimport { RouteView, StackDidChangeEvent, StackWillChangeEvent, getUrl, isTabSwitch } from './stack-utils';\n\n// TODO(FW-2827): types\n\n@Directive({\n selector: 'ion-router-outlet',\n exportAs: 'outlet',\n // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property\n inputs: [\n { name: 'animated', transform: nullableBooleanAttribute },\n 'animation',\n 'mode',\n { name: 'swipeGesture', transform: nullableBooleanAttribute },\n ],\n})\nexport abstract class IonRouterOutlet implements OnDestroy, OnInit {\n abstract outletContent: any;\n\n nativeEl: HTMLIonRouterOutletElement;\n activatedView: RouteView | null = null;\n tabsPrefix: string | undefined;\n\n private _swipeGesture?: boolean;\n private stackCtrl: StackController;\n\n // Maintain map of activated route proxies for each component instance\n private proxyMap = new WeakMap<any, ActivatedRoute>();\n // Keep the latest activated route in a subject for the proxy routes to switch map to\n private currentActivatedRoute$ = new BehaviorSubject<{ component: any; activatedRoute: ActivatedRoute } | null>(null);\n\n private activated: ComponentRef<any> | null = null;\n /** @internal */\n get activatedComponentRef(): ComponentRef<any> | null {\n return this.activated;\n }\n private _activatedRoute: ActivatedRoute | null = null;\n\n /**\n * The name of the outlet\n */\n @Input() name = PRIMARY_OUTLET;\n\n /** @internal */\n @Output() stackWillChange = new EventEmitter<StackWillChangeEvent>();\n /** @internal */\n @Output() stackDidChange = new EventEmitter<StackDidChangeEvent>();\n\n // eslint-disable-next-line @angular-eslint/no-output-rename\n @Output('activate') activateEvents = new EventEmitter<any>();\n // eslint-disable-next-line @angular-eslint/no-output-rename\n @Output('deactivate') deactivateEvents = new EventEmitter<any>();\n\n private parentContexts = inject(ChildrenOutletContexts);\n private location = inject(ViewContainerRef);\n private environmentInjector = inject(EnvironmentInjector);\n private inputBinder = inject(INPUT_BINDER, { optional: true });\n /** @nodoc */\n readonly supportsBindingToComponentInputs = true;\n\n // Ionic providers\n private config = inject(Config);\n private navCtrl = inject(NavController);\n\n set animation(animation: AnimationBuilder) {\n this.nativeEl.animation = animation;\n }\n\n set animated(animated: boolean) {\n this.nativeEl.animated = animated;\n }\n\n set swipeGesture(swipe: boolean) {\n this._swipeGesture = swipe;\n\n this.nativeEl.swipeHandler = swipe\n ? {\n canStart: () => this.stackCtrl.canGoBack(1) && !this.stackCtrl.hasRunningTask(),\n onStart: () => this.stackCtrl.startBackTransition(),\n onEnd: (shouldContinue) => this.stackCtrl.endBackTransition(shouldContinue),\n }\n : undefined;\n\n this.nativeEl.swipeGesture = swipe;\n }\n\n constructor(\n @Attribute('name') name: string,\n @Optional() @Attribute('tabs') tabs: string,\n commonLocation: Location,\n elementRef: ElementRef,\n router: Router,\n zone: NgZone,\n activatedRoute: ActivatedRoute,\n @SkipSelf() @Optional() readonly parentOutlet?: IonRouterOutlet\n ) {\n this.nativeEl = elementRef.nativeElement;\n this.name = name || PRIMARY_OUTLET;\n this.tabsPrefix = tabs === 'true' ? getUrl(router, activatedRoute) : undefined;\n this.stackCtrl = new StackController(this.tabsPrefix, this.nativeEl, router, this.navCtrl, zone, commonLocation);\n this.parentContexts.onChildOutletCreated(this.name, this as any);\n }\n\n ngOnDestroy(): void {\n this.stackCtrl.destroy();\n this.inputBinder?.unsubscribeFromRouteData(this);\n }\n\n getContext(): OutletContext | null {\n return this.parentContexts.getContext(this.name);\n }\n\n ngOnInit(): void {\n this.initializeOutletWithName();\n }\n\n // Note: Ionic deviates from the Angular Router implementation here\n private initializeOutletWithName() {\n if (!this.activated) {\n // If the outlet was not instantiated at the time the route got activated we need to populate\n // the outlet when it is initialized (ie inside a NgIf)\n const context = this.getContext();\n if (context?.route) {\n this.activateWith(context.route, context.injector);\n }\n }\n\n new Promise((resolve) => componentOnReady(this.nativeEl, resolve)).then(() => {\n if (this._swipeGesture === undefined) {\n this.swipeGesture = this.config.getBoolean('swipeBackEnabled', (this.nativeEl as any).mode === 'ios');\n }\n });\n }\n\n get isActivated(): boolean {\n return !!this.activated;\n }\n\n get component(): Record<string, unknown> {\n if (!this.activated) {\n throw new Error('Outlet is not activated');\n }\n return this.activated.instance;\n }\n\n get activatedRoute(): ActivatedRoute {\n if (!this.activated) {\n throw new Error('Outlet is not activated');\n }\n return this._activatedRoute as ActivatedRoute;\n }\n\n get activatedRouteData(): Data {\n if (this._activatedRoute) {\n return this._activatedRoute.snapshot.data;\n }\n return {};\n }\n\n /**\n * Called when the `RouteReuseStrategy` instructs to detach the subtree\n */\n detach(): ComponentRef<any> {\n throw new Error('incompatible reuse strategy');\n }\n\n /**\n * Called when the `RouteReuseStrategy` instructs to re-attach a previously detached subtree\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n attach(_ref: ComponentRef<any>, _activatedRoute: ActivatedRoute): void {\n throw new Error('incompatible reuse strategy');\n }\n\n deactivate(): void {\n if (this.activated) {\n if (this.activatedView) {\n const context = this.getContext()!;\n this.activatedView.savedData = new Map(context.children['contexts']);\n\n /**\n * Angular v11.2.10 introduced a change\n * where this route context is cleared out when\n * a router-outlet is deactivated, However,\n * we need this route information in order to\n * return a user back to the correct tab when\n * leaving and then going back to the tab context.\n */\n const primaryOutlet = this.activatedView.savedData.get('primary');\n if (primaryOutlet && context.route) {\n primaryOutlet.route = { ...context.route };\n }\n\n /**\n * Ensure we are saving the NavigationExtras\n * data otherwise it will be lost\n */\n this.activatedView.savedExtras = {};\n if (context.route) {\n const contextSnapshot = context.route.snapshot;\n\n this.activatedView.savedExtras.queryParams = contextSnapshot.queryParams;\n (this.activatedView.savedExtras.fragment as string | null) = contextSnapshot.fragment;\n }\n }\n const c = this.component;\n this.activatedView = null;\n this.activated = null;\n this._activatedRoute = null;\n this.deactivateEvents.emit(c);\n }\n }\n\n activateWith(activatedRoute: ActivatedRoute, environmentInjector: EnvironmentInjector | null): void {\n if (this.isActivated) {\n throw new Error('Cannot activate an already activated outlet');\n }\n this._activatedRoute = activatedRoute;\n\n let cmpRef: any;\n let enteringView = this.stackCtrl.getExistingView(activatedRoute);\n if (enteringView) {\n cmpRef = this.activated = enteringView.ref;\n const saved = enteringView.savedData;\n if (saved) {\n // self-restore\n const context = this.getContext()!;\n context.children['contexts'] = saved;\n }\n // Updated activated route proxy for this component\n this.updateActivatedRouteProxy(cmpRef.instance, activatedRoute);\n } else {\n const snapshot = (activatedRoute as any)._futureSnapshot;\n\n /**\n * Angular 14 introduces a new `loadComponent` property to the route config.\n * This function will assign a `component` property to the route snapshot.\n * We check for the presence of this property to determine if the route is\n * using standalone components.\n */\n const childContexts = this.parentContexts.getOrCreateContext(this.name).children;\n\n // We create an activated route proxy object that will maintain future updates for this component\n // over its lifecycle in the stack.\n const component$ = new BehaviorSubject<any>(null);\n const activatedRouteProxy = this.createActivatedRouteProxy(component$, activatedRoute);\n\n const injector = new OutletInjector(activatedRouteProxy, childContexts, this.location.injector);\n\n const component = snapshot.routeConfig!.component ?? snapshot.component;\n\n /**\n * View components need to be added as a child of ion-router-outlet\n * for page transitions and swipe to go back.\n * However, createComponent mounts components as siblings of the\n * ViewContainerRef. As a result, outletContent must reference\n * an ng-container inside of ion-router-outlet and not\n * ion-router-outlet itself.\n */\n cmpRef = this.activated = this.outletContent.createComponent(component, {\n index: this.outletContent.length,\n injector,\n environmentInjector: environmentInjector ?? this.environmentInjector,\n });\n\n // Once the component is created we can push it to our local subject supplied to the proxy\n component$.next(cmpRef.instance);\n\n // Calling `markForCheck` to make sure we will run the change detection when the\n // `RouterOutlet` is inside a `ChangeDetectionStrategy.OnPush` component.\n\n /**\n * At this point this.activated has been set earlier\n * in this function, so it is guaranteed to be non-null.\n */\n enteringView = this.stackCtrl.createView(this.activated!, activatedRoute);\n\n // Store references to the proxy by component\n this.proxyMap.set(cmpRef.instance, activatedRouteProxy);\n this.currentActivatedRoute$.next({ component: cmpRef.instance, activatedRoute });\n }\n\n this.inputBinder?.bindActivatedRouteToOutletComponent(this);\n\n this.activatedView = enteringView;\n\n /**\n * The top outlet is set prior to the entering view's transition completing,\n * so that when we have nested outlets (e.g. ion-tabs inside an ion-router-outlet),\n * the tabs outlet will be assigned as the top outlet when a view inside tabs is\n * activated.\n *\n * In this scenario, activeWith is called for both the tabs and the root router outlet.\n * To avoid a race condition, we assign the top outlet synchronously.\n */\n this.navCtrl.setTopOutlet(this);\n\n const leavingView = this.stackCtrl.getActiveView();\n\n this.stackWillChange.emit({\n enteringView,\n tabSwitch: isTabSwitch(enteringView, leavingView),\n });\n\n this.stackCtrl.setActive(enteringView).then((data) => {\n this.activateEvents.emit(cmpRef.instance);\n this.stackDidChange.emit(data);\n });\n }\n\n /**\n * Returns `true` if there are pages in the stack to go back.\n */\n canGoBack(deep = 1, stackId?: string): boolean {\n return this.stackCtrl.canGoBack(deep, stackId);\n }\n\n /**\n * Resolves to `true` if it the outlet was able to sucessfully pop the last N pages.\n */\n pop(deep = 1, stackId?: string): Promise<boolean> {\n return this.stackCtrl.pop(deep, stackId);\n }\n\n /**\n * Returns the URL of the active page of each stack.\n */\n getLastUrl(stackId?: string): string | undefined {\n const active = this.stackCtrl.getLastUrl(stackId);\n return active ? active.url : undefined;\n }\n\n /**\n * Returns the RouteView of the active page of each stack.\n * @internal\n */\n getLastRouteView(stackId?: string): RouteView | undefined {\n return this.stackCtrl.getLastUrl(stackId);\n }\n\n /**\n * Returns the root view in the tab stack.\n * @internal\n */\n getRootView(stackId?: string): RouteView | undefined {\n return this.stackCtrl.getRootUrl(stackId);\n }\n\n /**\n * Returns the active stack ID. In the context of ion-tabs, it means the active tab.\n */\n getActiveStackId(): string | undefined {\n return this.stackCtrl.getActiveStackId();\n }\n\n /**\n * Since the activated route can change over the life time of a component in an ion router outlet, we create\n * a proxy so that we can update the values over time as a user navigates back to components already in the stack.\n */\n private createActivatedRouteProxy(component$: Observable<any>, activatedRoute: ActivatedRoute): ActivatedRoute {\n const proxy: any = new ActivatedRoute();\n\n proxy._futureSnapshot = (activatedRoute as any)._futureSnapshot;\n proxy._routerState = (activatedRoute as any)._routerState;\n proxy.snapshot = activatedRoute.snapshot;\n proxy.outlet = activatedRoute.outlet;\n proxy.component = activatedRoute.component;\n\n // Setup wrappers for the observables so consumers don't have to worry about switching to new observables as the state updates\n (proxy as any)._paramMap = this.proxyObservable(component$, 'paramMap');\n (proxy as any)._queryParamMap = this.proxyObservable(component$, 'queryParamMap');\n proxy.url = this.proxyObservable(component$, 'url');\n proxy.params = this.proxyObservable(component$, 'params');\n proxy.queryParams = this.proxyObservable(component$, 'queryParams');\n proxy.fragment = this.proxyObservable(component$, 'fragment');\n proxy.data = this.proxyObservable(component$, 'data');\n\n return proxy as ActivatedRoute;\n }\n\n /**\n * Create a wrapped observable that will switch to the latest activated route matched by the given component\n */\n private proxyObservable(component$: Observable<any>, path: string): Observable<any> {\n return component$.pipe(\n // First wait until the component instance is pushed\n filter((component) => !!component),\n switchMap((component) =>\n this.currentActivatedRoute$.pipe(\n filter((current) => current !== null && current.component === component),\n switchMap((current) => current && (current.activatedRoute as any)[path]),\n distinctUntilChanged()\n )\n )\n );\n }\n\n /**\n * Updates the activated route proxy for the given component to the new incoming router state\n */\n private updateActivatedRouteProxy(component: any, activatedRoute: ActivatedRoute): void {\n const proxy = this.proxyMap.get(component);\n if (!proxy) {\n throw new Error(`Could not find activated route proxy for view`);\n }\n\n (proxy as any)._futureSnapshot = (activatedRoute as any)._futureSnapshot;\n (proxy as any)._routerState = (activatedRoute as any)._routerState;\n proxy.snapshot = activatedRoute.snapshot;\n proxy.outlet = activatedRoute.outlet;\n proxy.component = activatedRoute.component;\n\n this.currentActivatedRoute$.next({ component, activatedRoute });\n }\n}\n\nclass OutletInjector implements Injector {\n constructor(private route: ActivatedRoute, private childContexts: ChildrenOutletContexts, private parent: Injector) {}\n\n get(token: any, notFoundValue?: any): any {\n if (token === ActivatedRoute) {\n return this.route;\n }\n\n if (token === ChildrenOutletContexts) {\n return this.childContexts;\n }\n\n return this.parent.get(token, notFoundValue);\n }\n}\n\n// TODO: FW-4785 - Remove this once Angular 15 support is dropped\nconst INPUT_BINDER = new InjectionToken<RoutedComponentInputBinder>('');\n\n/**\n * Injectable used as a tree-shakable provider for opting in to binding router data to component\n * inputs.\n *\n * The RouterOutlet registers itself with this service when an `ActivatedRoute` is attached or\n * activated. When this happens, the service subscribes to the `ActivatedRoute` observables (params,\n * queryParams, data) and sets the inputs of the component using `ComponentRef.setInput`.\n * Importantly, when an input does not have an item in the route data with a matching key, this\n * input is set to `undefined`. If it were not done this way, the previous information would be\n * retained if the data got removed from the route (i.e. if a query parameter is removed).\n *\n * The `RouterOutlet` should unregister itself when destroyed via `unsubscribeFromRouteData` so that\n * the subscriptions are cleaned up.\n */\n@Injectable()\nclass RoutedComponentInputBinder {\n private outletDataSubscriptions = new Map<IonRouterOutlet, Subscription>();\n\n bindActivatedRouteToOutletComponent(outlet: IonRouterOutlet): void {\n this.unsubscribeFromRouteData(outlet);\n this.subscribeToRouteData(outlet);\n }\n\n unsubscribeFromRouteData(outlet: IonRouterOutlet): void {\n this.outletDataSubscriptions.get(outlet)?.unsubscribe();\n this.outletDataSubscriptions.delete(outlet);\n }\n\n private subscribeToRouteData(outlet: IonRouterOutlet) {\n const { activatedRoute } = outlet;\n const dataSubscription = combineLatest([activatedRoute.queryParams, activatedRoute.params, activatedRoute.data])\n .pipe(\n switchMap(([queryParams, params, data], index) => {\n data = { ...queryParams, ...params, ...data };\n // Get the first result from the data subscription synchronously so it's available to\n // the component as soon as possible (and doesn't require a second change detection).\n if (index === 0) {\n return of(data);\n }\n // Promise.resolve is used to avoid synchronously writing the wrong data when\n // two of the Observables in the `combineLatest` stream emit one after\n // another.\n return Promise.resolve(data);\n })\n )\n .subscribe((data) => {\n // Outlet may have been deactivated or changed names to be associated with a different\n // route\n if (\n !outlet.isActivated ||\n !outlet.activatedComponentRef ||\n outlet.activatedRoute !== activatedRoute ||\n activatedRoute.component === null\n ) {\n this.unsubscribeFromRouteData(outlet);\n return;\n }\n\n const mirror = reflectComponentType(activatedRoute.component);\n if (!mirror) {\n this.unsubscribeFromRouteData(outlet);\n return;\n }\n\n for (const { templateName } of mirror.inputs) {\n outlet.activatedComponentRef.setInput(templateName, data[templateName]);\n }\n });\n\n this.outletDataSubscriptions.set(outlet, dataSubscription);\n }\n}\n\nexport const provideComponentInputBinding = (): Provider => {\n return {\n provide: INPUT_BINDER,\n useFactory: componentInputBindingFactory,\n deps: [Router],\n };\n};\n\nfunction componentInputBindingFactory(router?: Router) {\n /**\n * We cast the router to any here, since the componentInputBindingEnabled\n * property is not available until Angular v16.\n */\n if ((router as any)?.componentInputBindingEnabled) {\n return new RoutedComponentInputBinder();\n }\n return null;\n}\n"]}
|
package/dist/common/index.d.ts
CHANGED
|
@@ -16,7 +16,7 @@ export { IonBackButton } from './directives/navigation/back-button';
|
|
|
16
16
|
export { IonNav } from './directives/navigation/nav';
|
|
17
17
|
export { RouterLinkDelegateDirective, RouterLinkWithHrefDelegateDirective, } from './directives/navigation/router-link-delegate';
|
|
18
18
|
export { IonTabs } from './directives/navigation/tabs';
|
|
19
|
-
export { ProxyCmp } from './utils/proxy';
|
|
19
|
+
export { ProxyCmp, inputNames } from './utils/proxy';
|
|
20
20
|
export { OverlayBaseController } from './utils/overlay';
|
|
21
21
|
export { IonicRouteStrategy } from './utils/routing';
|
|
22
22
|
export { raf } from './utils/util';
|
package/dist/common/index.js
CHANGED
|
@@ -13,7 +13,7 @@ export { IonBackButton } from './directives/navigation/back-button';
|
|
|
13
13
|
export { IonNav } from './directives/navigation/nav';
|
|
14
14
|
export { RouterLinkDelegateDirective, RouterLinkWithHrefDelegateDirective, } from './directives/navigation/router-link-delegate';
|
|
15
15
|
export { IonTabs } from './directives/navigation/tabs';
|
|
16
|
-
export { ProxyCmp } from './utils/proxy';
|
|
16
|
+
export { ProxyCmp, inputNames } from './utils/proxy';
|
|
17
17
|
export { OverlayBaseController } from './utils/overlay';
|
|
18
18
|
export { IonicRouteStrategy } from './utils/routing';
|
|
19
19
|
export { raf } from './utils/util';
|
package/dist/common/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/common/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAE3D,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAEhD,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAM9E,OAAO,EAAE,SAAS,EAAE,MAAM,oCAAoC,CAAC;AAE/D,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEhD,OAAO,EAAE,eAAe,EAAE,4BAA4B,EAAE,MAAM,uCAAuC,CAAC;AAEtG,cAAc,sCAAsC,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAC;AACpE,OAAO,EAAE,MAAM,EAAE,MAAM,6BAA6B,CAAC;AACrD,OAAO,EACL,2BAA2B,EAC3B,mCAAmC,GACpC,MAAM,8CAA8C,CAAC;AACtD,OAAO,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAC;AAEvD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/common/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAE3D,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAEhD,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAM9E,OAAO,EAAE,SAAS,EAAE,MAAM,oCAAoC,CAAC;AAE/D,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEhD,OAAO,EAAE,eAAe,EAAE,4BAA4B,EAAE,MAAM,uCAAuC,CAAC;AAEtG,cAAc,sCAAsC,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAC;AACpE,OAAO,EAAE,MAAM,EAAE,MAAM,6BAA6B,CAAC;AACrD,OAAO,EACL,2BAA2B,EAC3B,mCAAmC,GACpC,MAAM,8CAA8C,CAAC;AACtD,OAAO,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAC;AAEvD,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAErD,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAErD,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC","sourcesContent":["export { DomController } from './providers/dom-controller';\nexport { MenuController } from './providers/menu-controller';\nexport { NavController } from './providers/nav-controller';\n\nexport { Config, ConfigToken } from './providers/config';\nexport { Platform } from './providers/platform';\n\nexport { AngularDelegate, IonModalToken } from './providers/angular-delegate';\n\nexport type { IonicWindow } from './types/interfaces';\nexport type { ViewDidEnter, ViewDidLeave, ViewWillEnter, ViewWillLeave } from './types/ionic-lifecycle-hooks';\nexport type { ModalOptions, PopoverOptions } from './types/overlay-options';\n\nexport { NavParams } from './directives/navigation/nav-params';\n\nexport { IonModal } from './overlays/modal';\nexport { IonPopover } from './overlays/popover';\n\nexport { IonRouterOutlet, provideComponentInputBinding } from './directives/navigation/router-outlet';\n\nexport * from './directives/control-value-accessors';\nexport { IonBackButton } from './directives/navigation/back-button';\nexport { IonNav } from './directives/navigation/nav';\nexport {\n RouterLinkDelegateDirective,\n RouterLinkWithHrefDelegateDirective,\n} from './directives/navigation/router-link-delegate';\nexport { IonTabs } from './directives/navigation/tabs';\n\nexport { ProxyCmp, inputNames } from './utils/proxy';\n\nexport { OverlayBaseController } from './utils/overlay';\nexport { IonicRouteStrategy } from './utils/routing';\n\nexport { raf } from './utils/util';\n"]}
|
|
@@ -59,4 +59,13 @@ export declare class IonModal {
|
|
|
59
59
|
constructor(c: ChangeDetectorRef, r: ElementRef, z: NgZone);
|
|
60
60
|
static ɵfac: i0.ɵɵFactoryDeclaration<IonModal, never>;
|
|
61
61
|
static ɵdir: i0.ɵɵDirectiveDeclaration<IonModal, "ion-modal", never, { "animated": { "alias": "animated"; "required": false; }; "keepContentsMounted": { "alias": "keepContentsMounted"; "required": false; }; "backdropBreakpoint": { "alias": "backdropBreakpoint"; "required": false; }; "backdropDismiss": { "alias": "backdropDismiss"; "required": false; }; "breakpoints": { "alias": "breakpoints"; "required": false; }; "canDismiss": { "alias": "canDismiss"; "required": false; }; "cssClass": { "alias": "cssClass"; "required": false; }; "enterAnimation": { "alias": "enterAnimation"; "required": false; }; "expandToScroll": { "alias": "expandToScroll"; "required": false; }; "event": { "alias": "event"; "required": false; }; "focusTrap": { "alias": "focusTrap"; "required": false; }; "handle": { "alias": "handle"; "required": false; }; "handleBehavior": { "alias": "handleBehavior"; "required": false; }; "initialBreakpoint": { "alias": "initialBreakpoint"; "required": false; }; "isOpen": { "alias": "isOpen"; "required": false; }; "keyboardClose": { "alias": "keyboardClose"; "required": false; }; "leaveAnimation": { "alias": "leaveAnimation"; "required": false; }; "mode": { "alias": "mode"; "required": false; }; "presentingElement": { "alias": "presentingElement"; "required": false; }; "showBackdrop": { "alias": "showBackdrop"; "required": false; }; "translucent": { "alias": "translucent"; "required": false; }; "trigger": { "alias": "trigger"; "required": false; }; }, {}, ["template"], never, true, never>;
|
|
62
|
+
static ngAcceptInputType_animated: boolean | string | null | undefined;
|
|
63
|
+
static ngAcceptInputType_keepContentsMounted: boolean | string | null | undefined;
|
|
64
|
+
static ngAcceptInputType_backdropDismiss: boolean | string | null | undefined;
|
|
65
|
+
static ngAcceptInputType_expandToScroll: boolean | string | null | undefined;
|
|
66
|
+
static ngAcceptInputType_focusTrap: boolean | string | null | undefined;
|
|
67
|
+
static ngAcceptInputType_handle: boolean | string | null | undefined;
|
|
68
|
+
static ngAcceptInputType_isOpen: boolean | string | null | undefined;
|
|
69
|
+
static ngAcceptInputType_keyboardClose: boolean | string | null | undefined;
|
|
70
|
+
static ngAcceptInputType_showBackdrop: boolean | string | null | undefined;
|
|
62
71
|
}
|
|
@@ -1,31 +1,33 @@
|
|
|
1
1
|
import { __decorate } from "tslib";
|
|
2
2
|
import { ContentChild, Directive, TemplateRef, } from '@angular/core';
|
|
3
|
-
import {
|
|
3
|
+
import { nullableBooleanAttribute } from '../utils/boolean-attribute';
|
|
4
|
+
import { inputNames, ProxyCmp, proxyOutputs } from '../utils/proxy';
|
|
4
5
|
import * as i0 from "@angular/core";
|
|
5
6
|
const MODAL_INPUTS = [
|
|
6
|
-
'animated',
|
|
7
|
-
'keepContentsMounted',
|
|
7
|
+
{ name: 'animated', transform: nullableBooleanAttribute },
|
|
8
|
+
{ name: 'keepContentsMounted', transform: nullableBooleanAttribute },
|
|
8
9
|
'backdropBreakpoint',
|
|
9
|
-
'backdropDismiss',
|
|
10
|
+
{ name: 'backdropDismiss', transform: nullableBooleanAttribute },
|
|
10
11
|
'breakpoints',
|
|
11
12
|
'canDismiss',
|
|
12
13
|
'cssClass',
|
|
13
14
|
'enterAnimation',
|
|
14
|
-
'expandToScroll',
|
|
15
|
+
{ name: 'expandToScroll', transform: nullableBooleanAttribute },
|
|
15
16
|
'event',
|
|
16
|
-
'focusTrap',
|
|
17
|
-
'handle',
|
|
17
|
+
{ name: 'focusTrap', transform: nullableBooleanAttribute },
|
|
18
|
+
{ name: 'handle', transform: nullableBooleanAttribute },
|
|
18
19
|
'handleBehavior',
|
|
19
20
|
'initialBreakpoint',
|
|
20
|
-
'isOpen',
|
|
21
|
-
'keyboardClose',
|
|
21
|
+
{ name: 'isOpen', transform: nullableBooleanAttribute },
|
|
22
|
+
{ name: 'keyboardClose', transform: nullableBooleanAttribute },
|
|
22
23
|
'leaveAnimation',
|
|
23
24
|
'mode',
|
|
24
25
|
'presentingElement',
|
|
25
|
-
'showBackdrop',
|
|
26
|
+
{ name: 'showBackdrop', transform: nullableBooleanAttribute },
|
|
26
27
|
'translucent',
|
|
27
28
|
'trigger',
|
|
28
29
|
];
|
|
30
|
+
const MODAL_PROXY_INPUTS = inputNames(MODAL_INPUTS);
|
|
29
31
|
const MODAL_METHODS = [
|
|
30
32
|
'present',
|
|
31
33
|
'dismiss',
|
|
@@ -67,11 +69,11 @@ let IonModal = class IonModal {
|
|
|
67
69
|
]);
|
|
68
70
|
}
|
|
69
71
|
/** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.0", ngImport: i0, type: IonModal, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });
|
|
70
|
-
/** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "
|
|
72
|
+
/** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "22.0.0", type: IonModal, isStandalone: true, selector: "ion-modal", inputs: { animated: ["animated", "animated", nullableBooleanAttribute], keepContentsMounted: ["keepContentsMounted", "keepContentsMounted", nullableBooleanAttribute], backdropBreakpoint: "backdropBreakpoint", backdropDismiss: ["backdropDismiss", "backdropDismiss", nullableBooleanAttribute], breakpoints: "breakpoints", canDismiss: "canDismiss", cssClass: "cssClass", enterAnimation: "enterAnimation", expandToScroll: ["expandToScroll", "expandToScroll", nullableBooleanAttribute], event: "event", focusTrap: ["focusTrap", "focusTrap", nullableBooleanAttribute], handle: ["handle", "handle", nullableBooleanAttribute], handleBehavior: "handleBehavior", initialBreakpoint: "initialBreakpoint", isOpen: ["isOpen", "isOpen", nullableBooleanAttribute], keyboardClose: ["keyboardClose", "keyboardClose", nullableBooleanAttribute], leaveAnimation: "leaveAnimation", mode: "mode", presentingElement: "presentingElement", showBackdrop: ["showBackdrop", "showBackdrop", nullableBooleanAttribute], translucent: "translucent", trigger: "trigger" }, queries: [{ propertyName: "template", first: true, predicate: TemplateRef, descendants: true }], ngImport: i0 });
|
|
71
73
|
};
|
|
72
74
|
IonModal = __decorate([
|
|
73
75
|
ProxyCmp({
|
|
74
|
-
inputs:
|
|
76
|
+
inputs: MODAL_PROXY_INPUTS,
|
|
75
77
|
methods: MODAL_METHODS,
|
|
76
78
|
})
|
|
77
79
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"modal.js","sourceRoot":"","sources":["../../../src/common/overlays/modal.ts"],"names":[],"mappings":";AAAA,OAAO,EAEL,YAAY,EACZ,SAAS,EAIT,WAAW,GACZ,MAAM,eAAe,CAAC;AAGvB,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;;
|
|
1
|
+
{"version":3,"file":"modal.js","sourceRoot":"","sources":["../../../src/common/overlays/modal.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n ChangeDetectorRef,\n ContentChild,\n Directive,\n ElementRef,\n EventEmitter,\n NgZone,\n TemplateRef,\n} from '@angular/core';\nimport type { Components, ModalBreakpointChangeEventDetail, ModalDragEventDetail } from '@ionic/core/components';\n\nimport { nullableBooleanAttribute } from '../utils/boolean-attribute';\nimport { inputNames, ProxyCmp, proxyOutputs } from '../utils/proxy';\n\nexport declare interface IonModal extends Components.IonModal {\n /**\n * Emitted after the modal has presented.\n **/\n ionModalDidPresent: EventEmitter<CustomEvent>;\n /**\n * Emitted before the modal has presented.\n */\n ionModalWillPresent: EventEmitter<CustomEvent>;\n /**\n * Emitted before the modal has dismissed.\n */\n ionModalWillDismiss: EventEmitter<CustomEvent>;\n /**\n * Emitted after the modal has dismissed.\n */\n ionModalDidDismiss: EventEmitter<CustomEvent>;\n /**\n * Emitted after the modal breakpoint has changed.\n */\n ionBreakpointDidChange: EventEmitter<CustomEvent<ModalBreakpointChangeEventDetail>>;\n /**\n * Emitted when the sheet or card modal has started being dragged.\n */\n ionDragStart: EventEmitter<void>;\n /**\n * Emitted while the sheet or card modal is being dragged.\n */\n ionDragMove: EventEmitter<CustomEvent<ModalDragEventDetail>>;\n /**\n * Emitted when the sheet or card modal has finished being dragged.\n */\n ionDragEnd: EventEmitter<CustomEvent<ModalDragEventDetail>>;\n /**\n * Emitted after the modal has presented. Shorthand for ionModalDidPresent.\n */\n didPresent: EventEmitter<CustomEvent>;\n /**\n * Emitted before the modal has presented. Shorthand for ionModalWillPresent.\n */\n willPresent: EventEmitter<CustomEvent>;\n /**\n * Emitted before the modal has dismissed. Shorthand for ionModalWillDismiss.\n */\n willDismiss: EventEmitter<CustomEvent>;\n /**\n * Emitted after the modal has dismissed. Shorthand for ionModalDidDismiss.\n */\n didDismiss: EventEmitter<CustomEvent>;\n}\n\nconst MODAL_INPUTS = [\n { name: 'animated', transform: nullableBooleanAttribute },\n { name: 'keepContentsMounted', transform: nullableBooleanAttribute },\n 'backdropBreakpoint',\n { name: 'backdropDismiss', transform: nullableBooleanAttribute },\n 'breakpoints',\n 'canDismiss',\n 'cssClass',\n 'enterAnimation',\n { name: 'expandToScroll', transform: nullableBooleanAttribute },\n 'event',\n { name: 'focusTrap', transform: nullableBooleanAttribute },\n { name: 'handle', transform: nullableBooleanAttribute },\n 'handleBehavior',\n 'initialBreakpoint',\n { name: 'isOpen', transform: nullableBooleanAttribute },\n { name: 'keyboardClose', transform: nullableBooleanAttribute },\n 'leaveAnimation',\n 'mode',\n 'presentingElement',\n { name: 'showBackdrop', transform: nullableBooleanAttribute },\n 'translucent',\n 'trigger',\n];\n\nconst MODAL_PROXY_INPUTS = inputNames(MODAL_INPUTS);\n\nconst MODAL_METHODS = [\n 'present',\n 'dismiss',\n 'onDidDismiss',\n 'onWillDismiss',\n 'setCurrentBreakpoint',\n 'getCurrentBreakpoint',\n];\n\n@ProxyCmp({\n inputs: MODAL_PROXY_INPUTS,\n methods: MODAL_METHODS,\n})\n/**\n * @Component extends from @Directive\n * so by defining the inputs here we\n * do not need to re-define them for the\n * lazy loaded popover.\n */\n@Directive({\n selector: 'ion-modal',\n // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property\n inputs: MODAL_INPUTS,\n})\nexport class IonModal {\n // TODO(FW-2827): type\n @ContentChild(TemplateRef, { static: false }) template: TemplateRef<any>;\n\n isCmpOpen = false;\n\n protected el: HTMLElement;\n\n constructor(c: ChangeDetectorRef, r: ElementRef, protected z: NgZone) {\n this.el = r.nativeElement;\n\n this.el.addEventListener('ionMount', () => {\n this.isCmpOpen = true;\n c.detectChanges();\n });\n this.el.addEventListener('didDismiss', () => {\n this.isCmpOpen = false;\n c.detectChanges();\n });\n proxyOutputs(this, this.el, [\n 'ionModalDidPresent',\n 'ionModalWillPresent',\n 'ionModalWillDismiss',\n 'ionModalDidDismiss',\n 'ionBreakpointDidChange',\n 'didPresent',\n 'willPresent',\n 'willDismiss',\n 'didDismiss',\n 'ionDragStart',\n 'ionDragMove',\n 'ionDragEnd',\n ]);\n }\n}\n"]}
|
|
@@ -42,5 +42,16 @@ export declare class IonPopover {
|
|
|
42
42
|
protected el: HTMLElement;
|
|
43
43
|
constructor(c: ChangeDetectorRef, r: ElementRef, z: NgZone);
|
|
44
44
|
static ɵfac: i0.ɵɵFactoryDeclaration<IonPopover, never>;
|
|
45
|
-
static ɵdir: i0.ɵɵDirectiveDeclaration<IonPopover, "ion-popover", never, { "alignment": { "alias": "alignment"; "required": false; }; "animated": { "alias": "animated"; "required": false; }; "arrow": { "alias": "arrow"; "required": false; }; "keepContentsMounted": { "alias": "keepContentsMounted"; "required": false; }; "backdropDismiss": { "alias": "backdropDismiss"; "required": false; }; "cssClass": { "alias": "cssClass"; "required": false; }; "dismissOnSelect": { "alias": "dismissOnSelect"; "required": false; }; "enterAnimation": { "alias": "enterAnimation"; "required": false; }; "event": { "alias": "event"; "required": false; }; "focusTrap": { "alias": "focusTrap"; "required": false; }; "isOpen": { "alias": "isOpen"; "required": false; }; "keyboardClose": { "alias": "keyboardClose"; "required": false; }; "leaveAnimation": { "alias": "leaveAnimation"; "required": false; }; "mode": { "alias": "mode"; "required": false; }; "showBackdrop": { "alias": "showBackdrop"; "required": false; }; "translucent": { "alias": "translucent"; "required": false; }; "trigger": { "alias": "trigger"; "required": false; }; "triggerAction": { "alias": "triggerAction"; "required": false; }; "reference": { "alias": "reference"; "required": false; }; "size": { "alias": "size"; "required": false; }; "side": { "alias": "side"; "required": false; }; }, {}, ["template"], never, true, never>;
|
|
45
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<IonPopover, "ion-popover", never, { "alignment": { "alias": "alignment"; "required": false; }; "animated": { "alias": "animated"; "required": false; }; "arrow": { "alias": "arrow"; "required": false; }; "keepContentsMounted": { "alias": "keepContentsMounted"; "required": false; }; "backdropDismiss": { "alias": "backdropDismiss"; "required": false; }; "cssClass": { "alias": "cssClass"; "required": false; }; "dismissOnSelect": { "alias": "dismissOnSelect"; "required": false; }; "enterAnimation": { "alias": "enterAnimation"; "required": false; }; "event": { "alias": "event"; "required": false; }; "focusTrap": { "alias": "focusTrap"; "required": false; }; "isOpen": { "alias": "isOpen"; "required": false; }; "keyboardClose": { "alias": "keyboardClose"; "required": false; }; "keyboardEvents": { "alias": "keyboardEvents"; "required": false; }; "leaveAnimation": { "alias": "leaveAnimation"; "required": false; }; "mode": { "alias": "mode"; "required": false; }; "showBackdrop": { "alias": "showBackdrop"; "required": false; }; "translucent": { "alias": "translucent"; "required": false; }; "trigger": { "alias": "trigger"; "required": false; }; "triggerAction": { "alias": "triggerAction"; "required": false; }; "reference": { "alias": "reference"; "required": false; }; "size": { "alias": "size"; "required": false; }; "side": { "alias": "side"; "required": false; }; }, {}, ["template"], never, true, never>;
|
|
46
|
+
static ngAcceptInputType_animated: boolean | string | null | undefined;
|
|
47
|
+
static ngAcceptInputType_arrow: boolean | string | null | undefined;
|
|
48
|
+
static ngAcceptInputType_keepContentsMounted: boolean | string | null | undefined;
|
|
49
|
+
static ngAcceptInputType_backdropDismiss: boolean | string | null | undefined;
|
|
50
|
+
static ngAcceptInputType_dismissOnSelect: boolean | string | null | undefined;
|
|
51
|
+
static ngAcceptInputType_focusTrap: boolean | string | null | undefined;
|
|
52
|
+
static ngAcceptInputType_isOpen: boolean | string | null | undefined;
|
|
53
|
+
static ngAcceptInputType_keyboardClose: boolean | string | null | undefined;
|
|
54
|
+
static ngAcceptInputType_keyboardEvents: boolean | string | null | undefined;
|
|
55
|
+
static ngAcceptInputType_showBackdrop: boolean | string | null | undefined;
|
|
56
|
+
static ngAcceptInputType_translucent: boolean | string | null | undefined;
|
|
46
57
|
}
|
|
@@ -1,30 +1,33 @@
|
|
|
1
1
|
import { __decorate } from "tslib";
|
|
2
2
|
import { ContentChild, Directive, TemplateRef, } from '@angular/core';
|
|
3
|
-
import {
|
|
3
|
+
import { nullableBooleanAttribute } from '../utils/boolean-attribute';
|
|
4
|
+
import { inputNames, ProxyCmp, proxyOutputs } from '../utils/proxy';
|
|
4
5
|
import * as i0 from "@angular/core";
|
|
5
6
|
const POPOVER_INPUTS = [
|
|
6
7
|
'alignment',
|
|
7
|
-
'animated',
|
|
8
|
-
'arrow',
|
|
9
|
-
'keepContentsMounted',
|
|
10
|
-
'backdropDismiss',
|
|
8
|
+
{ name: 'animated', transform: nullableBooleanAttribute },
|
|
9
|
+
{ name: 'arrow', transform: nullableBooleanAttribute },
|
|
10
|
+
{ name: 'keepContentsMounted', transform: nullableBooleanAttribute },
|
|
11
|
+
{ name: 'backdropDismiss', transform: nullableBooleanAttribute },
|
|
11
12
|
'cssClass',
|
|
12
|
-
'dismissOnSelect',
|
|
13
|
+
{ name: 'dismissOnSelect', transform: nullableBooleanAttribute },
|
|
13
14
|
'enterAnimation',
|
|
14
15
|
'event',
|
|
15
|
-
'focusTrap',
|
|
16
|
-
'isOpen',
|
|
17
|
-
'keyboardClose',
|
|
16
|
+
{ name: 'focusTrap', transform: nullableBooleanAttribute },
|
|
17
|
+
{ name: 'isOpen', transform: nullableBooleanAttribute },
|
|
18
|
+
{ name: 'keyboardClose', transform: nullableBooleanAttribute },
|
|
19
|
+
{ name: 'keyboardEvents', transform: nullableBooleanAttribute },
|
|
18
20
|
'leaveAnimation',
|
|
19
21
|
'mode',
|
|
20
|
-
'showBackdrop',
|
|
21
|
-
'translucent',
|
|
22
|
+
{ name: 'showBackdrop', transform: nullableBooleanAttribute },
|
|
23
|
+
{ name: 'translucent', transform: nullableBooleanAttribute },
|
|
22
24
|
'trigger',
|
|
23
25
|
'triggerAction',
|
|
24
26
|
'reference',
|
|
25
27
|
'size',
|
|
26
28
|
'side',
|
|
27
29
|
];
|
|
30
|
+
const POPOVER_PROXY_INPUTS = inputNames(POPOVER_INPUTS);
|
|
28
31
|
const POPOVER_METHODS = ['present', 'dismiss', 'onDidDismiss', 'onWillDismiss'];
|
|
29
32
|
let IonPopover = class IonPopover {
|
|
30
33
|
z;
|
|
@@ -55,11 +58,11 @@ let IonPopover = class IonPopover {
|
|
|
55
58
|
]);
|
|
56
59
|
}
|
|
57
60
|
/** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.0", ngImport: i0, type: IonPopover, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });
|
|
58
|
-
/** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "
|
|
61
|
+
/** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "22.0.0", type: IonPopover, isStandalone: true, selector: "ion-popover", inputs: { alignment: "alignment", animated: ["animated", "animated", nullableBooleanAttribute], arrow: ["arrow", "arrow", nullableBooleanAttribute], keepContentsMounted: ["keepContentsMounted", "keepContentsMounted", nullableBooleanAttribute], backdropDismiss: ["backdropDismiss", "backdropDismiss", nullableBooleanAttribute], cssClass: "cssClass", dismissOnSelect: ["dismissOnSelect", "dismissOnSelect", nullableBooleanAttribute], enterAnimation: "enterAnimation", event: "event", focusTrap: ["focusTrap", "focusTrap", nullableBooleanAttribute], isOpen: ["isOpen", "isOpen", nullableBooleanAttribute], keyboardClose: ["keyboardClose", "keyboardClose", nullableBooleanAttribute], keyboardEvents: ["keyboardEvents", "keyboardEvents", nullableBooleanAttribute], leaveAnimation: "leaveAnimation", mode: "mode", showBackdrop: ["showBackdrop", "showBackdrop", nullableBooleanAttribute], translucent: ["translucent", "translucent", nullableBooleanAttribute], trigger: "trigger", triggerAction: "triggerAction", reference: "reference", size: "size", side: "side" }, queries: [{ propertyName: "template", first: true, predicate: TemplateRef, descendants: true }], ngImport: i0 });
|
|
59
62
|
};
|
|
60
63
|
IonPopover = __decorate([
|
|
61
64
|
ProxyCmp({
|
|
62
|
-
inputs:
|
|
65
|
+
inputs: POPOVER_PROXY_INPUTS,
|
|
63
66
|
methods: POPOVER_METHODS,
|
|
64
67
|
})
|
|
65
68
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"popover.js","sourceRoot":"","sources":["../../../src/common/overlays/popover.ts"],"names":[],"mappings":";AAAA,OAAO,EAEL,YAAY,EACZ,SAAS,EAIT,WAAW,GACZ,MAAM,eAAe,CAAC;AAGvB,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;;
|
|
1
|
+
{"version":3,"file":"popover.js","sourceRoot":"","sources":["../../../src/common/overlays/popover.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n ChangeDetectorRef,\n ContentChild,\n Directive,\n ElementRef,\n EventEmitter,\n NgZone,\n TemplateRef,\n} from '@angular/core';\nimport type { Components } from '@ionic/core/components';\n\nimport { nullableBooleanAttribute } from '../utils/boolean-attribute';\nimport { inputNames, ProxyCmp, proxyOutputs } from '../utils/proxy';\n\nexport declare interface IonPopover extends Components.IonPopover {\n /**\n * Emitted after the popover has presented.\n */\n ionPopoverDidPresent: EventEmitter<CustomEvent>;\n /**\n * Emitted before the popover has presented.\n */\n ionPopoverWillPresent: EventEmitter<CustomEvent>;\n /**\n * Emitted after the popover has dismissed.\n */\n ionPopoverWillDismiss: EventEmitter<CustomEvent>;\n /**\n * Emitted after the popover has dismissed.\n */\n ionPopoverDidDismiss: EventEmitter<CustomEvent>;\n /**\n * Emitted after the popover has presented. Shorthand for ionPopoverDidPresent.\n */\n didPresent: EventEmitter<CustomEvent>;\n /**\n * Emitted before the popover has presented. Shorthand for ionPopoverWillPresent.\n */\n willPresent: EventEmitter<CustomEvent>;\n /**\n * Emitted after the popover has presented. Shorthand for ionPopoverWillDismiss.\n */\n willDismiss: EventEmitter<CustomEvent>;\n /**\n * Emitted after the popover has dismissed. Shorthand for ionPopoverDidDismiss.\n */\n didDismiss: EventEmitter<CustomEvent>;\n}\n\nconst POPOVER_INPUTS = [\n 'alignment',\n { name: 'animated', transform: nullableBooleanAttribute },\n { name: 'arrow', transform: nullableBooleanAttribute },\n { name: 'keepContentsMounted', transform: nullableBooleanAttribute },\n { name: 'backdropDismiss', transform: nullableBooleanAttribute },\n 'cssClass',\n { name: 'dismissOnSelect', transform: nullableBooleanAttribute },\n 'enterAnimation',\n 'event',\n { name: 'focusTrap', transform: nullableBooleanAttribute },\n { name: 'isOpen', transform: nullableBooleanAttribute },\n { name: 'keyboardClose', transform: nullableBooleanAttribute },\n { name: 'keyboardEvents', transform: nullableBooleanAttribute },\n 'leaveAnimation',\n 'mode',\n { name: 'showBackdrop', transform: nullableBooleanAttribute },\n { name: 'translucent', transform: nullableBooleanAttribute },\n 'trigger',\n 'triggerAction',\n 'reference',\n 'size',\n 'side',\n];\n\nconst POPOVER_PROXY_INPUTS = inputNames(POPOVER_INPUTS);\n\nconst POPOVER_METHODS = ['present', 'dismiss', 'onDidDismiss', 'onWillDismiss'];\n\n@ProxyCmp({\n inputs: POPOVER_PROXY_INPUTS,\n methods: POPOVER_METHODS,\n})\n/**\n * @Component extends from @Directive\n * so by defining the inputs here we\n * do not need to re-define them for the\n * lazy loaded popover.\n */\n@Directive({\n selector: 'ion-popover',\n // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property\n inputs: POPOVER_INPUTS,\n})\nexport class IonPopover {\n // TODO(FW-2827): type\n @ContentChild(TemplateRef, { static: false }) template: TemplateRef<any>;\n\n isCmpOpen = false;\n\n protected el: HTMLElement;\n\n constructor(c: ChangeDetectorRef, r: ElementRef, protected z: NgZone) {\n this.el = r.nativeElement;\n\n this.el.addEventListener('ionMount', () => {\n this.isCmpOpen = true;\n c.detectChanges();\n });\n this.el.addEventListener('didDismiss', () => {\n this.isCmpOpen = false;\n c.detectChanges();\n });\n proxyOutputs(this, this.el, [\n 'ionPopoverDidPresent',\n 'ionPopoverWillPresent',\n 'ionPopoverWillDismiss',\n 'ionPopoverDidDismiss',\n 'didPresent',\n 'willPresent',\n 'willDismiss',\n 'didDismiss',\n ]);\n }\n}\n"]}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Transforms a value to a boolean so that boolean properties can be set by attribute presence,
|
|
3
|
+
* e.g. `<ion-modal handle>` instead of `<ion-modal [handle]="true">`.
|
|
4
|
+
*
|
|
5
|
+
* Strings are coerced the same way Angular's `booleanAttribute` coerces them, so `''` (a bare
|
|
6
|
+
* attribute) becomes `true` and `'false'` becomes `false`.
|
|
7
|
+
*
|
|
8
|
+
* Angular's own `booleanAttribute` is not used because it coerces `null` and `undefined` to
|
|
9
|
+
* `false`. Components frequently treat those as a state distinct from `false`, such as
|
|
10
|
+
* `ion-item`'s `detail` resolving `undefined` to a computed default, and both reach inputs
|
|
11
|
+
* routinely from the `async` pipe before its first emission and from form control values.
|
|
12
|
+
*
|
|
13
|
+
* The parameter type is what Angular derives `ngAcceptInputType_*` from, so it decides which
|
|
14
|
+
* template bindings compile. Widening it to `unknown` would let any expression through.
|
|
15
|
+
*
|
|
16
|
+
* Declared as a function rather than an arrow constant because Angular has to resolve input
|
|
17
|
+
* transforms statically when compiling a library in partial compilation mode.
|
|
18
|
+
*/
|
|
19
|
+
export declare function nullableBooleanAttribute(value: boolean | string | null | undefined): boolean | null | undefined;
|