diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index bb27e8a5f5e..e5cc26855be 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -120,9 +120,13 @@ jobs: -d '{ "path": [ "/npm/@ionic/core@6/dist/ionic/ionic.esm.js", + "/npm/@ionic/core@7/dist/ionic/ionic.esm.js", + "/npm/@ionic/core@8/dist/ionic/ionic.esm.js", "/npm/@ionic/core@latest/dist/ionic/ionic.esm.js", "/npm/@ionic/core@next/dist/ionic/ionic.esm.js", "/npm/@ionic/core@6/css/ionic.bundle.css", + "/npm/@ionic/core@7/css/ionic.bundle.css", + "/npm/@ionic/core@8/css/ionic.bundle.css", "/npm/@ionic/core@latest/css/ionic.bundle.css" "/npm/@ionic/core@next/css/ionic.bundle.css" ]}' diff --git a/CHANGELOG.md b/CHANGELOG.md index 3428f4c4d9b..0044f337a2f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,18 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [8.6.1](https://github.com/ionic-team/ionic-framework/compare/v8.6.0...v8.6.1) (2025-06-11) + + +### Bug Fixes + +* **item-sliding:** check for side attribute to avoid an `undefined` value ([#29845](https://github.com/ionic-team/ionic-framework/issues/29845)) ([c38aa07](https://github.com/ionic-team/ionic-framework/commit/c38aa07cf8bfab200b3c071328d893bd1627cde7)), closes [#29499](https://github.com/ionic-team/ionic-framework/issues/29499) +* **modal:** reset footer positioning after content drag and multi-footer support ([#30470](https://github.com/ionic-team/ionic-framework/issues/30470)) ([071b414](https://github.com/ionic-team/ionic-framework/commit/071b414a00f4497ed0baa1431f0bee4b3c7c13fb)), closes [#30468](https://github.com/ionic-team/ionic-framework/issues/30468) + + + + + # [8.6.0](https://github.com/ionic-team/ionic-framework/compare/v8.5.9...v8.6.0) (2025-06-04) diff --git a/core/CHANGELOG.md b/core/CHANGELOG.md index f86129eee83..1a97a336b24 100644 --- a/core/CHANGELOG.md +++ b/core/CHANGELOG.md @@ -3,6 +3,18 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [8.6.1](https://github.com/ionic-team/ionic-framework/compare/v8.6.0...v8.6.1) (2025-06-11) + + +### Bug Fixes + +* **item-sliding:** check for side attribute to avoid an `undefined` value ([#29845](https://github.com/ionic-team/ionic-framework/issues/29845)) ([c38aa07](https://github.com/ionic-team/ionic-framework/commit/c38aa07cf8bfab200b3c071328d893bd1627cde7)), closes [#29499](https://github.com/ionic-team/ionic-framework/issues/29499) +* **modal:** reset footer positioning after content drag and multi-footer support ([#30470](https://github.com/ionic-team/ionic-framework/issues/30470)) ([071b414](https://github.com/ionic-team/ionic-framework/commit/071b414a00f4497ed0baa1431f0bee4b3c7c13fb)), closes [#30468](https://github.com/ionic-team/ionic-framework/issues/30468) + + + + + # [8.6.0](https://github.com/ionic-team/ionic-framework/compare/v8.5.9...v8.6.0) (2025-06-04) diff --git a/core/package-lock.json b/core/package-lock.json index c423936dd77..c6f9438de6a 100644 --- a/core/package-lock.json +++ b/core/package-lock.json @@ -1,12 +1,12 @@ { "name": "@ionic/core", - "version": "8.6.0", + "version": "8.6.1", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@ionic/core", - "version": "8.6.0", + "version": "8.6.1", "license": "MIT", "dependencies": { "@stencil/core": "4.33.1", @@ -14,7 +14,7 @@ "tslib": "^2.1.0" }, "devDependencies": { - "@axe-core/playwright": "^4.10.1", + "@axe-core/playwright": "^4.10.2", "@capacitor/core": "^7.0.0", "@capacitor/haptics": "^7.0.0", "@capacitor/keyboard": "^7.0.0", @@ -57,12 +57,12 @@ "dev": true }, "node_modules/@axe-core/playwright": { - "version": "4.10.1", - "resolved": "https://registry.npmjs.org/@axe-core/playwright/-/playwright-4.10.1.tgz", - "integrity": "sha512-EV5t39VV68kuAfMKqb/RL+YjYKhfuGim9rgIaQ6Vntb2HgaCaau0h98Y3WEUqW1+PbdzxDtDNjFAipbtZuBmEA==", + "version": "4.10.2", + "resolved": "https://registry.npmjs.org/@axe-core/playwright/-/playwright-4.10.2.tgz", + "integrity": "sha512-6/b5BJjG6hDaRNtgzLIfKr5DfwyiLHO4+ByTLB0cJgWSM8Ll7KqtdblIS6bEkwSF642/Ex91vNqIl3GLXGlceg==", "dev": true, "dependencies": { - "axe-core": "~4.10.2" + "axe-core": "~4.10.3" }, "peerDependencies": { "playwright-core": ">= 1.0.0" @@ -663,9 +663,9 @@ "dev": true }, "node_modules/@capacitor/core": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@capacitor/core/-/core-7.2.0.tgz", - "integrity": "sha512-2zCnA6RJeZ9ec4470o8QMZEQTWpekw9FNoqm5TLc10jeCrhvHVI8MPgxdZVc3mOdFlyieYu4AS1fNxSqbS57Pw==", + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/@capacitor/core/-/core-7.3.0.tgz", + "integrity": "sha512-t/DdTyBchQ2eAZuCmAARlqQsrEm0WyeNwh5zeRuv+cR6gnAsw+86/EWvJ/em5dTnZyaqEy8vlmOMdWarrUbnuQ==", "dev": true, "dependencies": { "tslib": "^2.1.0" @@ -10653,12 +10653,12 @@ }, "dependencies": { "@axe-core/playwright": { - "version": "4.10.1", - "resolved": "https://registry.npmjs.org/@axe-core/playwright/-/playwright-4.10.1.tgz", - "integrity": "sha512-EV5t39VV68kuAfMKqb/RL+YjYKhfuGim9rgIaQ6Vntb2HgaCaau0h98Y3WEUqW1+PbdzxDtDNjFAipbtZuBmEA==", + "version": "4.10.2", + "resolved": "https://registry.npmjs.org/@axe-core/playwright/-/playwright-4.10.2.tgz", + "integrity": "sha512-6/b5BJjG6hDaRNtgzLIfKr5DfwyiLHO4+ByTLB0cJgWSM8Ll7KqtdblIS6bEkwSF642/Ex91vNqIl3GLXGlceg==", "dev": true, "requires": { - "axe-core": "~4.10.2" + "axe-core": "~4.10.3" } }, "@babel/code-frame": { @@ -11102,9 +11102,9 @@ "dev": true }, "@capacitor/core": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@capacitor/core/-/core-7.2.0.tgz", - "integrity": "sha512-2zCnA6RJeZ9ec4470o8QMZEQTWpekw9FNoqm5TLc10jeCrhvHVI8MPgxdZVc3mOdFlyieYu4AS1fNxSqbS57Pw==", + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/@capacitor/core/-/core-7.3.0.tgz", + "integrity": "sha512-t/DdTyBchQ2eAZuCmAARlqQsrEm0WyeNwh5zeRuv+cR6gnAsw+86/EWvJ/em5dTnZyaqEy8vlmOMdWarrUbnuQ==", "dev": true, "requires": { "tslib": "^2.1.0" diff --git a/core/package.json b/core/package.json index 895054ef2de..17c27c79545 100644 --- a/core/package.json +++ b/core/package.json @@ -1,6 +1,6 @@ { "name": "@ionic/core", - "version": "8.6.0", + "version": "8.6.1", "description": "Base components for Ionic", "keywords": [ "ionic", @@ -36,7 +36,7 @@ "tslib": "^2.1.0" }, "devDependencies": { - "@axe-core/playwright": "^4.10.1", + "@axe-core/playwright": "^4.10.2", "@capacitor/core": "^7.0.0", "@capacitor/haptics": "^7.0.0", "@capacitor/keyboard": "^7.0.0", diff --git a/core/src/components/fab/test/custom-size/fab.e2e.ts b/core/src/components/fab/test/custom-size/fab.e2e.ts index 1a739944638..0e164a85735 100644 --- a/core/src/components/fab/test/custom-size/fab.e2e.ts +++ b/core/src/components/fab/test/custom-size/fab.e2e.ts @@ -6,7 +6,8 @@ import { configs, test, Viewports } from '@utils/test/playwright'; */ configs({ modes: ['ios'] }).forEach(({ title, config, screenshot }) => { test.describe(title('fab: custom size'), () => { - test('should position fabs correctly with custom sizes', async ({ page }) => { + // TODO(FW-6587): Remove skip once the flaky test is fixed + test.skip('should position fabs correctly with custom sizes', async ({ page }) => { await page.goto(`/src/components/fab/test/custom-size`, config); await page.setViewportSize(Viewports.tablet.landscape); diff --git a/core/src/components/item-sliding/item-sliding.tsx b/core/src/components/item-sliding/item-sliding.tsx index ef9eaae327c..ba979164c47 100644 --- a/core/src/components/item-sliding/item-sliding.tsx +++ b/core/src/components/item-sliding/item-sliding.tsx @@ -263,7 +263,7 @@ export class ItemSliding implements ComponentInterface { // eslint-disable-next-line custom-rules/no-component-on-ready-method const option = (item as any).componentOnReady !== undefined ? await item.componentOnReady() : item; - const side = isEndSide(option.side) ? 'end' : 'start'; + const side = isEndSide(option.side ?? option.getAttribute('side')) ? 'end' : 'start'; if (side === 'start') { this.leftOptions = option; diff --git a/core/src/components/modal/gestures/sheet.ts b/core/src/components/modal/gestures/sheet.ts index a3f548879f8..219769e4879 100644 --- a/core/src/components/modal/gestures/sheet.ts +++ b/core/src/components/modal/gestures/sheet.ts @@ -84,7 +84,7 @@ export const createSheetGesture = ( let offset = 0; let canDismissBlocksGesture = false; let cachedScrollEl: HTMLElement | null = null; - let cachedFooterEl: HTMLIonFooterElement | null = null; + let cachedFooterEls: HTMLIonFooterElement[] | null = null; let cachedFooterYPosition: number | null = null; let currentFooterState: 'moving' | 'stationary' | null = null; const canDismissMaxStep = 0.95; @@ -126,9 +126,9 @@ export const createSheetGesture = ( * @param newPosition Whether the footer is in a moving or stationary position. */ const swapFooterPosition = (newPosition: 'moving' | 'stationary') => { - if (!cachedFooterEl) { - cachedFooterEl = baseEl.querySelector('ion-footer') as HTMLIonFooterElement | null; - if (!cachedFooterEl) { + if (!cachedFooterEls) { + cachedFooterEls = Array.from(baseEl.querySelectorAll('ion-footer')); + if (!cachedFooterEls.length) { return; } } @@ -137,57 +137,80 @@ export const createSheetGesture = ( currentFooterState = newPosition; if (newPosition === 'stationary') { - // Reset positioning styles to allow normal document flow - cachedFooterEl.classList.remove('modal-footer-moving'); - cachedFooterEl.style.removeProperty('position'); - cachedFooterEl.style.removeProperty('width'); - cachedFooterEl.style.removeProperty('height'); - cachedFooterEl.style.removeProperty('top'); - cachedFooterEl.style.removeProperty('left'); - page?.style.removeProperty('padding-bottom'); - - // Move to page - page?.appendChild(cachedFooterEl); + cachedFooterEls.forEach((cachedFooterEl) => { + // Reset positioning styles to allow normal document flow + cachedFooterEl.classList.remove('modal-footer-moving'); + cachedFooterEl.style.removeProperty('position'); + cachedFooterEl.style.removeProperty('width'); + cachedFooterEl.style.removeProperty('height'); + cachedFooterEl.style.removeProperty('top'); + cachedFooterEl.style.removeProperty('left'); + page?.style.removeProperty('padding-bottom'); + + // Move to page + page?.appendChild(cachedFooterEl); + }); } else { - // Get both the footer and document body positions - const cachedFooterElRect = cachedFooterEl.getBoundingClientRect(); - const bodyRect = document.body.getBoundingClientRect(); - - // Add padding to the parent element to prevent content from being hidden - // when the footer is positioned absolutely. This has to be done before we - // make the footer absolutely positioned or we may accidentally cause the - // sheet to scroll. - const footerHeight = cachedFooterEl.clientHeight; - page?.style.setProperty('padding-bottom', `${footerHeight}px`); - - // Apply positioning styles to keep footer at bottom - cachedFooterEl.classList.add('modal-footer-moving'); - - // Calculate absolute position relative to body - // We need to subtract the body's offsetTop to get true position within document.body - const absoluteTop = cachedFooterElRect.top - bodyRect.top; - const absoluteLeft = cachedFooterElRect.left - bodyRect.left; - - // Capture the footer's current dimensions and hard code them during the drag - cachedFooterEl.style.setProperty('position', 'absolute'); - cachedFooterEl.style.setProperty('width', `${cachedFooterEl.clientWidth}px`); - cachedFooterEl.style.setProperty('height', `${cachedFooterEl.clientHeight}px`); - cachedFooterEl.style.setProperty('top', `${absoluteTop}px`); - cachedFooterEl.style.setProperty('left', `${absoluteLeft}px`); - - // Also cache the footer Y position, which we use to determine if the - // sheet has been moved below the footer. When that happens, we need to swap - // the position back so it will collapse correctly. - cachedFooterYPosition = absoluteTop; - // If there's a toolbar, we need to combine the toolbar height with the footer position - // because the toolbar moves with the drag handle, so when it starts overlapping the footer, - // we need to account for that. - const toolbar = baseEl.querySelector('ion-toolbar') as HTMLIonToolbarElement | null; - if (toolbar) { - cachedFooterYPosition -= toolbar.clientHeight; - } - - document.body.appendChild(cachedFooterEl); + let footerHeights = 0; + cachedFooterEls.forEach((cachedFooterEl, index) => { + // Get both the footer and document body positions + const cachedFooterElRect = cachedFooterEl.getBoundingClientRect(); + const bodyRect = document.body.getBoundingClientRect(); + + // Calculate the total height of all footers + // so we can add padding to the page element + footerHeights += cachedFooterEl.clientHeight; + + // Calculate absolute position relative to body + // We need to subtract the body's offsetTop to get true position within document.body + const absoluteTop = cachedFooterElRect.top - bodyRect.top; + const absoluteLeft = cachedFooterElRect.left - bodyRect.left; + + // Capture the footer's current dimensions and store them in CSS variables for + // later use when applying absolute positioning. + cachedFooterEl.style.setProperty('--pinned-width', `${cachedFooterEl.clientWidth}px`); + cachedFooterEl.style.setProperty('--pinned-height', `${cachedFooterEl.clientHeight}px`); + cachedFooterEl.style.setProperty('--pinned-top', `${absoluteTop}px`); + cachedFooterEl.style.setProperty('--pinned-left', `${absoluteLeft}px`); + + // Only cache the first footer's Y position + // This is used to determine if the sheet has been moved below the footer + // and needs to be swapped back to stationary so it collapses correctly. + if (index === 0) { + cachedFooterYPosition = absoluteTop; + // If there's a header, we need to combine the header height with the footer position + // because the header moves with the drag handle, so when it starts overlapping the footer, + // we need to account for that. + const header = baseEl.querySelector('ion-header') as HTMLIonHeaderElement | null; + if (header) { + cachedFooterYPosition -= header.clientHeight; + } + } + }); + + // Apply the pinning of styles after we've calculated everything + // so that we don't cause layouts to shift while calculating the footer positions. + // Otherwise, with multiple footers we'll end up capturing the wrong positions. + cachedFooterEls.forEach((cachedFooterEl) => { + // Add padding to the parent element to prevent content from being hidden + // when the footer is positioned absolutely. This has to be done before we + // make the footer absolutely positioned or we may accidentally cause the + // sheet to scroll. + page?.style.setProperty('padding-bottom', `${footerHeights}px`); + + // Apply positioning styles to keep footer at bottom + cachedFooterEl.classList.add('modal-footer-moving'); + + // Apply our preserved styles to pin the footer + cachedFooterEl.style.setProperty('position', 'absolute'); + cachedFooterEl.style.setProperty('width', 'var(--pinned-width)'); + cachedFooterEl.style.setProperty('height', 'var(--pinned-height)'); + cachedFooterEl.style.setProperty('top', 'var(--pinned-top)'); + cachedFooterEl.style.setProperty('left', 'var(--pinned-left)'); + + // Move the element to the body when everything else is done + document.body.appendChild(cachedFooterEl); + }); } }; @@ -400,6 +423,14 @@ export const createSheetGesture = ( * is not scrolled to the top. */ if (!expandToScroll && detail.deltaY <= 0 && cachedScrollEl && cachedScrollEl.scrollTop > 0) { + /** + * If expand to scroll is disabled, we need to make sure we swap the footer position + * back to stationary so that it will collapse correctly if the modal is dismissed without + * dragging (e.g. through a dismiss button). + * This can cause issues if the user has a modal with content that can be dragged, as we'll + * swap to moving on drag and if we don't swap back here then the footer will get stuck. + */ + swapFooterPosition('stationary'); return; } diff --git a/core/src/components/popover/test/basic/popover.e2e.ts b/core/src/components/popover/test/basic/popover.e2e.ts index f05291ee2aa..92adfe7640b 100644 --- a/core/src/components/popover/test/basic/popover.e2e.ts +++ b/core/src/components/popover/test/basic/popover.e2e.ts @@ -29,7 +29,8 @@ configs({ directions: ['ltr'] }).forEach(({ title, screenshot, config }) => { await popoverFixture.open('#long-list-popover'); await popoverFixture.screenshot('basic-long-list-popover', screenshot); }); - test('should render no event popover', async () => { + // TODO(FW-6588): Remove skip once the flaky test is fixed + test.skip('should render no event popover', async () => { await popoverFixture.open('#no-event-popover'); await popoverFixture.screenshot('basic-no-event-popover', screenshot); }); diff --git a/lerna.json b/lerna.json index 112f87c94f0..282b11bf779 100644 --- a/lerna.json +++ b/lerna.json @@ -3,5 +3,5 @@ "core", "packages/*" ], - "version": "8.6.0" + "version": "8.6.1" } \ No newline at end of file diff --git a/packages/angular-server/CHANGELOG.md b/packages/angular-server/CHANGELOG.md index d8e5e03b085..b577813bee9 100644 --- a/packages/angular-server/CHANGELOG.md +++ b/packages/angular-server/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [8.6.1](https://github.com/ionic-team/ionic-framework/compare/v8.6.0...v8.6.1) (2025-06-11) + +**Note:** Version bump only for package @ionic/angular-server + + + + + # [8.6.0](https://github.com/ionic-team/ionic-framework/compare/v8.5.9...v8.6.0) (2025-06-04) **Note:** Version bump only for package @ionic/angular-server diff --git a/packages/angular-server/package-lock.json b/packages/angular-server/package-lock.json index 8003d45c5e6..56a444cd907 100644 --- a/packages/angular-server/package-lock.json +++ b/packages/angular-server/package-lock.json @@ -1,15 +1,15 @@ { "name": "@ionic/angular-server", - "version": "8.6.0", + "version": "8.6.1", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@ionic/angular-server", - "version": "8.6.0", + "version": "8.6.1", "license": "MIT", "dependencies": { - "@ionic/core": "^8.6.0" + "@ionic/core": "^8.6.1" }, "devDependencies": { "@angular-eslint/eslint-plugin": "^16.0.0", @@ -1031,9 +1031,9 @@ "dev": true }, "node_modules/@ionic/core": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.6.0.tgz", - "integrity": "sha512-s9/YH6yks4e4tceMJYGKIRyeHeZAh4YVk0uMPO7RQ9nkZTl8wZtB4PegH9bHqNY0tap0ZQQCNLwCfKmofUOnQg==", + "version": "8.6.1", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.6.1.tgz", + "integrity": "sha512-ewxnIMqFivOJsQJ2V1fbzfBNt1N2ooqx9GGX/YjJYuyckhotDsUotqxKJ0e9il0LryneUwGsNCMvWIa7CXqrmA==", "license": "MIT", "dependencies": { "@stencil/core": "4.33.1", @@ -7305,9 +7305,9 @@ "dev": true }, "@ionic/core": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.6.0.tgz", - "integrity": "sha512-s9/YH6yks4e4tceMJYGKIRyeHeZAh4YVk0uMPO7RQ9nkZTl8wZtB4PegH9bHqNY0tap0ZQQCNLwCfKmofUOnQg==", + "version": "8.6.1", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.6.1.tgz", + "integrity": "sha512-ewxnIMqFivOJsQJ2V1fbzfBNt1N2ooqx9GGX/YjJYuyckhotDsUotqxKJ0e9il0LryneUwGsNCMvWIa7CXqrmA==", "requires": { "@stencil/core": "4.33.1", "ionicons": "^7.2.2", diff --git a/packages/angular-server/package.json b/packages/angular-server/package.json index 701df8e02fa..395c09f11db 100644 --- a/packages/angular-server/package.json +++ b/packages/angular-server/package.json @@ -1,6 +1,6 @@ { "name": "@ionic/angular-server", - "version": "8.6.0", + "version": "8.6.1", "description": "Angular SSR Module for Ionic", "keywords": [ "ionic", @@ -62,6 +62,6 @@ }, "prettier": "@ionic/prettier-config", "dependencies": { - "@ionic/core": "^8.6.0" + "@ionic/core": "^8.6.1" } } diff --git a/packages/angular/CHANGELOG.md b/packages/angular/CHANGELOG.md index 25666003f4d..92f9cf36155 100644 --- a/packages/angular/CHANGELOG.md +++ b/packages/angular/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [8.6.1](https://github.com/ionic-team/ionic-framework/compare/v8.6.0...v8.6.1) (2025-06-11) + +**Note:** Version bump only for package @ionic/angular + + + + + # [8.6.0](https://github.com/ionic-team/ionic-framework/compare/v8.5.9...v8.6.0) (2025-06-04) diff --git a/packages/angular/package-lock.json b/packages/angular/package-lock.json index 863ffe7e314..52ee519ba95 100644 --- a/packages/angular/package-lock.json +++ b/packages/angular/package-lock.json @@ -1,15 +1,15 @@ { "name": "@ionic/angular", - "version": "8.6.0", + "version": "8.6.1", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@ionic/angular", - "version": "8.6.0", + "version": "8.6.1", "license": "MIT", "dependencies": { - "@ionic/core": "^8.6.0", + "@ionic/core": "^8.6.1", "ionicons": "^7.0.0", "jsonc-parser": "^3.0.0", "tslib": "^2.3.0" @@ -1398,9 +1398,9 @@ "dev": true }, "node_modules/@ionic/core": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.6.0.tgz", - "integrity": "sha512-s9/YH6yks4e4tceMJYGKIRyeHeZAh4YVk0uMPO7RQ9nkZTl8wZtB4PegH9bHqNY0tap0ZQQCNLwCfKmofUOnQg==", + "version": "8.6.1", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.6.1.tgz", + "integrity": "sha512-ewxnIMqFivOJsQJ2V1fbzfBNt1N2ooqx9GGX/YjJYuyckhotDsUotqxKJ0e9il0LryneUwGsNCMvWIa7CXqrmA==", "license": "MIT", "dependencies": { "@stencil/core": "4.33.1", @@ -9936,9 +9936,9 @@ "dev": true }, "@ionic/core": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.6.0.tgz", - "integrity": "sha512-s9/YH6yks4e4tceMJYGKIRyeHeZAh4YVk0uMPO7RQ9nkZTl8wZtB4PegH9bHqNY0tap0ZQQCNLwCfKmofUOnQg==", + "version": "8.6.1", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.6.1.tgz", + "integrity": "sha512-ewxnIMqFivOJsQJ2V1fbzfBNt1N2ooqx9GGX/YjJYuyckhotDsUotqxKJ0e9il0LryneUwGsNCMvWIa7CXqrmA==", "requires": { "@stencil/core": "4.33.1", "ionicons": "^7.2.2", diff --git a/packages/angular/package.json b/packages/angular/package.json index 1714e1e774b..7525e7b1390 100644 --- a/packages/angular/package.json +++ b/packages/angular/package.json @@ -1,6 +1,6 @@ { "name": "@ionic/angular", - "version": "8.6.0", + "version": "8.6.1", "description": "Angular specific wrappers for @ionic/core", "keywords": [ "ionic", @@ -47,7 +47,7 @@ } }, "dependencies": { - "@ionic/core": "^8.6.0", + "@ionic/core": "^8.6.1", "ionicons": "^7.0.0", "jsonc-parser": "^3.0.0", "tslib": "^2.3.0" diff --git a/packages/docs/CHANGELOG.md b/packages/docs/CHANGELOG.md index 4e7defb1716..207a4b58793 100644 --- a/packages/docs/CHANGELOG.md +++ b/packages/docs/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [8.6.1](https://github.com/ionic-team/ionic-framework/compare/v8.6.0...v8.6.1) (2025-06-11) + +**Note:** Version bump only for package @ionic/docs + + + + + # [8.6.0](https://github.com/ionic-team/ionic-framework/compare/v8.5.9...v8.6.0) (2025-06-04) **Note:** Version bump only for package @ionic/docs diff --git a/packages/docs/package-lock.json b/packages/docs/package-lock.json index ecc5c4a51a9..d408b15f7da 100644 --- a/packages/docs/package-lock.json +++ b/packages/docs/package-lock.json @@ -1,12 +1,12 @@ { "name": "@ionic/docs", - "version": "8.6.0", + "version": "8.6.1", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@ionic/docs", - "version": "8.6.0", + "version": "8.6.1", "license": "MIT" } } diff --git a/packages/docs/package.json b/packages/docs/package.json index d6b350f1f14..2b3202b2215 100644 --- a/packages/docs/package.json +++ b/packages/docs/package.json @@ -1,6 +1,6 @@ { "name": "@ionic/docs", - "version": "8.6.0", + "version": "8.6.1", "description": "Pre-packaged API documentation for the Ionic docs.", "main": "core.json", "types": "core.d.ts", diff --git a/packages/react-router/CHANGELOG.md b/packages/react-router/CHANGELOG.md index 06f27a37e1a..4bbe7752d0b 100644 --- a/packages/react-router/CHANGELOG.md +++ b/packages/react-router/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [8.6.1](https://github.com/ionic-team/ionic-framework/compare/v8.6.0...v8.6.1) (2025-06-11) + +**Note:** Version bump only for package @ionic/react-router + + + + + # [8.6.0](https://github.com/ionic-team/ionic-framework/compare/v8.5.9...v8.6.0) (2025-06-04) diff --git a/packages/react-router/package-lock.json b/packages/react-router/package-lock.json index c0c02c65ca0..92c77f6afff 100644 --- a/packages/react-router/package-lock.json +++ b/packages/react-router/package-lock.json @@ -1,15 +1,15 @@ { "name": "@ionic/react-router", - "version": "8.6.0", + "version": "8.6.1", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@ionic/react-router", - "version": "8.6.0", + "version": "8.6.1", "license": "MIT", "dependencies": { - "@ionic/react": "^8.6.0", + "@ionic/react": "^8.6.1", "tslib": "*" }, "devDependencies": { @@ -238,9 +238,9 @@ "dev": true }, "node_modules/@ionic/core": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.6.0.tgz", - "integrity": "sha512-s9/YH6yks4e4tceMJYGKIRyeHeZAh4YVk0uMPO7RQ9nkZTl8wZtB4PegH9bHqNY0tap0ZQQCNLwCfKmofUOnQg==", + "version": "8.6.1", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.6.1.tgz", + "integrity": "sha512-ewxnIMqFivOJsQJ2V1fbzfBNt1N2ooqx9GGX/YjJYuyckhotDsUotqxKJ0e9il0LryneUwGsNCMvWIa7CXqrmA==", "license": "MIT", "dependencies": { "@stencil/core": "4.33.1", @@ -415,12 +415,12 @@ } }, "node_modules/@ionic/react": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/@ionic/react/-/react-8.6.0.tgz", - "integrity": "sha512-CXg6CyYN2PF9qYYOwo9nA1+z6yp8JFOK6x2TzgTITOHbz2gmP1r8Tmcil58IeKqTqpZJOX+VPIAgboZVElSmBg==", + "version": "8.6.1", + "resolved": "https://registry.npmjs.org/@ionic/react/-/react-8.6.1.tgz", + "integrity": "sha512-UREU/xTH2aJO7FpK8A7GkHQbwquemH71INYmYi7TdUuSd59TJi9/s7lMXC6H7xLhT+D+N8Uui0PlYyTPWFOT2g==", "license": "MIT", "dependencies": { - "@ionic/core": "8.6.0", + "@ionic/core": "8.6.1", "ionicons": "^7.0.0", "tslib": "*" }, @@ -4175,9 +4175,9 @@ "dev": true }, "@ionic/core": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.6.0.tgz", - "integrity": "sha512-s9/YH6yks4e4tceMJYGKIRyeHeZAh4YVk0uMPO7RQ9nkZTl8wZtB4PegH9bHqNY0tap0ZQQCNLwCfKmofUOnQg==", + "version": "8.6.1", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.6.1.tgz", + "integrity": "sha512-ewxnIMqFivOJsQJ2V1fbzfBNt1N2ooqx9GGX/YjJYuyckhotDsUotqxKJ0e9il0LryneUwGsNCMvWIa7CXqrmA==", "requires": { "@stencil/core": "4.33.1", "ionicons": "^7.2.2", @@ -4281,11 +4281,11 @@ "requires": {} }, "@ionic/react": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/@ionic/react/-/react-8.6.0.tgz", - "integrity": "sha512-CXg6CyYN2PF9qYYOwo9nA1+z6yp8JFOK6x2TzgTITOHbz2gmP1r8Tmcil58IeKqTqpZJOX+VPIAgboZVElSmBg==", + "version": "8.6.1", + "resolved": "https://registry.npmjs.org/@ionic/react/-/react-8.6.1.tgz", + "integrity": "sha512-UREU/xTH2aJO7FpK8A7GkHQbwquemH71INYmYi7TdUuSd59TJi9/s7lMXC6H7xLhT+D+N8Uui0PlYyTPWFOT2g==", "requires": { - "@ionic/core": "8.6.0", + "@ionic/core": "8.6.1", "ionicons": "^7.0.0", "tslib": "*" } diff --git a/packages/react-router/package.json b/packages/react-router/package.json index a083c55a940..906280d2d6d 100644 --- a/packages/react-router/package.json +++ b/packages/react-router/package.json @@ -1,6 +1,6 @@ { "name": "@ionic/react-router", - "version": "8.6.0", + "version": "8.6.1", "description": "React Router wrapper for @ionic/react", "keywords": [ "ionic", @@ -36,7 +36,7 @@ "dist/" ], "dependencies": { - "@ionic/react": "^8.6.0", + "@ionic/react": "^8.6.1", "tslib": "*" }, "peerDependencies": { diff --git a/packages/react/CHANGELOG.md b/packages/react/CHANGELOG.md index fddc45af233..1a39efab612 100644 --- a/packages/react/CHANGELOG.md +++ b/packages/react/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [8.6.1](https://github.com/ionic-team/ionic-framework/compare/v8.6.0...v8.6.1) (2025-06-11) + +**Note:** Version bump only for package @ionic/react + + + + + # [8.6.0](https://github.com/ionic-team/ionic-framework/compare/v8.5.9...v8.6.0) (2025-06-04) diff --git a/packages/react/package-lock.json b/packages/react/package-lock.json index 08abec6176d..d94525abba9 100644 --- a/packages/react/package-lock.json +++ b/packages/react/package-lock.json @@ -1,15 +1,15 @@ { "name": "@ionic/react", - "version": "8.6.0", + "version": "8.6.1", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@ionic/react", - "version": "8.6.0", + "version": "8.6.1", "license": "MIT", "dependencies": { - "@ionic/core": "^8.6.0", + "@ionic/core": "^8.6.1", "ionicons": "^7.0.0", "tslib": "*" }, @@ -736,9 +736,9 @@ "dev": true }, "node_modules/@ionic/core": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.6.0.tgz", - "integrity": "sha512-s9/YH6yks4e4tceMJYGKIRyeHeZAh4YVk0uMPO7RQ9nkZTl8wZtB4PegH9bHqNY0tap0ZQQCNLwCfKmofUOnQg==", + "version": "8.6.1", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.6.1.tgz", + "integrity": "sha512-ewxnIMqFivOJsQJ2V1fbzfBNt1N2ooqx9GGX/YjJYuyckhotDsUotqxKJ0e9il0LryneUwGsNCMvWIa7CXqrmA==", "license": "MIT", "dependencies": { "@stencil/core": "4.33.1", @@ -12431,9 +12431,9 @@ "dev": true }, "@ionic/core": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.6.0.tgz", - "integrity": "sha512-s9/YH6yks4e4tceMJYGKIRyeHeZAh4YVk0uMPO7RQ9nkZTl8wZtB4PegH9bHqNY0tap0ZQQCNLwCfKmofUOnQg==", + "version": "8.6.1", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.6.1.tgz", + "integrity": "sha512-ewxnIMqFivOJsQJ2V1fbzfBNt1N2ooqx9GGX/YjJYuyckhotDsUotqxKJ0e9il0LryneUwGsNCMvWIa7CXqrmA==", "requires": { "@stencil/core": "4.33.1", "ionicons": "^7.2.2", diff --git a/packages/react/package.json b/packages/react/package.json index 61ab8759ce3..7290c723403 100644 --- a/packages/react/package.json +++ b/packages/react/package.json @@ -1,6 +1,6 @@ { "name": "@ionic/react", - "version": "8.6.0", + "version": "8.6.1", "description": "React specific wrapper for @ionic/core", "keywords": [ "ionic", @@ -39,7 +39,7 @@ "css/" ], "dependencies": { - "@ionic/core": "^8.6.0", + "@ionic/core": "^8.6.1", "ionicons": "^7.0.0", "tslib": "*" }, diff --git a/packages/vue-router/CHANGELOG.md b/packages/vue-router/CHANGELOG.md index 03aadb4015a..6cccf2c4654 100644 --- a/packages/vue-router/CHANGELOG.md +++ b/packages/vue-router/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [8.6.1](https://github.com/ionic-team/ionic-framework/compare/v8.6.0...v8.6.1) (2025-06-11) + +**Note:** Version bump only for package @ionic/vue-router + + + + + # [8.6.0](https://github.com/ionic-team/ionic-framework/compare/v8.5.9...v8.6.0) (2025-06-04) **Note:** Version bump only for package @ionic/vue-router diff --git a/packages/vue-router/package-lock.json b/packages/vue-router/package-lock.json index 7b595d9a383..0bdd86c2abc 100644 --- a/packages/vue-router/package-lock.json +++ b/packages/vue-router/package-lock.json @@ -1,15 +1,15 @@ { "name": "@ionic/vue-router", - "version": "8.6.0", + "version": "8.6.1", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@ionic/vue-router", - "version": "8.6.0", + "version": "8.6.1", "license": "MIT", "dependencies": { - "@ionic/vue": "^8.6.0" + "@ionic/vue": "^8.6.1" }, "devDependencies": { "@ionic/eslint-config": "^0.3.0", @@ -673,9 +673,9 @@ "dev": true }, "node_modules/@ionic/core": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.6.0.tgz", - "integrity": "sha512-s9/YH6yks4e4tceMJYGKIRyeHeZAh4YVk0uMPO7RQ9nkZTl8wZtB4PegH9bHqNY0tap0ZQQCNLwCfKmofUOnQg==", + "version": "8.6.1", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.6.1.tgz", + "integrity": "sha512-ewxnIMqFivOJsQJ2V1fbzfBNt1N2ooqx9GGX/YjJYuyckhotDsUotqxKJ0e9il0LryneUwGsNCMvWIa7CXqrmA==", "license": "MIT", "dependencies": { "@stencil/core": "4.33.1", @@ -865,12 +865,12 @@ } }, "node_modules/@ionic/vue": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/@ionic/vue/-/vue-8.6.0.tgz", - "integrity": "sha512-mKwHF373gSQCUiBG2iRH6ZtLDSvglUsIXJ1Z16WiM3/7jUktUMasY4FbaJ1ImItVAghFo/mi7FN+VAP1cxDLgg==", + "version": "8.6.1", + "resolved": "https://registry.npmjs.org/@ionic/vue/-/vue-8.6.1.tgz", + "integrity": "sha512-ZqI6z8lSkLrgSoZB8pqMtdYPTCHBQ/H4TB0Hsj1fDqOZCLzjQX//HX+V6IauCaEbcWhvxAzbQoU52JaX7onJ7w==", "license": "MIT", "dependencies": { - "@ionic/core": "8.6.0", + "@ionic/core": "8.6.1", "@stencil/vue-output-target": "0.10.7", "ionicons": "^7.0.0" } @@ -8041,9 +8041,9 @@ "dev": true }, "@ionic/core": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.6.0.tgz", - "integrity": "sha512-s9/YH6yks4e4tceMJYGKIRyeHeZAh4YVk0uMPO7RQ9nkZTl8wZtB4PegH9bHqNY0tap0ZQQCNLwCfKmofUOnQg==", + "version": "8.6.1", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.6.1.tgz", + "integrity": "sha512-ewxnIMqFivOJsQJ2V1fbzfBNt1N2ooqx9GGX/YjJYuyckhotDsUotqxKJ0e9il0LryneUwGsNCMvWIa7CXqrmA==", "requires": { "@stencil/core": "4.33.1", "ionicons": "^7.2.2", @@ -8156,11 +8156,11 @@ "requires": {} }, "@ionic/vue": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/@ionic/vue/-/vue-8.6.0.tgz", - "integrity": "sha512-mKwHF373gSQCUiBG2iRH6ZtLDSvglUsIXJ1Z16WiM3/7jUktUMasY4FbaJ1ImItVAghFo/mi7FN+VAP1cxDLgg==", + "version": "8.6.1", + "resolved": "https://registry.npmjs.org/@ionic/vue/-/vue-8.6.1.tgz", + "integrity": "sha512-ZqI6z8lSkLrgSoZB8pqMtdYPTCHBQ/H4TB0Hsj1fDqOZCLzjQX//HX+V6IauCaEbcWhvxAzbQoU52JaX7onJ7w==", "requires": { - "@ionic/core": "8.6.0", + "@ionic/core": "8.6.1", "@stencil/vue-output-target": "0.10.7", "ionicons": "^7.0.0" } diff --git a/packages/vue-router/package.json b/packages/vue-router/package.json index dea90b3fc24..4153587206d 100644 --- a/packages/vue-router/package.json +++ b/packages/vue-router/package.json @@ -1,6 +1,6 @@ { "name": "@ionic/vue-router", - "version": "8.6.0", + "version": "8.6.1", "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.6.0" + "@ionic/vue": "^8.6.1" }, "devDependencies": { "@ionic/eslint-config": "^0.3.0", diff --git a/packages/vue/CHANGELOG.md b/packages/vue/CHANGELOG.md index 5b550c04ec9..9f85063a70f 100644 --- a/packages/vue/CHANGELOG.md +++ b/packages/vue/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [8.6.1](https://github.com/ionic-team/ionic-framework/compare/v8.6.0...v8.6.1) (2025-06-11) + +**Note:** Version bump only for package @ionic/vue + + + + + # [8.6.0](https://github.com/ionic-team/ionic-framework/compare/v8.5.9...v8.6.0) (2025-06-04) diff --git a/packages/vue/package-lock.json b/packages/vue/package-lock.json index 92c48727cc9..9c588046e8f 100644 --- a/packages/vue/package-lock.json +++ b/packages/vue/package-lock.json @@ -1,15 +1,15 @@ { "name": "@ionic/vue", - "version": "8.6.0", + "version": "8.6.1", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@ionic/vue", - "version": "8.6.0", + "version": "8.6.1", "license": "MIT", "dependencies": { - "@ionic/core": "^8.6.0", + "@ionic/core": "^8.6.1", "@stencil/vue-output-target": "0.10.7", "ionicons": "^7.0.0" }, @@ -222,9 +222,9 @@ "dev": true }, "node_modules/@ionic/core": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.6.0.tgz", - "integrity": "sha512-s9/YH6yks4e4tceMJYGKIRyeHeZAh4YVk0uMPO7RQ9nkZTl8wZtB4PegH9bHqNY0tap0ZQQCNLwCfKmofUOnQg==", + "version": "8.6.1", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.6.1.tgz", + "integrity": "sha512-ewxnIMqFivOJsQJ2V1fbzfBNt1N2ooqx9GGX/YjJYuyckhotDsUotqxKJ0e9il0LryneUwGsNCMvWIa7CXqrmA==", "license": "MIT", "dependencies": { "@stencil/core": "4.33.1", @@ -4167,9 +4167,9 @@ "dev": true }, "@ionic/core": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.6.0.tgz", - "integrity": "sha512-s9/YH6yks4e4tceMJYGKIRyeHeZAh4YVk0uMPO7RQ9nkZTl8wZtB4PegH9bHqNY0tap0ZQQCNLwCfKmofUOnQg==", + "version": "8.6.1", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.6.1.tgz", + "integrity": "sha512-ewxnIMqFivOJsQJ2V1fbzfBNt1N2ooqx9GGX/YjJYuyckhotDsUotqxKJ0e9il0LryneUwGsNCMvWIa7CXqrmA==", "requires": { "@stencil/core": "4.33.1", "ionicons": "^7.2.2", diff --git a/packages/vue/package.json b/packages/vue/package.json index 9250ce30267..fa1381fa9f8 100644 --- a/packages/vue/package.json +++ b/packages/vue/package.json @@ -1,6 +1,6 @@ { "name": "@ionic/vue", - "version": "8.6.0", + "version": "8.6.1", "description": "Vue specific wrapper for @ionic/core", "scripts": { "eslint": "eslint src", @@ -67,7 +67,7 @@ "vue-router": "^4.0.16" }, "dependencies": { - "@ionic/core": "^8.6.0", + "@ionic/core": "^8.6.1", "@stencil/vue-output-target": "0.10.7", "ionicons": "^7.0.0" },