fix(menu): rtl fix for menu

This commit is contained in:
Sina
2017-05-28 19:43:04 +04:30
parent e526ce1da5
commit 27af37b061
3 changed files with 9 additions and 7 deletions

View File

@@ -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

View File

@@ -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 {

View File

@@ -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);