diff --git a/ghost/admin/app/helpers/gh-count-characters.js b/ghost/admin/app/helpers/gh-count-characters.js
index 107d2ea273..5eb37d9fc7 100644
--- a/ghost/admin/app/helpers/gh-count-characters.js
+++ b/ghost/admin/app/helpers/gh-count-characters.js
@@ -16,9 +16,9 @@ export function countCharacters(params) {
el.className = 'word-count';
if (length > 180) {
- el.style.color = '#E25440';
+ el.style.color = '#f05230';
} else {
- el.style.color = '#9E9D95';
+ el.style.color = '#738a94';
}
el.innerHTML = 200 - length;
diff --git a/ghost/admin/app/styles/layouts/user.css b/ghost/admin/app/styles/layouts/user.css
index f35ffb0b2b..35f6673fd1 100644
--- a/ghost/admin/app/styles/layouts/user.css
+++ b/ghost/admin/app/styles/layouts/user.css
@@ -39,37 +39,16 @@
padding: 0;
}
-@media (min-width: 901px) {
- .content.settings-user {
- padding: 0 40px;
- }
-}
-
.user-cover {
- position: relative;
+ display: block;
overflow: hidden;
margin: 0;
- width: auto;
+ width: 100%;
height: 300px;
+ margin-bottom: 30px;
background: #fafafa no-repeat center center;
background-size: cover;
-}
-
-@media (max-width: 900px) {
- .user-cover {
- margin: 0;
- }
-}
-
-.user-cover:after {
- /* Gradient overlay */
- content: "";
- position: absolute;
- right: 0;
- bottom: 0;
- left: 0;
- height: 110px;
- background: linear-gradient(transparent, rgba(0, 0, 0, 0.18));
+ border-radius: 6px;
}
.user-cover-edit {
@@ -96,62 +75,11 @@
/* Edit user
/* ---------------------------------------------------------- */
-@media (min-width: 651px) {
- .first-form-group {
- margin-right: 20px;
- padding-left: 40px;
- }
- .first-form-group input {
- max-width: 100%;
- }
-}
-
-.user-details-top {
- position: relative;
-}
-
-@media (max-width: 650px) {
- .user-details-top {
- margin-top: 40px;
- margin-bottom: 0;
- }
-}
-
-@media (min-width: 651px) {
- .user-details-top {
- margin-top: -91px;
- margin-bottom: 0;
- padding: 0;
- }
- .user-details-top p {
- color: #fff;
- }
- .user-details-top label[for="user-name"] {
- color: transparent;
- }
- .user-details-top .user-name {
- border-color: #fff;
- }
-}
-
.user-profile {
position: relative;
z-index: 1;
}
-@media (min-width: 651px) {
- .user-profile {
- padding-right: 20px;
- padding-left: 143px;
- }
-}
-
-@media (max-width: 650px) {
- .user-profile fieldset {
- padding: 0 40px;
- }
-}
-
@media (max-width: 550px) {
.user-profile fieldset {
padding: 0 15px;
@@ -159,7 +87,7 @@
}
.user-profile textarea {
- min-width: 240px;
+ min-width: 100%;
}
@@ -168,43 +96,24 @@
.user-image {
position: absolute;
+ top: 200px;
+ left: 0;
z-index: 2;
- display: block;
- float: left;
- overflow: hidden;
- margin-right: 20px;
- margin-left: -6px;
- padding: 3px;
- width: 126px;
- height: 126px;
- background: #fff;
- border-radius: 100%;
+ margin: 0;
+ padding: 0;
+ width: 100px;
+ height: 100px;
+ border-radius: 0 6px;
text-align: center;
}
-@media (min-width: 651px) {
- .user-image {
- top: -19px;
- left: -98px;
- }
-}
-
-@media (max-width: 650px) {
- .user-image {
- top: -135px;
- left: 50%;
- margin-right: 0;
- margin-left: -63px;
- }
-}
-
.user-image .img {
display: block;
- width: 120px;
- height: 120px;
+ width: 100%;
+ height: 100%;
background-position: center center;
background-size: cover;
- border-radius: 100%;
+ border-radius: 0 6px;
}
.user-image:hover .edit-user-image {
@@ -213,17 +122,16 @@
.edit-user-image {
position: absolute;
- top: 3px;
- right: 3px;
- bottom: 3px;
- left: 3px;
- width: calc(100% - 6px);
+ top: 0;
+ left: 0;
+ width: 100%;
background: rgba(0, 0, 0, 0.5);
- border-radius: 100%;
+ border-radius: 0 6px;
color: #fff;
text-decoration: none;
text-transform: uppercase;
- line-height: 120px;
+ font-size: 12px;
+ line-height: 100px;
opacity: 0;
transition: opacity 0.3s ease;
}
diff --git a/ghost/admin/app/templates/team/user.hbs b/ghost/admin/app/templates/team/user.hbs
index 2b5b3f5284..e834c17bf9 100644
--- a/ghost/admin/app/templates/team/user.hbs
+++ b/ghost/admin/app/templates/team/user.hbs
@@ -84,171 +84,165 @@
-
+
+
+
{{! user details form }}
-
- {{!-- If an administrator is viewing Owner's profile or we're using Ghost.org OAuth then hide inputs for change password --}}
- {{#if canChangePassword}}
-
{{! change password form }}
- {{/if}}
- {{!-- when using Ghost OAuth, users trying to change email/pass need to visit my.ghost.org --}}
- {{#if showMyGhostLink}}
-
- {{/if}}
+ {{! user details form }}
+
+ {{!-- If an administrator is viewing Owner's profile or we're using Ghost.org OAuth then hide inputs for change password --}}
+ {{#if canChangePassword}}
+
{{! change password form }}
+ {{/if}}
+
+ {{!-- when using Ghost OAuth, users trying to change email/pass need to visit my.ghost.org --}}
+ {{#if showMyGhostLink}}
+
+ {{/if}}
+
+
diff --git a/ghost/admin/tests/acceptance/team-test.js b/ghost/admin/tests/acceptance/team-test.js
index a035f58086..994c92c96d 100644
--- a/ghost/admin/tests/acceptance/team-test.js
+++ b/ghost/admin/tests/acceptance/team-test.js
@@ -469,22 +469,22 @@ describe('Acceptance: Team', function () {
await visit('/team/test-1');
expect(currentURL(), 'currentURL').to.equal('/team/test-1');
- expect(find('.user-details-top .first-form-group input.user-name').val(), 'current user name').to.equal('Test User');
+ expect(find('.user-details-bottom .first-form-group input.user-name').val(), 'current user name').to.equal('Test User');
// test empty user name
- await fillIn('.user-details-top .first-form-group input.user-name', '');
- await triggerEvent('.user-details-top .first-form-group input.user-name', 'blur');
+ await fillIn('.user-details-bottom .first-form-group input.user-name', '');
+ await triggerEvent('.user-details-bottom .first-form-group input.user-name', 'blur');
- expect(find('.user-details-top .first-form-group').hasClass('error'), 'username input is in error state with blank input').to.be.true;
+ expect(find('.user-details-bottom .first-form-group').hasClass('error'), 'username input is in error state with blank input').to.be.true;
// test too long user name
- await fillIn('.user-details-top .first-form-group input.user-name', new Array(160).join('a'));
- await triggerEvent('.user-details-top .first-form-group input.user-name', 'blur');
+ await fillIn('.user-details-bottom .first-form-group input.user-name', new Array(160).join('a'));
+ await triggerEvent('.user-details-bottom .first-form-group input.user-name', 'blur');
- expect(find('.user-details-top .first-form-group').hasClass('error'), 'username input is in error state with too long input').to.be.true;
+ expect(find('.user-details-bottom .first-form-group').hasClass('error'), 'username input is in error state with too long input').to.be.true;
// reset name field
- await fillIn('.user-details-top .first-form-group input.user-name', 'Test User');
+ await fillIn('.user-details-bottom .first-form-group input.user-name', 'Test User');
expect(find('.user-details-bottom input[name="user"]').val(), 'slug value is default').to.equal('test-1');
@@ -501,7 +501,7 @@ describe('Acceptance: Team', function () {
await fillIn('.user-details-bottom input[name="email"]', 'thisisnotanemail');
await triggerEvent('.user-details-bottom input[name="email"]', 'blur');
- expect(find('.user-details-bottom .form-group:nth-of-type(2)').hasClass('error'), 'email input should be in error state with invalid email').to.be.true;
+ expect(find('.user-details-bottom .form-group:nth-of-type(3)').hasClass('error'), 'email input should be in error state with invalid email').to.be.true;
await fillIn('.user-details-bottom input[name="email"]', 'test@example.com');
await fillIn('#user-location', new Array(160).join('a'));
diff --git a/ghost/admin/tests/unit/helpers/gh-count-characters-test.js b/ghost/admin/tests/unit/helpers/gh-count-characters-test.js
index fabde5f636..a299245556 100644
--- a/ghost/admin/tests/unit/helpers/gh-count-characters-test.js
+++ b/ghost/admin/tests/unit/helpers/gh-count-characters-test.js
@@ -3,8 +3,8 @@ import {describe, it} from 'mocha';
import {countCharacters} from 'ghost-admin/helpers/gh-count-characters';
describe('Unit: Helper: gh-count-characters', function() {
- let defaultStyle = 'color: rgb(158, 157, 149);';
- let errorStyle = 'color: rgb(226, 84, 64);';
+ let defaultStyle = 'color: rgb(115, 138, 148);';
+ let errorStyle = 'color: rgb(240, 82, 48);';
it('counts remaining chars', function() {
let result = countCharacters(['test']);