This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | Type | Update | |---|---|---|---|---|---|---|---| | [@axe-core/playwright](https://redirect.github.com/dequelabs/axe-core-npm) | [`^4.10.0` -> `^4.10.1`](https://renovatebot.com/diffs/npm/@axe-core%2fplaywright/4.10.0/4.10.1) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | devDependencies | patch | | [@playwright/test](https://playwright.dev) ([source](https://redirect.github.com/microsoft/playwright)) | [`^1.46.1` -> `^1.51.0`](https://renovatebot.com/diffs/npm/@playwright%2ftest/1.46.1/1.51.0) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | devDependencies | minor | | mcr.microsoft.com/playwright | `v1.46.1` -> `v1.51.0` | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | final | minor | --- ### Release Notes <details> <summary>dequelabs/axe-core-npm (@​axe-core/playwright)</summary> ### [`v4.10.1`](https://redirect.github.com/dequelabs/axe-core-npm/blob/HEAD/CHANGELOG.md#4101-2024-10-29) [Compare Source](https://redirect.github.com/dequelabs/axe-core-npm/compare/v4.10.0...v4.10.1) ##### Bug Fixes - Update axe-core to v4.10.1 ([#​1124](https://redirect.github.com/dequelabs/axe-core-npm/issues/1124)) ([099818b](099818bcef)) - Update axe-core to v4.10.2 ([#​1128](https://redirect.github.com/dequelabs/axe-core-npm/issues/1128)) ([aaaa34e](aaaa34e7c3)) </details> <details> <summary>microsoft/playwright (@​playwright/test)</summary> ### [`v1.51.0`](https://redirect.github.com/microsoft/playwright/compare/v1.50.1...3707a93754368ec1e0e2876767e8a9209f036f8a) [Compare Source](https://redirect.github.com/microsoft/playwright/compare/v1.50.1...v1.51.0) ### [`v1.50.1`](https://redirect.github.com/microsoft/playwright/releases/tag/v1.50.1) [Compare Source](https://redirect.github.com/microsoft/playwright/compare/v1.50.0...v1.50.1) ##### Highlights [https://github.com/microsoft/playwright/issues/34483](https://redirect.github.com/microsoft/playwright/issues/34483) - \[Feature]: single aria snapshot for different engines/browsers[https://github.com/microsoft/playwright/issues/34497](https://redirect.github.com/microsoft/playwright/issues/34497)7 - \[Bug]: Firefox not handling keepalive: true fetch request[https://github.com/microsoft/playwright/issues/34504](https://redirect.github.com/microsoft/playwright/issues/34504)04 - \[Bug]: update snapshots not creating good dif[https://github.com/microsoft/playwright/issues/34507](https://redirect.github.com/microsoft/playwright/issues/34507)507 - \[Bug]: snapshotPathTemplate doesnt work when multiple proje[https://github.com/microsoft/playwright/issues/34462](https://redirect.github.com/microsoft/playwright/issues/34462)4462 - \[Bug]: updateSnapshots "changed" throws an error #### Browser Versions - Chromium 133.0.6943.16 - Mozilla Firefox 134.0 - WebKit 18.2 This version was also tested against the following stable channels: - Google Chrome 132 - Microsoft Edge 132 ### [`v1.50.0`](https://redirect.github.com/microsoft/playwright/releases/tag/v1.50.0) [Compare Source](https://redirect.github.com/microsoft/playwright/compare/v1.49.1...v1.50.0) #### Test runner - New option [`timeout`](https://playwright.dev/docs/api/class-test#test-step-option-timeout) allows specifying a maximum run time for an individual test step. A timed-out step will fail the execution of the test. ```js test('some test', async ({ page }) => { await test.step('a step', async () => { // This step can time out separately from the test }, { timeout: 1000 }); }); ``` - New method [test.step.skip()](https://playwright.dev/docs/api/class-test#test-step-skip) to disable execution of a test step. ```js test('some test', async ({ page }) => { await test.step('before running step', async () => { // Normal step }); await test.step.skip('not yet ready', async () => { // This step is skipped }); await test.step('after running step', async () => { // This step still runs even though the previous one was skipped }); }); ``` - Expanded [expect(locator).toMatchAriaSnapshot()](https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-match-aria-snapshot-2) to allow storing of aria snapshots in separate YAML files. - Added method [expect(locator).toHaveAccessibleErrorMessage()](https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-have-accessible-error-message) to assert the Locator points to an element with a given [aria errormessage](https://w3c.github.io/aria/#aria-errormessage). - Option [testConfig.updateSnapshots](https://playwright.dev/docs/api/class-testconfig#test-config-update-snapshots) added the configuration enum `changed`. `changed` updates only the snapshots that have changed, whereas `all` now updates all snapshots, regardless of whether there are any differences. - New option [testConfig.updateSourceMethod](https://playwright.dev/docs/api/class-testconfig#test-config-update-source-method) defines the way source code is updated when [testConfig.updateSnapshots](https://playwright.dev/docs/api/class-testconfig#test-config-update-snapshots) is configured. Added `overwrite` and `3-way` modes that write the changes into source code, on top of existing `patch` mode that creates a patch file. ```bash npx playwright test --update-snapshots=changed --update-source-method=3way ``` - Option [testConfig.webServer](https://playwright.dev/docs/api/class-testconfig#test-config-web-server) added a `gracefulShutdown` field for specifying a process kill signal other than the default `SIGKILL`. - Exposed [testStep.attachments](https://playwright.dev/docs/api/class-teststep#test-step-attachments) from the reporter API to allow retrieval of all attachments created by that step. - New option `pathTemplate` for `toHaveScreenshot` and `toMatchAriaSnapshot` assertions in the [testConfig.expect](https://playwright.dev/docs/api/class-testconfig#test-config-expect) configuration. #### UI updates - Updated default HTML reporter to improve display of attachments. - New button for picking elements to produce aria snapshots. - Additional details (such as keys pressed) are now displayed alongside action API calls in traces. - Display of `canvas` content in traces is error-prone. Display is now disabled by default, and can be enabled via the `Display canvas content` UI setting. - `Call` and `Network` panels now display additional time information. #### Breaking - [expect(locator).toBeEditable()](https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-be-editable) and [locator.isEditable()](https://playwright.dev/docs/api/class-locator#locator-is-editable) now throw if the target element is not `<input>`, `<select>`, or a number of other editable elements. - Option [testConfig.updateSnapshots](https://playwright.dev/docs/api/class-testconfig#test-config-update-snapshots) now updates all snapshots when set to `all`, rather than only the failed/changed snapshots. Use the new enum `changed` to keep the old functionality of only updating the changed snapshots. #### Browser Versions - Chromium 133.0.6943.16 - Mozilla Firefox 134.0 - WebKit 18.2 This version was also tested against the following stable channels: - Google Chrome 132 - Microsoft Edge 132 ### [`v1.49.1`](https://redirect.github.com/microsoft/playwright/releases/tag/v1.49.1) [Compare Source](https://redirect.github.com/microsoft/playwright/compare/v1.49.0...v1.49.1) ##### Highlights [https://github.com/microsoft/playwright/issues/33802](https://redirect.github.com/microsoft/playwright/issues/33802) - \[Bug]: Codegen's Clear button doesn't work if not recording[https://github.com/microsoft/playwright/issues/33806](https://redirect.github.com/microsoft/playwright/issues/33806)6 - \[Bug]: playwright hangs while waiting for pending navigation[https://github.com/microsoft/playwright/issues/33787](https://redirect.github.com/microsoft/playwright/issues/33787)87 - \[Bug]: VSC extension isn't capturing all entered te[https://github.com/microsoft/playwright/issues/33788](https://redirect.github.com/microsoft/playwright/issues/33788)788 - \[Regression]: Double clicking the steps in trace viewer doesn't filter acti[https://github.com/microsoft/playwright/issues/33772](https://redirect.github.com/microsoft/playwright/issues/33772)3772 - \[Bug]: aria_snapshot generates invalid yaml when combined with an aria-label attr[https://github.com/microsoft/playwright/issues/33791](https://redirect.github.com/microsoft/playwright/issues/33791)33791 - \[Bug]: text input with number value raises "container is not iterable" with to_match_aria_sna[https://github.com/microsoft/playwright/issues/33644](https://redirect.github.com/microsoft/playwright/issues/33644)/33644 - \[Bug]: getByRole can't find element with the accessible name from label element when aria-labelledby is not[https://github.com/microsoft/playwright/issues/33660](https://redirect.github.com/microsoft/playwright/issues/33660)s/33660 - \[Regression]: Unable to open Playwright UI in Dark Mode #### Browser Versions - Chromium 131.0.6778.33 - Mozilla Firefox 132.0 - WebKit 18.2 This version was also tested against the following stable channels: - Google Chrome 130 - Microsoft Edge 130 ### [`v1.49.0`](https://redirect.github.com/microsoft/playwright/releases/tag/v1.49.0) [Compare Source](https://redirect.github.com/microsoft/playwright/compare/v1.48.2...v1.49.0) #### Aria snapshots New assertion [expect(locator).toMatchAriaSnapshot()](https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-match-aria-snapshot) verifies page structure by comparing to an expected accessibility tree, represented as YAML. ```js await page.goto('https://playwright.dev'); await expect(page.locator('body')).toMatchAriaSnapshot(` - banner: - heading /Playwright enables reliable/ [level=1] - link "Get started" - link "Star microsoft/playwright on GitHub" - main: - img "Browsers (Chromium, Firefox, WebKit)" - heading "Any browser • Any platform • One API" `); ``` You can generate this assertion with [Test Generator](https://playwright.dev/docs/codegen) and update the expected snapshot with `--update-snapshots` command line flag. Learn more in the [aria snapshots guide](https://playwright.dev/docs/aria-snapshots). #### Test runner - New option [testConfig.tsconfig](https://playwright.dev/docs/api/class-testconfig#test-config-tsconfig) allows to specify a single `tsconfig` to be used for all tests. - New method [test.fail.only()](https://playwright.dev/docs/api/class-test#test-fail-only) to focus on a failing test. - Options [testConfig.globalSetup](https://playwright.dev/docs/api/class-testconfig#test-config-global-setup) and [testConfig.globalTeardown](https://playwright.dev/docs/api/class-testconfig#test-config-global-teardown) now support multiple setups/teardowns. - New value `'on-first-failure'` for [testOptions.screenshot](https://playwright.dev/docs/api/class-testoptions#test-options-screenshot). - Added "previous" and "next" buttons to the HTML report to quickly switch between test cases. - New properties [testInfoError.cause](https://playwright.dev/docs/api/class-testinfoerror#test-info-error-cause) and [testError.cause](https://playwright.dev/docs/api/class-testerror#test-error-cause) mirroring [`Error.cause`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error/cause). #### Breaking: channels `chrome`, `msedge` and similar switch to new headless This change affects you if you're using one of the following channels in your `playwright.config.ts`: - `chrome`, `chrome-dev`, `chrome-beta`, or `chrome-canary` - `msedge`, `msedge-dev`, `msedge-beta`, or `msedge-canary` ##### What do I need to do? After updating to Playwright v1.49, run your test suite. If it still passes, you're good to go. If not, you will probably need to update your snapshots, and adapt some of your test code around PDF viewers and extensions. See [issue #​33566](https://redirect.github.com/microsoft/playwright/issues/33566) for more details. #### Other breaking changes - There will be no more updates for WebKit on Ubuntu 20.04 and Debian 11. We recommend updating your OS to a later version. - Package `@playwright/experimental-ct-vue2` will no longer be updated. - Package `@playwright/experimental-ct-solid` will no longer be updated. #### Try new Chromium headless You can opt into the new headless mode by using `'chromium'` channel. As [official Chrome documentation puts it](https://developer.chrome.com/blog/chrome-headless-shell): > New Headless on the other hand is the real Chrome browser, and is thus more authentic, reliable, and offers more features. This makes it more suitable for high-accuracy end-to-end web app testing or browser extension testing. See [issue #​33566](https://redirect.github.com/microsoft/playwright/issues/33566) for the list of possible breakages you could encounter and more details on Chromium headless. Please file an issue if you see any problems after opting in. ```js import { defineConfig, devices } from '@​playwright/test'; export default defineConfig({ projects: [ { name: 'chromium', use: { ...devices['Desktop Chrome'], channel: 'chromium' }, }, ], }); ``` #### Miscellaneous - `<canvas>` elements inside a snapshot now draw a preview. - New method [tracing.group()](https://playwright.dev/docs/api/class-tracing#tracing-group) to visually group actions in the trace. - Playwright docker images switched from Node.js v20 to Node.js v22 LTS. #### Browser Versions - Chromium 131.0.6778.33 - Mozilla Firefox 132.0 - WebKit 18.2 This version was also tested against the following stable channels: - Google Chrome 130 - Microsoft Edge 130 ### [`v1.48.2`](https://redirect.github.com/microsoft/playwright/releases/tag/v1.48.2) [Compare Source](https://redirect.github.com/microsoft/playwright/compare/v1.48.1...v1.48.2) ##### Highlights [https://github.com/microsoft/playwright/issues/33141](https://redirect.github.com/microsoft/playwright/issues/33141) - \[Bug]: UI Mode crashed[https://github.com/microsoft/playwright/issues/33219](https://redirect.github.com/microsoft/playwright/issues/33219)9 - \[BUG] Trace Viewer PWA crashes with "Aw, Snap86 - \[Bug]: UI Mode Memory probl[https://github.com/microsoft/playwright/issues/33000](https://redirect.github.com/microsoft/playwright/issues/33000)000 - \[Regression]: Inspector and Browser doesn't close on CTR[https://github.com/microsoft/playwright/issues/33204](https://redirect.github.com/microsoft/playwright/issues/33204)3204 - \[Bug]: Chrome tab and inspector not closing after terminating session in terminal #### Browser Versions - Chromium 130.0.6723.19 - Mozilla Firefox 130.0 - WebKit 18.0 This version was also tested against the following stable channels: - Google Chrome 129 - Microsoft Edge 129 ### [`v1.48.1`](https://redirect.github.com/microsoft/playwright/releases/tag/v1.48.1) [Compare Source](https://redirect.github.com/microsoft/playwright/compare/v1.48.0...v1.48.1) ##### Highlights [https://github.com/microsoft/playwright/issues/33023](https://redirect.github.com/microsoft/playwright/issues/33023) - \[Bug]: command line flag --headed has no effect in ui mode[https://github.com/microsoft/playwright/issues/33107](https://redirect.github.com/microsoft/playwright/issues/33107)7 - \[REGRESSION]: page.waitForRequest does not get resolved since 1.48.[https://github.com/microsoft/playwright/issues/33085](https://redirect.github.com/microsoft/playwright/issues/33085)85 - \[Bug]: WebSocket route does not handle full URLs in Playwrig[https://github.com/microsoft/playwright/issues/33052](https://redirect.github.com/microsoft/playwright/issues/33052)052 - \[Regression]: Inspector not showing recorded st[https://github.com/microsoft/playwright/issues/33132](https://redirect.github.com/microsoft/playwright/issues/33132)3132 - \[Bug]: Wrong Ubuntu release name in Dockerfile.n[https://github.com/microsoft/playwright/pull/32996](https://redirect.github.com/microsoft/playwright/pull/32996)32996 - \[BUG] Trace attachments have small unusable height #### Browser Versions - Chromium 130.0.6723.19 - Mozilla Firefox 130.0 - WebKit 18.0 This version was also tested against the following stable channels: - Google Chrome 129 - Microsoft Edge 129 ### [`v1.48.0`](https://redirect.github.com/microsoft/playwright/releases/tag/v1.48.0) [Compare Source](https://redirect.github.com/microsoft/playwright/compare/v1.47.2...v1.48.0) #### WebSocket routing New methods [page.routeWebSocket()](https://playwright.dev/docs/api/class-page#page-route-web-socket) and [browserContext.routeWebSocket()](https://playwright.dev/docs/api/class-browsercontext#browser-context-route-web-socket) allow to intercept, modify and mock WebSocket connections initiated in the page. Below is a simple example that mocks WebSocket communication by responding to a `"request"` with a `"response"`. ```js await page.routeWebSocket('/ws', ws => { ws.onMessage(message => { if (message === 'request') ws.send('response'); }); }); ``` See [WebSocketRoute](https://playwright.dev/docs/api/class-websocketroute) for more details. #### UI updates - New "copy" buttons for annotations and test location in the HTML report. - Route method calls like [route.fulfill()](https://playwright.dev/docs/api/class-route#route-fulfill) are not shown in the report and trace viewer anymore. You can see which network requests were routed in the network tab instead. - New "Copy as cURL" and "Copy as fetch" buttons for requests in the network tab. #### Miscellaneous - Option [`form`](https://playwright.dev/docs/api/class-apirequestcontext#api-request-context-fetch-option-form) and similar ones now accept [FormData](https://playwright.dev/docs/api/class-formdata). - New method [page.requestGC()](https://playwright.dev/docs/api/class-page#page-request-gc) may help detect memory leaks. - New option [`location`](https://playwright.dev/docs/api/class-test#test-step-option-location) to pass custom step location. - Requests made by [APIRequestContext](https://playwright.dev/docs/api/class-apirequestcontext) now record detailed timing and security information in the HAR. #### Browser Versions - Chromium 130.0.6723.19 - Mozilla Firefox 130.0 - WebKit 18.0 This version was also tested against the following stable channels: - Google Chrome 129 - Microsoft Edge 129 ### [`v1.47.2`](https://redirect.github.com/microsoft/playwright/releases/tag/v1.47.2) [Compare Source](https://redirect.github.com/microsoft/playwright/compare/v1.47.1...v1.47.2) ##### Highlights [https://github.com/microsoft/playwright/pull/32699](https://redirect.github.com/microsoft/playwright/pull/32699)- \[REGRESSION]: fix(codegen): use content_frame property in python/.NET[https://github.com/microsoft/playwright/issues/32706](https://redirect.github.com/microsoft/playwright/issues/32706)6- \[REGRESSION]: page.pause() does not pause test timeout after 1.4[https://github.com/microsoft/playwright/pull/32661](https://redirect.github.com/microsoft/playwright/pull/32661)61 - fix(trace-viewer): time delta between local and remote actions #### Browser Versions - Chromium 129.0.6668.29 - Mozilla Firefox 130.0 - WebKit 18.0 This version was also tested against the following stable channels: - Google Chrome 128 - Microsoft Edge 128 ### [`v1.47.1`](https://redirect.github.com/microsoft/playwright/releases/tag/v1.47.1) [Compare Source](https://redirect.github.com/microsoft/playwright/compare/v1.47.0...v1.47.1) ##### Highlights [https://github.com/microsoft/playwright/issues/32480](https://redirect.github.com/microsoft/playwright/issues/32480) - \[REGRESSION]: tsconfig.json's compilerOptions.paths no longer working in 1.47[https://github.com/microsoft/playwright/issues/32552](https://redirect.github.com/microsoft/playwright/issues/32552)2 - \[REGRESSION]: broken UI in Trace Viewer while showing network response body #### Browser Versions - Chromium 129.0.6668.29 - Mozilla Firefox 130.0 - WebKit 18.0 This version was also tested against the following stable channels: - Google Chrome 128 - Microsoft Edge 128 ### [`v1.47.0`](https://redirect.github.com/microsoft/playwright/releases/tag/v1.47.0) [Compare Source](https://redirect.github.com/microsoft/playwright/compare/v1.46.1...v1.47.0) #### Network Tab improvements The Network tab in the UI mode and trace viewer has several nice improvements: - filtering by asset type and URL - better display of query string parameters - preview of font assets  Credit to [@​kubajanik](https://redirect.github.com/kubajanik) for these wonderful improvements! #### `--tsconfig` CLI option By default, Playwright will look up the closest tsconfig for each imported file using a heuristic. You can now specify a single tsconfig file in the command line, and Playwright will use it for all imported files, not only test files: ```sh ### Pass a specific tsconfig npx playwright test --tsconfig tsconfig.test.json ``` #### [APIRequestContext](https://playwright.dev/docs/api/class-apirequestcontext) now accepts [`URLSearchParams`](https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams) and `string` as query parameters You can now pass [`URLSearchParams`](https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams) and `string` as query parameters to [APIRequestContext](https://playwright.dev/docs/api/class-apirequestcontext): ```ts test('query params', async ({ request }) => { const searchParams = new URLSearchParams(); searchParams.set('userId', 1); const response = await request.get( 'https://jsonplaceholder.typicode.com/posts', { params: searchParams // or as a string: 'userId=1' } ); // ... }); ``` #### Miscellaneous - The `mcr.microsoft.com/playwright:v1.47.0` now serves a Playwright image based on Ubuntu 24.04 Noble. To use the 22.04 jammy-based image, please use `mcr.microsoft.com/playwright:v1.47.0-jammy` instead. - The `:latest`/`:focal`/`:jammy` tag for Playwright Docker images is no longer being published. Pin to a specific version for better stability and reproducibility. - New option `behavior` in [page.removeAllListeners()](https://playwright.dev/docs/api/class-page#page-remove-all-listeners), [browser.removeAllListeners()](https://playwright.dev/docs/api/class-browser#browser-remove-all-listeners) and [browserContext.removeAllListeners()](https://playwright.dev/docs/api/class-browsercontext#browser-context-remove-all-listeners) to wait for ongoing listeners to complete. - TLS client certificates can now be passed from memory by passing `cert` and `key` as buffers instead of file paths. - Attachments with a `text/html` content type can now be opened in a new tab in the HTML report. This is useful for including third-party reports or other HTML content in the Playwright test report and distributing it to your team. - `noWaitAfter` in [locator.selectOption()](https://playwright.dev/docs/api/class-locator#locator-select-option) was deprecated. - We've seen reports of WebGL in Webkit misbehaving on GitHub Actions `macos-13`. We recommend upgrading GitHub Actions to `macos-14`. #### Browser Versions - Chromium 129.0.6668.29 - Mozilla Firefox 130.0 - WebKit 18.0 This version was also tested against the following stable channels: - Google Chrome 128 - Microsoft Edge 128 </details> --- ### Configuration 📅 **Schedule**: Branch creation - "every weekday before 11am" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Never, or you tick the rebase/retry checkbox. 👻 **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://redirect.github.com/renovatebot/renovate/discussions) if that's undesired. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/ionic-team/ionic-framework). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOC41OS4yIiwidXBkYXRlZEluVmVyIjoiMzkuMjAwLjAiLCJ0YXJnZXRCcmFuY2giOiJtYWluIiwibGFiZWxzIjpbXX0=--> --------- Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: ionitron <hi@ionicframework.com>
@ionic/core
Ionic is an open source App Development Framework that makes it easy to build top quality Native and Progressive Web Apps with web technologies.
The Ionic Core package contains the Web Components that make up the reusable UI building blocks of Ionic Framework. These components are designed to be used in traditional frontend view libraries/frameworks (such as Stencil, React, Angular, or Vue), or on their own through traditional JavaScript in the browser.
Features
- Tiny, highly optimized components built with Stencil
- Styling for both iOS and Material Design
- No build or compiling required
- Simply add the static files to any project
- Lazy-loaded components without configuration
- Asynchronous rendering
- Theming through CSS Variables
How to use
Vanilla HTML
Easiest way to start using Ionic Core is by adding a script tag to the CDN:
<script type="module" src="https://cdn.jsdelivr.net/npm/@ionic/core/dist/ionic/ionic.esm.js"></script>
<script nomodule src="https://cdn.jsdelivr.net/npm/@ionic/core/dist/ionic/ionic.js"></script>
<link href="https://cdn.jsdelivr.net/npm/@ionic/core/css/ionic.bundle.css" rel="stylesheet">
Any Ionic component added to the webpage will automatically load. This includes writing the component tag directly in HTML, or using JavaScript such as document.createElement('ion-toggle').
Additionally, within this package is a dist/ionic.js file and accompanying dist/ionic/ directory. These are the same files which are used by the CDN, and they're available in this package so they can be apart of an app's local development.
Framework Bindings
The @ionic/core package can be used in simple HTML, or by vanilla JavaScript without any framework at all. Ionic also has packages that make it easier to integrate Ionic into a framework's traditional ecosystem and patterns. (However, at the lowest-level framework bindings are still just using Ionic Core and Web Components).
Custom Elements Build
In addition to the default, self lazy-loading components built by Stencil, this package also comes with each component exported as a stand-alone custom element within @ionic/core/components. Each component extends HTMLElement, and does not lazy-load itself. Instead, this package is useful for projects already using a bundler such as Webpack or Rollup. While all components are available to be imported, the custom elements build also ensures bundlers only import what's used, and tree-shakes any unused components.
Below is an example of importing ion-badge, and initializing Ionic so it is able to correctly load the "mode", such as Material Design or iOS. Additionally, the initialize({...}) function can receive the Ionic config.
import { defineCustomElement } from "@ionic/core/components/ion-badge.js";
import { initialize } from "@ionic/core/components";
// Initializes the Ionic config and `mode` behavior
initialize();
// Defines the `ion-badge` web component
defineCustomElement();
Notice how we import from @ionic/core/components as opposed to @ionic/core. This helps bundlers pull in only the code that is needed.
The defineCustomElement function will automatically define the component as well as any child components that may be required.
For example, if you wanted to use ion-modal, you would do the following:
import { defineCustomElement } from "@ionic/core/components/ion-modal.js";
import { initialize } from "@ionic/core/components";
// Initializes the Ionic config and `mode` behavior
initialize();
// Defines the `ion-modal` and child `ion-backdrop` web components.
defineCustomElement();
The defineCustomElement function will define ion-modal, but it will also define ion-backdrop, which is a component that ion-modal uses internally.
Using Overlay Controllers
When using an overlay controller, developers will need to define the overlay component before it can be used. Below is an example of using modalController:
import { defineCustomElement } from '@ionic/core/components/ion-modal.js';
import { initialize, modalController } from '@ionic/core/components';
initialize();
defineCustomElement();
const showModal = async () => {
const modal = await modalController.create({ ... });
...
}
How to contribute
Check out the CONTRIBUTE guide