ionic-framework icon indicating copy to clipboard operation
ionic-framework copied to clipboard

bug: backdrop not shown when IonDatetime is used in IonModal

Open mattalco opened this issue 1 year ago • 4 comments
trafficstars

Prerequisites

Ionic Framework Version

v8.x

Current Behavior

When IonDatetime is used within an IonModal, the backdrop that is supposed to accompany the date/time selector doesn't appear.

Expected Behavior

When IonDatetime is used within an IonModal, the backdrop as appears here in the docs appears correctly.

Steps to Reproduce

Create basic Ionic app Create an IonModal Inside that IonModal, place an IonDatetimeButton component Within the element as the base IonModal, place the Basic Usage code provided here: https://ionicframework.com/docs/api/datetime-button

Code Reproduction URL

https://stackblitz.com/edit/jcadpz?file=src%2Fmain.tsx

Ionic Info

Ionic:

Ionic CLI : 7.2.0 (/Users//.npm-packages/lib/node_modules/@ionic/cli) Ionic Framework : @ionic/react 8.1.2

Capacitor:

Capacitor CLI : 6.0.0 @capacitor/android : not installed @capacitor/core : 6.0.0 @capacitor/ios : not installed

Utility:

cordova-res : not installed globally native-run : 2.0.1

System:

NodeJS : v20.11.0 (/usr/local/bin/node) npm : 10.2.4 OS : macOS Unknown

Additional Information

I feel like there needs to be some way for a modal associated with a datetime modal to have a higer z-index so the backdrop appears correctly. I tried supplying my own IonBackdrop but couldn't get that to work. I can manually edit the :host pseudo selector in the dev tools and increase the z-index to a value that works (11 vs. 2). Screenshot 2024-05-15 at 16 24 28

mattalco avatar May 15 '24 20:05 mattalco

Thank you for submitting the issue!

Could you provide more context of why you would like a nested modal?

I would recommend using a popover instead. This provides the backdrop plus there won't be a need a secondary modal.

<IonPopover keepContentsMounted={true}>
  <IonDatetime id="datetime"></IonDatetime>
</IonPopover>
<IonModal isOpen={true}>
  <IonHeader>
    <IonToolbar>
      <IonTitle>Bug Demo</IonTitle>
    </IonToolbar>
  </IonHeader>
  <div
    style={{
      height: '100%',
      display: 'flex',
      alignContent: 'center',
      justifyContent: 'center',
    }}
  >
    <IonDatetimeButton datetime="datetime"></IonDatetimeButton>
  </div>
</IonModal>

thetaPC avatar May 17 '24 21:05 thetaPC

The popover does technically work but is an unsatisfactory user experience. I much prefer the larger tap space and centeredness of the modal style vs the popover.

For example, here is a modal dialog from my app. IMG_1030 IMG_1029

mattalco avatar May 23 '24 18:05 mattalco

I discussed this with the team and we need a bit more time to figure things out. We’ll keep you posted and get back to you as soon as we can. Thanks for your patience!

thetaPC avatar May 31 '24 19:05 thetaPC

Thanks for the issue! This issue is being closed due to inactivity. If this is still an issue with the latest version of Ionic, please create a new issue and ensure the template is fully filled out.

Thank you for using Ionic!

ionitron-bot[bot] avatar May 31 '25 20:05 ionitron-bot[bot]