Compare commits

...

43 Commits

Author SHA1 Message Date
mrliptontea
5e671bb9b7 Release v2.11.0 2020-05-08 23:32:34 +01:00
Grzegorz Rajchman
604a00561b Merge pull request #190 from mrliptontea/redmineup-improvements
Bulk improvements
2020-05-08 23:31:01 +01:00
mrliptontea
1d5b42235e Add Redmine Banner styles 2020-05-08 23:28:42 +01:00
mrliptontea
2b492be04a RedmineUP improvements 2020-05-08 23:28:27 +01:00
mrliptontea
4245d5daf6 Add table icon to jstoolbar 2020-04-25 18:40:01 +01:00
mrliptontea
06e7e4fded Fix checkbox padding when table borders are enabled 2020-04-25 18:38:45 +01:00
mrliptontea
36000bd02c Restore $color-priorities 2020-04-25 18:35:37 +01:00
Grzegorz Rajchman
510a32ec41 Merge pull request #180 from mrliptontea/issue-179-full-screen-mode-issues
Fix #179 full screen mode issues
2020-04-14 21:14:50 +01:00
mrliptontea
80105407af Fix #179 full screen mode issues 2020-04-14 21:12:53 +01:00
Grzegorz Rajchman
6e9e834816 Merge pull request #178 from mrliptontea/issue-177-icon-lose-hover
Fix #177 change styling for icon-only buttons
2020-04-13 20:13:32 +01:00
mrliptontea
0d1daf1a22 Fix #177 change styling for icon-only buttons 2020-04-13 20:05:18 +01:00
mrliptontea
e7500035e3 Release v2.10.2 2020-04-09 15:37:37 +01:00
Grzegorz Rajchman
d3ed59dc9b Merge pull request #176 from mrliptontea/fix-175-target-note-edit
Fix target note cannot be edited
2020-04-09 09:21:58 +01:00
mrliptontea
edbe4feca8 Fix #175 target note cannot be edited 2020-04-09 09:20:38 +01:00
mrliptontea
942f23f2cb Release v2.10.1 2020-04-06 18:53:33 +01:00
Grzegorz Rajchman
3fc4660203 Merge pull request #163 from mrliptontea/issue-160-checklist-menu-hover
Fix #160 checklist plugin menu highlight color
2020-04-06 18:52:50 +01:00
mrliptontea
1fa4a87da7 Fix #160 checklist plugin menu highlight color 2020-04-06 18:49:52 +01:00
mrliptontea
07a08db560 Release v2.10.0 2020-04-05 22:17:14 +01:00
Grzegorz Rajchman
2eb5d83f59 Merge pull request #174 from mrliptontea/issues-169-170-171-172
* Fix #172 Collapsed/expended icons for completed versions.
* Fix #171 "Display" label in Gantt option.
* Fix #170 radio buttons in projects options.
* Fix #169 styles in the spent time tab.
* Change lightness of shades 50 and 950.
* Change loader styles.
* Change rouge syntax highlighter color scheme.
2020-04-05 22:15:01 +01:00
mrliptontea
1bdfab795a Change rouge syntax highlighter color scheme 2020-04-05 22:10:20 +01:00
mrliptontea
aa4c59a48c Fix some styling issues in Redmine 4.
* Fix #172 Collapsed/expended icons for completed versions.
* Fix #171 "Display" label in Gantt option.
* Fix #170 radio buttons in projects options.
* Fix #169 styles in the spent time tab.
* Change lightness of shades 50 and 950.
* Change loader styles.
2020-04-05 18:53:53 +01:00
Grzegorz Rajchman
aaddd2e10b Merge pull request #168 from mrliptontea/issues-148-150-dashboard-agile-plugins
Fix styling issues in Dashboard and Agile plugins
2020-03-28 13:10:05 +00:00
mrliptontea
5c14dbbf62 Simpler workflow trigger 2020-03-28 13:04:59 +00:00
mrliptontea
f8609cbbbb Fix styling issues in Dashboard and Agile plugins
- Fix #150 styling for query totals and expander in Agile plugin.
- Fix #148 full screen view for Dashboard plugin.
2020-03-28 13:01:29 +00:00
Grzegorz Rajchman
6443eba8c2 Merge pull request #166 from mrliptontea/issue-164-responsive-theme-not-applied
Fix #164 Apply responsive override more generally
2020-03-28 11:37:00 +00:00
mrliptontea
70c88722fb Fix #164 Apply responsive override more generally 2020-03-27 18:15:12 +00:00
Grzegorz Rajchman
4b10532cea Upgrade packages and improve linter action (#167) 2020-03-27 18:14:49 +00:00
Grzegorz Rajchman
77a9633984 Merge pull request #162 from mrliptontea/issue-159/long-text-wrapping
Fix #159 wrapping long text in issue attributes
2020-03-15 21:35:01 +00:00
mrliptontea
92e92e75b9 Fix #159 wrapping long text in issue attributes 2020-03-15 21:29:40 +00:00
Grzegorz Rajchman
e4c69d5d86 Merge pull request #161 from mrliptontea/dependabot/npm_and_yarn/acorn-7.1.1
Bump acorn from 7.1.0 to 7.1.1
2020-03-15 21:25:34 +00:00
dependabot[bot]
4d82879d90 Bump acorn from 7.1.0 to 7.1.1
Bumps [acorn](https://github.com/acornjs/acorn) from 7.1.0 to 7.1.1.
- [Release notes](https://github.com/acornjs/acorn/releases)
- [Commits](https://github.com/acornjs/acorn/compare/7.1.0...7.1.1)

Signed-off-by: dependabot[bot] <support@github.com>
2020-03-13 21:27:39 +00:00
mrliptontea
a2b49b6ff1 Release v2.9.1 2020-02-22 14:55:25 +00:00
mrliptontea
205109ac30 Fix roadmap badge positioning 2020-02-22 14:54:33 +00:00
mrliptontea
e981dc4ec0 Merge branch '1resu-patch-1' 2020-02-22 14:45:55 +00:00
mrliptontea
955aca022e Build updated JS 2020-02-22 14:41:40 +00:00
1resu
164391c6c2 Fix url.indexOf is Not a Function Error
The sidebar toogler isn't working with newer jquery versions (https://jquery.com/upgrade-guide/3.0/#breaking-change-load-unload-and-error-removed)
2020-02-20 22:20:12 +01:00
mrliptontea
e5b9b5fdf9 Release v2.9.0 2020-01-30 21:14:20 +00:00
Grzegorz Rajchman
e7e68125b3 Merge pull request #154 from mrliptontea/resolve-issues
Resolve issues
2020-01-30 20:59:03 +00:00
mrliptontea
57a60673a7 Resolve issues
* Fixed #141: improved styling for issue edit form.
* Fixed #142: TOC assumes `left` by default, also added new variables to control how it looks.
* Fixed #143: `$main-menu-bg-hover` is now being used.
* Resolved #144: added `$main-menu-bg-active` variable.
* Resolved #145: added `$table-list-header-bg` variable.
* Fixed #147: corrected forum edit attached files icon.
* Fixed #153: improved styling for `label.block`.
2020-01-30 20:55:46 +00:00
mrliptontea
136cf02394 Update dependencies 2020-01-28 20:20:28 +00:00
mrliptontea
9f7d02e511 Update badges 2019-08-13 23:04:19 +01:00
Grzegorz Rajchman
6b64af35a5 Merge pull request #137 from mrliptontea/actions
Set up actions
2019-08-13 22:46:28 +01:00
mrliptontea
e716b92e67 Set up actions 2019-08-13 22:42:48 +01:00
45 changed files with 2907 additions and 1714 deletions

10
.eslintrc.js Normal file
View File

@@ -0,0 +1,10 @@
module.exports = {
"extends": "standard",
"globals": {
"$": "readonly",
"localStorage": "readonly",
},
"ignorePatterns": [
"/javascripts/",
],
};

31
.github/workflows/lint.yml vendored Normal file
View File

@@ -0,0 +1,31 @@
name: Run linters
on: push
jobs:
lint:
runs-on: ubuntu-18.04
steps:
- name: Checkout
uses: actions/checkout@v1
- name: Use Node.js 10.x
uses: actions/setup-node@v1
with:
node-version: "10.x"
- name: Install npm dependencies
run: npm ci
- name: Run linters
uses: samuelmeuli/lint-action@v1
with:
github_token: ${{ secrets.github_token }}
eslint: true
eslint_dir: "src/javascripts"
stylelint: true
stylelint_dir: "src/sass"
- name: Check build
run: npm run build

View File

@@ -1,11 +0,0 @@
dist: xenial
language: node_js
node_js:
- 10
cache:
directories:
- node_modules
install:
- npm install
script:
- npm run lint --silent

View File

@@ -2,7 +2,7 @@
A free Redmine theme for modern browsers.
![The MIT License](https://img.shields.io/badge/license-MIT-584492.svg) [![Build Status](https://travis-ci.com/mrliptontea/PurpleMine2.svg?branch=master)](https://travis-ci.com/mrliptontea/PurpleMine2) [![Issues](https://img.shields.io/github/issues/mrliptontea/PurpleMine2.svg)](https://github.com/mrliptontea/PurpleMine2/issues) [![JavaScript Style Guide](https://img.shields.io/badge/code%20style-standard-brightgreen.svg)](http://standardjs.com/)
![The MIT License](https://img.shields.io/badge/license-MIT-584492.svg) [![JavaScript Style Guide](https://img.shields.io/badge/code%20style-standard-brightgreen.svg)](http://standardjs.com/) [![Build Status](https://img.shields.io/endpoint.svg?url=https://actions-badge.atrox.dev/mrliptontea/PurpleMine2/badge&label=lint&logo=none)](https://actions-badge.atrox.dev/mrliptontea/PurpleMine2/goto) [![Issues](https://img.shields.io/github/issues/mrliptontea/PurpleMine2.svg)](https://github.com/mrliptontea/PurpleMine2/issues)
---
@@ -56,10 +56,70 @@ If you need to customize styles for [Redmine Backlogs][redmine_backlogs] remembe
## Changelog
v2.11.0 (2020-05-08):
* Fixed #179: full screen mode issues when using redmine_wysiwyg_editor plugin.
* Fixed #177: changed styling for icon-only buttons to resolve weird behavior on hover.
* Added `$icon-width` variable.
* Added margin in some places like after buttons, avatars.
* Changed tooltip background to black.
* Changed top menu styles.
* Restored `$color-priorities` variable, `false` by default.
* Added `parse-length($value, $side)` function for extracting length/width from margin/padding/border.
* Fixed checkbox cell padding when issue table borders are enabled.
* Added table icon to jstoolbar styles.
* Refactored icons code.
* Improved styles for [RedmineUP](https://www.redmineup.com/pages/plugins) plugins (Agile, Checklists, CRM, Tags).
* Improved vertical alignment of certain form elements.
* Improved styles for sortable elements.
* Added new `.inline-flex` class.
* Improved styles for [Redmine Banner](https://github.com/akiko-pusu/redmine_banner) plugin.
v2.10.2 (2020-04-09):
* Fixed #175: couldn't edit note when it's URL target.
* Improved styling of some inline edit forms.
v2.10.1 (2020-04-06):
* Fixed #160: highlight color in jQuery UI menu, most notably in checklist plugin.
v2.10.0 (2020-04-05):
* Fixed #172 Collapsed/expended icons for completed versions.
* Fixed #171 "Display" label in Gantt option.
* Fixed #170 radio buttons in projects options.
* Fixed #169 styles in the spent time tab.
* Fixed #164: apply responsive overrides more generally
* Fixed #159: wrapping long text in issue attributes.
* Fixed #150: styling for query totals and expander in Agile plugin.
* Fixed #148: full screen view for Dashboard plugin.
* Fixed a "timeline" positioning in issue notes/changes.
* Changed lightness of shades 50 and 950.
* Changed loader styles.
* Changed rouge syntax highlighter color scheme.
v2.9.1 (2020-02-22):
* Merged fix #155: $.load function removed from jQuery.
* Fixed badge positioning in roadmap screen.
v2.9.0 (2020-01-30):
* Fixed #141: improved styling for issue edit form.
* Fixed #142: TOC assumes `left` by default, also added new variables to control how it looks.
* Fixed #143: `$main-menu-bg-hover` is now being used.
* Resolved #144: added `$main-menu-bg-active` variable.
* Resolved #145: added `$table-list-header-bg` variable.
* Fixed #147: corrected forum edit attached files icon.
* Fixed #153: improved styling for `label.block`.
* Added styling for clear query button.
* Improved responsive sidebar menu layout.
v2.8.0 (2019-08-13):
* Resolved #132: fixed spacing for headers on roadmap pages.
* Merged fix #136: broken layout with large image attachment
* Merged fix #136: broken layout with large image attachment.
v2.7.0 (2019-06-13):

File diff suppressed because one or more lines are too long

2163
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -1,5 +1,5 @@
{
"name": "PurpleMine2",
"name": "purplemine",
"description": "A free Redmine 2.6+ theme written in SCSS",
"keywords": [
"redmine",
@@ -20,34 +20,30 @@
"scripts": {
"build": "grunt",
"watch": "grunt watch",
"lint:js": "standard",
"lint:js": "eslint src/javascripts/",
"lint:sass": "stylelint src/sass/**/*.scss",
"lint": "npm run -S lint:js && npm run -S lint:sass"
},
"dependencies": {
"autoprefixer": "^9.6.1",
"grunt": "^1.0.4",
"autoprefixer": "^9.7.5",
"grunt": "^1.1.0",
"grunt-contrib-uglify": "^4.0.1",
"grunt-contrib-watch": "^1.1.0",
"grunt-postcss": "^0.9.0",
"grunt-sass": "^3.0.2",
"node-sass": "^4.12.0",
"sass-inline-svg": "^1.2.0"
"grunt-sass": "^3.1.0",
"node-sass": "^4.13.1",
"sass-inline-svg": "^1.2.3"
},
"devDependencies": {
"standard": "^13.1.0",
"eslint": "^6.8.0",
"eslint-config-standard": "^14.1.1",
"eslint-plugin-import": "^2.20.1",
"eslint-plugin-node": "^11.0.0",
"eslint-plugin-promise": "^4.2.1",
"eslint-plugin-standard": "^4.0.1",
"stylelint": "^10.1.0",
"stylelint-order": "^3.0.1",
"stylelint-scss": "^3.9.3"
},
"standard": {
"globals": [
"$",
"localStorage"
],
"ignore": [
"/javascripts"
]
"stylelint-order": "^3.1.1",
"stylelint-scss": "^3.16.0"
},
"browserslist": [
"last 2 versions",

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Binary file not shown.

Before

Width:  |  Height:  |  Size: 171 KiB

After

Width:  |  Height:  |  Size: 98 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 202 KiB

After

Width:  |  Height:  |  Size: 99 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 163 KiB

After

Width:  |  Height:  |  Size: 94 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 161 KiB

After

Width:  |  Height:  |  Size: 92 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 113 KiB

After

Width:  |  Height:  |  Size: 64 KiB

View File

@@ -55,7 +55,7 @@ PurpleMine.HistoryTabs = (function () {
this._ = translations[this.lang]
if (this.$history.length > 0) {
if (this.$history.length > 0 && $('#history > h3').length > 0) {
buildTabs()
markFirstOfTypes()
}

View File

@@ -44,7 +44,7 @@ PurpleMine.SidebarToggler = (function () {
// Fix issue with context menu position
if (this.$main.css('position') === 'relative') {
$(window).load(function () {
$(window).on('load', function () {
$('#context-menu').appendTo('#wrapper3')
})
}

4
src/sass/_functions.scss Normal file
View File

@@ -0,0 +1,4 @@
// Functions
// --------------------------------------------------
@import "functions/parse-length";

View File

@@ -14,6 +14,7 @@ $sidebar-position: left !default;
$clean-issues: true !default;
$color-trackers: true !default;
$color-status: true !default;
$color-priorities: false !default;
$priority-icon: true !default;
$use-gravatars: true !default;
$use-logo: false !default;
@@ -23,6 +24,7 @@ $issue-subject-large: true !default;
$enable-sidebar-toggler: true !default;
$wiki-page-more-vertical-space: true !default;
$top-menu-collapse: false !default;
$agile-board-customize: true !default;
//== Colors
@@ -43,7 +45,7 @@ $black: #000 !default;
$gray: hsl(hue($indigo), 20%, 85%) !default;
$shade-map: (
50: 90%,
50: 87.5%,
100: 80%,
200: 65%,
300: 40%,
@@ -53,7 +55,7 @@ $shade-map: (
700: 40%,
800: 65%,
900: 80%,
950: 90%
950: 87.5%
) !default;
@function shade($color, $shade: 500) {
@@ -166,6 +168,12 @@ $wiki-font-size: 16px !default;
$wiki-line-height: 1.6 !default;
$wiki-preview-bg: $body-bg !default;
$toc-bg: $gray-50 !default;
$toc-border: $gray-300 !default;
$toc-text: $text-color !default;
$toc-link: $link-color !default;
$toc-link-hover: $link-hover-color !default;
$toc-shadow: 0 1px 3px rgba($black, .07) !default;
$toc-active-link: darken($link-color, 10%) !default;
$toc-active-link-hover: shade($toc-active-link, 700) !default;
$toc-active-border: $link-color !default;
@@ -215,6 +223,7 @@ $collapsible-max-height: 10000px !default;
$table-cell-padding: 8px !default;
$table-condensed-cell-padding: 5px !default;
$table-list-header-bg: $body-bg !default;
$table-list-header-border: 0 0 2px !default;
$table-list-item-border: 0 !default;
$table-list-color-odd-rows: true !default;
@@ -230,6 +239,11 @@ $table-bg-active: $table-bg-hover !default;
$table-border-color: $gray-300 !default;
$table-color-odd-factor: if($table-list-color-odd-rows, $table-accent-factor * .8, $table-accent-factor * .5) !default;
$table-color-even-factor: if($table-list-color-even-rows, $table-accent-factor * .8, $table-accent-factor * .5) !default;
$table-color-hover-factor: $table-hover-factor * .5 !default;
$table-color-border-shade: 100 !default;
//== Issue statuses
//
@@ -296,6 +310,65 @@ $priority-default-icons-map: (
$priority-custom-icons-map: () !default;
$priority-icons-map: map-merge($priority-default-icons-map, $priority-custom-icons-map);
$priority-default-color-map: (
lowest: (
border: shade($green, $table-color-border-shade),
background: $green,
color: $text-color,
link: shade($green, 700),
),
low2: (
border: shade(mix($teal, $green), $table-color-border-shade),
background: mix($teal, $green),
color: $text-color,
link: shade(mix($teal, $green), 700),
),
low3: (
border: shade($teal, $table-color-border-shade),
background: $teal,
color: $text-color,
link: shade($teal, 700),
),
default: (
border: shade($blue, $table-color-border-shade),
background: $blue,
color: $text-color,
link: shade($blue, 700),
),
high5: (
border: shade($purple, $table-color-border-shade),
background: $purple,
color: $text-color,
link: shade($purple, 700),
),
high4: (
border: shade($orange, $table-color-border-shade),
background: $orange,
color: $text-color,
link: shade($orange, 700),
),
high3: (
border: shade(mix($red, $orange), $table-color-border-shade),
background: mix($red, $orange),
color: $text-color,
link: shade(mix($red, $orange), 700),
),
high2: (
border: shade($red, $table-color-border-shade),
background: $red,
color: $text-color,
link: shade($red, 700),
),
highest: (
border: shade($red, $table-color-border-shade),
background: $red,
color: $text-color,
link: shade($red, 700),
)
) !default;
$priority-custom-color-map: () !default;
$priority-color-map: map-merge($priority-default-color-map, $priority-custom-color-map);
//== Trackers links
//
@@ -398,6 +471,7 @@ $btn-success-border: $btn-success-bg !default;
//== Action icons
//
$icon-width: 20px !default;
$icon-opacity: .7 !default;
$icon-hover-opacity: 1 !default;
$icon-color-map: (
@@ -505,6 +579,7 @@ $logo-space: floor($header-padding-vertical / 2) !default;
$main-menu-bg: $gray-100 !default;
$main-menu-bg-hover: $gray-100 !default;
$main-menu-bg-active: transparent !default;
$main-menu-link: $gray-900 !default;
$main-menu-link-active: $black !default;
$main-menu-border: $gray-400 !default;
@@ -576,6 +651,11 @@ $flash-success-border: shade($green, 500) !default;
$flash-success-text: $white !default;
$flash-success-link: $white !default;
$flash-info-bg: shade($blue, 100) !default;
$flash-info-border: shade($blue, 200) !default;
$flash-info-text: shade($blue, 800) !default;
$flash-info-link: shade($blue, 900) !default;
$flash-warning-bg: shade($yellow, 200) !default;
$flash-warning-border: shade($yellow, 300) !default;
$flash-warning-text: shade($yellow, 800) !default;
@@ -604,7 +684,7 @@ $progress-bar-info-bg: $brand-info !default;
$panel-body-padding-vertical: 15px !default;
$panel-body-padding-horizontal: 15px !default;
$panel-body-padding: $panel-body-padding-vertical $panel-body-padding-horizontal !default;
$panel-color: $gray-900 !default;
$panel-color: $text-color !default;
$panel-bg: $gray-50 !default;
$panel-border: $gray-400 !default;
$panel-border-radius: $border-radius-base !default;
@@ -640,10 +720,15 @@ $issue-attribute-padding-h: 5px !default;
//== Speech "bubbles"
//
$bubble-bg: $issue-bg !default;
$bubble-border: $issue-border !default;
$bubble-text: $issue-text !default;
$bubble-gravatar-size: 24px !default;
$bubble-gravatar-space: 12px !default;
$bubble-padding-vertical: 8px !default;
$bubble-padding-horizontal: 15px !default;
$bubble-padding-horizontal: 12px !default;
$bubble-target-border: saturate($brand-primary, 25%) !default;
$bubble-target-shadow-alpha: .2 !default;
//== Badges
@@ -701,3 +786,67 @@ $login-form-adjustments-map: (
$width-sm: $screen-sm - ($padding-side * 2) !default;
$width-md: $screen-md - ($padding-side * 2) !default;
$width-lg: $screen-lg - ($padding-side * 2) !default;
//== Redmine Agile plugin
// https://www.redmineup.com/pages/plugins/agile
//
$agile-board-background: $gray-100 !default;
$agile-issue-card-margin: 8px 10px !default;
$agile-issue-card-padding: 7px !default;
$agile-issue-card-border: $gray-500;
$agile-issue-card-border-width: 0 0 0 5px;
$agile-issue-card-border-radius: $border-radius-large !default;
$agile-issue-card-background: $white !default;
$agile-issue-card-color: $text-color !default;
$agile-issue-card-closed-background: $gray-300 !default;
$agile-issue-card-default-color-map: (
bk-green: (
border: $green,
background: scale-color($green, $saturation: -5%, $lightness: 80%),
link: shade($green, 700),
),
bk-blue: (
border: $blue,
background: scale-color($blue, $saturation: 50%, $lightness: 80%),
link: shade($blue, 700),
),
bk-turquoise: (
border: $teal,
background: scale-color($teal, $saturation: -5%, $lightness: 80%),
link: shade($teal, 700),
),
bk-lightgreen: (
border: adjust-color($green, $hue: -45deg),
background: scale-color(adjust-color($green, $hue: -45deg), $saturation: 75%, $lightness: 80%),
link: shade(adjust-color($green, $hue: -45deg), 700),
),
bk-yellow: (
border: scale-color($yellow, $hue: 2deg),
background: scale-color($yellow, $hue: 2deg, $saturation: 75%, $lightness: 80%),
link: shade($yellow, 700),
),
bk-orange: (
border: $orange,
background: scale-color($orange, $saturation: 75%, $lightness: 80%),
link: shade($orange, 700),
),
bk-red: (
border: $red,
background: scale-color($red, $saturation: 75%, $lightness: 85%),
link: shade($red, 700),
),
bk-purple: (
border: $purple,
background: scale-color($purple, $saturation: 75%, $lightness: 85%),
link: shade($purple, 700),
),
bk-gray: (
border: $gray-600,
background: $gray-300,
link: $link-color,
),
) !default;
$agile-issue-card-custom-color-map: () !default;
$agile-issue-card-color-map: map-merge($agile-issue-card-default-color-map, $agile-issue-card-custom-color-map);

View File

@@ -1,4 +1,5 @@
@import "variables";
@import "functions";
@import "mixins";
@import "lib/normalize";

View File

@@ -8,7 +8,7 @@
list-style-type: none;
> a:not(.icon-only) {
padding-left: $sidebar-padding-horizontal + 5px + 20px;
padding-left: $sidebar-padding-horizontal + 5px + $icon-width;
background-repeat: no-repeat;
background-position: $sidebar-padding-horizontal center;
}
@@ -27,7 +27,7 @@
a {
display: inline-block;
padding-left: 5px + 20px;
padding-left: 5px + $icon-width;
background-position: 0 center;
}
}
@@ -61,6 +61,13 @@ table.permissions {
//== Workflows
//
.controller-workflows {
table.list,
fieldset.collapsible {
margin-bottom: $line-height-computed;
}
}
table.transitions {
td.enabled {
background: $state-success;
@@ -87,6 +94,29 @@ table.fields_permissions {
}
//== Custom fields -> Issues -> Key values
//
#custom_field_enumerations {
padding-left: 0;
list-style: none;
li {
min-height: $input-height-base;
padding: 1px 0;
.sort-handle,
label {
line-height: $input-height-base;
}
label input {
vertical-align: baseline;
}
}
}
//== Settings labels
//

View File

@@ -110,6 +110,16 @@ table {
p {
margin: 0;
}
form {
p {
margin-bottom: ($line-height-computed / 2);
&:last-child {
margin-bottom: 0;
}
}
}
}
ul,

View File

@@ -48,12 +48,8 @@ form {
@include button-variant($btn-success-color, $btn-success-bg, $btn-success-border);
}
+ a {
display: inline-block;
~ a {
margin-right: 2px;
padding-top: $btn-padding-vertical + 1px;
padding-bottom: $btn-padding-vertical + 1px;
line-height: $line-height-base;
+ a {
margin-left: 2px;
@@ -144,6 +140,37 @@ p.buttons,
}
//== Submit + cancel
//
#issue-form,
.mypage-box,
.journal,
.edit_news,
.edit_content,
.edit_time_entry,
.edit_membership {
input[type="submit"] + a {
margin-left: ceil($btn-padding-horizontal-small / 2);
}
}
//== Apply + clear
//
form {
input,
button,
select {
~ a {
margin-left: ceil($btn-padding-horizontal-small / 2);
line-height: $input-height-base;
}
}
}
//== Action buttons group
//
@@ -187,6 +214,10 @@ p.buttons {
min-width: 130px;
}
label + & {
margin-left: $padding-side;
}
@at-root span#{&} {
> span {
display: inline-block;

View File

@@ -161,6 +161,27 @@
}
}
&.queries {
> li {
position: relative;
> a.query {
padding-right: $sidebar-padding-horizontal * 1.5;
}
> a.icon-only {
position: absolute;
top: $sidebar-padding-vertical;
right: $sidebar-padding-horizontal / 2;
line-height: $line-height-computed;
&::before {
line-height: inherit;
}
}
}
}
&.pages-hierarchy {
.pages-hierarchy {
margin-left: $sidebar-padding-horizontal + 3px;

View File

@@ -62,10 +62,10 @@
border-radius: $border-radius-base - 1px;
&.icon {
padding-left: 20px + $btn-padding-horizontal-small;
padding-left: $icon-width + $btn-padding-horizontal-small;
&::before {
width: 20px;
width: $icon-width;
margin-top: 3px;
float: left;
text-align: center;
@@ -94,8 +94,8 @@
color: $pagination-color;
text-align: center;
> .icon-only::before {
margin: 0 1px;
> .icon-only {
margin: 0 -4px;
}
&:hover,

View File

@@ -7,27 +7,29 @@
//
a.collapsible,
a.collapsible.icon,
.collapsible > legend {
color: $link-color;
cursor: pointer;
user-select: none;
&:hover {
&:hover,
&:focus {
color: $link-hover-color;
text-decoration: none;
}
&::before {
content: "";
display: inline-block;
@include fa-icon;
content: $fa-var-chevron-down;
position: relative;
top: -1px;
width: 0;
height: 0;
top: -.1em;
width: 1em;
height: 1em;
margin-right: 3px;
transform: rotate(0);
border-top: 6px solid;
border-right: 4px solid transparent;
border-left: 4px solid transparent;
color: $gray-600;
font-size: 12px;
vertical-align: middle;
@if $collapsible-animation-time > 0 {
@@ -37,6 +39,7 @@ a.collapsible,
}
a.collapsible.collapsed,
a.collapsible.icon-collapsed,
.collapsible.collapsed > legend {
&::before {
transform: rotate(-90deg);
@@ -115,18 +118,20 @@ img {
.filecontent-container {
position: relative;
min-height: 200px;
margin-bottom: 20px;
}
.filecontent-container > .filecontent {
position: absolute;
max-width: 100%;
max-height: 100%;
margin-bottom: $line-height-computed;
> .filecontent {
position: absolute;
max-width: 100%;
max-height: 100%;
}
}
//== Responsive autoscroll
//
.autoscroll {
position: relative;
margin-bottom: $line-height-computed;
overflow-x: auto;
}
@@ -248,6 +253,10 @@ img {
@include check;
display: block;
}
.gravatar {
margin-right: $padding-small-vertical;
}
}
.roles-selection {
@@ -275,11 +284,13 @@ p.subtitle {
}
.block-receiver {
box-sizing: border-box;
min-height: 20px;
margin: $padding-side / -2;
margin-bottom: $line-height-computed;
padding: $padding-side / 2;
outline: 2px dashed $gray-600;
.dragging & {
outline: 2px dashed $gray-600;
}
}
.mypage-box {
@@ -331,22 +342,6 @@ a.close-icon {
// For Redmine 3.4+
#my-page {
.block-receiver {
box-sizing: border-box;
margin: 0;
padding: 0;
outline: none;
}
&.dragging .block-receiver {
box-sizing: border-box;
min-height: 20px;
margin: $padding-side / -2;
margin-bottom: $line-height-computed;
padding: $padding-side / 2;
outline: 2px dashed $gray-600;
}
.mypage-box {
> .contextual {
transition: opacity $transition-time;
@@ -608,6 +603,14 @@ div#roadmap {
}
}
header {
display: block;
> h3 {
display: inline-block;
}
}
header > h3,
h3.version {
margin-bottom: 0;
@@ -660,16 +663,22 @@ div#version-summary {
//== Ajax indicator
//
@keyframes spin {
to { transform: rotate(360deg); }
}
#ajax-indicator {
@include nice-shadow(3);
position: fixed;
z-index: 100;
top: 50%;
left: 50%;
box-sizing: border-box;
width: 200px;
margin: (($line-height-computed + $padding-large-vertical * 2 + 1px * 2) / -2) ((200px + $padding-large-horizontal * 2 + 1px * 2) / -2);
margin: (($padding-large-vertical * 2 + 1px * 2 + $line-height-computed) / -2) (200px / -2);
padding: $padding-large-vertical $padding-large-horizontal;
border: 1px solid $highlight-border;
border-radius: $border-radius-base;
opacity: .9;
background-color: $highlight-bg;
color: $highlight-text;
@@ -677,11 +686,21 @@ div#version-summary {
text-align: center;
span {
padding-left: 26px;
background-image: url("../../../images/loading.gif");
background-repeat: no-repeat;
background-position: 0% 40%;
vertical-align: bottom;
line-height: $line-height-computed;
&::before {
content: "";
display: inline-block;
box-sizing: border-box;
width: $line-height-computed;
height: $line-height-computed;
margin-right: $line-height-computed / 2;
animation: spin 1s linear infinite;
border: 3px solid rgba($highlight-text, .3);
border-radius: 50%;
border-top-color: $highlight-text;
vertical-align: bottom;
}
}
}
@@ -745,15 +764,14 @@ div.table-list.boards {
}
.message {
border: 1px solid $gray-400;
border: 1px solid $bubble-border;
border-radius: $panel-border-radius;
background: $gray-100;
background: $bubble-bg;
> h4,
> p {
margin-bottom: 0;
padding: $bubble-padding-vertical $bubble-padding-horizontal;
border-bottom: 1px solid mix($gray-400, $gray-100, 50%);
color: $gray-700;
font-size: $font-size-list;
@@ -767,7 +785,8 @@ div.table-list.boards {
}
.wiki {
padding: $bubble-padding-horizontal;
padding: $panel-body-padding;
border-top: 1px solid $bubble-border;
border-radius: 0 0 $panel-border-radius $panel-border-radius;
background: $body-bg;
}
@@ -775,13 +794,17 @@ div.table-list.boards {
.contextual {
position: relative;
z-index: 1;
margin-top: $padding-small-vertical;
margin-right: $bubble-padding-vertical;
padding: ($bubble-padding-vertical - 1px) $bubble-padding-vertical 0 0;
a {
margin-left: ceil($bubble-padding-vertical / 2);
display: inline-block;
}
}
.attachments {
padding: $bubble-padding-horizontal;
border-top-color: $bubble-border;
}
}
.reply {
@@ -814,12 +837,12 @@ div.table-list.boards {
margin-top: 1px;
margin-left: 2px;
border-width: 6px;
border-right-color: $panel-bg;
border-right-color: $bubble-bg;
}
&::before {
border-width: 7px;
border-right-color: $panel-border;
border-right-color: $bubble-border;
}
}
@@ -898,6 +921,10 @@ div.table-list.boards {
.author {
color: $gray-700;
.flyout-menu & {
color: inherit;
}
.user {
font-weight: $font-weight-bold;
}
@@ -934,6 +961,7 @@ div.table-list.boards {
background: $body-bg;
color: $panel-color;
font-family: $font-family-monospace;
white-space: pre-wrap;
}
.diff_out {

View File

@@ -26,6 +26,8 @@ form {
}
}
span.field label,
span.field ~ label,
.box label {
line-height: $line-height-base;
@@ -121,7 +123,7 @@ input[type="search"] {
input[type="radio"],
input[type="checkbox"] {
margin: 4px 1px 0 0;
margin: 4px 3px 0 5px;
margin-top: 1px \9; // IE8-9
line-height: normal;
vertical-align: top;
@@ -264,6 +266,7 @@ em.info {
color: $gray-700;
font-size: $font-size-small;
font-style: normal;
line-height: $line-height-base;
}
@@ -307,6 +310,11 @@ em.info {
display: block;
padding-top: $input-padding-vertical + 1px;
line-height: $line-height-base;
> input[type="checkbox"],
> input[type="radio"] {
margin-left: 0;
}
}
}
@@ -350,6 +358,12 @@ em.info {
float: none;
text-align: left;
cursor: pointer;
> input[type="checkbox"],
> input[type="radio"] {
margin-left: -$check-input-gutter;
float: left;
}
}
&.inline {
@@ -363,11 +377,13 @@ em.info {
> input[type="checkbox"],
> input[type="radio"] {
margin-top: $check-input-margin-vertical;
margin-left: 0;
}
~ input[type="checkbox"],
~ input[type="radio"] {
margin-top: $check-input-margin-btn-v;
margin-left: 0;
}
}
}
@@ -381,14 +397,25 @@ label.inline {
&:last-child {
margin-right: 0;
}
}
label.inline,
label.block {
> input {
margin-left: -$check-input-gutter;
float: left;
}
input + & {
padding-left: 0;
}
}
label.block {
display: block;
width: auto;
> input {
margin-right: 3px;
margin-left: 3px;
}
}
@@ -397,7 +424,6 @@ label.block {
label[for="issue_description"] + a {
display: inline-block;
margin-top: $input-padding-vertical + 1px;
img {
vertical-align: middle;
@@ -601,6 +627,10 @@ label[for="closed"] {
label {
@include check-list;
}
.gravatar {
margin-right: $padding-small-vertical;
}
}
#watchers_inputs {
@@ -716,7 +746,9 @@ fieldset#filters {
select,
label,
.icon,
.icon-only {
.icon-only,
> span > a {
line-height: inherit;
vertical-align: middle;
}
}

View File

@@ -53,6 +53,10 @@ table.gantt-table {
.gantt_hdr {
border-left: 1px solid $gray-500 !important; // stylelint-disable-line declaration-no-important
}
+ td {
padding: 0;
}
}
.gantt_subjects {
@@ -242,6 +246,7 @@ td.gantt_selected_column .gantt_hdr,
width: 270px;
padding: $padding-base-vertical;
border: $tooltip-border-width solid $tooltip-border;
border-radius: $border-radius-small;
background-color: $tooltip-bg;
color: $tooltip-text;
font-size: $font-size-small;

View File

@@ -17,6 +17,120 @@
}
}
$icon-map: (
icon-add: $fa-var-plus-square,
icon-edit: $fa-var-pencil,
icon-copy: $fa-var-copy,
icon-duplicate: $fa-var-clipboard,
icon-del: $fa-var-trash,
icon-move: $fa-var-arrows,
icon-save: $fa-var-save,
icon-download: $fa-var-download,
icon-cancel: $fa-var-ban,
icon-multiple: $fa-var-plus-circle,
icon-folder: $fa-var-folder,
icon-package: $fa-var-cube,
icon-user: $fa-var-user,
icon-project: $fa-var-cube,
icon-projects: $fa-var-cubes,
icon-help: $fa-var-info-circle,
icon-attachment: $fa-var-paperclip,
icon-history: $fa-var-history,
icon-time-entry: $fa-var-clock-o,
icon-time: $fa-var-clock-o,
icon-time-add: $fa-var-clock-o,
icon-stats: $fa-var-line-chart,
icon-warning: $fa-var-warning,
icon-error: $fa-var-exclamation,
icon-fav: $fa-var-star,
icon-fav-off: $fa-var-star-o,
icon-heart: $fa-var-heart,
icon-heart-off: $fa-var-heart-o,
icon-reload: $fa-var-refresh,
icon-locked: $fa-var-lock,
icon-lock: $fa-var-lock,
icon-unlock: $fa-var-unlock,
icon-checked: $fa-var-check,
icon-details: $fa-var-search-plus,
icon-report: $fa-var-pie-chart,
icon-comments: $fa-var-comment,
icon-comment: $fa-var-comment,
icon-summary: $fa-var-file-text,
icon-server-authentication: $fa-var-key,
icon-issue: $fa-var-ticket,
icon-zoom-in: $fa-var-search-plus,
icon-zoom-out: $fa-var-search-minus,
icon-magnifier: $fa-var-search,
icon-passwd: $fa-var-key,
icon-arrow-right: $fa-var-arrow-right,
icon-test: $fa-var-arrow-circle-right,
icon-sticky: $fa-var-thumb-tack,
icon-email: $fa-var-envelope,
icon-email-disabled: $fa-var-envelope-o,
icon-email-add: $fa-var-envelope,
icon-ok: $fa-var-check,
icon-not-ok: $fa-var-times,
icon-link-break: $fa-var-chain-broken,
icon-list: $fa-var-list-ul,
icon-close: $fa-var-times-circle,
icon-settings: $fa-var-cog,
icon-group: $fa-var-users,
icon-groupnonmember: $fa-var-users,
icon-groupanonymous: $fa-var-users,
icon-roles: $fa-var-eye,
icon-issue-edit: $fa-var-edit,
icon-workflows: $fa-var-sitemap,
icon-custom-fields: $fa-var-edit,
icon-plugins: $fa-var-puzzle-piece,
icon-news: $fa-var-newspaper-o,
icon-issue-closed: $fa-var-ticket,
icon-issue-note: $fa-var-comment,
icon-changeset: $fa-var-upload,
icon-message: $fa-var-comment,
icon-reply: $fa-var-comment-o,
icon-wiki-page: $fa-var-file-text-o,
icon-document: $fa-var-file-text,
icon-add-bullet: $fa-var-plus-circle,
icon-shared: $fa-var-link,
icon-actions: $fa-var-ellipsis-h,
icon-sort-handle: $fa-var-arrows-v,
icon-expended: $fa-var-chevron-down,
icon-collapsed: $fa-var-chevron-right,
icon-bookmark: $fa-var-bookmark,
icon-bookmark-off: $fa-var-bookmark-o,
icon-sorted-asc: $fa-var-sort-amount-asc,
icon-sorted-desc: $fa-var-sort-amount-desc,
icon-toggle-plus: $fa-var-plus-square,
icon-toggle-minus: $fa-var-minus-square,
icon-clear-query: $fa-var-times,
icon-import: $fa-var-cloud-upload,
// Plugin icons
icon-call: $fa-var-phone,
icon-contact: $fa-var-vcard,
icon-erase: $fa-var-eraser,
icon-facebook: $fa-var-facebook-square,
icon-fullscreen: $fa-var-arrows-alt,
icon-linkedin: $fa-var-linkedin-square,
icon-meeting: $fa-var-calendar-check-o,
icon-merge: $fa-var-code-fork,
icon-money-dollar: $fa-var-usd,
icon-money-euro: $fa-var-eur,
icon-money-pound: $fa-var-gbp,
icon-money-yen: $fa-var-jpy,
icon-move-bottom: $fa-var-angle-double-down,
icon-move-down: $fa-var-angle-down,
icon-move-top: $fa-var-angle-double-up,
icon-move-up: $fa-var-angle-up,
icon-phone: $fa-var-phone,
icon-skype: $fa-var-skype,
icon-tags: $fa-var-tags,
icon-twitter: $fa-var-twitter-square,
icon-vcard: $fa-var-vcard,
banner-icon-edit: $fa-var-edit,
banner-icon-off: $fa-var-times,
);
@keyframes spin {
0% {
transform: rotate(0deg);
@@ -35,132 +149,68 @@ table.list .buttons > a::before {
//== Buttons icons
//
.icon {
.icon,
.icon-only:not(.toggle-multiselect) {
@extend %fa-icon;
padding-left: 20px;
padding-left: $icon-width;
background-repeat: no-repeat;
background-position: 0% 50%;
&::before {
margin-left: -20px;
margin-left: -$icon-width;
}
}
.icon-only {
@extend %fa-icon;
font-size: 0;
display: inline-block;
width: 0;
overflow: hidden;
vertical-align: top;
white-space: nowrap;
@at-root a#{&} {
// stylelint-disable declaration-no-important
display: inline;
width: auto !important;
height: auto !important;
padding-left: 0 !important;
font-size: 0 !important;
}
&::before {
font-size: $font-size-base;
width: $icon-width;
text-align: center;
}
}
.icon-add::before { content: $fa-var-plus-square; }
.icon-edit::before { content: $fa-var-pencil; }
.icon-copy::before { content: $fa-var-copy; }
.icon-duplicate::before { content: $fa-var-clipboard; }
.icon-del::before { content: $fa-var-trash; }
.icon-move::before { content: $fa-var-arrows; }
.icon-save::before { content: $fa-var-save; }
.icon-download::before { content: $fa-var-download; }
.icon-cancel::before { content: $fa-var-ban; }
.icon-multiple::before { content: $fa-var-plus-circle; }
.icon-folder::before { content: $fa-var-folder; }
.open .icon-folder::before { content: $fa-var-folder-open; }
.icon-package::before { content: $fa-var-cube; }
.icon-user::before { content: $fa-var-user; }
.icon-project::before { content: $fa-var-cube; }
.icon-projects::before { content: $fa-var-cubes; }
.icon-help::before { content: $fa-var-info-circle; }
.icon-attachment::before { content: $fa-var-paperclip; }
.icon-history::before { content: $fa-var-history; }
.icon-time-entry::before { content: $fa-var-clock-o; }
.icon-time::before { content: $fa-var-clock-o; }
.icon-time-add::before { content: $fa-var-clock-o; }
.icon-stats::before { content: $fa-var-line-chart; }
.icon-warning::before { content: $fa-var-warning; }
.icon-error::before { content: $fa-var-exclamation; }
.icon-fav::before { content: $fa-var-star; color: $orange; }
.icon-fav-off::before { content: $fa-var-star-o; }
.icon-heart::before { content: $fa-var-heart; color: $pink; }
.icon-heart-off::before { content: $fa-var-heart-o; }
.icon-reload::before { content: $fa-var-refresh; }
.icon-locked::before { content: $fa-var-lock; }
.icon-lock::before { content: $fa-var-lock; }
.icon-unlock::before { content: $fa-var-unlock; }
.icon-checked::before { content: $fa-var-check; }
.icon-details::before { content: $fa-var-search-plus; }
.icon-report::before { content: $fa-var-pie-chart; }
.icon-comments::before { content: $fa-var-comment; }
.icon-comment::before { content: $fa-var-comment; }
.icon-summary::before { content: $fa-var-file-text; }
.icon-server-authentication::before { content: $fa-var-key; }
.icon-issue::before { content: $fa-var-ticket; }
.icon-zoom-in::before { content: $fa-var-search-plus; }
.icon-zoom-out::before { content: $fa-var-search-minus; }
.icon-passwd::before { content: $fa-var-key; }
.icon-test::before { content: $fa-var-arrow-circle-right; }
.icon-phone::before { content: $fa-var-phone; }
.icon-skype::before { content: $fa-var-skype; }
.icon-facebook::before { content: $fa-var-facebook-square; }
.icon-linkedin::before { content: $fa-var-linkedin-square; }
.icon-twitter::before { content: $fa-var-twitter-square; }
.icon-magnifier::before { content: $fa-var-search; }
.icon-email::before { content: $fa-var-envelope; }
.icon-email-disabled::before { content: $fa-var-envelope-o; }
.icon-email-add::before { content: $fa-var-envelope; }
.icon-move-up::before { content: $fa-var-angle-up; }
.icon-move-top::before { content: $fa-var-angle-double-up; }
.icon-move-down::before { content: $fa-var-angle-down; }
.icon-move-bottom::before { content: $fa-var-angle-double-down; }
.icon-ok::before { content: $fa-var-check; }
.icon-not-ok::before { content: $fa-var-times; }
.icon-link-break::before { content: $fa-var-chain-broken; }
.icon-list::before { content: $fa-var-list-ul; }
.icon-sticky::before { content: $fa-var-thumb-tack; }
.icon-arrow-right::before { content: $fa-var-arrow-right; }
.icon-close::before { content: $fa-var-times-circle; }
.icon-close:hover::before { content: $fa-var-times-circle-o; }
.icon-settings::before { content: $fa-var-cog; }
.icon-group::before { content: $fa-var-users; }
.icon-groupnonmember::before { content: $fa-var-users; }
.icon-groupanonymous::before { content: $fa-var-users; }
.icon-roles::before { content: $fa-var-eye; }
.icon-issue-edit::before { content: $fa-var-edit; }
.icon-workflows::before { content: $fa-var-sitemap; }
.icon-custom-fields::before { content: $fa-var-edit; }
.icon-plugins::before { content: $fa-var-puzzle-piece; }
.icon-news::before { content: $fa-var-newspaper-o; }
.icon-issue-closed::before { content: $fa-var-ticket; }
.icon-issue-note::before { content: $fa-var-comment; }
.icon-changeset::before { content: $fa-var-upload; }
.icon-message::before { content: $fa-var-comment; }
.icon-reply::before { content: $fa-var-comment-o; }
.icon-wiki-page::before { content: $fa-var-file-text-o; }
.icon-document::before { content: $fa-var-file-text; }
.icon-project::before { content: $fa-var-cube; }
.icon-add-bullet::before { content: $fa-var-plus-circle; }
.icon-shared::before { content: $fa-var-link; }
.icon-actions::before { content: $fa-var-ellipsis-h; }
.icon-sort-handle::before { content: $fa-var-arrows-v; }
.icon-expended::before { content: $fa-var-chevron-down; }
.icon-collapsed::before { content: $fa-var-chevron-right; }
.icon-bookmark::before { content: $fa-var-bookmark; }
.icon-bookmark-off::before { content: $fa-var-bookmark-o; }
.icon-sorted-asc::before { content: $fa-var-sort-amount-asc; }
.icon-sorted-desc::before { content: $fa-var-sort-amount-desc; }
.icon-toggle-plus::before { content: $fa-var-plus-square; }
.icon-toggle-minus::before { content: $fa-var-minus-square; }
// A empty icon should behave more like icon-only
a.icon:empty {
display: inline-block;
}
$icons-selector: ();
@each $class, $icon in $icon-map {
$icons-selector: append($icons-selector, unquote(".#{$class}"), "comma");
.#{$class} {
&::before {
content: $icon;
@if $class == "icon-fav" {
color: $orange;
} @else if $class == "icon-heart" {
color: $pink;
}
}
@if $class == "icon-close" {
&:hover::before {
content: $fa-var-times-circle-o;
}
} @else if $class == "icon-folder" {
.open &::before {
content: $fa-var-folder-open;
}
}
}
}
#{$icons-selector} {
&.icon {
background-image: none;
}
}
//== Checkbox toggler
//
@@ -203,7 +253,7 @@ a.icon-del {
.icon-folder,
.icon-file {
&::before {
width: 16px;
width: $icon-width;
text-align: center;
}
}
@@ -251,12 +301,11 @@ a.icon-del {
.icon-expended,
.icon-collapsed {
&::before {
width: 1em;
text-align: center;
}
&.icon {
padding-left: 20px;
padding-left: $icon-width;
}
&.expander {
@@ -264,6 +313,10 @@ a.icon-del {
}
}
.icon-zoom-in + .icon-zoom-out {
margin-left: $padding-small-vertical;
}
//== Administration menu sections
//
@@ -283,19 +336,19 @@ a.icon-del {
#admin-menu {
#admin-index > & {
a {
padding-left: 5px + 20px;
padding-left: 5px + $icon-width;
}
}
li {
> a {
padding-left: $sidebar-padding-horizontal + 5px + 20px;
padding-left: $sidebar-padding-horizontal + 5px + $icon-width;
&::before {
display: inline-block;
width: 20px;
width: $icon-width;
margin: 0;
margin-left: -(5px + 20px);
margin-left: -(5px + $icon-width);
padding: 0;
color: $gray-700;
text-align: center;
@@ -396,8 +449,6 @@ a.icon-del {
&::before {
content: $fa-var-arrows-v;
width: 16px;
margin: 0;
}
&.ajax-loading {
@@ -424,8 +475,8 @@ div.projects h3 {
color: $gray-900;
&::before {
width: 1em;
margin-right: .5em;
width: $icon-width;
margin-right: $padding-small-vertical;
transform: translateY(-.1em);
color: $gray-700;
text-align: center;
@@ -435,7 +486,7 @@ div.projects h3 {
h3.version::before { content: $fa-var-cube; }
h3.comments::before { content: $fa-var-comments; }
div.issues h3::before { content: $fa-var-ticket; }
div.members h3::before { content: $fa-var-user; }
div.members h3::before { content: $fa-var-users; }
div.news h3::before { content: $fa-var-newspaper-o; }
div.projects h3::before { content: $fa-var-cubes; }
@@ -610,36 +661,42 @@ em.info.error {
}
}
.message .contextual {
a {
@extend %fa-icon;
opacity: .7;
.message {
.contextual {
a {
@extend %fa-icon;
opacity: .7;
&:hover,
&:focus {
opacity: 1;
}
&:hover,
&:focus {
opacity: 1;
}
&:nth-child(1) {
&::before {
content: $fa-var-comment;
img {
display: none;
}
}
}
&:nth-child(2) {
&::before {
content: $fa-var-pencil;
> .contextual {
a {
&:nth-child(1) {
&::before {
content: $fa-var-comment;
}
}
}
&:nth-child(3) {
&::before {
content: $fa-var-trash;
&:nth-child(2) {
&::before {
content: $fa-var-pencil;
}
}
}
img {
display: none;
&:nth-child(3) {
&::before {
content: $fa-var-trash;
}
}
}
}
}

View File

@@ -88,7 +88,8 @@
margin-bottom: $line-height-computed;
}
> hr {
> hr,
.attribute > hr {
@if $clean-issues {
margin: $issue-padding 0;
} @else {
@@ -126,7 +127,42 @@
}
}
.attributes {
@if $color-status {
.attributes td.status,
.attributes .attribute.status .value {
display: inline-block;
width: auto;
min-width: 1em;
margin-top: $issue-attribute-padding-v;
padding: 1px $table-cell-padding;
border-radius: $border-radius-base;
background-color: $status-default-bg;
color: $status-default-color;
font-size: $font-size-small;
font-weight: $font-weight-bold;
text-align: center;
text-transform: uppercase;
}
@each $status, $status-colors in $status-colors-map {
&.#{$status} {
.attributes td.status,
.attributes .attribute.status .value {
background-color: map-get($status-colors, background);
color: map-get($status-colors, color);
}
}
}
}
@if $priority-icon {
.attributes td.priority,
.attribute.priority .value {
@include priority-icon-base;
}
}
table.attributes {
width: 100%;
th,
@@ -148,71 +184,70 @@
}
@media screen and (min-width: $screen-md-min) {
> tbody > tr {
> th,
> td {
width: 25%;
}
}
}
@media screen and (min-width: $screen-lg-min) {
width: auto;
> tbody > tr {
> th {
width: 14em;
width: $label-width;
}
> td {
min-width: $label-width;
}
}
}
}
div.attributes {
@if $css-grid-layout {
display: grid;
grid-gap: 0 $padding-side;
grid-template-columns: auto;
@media screen and (min-width: $screen-lg-min) {
grid-template-columns: repeat(2, minmax(auto, max-content));
.attribute .value {
min-width: $label-width;
}
}
.splitcontent {
display: contents;
&::after {
content: none;
}
}
.splitcontentleft {
width: auto;
padding-right: 0;
padding-left: 0;
float: none;
}
} @else {
@media screen and (min-width: $screen-lg-min) {
.splitcontentleft {
width: auto;
min-width: 16em;
}
.attribute .value {
min-width: $label-width;
}
}
}
}
@if $color-status {
.attributes td.status,
.attribute.status .value {
display: inline-block;
width: auto;
min-width: 1em;
margin-top: $issue-attribute-padding-v;
padding: 1px $table-cell-padding;
border-radius: $border-radius-base;
background-color: $status-default-bg;
color: $status-default-color;
font-size: $font-size-small;
font-weight: $font-weight-bold;
text-align: center;
text-transform: uppercase;
}
.splitcontent {
.attribute {
padding-left: $label-width;
@each $status, $status-colors in $status-colors-map {
&.#{$status} {
.attributes td.status,
.attribute.status .value {
background-color: map-get($status-colors, background);
color: map-get($status-colors, color);
}
.label {
width: $label-width;
margin-left: -$label-width;
}
}
}
@if $priority-icon {
.attributes td.priority,
.attribute.priority .value {
@include priority-icon-base;
}
}
.splitcontentleft {
@media screen and (min-width: $screen-lg-min) {
width: auto;
}
}
.attribute {
@extend %clearfix;
@@ -222,21 +257,20 @@
}
.label {
width: 25%;
box-sizing: border-box;
float: left;
color: $gray-700;
@media screen and (min-width: $screen-lg-min) {
width: 14em;
}
}
.value {
color: $gray-950;
@media screen and (min-width: $screen-lg-min) {
width: auto;
min-width: 14em + 16em;
&:empty::after {
content: "-";
}
*:last-child {
margin-bottom: 0;
}
}
}
@@ -256,13 +290,18 @@
padding: $issue-padding;
border-top: 1px solid $issue-border;
}
// Restore margin below buttons in reverse chronological mode
+ div[style] + .contextual {
margin-bottom: $line-height-computed;
}
}
div.fileover {
background-color: $highlight-bg;
}
div.attachments {
div.attachments:not(.box) {
padding: $line-height-computed 0;
border-top: 1px solid $issue-border;
@@ -323,6 +362,7 @@ div.thumbnails {
top: 0;
margin: 3px;
border-radius: $border-radius-base - 1;
vertical-align: middle;
}
}
@@ -354,10 +394,27 @@ div.thumbnails {
td.buttons {
width: 3em;
vertical-align: middle;
a:not(:first-child) {
margin-left: 2px;
}
}
}
}
#trackers_description {
display: none;
dt {
margin: 0 0 ($line-height-computed / 4);
}
dd {
margin-right: 0;
margin-left: 0;
}
}
#new-relation-form {
text-align: right;
@@ -370,9 +427,13 @@ div.thumbnails {
}
}
#history {
overflow: auto;
#update > form {
margin-bottom: $line-height-computed;
padding-bottom: $line-height-computed;
border-bottom: 1px solid $issue-border;
}
#history {
> .tabs {
margin-bottom: $line-height-computed + 2px * 2;
}
@@ -404,64 +465,87 @@ div.thumbnails {
.journal {
position: relative;
margin-bottom: $line-height-computed + 2px * 2;
margin-bottom: $line-height-computed;
border: 1px solid $bubble-border;
border-radius: $panel-border-radius;
@if $use-gravatars {
margin-left: $bubble-gravatar-size + $bubble-gravatar-space;
}
&::before {
content: "";
display: block;
position: absolute;
z-index: -1;
top: -($line-height-computed + 2px);
left: 22px;
width: 4px;
height: $line-height-computed;
background-color: darken($body-bg, 5%);
}
&.changeset {
h4 + p {
margin-bottom: 0;
padding-bottom: $bubble-padding-vertical;
background-color: $bubble-bg;
font-size: $font-size-list;
.tabs + &::before {
display: none;
> a:first-child {
font-family: $font-family-monospace;
font-weight: $font-weight-bold;
}
}
}
> div {
border: 1px solid $issue-border;
border-radius: $panel-border-radius;
&:target {
border-color: darken($issue-border, 25%);
$border: $bubble-target-border;
$shadow: rgba($bubble-target-border, $bubble-target-shadow-alpha);
position: relative;
margin-top: -($responsive-header-height + 4px);
padding-top: ($responsive-header-height + 4px);
&::before {
content: "";
display: block;
position: absolute;
top: ($responsive-header-height + 4px);
right: 0;
bottom: 0;
left: 0;
border-radius: $panel-border-radius - 1px;
box-shadow: 0 0 0 1px $border, 0 0 0 4px $shadow;
pointer-events: none;
}
@if $use-gravatars {
h4::before {
border-right-color: darken($issue-border, 25%);
> h4::before {
border-right-color: $border;
filter: drop-shadow(-4px 0 0 $shadow);
}
}
@media screen and (min-width: $redmine-responsive-min) {
margin-top: -$line-height-computed;
padding-top: $line-height-computed;
&::before {
top: $line-height-computed;
}
}
}
}
// For Redmine 4.0+
> div > .contextual {
> div > .contextual,
> .contextual {
position: relative;
z-index: 1;
margin: 0;
padding: $bubble-padding-vertical $bubble-padding-horizontal;
font-size: $font-size-list;
> .journal-actions {
padding-right: $issue-attribute-padding-h;
a {
opacity: $icon-opacity;
> a {
opacity: $icon-opacity;
&:hover {
opacity: $icon-hover-opacity;
}
&:hover {
opacity: $icon-hover-opacity;
}
}
> a.journal-link {
padding-left: $issue-attribute-padding-h;
opacity: 1;
color: $gray-700;
&::before {
@@ -470,13 +554,15 @@ div.thumbnails {
}
}
> div > h4 {
> div > h4,
> h4 {
margin: 0;
padding: $bubble-padding-vertical $bubble-padding-horizontal;
border-radius: $panel-border-radius $panel-border-radius 0 0;
background-color: $issue-bg;
background-color: $bubble-bg;
color: $gray-700;
font-size: $font-size-list;
font-weight: $font-weight-normal;
a {
color: $gray-900;
@@ -492,7 +578,8 @@ div.thumbnails {
}
@if $use-gravatars {
> div > h4 {
> div > h4,
> h4 {
position: relative;
&::before,
@@ -514,12 +601,12 @@ div.thumbnails {
margin-top: 1px;
margin-left: 2px;
border-width: 6px;
border-right-color: $issue-bg;
border-right-color: $bubble-bg;
}
&::before {
border-width: 7px;
border-right-color: $issue-border;
border-right-color: $bubble-border;
}
> .gravatar {
@@ -531,35 +618,27 @@ div.thumbnails {
}
}
> p {
padding-right: $bubble-padding-horizontal;
padding-left: $bubble-padding-horizontal;
&:empty {
margin-bottom: 0;
}
}
form,
.wiki,
.details {
border-top: 1px solid $bubble-border;
}
.details {
margin: 0;
padding: $bubble-padding-vertical 0;
padding-left: $bubble-padding-horizontal * 2.5;
list-style: none;
border-top: 1px solid mix($body-bg, $issue-border, 50%);
padding-left: $bubble-padding-horizontal + 20px;
font-size: $font-size-list;
li {
position: relative;
margin-bottom: $bubble-padding-vertical / 2;
&:last-child {
margin-bottom: 0;
}
&::before {
content: "";
display: block;
position: absolute;
top: 5px;
left: -($bubble-padding-horizontal + 6px / 2);
width: 6px;
height: 6px;
border-radius: 50%;
background-color: $gray-600;
}
}
img {
margin: 0 0 -3px 4px;
}
@@ -574,15 +653,13 @@ div.thumbnails {
}
}
.wiki,
form {
.wiki {
padding: $issue-padding;
border-top: 1px solid $issue-border;
}
form {
padding-top: 5px;
background-color: $gray-100;
padding: $bubble-padding-vertical $bubble-padding-horizontal $bubble-padding-horizontal;
background-color: $bubble-bg;
> p {
margin-bottom: $issue-padding;
@@ -592,6 +669,12 @@ div.thumbnails {
}
}
> label {
display: inline-block;
margin-bottom: $line-height-computed / 2;
line-height: $line-height-base;
}
> .wiki {
margin: 0 (-$issue-padding) (-$issue-padding);
padding: 0;
@@ -626,12 +709,10 @@ div.thumbnails {
}
.private-notes {
> div {
border-left-color: $brand-warning;
border-left-color: $brand-warning;
h4::before {
border-right-color: $brand-warning;
}
> div > h4::before {
border-right-color: $brand-warning;
}
}
@@ -659,22 +740,29 @@ span.private {
@media screen and (min-width: $screen-md-min) {
width: 45%;
margin-left: $padding-side;
float: right;
+ #history {
margin-right: 45%;
padding-right: $padding-side;
}
}
@media screen and (min-width: $screen-lg-min) {
width: 33%;
min-width: 28em;
+ #history {
margin-right: 33%;
}
}
div.changeset {
margin-top: $line-height-computed / 2 + 2px * 2;
padding: 0;
overflow: hidden;
border: 1px solid $issue-border;
border: 1px solid $bubble-border;
border-radius: $panel-border-radius;
background-color: $issue-bg;
background-color: $bubble-bg;
font-size: $font-size-list;
&:first-of-type {
@@ -687,7 +775,7 @@ span.private {
padding: $padding-base-vertical $padding-base-horizontal;
color: $gray-700;
> a {
> a:first-child {
font-family: $font-family-monospace;
font-weight: $font-weight-bold;
}
@@ -707,7 +795,7 @@ span.private {
> .wiki {
padding: $padding-base-vertical $padding-base-horizontal;
border-top: 1px solid mix($body-bg, $issue-border, 50%);
border-top: 1px solid $bubble-border;
background-color: $body-bg;
}
}

View File

@@ -127,6 +127,7 @@
}
.ui-sortable-helper {
background-color: $body-bg;
@include nice-shadow(4);
}
@@ -138,6 +139,23 @@
@include nice-shadow(2);
padding: 3px;
border-radius: $panel-border-radius;
.ui-menu-item {
&.ui-state-focus,
&.ui-state-active {
border-color: $pagination-hover-border;
background-color: $pagination-hover-bg;
color: $pagination-hover-color;
a {
color: $pagination-hover-color;
}
.ui-icon {
background-image: url("../../../stylesheets/jquery/images/ui-icons_222222_256x240.png");
}
}
}
}
.ui-menu-item {
@@ -298,3 +316,17 @@ img.ui-datepicker-trigger {
}
}
}
.ui-tooltip {
@include nice-shadow(1);
padding: $padding-small-vertical $padding-small-horizontal;
border: 0 none;
background: $black;
color: $white;
font-size: $font-size-small-px;
pointer-events: none;
&.qtip {
pointer-events: initial;
}
}

View File

@@ -228,6 +228,12 @@ div.jstElements {
&::before { content: $fa-var-code; }
}
.jstb_table {
@extend %jstb-icon;
&::before { content: $fa-var-table; }
}
button.jstb_help {
@extend %jstb-icon;
color: $link-color;

View File

@@ -25,10 +25,16 @@ table.list {
padding: $table-cell-padding;
border: 2px solid $table-border-color;
border-width: $table-list-header-border;
background-color: $body-bg;
background-color: $table-list-header-bg;
color: $gray-700;
vertical-align: bottom;
@if $table-list-header-bg == $body-bg {
@at-root .box & {
background-color: $panel-bg;
}
}
a {
color: $gray-900;
}
@@ -46,7 +52,7 @@ table.list {
vertical-align: top;
&.icon {
padding-left: $table-cell-padding + 20px;
padding-left: $table-cell-padding + $icon-width;
}
&.id,
@@ -80,6 +86,12 @@ table.list {
padding-right: $table-cell-padding;
padding-left: $table-cell-padding;
@if (parse-length($table-list-item-border, right) == 0) {
&:first-child {
padding-right: 0;
}
}
input {
margin: 2px 0 0;
}
@@ -127,10 +139,10 @@ table.list {
white-space: nowrap;
a {
padding-right: 5px;
margin-right: $padding-small-vertical;
&.icon-only {
padding: 0;
margin-right: 0;
}
}
@@ -256,16 +268,33 @@ tr.issue {
tr {
span.expander {
margin-left: 0;
padding-left: 8px;
background-image: inline-svg("plus.svg", (path: (fill: $btn-default-icon-color)));
background-repeat: no-repeat;
background-position: center center;
cursor: pointer;
user-select: none;
display: inline-block;
padding: 0;
float: left;
&.icon {
padding-left: 18px;
text-align: center;
&::before {
margin: 0 0 0 -18px;
color: $gray-600;
font-size: 12px;
}
}
&:not(.icon) {
width: 18px;
padding: 0;
background-image: inline-svg("plus.svg", (path: (fill: $btn-default-icon-color)));
background-repeat: no-repeat;
background-position: center center;
cursor: pointer;
user-select: none;
}
}
&.open span.expander {
&.open span.expander:not(.icon) {
background-image: inline-svg("minus.svg", (path: (fill: $btn-default-icon-color)));
}
}
@@ -335,13 +364,13 @@ tr.entry {
&.file td {
&.filename a,
&.filename_no_report a {
margin-left: 16px;
margin-left: 18px;
}
}
}
@if $table-list-color-odd-rows {
table.list:not(.odd-even) tbody tr:nth-child(odd),
table.list:not(.odd-even) tbody tr:nth-child(odd):not(.ui-sortable-helper),
.odd {
> td {
background-color: $table-bg-accent;
@@ -350,7 +379,7 @@ tr.entry {
}
@if $table-list-color-even-rows {
table.list:not(.odd-even) tbody tr:nth-child(even),
table.list:not(.odd-even) tbody tr:nth-child(even):not(.ui-sortable-helper),
.even {
> td {
background-color: $table-bg-accent;
@@ -359,8 +388,16 @@ tr.entry {
}
@if $table-list-highlight-rows {
table.list > tbody > tr:nth-child(n):hover {
table.list > tbody > tr:nth-child(n):hover:not(.ui-sortable-helper) {
background-color: $table-bg-hover;
@if $color-priorities {
@each $priority-id, $priority-color in $priority-color-map {
&.priority-#{$priority-id} {
background-color: rgba(map-get($priority-color, background), $table-color-hover-factor);
}
}
}
}
}
@@ -384,6 +421,29 @@ tr.entry {
}
}
@if $color-priorities {
@each $priority-id, $priority-color in $priority-color-map {
tr.priority-#{$priority-id} {
&.odd td {
background-color: rgba(map-get($priority-color, background), $table-color-odd-factor);
}
&.even td {
background-color: rgba(map-get($priority-color, background), $table-color-even-factor);
}
td {
border-color: map-get($priority-color, border);
color: map-get($priority-color, color);
}
a {
color: map-get($priority-color, link);
}
}
}
}
@if $color-trackers {
tr.issue .id > a,
tr.issue .issue_id > a,
@@ -639,7 +699,7 @@ table.files {
tr.file td {
&.filename {
padding-left: 20px + $table-cell-padding;
padding-left: $icon-width + $table-cell-padding;
text-align: left;
}
@@ -682,6 +742,15 @@ table.list.enumerations {
//
.query-totals {
#content & {
margin-top: 0;
@media screen and (min-width: $redmine-responsive-min) {
margin-top: -($line-height-computed * 2 + $btn-padding-vertical);
text-align: right;
}
}
> span {
margin-right: $padding-base-horizontal;

View File

@@ -33,6 +33,11 @@
margin-bottom: $panel-body-padding-vertical;
}
#login-submit {
padding-top: $padding-base-vertical;
padding-bottom: $padding-base-vertical;
}
table {
margin: auto;
table-layout: fixed;

View File

@@ -86,12 +86,122 @@
}
//
// Redmine Banner
// https://github.com/akiko-pusu/redmine_banner
// --------------------------------------------------
#global_banner {
.box {
margin-bottom: $line-height-computed;
}
}
.banner_area {
@media screen and (max-width: $redmine-responsive-max) {
#main #content > & {
margin-bottom: $line-height-computed;
}
}
.banner {
@extend %fa-icon;
margin: 0;
padding: $padding-large-vertical $padding-large-horizontal;
padding-left: $padding-large-horizontal + 8px + 16px;
border: 1px solid $component-border;
border-radius: $border-radius-base;
background: $component-bg;
color: $component-color;
@media screen and (min-width: $redmine-responsive-min) {
border-radius: 0;
}
&::before {
content: $fa-var-info;
margin-left: -(8px + 16px);
float: left;
line-height: $line-height-computed;
}
&_info {
border-color: $flash-info-border;
background-color: $flash-info-bg;
color: $flash-info-text;
&::before {
content: $fa-var-info-circle;
}
}
&_warn {
border-color: $flash-warning-border;
background-color: $flash-warning-bg;
color: $flash-warning-text;
&::before {
content: $fa-var-warning;
}
a,
~ div a {
color: $flash-warning-link;
}
}
&_alert {
border-color: $flash-error-border;
background-color: $flash-error-bg;
color: $flash-error-text;
&::before {
content: $fa-var-exclamation-circle;
}
a,
~ div a {
color: $flash-error-link;
}
}
h1,
h2,
h3,
h4,
h5,
h6,
p,
ul,
ol {
margin-bottom: $line-height-computed / 2;
&:last-child {
margin-bottom: 0;
}
}
a {
text-decoration: underline;
}
}
.banner_edit {
a {
margin-left: 5px;
}
}
}
//
// Redmine Hearts
// https://github.com/cat-in-136/redmine_hearts
// --------------------------------------------------
.journal > div + .contextual {
padding-top: 0;
padding-bottom: 0;
border: 0;
> .heart-link-with-count {
@@ -200,11 +310,155 @@
}
//
// RedmineUP
// https://www.redmineup.com/pages/plugins
// --------------------------------------------------
h2 {
.scope_title,
.live_search,
.tags {
vertical-align: top;
}
.live_search {
margin-left: $padding-side / 2;
}
.tags {
.tag_list {
margin-top: 0;
}
}
}
div.details {
&.contact,
&.product {
padding: 0;
border: 0;
background: transparent;
}
}
//
// Redmine Agile
// https://www.redmineup.com/pages/plugins/agile
// --------------------------------------------------
html.agile-board-fullscreen .icon.icon-fullscreen {
padding: ($padding-small-vertical - 1px) $padding-small-vertical;
font-size: 0;
text-align: center;
text-indent: 0;
@include nice-shadow(1);
&::before {
margin: 0;
}
}
@if $agile-board-customize {
.agile-board {
table.list.issues-board {
tbody tr {
background-color: $body-bg;
> td.issue-status-col {
padding: 0;
padding-left: parse-length($agile-issue-card-margin, left);
background-color: $agile-board-background;
&.closed .issue-card {
background: $agile-issue-card-closed-background;
}
}
}
}
.issue-card {
margin: $agile-issue-card-margin;
margin-left: 0;
padding: $agile-issue-card-padding;
border: 1px solid $agile-issue-card-border;
border-width: $agile-issue-card-border-width;
border-radius: $agile-issue-card-border-radius;
background-color: $agile-issue-card-background;
color: $agile-issue-card-color;
@include nice-shadow(1);
&.ui-sortable-helper {
@include nice-shadow(4);
}
&:not(.context-menu-selection) {
.attributes,
em.info,
span.hours {
color: $text-color;
}
}
@each $class, $color in $agile-issue-card-color-map {
&.#{$class} {
border-color: map-get($color, border);
background-color: map-get($color, background);
}
}
.checklist,
.info,
.sub-issues {
border-color: rgba($black, .15);
}
p.issue-id,
p.name {
margin-bottom: 5px;
&:last-of-type {
margin-bottom: 0;
}
}
p.issue-id {
line-height: 1;
}
p.project {
border-radius: $agile-issue-card-border-radius - 1px;
border-color: rgba($black, .15);
background-clip: padding-box;
}
p.name {
font-weight: $font-weight-bold;
}
}
}
@each $class, $color in $agile-issue-card-color-map {
@if map-get($color, link) != $link-color {
.#{$class} {
a {
color: map-get($color, link);
}
}
}
}
}
.agile-board {
.quick-comment {
textarea {
margin-bottom: parse-length($agile-issue-card-padding, bottom);
}
}
}
.controller-agile_charts #main {
@if $css-grid-layout {
> div:not(#content):not(#sidebar) {
@@ -229,6 +483,42 @@
}
//
// Redmine CRM
// https://www.redmineup.com/pages/plugins/crm
// --------------------------------------------------
table.sidebar.attributes {
tr {
th,
td {
padding: parse-length($table-condensed-cell-padding, top) 0;
vertical-align: top;
}
th {
padding-right: parse-length($table-condensed-cell-padding, right);
}
}
}
div.add-note {
input,
textarea {
margin-bottom: $line-height-computed;
}
}
@if $table-list-highlight-rows {
table.contacts.index,
table.contacts.index {
> tbody > tr:nth-child(n):hover {
background-color: $table-bg-hover;
}
}
}
//
// Redmine Tags
// https://www.redmineup.com/pages/plugins/tags
@@ -240,15 +530,43 @@
margin: 0;
}
&.select2-container.select2-container--default {
.select2-selection--multiple {
line-height: $line-height-base;
&-container.select2-container--default {
color: $text-color;
.select2-selection--single,
.select2-selection--multiple {
min-height: $input-height-base;
line-height: $line-height-base;
}
.select2-selection--single {
height: $input-height-base;
.select2-selection__rendered {
padding-top: $input-padding-vertical;
padding-bottom: $input-padding-vertical;
border: 0;
font-size: $font-size-base;
line-height: $line-height-base;
}
.select2-selection__arrow {
height: $input-height-base;
}
.select2-selection__clear {
border: 0;
}
}
.select2-selection--multiple {
.select2-selection__rendered {
padding: 0 3px 3px;
}
.select2-selection__choice {
margin-top: 3px;
margin-right: 3px;
padding-top: 0;
padding-bottom: 0;
}
@@ -269,14 +587,79 @@
box-shadow $transition-time ease-in-out;
border-color: $input-border;
box-shadow: inset 0 1px 2px rgba(0, 0, 0, .075);
}
background-clip: padding-box;
&.select2-container--focus {
.select2-selection {
border-color: rgba($input-border-focus, $input-border-focus-alpha);
box-shadow: inset 0 1px 2px rgba(0, 0, 0, .075), 0 0 0 2px rgba($input-border-focus, $input-shadow-focus-alpha);
&.icon {
padding-left: 18px + 8px;
&::before {
position: absolute;
top: 50%;
left: 8px;
margin: ($fa-font-size-base / -2) 0 0;
}
}
}
&.select2-container {
&:focus,
* {
outline: none;
}
&--open,
&--focus {
.select2-selection {
border-color: rgba($input-border-focus, $input-border-focus-alpha);
box-shadow: inset 0 1px 2px rgba(0, 0, 0, .075), 0 0 0 2px rgba($input-border-focus, $input-shadow-focus-alpha);
}
}
}
.select2-search__field {
&:focus {
border-color: rgba($input-border-focus, $input-border-focus-alpha);
}
}
}
}
span.tag-label-color {
@at-root body & {
padding: 0 !important; // stylelint-disable-line declaration-no-important
border: 0 !important; // stylelint-disable-line declaration-no-important
border-radius: $badge-border-radius;
box-shadow: inset 0 -1px 0 rgba($black, .12);
font-size: $font-size-small-px;
a,
span {
font-family: inherit;
font-size: inherit;
}
> a,
> span {
display: inline-block;
padding: 1px 5px;
text-shadow: 0 1px 0 rgba($black, .2);
}
a {
&:hover {
opacity: .8;
}
}
}
}
.list td.tags {
padding-bottom: max(parse-length($table-cell-padding, bottom) - 2px - 1px, 0);
span.tag-label-color {
margin-bottom: 2px;
margin-left: 0;
transform: translateY(-1px);
}
}
@@ -286,17 +669,39 @@
// https://www.redmineup.com/pages/plugins/checklists
// --------------------------------------------------
.checklist {
li {
a {
margin: 0;
line-height: inherit;
}
}
}
#checklist_form_items {
.checklist-item {
display: block;
margin: 0;
padding-top: $check-list-offset-top;
line-height: initial;
margin: 0 0 2px;
&.new {
padding-top: $padding-base-vertical;
line-height: inherit;
margin: $padding-base-vertical 0 0;
}
input[type="checkbox"] {
position: relative;
top: 2px;
vertical-align: baseline;
}
input[type="button"] {
margin-right: 4px;
}
}
}
#checklist-menu.ui-menu {
a {
padding: 2px 0 2px 24px;
}
}
@@ -361,130 +766,6 @@
}
//
// Redmine CRM People
// http://www.redminecrm.com/projects/people/
// --------------------------------------------------
#people_list {
table.index {
margin-bottom: $line-height-computed;
}
}
#content {
.person.details {
margin-bottom: $line-height-computed;
padding: $issue-padding;
border: 1px solid $issue-border;
border-radius: $border-radius-base;
background-color: $issue-bg;
.avatar {
width: 64px;
max-width: 64px;
overflow: hidden;
}
.name,
.subject_info {
padding: 0 0 0 $issue-padding;
}
.name {
> h1 {
margin-bottom: 5px;
}
> p {
margin-bottom: 0;
}
}
.subject_info {
border-left: 1px solid $issue-border;
> ul {
margin: 0;
}
}
.icon {
background-image: none;
}
}
.department.issue.details {
> p {
clear: both;
}
> .author {
margin-bottom: 0;
clear: none;
}
}
}
#sidebar {
.person.attributes {
font-size: $font-size-list;
th,
td {
padding: $table-condensed-cell-padding;
text-align: left;
vertical-align: top;
}
.icon {
padding-left: $table-condensed-cell-padding + 20px;
background-image: none;
> a {
@extend %fa-icon;
}
}
.email {
td a {
display: block;
max-width: floor($sidebar-width / 3);
overflow: hidden;
text-overflow: ellipsis;
&:hover {
position: absolute;
max-width: 100%;
margin: -$table-condensed-cell-padding;
padding: $table-condensed-cell-padding;
background: $body-bg;
box-shadow: $panel-shadow;
}
}
}
}
.person_data {
td.avatar,
td.name {
padding: 0 0 $table-cell-padding;
}
td.avatar {
width: 40px;
}
td.name {
h4 {
margin: 0;
letter-spacing: 0;
}
}
}
}
//
// Redmine codebutton
// https://github.com/mediatainment/redmine_codebutton

View File

@@ -20,6 +20,10 @@ table.progress {
float: none;
}
tr {
background: transparent !important; // stylelint-disable-line declaration-no-important
}
td {
height: $progress-height;
padding: 0;
@@ -45,12 +49,17 @@ table.progress {
&.todo {
background-color: $progress-bg !important; // stylelint-disable-line declaration-no-important
mix-blend-mode: multiply;
}
}
.issue & td {
padding: 0;
}
.context-menu-selection & td.todo {
mix-blend-mode: screen;
}
}
p {

View File

@@ -1,9 +1,18 @@
.hidden,
.mobile-show {
display: none;
}
.inline-flex {
display: inline-flex;
body.controller-issues h2 & {
padding-right: 0;
}
}
// stylelint-disable selector-max-compound-selectors
.theme-Purplemine2 {
body {
@media screen and (max-width: $redmine-responsive-max) {
.flyout-menu + div {
#header {
@@ -78,6 +87,15 @@
}
}
#content {
overflow: auto;
}
#ajax-indicator {
left: 50%;
width: 200px;
}
.mobile-toggle-button {
width: $responsive-header-height;
height: $responsive-header-height;
@@ -113,6 +131,45 @@
}
}
&__sidebar {
p {
padding-left: $padding-large-horizontal;
}
}
ul {
li:nth-child(n) {
a:not(.icon-only) {
height: auto;
padding: $padding-large-vertical $padding-large-horizontal;
line-height: $line-height-base;
}
}
&.queries {
li {
display: flex;
a {
flex: 1 1 auto;
}
.icon-only {
flex: 0;
padding-right: 0;
padding-left: 40px;
text-align: center;
text-overflow: initial;
&::before {
width: 40px;
margin-left: -40px;
}
}
}
}
}
a {
&,
&:hover,
@@ -131,16 +188,53 @@
}
}
h3 {
h3,
h4 {
height: auto;
margin: 0;
padding: $padding-base-vertical $padding-base-horizontal;
border-top: 1px solid $flyout-menu-header-border;
border-bottom: 1px solid $flyout-menu-header-border;
background-color: $flyout-menu-header-bg;
color: $flyout-menu-header-text;
line-height: $line-height-base;
+ p {
margin-top: $padding-large-vertical;
}
}
h4 {
padding: 0 $padding-base-horizontal;
}
form {
padding-left: 0;
> ul {
margin-left: 0;
li:nth-child(n) {
padding-left: $padding-large-horizontal;
line-height: inherit;
label {
a {
display: block;
padding: $padding-base-vertical $padding-base-horizontal;
}
}
}
+ p {
margin-top: $padding-large-vertical;
}
}
}
#admin-menu {
a {
background-position: 8px center;
background-position: 8px center !important; // stylelint-disable-line declaration-no-important
&.additionals {
padding-left: 32px !important; // stylelint-disable-line declaration-no-important
@@ -175,7 +269,7 @@
}
.delete {
flex: 0 0 24px;
margin-right: $padding-large-vertical;
margin-left: auto;
float: none;
text-align: center;
@@ -333,7 +427,7 @@
}
}
#issue-changesets {
div#issue-changesets {
div.changeset {
padding: 0;
}
@@ -341,6 +435,10 @@
#admin-index > #admin-menu li {
padding: 0;
a {
background-position: 8px center !important; // stylelint-disable-line declaration-no-important
}
}
}

View File

@@ -1,9 +1,5 @@
//
// Syntax highlight - Rouge
// --------------------------------------------------
.syntaxhl {
background: #fafafa;
color: #24292e;
.hll {
background-color: #ffc;
@@ -11,92 +7,59 @@
// Comment
.c {
color: #888;
}
// Error
.err {
background-color: #faa;
color: #f00;
color: #6a737d;
}
// Keyword
.k {
color: #080;
font-weight: bold;
}
// Operator
.o {
color: #333;
color: #d73a49;
}
// Comment.Hashbang
.ch {
color: #888;
color: #6a737d;
}
// Comment.Multiline
.cm {
color: #888;
color: #6a737d;
}
// Comment.Preproc
.cp {
color: #579;
color: #d73a49;
}
// Comment.PreprocFile
.cpf {
color: #888;
color: #032f62;
}
// Comment.Single
.c1 {
color: #888;
color: #6a737d;
}
// Comment.Special
.cs {
color: #c00;
font-weight: bold;
color: #6a737d;
}
// Generic.Deleted
.gd {
color: #a00000;
}
// Generic.Emph
.ge {
font-style: italic;
}
// Generic.Error
.gr {
color: #f00;
background-color: #ffeef0;
color: #b31d28;
}
// Generic.Heading
.gh {
color: #000080;
font-weight: bold;
color: #005cc5;
}
// Generic.Inserted
.gi {
color: #00a000;
}
// Generic.Output
.go {
color: #888;
}
// Generic.Prompt
.gp {
color: #c65d09;
font-weight: bold;
background-color: #f0fff4;
color: #22863a;
}
// Generic.Strong
@@ -106,7 +69,7 @@
// Generic.Subheading
.gu {
color: #800080;
color: #6f42c1;
font-weight: bold;
}
@@ -117,123 +80,112 @@
// Keyword.Constant
.kc {
color: #080;
font-weight: bold;
color: #005cc5;
}
// Keyword.Declaration
.kd {
color: #080;
font-weight: bold;
color: #d73a49;
}
// Keyword.Namespace
.kn {
color: #080;
font-weight: bold;
color: #d73a49;
}
// Keyword.Pseudo
.kp {
color: #038;
font-weight: bold;
color: #d73a49;
}
// Keyword.Reserved
.kr {
color: #080;
font-weight: bold;
color: #d73a49;
}
// Keyword.Type
.kt {
color: #339;
font-weight: bold;
color: #d73a49;
}
// Literal.Number
.m {
color: #60e;
font-weight: bold;
color: #005cc5;
}
// Literal.String
.s {
background-color: #fff0f0;
color: #032f62;
}
// Name.Attribute
.na {
color: #00c;
color: #005cc5;
}
// Name.Builtin
.nb {
color: #007020;
color: #005cc5;
}
// Name.Class
.nc {
color: #b06;
font-weight: bold;
color: #6f42c1;
}
// Name.Constant
.no {
color: #036;
font-weight: bold;
color: #005cc5;
}
// Name.Decorator
.nd {
color: #555;
font-weight: bold;
color: #6f42c1;
}
// Name.Entity
.ni {
color: #800;
font-weight: bold;
color: #005cc5;
}
// Name.Exception
.ne {
color: #f00;
font-weight: bold;
color: #005cc5;
}
// Name.Function
.nf {
color: #06b;
font-weight: bold;
color: #6f42c1;
}
// Name.Label
.nl {
color: #970;
font-weight: bold;
color: #005cc5;
}
// Name.Namespace
.nn {
color: #0e84b5;
font-weight: bold;
color: #6f42c1;
}
// Name.Tag
.nt {
color: #070;
color: #22863a;
}
// Name.Variable
.nv {
color: #963;
color: #24292e;
}
// Operator
.o {
color: #d73a49;
}
// Operator.Word
.ow {
color: #000;
font-weight: bold;
color: #d73a49;
}
// Text.Whitespace
@@ -243,138 +195,126 @@
// Literal.Number.Bin
.mb {
color: #60e;
font-weight: bold;
color: #005cc5;
}
// Literal.Number.Float
.mf {
color: #60e;
font-weight: bold;
color: #005cc5;
}
// Literal.Number.Hex
.mh {
color: #058;
font-weight: bold;
color: #005cc5;
}
// Literal.Number.Integer
.mi {
color: #00d;
font-weight: bold;
color: #005cc5;
}
// Literal.Number.Oct
.mo {
color: #40e;
font-weight: bold;
color: #005cc5;
}
// Literal.String.Affix
.sa {
background-color: #fff0f0;
color: #d73a49;
}
// Literal.String.Backtick
.sb {
background-color: #fff0f0;
color: #032f62;
}
// Literal.String.Char
.sc {
color: #04d;
color: #032f62;
}
// Literal.String.Delimiter
.dl {
background-color: #fff0f0;
color: #d73a49;
}
// Literal.String.Doc
.sd {
color: #d42;
color: #032f62;
}
// Literal.String.Double
.s2 {
background-color: #fff0f0;
color: #032f62;
}
// Literal.String.Escape
.se {
background-color: #fff0f0;
color: #666;
font-weight: bold;
color: #032f62;
}
// Literal.String.Heredoc
.sh {
background-color: #fff0f0;
color: #032f62;
}
// Literal.String.Interpol
.si {
background-color: #eee;
color: #005cc5;
}
// Literal.String.Other
.sx {
background-color: #fff0f0;
color: #d20;
color: #032f62;
}
// Literal.String.Regex
.sr {
background-color: #fff0ff;
color: #000;
color: #032f62;
}
// Literal.String.Single
.s1 {
background-color: #fff0f0;
color: #032f62;
}
// Literal.String.Symbol
.ss {
color: #a60;
color: #005cc5;
}
// Name.Builtin.Pseudo
.bp {
color: #007020;
color: #005cc5;
}
// Name.Function.Magic
.fm {
color: #06b;
font-weight: bold;
color: #005cc5;
}
// Name.Variable.Class
.vc {
color: #369;
color: #24292e;
}
// Name.Variable.Global
.vg {
color: #d70;
font-weight: bold;
color: #24292e;
}
// Name.Variable.Instance
.vi {
color: #33b;
color: #24292e;
}
// Name.Variable.Magic
.vm {
color: #963;
color: #005cc5;
}
// Literal.Number.Integer.Long
.il {
color: #00d;
font-weight: bold;
color: #005cc5;
}
}

View File

@@ -3,18 +3,21 @@
// --------------------------------------------------
#top-menu {
$top-menu-padding-vertical: $padding-small-vertical + 1px;
$top-menu-padding-horizontal: $padding-side;
@extend %clearfix;
position: relative;
padding: $padding-small-vertical $padding-side;
box-sizing: border-box;
padding: $top-menu-padding-vertical $top-menu-padding-horizontal;
background: $top-menu-bg;
color: $top-menu-text;
font-size: $font-size-small;
@if $top-menu-collapse {
$toggler-position-v: $padding-small-vertical + 1px;
$toggler-position-v: $top-menu-padding-vertical + 1px;
$toggler-position-h: 1px;
max-height: floor($font-size-base * $font-size-small-unitless * $line-height-base) + $padding-small-vertical;
position: relative;
max-height: floor($font-size-base * $font-size-small-unitless * $line-height-base) + $top-menu-padding-vertical * 2;
padding-bottom: 0;
overflow: hidden;
@@ -24,7 +27,7 @@
a {
display: inline-block;
margin-bottom: $padding-small-vertical;
margin-bottom: $top-menu-padding-vertical;
white-space: nowrap;
}
@@ -330,6 +333,7 @@
&:hover,
&:focus {
background-color: $main-menu-bg-hover;
box-shadow: inset 0 (-$main-menu-shadow-width) 0 $main-menu-shadow-hover;
text-decoration: none;
}
@@ -337,6 +341,7 @@
&.selected {
padding-bottom: $main-menu-padding-vertical - $main-menu-shadow-width;
border-bottom: 3px solid $main-menu-shadow-active;
background-color: $main-menu-bg-active;
box-shadow: none;
color: $main-menu-link-active;
font-weight: $font-weight-semi-bold;
@@ -421,6 +426,10 @@
box-sizing: border-box;
height: $tabs-height - 1px;
background-color: $main-menu-bg;
&:hover {
background-color: $main-menu-bg-hover;
}
}
}

View File

@@ -116,6 +116,8 @@ div.wiki {
}
blockquote {
margin-bottom: 1em;
> :first-child {
margin-top: 0;
}
@@ -157,7 +159,8 @@ div.wiki {
}
li > p {
margin-top: ($line-height-computed / 2);
margin-top: .25em;
margin-bottom: 0;
}
table {
@@ -169,7 +172,10 @@ div.wiki {
word-break: keep-all;
}
tr:nth-child(2n) {
// Textile
tbody:first-child tr:nth-child(2n),
// Markdown
thead + tbody tr:nth-child(2n-1) {
background-color: $table-bg-accent;
}
@@ -203,10 +209,9 @@ div.wiki {
pre {
width: auto;
margin-bottom: 1.15em;
padding: 4px 8px;
padding: 12px 15px;
overflow-x: auto;
overflow-y: hidden;
border: 1px solid rgba($gray-500, .45);
border-radius: $border-radius-base;
background-color: rgba($gray-500, .15);
font-size: $font-size-small;
@@ -225,30 +230,27 @@ div.wiki {
}
.toc {
display: table;
max-width: 45%;
margin-bottom: $line-height-computed;
margin-left: 0;
padding: 0;
padding: $padding-small-vertical $padding-small-horizontal;
list-style-type: none;
border: 1px solid $toc-border;
border-radius: $border-radius-base;
background-color: $toc-bg;
box-shadow: $toc-shadow;
color: $toc-text;
font-size: $font-size-small;
&.right,
&.left {
max-width: 45%;
padding: 8px;
border: 1px solid $highlight-border;
border-radius: $border-radius-base;
background-color: $highlight-bg;
box-shadow: $panel-shadow;
font-size: $font-size-small;
a {
color: $toc-link;
font-weight: $font-weight-normal;
text-decoration: none;
a {
color: $highlight-text;
font-weight: $font-weight-normal;
text-decoration: none;
&:hover {
color: darken($highlight-text, 10%);
text-decoration: underline;
}
&:hover {
color: $toc-link-hover;
text-decoration: underline;
}
}
@@ -316,11 +318,8 @@ h5,
h6 {
.wiki-anchor {
display: none;
position: relative;
top: -(1em - $font-size-small);
margin-left: 5px;
color: $headings-anchor-color !important; // stylelint-disable-line declaration-no-important
font-size: $font-size-small;
text-decoration: none !important; // stylelint-disable-line declaration-no-important
}

View File

@@ -0,0 +1,49 @@
// Extract the length of margin/padding/border
// for given side from a shorthand syntax.
//
// Examples:
// parse-length(1px, top) -> 1px
// parse-length(1px 2px, right) -> 2px
// parse-length(1px 2px 3px 4px, bottom) -> 3px
// parse-length(1px 2px 3px 4px, left) -> 4px
//
@function parse-length($value, $side) {
$index: 1;
// Top values are always at index 1. The same for when the list has only one item
@if ($side == top or length($value) == 1) {
$index: 1;
}
// Covers "vertical horizontal" style
@else if (length($value) == 2) {
@if ($side == left or $side == right) {
$index: 2;
}
@if ($side == bottom) {
$index: 1;
}
}
// Covers "top horizontal bottom" style
@else if (length($value) == 3) {
@if ($side == left or $side == right) {
$index: 2;
}
@if ($side == bottom) {
$index: 3;
}
}
// Covers "top right bottom left" style
@else if (length($value) == 4) {
@if ($side == right) {
$index: 2;
}
@if ($side == bottom) {
$index: 3;
}
@if ($side == left) {
$index: 4;
}
}
@return nth($value, $index);
}

View File

@@ -1,6 +1,12 @@
@if $enable-sidebar-toggler {
#main {
position: relative;
// Fix full screen view for dashboard plugin
// https://github.com/jgraichen/redmine_dashboard
@at-root .controller-rdb_taskboard & {
position: static;
}
}
#sidebar {

View File

@@ -28,6 +28,7 @@
@mixin tracker($parent, $background, $color) {
tr#{$parent} .id > a,
tr#{$parent} .issue_id > a,
a#{$parent}.issue,
a#{$parent},
.relations > span > a#{$parent},
.parent > a#{$parent} {

File diff suppressed because one or more lines are too long