mirror of
https://github.com/ionic-team/ionic-framework.git
synced 2025-11-08 07:41:51 +08:00
fix(react, vue): inline modals apply ion-page class (#27481)
Issue number: resolves #27470 --------- <!-- Please do not submit updates to dependencies unless it fixes an issue. --> <!-- Please try to limit your pull request to one type (bugfix, feature, etc). Submit multiple pull requests if needed. --> ## What is the current behavior? <!-- Please describe the current behavior that you are modifying. --> Passing multiple elements in to an inline modal causes `.ion-page` to not get set. This causes content to get pushed off the bottom of the modal equal to the height of the header. React has some special CSS that prevents this:eb2772c0ce/packages/react/src/components/createInlineOverlayComponent.tsx (L137-L140)However, I think this should be delegated to `.ion-page` instead so the behavior is consistent across frameworks. For example, Angular uses `.ion-page`:eb2772c0ce/angular/src/directives/overlays/modal.ts (L82)## What is the new behavior? <!-- Please describe the behavior or changes that are being added by this PR. --> - Inline overlays in Ionic React and Ionic Vue wrap child content in `.ion-delegate-host.ion-page`. - Removed the custom flex styles from Ionic React as `.ion-page` has its own styles. ## Does this introduce a breaking change? - [ ] Yes - [x] No <!-- If this introduces a breaking change, please describe the impact and migration path for existing applications below. --> ## Other information <!-- Any other information that is important to this PR such as screenshots of how the component looks before and after the change. --> Revised Design Doc: https://github.com/ionic-team/ionic-framework-design-documents/pull/84
This commit is contained in:
@ -29,6 +29,10 @@ const routes: Array<RouteRecordRaw> = [
|
||||
path: '/overlays',
|
||||
component: () => import('@/views/Overlays.vue')
|
||||
},
|
||||
{
|
||||
path: '/modal-multiple-children',
|
||||
component: () => import('@/views/ModalMultipleChildren.vue')
|
||||
},
|
||||
{
|
||||
path: '/keep-contents-mounted',
|
||||
component: () => import('@/views/OverlaysKeepContentsMounted.vue')
|
||||
|
||||
16
packages/vue/test/base/src/views/ModalMultipleChildren.vue
Normal file
16
packages/vue/test/base/src/views/ModalMultipleChildren.vue
Normal file
@ -0,0 +1,16 @@
|
||||
<template>
|
||||
<ion-page data-pageid="modal-multiple-children">
|
||||
<ion-content class="ion-padding" :fullscreen="true">
|
||||
<ion-button id="show-modal">Show Modal</ion-button>
|
||||
|
||||
<ion-modal trigger="show-modal">
|
||||
<div class="child-content">Content A</div>
|
||||
<div class="child-content">Content B</div>
|
||||
</ion-modal>
|
||||
</ion-content>
|
||||
</ion-page>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { IonButton, IonContent, IonPage, IonModal } from '@ionic/vue';
|
||||
</script>
|
||||
Reference in New Issue
Block a user