Index: chrome/browser/resources/settings/device_page/night_light_slider.js |
diff --git a/chrome/browser/resources/settings/device_page/night_light_slider.js b/chrome/browser/resources/settings/device_page/night_light_slider.js |
index 3c84b8692e0128884d263b859ebbd9e9164448b4..f0f3219578aa40857a7077e78d096d86a7f35a9f 100644 |
--- a/chrome/browser/resources/settings/device_page/night_light_slider.js |
+++ b/chrome/browser/resources/settings/device_page/night_light_slider.js |
@@ -56,6 +56,25 @@ Polymer({ |
*/ |
dragObject_: null, |
+ /** |
+ * The styles of slider legends determining their absolute left position in |
+ * both LTR and RTL locales. |
+ * @type {Array} |
+ * @private |
+ */ |
+ legendsStyles_: [ |
+ // The beginning 6:00 PM. |
+ {ltr: 'left: 0%;', rtl: 'left: 100%'}, |
+ // 12:00 AM. |
+ {ltr: 'left: 25%;', rtl: 'left: 75%'}, |
+ // 6:00 AM. |
+ {ltr: 'left: 50%;', rtl: 'left: 50%'}, |
+ // 12:00 PM. |
+ {ltr: 'left: 75%;', rtl: 'left: 25%'}, |
+ // The ending 6:00 PM. |
+ {ltr: 'left: 100%;', rtl: 'left: 0%'}, |
+ ], |
+ |
/** @override */ |
ready: function() { |
// Build the legend markers. |
@@ -74,6 +93,26 @@ Polymer({ |
}); |
}, |
+ /** |
+ * @return {boolean} True if window is in a right-to-left locale. |
+ * @private |
+ */ |
+ isRTL_: function() { |
+ return window.getComputedStyle(document.firstElementChild).direction === |
+ 'rtl'; |
+ }, |
+ |
+ /** |
+ * Gets the style of legend div determining its absolute left position. |
+ * @param {number} index The index of the div in its parent #legendContainer. |
+ * @return {string} the CSS style of the legend div. |
+ * @private |
+ */ |
+ getLegendStyle_: function(index) { |
+ var style = this.legendsStyles_[index]; |
+ return this.isRTL_() ? style.rtl : style.ltr; |
stevenjb
2017/06/22 20:23:42
Any particular reason not to pass 0-100 to this an
afakhry
2017/06/22 21:01:16
No reason, other than I didn't want to do the calc
|
+ }, |
+ |
/** |
* Expands or un-expands the knob being dragged along with its corresponding |
* label bubble. |
@@ -170,7 +209,8 @@ Polymer({ |
'ash.night_light.custom_start_time' : |
'ash.night_light.custom_end_time'; |
- if (event.detail.ddx > 0) { |
+ var ddx = this.isRTL_() ? (-1 * event.detail.ddx) : event.detail.ddx; |
stevenjb
2017/06/22 20:23:43
nit: this.isRTL_() ? event.detail.ddx * -1 : event
afakhry
2017/06/22 21:01:16
Done.
|
+ if (ddx > 0) { |
// Increment the knob's pref by the amount of deltaMinutes. |
this.incrementPref_(knobPref, deltaMinutes); |
} else { |
@@ -271,7 +311,7 @@ Polymer({ |
var currentKnobRatio = this.getKnobRatio_(knob); |
ratio = currentKnobRatio > 0.5 ? 1.0 : 0.0; |
} |
- |
+ ratio = this.isRTL_() ? (1.0 - ratio) : ratio; |
knob.style.left = (ratio * this.$.sliderBar.offsetWidth) + 'px'; |
}, |
@@ -293,6 +333,15 @@ Polymer({ |
startLabel.style.left = startKnob.style.left; |
endLabel.style.left = endKnob.style.left; |
+ if (this.isRTL_()) { |
+ // In RTL locales, the relative positions of the knobs are flipped for the |
+ // purpose of calculating the styles of the progress bars below. |
+ startKnob = endKnob; |
+ endKnob = this.$.startKnob; |
+ startProgress = endProgress; |
+ endProgress = this.$.startProgress; |
+ } |
stevenjb
2017/06/22 20:23:42
nit: I think this would be more clear as:
var rtl
afakhry
2017/06/22 21:01:16
Done.
|
+ |
// The end progress bar starts from either the start knob or the start of |
// the slider (whichever is to its left) and ends at the end knob. |
var endProgressLeft = startKnob.offsetLeft >= endKnob.offsetLeft ? |
@@ -443,7 +492,10 @@ Polymer({ |
if (!knobPref) |
return; |
- this.decrementPref_(knobPref, 1); |
+ if (this.isRTL_()) |
+ this.incrementPref_(knobPref, 1); |
+ else |
+ this.decrementPref_(knobPref, 1); |
}, |
/** |
@@ -456,7 +508,10 @@ Polymer({ |
if (!knobPref) |
return; |
- this.incrementPref_(knobPref, 1); |
+ if (this.isRTL_()) |
+ this.decrementPref_(knobPref, 1); |
+ else |
+ this.incrementPref_(knobPref, 1); |
}, |
/** |