Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(292)

Side by Side Diff: ui/login/account_picker/md_user_pod_row.js

Issue 2947933002: Fix style issues for right-to-left languages (Closed)
Patch Set: Address comments Created 3 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « ui/login/account_picker/md_user_pod_row.css ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 /** 5 /**
6 * @fileoverview User pod row implementation. 6 * @fileoverview User pod row implementation.
7 */ 7 */
8 8
9 cr.define('login', function() { 9 cr.define('login', function() {
10 /** 10 /**
(...skipping 144 matching lines...) Expand 10 before | Expand all | Expand 10 after
155 /** 155 /**
156 * Helper function to remove a class from given element. 156 * Helper function to remove a class from given element.
157 * @param {!HTMLElement} el Element whose class list to change. 157 * @param {!HTMLElement} el Element whose class list to change.
158 * @param {string} cl Class to remove. 158 * @param {string} cl Class to remove.
159 */ 159 */
160 function removeClass(el, cl) { 160 function removeClass(el, cl) {
161 el.classList.remove(cl); 161 el.classList.remove(cl);
162 } 162 }
163 163
164 /** 164 /**
165 * Helper function to switch directions for right-to-left languages.
166 * @param {!HTMLElement} el Element whose style needs to change.
167 */
168 function switchDirection(el) {
169 var leftStyle = el.style.left;
170 el.style.left = el.style.right;
171 el.style.right = leftStyle;
172 }
173
174 /**
165 * Creates a user pod. 175 * Creates a user pod.
166 * @constructor 176 * @constructor
167 * @extends {HTMLDivElement} 177 * @extends {HTMLDivElement}
168 */ 178 */
169 var UserPod = cr.ui.define(function() { 179 var UserPod = cr.ui.define(function() {
170 var node = $('user-pod-template').cloneNode(true); 180 var node = $('user-pod-template').cloneNode(true);
171 node.removeAttribute('id'); 181 node.removeAttribute('id');
172 return node; 182 return node;
173 }); 183 });
174 184
(...skipping 3703 matching lines...) Expand 10 before | Expand all | Expand 10 after
3878 }, 3888 },
3879 3889
3880 /** 3890 /**
3881 * Called after pod placement and before showing the pod row. Updates 3891 * Called after pod placement and before showing the pod row. Updates
3882 * elements whose style may depend on the pod placement outcome. 3892 * elements whose style may depend on the pod placement outcome.
3883 * @private 3893 * @private
3884 */ 3894 */
3885 handleAfterPodPlacement_: function() { 3895 handleAfterPodPlacement_: function() {
3886 var pods = this.pods; 3896 var pods = this.pods;
3887 for (var pod of pods) { 3897 for (var pod of pods) {
3888 if (pods.length > POD_ROW_LIMIT && pod != this.mainPod_) 3898 if (pod.getPodStyle() != UserPod.Style.LARGE)
3889 continue; 3899 continue;
3890 // Make sure that user name on each large pod is centered and extra 3900 // Make sure that user name on each large pod is centered and extra
3891 // long names don't exceed maximum pod width. 3901 // long names don't exceed maximum pod width.
3892 var nameArea = pod.querySelector('.name-container'); 3902 var nameArea = pod.querySelector('.name-container');
3893 var leftMargin = (CROS_POD_WIDTH - pod.nameElement.offsetWidth) / 2; 3903 var leftMargin = (CROS_POD_WIDTH - pod.nameElement.offsetWidth) / 2;
3894 if (leftMargin > 0) 3904 if (leftMargin > 0) {
3895 nameArea.style.left = cr.ui.toCssPx(leftMargin); 3905 nameArea.style.left = cr.ui.toCssPx(leftMargin);
3896 else { 3906 nameArea.style.right = 'auto';
3907 } else {
3897 pod.nameElement.style.width = cr.ui.toCssPx(CROS_POD_WIDTH); 3908 pod.nameElement.style.width = cr.ui.toCssPx(CROS_POD_WIDTH);
3898 nameArea.style.left = cr.ui.toCssPx(0); 3909 nameArea.style.left = cr.ui.toCssPx(0);
3910 nameArea.style.right = 'auto';
3899 } 3911 }
3912
3900 // Update info container area for public session pods. 3913 // Update info container area for public session pods.
3901 if (pod.isPublicSessionPod) { 3914 if (pod.isPublicSessionPod) {
3902 var infoElement = pod.querySelector('.info'); 3915 var infoElement = pod.querySelector('.info');
3903 var infoIcon = pod.querySelector('.learn-more'); 3916 var infoIcon = pod.querySelector('.learn-more');
3904 var totalWidth = PUBLIC_SESSION_ICON_WIDTH + infoElement.offsetWidth; 3917 var totalWidth = PUBLIC_SESSION_ICON_WIDTH + infoElement.offsetWidth;
3905 var infoLeftMargin = (CROS_POD_WIDTH - totalWidth) / 2; 3918 var infoLeftMargin = (CROS_POD_WIDTH - totalWidth) / 2;
3906 if (infoLeftMargin > 0) { 3919 if (infoLeftMargin > 0) {
3907 infoIcon.style.left = cr.ui.toCssPx(infoLeftMargin); 3920 infoIcon.style.left = cr.ui.toCssPx(infoLeftMargin);
3921 infoIcon.style.right = 'auto';
3908 infoElement.style.left = 3922 infoElement.style.left =
3909 cr.ui.toCssPx(infoLeftMargin + PUBLIC_SESSION_ICON_WIDTH); 3923 cr.ui.toCssPx(infoLeftMargin + PUBLIC_SESSION_ICON_WIDTH);
3924 infoElement.style.right = 'auto';
3910 } else { 3925 } else {
3911 infoIcon.style.left = cr.ui.toCssPx(0); 3926 infoIcon.style.left = cr.ui.toCssPx(0);
3927 infoIcon.style.right = 'auto';
3912 infoElement.style.left = cr.ui.toCssPx(PUBLIC_SESSION_ICON_WIDTH); 3928 infoElement.style.left = cr.ui.toCssPx(PUBLIC_SESSION_ICON_WIDTH);
3929 infoElement.style.right = 'auto';
3913 infoElement.style.width = cr.ui.toCssPx( 3930 infoElement.style.width = cr.ui.toCssPx(
3914 CROS_POD_WIDTH - PUBLIC_SESSION_ICON_WIDTH - 3931 CROS_POD_WIDTH - PUBLIC_SESSION_ICON_WIDTH -
3915 infoElement.style.paddingLeft); 3932 infoElement.style.paddingLeft);
3916 } 3933 }
3917 // If the public session pod is already expanded, make sure it's 3934 // If the public session pod is already expanded, make sure it's
3918 // still centered. 3935 // still centered.
3919 if (pod.expanded) 3936 if (pod.expanded)
3920 this.centerPod_(pod, PUBLIC_EXPANDED_WIDTH, PUBLIC_EXPANDED_HEIGHT); 3937 this.centerPod_(pod, PUBLIC_EXPANDED_WIDTH, PUBLIC_EXPANDED_HEIGHT);
3921 } 3938 }
3939
3922 // Update action box menu position to ensure it doesn't overlap with 3940 // Update action box menu position to ensure it doesn't overlap with
3923 // elements outside the pod. 3941 // elements outside the pod.
3924 var actionBoxMenu = pod.querySelector('.action-box-menu'); 3942 var actionBoxMenu = pod.querySelector('.action-box-menu');
3925 var actionBoxButton = pod.querySelector('.action-box-button'); 3943 var actionBoxButton = pod.querySelector('.action-box-button');
3926 var MENU_TOP_PADDING = 7; 3944 var MENU_TOP_PADDING = 7;
3927 if (this.isPortraitMode_() && pods.length > 1) { 3945 if (this.isPortraitMode_() && pods.length > 1) {
3928 // Confine the menu inside the pod when it may overlap with outside 3946 // Confine the menu inside the pod when it may overlap with outside
3929 // elements. 3947 // elements.
3930 actionBoxMenu.style.left = 'auto'; 3948 actionBoxMenu.style.left = 'auto';
3931 actionBoxMenu.style.right = cr.ui.toCssPx(0); 3949 actionBoxMenu.style.right = cr.ui.toCssPx(0);
3932 actionBoxMenu.style.top = 3950 actionBoxMenu.style.top =
3933 cr.ui.toCssPx(actionBoxButton.offsetHeight + MENU_TOP_PADDING); 3951 cr.ui.toCssPx(actionBoxButton.offsetHeight + MENU_TOP_PADDING);
3934 } else if (!this.isPortraitMode_() && this.isScreenShrinked_()) { 3952 } else if (!this.isPortraitMode_() && this.isScreenShrinked_()) {
3935 // Prevent the virtual keyboard from blocking the remove user button. 3953 // Prevent the virtual keyboard from blocking the remove user button.
3936 actionBoxMenu.style.left = cr.ui.toCssPx( 3954 actionBoxMenu.style.left = cr.ui.toCssPx(
3937 pod.nameElement.offsetWidth + actionBoxButton.offsetWidth); 3955 pod.nameElement.offsetWidth + actionBoxButton.offsetWidth);
3938 actionBoxMenu.style.right = 'auto'; 3956 actionBoxMenu.style.right = 'auto';
3939 actionBoxMenu.style.top = cr.ui.toCssPx(0); 3957 actionBoxMenu.style.top = cr.ui.toCssPx(0);
3940 } else { 3958 } else {
3941 actionBoxMenu.style.left = cr.ui.toCssPx( 3959 actionBoxMenu.style.left = cr.ui.toCssPx(
3942 pod.nameElement.offsetWidth + actionBoxButton.style.marginLeft); 3960 pod.nameElement.offsetWidth + actionBoxButton.style.marginLeft);
3943 actionBoxMenu.style.right = 'auto'; 3961 actionBoxMenu.style.right = 'auto';
3944 actionBoxMenu.style.top = 3962 actionBoxMenu.style.top =
3945 cr.ui.toCssPx(actionBoxButton.offsetHeight + MENU_TOP_PADDING); 3963 cr.ui.toCssPx(actionBoxButton.offsetHeight + MENU_TOP_PADDING);
3946 } 3964 }
3965
3947 // Update password container width based on the visibility of the 3966 // Update password container width based on the visibility of the
3948 // custom icon container. 3967 // custom icon container.
3949 pod.querySelector('.password-container') 3968 pod.querySelector('.password-container')
3950 .classList.toggle( 3969 .classList.toggle(
3951 'custom-icon-shown', !pod.customIconElement.hidden); 3970 'custom-icon-shown', !pod.customIconElement.hidden);
3952 // Add ripple animation. 3971 // Add ripple animation.
3953 var actionBoxRippleEffect = 3972 var actionBoxRippleEffect =
3954 pod.querySelector('.action-box-button.ripple-circle'); 3973 pod.querySelector('.action-box-button.ripple-circle');
3955 actionBoxRippleEffect.style.left = cr.ui.toCssPx( 3974 actionBoxRippleEffect.style.left = cr.ui.toCssPx(
3956 pod.nameElement.offsetWidth + actionBoxButton.style.marginLeft); 3975 pod.nameElement.offsetWidth + actionBoxButton.style.marginLeft);
3976 actionBoxRippleEffect.style.right = 'auto';
3957 actionBoxRippleEffect.style.top = 3977 actionBoxRippleEffect.style.top =
3958 cr.ui.toCssPx(actionBoxButton.style.marginTop); 3978 cr.ui.toCssPx(actionBoxButton.style.marginTop);
3959 // Adjust the vertical position of the pod if pin keyboard is shown. 3979 // Adjust the vertical position of the pod if pin keyboard is shown.
3960 if (pod.isPinShown() && !this.isScreenShrinked_()) 3980 if (pod.isPinShown() && !this.isScreenShrinked_())
3961 pod.top = (this.screenSize.height - CROS_POD_HEIGHT_WITH_PIN) / 2; 3981 pod.top = (this.screenSize.height - CROS_POD_HEIGHT_WITH_PIN) / 2;
3982
3983 // In the end, switch direction of the above elements if right-to-left
3984 // language is used.
3985 if (isRTL()) {
3986 switchDirection(nameArea);
3987 switchDirection(actionBoxMenu);
3988 switchDirection(actionBoxRippleEffect);
3989 if (pod.isPublicSessionPod) {
3990 switchDirection(pod.querySelector('.info'));
3991 switchDirection(pod.querySelector('.learn-more'));
3992 }
3993 }
3962 } 3994 }
3963 // Update the position of the sign-in banner if it's shown. 3995 // Update the position of the sign-in banner if it's shown.
3964 if ($('signin-banner').textContent.length != 0) { 3996 if ($('signin-banner').textContent.length != 0) {
3965 var bannerContainer = $('signin-banner-container1'); 3997 var bannerContainer = $('signin-banner-container1');
3966 bannerContainer.style.top = cr.ui.toCssPx(this.mainPod_.top / 2); 3998 bannerContainer.style.top = cr.ui.toCssPx(this.mainPod_.top / 2);
3967 if (this.pods.length <= POD_ROW_LIMIT) { 3999 if (this.pods.length <= POD_ROW_LIMIT) {
3968 bannerContainer.style.left = cr.ui.toCssPx( 4000 bannerContainer.style.left = cr.ui.toCssPx(
3969 (this.screenSize.width - bannerContainer.offsetWidth) / 2); 4001 (this.screenSize.width - bannerContainer.offsetWidth) / 2);
3970 } 4002 }
3971 else { 4003 else {
(...skipping 693 matching lines...) Expand 10 before | Expand all | Expand 10 after
4665 if (pod && pod.multiProfilesPolicyApplied) { 4697 if (pod && pod.multiProfilesPolicyApplied) {
4666 pod.userTypeBubbleElement.classList.remove('bubble-shown'); 4698 pod.userTypeBubbleElement.classList.remove('bubble-shown');
4667 } 4699 }
4668 } 4700 }
4669 }; 4701 };
4670 4702
4671 return { 4703 return {
4672 PodRow: PodRow 4704 PodRow: PodRow
4673 }; 4705 };
4674 }); 4706 });
OLDNEW
« no previous file with comments | « ui/login/account_picker/md_user_pod_row.css ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698