From 928ddeb718eabf39dafe4c77485380e9367141fd Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Thu, 21 Jan 2021 13:33:25 +0000 Subject: [PATCH] Improve styling of SSO Buttons for multiple IdPs --- res/css/views/elements/_SSOButtons.scss | 11 ++++++- src/components/views/elements/SSOButtons.tsx | 32 +++++++++++++------- 2 files changed, 31 insertions(+), 12 deletions(-) diff --git a/res/css/views/elements/_SSOButtons.scss b/res/css/views/elements/_SSOButtons.scss index f762468c7f..c61247655c 100644 --- a/res/css/views/elements/_SSOButtons.scss +++ b/res/css/views/elements/_SSOButtons.scss @@ -16,8 +16,15 @@ limitations under the License. .mx_SSOButtons { display: flex; + flex-wrap: wrap; justify-content: center; + .mx_SSOButtons_row { + & + .mx_SSOButtons_row { + margin-top: 16px; + } + } + .mx_SSOButton { position: relative; width: 100%; @@ -36,6 +43,8 @@ limitations under the License. box-sizing: border-box; width: 50px; // 48px + 1px border on all sides height: 50px; // 48px + 1px border on all sides + min-width: 50px; // prevent crushing by the flexbox + padding: 12px; > img { left: 12px; @@ -43,7 +52,7 @@ limitations under the License. } & + .mx_SSOButton_mini { - margin-left: 24px; + margin-left: 16px; } } } diff --git a/src/components/views/elements/SSOButtons.tsx b/src/components/views/elements/SSOButtons.tsx index 2416e76119..5c3098d807 100644 --- a/src/components/views/elements/SSOButtons.tsx +++ b/src/components/views/elements/SSOButtons.tsx @@ -15,13 +15,14 @@ limitations under the License. */ import React from "react"; +import { chunk } from "lodash"; +import classNames from "classnames"; import {MatrixClient} from "matrix-js-sdk/src/client"; import PlatformPeg from "../../../PlatformPeg"; import AccessibleButton from "./AccessibleButton"; import {_t} from "../../../languageHandler"; import {IIdentityProvider, ISSOFlow} from "../../../Login"; -import classNames from "classnames"; interface ISSOButtonProps extends Omit { idp: IIdentityProvider; @@ -83,6 +84,8 @@ interface IProps { primary?: boolean; } +const MAX_PER_ROW = 6; + const SSOButtons: React.FC = ({matrixClient, flow, loginType, fragmentAfterLogin, primary}) => { const providers = flow["org.matrix.msc2858.identity_providers"] || []; if (providers.length < 2) { @@ -97,17 +100,24 @@ const SSOButtons: React.FC = ({matrixClient, flow, loginType, fragmentAf ; } + const rows = Math.ceil(providers.length / MAX_PER_ROW); + const size = Math.ceil(providers.length / rows); + return
- { providers.map(idp => ( - + { chunk(providers, size).map(chunk => ( +
+ { chunk.map(idp => ( + + )) } +
)) }
; };