From 0f2f19c65fbea41c316ceff74b75cbc3c8ad66f3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julius=20H=C3=A4rtl?= Date: Fri, 11 Aug 2017 15:11:47 +0200 Subject: [PATCH 1/3] Use separate element color in theming MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This way we can use a grey color when the primary color is to bright Signed-off-by: Julius Härtl --- apps/theming/css/theming.scss | 12 ++++++------ apps/theming/lib/ThemingDefaults.php | 1 + core/css/inputs.scss | 19 ++++++++++--------- core/css/variables.scss | 1 + 4 files changed, 18 insertions(+), 15 deletions(-) diff --git a/apps/theming/css/theming.scss b/apps/theming/css/theming.scss index 0d4abb7fb67..b2f70c1350d 100644 --- a/apps/theming/css/theming.scss +++ b/apps/theming/css/theming.scss @@ -61,8 +61,8 @@ } input.primary { - background-color: nc-lighten($color-primary, .9); - border: 1px solid $color-primary; + background-color: $color-primary-element; + border: 1px solid $color-primary-text; color: $color-primary-text; } @@ -94,16 +94,16 @@ input.primary { background-color: nc-darken($color-primary, 10%); } input[type='checkbox'].checkbox--white + label:before { - border-color: nc-darken($color-primary, 40%) !important; + border-color: nc-darken($color-primary-element, 40%) !important; } input[type='checkbox'].checkbox--white:not(:disabled):not(:checked) + label:hover:before, input[type='checkbox'].checkbox--white:focus + label:before { - border-color: nc-darken($color-primary, 30%) !important; + border-color: nc-darken($color-primary-element, 30%) !important; } input[type='checkbox'].checkbox--white:checked + label:before { - border-color: nc-darken($color-primary, 30%) !important; + border-color: nc-darken($color-primary-element, 30%) !important; background-image: url('../../../core/img/actions/checkbox-mark.svg'); - background-color: nc-darken($color-primary, 30%) !important; + background-color: nc-darken($color-primary-element, 30%) !important; } } @else { #submit { diff --git a/apps/theming/lib/ThemingDefaults.php b/apps/theming/lib/ThemingDefaults.php index dff24ee7960..6b166d897b0 100644 --- a/apps/theming/lib/ThemingDefaults.php +++ b/apps/theming/lib/ThemingDefaults.php @@ -238,6 +238,7 @@ class ThemingDefaults extends \OC_Defaults { } $variables['color-primary'] = $this->getColorPrimary(); $variables['color-primary-text'] = $colorPrimaryText; + $variables['color-primary-element'] = $this->util->elementColor($this->getColorPrimary()); } if ($this->config->getAppValue('theming', 'backgroundMime', null) === 'backgroundColor') { diff --git a/core/css/inputs.scss b/core/css/inputs.scss index 13a164e13f2..42b9f63b7e2 100644 --- a/core/css/inputs.scss +++ b/core/css/inputs.scss @@ -50,7 +50,7 @@ textarea, &:focus, &.active { /* active class used for multiselect */ - border-color: $color-primary; + border-color: $color-primary-element; outline: none; } &:active { @@ -66,21 +66,21 @@ textarea, } /* Primary action button, use sparingly */ &.primary { - border: 1px solid $color-primary; - background-color: rgba($color-primary, .7); + border: 1px solid $color-primary-text; + background-color: $color-primary-element; color: $color-primary-text; cursor: pointer; &:not(:disabled) { &:hover, &:focus { - background-color: rgba($color-primary, .85); + background-color: rgba($color-primary-element, .85); } &:active { - background-color: rgba($color-primary, .7); + background-color: rgba($color-primary-element, .7); } } &:disabled { - background-color: rgba($color-primary, .7); + background-color: rgba($color-primary-element, .7); color: nc-lighten($color-main-text, 73%); } } @@ -225,15 +225,15 @@ input { } &:not(:disabled):not(:checked) + label:hover:before, &:focus + label:before { - border-color: $color-primary; + border-color: $color-primary-element; } &:checked + label:before, &.checkbox:indeterminate + label:before { /* ^ :indeterminate have a strange behavior on radio, so we respecified the checkbox class again to be safe */ box-shadow: inset 0px 0px 0px 2px $color-main-background; - background-color: $color-primary; - border-color: $color-primary + background-color: $color-primary-element; + border-color: $color-primary-element; } &:disabled + label:before { border: 1px solid nc-lighten($color-main-text, 53%); @@ -494,6 +494,7 @@ input { .ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: none; background: nc-darken($color-main-background, 3%); + color: $color-primary-element; } /* Animation */ diff --git a/core/css/variables.scss b/core/css/variables.scss index 47c8e1a27f8..d12109c5298 100644 --- a/core/css/variables.scss +++ b/core/css/variables.scss @@ -5,6 +5,7 @@ $color-primary-text: #ffffff; $color-error: #e9322d; $color-warning: #ffcc44; $color-success: #46ba61; +$color-primary-element: $color-primary; @function nc-darken($color, $value) { @return darken($color, $value); From ed11c0d6e29e0fb6c8f42b81c4a1664693d87a28 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julius=20H=C3=A4rtl?= Date: Fri, 1 Sep 2017 23:06:44 +0200 Subject: [PATCH 2/3] Fix tests for primary element color MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Julius Härtl --- apps/theming/css/theming.scss | 2 +- apps/theming/tests/ThemingDefaultsTest.php | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/apps/theming/css/theming.scss b/apps/theming/css/theming.scss index b2f70c1350d..1a34d63b153 100644 --- a/apps/theming/css/theming.scss +++ b/apps/theming/css/theming.scss @@ -62,7 +62,7 @@ input.primary { background-color: $color-primary-element; - border: 1px solid $color-primary-text; + border: 1px solid $color-primary; color: $color-primary-text; } diff --git a/apps/theming/tests/ThemingDefaultsTest.php b/apps/theming/tests/ThemingDefaultsTest.php index 057229483e9..590ec7e1a91 100644 --- a/apps/theming/tests/ThemingDefaultsTest.php +++ b/apps/theming/tests/ThemingDefaultsTest.php @@ -507,8 +507,10 @@ class ThemingDefaultsTest extends TestCase { $this->config->expects($this->at(7))->method('getAppValue')->with('theming', 'color', null)->willReturn($this->defaults->getColorPrimary()); $this->config->expects($this->at(8))->method('getAppValue')->with('theming', 'color', $this->defaults->getColorPrimary())->willReturn($this->defaults->getColorPrimary()); $this->config->expects($this->at(9))->method('getAppValue')->with('theming', 'color', $this->defaults->getColorPrimary())->willReturn($this->defaults->getColorPrimary()); + $this->config->expects($this->at(10))->method('getAppValue')->with('theming', 'color', $this->defaults->getColorPrimary())->willReturn($this->defaults->getColorPrimary()); $this->util->expects($this->any())->method('invertTextColor')->with($this->defaults->getColorPrimary())->willReturn(false); + $this->util->expects($this->any())->method('elementColor')->with($this->defaults->getColorPrimary())->willReturn('#aaaaaa'); $this->cache->expects($this->once())->method('get')->with('getScssVariables')->willReturn(null); $folder = $this->createMock(ISimpleFolder::class); $file = $this->createMock(ISimpleFile::class); @@ -538,7 +540,8 @@ class ThemingDefaultsTest extends TestCase { 'image-login-background' => "'absolute-custom-background?v=0'", 'color-primary' => $this->defaults->getColorPrimary(), 'color-primary-text' => '#ffffff', - 'image-login-plain' => 'false' + 'image-login-plain' => 'false', + 'color-primary-element' => '#aaaaaa' ]; $this->assertEquals($expected, $this->template->getScssVariables()); From 9bcf90adc876c73e8a4f287bdab59ba1f271c01c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julius=20H=C3=A4rtl?= Date: Fri, 1 Sep 2017 23:27:34 +0200 Subject: [PATCH 3/3] Cleanup theming styles to fit the new login page MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Julius Härtl --- apps/theming/css/theming.scss | 57 +++++++++++++++-------------------- 1 file changed, 25 insertions(+), 32 deletions(-) diff --git a/apps/theming/css/theming.scss b/apps/theming/css/theming.scss index 1a34d63b153..c9c2e6c8c7e 100644 --- a/apps/theming/css/theming.scss +++ b/apps/theming/css/theming.scss @@ -10,7 +10,6 @@ color: $color-primary-text; } -/* invert header icons on bright background */ @if (lightness($color-primary) > 50) { .searchbox input[type="search"] { background: transparent url('../../../core/img/actions/search.svg') no-repeat 6px center; @@ -29,6 +28,31 @@ #appmenu .icon-more-white { background-image: url('../../../core/img/actions/more.svg'); } + + #body-login { + + input { + border: 1px solid nc-lighten($color-primary-text, 50%); + } + input.primary { + background-color: $color-primary; + } + a, label, p { + color: $color-primary-text !important; + } + input[type='checkbox'].checkbox--white + label:before { + border-color: nc-darken($color-primary-element, 40%) !important; + } + input[type='checkbox'].checkbox--white:not(:disabled):not(:checked) + label:hover:before, + input[type='checkbox'].checkbox--white:focus + label:before { + border-color: nc-darken($color-primary-element, 30%) !important; + } + input[type='checkbox'].checkbox--white:checked + label:before { + border-color: nc-darken($color-primary-element, 30%) !important; + background-image: url('../../../core/img/actions/checkbox-mark.svg'); + background-color: nc-darken($color-primary-element, 30%) !important; + } + } } /* Colorized svg images */ @@ -84,37 +108,6 @@ input.primary { color: $color-primary-text !important; } - @if (lightness($color-primary) > 50) { - #submit { - border-color: nc-darken($color-primary, 20%); - background-color: nc-darken($color-primary, 20%); - } - #submit:hover { - border-color: nc-darken($color-primary, 10%); - background-color: nc-darken($color-primary, 10%); - } - input[type='checkbox'].checkbox--white + label:before { - border-color: nc-darken($color-primary-element, 40%) !important; - } - input[type='checkbox'].checkbox--white:not(:disabled):not(:checked) + label:hover:before, - input[type='checkbox'].checkbox--white:focus + label:before { - border-color: nc-darken($color-primary-element, 30%) !important; - } - input[type='checkbox'].checkbox--white:checked + label:before { - border-color: nc-darken($color-primary-element, 30%) !important; - background-image: url('../../../core/img/actions/checkbox-mark.svg'); - background-color: nc-darken($color-primary-element, 30%) !important; - } - } @else { - #submit { - border-color: nc-lighten($color-primary, 20%); - background-color: nc-lighten($color-primary, 20%); - } - #submit:hover { - border-color: nc-lighten($color-primary, 10%); - background-color: nc-lighten($color-primary, 10%); - } - } } }