UX: login; smaller titles, more consistent spacing, other fixes (#12317)
* Fixes an issue where long translations cause layout issues * Fixes an issue where the alignment shifts when switching between signup/login * Makes some of the margin/padding more consistent * Removes duplicate .login-modal and .create-account classes and replaces them with .login-modal-body and .create-account-body * Adds another color transformation so we could remove prefers-color-scheme... the problem with that was that my OS' UI might be set to something different than my Discourse preferences (prefers-color-scheme only responds to OS UI settings)
This commit is contained in:
parent
dbf6744177
commit
e9a05ce161
|
@ -2,7 +2,7 @@ import Component from "@ember/component";
|
||||||
import cookie from "discourse/lib/cookie";
|
import cookie from "discourse/lib/cookie";
|
||||||
|
|
||||||
export default Component.extend({
|
export default Component.extend({
|
||||||
classNames: ["create-account"],
|
classNames: ["create-account-body"],
|
||||||
|
|
||||||
userInputFocus(event) {
|
userInputFocus(event) {
|
||||||
let label = event.target.parentElement.previousElementSibling;
|
let label = event.target.parentElement.previousElementSibling;
|
||||||
|
|
|
@ -87,13 +87,12 @@ export default Controller.extend(ModalFunctionality, {
|
||||||
canLoginLocal,
|
canLoginLocal,
|
||||||
showSecurityKey
|
showSecurityKey
|
||||||
) {
|
) {
|
||||||
const classes = ["login-modal"];
|
const classes = ["login-modal-body"];
|
||||||
if (awaitingApproval) {
|
if (awaitingApproval) {
|
||||||
classes.push("awaiting-approval");
|
classes.push("awaiting-approval");
|
||||||
}
|
}
|
||||||
if (hasAtLeastOneLoginButton && !showSecondFactor && !showSecurityKey) {
|
if (hasAtLeastOneLoginButton && !showSecondFactor && !showSecurityKey) {
|
||||||
classes.push("has-alt-auth");
|
classes.push("has-alt-auth");
|
||||||
document.querySelector("#discourse-modal").classList.add("has-alt-auth");
|
|
||||||
}
|
}
|
||||||
if (!canLoginLocal) {
|
if (!canLoginLocal) {
|
||||||
classes.push("no-local-login");
|
classes.push("no-local-login");
|
||||||
|
|
|
@ -29,7 +29,7 @@ acceptance("Auth Complete", function (needs) {
|
||||||
);
|
);
|
||||||
|
|
||||||
assert.ok(
|
assert.ok(
|
||||||
exists("#discourse-modal div.create-account"),
|
exists("#discourse-modal div.create-account-body"),
|
||||||
"it shows the registration modal"
|
"it shows the registration modal"
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
@ -41,7 +41,7 @@ acceptance("Auth Complete", function (needs) {
|
||||||
assert.equal(currentRouteName(), "login", "it redirects to the login page");
|
assert.equal(currentRouteName(), "login", "it redirects to the login page");
|
||||||
|
|
||||||
assert.ok(
|
assert.ok(
|
||||||
exists("#discourse-modal div.create-account"),
|
exists("#discourse-modal div.create-account-body"),
|
||||||
"it shows the registration modal"
|
"it shows the registration modal"
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
|
@ -24,7 +24,7 @@ acceptance("Create Account - external auth", function (needs) {
|
||||||
await visit("/");
|
await visit("/");
|
||||||
|
|
||||||
assert.ok(
|
assert.ok(
|
||||||
exists("#discourse-modal div.create-account"),
|
exists("#discourse-modal div.create-account-body"),
|
||||||
"it shows the registration modal"
|
"it shows the registration modal"
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -36,7 +36,7 @@ acceptance("Create Account - external auth", function (needs) {
|
||||||
await visit("/");
|
await visit("/");
|
||||||
|
|
||||||
assert.ok(
|
assert.ok(
|
||||||
exists("#discourse-modal div.create-account"),
|
exists("#discourse-modal div.create-account-body"),
|
||||||
"it shows the registration modal"
|
"it shows the registration modal"
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
|
@ -90,6 +90,7 @@
|
||||||
--primary-low-mid-or-secondary-low: #{$primary-low-mid-or-secondary-low};
|
--primary-low-mid-or-secondary-low: #{$primary-low-mid-or-secondary-low};
|
||||||
--primary-or-primary-low-mid: #{$primary-or-primary-low-mid};
|
--primary-or-primary-low-mid: #{$primary-or-primary-low-mid};
|
||||||
--highlight-low-or-medium: #{$highlight-low-or-medium};
|
--highlight-low-or-medium: #{$highlight-low-or-medium};
|
||||||
|
--tertiary-or-tertiary-low: #{$tertiary-or-tertiary-low};
|
||||||
--tertiary-low-or-tertiary-high: #{$tertiary-low-or-tertiary-high};
|
--tertiary-low-or-tertiary-high: #{$tertiary-low-or-tertiary-high};
|
||||||
--tertiary-med-or-tertiary: #{$tertiary-med-or-tertiary};
|
--tertiary-med-or-tertiary: #{$tertiary-med-or-tertiary};
|
||||||
--secondary-or-primary: #{$secondary-or-primary};
|
--secondary-or-primary: #{$secondary-or-primary};
|
||||||
|
|
|
@ -12,7 +12,7 @@
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
#discourse-modal.login-modal:not(.has-alt-auth) .modal-inner-container {
|
#discourse-modal.login-modal-body:not(.has-alt-auth) .modal-inner-container {
|
||||||
max-width: 28em; // prevents long alerts from expanding the modal width
|
max-width: 28em; // prevents long alerts from expanding the modal width
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -88,9 +88,13 @@
|
||||||
color: #000000;
|
color: #000000;
|
||||||
justify-content: flex-start;
|
justify-content: flex-start;
|
||||||
min-width: fit-content;
|
min-width: fit-content;
|
||||||
|
margin-bottom: 0.5em;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.modal-footer {
|
.modal-footer {
|
||||||
|
.btn-primary {
|
||||||
|
margin-right: 1.5em;
|
||||||
|
}
|
||||||
.inline-spinner {
|
.inline-spinner {
|
||||||
display: inline-flex;
|
display: inline-flex;
|
||||||
}
|
}
|
||||||
|
@ -130,6 +134,7 @@
|
||||||
}
|
}
|
||||||
label.more-info {
|
label.more-info {
|
||||||
color: var(--primary-medium);
|
color: var(--primary-medium);
|
||||||
|
min-height: 1.4em; // prevents height increase due to tips
|
||||||
}
|
}
|
||||||
label.alt-placeholder {
|
label.alt-placeholder {
|
||||||
color: var(--primary-medium);
|
color: var(--primary-medium);
|
||||||
|
@ -228,8 +233,12 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#login-link,
|
||||||
#new-account-link {
|
#new-account-link {
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
|
padding-left: 0;
|
||||||
|
text-align: left;
|
||||||
|
// the second button can wrap in some locales, and this helps alignment
|
||||||
}
|
}
|
||||||
|
|
||||||
.create-account {
|
.create-account {
|
||||||
|
@ -238,6 +247,10 @@
|
||||||
margin-top: 0.5em;
|
margin-top: 0.5em;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.create-account-body {
|
||||||
|
max-width: 40em;
|
||||||
|
}
|
||||||
|
|
||||||
.user-field {
|
.user-field {
|
||||||
input[type="text"] {
|
input[type="text"] {
|
||||||
margin-bottom: 0;
|
margin-bottom: 0;
|
||||||
|
|
|
@ -99,6 +99,8 @@ $highlight-low-or-medium: dark-light-choose(
|
||||||
$highlight-medium
|
$highlight-medium
|
||||||
) !default;
|
) !default;
|
||||||
|
|
||||||
|
$tertiary-or-tertiary-low: dark-light-choose($tertiary, $tertiary-low) !default;
|
||||||
|
|
||||||
$tertiary-low-or-tertiary-high: dark-light-choose(
|
$tertiary-low-or-tertiary-high: dark-light-choose(
|
||||||
$tertiary-low,
|
$tertiary-low,
|
||||||
$tertiary-high
|
$tertiary-high
|
||||||
|
|
|
@ -51,7 +51,6 @@ $base-font-family: var(--font-family) !default;
|
||||||
$heading-font-family: var(--heading-font-family) !default;
|
$heading-font-family: var(--heading-font-family) !default;
|
||||||
|
|
||||||
// Font-size defintions, multiplier ^ (step / interval)
|
// Font-size defintions, multiplier ^ (step / interval)
|
||||||
$font-up-7: 2.639em;
|
|
||||||
$font-up-6: 2.296em;
|
$font-up-6: 2.296em;
|
||||||
$font-up-5: 2em;
|
$font-up-5: 2em;
|
||||||
$font-up-4: 1.7511em;
|
$font-up-4: 1.7511em;
|
||||||
|
@ -65,7 +64,6 @@ $font-down-3: 0.6599em;
|
||||||
$font-down-4: 0.5745em;
|
$font-down-4: 0.5745em;
|
||||||
$font-down-5: 0.5em;
|
$font-down-5: 0.5em;
|
||||||
$font-down-6: 0.4355em;
|
$font-down-6: 0.4355em;
|
||||||
$font-down-7: 0.3789em;
|
|
||||||
|
|
||||||
// inputs/textareas in iOS need to be at least 16px to avoid triggering zoom on focus
|
// inputs/textareas in iOS need to be at least 16px to avoid triggering zoom on focus
|
||||||
// with base at 15px, the below gives 16.05px
|
// with base at 15px, the below gives 16.05px
|
||||||
|
|
|
@ -5,12 +5,7 @@
|
||||||
.create-account {
|
.create-account {
|
||||||
.modal-body {
|
.modal-body {
|
||||||
&.has-alt-auth {
|
&.has-alt-auth {
|
||||||
background: var(--tertiary);
|
background: var(--tertiary-or-tertiary-low);
|
||||||
}
|
|
||||||
@media (prefers-color-scheme: dark) {
|
|
||||||
&.has-alt-auth {
|
|
||||||
background: rgba(var(--tertiary-rgb), 0.5);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.btn-flat.btn.modal-close svg {
|
.btn-flat.btn.modal-close svg {
|
||||||
|
@ -91,62 +86,17 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.login-modal.modal-body:not(.hidden).second-factor {
|
|
||||||
.login-left-side {
|
|
||||||
max-width: 350px;
|
|
||||||
}
|
|
||||||
.modal-footer {
|
|
||||||
margin-top: 1em;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// styles used on
|
// styles used on
|
||||||
// login modal only
|
// login modal only
|
||||||
.login-modal:not(.hidden) {
|
.login-modal:not(.hidden) {
|
||||||
padding: 0 !important;
|
padding: 0 !important;
|
||||||
&.has-alt-auth {
|
.login-modal-body.has-alt-auth {
|
||||||
min-width: 700px;
|
min-width: 700px;
|
||||||
.login-left-side {
|
.login-left-side {
|
||||||
align-self: stretch;
|
align-self: stretch;
|
||||||
width: calc(60% - 4em);
|
width: calc(60% - 4em);
|
||||||
padding: 3em 3em 2.5em;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.login-left-side {
|
|
||||||
background: var(--secondary);
|
|
||||||
width: calc(100% - 4em);
|
|
||||||
display: flex;
|
|
||||||
flex-direction: column;
|
|
||||||
padding: 3em 3em 2.5em;
|
|
||||||
.login-welcome-header {
|
|
||||||
.login-title {
|
|
||||||
line-height: $line-height-small;
|
|
||||||
font-size: $font-up-7;
|
|
||||||
}
|
|
||||||
.login-subheader {
|
|
||||||
font-size: 1.125em !important;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#credentials {
|
|
||||||
display: flex;
|
|
||||||
flex-direction: column;
|
|
||||||
align-items: flex-start !important;
|
|
||||||
}
|
|
||||||
#login-form {
|
|
||||||
margin: 3em 0 1.25em 0;
|
|
||||||
}
|
|
||||||
.modal-footer {
|
|
||||||
display: flex;
|
|
||||||
flex-direction: row;
|
|
||||||
width: 100%;
|
|
||||||
padding: 0;
|
|
||||||
border: 0;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
.login-right-side {
|
.login-right-side {
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
&.has-alt-auth .login-right-side {
|
|
||||||
width: 35%;
|
width: 35%;
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
|
@ -169,6 +119,39 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
.login-left-side {
|
||||||
|
background: var(--secondary);
|
||||||
|
width: calc(100% - 4em);
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
padding: 3em 3em 2.5em;
|
||||||
|
.login-welcome-header {
|
||||||
|
.login-title {
|
||||||
|
line-height: $line-height-small;
|
||||||
|
font-size: $font-up-6;
|
||||||
|
}
|
||||||
|
.login-subheader {
|
||||||
|
font-size: 1.125em !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#credentials {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: flex-start !important;
|
||||||
|
}
|
||||||
|
#login-form {
|
||||||
|
margin: 3em 0 1.25em 0;
|
||||||
|
}
|
||||||
|
.modal-footer {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: row;
|
||||||
|
width: 100%;
|
||||||
|
padding: 0;
|
||||||
|
border: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
.modal-body,
|
.modal-body,
|
||||||
#credentials {
|
#credentials {
|
||||||
display: flex;
|
display: flex;
|
||||||
|
@ -180,7 +163,7 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.login-modal.second-factor.modal-body {
|
.login-modal-body.second-factor {
|
||||||
max-width: 30em;
|
max-width: 30em;
|
||||||
.login-left-side {
|
.login-left-side {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
|
@ -191,6 +174,20 @@
|
||||||
#new-account-link {
|
#new-account-link {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
.modal-footer {
|
||||||
|
margin-top: 1em;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.login-form {
|
||||||
|
.tip {
|
||||||
|
&:not(:empty) {
|
||||||
|
min-height: 1.75em;
|
||||||
|
&.bad .svg-icon {
|
||||||
|
vertical-align: middle;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// styles used on the
|
// styles used on the
|
||||||
|
@ -200,14 +197,17 @@
|
||||||
.create-account {
|
.create-account {
|
||||||
position: relative;
|
position: relative;
|
||||||
.modal-body:not(.reorder-categories):not(.poll-ui-builder):not(.poll-breakdown) {
|
.modal-body:not(.reorder-categories):not(.poll-ui-builder):not(.poll-breakdown) {
|
||||||
max-height: 65vh !important;
|
max-height: 70vh !important;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
.modal-footer {
|
||||||
|
padding: 2em 3em;
|
||||||
|
}
|
||||||
.has-alt-auth .create-account-form {
|
.has-alt-auth .create-account-form {
|
||||||
display: grid;
|
display: grid;
|
||||||
grid-template-columns: 65% 35%;
|
grid-template-columns: 65% 35%;
|
||||||
grid-template-rows: 20% 80%;
|
grid-template-rows: auto 1fr;
|
||||||
grid-template-areas:
|
grid-template-areas:
|
||||||
"header login-buttons"
|
"header login-buttons"
|
||||||
"form login-buttons";
|
"form login-buttons";
|
||||||
|
@ -216,6 +216,22 @@
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
|
position: relative;
|
||||||
|
&:after {
|
||||||
|
content: "";
|
||||||
|
display: block;
|
||||||
|
position: absolute;
|
||||||
|
width: 65%;
|
||||||
|
pointer-events: none;
|
||||||
|
bottom: 0;
|
||||||
|
left: 0;
|
||||||
|
height: 1em;
|
||||||
|
background-image: linear-gradient(
|
||||||
|
to bottom,
|
||||||
|
rgba(var(--secondary-rgb), 0),
|
||||||
|
rgba(var(--secondary-rgb), 1)
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
.create-account-login-buttons {
|
.create-account-login-buttons {
|
||||||
display: none;
|
display: none;
|
||||||
|
@ -226,6 +242,7 @@
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
h3 {
|
h3 {
|
||||||
color: var(--secondary);
|
color: var(--secondary);
|
||||||
text-align: center;
|
text-align: center;
|
||||||
|
@ -234,9 +251,6 @@
|
||||||
button:first-of-type {
|
button:first-of-type {
|
||||||
margin-top: 0;
|
margin-top: 0;
|
||||||
}
|
}
|
||||||
button {
|
|
||||||
margin-bottom: 1em;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.modal-body {
|
.modal-body {
|
||||||
|
@ -245,9 +259,11 @@
|
||||||
}
|
}
|
||||||
.login-welcome-header {
|
.login-welcome-header {
|
||||||
grid-area: header;
|
grid-area: header;
|
||||||
padding: 1em;
|
padding: 3em 3em 1em;
|
||||||
|
|
||||||
.login-title {
|
.login-title {
|
||||||
font-size: 2.75em;
|
font-size: $font-up-6;
|
||||||
|
line-height: $line-height-medium;
|
||||||
}
|
}
|
||||||
.login-subheader {
|
.login-subheader {
|
||||||
font-size: 1.125em !important;
|
font-size: 1.125em !important;
|
||||||
|
@ -264,27 +280,11 @@
|
||||||
.has-alt-auth .login-form,
|
.has-alt-auth .login-form,
|
||||||
.login-form {
|
.login-form {
|
||||||
background: var(--secondary);
|
background: var(--secondary);
|
||||||
padding: 1em;
|
padding: 2em 3em 0;
|
||||||
|
|
||||||
grid-area: form;
|
grid-area: form;
|
||||||
overflow-y: scroll;
|
overflow-y: scroll;
|
||||||
&:after {
|
|
||||||
content: "";
|
|
||||||
display: block;
|
|
||||||
position: absolute;
|
|
||||||
width: 65%;
|
|
||||||
pointer-events: none;
|
|
||||||
z-index: 100;
|
|
||||||
margin-left: -1em;
|
|
||||||
height: 1em;
|
|
||||||
}
|
|
||||||
&:after {
|
|
||||||
bottom: 93px;
|
|
||||||
background-image: linear-gradient(
|
|
||||||
to bottom,
|
|
||||||
rgba(var(--secondary-rgb), 0),
|
|
||||||
rgba(var(--secondary-rgb), 1)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
.input-group {
|
.input-group {
|
||||||
margin-bottom: 1em;
|
margin-bottom: 1em;
|
||||||
input {
|
input {
|
||||||
|
@ -363,17 +363,6 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.login-form {
|
|
||||||
.tip {
|
|
||||||
&:not(:empty) {
|
|
||||||
min-height: 1.75em;
|
|
||||||
&.bad .svg-icon {
|
|
||||||
vertical-align: middle;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.password-reset,
|
.password-reset,
|
||||||
.email-login,
|
.email-login,
|
||||||
.invites-show {
|
.invites-show {
|
||||||
|
|
|
@ -17,6 +17,14 @@
|
||||||
padding: 0;
|
padding: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
label {
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.tip:not(:empty) {
|
||||||
|
min-height: 1.4em; // prevents height jump when tips appear
|
||||||
|
}
|
||||||
|
|
||||||
.login-welcome-header {
|
.login-welcome-header {
|
||||||
padding: 1.5em 1em;
|
padding: 1.5em 1em;
|
||||||
margin: 0 auto;
|
margin: 0 auto;
|
||||||
|
@ -65,7 +73,7 @@
|
||||||
|
|
||||||
.input-group {
|
.input-group {
|
||||||
input {
|
input {
|
||||||
height: 2.25em;
|
height: 2.5em;
|
||||||
margin-bottom: 0.25em;
|
margin-bottom: 0.25em;
|
||||||
}
|
}
|
||||||
margin-bottom: 1em;
|
margin-bottom: 1em;
|
||||||
|
@ -121,6 +129,7 @@
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
margin: 0 auto;
|
margin: 0 auto;
|
||||||
font-size: $font-down-1;
|
font-size: $font-down-1;
|
||||||
|
padding: 1.25em;
|
||||||
}
|
}
|
||||||
|
|
||||||
.alert.alert-error {
|
.alert.alert-error {
|
||||||
|
|
Loading…
Reference in New Issue