diff --git a/src/components/menu/menu-gestures.ts b/src/components/menu/menu-gestures.ts index 65e738e1c4..fddf4a542a 100644 --- a/src/components/menu/menu-gestures.ts +++ b/src/components/menu/menu-gestures.ts @@ -57,14 +57,14 @@ export class MenuContentGesture extends SlideEdgeGesture { } onSlide(slide: SlideData, ev: any) { - const z = (this.menu.isRightSide ? slide.min : slide.max); + const z = ((this.menu.isRightSide && !this.plt.isRTL) || (!this.menu.isRightSide && this.plt.isRTL) ? slide.min : slide.max); const stepValue = (slide.distance / z); this.menu._swipeProgress(stepValue); } onSlideEnd(slide: SlideData, ev: any) { - let z = (this.menu.isRightSide ? slide.min : slide.max); + let z = ((this.menu.isRightSide && !this.plt.isRTL) || (!this.menu.isRightSide && this.plt.isRTL) ? slide.min : slide.max); const currentStepValue = (slide.distance / z); const velocity = slide.velocity; z = Math.abs(z * 0.5); @@ -89,7 +89,7 @@ export class MenuContentGesture extends SlideEdgeGesture { getElementStartPos(slide: SlideData, ev: any) { const menu = this.menu; - if (menu.isRightSide) { + if ((menu.isRightSide && !this.plt.isRTL) || (!menu.isRightSide && this.plt.isRTL)) { return menu.isOpen ? slide.min : slide.max; } // left menu @@ -98,7 +98,7 @@ export class MenuContentGesture extends SlideEdgeGesture { getSlideBoundaries(): { min: number, max: number } { const menu = this.menu; - if (menu.isRightSide) { + if ((menu.isRightSide && !this.plt.isRTL) || (!menu.isRightSide && this.plt.isRTL)) { return { min: -menu.width(), max: 0 diff --git a/src/components/menu/menu.scss b/src/components/menu/menu.scss index e6448e2af3..eefd53ac64 100644 --- a/src/components/menu/menu.scss +++ b/src/components/menu/menu.scss @@ -47,7 +47,8 @@ ion-menu.show-menu { } ion-menu[side=right] > .menu-inner { - @include position-horizontal(auto, 0); + left: auto; + right: 0; } ion-menu ion-backdrop { diff --git a/src/components/menu/menu.ts b/src/components/menu/menu.ts index b896e88077..dab11095d0 100644 --- a/src/components/menu/menu.ts +++ b/src/components/menu/menu.ts @@ -490,10 +490,11 @@ export class Menu implements RootNode, MenuInterface, OnInit, OnDestroy { // user has finished dragging the menu const isRightSide = this.isRightSide; + const isRTL = this._plt.isRTL; const opening = !this.isOpen; const shouldComplete = (opening) - ? isRightSide ? shouldCompleteLeft : shouldCompleteRight - : isRightSide ? shouldCompleteRight : shouldCompleteLeft; + ? ((isRightSide && !isRTL) || (!isRightSide && isRTL)) ? shouldCompleteLeft : shouldCompleteRight + : ((isRightSide && !isRTL) || (!isRightSide && isRTL)) ? shouldCompleteRight : shouldCompleteLeft; this._getType().setProgressEnd(shouldComplete, stepValue, velocity, (isOpen: boolean) => { console.debug('menu, swipeEnd', this.side);