diff --git a/.github/COMPONENT-GUIDE.md b/.github/COMPONENT-GUIDE.md
index ad0d240ffa..7e710592b0 100644
--- a/.github/COMPONENT-GUIDE.md
+++ b/.github/COMPONENT-GUIDE.md
@@ -17,6 +17,7 @@
* [Example Components](#example-components-1)
* [Component Structure](#component-structure-1)
- [Converting Scoped to Shadow](#converting-scoped-to-shadow)
+- [RTL](#rtl)
## Button States
@@ -717,3 +718,39 @@ There will be some CSS issues when converting to shadow. Below are some of the d
/* IN SHADOW*/
:host-context(ion-toolbar:not(.ion-color)):host(:not(.ion-color)) ::slotted(ion-segment-button) {
```
+
+## RTL
+
+When you need to support both LTR and RTL modes, try to avoid using values such as `left` and `right`. For certain CSS properties, you can use the appropriate mixin to have this handled for you automatically.
+
+For example, if you wanted `transform-origin` to be RTL-aware, you would use the `transform-origin` mixin:
+
+```css
+@include transform-origin(start, center);
+```
+
+This would output `transform-origin: left center` in LTR mode and `transform-origin: right center` in RTL mode.
+
+These mixins depend on the `:host-context` pseudo-class when used inside of shadow components, which is not supported in WebKit. As a result, these mixins will not work in Safari for macOS and iOS when applied to shadow components.
+
+To work around this, you should set an RTL class on the host of your component and set your RTL styles by targeting that class:
+
+```tsx
+
+ ...
+
+```
+
+```css
+:host {
+ transform-origin: left center;
+}
+
+:host(.my-cmp-rtl) {
+ transform-origin: right center;
+}
+```
\ No newline at end of file
diff --git a/CHANGELOG.md b/CHANGELOG.md
index c7b77584e9..90379b29bb 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,33 @@
+## [5.6.9](https://github.com/ionic-team/ionic/compare/v5.6.8...v5.6.9) (2021-06-08)
+
+
+### Bug Fixes
+
+* **modal:** swipe to close modal is no longer swipeable on footer ([#23401](https://github.com/ionic-team/ionic/issues/23401)) ([ae96563](https://github.com/ionic-team/ionic/commit/ae96563fb3c4612cb8585292b389ee746f5759f7)), closes [#23398](https://github.com/ionic-team/ionic/issues/23398)
+* **title:** inherit padding for iOS title in a toolbar ([#23343](https://github.com/ionic-team/ionic/issues/23343)) ([82cfa55](https://github.com/ionic-team/ionic/commit/82cfa5565347704b0e9f7dac792ed2aa6dd30505)), closes [#23072](https://github.com/ionic-team/ionic/issues/23072)
+* **vue:** improve v-model integration for Vue 3.1.0+ ([#23420](https://github.com/ionic-team/ionic/issues/23420)) ([f008628](https://github.com/ionic-team/ionic/commit/f0086288512bd7f7d1929d79bfd8bf702efc732e))
+* **vue:** prevent error from being thrown when testing on certain jest runners ([#23421](https://github.com/ionic-team/ionic/issues/23421)) ([60bedb5](https://github.com/ionic-team/ionic/commit/60bedb5599b286bffccfc54c4861a269d9b8df73)), closes [#23397](https://github.com/ionic-team/ionic/issues/23397)
+
+
+
+## [5.6.8](https://github.com/ionic-team/ionic/compare/v5.6.7...v5.6.8) (2021-05-27)
+
+
+### Bug Fixes
+
+* **action-sheet:** subheader no longer overlaps action sheet buttons ([#23318](https://github.com/ionic-team/ionic/issues/23318)) ([d473a53](https://github.com/ionic-team/ionic/commit/d473a5385108ef5f39d7c9a2b2924e89fec631de)), closes [#23316](https://github.com/ionic-team/ionic/issues/23316)
+* **all:** reflect color property as an attribute for vue ([#23345](https://github.com/ionic-team/ionic/issues/23345)) ([dc430af](https://github.com/ionic-team/ionic/commit/dc430af906c608f948c8d404ad73ae0e0ac36076)), closes [#23323](https://github.com/ionic-team/ionic/issues/23323)
+* **range:** knob can now have an accessible name ([#23338](https://github.com/ionic-team/ionic/issues/23338)) ([881dcff](https://github.com/ionic-team/ionic/commit/881dcff40b8bdcb07b27d4ee812ce4ee64b6ea9a)), closes [#23295](https://github.com/ionic-team/ionic/issues/23295)
+* **react:** remove @ionic/core dependency in @ionic/react-router to resolve yarn install warning ([#23351](https://github.com/ionic-team/ionic/issues/23351)) ([36bfa33](https://github.com/ionic-team/ionic/commit/36bfa3350354e09be6c62f4e4bee0c553c5981a3)), closes [#23346](https://github.com/ionic-team/ionic/issues/23346)
+* **react:** support history@5 in preparation for react router 6 ([#23297](https://github.com/ionic-team/ionic/issues/23297)) ([4da5216](https://github.com/ionic-team/ionic/commit/4da5216b4f65f3d893cc81ebee77261835218f7f)), closes [#23294](https://github.com/ionic-team/ionic/issues/23294)
+* **router:** guards are now triggered on initial navigation ([#23123](https://github.com/ionic-team/ionic/issues/23123)) ([56f6f56](https://github.com/ionic-team/ionic/commit/56f6f56c6665f40ea6bf41be463cd416883359f7)), closes [#22936](https://github.com/ionic-team/ionic/issues/22936)
+* **router:** redirects now account for query string ([#23337](https://github.com/ionic-team/ionic/issues/23337)) ([08a9f3a](https://github.com/ionic-team/ionic/commit/08a9f3ac94685c5782dd2fa6b56bf3448729a768)), closes [#23136](https://github.com/ionic-team/ionic/issues/23136)
+* **skeleton-text:** animation no longer jumps on large skeleton text elements ([#22697](https://github.com/ionic-team/ionic/issues/22697)) ([1a36922](https://github.com/ionic-team/ionic/commit/1a36922f41f2890c778feedbad9c5b74a72a3907)), closes [#22694](https://github.com/ionic-team/ionic/issues/22694)
+* **slides:** resolve prototype pollution in swiper v5 ([#23344](https://github.com/ionic-team/ionic/issues/23344)) ([a708c41](https://github.com/ionic-team/ionic/commit/a708c412625cba475ec7863468dcc2146b8feb7a)), closes [#23342](https://github.com/ionic-team/ionic/issues/23342)
+* **title:** large title scale animation is now correct in rtl mode ([#23372](https://github.com/ionic-team/ionic/issues/23372)) ([3d474ec](https://github.com/ionic-team/ionic/commit/3d474ec67ff4192fa3d08e370e20fecbee99a6aa)), closes [#23371](https://github.com/ionic-team/ionic/issues/23371)
+
+
+
## [5.6.7](https://github.com/ionic-team/ionic/compare/v5.6.6...v5.6.7) (2021-05-13)
diff --git a/angular/package-lock.json b/angular/package-lock.json
index 5ac75559c7..cc018bd375 100644
--- a/angular/package-lock.json
+++ b/angular/package-lock.json
@@ -1,15 +1,15 @@
{
"name": "@ionic/angular",
- "version": "5.6.7",
+ "version": "5.6.9",
"lockfileVersion": 2,
"requires": true,
"packages": {
"": {
"name": "@ionic/angular",
- "version": "5.6.7",
+ "version": "5.6.9",
"license": "MIT",
"dependencies": {
- "@ionic/core": "5.6.6",
+ "@ionic/core": "5.6.8",
"tslib": "^1.9.3"
},
"devDependencies": {
@@ -204,9 +204,9 @@
}
},
"node_modules/@ionic/core": {
- "version": "5.6.6",
- "resolved": "https://registry.npmjs.org/@ionic/core/-/core-5.6.6.tgz",
- "integrity": "sha512-EbVIXOTVVPxBo7hsarBpRSFNsQ22wBFtWkKmrmliieknG5LUkf5WZBpj4EENQhzYA6c+//7/nfhcD9pWgtAofA==",
+ "version": "5.6.8",
+ "resolved": "https://registry.npmjs.org/@ionic/core/-/core-5.6.8.tgz",
+ "integrity": "sha512-JWrRGzw4SyyemjycPEh516fAkgFVtLp6RMPTH3uzK8L+DLfqJ/QU4Uccu89QqdcG/TBD75r3wkUtbKL2YlL8PQ==",
"dependencies": {
"@stencil/core": "^2.4.0",
"ionicons": "^5.5.1",
@@ -5156,9 +5156,9 @@
}
},
"@ionic/core": {
- "version": "5.6.6",
- "resolved": "https://registry.npmjs.org/@ionic/core/-/core-5.6.6.tgz",
- "integrity": "sha512-EbVIXOTVVPxBo7hsarBpRSFNsQ22wBFtWkKmrmliieknG5LUkf5WZBpj4EENQhzYA6c+//7/nfhcD9pWgtAofA==",
+ "version": "5.6.8",
+ "resolved": "https://registry.npmjs.org/@ionic/core/-/core-5.6.8.tgz",
+ "integrity": "sha512-JWrRGzw4SyyemjycPEh516fAkgFVtLp6RMPTH3uzK8L+DLfqJ/QU4Uccu89QqdcG/TBD75r3wkUtbKL2YlL8PQ==",
"requires": {
"@stencil/core": "^2.4.0",
"ionicons": "^5.5.1",
diff --git a/angular/package.json b/angular/package.json
index b0b75c4a3f..08a52fe241 100644
--- a/angular/package.json
+++ b/angular/package.json
@@ -1,6 +1,6 @@
{
"name": "@ionic/angular",
- "version": "5.6.7",
+ "version": "5.6.9",
"description": "Angular specific wrappers for @ionic/core",
"keywords": [
"ionic",
@@ -42,7 +42,7 @@
"validate": "npm i && npm run lint && npm run test && npm run build"
},
"dependencies": {
- "@ionic/core": "5.6.7",
+ "@ionic/core": "5.6.9",
"tslib": "^1.9.3"
},
"peerDependencies": {
diff --git a/angular/src/providers/platform.ts b/angular/src/providers/platform.ts
index c757075af3..38b04a0f15 100644
--- a/angular/src/providers/platform.ts
+++ b/angular/src/providers/platform.ts
@@ -209,7 +209,7 @@ export class Platform {
}
/**
- * Returns `true` if the app is in portait mode.
+ * Returns `true` if the app is in portrait mode.
*/
isPortrait(): boolean {
return this.win.matchMedia && this.win.matchMedia('(orientation: portrait)').matches;
diff --git a/core/package-lock.json b/core/package-lock.json
index 5260ec2112..322a6d9783 100644
--- a/core/package-lock.json
+++ b/core/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "@ionic/core",
- "version": "5.7.0-dev.202106081605.0bc250e",
+ "version": "5.6.9",
"lockfileVersion": 2,
"requires": true,
"packages": {
"": {
"name": "@ionic/core",
- "version": "5.7.0-dev.202106081605.0bc250e",
+ "version": "5.6.9",
"license": "MIT",
"dependencies": {
"@stencil/core": "^2.6.0",
diff --git a/core/package.json b/core/package.json
index 53aed53553..dd53ee23c5 100644
--- a/core/package.json
+++ b/core/package.json
@@ -1,6 +1,6 @@
{
"name": "@ionic/core",
- "version": "5.6.7",
+ "version": "5.6.9",
"description": "Base components for Ionic",
"keywords": [
"ionic",
diff --git a/core/src/components/button/button.md.scss b/core/src/components/button/button.md.scss
index f01520a164..a8493a2dbf 100644
--- a/core/src/components/button/button.md.scss
+++ b/core/src/components/button/button.md.scss
@@ -129,30 +129,29 @@
// Material Design Button: Hover
// --------------------------------------------------
+/**
+ * Only allow overriding of opacity here
+ * as developers should not be overriding
+ * colors when using the color prop.
+ */
+
:host(.button-solid.ion-color.ion-focused) .button-native::after {
background: #{current-color(contrast)};
-
- opacity: .24;
}
:host(.button-clear.ion-color.ion-focused) .button-native::after,
:host(.button-outline.ion-color.ion-focused) .button-native::after {
background: #{current-color(base)};
-
- opacity: .12;
}
+
@media (any-hover: hover) {
:host(.button-solid.ion-color:hover) .button-native::after {
background: #{current-color(contrast)};
-
- opacity: .08;
}
:host(.button-clear.ion-color:hover) .button-native::after,
:host(.button-outline.ion-color:hover) .button-native::after {
background: #{current-color(base)};
-
- opacity: .04;
}
}
diff --git a/core/src/components/button/test/outline/index.html b/core/src/components/button/test/outline/index.html
index 27db3c617a..0383bcb93a 100644
--- a/core/src/components/button/test/outline/index.html
+++ b/core/src/components/button/test/outline/index.html
@@ -90,6 +90,7 @@
Dark.focused
Dark.activated.focused
+
Disabled
Secondary Disabled
diff --git a/core/src/components/button/test/states/index.html b/core/src/components/button/test/states/index.html
index acfb1e16fd..9bff07e624 100644
--- a/core/src/components/button/test/states/index.html
+++ b/core/src/components/button/test/states/index.html
@@ -89,6 +89,31 @@
Outline
Clear
+
+
+ Button
+ Button
+ Button
+
+
+
+ Button
+ Button
+ Button
+
+
+
+ Button
+ Button
+ Button
+
+
+
+ Button
+ Button
+ Button
+
+
@@ -110,6 +135,17 @@
.custom {
--color: red;
}
+
+ .custom-variables ion-button {
+ --color: black;
+
+ --background: pink;
+ --background-focused: red;
+ --background-hover: green;
+
+ --background-focused-opacity: .5;
+ --background-hover-opacity: .5;
+ }