Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix(overlays): prevent scroll gestures when the overlay is presented #28415

Merged
merged 38 commits into from
Nov 1, 2023

Conversation

sean-perkins
Copy link
Contributor

@sean-perkins sean-perkins commented Oct 25, 2023

Issue number: Resolves #23942


What is the current behavior?

When an overlay is created (inserted in the DOM), but not presented, the scroll gesture is prevented. This behavior comes from the connectedCallback of ion-backdrop, where the gesture is prevented as soon as the backdrop is inserted in the DOM.

This means in situations where a developer creates an overlay, but does not present it immediately, the user cannot scroll. This is not desired.

What is the new behavior?

  • Scroll blocking behavior tied to the gesture has been removed from ion-backdrop and implemented into the overlays directly.
    • When an overlay is presented, scroll blocking is enabled on the body element (the user cannot scroll on the main content).
    • When the last presented overlay is dismissed, scroll blocking is disabled on the body element (the user can scroll on the main content).

Does this introduce a breaking change?

  • Yes
  • No

ion-backdrop no longer prevents scrolling on the main content when the backdrop is either inserted into the DOM or removed from the DOM. Developers using Ionic overlays do not need to migrate their implementations.

Developers with custom overlays using ion-backdrop internally can either use Ionic's gesture controller to disable scrolling when their overlay is presented/dismissed or can manually add the backdrop-no-scroll Ionic global class to the body element.

Other information

@github-actions github-actions bot added the package: core @ionic/core package label Oct 25, 2023
@sean-perkins sean-perkins marked this pull request as ready for review October 26, 2023 14:11
@sean-perkins

This comment was marked as resolved.

@sean-perkins sean-perkins changed the base branch from main to feature-8.0 October 27, 2023 16:54
dependabot bot and others added 18 commits October 27, 2023 12:55
Bumps [@stencil/core](https://github.com/ionic-team/stencil) from 4.4.1
to 4.5.0.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/ionic-team/stencil/blob/main/CHANGELOG.md"><code>@​stencil/core</code>'s
changelog</a>.</em></p>
<blockquote>
<h1>📢 <a
href="https://github.com/ionic-team/stencil/compare/v4.4.1...v4.5.0">4.5.0</a>
(2023-10-16)</h1>
<h3>Features</h3>
<ul>
<li><strong>compiler, runtime:</strong> add support for form-associated
elements (<a
href="https://github.com/ionic-team/stencil/issues/4784">#4784</a>)
(<a
href="https://github.com/ionic-team/stencil/commit/5976c9b6a6e7b49d470390021b9c31e4d3cbbf4b">5976c9b</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/ionic-team/stencil/commit/4c38e470fdbbe0e8170636386fae6c5b5090695c"><code>4c38e47</code></a>
v4.5.0 (<a
href="https://github.com/ionic-team/stencil/issues/4933">#4933</a>)</li>
<li><a
href="https://github.com/ionic-team/stencil/commit/5976c9b6a6e7b49d470390021b9c31e4d3cbbf4b"><code>5976c9b</code></a>
feat(compiler, runtime): add support for form-associated elements (<a
href="https://github.com/ionic-team/stencil/issues/4784">#4784</a>)</li>
<li><a
href="https://github.com/ionic-team/stencil/commit/b1dd4ac7cd2da560b74d274b363c2b24761ca2da"><code>b1dd4ac</code></a>
chore(deps): update dependency <code>@​types/prompts</code> to v2.4.6
(<a
href="https://github.com/ionic-team/stencil/issues/4928">#4928</a>)</li>
<li><a
href="https://github.com/ionic-team/stencil/commit/bbad7aed3675da1fd2c84d9dd46c5935844b07c9"><code>bbad7ae</code></a>
chore(release): remove notice.md generation (<a
href="https://github.com/ionic-team/stencil/issues/4925">#4925</a>)</li>
<li><a
href="https://github.com/ionic-team/stencil/commit/09fdbd131d517bb9227297208cae9741cc7d208f"><code>09fdbd1</code></a>
chore(deps): update dependency <code>@​types/listr</code> to v0.14.6 (<a
href="https://github.com/ionic-team/stencil/issues/4927">#4927</a>)</li>
<li><a
href="https://github.com/ionic-team/stencil/commit/d1355700953e3c078ab27e5a7954d45aa5853b60"><code>d135570</code></a>
chore(deps): update dependency <code>@​types/ws</code> to v8.5.7 (<a
href="https://github.com/ionic-team/stencil/issues/4929">#4929</a>)</li>
<li><a
href="https://github.com/ionic-team/stencil/commit/968b2ec7a03239369a6bb304c0266c28d8dcea18"><code>968b2ec</code></a>
chore(deps): update typescript-eslint to v6.7.5 (<a
href="https://github.com/ionic-team/stencil/issues/4931">#4931</a>)</li>
<li><a
href="https://github.com/ionic-team/stencil/commit/183a05bb95dc08b1328b037ed7e514d66f6e775e"><code>183a05b</code></a>
chore(deps): update dependency eslint to v8.51.0 (<a
href="https://github.com/ionic-team/stencil/issues/4924">#4924</a>)</li>
<li><a
href="https://github.com/ionic-team/stencil/commit/628e8c5727299680ac89e38a1313e5029dd00cbf"><code>628e8c5</code></a>
chore(deps): update dependency <code>@​rollup/pluginutils</code> to
v5.0.5 (<a
href="https://github.com/ionic-team/stencil/issues/4922">#4922</a>)</li>
<li><a
href="https://github.com/ionic-team/stencil/commit/6893954702b2944ee0bcb72e0cbcf94f67fc81b6"><code>6893954</code></a>
refactor(jest): make jest presets version-specific (<a
href="https://github.com/ionic-team/stencil/issues/4904">#4904</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/ionic-team/stencil/compare/v4.4.1...v4.5.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=@stencil/core&package-manager=npm_and_yarn&previous-version=4.4.1&new-version=4.5.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Issue number: N/A

---------

<!-- 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. -->

Testing Ionicons in Ionic is currently difficult. Developers need to a)
create a dev build of Ionicons, b) create a branch in Ionic, c) install
the dev build in Ionic core, d) push the branch, and e) create a draft
PR to watch the CI process run.

## What is the new behavior?
<!-- Please describe the behavior or changes that are being added by
this PR. -->

- Introduces a workflow dispatch option for our CI process. This allows
developers to run the CI process for any branch without creating PR.
- I also added an optional input so devs can specify the ionicons
version if they want to pass a special version.

## 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. -->
Issue number: Internal

---------

## What is the current behavior?
Item sliding has some unused CSS and no tests for safe area padding
based on the direction.

This CSS is not used:
https://github.com/ionic-team/ionic-framework/blob/feda7a0e963048d300eb17d4b9e1056f09088714/core/src/components/item-option/item-option.scss#L20-L30

The rendered markup for a sliding item looks like the following:

```html
<ion-item-sliding>
  <ion-item-options side="start">
    <ion-item-option>
      Archive
    </ion-item-option>
  </ion-item-options>

  <ion-item class="in-list">
    <ion-label>
      Sliding Item
    </ion-label>
  </ion-item>
</ion-item-sliding>
```

Since `ion-item-options` never gets the `in-list` class added to it, and
`ion-item` never contains options, the above CSS is never used.

## What is the new behavior?
<!-- Please describe the behavior or changes that are being added by
this PR. -->

- Removed the CSS that is not used, the correct CSS for safe area
padding has already been added here:
https://github.com/ionic-team/ionic-framework/blob/feda7a0e963048d300eb17d4b9e1056f09088714/core/src/components/item-options/item-options.scss#L57-L67
- Added screenshot tests to verify the safe area padding is applied to
the proper side

## Does this introduce a breaking change?

- [ ] Yes
- [x] No

## Other information

I could add additional tests that make sure there is not padding added
when opening the opposite side on each direction but since this problem
was happening when changing from `ltr` to `rtl` I did not.

[FW-5174]:
https://ionic-cloud.atlassian.net/browse/FW-5174?atlOrigin=eyJpIjoiNWRkNTljNzYxNjVmNDY3MDlhMDU5Y2ZhYzA5YTRkZjUiLCJwIjoiZ2l0aHViLWNvbS1KU1cifQ

---------

Co-authored-by: ionitron <[email protected]>
Issue number: resolves #28358

---------

<!-- 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. -->


28f2ec9
exposed a (possible) `ng-packagr` bug where the form control components
were being re-assigned, which breaks treeshaking. These components were
considered side effects and were always being pulled into the bundle.

This resulted in a higher than expected bundle size. This issue appears
to be caused by using 2 decorators **and** referring to the class in
`useExisting` (for providers). Doing just one of these does not
reproduce the issue.

The compiled output looks something like this:

```typescript
let IonToggle = IonToggle_1 = /*@__PURE__*/ class IonToggle extends ValueAccessor {
    constructor(c, r, z, injector) {
        super(injector, r);
        this.z = z;
        c.detach();
        this.el = r.nativeElement;
        proxyOutputs(this, this.el, ['ionChange', 'ionFocus', 'ionBlur']);
    }
    writeValue(value) {
        this.elementRef.nativeElement.checked = this.lastValue = value;
        setIonicClasses(this.elementRef);
    }
    handleIonChange(el) {
        this.handleValueChange(el, el.checked);
    }
};
/** @nocollapse */ IonToggle.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: IonToggle, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
/** @nocollapse */ IonToggle.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: IonToggle, isStandalone: true, selector: "ion-toggle", inputs: { checked: "checked", color: "color", disabled: "disabled", enableOnOffLabels: "enableOnOffLabels", justify: "justify", labelPlacement: "labelPlacement", legacy: "legacy", mode: "mode", name: "name", value: "value" }, host: { listeners: { "ionChange": "handleIonChange($event.target)" } }, providers: [
        {
            provide: NG_VALUE_ACCESSOR,
            useExisting: IonToggle_1,
            multi: true,
        },
    ], usesInheritance: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
IonToggle = IonToggle_1 = __decorate([
    ProxyCmp({
        defineCustomElementFn: defineCustomElement$1i,
        inputs: TOGGLE_INPUTS,
    })
], IonToggle);
```

## What is the new behavior?
<!-- Please describe the behavior or changes that are being added by
this PR. -->

- Removed the `ProxyCmp` usage in favor of manually calling proxyInputs
and proxyMethods.
-  Also saw that select was missing a form control test, so I added one

The compiled code now looks something like this:

```typescript
class IonToggle extends ValueAccessor {
    constructor(c, r, z, injector) {
        super(injector, r);
        this.z = z;
        defineCustomElement$1i();
        proxyInputs(IonToggle, TOGGLE_INPUTS);
        c.detach();
        this.el = r.nativeElement;
        proxyOutputs(this, this.el, ['ionChange', 'ionFocus', 'ionBlur']);
    }
    writeValue(value) {
        this.elementRef.nativeElement.checked = this.lastValue = value;
        setIonicClasses(this.elementRef);
    }
    handleIonChange(el) {
        this.handleValueChange(el, el.checked);
    }
}
/** @nocollapse */ IonToggle.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: IonToggle, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
/** @nocollapse */ IonToggle.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: IonToggle, isStandalone: true, selector: "ion-toggle", inputs: { checked: "checked", color: "color", disabled: "disabled", enableOnOffLabels: "enableOnOffLabels", justify: "justify", labelPlacement: "labelPlacement", legacy: "legacy", mode: "mode", name: "name", value: "value" }, host: { listeners: { "ionChange": "handleIonChange($event.target)" } }, providers: [
        {
            provide: NG_VALUE_ACCESSOR,
            useExisting: IonToggle,
            multi: true,
        },
    ], usesInheritance: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
```

## 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. -->

Ryan provided some context on a related Stencil bug where doing
reassignments broke treeshaking in Webpack. While the source of this bug
is not Stencil, understanding the Stencil bug helped me better
understand this issue:

ionic-team/stencil#3191
ionic-team/stencil#3248
ionic-team/stencil#4188 (fixes an issue
introduced in the above stencil PR)

Dev build: `7.5.1-dev.11697480817.10fa2601`
Issue number: N/A

---------

<!-- 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. -->

While working on a safe area padding mixin, I realized that `rtl()`
wasn't being applied for `:host` when using Firefox or Safari. This is
happening because the syntax for `:dir()` is wrong. The placement needs
to be updated for Firefox and Safari to register it.

```scss
:host {
   @include rtl() { // <- won't work
      // styles
   }
}

// generates
:host-context([dir=rtl]) {
  // styles
}

:host:dir(rtl) { // <- wrong syntax
   // styles
}
```

```scss
:host(.class) {
   @include rtl() { // <- won't work
      // styles
   }
}

// generates
:host-context([dir=rtl]):host(.class) {
  // styles
}

:host-context([dir=rtl]).class {
   // styles
}

:host(.class):dir(rtl) { // <- wrong syntax
   // styles
}
```

## What is the new behavior?
<!-- Please describe the behavior or changes that are being added by
this PR. -->

I updated `rtl()` to use `:dir()` as the `addHostSelector` in the
`add-root-selector` function. This generates all the correct selectors
for Firefox and Safari. However, `:dir()` does not have the structure of
`:host-context()` so I had to add a new parameter to `add-root-selector`
to determine whether to use `:host-context()` or not. I set the default
to `true` since the function originally used `:host-context()`.

An extra win is that the updated function will be ready for when
`:host-context()` can be removed from the codebase.


```diff
:host {
   @include rtl() { // <- works
      // styles
   }
}

// generates
:host-context([dir=rtl]) {
  // styles
}

-  :host:dir(rtl) {
+  :host(:dir(rtl)) {
   // styles
}
```

```diff
:host(.class) {
   @include rtl() { // <- works
      // styles
   }
}

// generates
:host-context([dir=rtl]):host(.class) {
  padding-right: 40px;
}

:host-context([dir=rtl]).class {
   // styles
}

-  :host(.class):dir(rtl) {
+  :host(.class:dir(rtl)) {
   // 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. -->

N/A

---------

Co-authored-by: ionitron <[email protected]>
Issue number: N/A

---------

<!-- 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. -->

Prettier is configured to ignore the `proxies.ts` file in the `src`
directory only. This means it is adjusting whitespace/commas/etc on the
`proxies.ts` file in the `standalone` directory which we do not want
because we will always get diffs whenever `npm run build` is run in
`core`.

## What is the new behavior?
<!-- Please describe the behavior or changes that are being added by
this PR. -->

- Updated prettier config to ignore all `proxies.ts` files in the
`angular` package
- Re-generated the proxies file

## 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. -->
Issue number: resolves #18683, resolves #15538, resolves #22341

---------

<!-- 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. -->

Menus in a split pane are hidden when a second split pane is
mounted/made visible. This is because the `onSplitPaneChanged` callback
does not take into account whether the it is a child of the split pane
that emitted `ionSplitPaneVisible`.

When split pane 2 is shown, that causes the menu is split pane 1 to
hide. When split pane 1 is shown, the menu inside of it _is_ shown.
However, since split pane 2 is then hidden that component also emits
`ionSplitPaneVisible`, causing the menu inside of split pane 1 to hide.

## What is the new behavior?
<!-- Please describe the behavior or changes that are being added by
this PR. -->

- Menus are only hidden when its parent split pane changes visibility

## 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. -->

Dev build: `7.5.1-dev.11697568647.1ac87d08`

---------

Co-authored-by: Amanda Johnston <[email protected]>
Issue number: N/A

---------

<!-- 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. -->

This project has several unused Sass variables still in the code base.
The team would like to remove these.

## What is the new behavior?
<!-- Please describe the behavior or changes that are being added by
this PR. -->

- Removed unused Sass variables


## 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. -->

The original scope of this ticket was for checkbox only, but many other
components had unused sass variables, so I decided to tackle everything
all at once.

Since these variables are not used anywhere:

1. The build should pass
2. There should be no screenshot diffs
… direction (#28377)

Issue number: Internal

---------

<!-- 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. -->

When calculating the fab's horizontal position, the safe area is taken
into account. However, which safe area side is applied changes depending
on whether the document's direction is LTR or RTL. This is incorrect as
the left safe area padding will always be on the left side regardless of
direction, and vice versa.

## What is the new behavior?
<!-- Please describe the behavior or changes that are being added by
this PR. -->

The left safe area is always applied to the fab's `left` position, and
vice versa.

## 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. -->

---------

Co-authored-by: ionitron <[email protected]>
Issue number: Internal

---------

<!-- 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. -->

As part of FW-2832, the team would like to swap out usages of the any
type for stronger types.

## What is the new behavior?
<!-- Please describe the behavior or changes that are being added by
this PR. -->


c529bc2
- `scrollToTop` doesn't return anything, so I added the `void` return
type


a96971a
- `animation.effect` is a type of
[AnimationEffect](https://developer.mozilla.org/en-US/docs/Web/API/Animation/effect).
One of the more common types of effects is a `KeyframeEffect`. However,
TypeScript doesn't know which specific type of AnimationEffect we are
using, so I cast `animation.effect` as KeyframeEffect where appropriate.
- I also added `!` to places where we know the effect and other
properties are always defined (since they run after the web animation
has been constructed)
- Added stronger types to the internal to/from/fromTo functions (the
public facing type improvements are in
#28334)


fdaf550
- `getRootNode` can return multiple types of objects, so I cast it to
the specific types that we work with in `isFocused`.


46a6efa
- Added the "Animation" type and resolved related errors once we had
stronger types


a7cb9a5
- Made heavier use of the `T` generic
- Once we know `node` is an Element (`nodeType === 1`) we manually cast
the element as `T`


6a9d1f0
- The focus visible utility is an internal utility, but it was lacking
an interface, so I added one.


90b64c2
- Removed unneeded HTMLElement casting
- Added `!` since we can assume the selected elements are defined with
the refresher
- Added documentation as to why casting `referencEl.style` as `any` is
something we need to keep.


3a084ca
- Avoided the Event naming collision by using globalThis

## 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. -->

Note: This PR contains only type changes. Changes the required updates
to the implementation of Ionic are pulled out into separate PRs and
target a minor release branch to minimize risk.

---------

Co-authored-by: Amanda Johnston <[email protected]>
…le (#28362)

Issue number: resolves #28283 

---------

<!-- 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. -->

`getInputElement()` is used to access the native input. If the component
has yet to render, then the function will return `undefined`. This
happens mostly when using `ref` on React.

```tsx
<IonInput ref={async input => {
  const nativeInput = await input.getInputElement();
  // nativeInput is undefined
}} />
```

## What is the new behavior?
<!-- Please describe the behavior or changes that are being added by
this PR. -->

- `getInputElement()` will wait to return once the component is ready.

## 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. -->

Dev build: `7.5.1-dev.11697488622.175c9183`
Issue number: internal

---------

<!-- 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. -->

Legacy radio has tests that use `Tab` key presses. These tend to flake
at unknown moments and were skipped until a fix can be implemented.

## What is the new behavior?
<!-- Please describe the behavior or changes that are being added by
this PR. -->

Unable to replicate the flakiness locally or on GitHub. However, it only
fails on Safari so the tests were re-enabled except for Safari.

## 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. -->

This only happens on legacy. The legacy form controls will also be
removed in the future. Due to this, these tests will be removed anyways
at that time.
…8369)

Issue number: resolves #18487 

---------

<!-- 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. -->

Web-based users do not get a scrollbar when:

- alert has a long list of inputs (this also happens on `ion-select`
with the alert interface)
- `ion-select` uses the action-sheet interface and has a long list of
options

This makes it difficult for users to navigate through the options by
forcing them to use their keyboards. Some users may also not be used to
using their keyboards for navigation. Additionally, this can lead to
potential confusion that there are no other options.

## What is the new behavior?
<!-- Please describe the behavior or changes that are being added by
this PR. -->

Web-based users get a scrollbar when:

- alert has a long list of inputs (this also happens on `ion-select`
with the alert interface)
- `ion-select` uses the action-sheet interface and has a long list of
options

## 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. -->

The issue was filed for the alert interface but it's also happening on
the action-sheet interface.

Dev build: 7.5.1-dev.11697570585.1774584d
Bumps [@stencil/core](https://github.com/ionic-team/stencil) from 4.5.0
to 4.6.0.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/ionic-team/stencil/blob/main/CHANGELOG.md"><code>@​stencil/core</code>'s
changelog</a>.</em></p>
<blockquote>
<h1>💥 <a
href="https://github.com/ionic-team/stencil/compare/v4.5.0...v4.6.0">4.6.0</a>
(2023-10-23)</h1>
<h3>Bug Fixes</h3>
<ul>
<li><strong>compiler:</strong> consistently generate additional type
files (<a
href="https://github.com/ionic-team/stencil/issues/4938">#4938</a>)
(<a
href="https://github.com/ionic-team/stencil/commit/70cba503e881755f5d24d2f23a8e121aedf5a805">70cba50</a>)</li>
<li><strong>compiler:</strong> persist polyfills on build (<a
href="https://github.com/ionic-team/stencil/issues/4932">#4932</a>)
(<a
href="https://github.com/ionic-team/stencil/commit/b97dadc967b1fde892cb75a544b1eecd2361b194">b97dadc</a>),
closes <a
href="https://github.com/ionic-team/stencil/issues/4661">#4661</a></li>
<li><strong>runtime:</strong> add height, width Source attrs (<a
href="https://github.com/ionic-team/stencil/issues/4943">#4943</a>)
(<a
href="https://github.com/ionic-team/stencil/commit/c9a3eac789c8fe9c6fdb6b7be2037a19ee361c6d">c9a3eac</a>),
closes <a
href="https://github.com/ionic-team/stencil/issues/4942">#4942</a></li>
</ul>
<h3>Features</h3>
<ul>
<li><strong>types:</strong> generate addEventListener and
removeEventListener overloads to component html element type (<a
href="https://github.com/ionic-team/stencil/issues/4909">#4909</a>)
(<a
href="https://github.com/ionic-team/stencil/commit/024979841f7124aa3bcce6a6ecd094dfecf1566c">0249798</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/ionic-team/stencil/commit/1d8f1d42d9f3fa2eae86634d61b2b27c7cc6c6aa"><code>1d8f1d4</code></a>
v4.6.0 (<a
href="https://github.com/ionic-team/stencil/issues/4967">#4967</a>)</li>
<li><a
href="https://github.com/ionic-team/stencil/commit/515af34fac4fc7b5e162a0db6529c0c212fc2c2d"><code>515af34</code></a>
chore(deps): update dependency <code>@​types/fs-extra</code> to v11.0.3
(<a
href="https://github.com/ionic-team/stencil/issues/4960">#4960</a>)</li>
<li><a
href="https://github.com/ionic-team/stencil/commit/0496cb27e408002f6ae819a094b9b6fd09d2eed6"><code>0496cb2</code></a>
chore(deps): update actions/checkout action to v4.1.1 (<a
href="https://github.com/ionic-team/stencil/issues/4957">#4957</a>)</li>
<li><a
href="https://github.com/ionic-team/stencil/commit/10876146d07c4fa3d21046509f89223bb2002297"><code>1087614</code></a>
chore(deps): update dependency <code>@​types/listr</code> to v0.14.7 (<a
href="https://github.com/ionic-team/stencil/issues/4963">#4963</a>)</li>
<li><a
href="https://github.com/ionic-team/stencil/commit/1b43fde465e6f42198957a5213be9f03eedf470b"><code>1b43fde</code></a>
chore(deps): update dependency <code>@​types/eslint</code> to v8.44.6
(<a
href="https://github.com/ionic-team/stencil/issues/4958">#4958</a>)</li>
<li><a
href="https://github.com/ionic-team/stencil/commit/4d5d24f362ddfbf2b8e0b206929c822e9f281ad7"><code>4d5d24f</code></a>
chore(deps): update dependency <code>@​types/exit</code> to v0.1.32 (<a
href="https://github.com/ionic-team/stencil/issues/4959">#4959</a>)</li>
<li><a
href="https://github.com/ionic-team/stencil/commit/99831eb0bb1198934d16738839e4c585928a5f5c"><code>99831eb</code></a>
chore(deps): update dependency <code>@​types/graceful-fs</code> to
v4.1.8 (<a
href="https://github.com/ionic-team/stencil/issues/4962">#4962</a>)</li>
<li><a
href="https://github.com/ionic-team/stencil/commit/2762091e34829dc383b26f54a2602aa9d48d5eaa"><code>2762091</code></a>
chore(deps): update dependency <code>@​types/mock-fs</code> to v4.13.3
(<a
href="https://github.com/ionic-team/stencil/issues/4964">#4964</a>)</li>
<li><a
href="https://github.com/ionic-team/stencil/commit/024979841f7124aa3bcce6a6ecd094dfecf1566c"><code>0249798</code></a>
feat(types): generate addEventListener and removeEventListener overloads
to c...</li>
<li><a
href="https://github.com/ionic-team/stencil/commit/70cba503e881755f5d24d2f23a8e121aedf5a805"><code>70cba50</code></a>
fix(compiler): consistently generate additional type files (<a
href="https://github.com/ionic-team/stencil/issues/4938">#4938</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/ionic-team/stencil/compare/v4.5.0...v4.6.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=@stencil/core&package-manager=npm_and_yarn&previous-version=4.5.0&new-version=4.6.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

---------

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Ryan Waskiewicz <[email protected]>
)

Bumps [@stencil/sass](https://github.com/ionic-team/stencil-sass) from
3.0.6 to 3.0.7.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/ionic-team/stencil-sass/releases"><code>@​stencil/sass</code>'s
releases</a>.</em></p>
<blockquote>
<h2>v3.0.7</h2>
<h2>What's Changed</h2>
<ul>
<li>chore(deps): update dependency npm to v10.2.0 by <a
href="https://github.com/renovate"><code>@​renovate</code></a> in <a
href="https://github.com/ionic-team/stencil-sass/pull/410">ionic-team/stencil-sass#410</a></li>
<li>chore(deps): update dependency
<code>@​rollup/plugin-node-resolve</code> to v15.2.2 by <a
href="https://github.com/renovate"><code>@​renovate</code></a> in <a
href="https://github.com/ionic-team/stencil-sass/pull/409">ionic-team/stencil-sass#409</a></li>
<li>chore(deps): update dependency terser to v5.21.0 by <a
href="https://github.com/renovate"><code>@​renovate</code></a> in <a
href="https://github.com/ionic-team/stencil-sass/pull/411">ionic-team/stencil-sass#411</a></li>
<li>chore(repo): group rollup in renovate by <a
href="https://github.com/rwaskiewicz"><code>@​rwaskiewicz</code></a> in
<a
href="https://github.com/ionic-team/stencil-sass/pull/413">ionic-team/stencil-sass#413</a></li>
<li>chore(deps): update rollup, by <a
href="https://github.com/renovate"><code>@​renovate</code></a> in <a
href="https://github.com/ionic-team/stencil-sass/pull/414">ionic-team/stencil-sass#414</a></li>
<li>chore(deps): update dependency <code>@​stencil/core</code> to v4.4.0
by <a href="https://github.com/renovate"><code>@​renovate</code></a> in
<a
href="https://github.com/ionic-team/stencil-sass/pull/408">ionic-team/stencil-sass#408</a></li>
<li>chore(deps): update dependency <code>@​stencil/core</code> to v4.4.1
by <a href="https://github.com/renovate"><code>@​renovate</code></a> in
<a
href="https://github.com/ionic-team/stencil-sass/pull/416">ionic-team/stencil-sass#416</a></li>
<li>chore(deps-dev): bump <code>@​babel/traverse</code> from 7.15.4 to
7.23.2 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://github.com/ionic-team/stencil-sass/pull/418">ionic-team/stencil-sass#418</a></li>
<li>chore(deps): update node.js to v20.8.1 by <a
href="https://github.com/renovate"><code>@​renovate</code></a> in <a
href="https://github.com/ionic-team/stencil-sass/pull/417">ionic-team/stencil-sass#417</a></li>
<li>chore(deps): update dependency <code>@​stencil/core</code> to v4.5.0
by <a href="https://github.com/renovate"><code>@​renovate</code></a> in
<a
href="https://github.com/ionic-team/stencil-sass/pull/419">ionic-team/stencil-sass#419</a></li>
<li>chore(deps): update dependency terser to v5.22.0 by <a
href="https://github.com/renovate"><code>@​renovate</code></a> in <a
href="https://github.com/ionic-team/stencil-sass/pull/420">ionic-team/stencil-sass#420</a></li>
<li>chore(deps): update dependency rollup to v4 by <a
href="https://github.com/renovate"><code>@​renovate</code></a> in <a
href="https://github.com/ionic-team/stencil-sass/pull/415">ionic-team/stencil-sass#415</a></li>
<li>chore(deps): update dependency npm to v10.2.1 by <a
href="https://github.com/renovate"><code>@​renovate</code></a> in <a
href="https://github.com/ionic-team/stencil-sass/pull/422">ionic-team/stencil-sass#422</a></li>
<li>chore(deps): update actions/checkout action to v4.1.1 by <a
href="https://github.com/renovate"><code>@​renovate</code></a> in <a
href="https://github.com/ionic-team/stencil-sass/pull/421">ionic-team/stencil-sass#421</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/ionic-team/stencil-sass/compare/v3.0.6...v3.0.7">https://github.com/ionic-team/stencil-sass/compare/v3.0.6...v3.0.7</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/ionic-team/stencil-sass/commit/2948055fcb655fd9fa771fa37e788a9fb6d1eec5"><code>2948055</code></a>
3.0.7</li>
<li><a
href="https://github.com/ionic-team/stencil-sass/commit/3ea5f312fb9e52341704c0ffbde0b2c0e79678ae"><code>3ea5f31</code></a>
chore(deps): update actions/checkout action to v4.1.1 (<a
href="https://github.com/ionic-team/stencil-sass/issues/421">#421</a>)</li>
<li><a
href="https://github.com/ionic-team/stencil-sass/commit/99d53c74ce31084d805c48a12e36a9da1d5e1f1f"><code>99d53c7</code></a>
chore(deps): update dependency npm to v10.2.1 (<a
href="https://github.com/ionic-team/stencil-sass/issues/422">#422</a>)</li>
<li><a
href="https://github.com/ionic-team/stencil-sass/commit/6e058cc47e059e9ff8ca8ba79c709be73d94708f"><code>6e058cc</code></a>
chore(deps): update dependency rollup to v4 (<a
href="https://github.com/ionic-team/stencil-sass/issues/415">#415</a>)</li>
<li><a
href="https://github.com/ionic-team/stencil-sass/commit/7e497b5b9e44f8b87a5de7fce43dd6293d49604d"><code>7e497b5</code></a>
chore(deps): update dependency terser to v5.22.0 (<a
href="https://github.com/ionic-team/stencil-sass/issues/420">#420</a>)</li>
<li><a
href="https://github.com/ionic-team/stencil-sass/commit/bd432efee078007dcd970f5dcde8d9b3f3f81dc6"><code>bd432ef</code></a>
chore(deps): update dependency <code>@​stencil/core</code> to v4.5.0 (<a
href="https://github.com/ionic-team/stencil-sass/issues/419">#419</a>)</li>
<li><a
href="https://github.com/ionic-team/stencil-sass/commit/28ee8f3fe5ba5c3ee5030689251a9241fe8ce5fb"><code>28ee8f3</code></a>
chore(deps): update node.js to v20.8.1 (<a
href="https://github.com/ionic-team/stencil-sass/issues/417">#417</a>)</li>
<li><a
href="https://github.com/ionic-team/stencil-sass/commit/a729f1b35d84aa30a52cd6a2cac56fb8302dd998"><code>a729f1b</code></a>
chore(deps-dev): bump <code>@​babel/traverse</code> from 7.15.4 to
7.23.2 (<a
href="https://github.com/ionic-team/stencil-sass/issues/418">#418</a>)</li>
<li><a
href="https://github.com/ionic-team/stencil-sass/commit/dca666a4df1e66d91596b7f146b73032efd3d9c3"><code>dca666a</code></a>
chore(deps): update dependency <code>@​stencil/core</code> to v4.4.1 (<a
href="https://github.com/ionic-team/stencil-sass/issues/416">#416</a>)</li>
<li><a
href="https://github.com/ionic-team/stencil-sass/commit/1d8a49c65439101ef0cd80bf394c5643b58167b3"><code>1d8a49c</code></a>
chore(deps): update dependency <code>@​stencil/core</code> to v4.4.0 (<a
href="https://github.com/ionic-team/stencil-sass/issues/408">#408</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/ionic-team/stencil-sass/compare/v3.0.6...v3.0.7">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=@stencil/sass&package-manager=npm_and_yarn&previous-version=3.0.6&new-version=3.0.7)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
This commit removes the blocking behavior as part of the backdrop. Developers with custom implementations using ion-backdrop that want scroll blocking will either need to use Ionic's gesture controller API or manually add the backdrop-no-scroll class to the body when their overlay is presented and remove it when dismissed.
@github-actions github-actions bot added package: angular @ionic/angular package package: vue @ionic/vue package package: react @ionic/react package labels Oct 27, 2023
@github-actions github-actions bot removed package: angular @ionic/angular package package: vue @ionic/vue package package: react @ionic/react package labels Oct 30, 2023
Copy link
Contributor

@liamdebeasi liamdebeasi left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm good with the change as-is, just one question.

@sean-perkins sean-perkins merged commit 7ba939f into feature-8.0 Nov 1, 2023
43 checks passed
@sean-perkins sean-perkins deleted the sp/FW-196 branch November 1, 2023 18:58
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
package: core @ionic/core package
Projects
None yet
Development

Successfully merging this pull request may close these issues.

bug: overlays block scroll as soon as they are created, even if they do not get presented
6 participants