Compare commits

..

2 Commits

Author SHA1 Message Date
Shane
18868640ee chore(git): sync main (#30994)
This PR just serves to update major-9.0 to reflect the current state of
main
2026-03-05 11:39:20 -08:00
Shane
23253db2ae chore(git): sync main (#30858)
Syncing Major 9.0 with main
2025-12-10 14:04:57 -08:00
66 changed files with 129 additions and 443 deletions

View File

@@ -22,7 +22,7 @@ runs:
using: 'composite'
steps:
- name: 🟢 Configure Node for Publish
uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0
with:
node-version: ${{ inputs.node-version }}
registry-url: 'https://registry.npmjs.org'

View File

@@ -3,7 +3,7 @@ description: 'Build Ionic Angular Server'
runs:
using: 'composite'
steps:
- uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
- uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0
with:
node-version: 24.x
- uses: ./.github/workflows/actions/download-archive

View File

@@ -9,7 +9,7 @@ runs:
using: 'composite'
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
- uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0
with:
node-version: 24.x

View File

@@ -9,7 +9,7 @@ runs:
using: 'composite'
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
- uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0
with:
node-version: 24.x
- name: 🕸️ Install Dependencies

View File

@@ -3,7 +3,7 @@ description: 'Build Ionic React Router'
runs:
using: 'composite'
steps:
- uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
- uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0
with:
node-version: 24.x
- uses: ./.github/workflows/actions/download-archive

View File

@@ -3,7 +3,7 @@ description: 'Build Ionic React'
runs:
using: 'composite'
steps:
- uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
- uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0
with:
node-version: 24.x
- uses: ./.github/workflows/actions/download-archive

View File

@@ -3,7 +3,7 @@ description: 'Builds Ionic Vue Router'
runs:
using: 'composite'
steps:
- uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
- uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0
with:
node-version: 24.x
- uses: ./.github/workflows/actions/download-archive

View File

@@ -3,7 +3,7 @@ description: 'Build Ionic Vue'
runs:
using: 'composite'
steps:
- uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
- uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0
with:
node-version: 24.x
- uses: ./.github/workflows/actions/download-archive

View File

@@ -10,7 +10,7 @@ inputs:
runs:
using: 'composite'
steps:
- uses: actions/download-artifact@v8
- uses: actions/download-artifact@v7
with:
name: ${{ inputs.name }}
path: ${{ inputs.path }}

View File

@@ -6,7 +6,7 @@ inputs:
runs:
using: 'composite'
steps:
- uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
- uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0
with:
node-version: 24.x
- uses: ./.github/workflows/actions/download-archive

View File

@@ -3,7 +3,7 @@ description: 'Test Core Clean Build'
runs:
using: 'composite'
steps:
- uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
- uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0
with:
node-version: 24.x

View File

@@ -3,7 +3,7 @@ description: 'Test Core Lint'
runs:
using: 'composite'
steps:
- uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
- uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0
with:
node-version: 24.x
- name: 🕸️ Install Dependencies

View File

@@ -13,7 +13,7 @@ inputs:
runs:
using: 'composite'
steps:
- uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
- uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0
with:
node-version: 24.x
- uses: ./.github/workflows/actions/download-archive
@@ -66,7 +66,7 @@ runs:
working-directory: ./core
- name: 📦 Archive Updated Screenshots
if: inputs.update == 'true' && steps.test-and-update.outputs.hasUpdatedScreenshots == 'true'
uses: actions/upload-artifact@v7
uses: actions/upload-artifact@v6
with:
name: updated-screenshots-${{ inputs.shard }}-${{ inputs.totalShards }}
path: UpdatedScreenshots-${{ inputs.shard }}-${{ inputs.totalShards }}.zip

View File

@@ -6,7 +6,7 @@ inputs:
runs:
using: 'composite'
steps:
- uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
- uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0
with:
node-version: 24.x
- name: 🕸️ Install Dependencies

View File

@@ -6,7 +6,7 @@ inputs:
runs:
using: 'composite'
steps:
- uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
- uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0
with:
node-version: 24.x
- uses: ./.github/workflows/actions/download-archive

View File

@@ -6,7 +6,7 @@ inputs:
runs:
using: 'composite'
steps:
- uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
- uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0
with:
node-version: 24.x
- uses: ./.github/workflows/actions/download-archive

View File

@@ -6,7 +6,7 @@ inputs:
runs:
using: 'composite'
steps:
- uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
- uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0
with:
node-version: 24.x
- uses: ./.github/workflows/actions/download-archive

View File

@@ -7,10 +7,10 @@ on:
runs:
using: 'composite'
steps:
- uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
- uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0
with:
node-version: 24.x
- uses: actions/download-artifact@v8
- uses: actions/download-artifact@v7
with:
path: ./artifacts
- name: 🔎 Extract Archives

View File

@@ -13,7 +13,7 @@ runs:
- name: 🗄️ Create Archive
run: zip -q -r ${{ inputs.output }} ${{ inputs.paths }}
shell: bash
- uses: actions/upload-artifact@v7
- uses: actions/upload-artifact@v6
with:
name: ${{ inputs.name }}
path: ${{ inputs.output }}

View File

@@ -3,23 +3,6 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [8.8.1](https://github.com/ionic-team/ionic-framework/compare/v8.8.0...v8.8.1) (2026-03-06)
### Bug Fixes
* **accordion:** update tabindex based on disabled state ([#30986](https://github.com/ionic-team/ionic-framework/issues/30986)) ([0e76a69](https://github.com/ionic-team/ionic-framework/commit/0e76a69370083702568825c29d63cf257d6b88f1))
* **angular:** export RefresherPullEnd types ([#30991](https://github.com/ionic-team/ionic-framework/issues/30991)) ([72abcca](https://github.com/ionic-team/ionic-framework/commit/72abccaad8df3c1db004da28610fddd95ac93c02))
### Features
* **toast:** add wrapper and content parts (originally intended for 8.8.0 but omitted from that release) ([#30992](https://github.com/ionic-team/ionic-framework/issues/30992)) ([366f00e](https://github.com/ionic-team/ionic-framework/commit/366f00e25f06e28aa7166275445716c2d301e44a)), closes [#30735](https://github.com/ionic-team/ionic-framework/issues/30735)
# [8.8.0](https://github.com/ionic-team/ionic-framework/compare/v8.7.18...v8.8.0) (2026-03-04)
@@ -33,7 +16,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline
* **item-option:** add inner and container parts ([#30929](https://github.com/ionic-team/ionic-framework/issues/30929)) ([f8f7ffd](https://github.com/ionic-team/ionic-framework/commit/f8f7ffda318c0143d9bb5c79fe55b4ecb88e6ce3))
* **item:** add inner and container parts ([#30927](https://github.com/ionic-team/ionic-framework/issues/30927)) ([a2c6559](https://github.com/ionic-team/ionic-framework/commit/a2c655923bb1cff51864949575e19028623c695d))
* **list-header:** add inner part ([#30930](https://github.com/ionic-team/ionic-framework/issues/30930)) ([ef73476](https://github.com/ionic-team/ionic-framework/commit/ef73476e08670630907e775a38f9ed30a84e3f1f))
* **modal:** add drag events for sheet and card modals ([#30962](https://github.com/ionic-team/ionic-framework/issues/30962)) ([d29ac71](https://github.com/ionic-team/ionic-framework/commit/d29ac713fad604c256fb385eb0c26eb9717e1ff4)), closes [#23955](https://github.com/ionic-team/ionic-framework/issues/23955)
* **modal:** add drag events for sheet and card modals ([#30962](https://github.com/ionic-team/ionic-framework/issues/30962)) ([d29ac71](https://github.com/ionic-team/ionic-framework/commit/d29ac713fad604c256fb385eb0c26eb9717e1ff4))
* **range:** add classes and expose parts to allow individual styling of dual knobs ([#30941](https://github.com/ionic-team/ionic-framework/issues/30941)) ([5bcf921](https://github.com/ionic-team/ionic-framework/commit/5bcf92184118055483bf306ab9e319b8e3e61870)), closes [#29862](https://github.com/ionic-team/ionic-framework/issues/29862)
* **range:** add classes to the range when the value is at the min or max ([#30932](https://github.com/ionic-team/ionic-framework/issues/30932)) ([fac1a66](https://github.com/ionic-team/ionic-framework/commit/fac1a6673c88a531f1d79656be4eb544f235f819))
* **refresher:** add ionPullStart and ionPullEnd events ([#30946](https://github.com/ionic-team/ionic-framework/issues/30946)) ([814c2e5](https://github.com/ionic-team/ionic-framework/commit/814c2e5ccd6d5bfda12bdf13a566cd66ff830d5b)), closes [#24524](https://github.com/ionic-team/ionic-framework/issues/24524)

View File

@@ -3,23 +3,6 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [8.8.1](https://github.com/ionic-team/ionic-framework/compare/v8.8.0...v8.8.1) (2026-03-06)
### Bug Fixes
* **accordion:** update tabindex based on disabled state ([#30986](https://github.com/ionic-team/ionic-framework/issues/30986)) ([0e76a69](https://github.com/ionic-team/ionic-framework/commit/0e76a69370083702568825c29d63cf257d6b88f1))
* **angular:** export RefresherPullEnd types ([#30991](https://github.com/ionic-team/ionic-framework/issues/30991)) ([72abcca](https://github.com/ionic-team/ionic-framework/commit/72abccaad8df3c1db004da28610fddd95ac93c02))
### Features
* **toast:** add wrapper and content parts (originally intended for 8.8.0 but omitted from that release) ([#30992](https://github.com/ionic-team/ionic-framework/issues/30992)) ([366f00e](https://github.com/ionic-team/ionic-framework/commit/366f00e25f06e28aa7166275445716c2d301e44a)), closes [#30735](https://github.com/ionic-team/ionic-framework/issues/30735)
# [8.8.0](https://github.com/ionic-team/ionic-framework/compare/v8.7.18...v8.8.0) (2026-03-04)
@@ -32,7 +15,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline
* **item-option:** add inner and container parts ([#30929](https://github.com/ionic-team/ionic-framework/issues/30929)) ([f8f7ffd](https://github.com/ionic-team/ionic-framework/commit/f8f7ffda318c0143d9bb5c79fe55b4ecb88e6ce3))
* **item:** add inner and container parts ([#30927](https://github.com/ionic-team/ionic-framework/issues/30927)) ([a2c6559](https://github.com/ionic-team/ionic-framework/commit/a2c655923bb1cff51864949575e19028623c695d))
* **list-header:** add inner part ([#30930](https://github.com/ionic-team/ionic-framework/issues/30930)) ([ef73476](https://github.com/ionic-team/ionic-framework/commit/ef73476e08670630907e775a38f9ed30a84e3f1f))
* **modal:** add drag events for sheet and card modals ([#30962](https://github.com/ionic-team/ionic-framework/issues/30962)) ([d29ac71](https://github.com/ionic-team/ionic-framework/commit/d29ac713fad604c256fb385eb0c26eb9717e1ff4)), closes [#23955](https://github.com/ionic-team/ionic-framework/issues/23955)
* **modal:** add drag events for sheet and card modals ([#30962](https://github.com/ionic-team/ionic-framework/issues/30962)) ([d29ac71](https://github.com/ionic-team/ionic-framework/commit/d29ac713fad604c256fb385eb0c26eb9717e1ff4))
* **range:** add classes and expose parts to allow individual styling of dual knobs ([#30941](https://github.com/ionic-team/ionic-framework/issues/30941)) ([5bcf921](https://github.com/ionic-team/ionic-framework/commit/5bcf92184118055483bf306ab9e319b8e3e61870)), closes [#29862](https://github.com/ionic-team/ionic-framework/issues/29862)
* **range:** add classes to the range when the value is at the min or max ([#30932](https://github.com/ionic-team/ionic-framework/issues/30932)) ([fac1a66](https://github.com/ionic-team/ionic-framework/commit/fac1a6673c88a531f1d79656be4eb544f235f819))
* **refresher:** add ionPullStart and ionPullEnd events ([#30946](https://github.com/ionic-team/ionic-framework/issues/30946)) ([814c2e5](https://github.com/ionic-team/ionic-framework/commit/814c2e5ccd6d5bfda12bdf13a566cd66ff830d5b)), closes [#24524](https://github.com/ionic-team/ionic-framework/issues/24524)

10
core/package-lock.json generated
View File

@@ -1,12 +1,12 @@
{
"name": "@ionic/core",
"version": "8.8.1",
"version": "8.8.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "@ionic/core",
"version": "8.8.1",
"version": "8.8.0",
"license": "MIT",
"dependencies": {
"@stencil/core": "4.43.0",
@@ -627,9 +627,9 @@
"license": "MIT"
},
"node_modules/@capacitor/core": {
"version": "8.2.0",
"resolved": "https://registry.npmjs.org/@capacitor/core/-/core-8.2.0.tgz",
"integrity": "sha512-oKaoNeNtH2iIZMDFVrb1atoyRECDGHcfLMunJ5KWN8DtvpVBeeA4c41e20NTuhMxw1cSYbpq2PV2hb+/9CJxlQ==",
"version": "8.1.0",
"resolved": "https://registry.npmjs.org/@capacitor/core/-/core-8.1.0.tgz",
"integrity": "sha512-UfMBMWc1v7J+14AhH03QmeNwV3HZx3qnOWhpwnHfzALEwAwlV/itQOQqcasMQYhOHWL0tiymc5ByaLTn7KKQxw==",
"dev": true,
"license": "MIT",
"dependencies": {

View File

@@ -1,6 +1,6 @@
{
"name": "@ionic/core",
"version": "8.8.1",
"version": "8.8.0",
"description": "Base components for Ionic",
"engines": {
"node": ">= 16"

View File

@@ -8046,7 +8046,7 @@ declare namespace LocalJSX {
*/
"onIonRefresh"?: (event: IonRefresherCustomEvent<RefresherEventDetail>) => void;
/**
* Emitted when the user begins to start pulling down.
* Emitted when the user begins to start pulling down. TODO(FW-7044): Remove this in a major release
* @deprecated Use `ionPullStart` instead.
*/
"onIonStart"?: (event: IonRefresherCustomEvent<void>) => void;

View File

@@ -127,8 +127,6 @@ export class Checkbox implements ComponentInterface {
*/
@State() isInvalid = false;
@State() private hasLabelContent = false;
@State() private hintTextId?: string;
/**
@@ -267,10 +265,6 @@ export class Checkbox implements ComponentInterface {
ev.stopPropagation();
};
private onSlotChange = () => {
this.hasLabelContent = this.el.textContent !== '';
};
private getHintTextId(): string | undefined {
const { helperText, errorText, helperTextId, errorTextId, isInvalid } = this;
@@ -332,6 +326,7 @@ export class Checkbox implements ComponentInterface {
} = this;
const mode = getIonMode(this);
const path = getSVGPath(mode, indeterminate);
const hasLabelContent = el.textContent !== '';
renderHiddenInput(true, el, name, checked ? value : '', disabled);
@@ -343,7 +338,7 @@ export class Checkbox implements ComponentInterface {
aria-checked={indeterminate ? 'mixed' : `${checked}`}
aria-describedby={this.hintTextId}
aria-invalid={this.isInvalid ? 'true' : undefined}
aria-labelledby={this.hasLabelContent ? this.inputLabelId : null}
aria-labelledby={hasLabelContent ? this.inputLabelId : null}
aria-label={inheritedAttributes['aria-label'] || null}
aria-disabled={disabled ? 'true' : null}
aria-required={required ? 'true' : undefined}
@@ -381,13 +376,13 @@ export class Checkbox implements ComponentInterface {
<div
class={{
'label-text-wrapper': true,
'label-text-wrapper-hidden': !this.hasLabelContent,
'label-text-wrapper-hidden': !hasLabelContent,
}}
part="label"
id={this.inputLabelId}
onClick={this.onDivLabelClick}
>
<slot onSlotchange={this.onSlotChange}></slot>
<slot></slot>
{this.renderHintText()}
</div>
<div class="native-wrapper">

View File

@@ -141,9 +141,9 @@ export class Refresher implements ComponentInterface {
*/
@Event() ionPull!: EventEmitter<void>;
// TODO(FW-7044): Remove this in a major release
/**
* Emitted when the user begins to start pulling down.
* TODO(FW-7044): Remove this in a major release
*
* @deprecated Use `ionPullStart` instead.
*/

View File

@@ -3,5 +3,5 @@
"core",
"packages/*"
],
"version": "8.8.1"
"version": "8.8.0"
}

View File

@@ -3,14 +3,6 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [8.8.1](https://github.com/ionic-team/ionic-framework/compare/v8.8.0...v8.8.1) (2026-03-06)
**Note:** Version bump only for package @ionic/angular-server
# [8.8.0](https://github.com/ionic-team/ionic-framework/compare/v8.7.18...v8.8.0) (2026-03-04)
**Note:** Version bump only for package @ionic/angular-server

View File

@@ -1,15 +1,15 @@
{
"name": "@ionic/angular-server",
"version": "8.8.1",
"version": "8.8.0",
"lockfileVersion": 2,
"requires": true,
"packages": {
"": {
"name": "@ionic/angular-server",
"version": "8.8.1",
"version": "8.8.0",
"license": "MIT",
"dependencies": {
"@ionic/core": "^8.8.1"
"@ionic/core": "^8.8.0"
},
"devDependencies": {
"@angular-eslint/eslint-plugin": "^16.0.0",
@@ -1031,9 +1031,9 @@
"dev": true
},
"node_modules/@ionic/core": {
"version": "8.8.1",
"resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.8.1.tgz",
"integrity": "sha512-ksOUHyOEqoyUIVWcwCNSFZVGwNfP1DKrUVeN/Cdk/Xl9Rdd/5MLHGsrOQpWQfoCf3Csdnw+KHHPrXz/2fzMkMA==",
"version": "8.8.0",
"resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.8.0.tgz",
"integrity": "sha512-DNmTMK26EquKiCYqYCJHBjTZTeoDxY8hpgPQTinQEJMAoFthstcAhyWMDBwDvo/aEHEvE4tlCZV2XUMxTlTIEw==",
"license": "MIT",
"dependencies": {
"@stencil/core": "4.43.0",
@@ -7309,9 +7309,9 @@
"dev": true
},
"@ionic/core": {
"version": "8.8.1",
"resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.8.1.tgz",
"integrity": "sha512-ksOUHyOEqoyUIVWcwCNSFZVGwNfP1DKrUVeN/Cdk/Xl9Rdd/5MLHGsrOQpWQfoCf3Csdnw+KHHPrXz/2fzMkMA==",
"version": "8.8.0",
"resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.8.0.tgz",
"integrity": "sha512-DNmTMK26EquKiCYqYCJHBjTZTeoDxY8hpgPQTinQEJMAoFthstcAhyWMDBwDvo/aEHEvE4tlCZV2XUMxTlTIEw==",
"requires": {
"@stencil/core": "4.43.0",
"ionicons": "^8.0.13",

View File

@@ -1,6 +1,6 @@
{
"name": "@ionic/angular-server",
"version": "8.8.1",
"version": "8.8.0",
"description": "Angular SSR Module for Ionic",
"keywords": [
"ionic",
@@ -62,6 +62,6 @@
},
"prettier": "@ionic/prettier-config",
"dependencies": {
"@ionic/core": "^8.8.1"
"@ionic/core": "^8.8.0"
}
}

View File

@@ -3,24 +3,13 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [8.8.1](https://github.com/ionic-team/ionic-framework/compare/v8.8.0...v8.8.1) (2026-03-06)
### Bug Fixes
* **angular:** export RefresherPullEnd types ([#30991](https://github.com/ionic-team/ionic-framework/issues/30991)) ([72abcca](https://github.com/ionic-team/ionic-framework/commit/72abccaad8df3c1db004da28610fddd95ac93c02))
# [8.8.0](https://github.com/ionic-team/ionic-framework/compare/v8.7.18...v8.8.0) (2026-03-04)
### Features
* **angular:** add custom injector support for modal and popover controllers ([#30899](https://github.com/ionic-team/ionic-framework/issues/30899)) ([822da42](https://github.com/ionic-team/ionic-framework/commit/822da428af86cd9b036b81515272321eb8fa586c)), closes [#30638](https://github.com/ionic-team/ionic-framework/issues/30638)
* **modal:** add drag events for sheet and card modals ([#30962](https://github.com/ionic-team/ionic-framework/issues/30962)) ([d29ac71](https://github.com/ionic-team/ionic-framework/commit/d29ac713fad604c256fb385eb0c26eb9717e1ff4)), closes [#23955](https://github.com/ionic-team/ionic-framework/issues/23955)
* **modal:** add drag events for sheet and card modals ([#30962](https://github.com/ionic-team/ionic-framework/issues/30962)) ([d29ac71](https://github.com/ionic-team/ionic-framework/commit/d29ac713fad604c256fb385eb0c26eb9717e1ff4))
* **refresher:** add ionPullStart and ionPullEnd events ([#30946](https://github.com/ionic-team/ionic-framework/issues/30946)) ([814c2e5](https://github.com/ionic-team/ionic-framework/commit/814c2e5ccd6d5bfda12bdf13a566cd66ff830d5b)), closes [#24524](https://github.com/ionic-team/ionic-framework/issues/24524)
* **segment-view:** add swipeGesture property to disable swiping ([#30948](https://github.com/ionic-team/ionic-framework/issues/30948)) ([46806bd](https://github.com/ionic-team/ionic-framework/commit/46806bd6e2af90a0b31fca68f508c06d3d281ec0)), closes [#30290](https://github.com/ionic-team/ionic-framework/issues/30290)
* **select:** pass cancelText property to modal interface ([#30282](https://github.com/ionic-team/ionic-framework/issues/30282)) ([6e4f60a](https://github.com/ionic-team/ionic-framework/commit/6e4f60af4c188ae04028b444aa21118ae27c2ca7))

View File

@@ -1,15 +1,15 @@
{
"name": "@ionic/angular",
"version": "8.8.1",
"version": "8.8.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "@ionic/angular",
"version": "8.8.1",
"version": "8.8.0",
"license": "MIT",
"dependencies": {
"@ionic/core": "^8.8.1",
"@ionic/core": "^8.8.0",
"ionicons": "^8.0.13",
"jsonc-parser": "^3.0.0",
"tslib": "^2.3.0"
@@ -1398,9 +1398,9 @@
"dev": true
},
"node_modules/@ionic/core": {
"version": "8.8.1",
"resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.8.1.tgz",
"integrity": "sha512-ksOUHyOEqoyUIVWcwCNSFZVGwNfP1DKrUVeN/Cdk/Xl9Rdd/5MLHGsrOQpWQfoCf3Csdnw+KHHPrXz/2fzMkMA==",
"version": "8.8.0",
"resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.8.0.tgz",
"integrity": "sha512-DNmTMK26EquKiCYqYCJHBjTZTeoDxY8hpgPQTinQEJMAoFthstcAhyWMDBwDvo/aEHEvE4tlCZV2XUMxTlTIEw==",
"license": "MIT",
"dependencies": {
"@stencil/core": "4.43.0",

View File

@@ -1,6 +1,6 @@
{
"name": "@ionic/angular",
"version": "8.8.1",
"version": "8.8.0",
"description": "Angular specific wrappers for @ionic/core",
"keywords": [
"ionic",
@@ -48,7 +48,7 @@
}
},
"dependencies": {
"@ionic/core": "^8.8.1",
"@ionic/core": "^8.8.0",
"ionicons": "^8.0.13",
"jsonc-parser": "^3.0.0",
"tslib": "^2.3.0"

View File

@@ -1831,7 +1831,8 @@ called when the async operation has completed.
*/
ionPull: EventEmitter<CustomEvent<void>>;
/**
* Emitted when the user begins to start pulling down. @deprecated Use `ionPullStart` instead.
* Emitted when the user begins to start pulling down.
TODO(FW-7044): Remove this in a major release @deprecated Use `ionPullStart` instead.
*/
ionStart: EventEmitter<CustomEvent<void>>;
/**

View File

@@ -114,8 +114,6 @@ export {
RangeKnobMoveEndEventDetail,
RefresherCustomEvent,
RefresherEventDetail,
RefresherPullEndCustomEvent,
RefresherPullEndEventDetail,
ReorderMoveCustomEvent,
ReorderMoveEventDetail,
ReorderEndCustomEvent,

View File

@@ -1685,7 +1685,8 @@ called when the async operation has completed.
*/
ionPull: EventEmitter<CustomEvent<void>>;
/**
* Emitted when the user begins to start pulling down. @deprecated Use `ionPullStart` instead.
* Emitted when the user begins to start pulling down.
TODO(FW-7044): Remove this in a major release @deprecated Use `ionPullStart` instead.
*/
ionStart: EventEmitter<CustomEvent<void>>;
/**

View File

@@ -112,8 +112,6 @@ export {
RangeKnobMoveEndEventDetail,
RefresherCustomEvent,
RefresherEventDetail,
RefresherPullEndCustomEvent,
RefresherPullEndEventDetail,
ReorderMoveCustomEvent,
ReorderMoveEventDetail,
ReorderEndCustomEvent,

View File

@@ -1,50 +0,0 @@
import { expect, test } from '@playwright/test';
/**
* Simulates a pull-to-refresh gesture by dragging from the top of
* the content element downward with intermediate steps so the
* gesture recognizer detects the movement.
*/
const pullDown = async (page: import('@playwright/test').Page, distance: number) => {
const content = page.locator('ion-content');
const box = await content.boundingBox();
if (!box) throw new Error('ion-content not visible');
const startX = box.x + box.width / 2;
const startY = box.y + 30;
await page.mouse.move(startX, startY);
await page.mouse.down();
await page.mouse.move(startX, startY + distance, { steps: 20 });
await page.mouse.up();
};
test.describe('refresher: angular standalone', () => {
test.beforeEach(async ({ page }) => {
await page.goto('/standalone/refresher');
});
test('should emit ionPullStart and ionPullEnd with cancel reason', async ({ page }) => {
// Small drag that doesn't reach the refresh threshold
await pullDown(page, 60);
await page.waitForTimeout(500);
await expect(page.locator('#pull-start-count')).toHaveText('1');
await expect(page.locator('#refresh-count')).toHaveText('0');
await expect(page.locator('#pull-end-count')).toHaveText('1');
await expect(page.locator('#pull-end-reason')).toHaveText('cancel');
});
test('should emit ionPullStart, ionRefresh, and ionPullEnd with complete reason', async ({ page }) => {
// Large drag past the refresh threshold
await pullDown(page, 300);
await page.waitForTimeout(1000);
await expect(page.locator('#pull-start-count')).toHaveText('1');
await expect(page.locator('#refresh-count')).toHaveText('1');
await expect(page.locator('#pull-end-count')).toHaveText('1');
await expect(page.locator('#pull-end-reason')).toHaveText('complete');
});
});

View File

@@ -8,19 +8,13 @@ test.describe('Value Accessors', () => {
test('should update the form value', async ({ page }) => {
await expect(page.locator('#formValue')).toHaveText(JSON.stringify({ checkbox: false }, null, 2));
await expect(page.getByRole('checkbox', { name: 'Static Checkbox Label' })).toHaveClass(/ion-pristine/);
await expect(page.locator('ion-checkbox')).toHaveClass(/ion-pristine/);
await page.getByRole('checkbox', { name: 'Static Checkbox Label' }).click();
await page.locator('ion-checkbox').click();
await expect(page.locator('#formValue')).toHaveText(JSON.stringify({ checkbox: true }, null, 2));
await expect(page.getByRole('checkbox', { name: 'Static Checkbox Label' })).toHaveClass(/ion-dirty/);
await expect(page.getByRole('checkbox', { name: 'Static Checkbox Label' })).toHaveClass(/ion-valid/);
await expect(page.getByRole('checkbox', { name: 'Static Checkbox Label' })).toBeVisible();
});
test('should display dynamically set label', async ({ page }) => {
await expect(page.getByRole('checkbox', { name: 'Dynamic Checkbox Label' })).toBeVisible();
await expect(page.locator('ion-checkbox')).toHaveClass(/ion-dirty/);
await expect(page.locator('ion-checkbox')).toHaveClass(/ion-valid/);
});
});

View File

@@ -28,6 +28,7 @@ import { AlertComponent } from '../alert/alert.component';
import { AccordionComponent } from '../accordion/accordion.component';
import { AccordionModalComponent } from '../accordion/accordion-modal/accordion-modal.component';
import { TabsBasicComponent } from '../tabs-basic/tabs-basic.component';
import { TemplateFormComponent } from '../template-form/template-form.component';
@NgModule({
declarations: [
@@ -53,7 +54,8 @@ import { TabsBasicComponent } from '../tabs-basic/tabs-basic.component';
AlertComponent,
AccordionComponent,
AccordionModalComponent,
TabsBasicComponent
TabsBasicComponent,
TemplateFormComponent
],
imports: [
CommonModule,

View File

@@ -19,6 +19,7 @@ import { NavigationPage3Component } from '../navigation-page3/navigation-page3.c
import { AlertComponent } from '../alert/alert.component';
import { AccordionComponent } from '../accordion/accordion.component';
import { TabsBasicComponent } from '../tabs-basic/tabs-basic.component';
import { TemplateFormComponent } from '../template-form/template-form.component';
export const routes: Routes = [
{
@@ -33,7 +34,7 @@ export const routes: Routes = [
{ path: 'textarea', loadChildren: () => import('../textarea/textarea.module').then(m => m.TextareaModule) },
{ path: 'searchbar', loadChildren: () => import('../searchbar/searchbar.module').then(m => m.SearchbarModule) },
{ path: 'form', component: FormComponent },
{ path: 'template-form', loadChildren: () => import('../template-form/template-form.module').then(m => m.TemplateFormModule) },
{ path: 'template-form', component: TemplateFormComponent },
{ path: 'modals', component: ModalComponent },
{ path: 'modal-inline', loadChildren: () => import('../modal-inline').then(m => m.ModalInlineModule) },
{ path: 'modal-sheet-inline', loadChildren: () => import('../modal-sheet-inline').then(m => m.ModalSheetInlineModule) },

View File

@@ -1,16 +0,0 @@
import { NgModule } from "@angular/core";
import { RouterModule } from "@angular/router";
import { TemplateFormComponent } from "./template-form.component";
@NgModule({
imports: [
RouterModule.forChild([
{
path: '',
component: TemplateFormComponent
}
])
],
exports: [RouterModule]
})
export class TemplateFormRoutingModule { }

View File

@@ -109,7 +109,6 @@
[(ngModel)]="checkboxValue"
name="checkboxField"
required
requireTrue
#checkboxField="ngModel"
id="template-checkbox-test"
helper-text="You must agree to continue"
@@ -134,7 +133,6 @@
[(ngModel)]="toggleValue"
name="toggleField"
required
requireTrue
#toggleField="ngModel"
id="template-toggle-test"
helper-text="You must turn on to continue"

View File

@@ -1,23 +0,0 @@
import { CommonModule } from "@angular/common";
import { NgModule } from "@angular/core";
import { FormsModule, ReactiveFormsModule } from "@angular/forms";
import { IonicModule } from "@ionic/angular";
import { TemplateFormRoutingModule } from "./template-form-routing.module";
import { TemplateFormComponent } from "./template-form.component";
import { ValidatorsModule } from "../validators/validators.module";
@NgModule({
imports: [
CommonModule,
FormsModule,
ReactiveFormsModule,
IonicModule,
TemplateFormRoutingModule,
ValidatorsModule
],
declarations: [
TemplateFormComponent
]
})
export class TemplateFormModule { }

View File

@@ -1,19 +0,0 @@
import { Directive, forwardRef } from '@angular/core';
import { NG_VALIDATORS, Validator, AbstractControl, ValidationErrors, Validators } from '@angular/forms';
@Directive({
selector: '[requireTrue]',
providers: [
{
provide: NG_VALIDATORS,
useExisting: forwardRef(() => RequireTrueValidatorDirective),
multi: true,
},
],
standalone: false,
})
export class RequireTrueValidatorDirective implements Validator {
validate(control: AbstractControl): ValidationErrors | null {
return Validators.requiredTrue(control);
}
}

View File

@@ -1,20 +0,0 @@
import { CommonModule } from "@angular/common";
import { NgModule } from "@angular/core";
import { FormsModule, ReactiveFormsModule } from "@angular/forms";
import { RequireTrueValidatorDirective } from "./require-true.directive";
@NgModule({
imports: [
CommonModule,
FormsModule,
ReactiveFormsModule
],
declarations: [
RequireTrueValidatorDirective
],
exports: [
RequireTrueValidatorDirective
]
})
export class ValidatorsModule { }

View File

@@ -32,7 +32,6 @@ export const routes: Routes = [
{ path: 'providers', loadComponent: () => import('../providers/providers.component').then(c => c.ProvidersComponent) },
{ path: 'overlay-controllers', loadComponent: () => import('../overlay-controllers/overlay-controllers.component').then(c => c.OverlayControllersComponent) },
{ path: 'button', loadComponent: () => import('../button/button.component').then(c => c.ButtonComponent) },
{ path: 'refresher', loadComponent: () => import('../refresher/refresher.component').then(c => c.RefresherComponent) },
{ path: 'reorder-group', loadComponent: () => import('../reorder-group/reorder-group.component').then(c => c.ReorderGroupComponent) },
{ path: 'icon', loadComponent: () => import('../icon/icon.component').then(c => c.IconComponent) },
{ path: 'split-pane', redirectTo: '/standalone/split-pane/inbox', pathMatch: 'full' },

View File

@@ -33,11 +33,6 @@
Inputs Test
</ion-label>
</ion-item>
<ion-item routerLink="/standalone/refresher">
<ion-label>
Refresher Test
</ion-label>
</ion-item>
<ion-item routerLink="/standalone/reorder-group">
<ion-label>
Reorder Group Test

View File

@@ -1,69 +0,0 @@
import { Component } from "@angular/core";
import { IonContent, IonHeader, IonItem, IonLabel, IonList, IonRefresher, IonRefresherContent, IonTitle, IonToolbar } from '@ionic/angular/standalone';
import { RefresherCustomEvent, RefresherPullEndCustomEvent } from "@ionic/angular";
@Component({
selector: 'app-refresher',
template: `
<ion-header>
<ion-toolbar>
<ion-title>Refresher Test</ion-title>
</ion-toolbar>
</ion-header>
<ion-content>
<ion-refresher
slot="fixed"
(ionPullStart)="onPullStart()"
(ionRefresh)="onRefresh($event)"
(ionPullEnd)="onPullEnd($event)"
>
<ion-refresher-content></ion-refresher-content>
</ion-refresher>
<ion-list>
<ion-item>
<ion-label>
ionPullStart count: <span id="pull-start-count">{{ pullStartCount }}</span>
</ion-label>
</ion-item>
<ion-item>
<ion-label>
ionRefresh count: <span id="refresh-count">{{ refreshCount }}</span>
</ion-label>
</ion-item>
<ion-item>
<ion-label>
ionPullEnd count: <span id="pull-end-count">{{ pullEndCount }}</span>
</ion-label>
</ion-item>
<ion-item>
<ion-label>
ionPullEnd reason: <span id="pull-end-reason">{{ pullEndReason }}</span>
</ion-label>
</ion-item>
</ion-list>
</ion-content>
`,
standalone: true,
imports: [IonContent, IonHeader, IonItem, IonLabel, IonList, IonRefresher, IonRefresherContent, IonTitle, IonToolbar]
})
export class RefresherComponent {
pullStartCount = 0;
refreshCount = 0;
pullEndCount = 0;
pullEndReason = '';
onPullStart() {
this.pullStartCount++;
}
onRefresh(event: RefresherCustomEvent) {
this.refreshCount++;
event.target.complete();
}
onPullEnd(event: RefresherPullEndCustomEvent) {
this.pullEndCount++;
this.pullEndReason = event.detail.reason;
}
}

View File

@@ -6,7 +6,6 @@
</p>
<app-value-accessor-test [formGroup]="form">
<ion-checkbox formControlName="checkbox">Static Checkbox Label</ion-checkbox>
<ion-checkbox formControlName="checkbox">Checkbox</ion-checkbox>
</app-value-accessor-test>
<ion-checkbox>{{dynamicLabel}}</ion-checkbox>
</div>

View File

@@ -15,11 +15,6 @@ import { ValueAccessorTestComponent } from "../value-accessor-test/value-accesso
]
})
export class CheckboxComponent {
dynamicLabel = '';
ngAfterViewInit(): void {
this.dynamicLabel = 'Dynamic Checkbox Label';
}
form = this.fb.group({
checkbox: [false, Validators.required],

View File

@@ -3,14 +3,6 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [8.8.1](https://github.com/ionic-team/ionic-framework/compare/v8.8.0...v8.8.1) (2026-03-06)
**Note:** Version bump only for package @ionic/docs
# [8.8.0](https://github.com/ionic-team/ionic-framework/compare/v8.7.18...v8.8.0) (2026-03-04)
**Note:** Version bump only for package @ionic/docs

View File

@@ -1,12 +1,12 @@
{
"name": "@ionic/docs",
"version": "8.8.1",
"version": "8.8.0",
"lockfileVersion": 2,
"requires": true,
"packages": {
"": {
"name": "@ionic/docs",
"version": "8.8.1",
"version": "8.8.0",
"license": "MIT"
}
}

View File

@@ -1,6 +1,6 @@
{
"name": "@ionic/docs",
"version": "8.8.1",
"version": "8.8.0",
"description": "Pre-packaged API documentation for the Ionic docs.",
"main": "core.json",
"types": "core.d.ts",

View File

@@ -3,14 +3,6 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [8.8.1](https://github.com/ionic-team/ionic-framework/compare/v8.8.0...v8.8.1) (2026-03-06)
**Note:** Version bump only for package @ionic/react-router
# [8.8.0](https://github.com/ionic-team/ionic-framework/compare/v8.7.18...v8.8.0) (2026-03-04)
**Note:** Version bump only for package @ionic/react-router

View File

@@ -1,15 +1,15 @@
{
"name": "@ionic/react-router",
"version": "8.8.1",
"version": "8.8.0",
"lockfileVersion": 2,
"requires": true,
"packages": {
"": {
"name": "@ionic/react-router",
"version": "8.8.1",
"version": "8.8.0",
"license": "MIT",
"dependencies": {
"@ionic/react": "^8.8.1",
"@ionic/react": "^8.8.0",
"tslib": "*"
},
"devDependencies": {
@@ -238,9 +238,9 @@
"dev": true
},
"node_modules/@ionic/core": {
"version": "8.8.1",
"resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.8.1.tgz",
"integrity": "sha512-ksOUHyOEqoyUIVWcwCNSFZVGwNfP1DKrUVeN/Cdk/Xl9Rdd/5MLHGsrOQpWQfoCf3Csdnw+KHHPrXz/2fzMkMA==",
"version": "8.8.0",
"resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.8.0.tgz",
"integrity": "sha512-DNmTMK26EquKiCYqYCJHBjTZTeoDxY8hpgPQTinQEJMAoFthstcAhyWMDBwDvo/aEHEvE4tlCZV2XUMxTlTIEw==",
"license": "MIT",
"dependencies": {
"@stencil/core": "4.43.0",
@@ -418,12 +418,12 @@
}
},
"node_modules/@ionic/react": {
"version": "8.8.1",
"resolved": "https://registry.npmjs.org/@ionic/react/-/react-8.8.1.tgz",
"integrity": "sha512-KuDWk2E0HA8EA5ioDHxGF+OD/REG2PYb7SorMgVHWRWdPYMIL9PwNXrMBfWAd6PyYLLHd2fw7UoiuT2K8SbrzQ==",
"version": "8.8.0",
"resolved": "https://registry.npmjs.org/@ionic/react/-/react-8.8.0.tgz",
"integrity": "sha512-APU5KOhi2qlAXV9WGTJCurwRwvCL20c0dcStbS+Fa2dGIbzjM0CZk+k8pzl1ffh2URYdCP9gse2XnQln8DkVtA==",
"license": "MIT",
"dependencies": {
"@ionic/core": "8.8.1",
"@ionic/core": "8.8.0",
"ionicons": "^8.0.13",
"tslib": "*"
},
@@ -4178,9 +4178,9 @@
"dev": true
},
"@ionic/core": {
"version": "8.8.1",
"resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.8.1.tgz",
"integrity": "sha512-ksOUHyOEqoyUIVWcwCNSFZVGwNfP1DKrUVeN/Cdk/Xl9Rdd/5MLHGsrOQpWQfoCf3Csdnw+KHHPrXz/2fzMkMA==",
"version": "8.8.0",
"resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.8.0.tgz",
"integrity": "sha512-DNmTMK26EquKiCYqYCJHBjTZTeoDxY8hpgPQTinQEJMAoFthstcAhyWMDBwDvo/aEHEvE4tlCZV2XUMxTlTIEw==",
"requires": {
"@stencil/core": "4.43.0",
"ionicons": "^8.0.13",
@@ -4284,11 +4284,11 @@
"requires": {}
},
"@ionic/react": {
"version": "8.8.1",
"resolved": "https://registry.npmjs.org/@ionic/react/-/react-8.8.1.tgz",
"integrity": "sha512-KuDWk2E0HA8EA5ioDHxGF+OD/REG2PYb7SorMgVHWRWdPYMIL9PwNXrMBfWAd6PyYLLHd2fw7UoiuT2K8SbrzQ==",
"version": "8.8.0",
"resolved": "https://registry.npmjs.org/@ionic/react/-/react-8.8.0.tgz",
"integrity": "sha512-APU5KOhi2qlAXV9WGTJCurwRwvCL20c0dcStbS+Fa2dGIbzjM0CZk+k8pzl1ffh2URYdCP9gse2XnQln8DkVtA==",
"requires": {
"@ionic/core": "8.8.1",
"@ionic/core": "8.8.0",
"ionicons": "^8.0.13",
"tslib": "*"
}

View File

@@ -1,6 +1,6 @@
{
"name": "@ionic/react-router",
"version": "8.8.1",
"version": "8.8.0",
"description": "React Router wrapper for @ionic/react",
"keywords": [
"ionic",
@@ -36,7 +36,7 @@
"dist/"
],
"dependencies": {
"@ionic/react": "^8.8.1",
"@ionic/react": "^8.8.0",
"tslib": "*"
},
"peerDependencies": {

View File

@@ -3,20 +3,12 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [8.8.1](https://github.com/ionic-team/ionic-framework/compare/v8.8.0...v8.8.1) (2026-03-06)
**Note:** Version bump only for package @ionic/react
# [8.8.0](https://github.com/ionic-team/ionic-framework/compare/v8.7.18...v8.8.0) (2026-03-04)
### Features
* **modal:** add drag events for sheet and card modals ([#30962](https://github.com/ionic-team/ionic-framework/issues/30962)) ([d29ac71](https://github.com/ionic-team/ionic-framework/commit/d29ac713fad604c256fb385eb0c26eb9717e1ff4)), closes [#23955](https://github.com/ionic-team/ionic-framework/issues/23955)
* **modal:** add drag events for sheet and card modals ([#30962](https://github.com/ionic-team/ionic-framework/issues/30962)) ([d29ac71](https://github.com/ionic-team/ionic-framework/commit/d29ac713fad604c256fb385eb0c26eb9717e1ff4))
* **textarea:** reflect disabled and readonly props ([#30910](https://github.com/ionic-team/ionic-framework/issues/30910)) ([55735df](https://github.com/ionic-team/ionic-framework/commit/55735df3fa62c8e259c56db3169f3d5459e71c0c))

View File

@@ -1,15 +1,15 @@
{
"name": "@ionic/react",
"version": "8.8.1",
"version": "8.8.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "@ionic/react",
"version": "8.8.1",
"version": "8.8.0",
"license": "MIT",
"dependencies": {
"@ionic/core": "^8.8.1",
"@ionic/core": "^8.8.0",
"ionicons": "^8.0.13",
"tslib": "*"
},
@@ -736,9 +736,9 @@
"dev": true
},
"node_modules/@ionic/core": {
"version": "8.8.1",
"resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.8.1.tgz",
"integrity": "sha512-ksOUHyOEqoyUIVWcwCNSFZVGwNfP1DKrUVeN/Cdk/Xl9Rdd/5MLHGsrOQpWQfoCf3Csdnw+KHHPrXz/2fzMkMA==",
"version": "8.8.0",
"resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.8.0.tgz",
"integrity": "sha512-DNmTMK26EquKiCYqYCJHBjTZTeoDxY8hpgPQTinQEJMAoFthstcAhyWMDBwDvo/aEHEvE4tlCZV2XUMxTlTIEw==",
"license": "MIT",
"dependencies": {
"@stencil/core": "4.43.0",

View File

@@ -1,6 +1,6 @@
{
"name": "@ionic/react",
"version": "8.8.1",
"version": "8.8.0",
"description": "React specific wrapper for @ionic/core",
"keywords": [
"ionic",
@@ -40,7 +40,7 @@
"css/"
],
"dependencies": {
"@ionic/core": "^8.8.1",
"@ionic/core": "^8.8.0",
"ionicons": "^8.0.13",
"tslib": "*"
},

View File

@@ -3,14 +3,6 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [8.8.1](https://github.com/ionic-team/ionic-framework/compare/v8.8.0...v8.8.1) (2026-03-06)
**Note:** Version bump only for package @ionic/vue-router
# [8.8.0](https://github.com/ionic-team/ionic-framework/compare/v8.7.18...v8.8.0) (2026-03-04)
**Note:** Version bump only for package @ionic/vue-router

View File

@@ -1,15 +1,15 @@
{
"name": "@ionic/vue-router",
"version": "8.8.1",
"version": "8.8.0",
"lockfileVersion": 2,
"requires": true,
"packages": {
"": {
"name": "@ionic/vue-router",
"version": "8.8.1",
"version": "8.8.0",
"license": "MIT",
"dependencies": {
"@ionic/vue": "^8.8.1"
"@ionic/vue": "^8.8.0"
},
"devDependencies": {
"@ionic/eslint-config": "^0.3.0",
@@ -673,9 +673,9 @@
"dev": true
},
"node_modules/@ionic/core": {
"version": "8.8.1",
"resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.8.1.tgz",
"integrity": "sha512-ksOUHyOEqoyUIVWcwCNSFZVGwNfP1DKrUVeN/Cdk/Xl9Rdd/5MLHGsrOQpWQfoCf3Csdnw+KHHPrXz/2fzMkMA==",
"version": "8.8.0",
"resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.8.0.tgz",
"integrity": "sha512-DNmTMK26EquKiCYqYCJHBjTZTeoDxY8hpgPQTinQEJMAoFthstcAhyWMDBwDvo/aEHEvE4tlCZV2XUMxTlTIEw==",
"license": "MIT",
"dependencies": {
"@stencil/core": "4.43.0",
@@ -868,12 +868,12 @@
}
},
"node_modules/@ionic/vue": {
"version": "8.8.1",
"resolved": "https://registry.npmjs.org/@ionic/vue/-/vue-8.8.1.tgz",
"integrity": "sha512-tdNErYs6WrNiDJps1nRRY4UeyLffr2hbdkpawrMYFZxzzMd5yuExWsRAofrk5Uy6rSFObSZrfg7AgqyudDcJpQ==",
"version": "8.8.0",
"resolved": "https://registry.npmjs.org/@ionic/vue/-/vue-8.8.0.tgz",
"integrity": "sha512-WjPi29Umye9yMdCE+w0yOvyH28q5tK5Oorp3tLu5t2fl9KB9EhPBwBN+CgVWsKDFeSu81P4o+q0y5OvMQYHbvQ==",
"license": "MIT",
"dependencies": {
"@ionic/core": "8.8.1",
"@ionic/core": "8.8.0",
"@stencil/vue-output-target": "0.10.7",
"ionicons": "^8.0.13"
}
@@ -8044,9 +8044,9 @@
"dev": true
},
"@ionic/core": {
"version": "8.8.1",
"resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.8.1.tgz",
"integrity": "sha512-ksOUHyOEqoyUIVWcwCNSFZVGwNfP1DKrUVeN/Cdk/Xl9Rdd/5MLHGsrOQpWQfoCf3Csdnw+KHHPrXz/2fzMkMA==",
"version": "8.8.0",
"resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.8.0.tgz",
"integrity": "sha512-DNmTMK26EquKiCYqYCJHBjTZTeoDxY8hpgPQTinQEJMAoFthstcAhyWMDBwDvo/aEHEvE4tlCZV2XUMxTlTIEw==",
"requires": {
"@stencil/core": "4.43.0",
"ionicons": "^8.0.13",
@@ -8159,11 +8159,11 @@
"requires": {}
},
"@ionic/vue": {
"version": "8.8.1",
"resolved": "https://registry.npmjs.org/@ionic/vue/-/vue-8.8.1.tgz",
"integrity": "sha512-tdNErYs6WrNiDJps1nRRY4UeyLffr2hbdkpawrMYFZxzzMd5yuExWsRAofrk5Uy6rSFObSZrfg7AgqyudDcJpQ==",
"version": "8.8.0",
"resolved": "https://registry.npmjs.org/@ionic/vue/-/vue-8.8.0.tgz",
"integrity": "sha512-WjPi29Umye9yMdCE+w0yOvyH28q5tK5Oorp3tLu5t2fl9KB9EhPBwBN+CgVWsKDFeSu81P4o+q0y5OvMQYHbvQ==",
"requires": {
"@ionic/core": "8.8.1",
"@ionic/core": "8.8.0",
"@stencil/vue-output-target": "0.10.7",
"ionicons": "^8.0.13"
}

View File

@@ -1,6 +1,6 @@
{
"name": "@ionic/vue-router",
"version": "8.8.1",
"version": "8.8.0",
"description": "Vue Router integration for @ionic/vue",
"scripts": {
"test.spec": "jest",
@@ -44,7 +44,7 @@
},
"homepage": "https://github.com/ionic-team/ionic-framework#readme",
"dependencies": {
"@ionic/vue": "^8.8.1"
"@ionic/vue": "^8.8.0"
},
"devDependencies": {
"@ionic/eslint-config": "^0.3.0",

View File

@@ -3,20 +3,12 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [8.8.1](https://github.com/ionic-team/ionic-framework/compare/v8.8.0...v8.8.1) (2026-03-06)
**Note:** Version bump only for package @ionic/vue
# [8.8.0](https://github.com/ionic-team/ionic-framework/compare/v8.7.18...v8.8.0) (2026-03-04)
### Features
* **modal:** add drag events for sheet and card modals ([#30962](https://github.com/ionic-team/ionic-framework/issues/30962)) ([d29ac71](https://github.com/ionic-team/ionic-framework/commit/d29ac713fad604c256fb385eb0c26eb9717e1ff4)), closes [#23955](https://github.com/ionic-team/ionic-framework/issues/23955)
* **modal:** add drag events for sheet and card modals ([#30962](https://github.com/ionic-team/ionic-framework/issues/30962)) ([d29ac71](https://github.com/ionic-team/ionic-framework/commit/d29ac713fad604c256fb385eb0c26eb9717e1ff4))
* **refresher:** add ionPullStart and ionPullEnd events ([#30946](https://github.com/ionic-team/ionic-framework/issues/30946)) ([814c2e5](https://github.com/ionic-team/ionic-framework/commit/814c2e5ccd6d5bfda12bdf13a566cd66ff830d5b)), closes [#24524](https://github.com/ionic-team/ionic-framework/issues/24524)
* **segment-view:** add swipeGesture property to disable swiping ([#30948](https://github.com/ionic-team/ionic-framework/issues/30948)) ([46806bd](https://github.com/ionic-team/ionic-framework/commit/46806bd6e2af90a0b31fca68f508c06d3d281ec0)), closes [#30290](https://github.com/ionic-team/ionic-framework/issues/30290)
* **select:** pass cancelText property to modal interface ([#30282](https://github.com/ionic-team/ionic-framework/issues/30282)) ([6e4f60a](https://github.com/ionic-team/ionic-framework/commit/6e4f60af4c188ae04028b444aa21118ae27c2ca7))

View File

@@ -1,15 +1,15 @@
{
"name": "@ionic/vue",
"version": "8.8.1",
"version": "8.8.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "@ionic/vue",
"version": "8.8.1",
"version": "8.8.0",
"license": "MIT",
"dependencies": {
"@ionic/core": "^8.8.1",
"@ionic/core": "^8.8.0",
"@stencil/vue-output-target": "0.10.7",
"ionicons": "^8.0.13"
},
@@ -222,9 +222,9 @@
"dev": true
},
"node_modules/@ionic/core": {
"version": "8.8.1",
"resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.8.1.tgz",
"integrity": "sha512-ksOUHyOEqoyUIVWcwCNSFZVGwNfP1DKrUVeN/Cdk/Xl9Rdd/5MLHGsrOQpWQfoCf3Csdnw+KHHPrXz/2fzMkMA==",
"version": "8.8.0",
"resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.8.0.tgz",
"integrity": "sha512-DNmTMK26EquKiCYqYCJHBjTZTeoDxY8hpgPQTinQEJMAoFthstcAhyWMDBwDvo/aEHEvE4tlCZV2XUMxTlTIEw==",
"license": "MIT",
"dependencies": {
"@stencil/core": "4.43.0",

View File

@@ -1,6 +1,6 @@
{
"name": "@ionic/vue",
"version": "8.8.1",
"version": "8.8.0",
"description": "Vue specific wrapper for @ionic/core",
"scripts": {
"eslint": "eslint src",
@@ -68,7 +68,7 @@
"vue-router": "^4.0.16"
},
"dependencies": {
"@ionic/core": "^8.8.1",
"@ionic/core": "^8.8.0",
"@stencil/vue-output-target": "0.10.7",
"ionicons": "^8.0.13"
},