Compare commits
285 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
0a44774774 | ||
|
|
ba9ef9be21 | ||
|
|
f1df7d1e29 | ||
|
|
b79991966a | ||
|
|
9147b61324 | ||
|
|
f5805c2ad3 | ||
|
|
30e88ca836 | ||
|
|
ddabd865d7 | ||
|
|
d8dee5ccb2 | ||
|
|
73d1210a00 | ||
|
|
e1563a6f9c | ||
|
|
73a1f06136 | ||
|
|
6f0d97fa6e | ||
|
|
230383dd2a | ||
|
|
bc6e2fefb1 | ||
|
|
3e80d292f4 | ||
|
|
6d1346064e | ||
|
|
0ae6e4bb59 | ||
|
|
da33ec44f3 | ||
|
|
3e84cfd613 | ||
|
|
2d77cba782 | ||
|
|
077b0e3ac1 | ||
|
|
e8687dfc7f | ||
|
|
aec8502225 | ||
|
|
75b8ab6143 | ||
|
|
b0842d06d1 | ||
|
|
7859024c18 | ||
|
|
b81b76a306 | ||
|
|
e0211daf24 | ||
|
|
8a1ca0915d | ||
|
|
d65d26f26f | ||
|
|
5c34a08c7f | ||
|
|
37d408cdb6 | ||
|
|
442596d0d0 | ||
|
|
564d0bf3ba | ||
|
|
3231825dc0 | ||
|
|
252d28c4cb | ||
|
|
a44432e1ab | ||
|
|
dbdcbce6a4 | ||
|
|
e4821cf03e | ||
|
|
9204d2263b | ||
|
|
b4eb58bc77 | ||
|
|
4a5ec23be5 | ||
|
|
db2ae70ba1 | ||
|
|
356e70ece0 | ||
|
|
493bed0468 | ||
|
|
7dbbaab953 | ||
|
|
8e5378b65b | ||
|
|
1abd5d2c59 | ||
|
|
c595f5b66f | ||
|
|
f572a55b7c | ||
|
|
b890e3f487 | ||
|
|
87ce84718d | ||
|
|
e1defa3677 | ||
|
|
2103d1e3b3 | ||
|
|
93f4c4e6fb | ||
|
|
ea57a72909 | ||
|
|
13db2d80bd | ||
|
|
ebcbd49e18 | ||
|
|
81e59e52ca | ||
|
|
1200c42714 | ||
|
|
d03e35edc6 | ||
|
|
fb4c70319a | ||
|
|
588b2fe358 | ||
|
|
2c93df1543 | ||
|
|
e6a238fbd9 | ||
|
|
19d2a2dfa3 | ||
|
|
97ecaf66c2 | ||
|
|
6b6c0cc565 | ||
|
|
02703bfefd | ||
|
|
194a114684 | ||
|
|
399b5abeb9 | ||
|
|
562da0a2ca | ||
|
|
aba098b4cd | ||
|
|
cc2e245b62 | ||
|
|
35c4fce150 | ||
|
|
51435b6d5e | ||
|
|
d19768cfcc | ||
|
|
6423b32ce3 | ||
|
|
2464deb302 | ||
|
|
9aefe05b3c | ||
|
|
61f9ee4af7 | ||
|
|
12bbf11fde | ||
|
|
5fe948f289 | ||
|
|
707c5409df | ||
|
|
994410fd89 | ||
|
|
cb78f07e84 | ||
|
|
3d8889b28c | ||
|
|
22fea49006 | ||
|
|
5265818398 | ||
|
|
edec47580e | ||
|
|
ea428cbc36 | ||
|
|
809bb8cc4a | ||
|
|
43da9dc45c | ||
|
|
4e1ebf53fb | ||
|
|
06638406f0 | ||
|
|
af40d823bd | ||
|
|
beeff247a4 | ||
|
|
abb16c53f3 | ||
|
|
d0e6246e99 | ||
|
|
53d1c6dcec | ||
|
|
6dcbf4e150 | ||
|
|
c9f897e3b1 | ||
|
|
d390c5a4d6 | ||
|
|
928b88dbaf | ||
|
|
40450468f2 | ||
|
|
7e9939f5ed | ||
|
|
a72cf5a9ee | ||
|
|
c88c05f159 | ||
|
|
aac8a88bfe | ||
|
|
defabec1ed | ||
|
|
4181c09b02 | ||
|
|
1c620b3b4e | ||
|
|
a8355d5c64 | ||
|
|
1da7710cea | ||
|
|
2b537786d9 | ||
|
|
2e7d9a1308 | ||
|
|
9a4c33153e | ||
|
|
00fed09d8e | ||
|
|
f560febce2 | ||
|
|
7612e8b004 | ||
|
|
02dd1f43a0 | ||
|
|
60cd90a36a | ||
|
|
77d07307b1 | ||
|
|
80cd0c620f | ||
|
|
8b3339f629 | ||
|
|
6b6b12842c | ||
|
|
c160914448 | ||
|
|
b5f351f135 | ||
|
|
97476e3bda | ||
|
|
38ee17c8a8 | ||
|
|
7b95f93194 | ||
|
|
324a236a02 | ||
|
|
b9035527ea | ||
|
|
428be4db9a | ||
|
|
c6a20766c6 | ||
|
|
7430f1d844 | ||
|
|
a931c63ed4 | ||
|
|
3b95b931f8 | ||
|
|
e247564c3e | ||
|
|
76fc0f4b7c | ||
|
|
61b6475e9e | ||
|
|
f3a617baf0 | ||
|
|
db39c6cb54 | ||
|
|
c45de83791 | ||
|
|
6f508ba87a | ||
|
|
49ed887fce | ||
|
|
bba68972d8 | ||
|
|
adc7e59d22 | ||
|
|
cfdf261645 | ||
|
|
1e6cdd7cef | ||
|
|
3e78878ed0 | ||
|
|
15a492a1b6 | ||
|
|
5cafccd221 | ||
|
|
610ee38c3d | ||
|
|
b1154eb9ed | ||
|
|
f5ef9dba70 | ||
|
|
b7efd10a99 | ||
|
|
9977d8e38e | ||
|
|
dde298d630 | ||
|
|
452e0fecf0 | ||
|
|
edde6acb1f | ||
|
|
433819c6ff | ||
|
|
fa3225be82 | ||
|
|
25f7092f9c | ||
|
|
bc8bde7756 | ||
|
|
1253489333 | ||
|
|
42dfc57ee7 | ||
|
|
24db7ad013 | ||
|
|
6c8432f627 | ||
|
|
f12816dad7 | ||
|
|
71a0b1a92c | ||
|
|
a350c369cc | ||
|
|
56a5e1db49 | ||
|
|
6c102320b7 | ||
|
|
2140b58778 | ||
|
|
970da9d3b5 | ||
|
|
654f4f9073 | ||
|
|
aebbfbaf17 | ||
|
|
7f518e0ff7 | ||
|
|
8abe193be4 | ||
|
|
5081a5874b | ||
|
|
2cc2c83568 | ||
|
|
3fd21ebb9c | ||
|
|
5975ab9b5d | ||
|
|
13b11dcbca | ||
|
|
8a44905739 | ||
|
|
2f4b08ba19 | ||
|
|
d220db112a | ||
|
|
fbae203298 | ||
|
|
0d97c6c930 | ||
|
|
8b0631eb31 | ||
|
|
115d7109ec | ||
|
|
1cb53dc85e | ||
|
|
9f701b0d05 | ||
|
|
352e170786 | ||
|
|
f6a80dddb4 | ||
|
|
f326d62550 | ||
|
|
a13ae91b5f | ||
|
|
51484c2e7e | ||
|
|
5b370b2233 | ||
|
|
3e9c05bd8f | ||
|
|
fac8b8e5e2 | ||
|
|
126181756f | ||
|
|
201e176587 | ||
|
|
fabbfc36e6 | ||
|
|
6d8d876bf7 | ||
|
|
c22c8d9fda | ||
|
|
41578b8dd0 | ||
|
|
ee472a0187 | ||
|
|
26ba4e1701 | ||
|
|
7f03565012 | ||
|
|
4d099338e9 | ||
|
|
882aab73c5 | ||
|
|
e270c3a6a3 | ||
|
|
b5361cb864 | ||
|
|
92a62fa7da | ||
|
|
b51db13a24 | ||
|
|
8f94175851 | ||
|
|
d78c2fccc6 | ||
|
|
eea1ee7412 | ||
|
|
7470981f41 | ||
|
|
0d1f9e3744 | ||
|
|
4962216a09 | ||
|
|
f6ba903f5d | ||
|
|
9a8eadc310 | ||
|
|
160b457355 | ||
|
|
ccc9108bfb | ||
|
|
7e76a0b1c8 | ||
|
|
516fba06da | ||
|
|
1e906b2d73 | ||
|
|
ae19f7a657 | ||
|
|
88c4f7172d | ||
|
|
502fe435fb | ||
|
|
ac70bf5af5 | ||
|
|
06932c7903 | ||
|
|
71100e5f52 | ||
|
|
c5db8f62f7 | ||
|
|
509d51357b | ||
|
|
957040aa3a | ||
|
|
539446909f | ||
|
|
9cb8723dc4 | ||
|
|
51e9d1dbe2 | ||
|
|
2311f44a0e | ||
|
|
dfe9588b04 | ||
|
|
2941b53826 | ||
|
|
937e79a1a8 | ||
|
|
130e474efc | ||
|
|
dc197cdf69 | ||
|
|
c3c6a01459 | ||
|
|
78807dae09 | ||
|
|
51e825f497 | ||
|
|
e2a0c5e9c4 | ||
|
|
bdf4713583 | ||
|
|
29fd0896ed | ||
|
|
83c8c9be9b | ||
|
|
6c0f4dbf91 | ||
|
|
08fe4fa102 | ||
|
|
6dfbb71b7a | ||
|
|
09a63b4f9b | ||
|
|
27fd164d3e | ||
|
|
2997bdf085 | ||
|
|
d32999101e | ||
|
|
d8ec2b9531 | ||
|
|
7343aa9570 | ||
|
|
b115d3125e | ||
|
|
c230b4ab03 | ||
|
|
8665246be7 | ||
|
|
6fb7d577f9 | ||
|
|
76048dc426 | ||
|
|
87213c85e2 | ||
|
|
8879be0876 | ||
|
|
b3f3766ad6 | ||
|
|
b2f371659a | ||
|
|
c0a44ac7ca | ||
|
|
af667c01e2 | ||
|
|
581ea7896c | ||
|
|
33cea43d2f | ||
|
|
3771f207b5 | ||
|
|
3253fff4c5 | ||
|
|
ed0deb057f | ||
|
|
384fd31c97 | ||
|
|
668558d317 | ||
|
|
57a5470eb7 | ||
|
|
eb8665bc9b |
9
.editorconfig
Normal file
@@ -0,0 +1,9 @@
|
||||
root = true
|
||||
|
||||
[*]
|
||||
end_of_line = lf
|
||||
charset = utf-8
|
||||
trim_trailing_whitespace = true
|
||||
insert_final_newline = true
|
||||
indent_style = space
|
||||
indent_size = 2
|
||||
3
.gitignore
vendored
@@ -1,4 +1,5 @@
|
||||
/.sass-cache
|
||||
/node_modules
|
||||
/sass/_custom-variables.scss
|
||||
/src/sass/_custom-variables.scss
|
||||
/.sublime-grunt.cache
|
||||
/images/logo
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
scss_files: "**/*.scss"
|
||||
scss_files: "src/sass/**/*.scss"
|
||||
|
||||
exclude: 'src/sass/lib/**'
|
||||
|
||||
linters:
|
||||
BangFormat:
|
||||
@@ -12,21 +14,25 @@ linters:
|
||||
ColorKeyword:
|
||||
enabled: true
|
||||
|
||||
Comment:
|
||||
ColorVariable:
|
||||
enabled: false
|
||||
|
||||
Comment:
|
||||
enabled: true
|
||||
|
||||
DebugStatement:
|
||||
enabled: true
|
||||
|
||||
DeclarationOrder:
|
||||
enabled: false
|
||||
enabled: true
|
||||
|
||||
DuplicateProperty:
|
||||
enabled: true
|
||||
ignore_consecutive:
|
||||
- word-break
|
||||
|
||||
ElsePlacement:
|
||||
enabled: false
|
||||
style: same_line
|
||||
enabled: true
|
||||
|
||||
EmptyLineBetweenBlocks:
|
||||
enabled: true
|
||||
@@ -62,9 +68,9 @@ linters:
|
||||
filename_extension: false
|
||||
|
||||
Indentation:
|
||||
enabled: false
|
||||
enabled: true
|
||||
character: space
|
||||
width: 4
|
||||
width: 2
|
||||
|
||||
LeadingZero:
|
||||
enabled: true
|
||||
@@ -89,6 +95,9 @@ linters:
|
||||
enabled: true
|
||||
extra_properties: []
|
||||
|
||||
PseudoElement:
|
||||
enabled: true
|
||||
|
||||
QualifyingElement:
|
||||
enabled: false
|
||||
|
||||
@@ -119,6 +128,12 @@ linters:
|
||||
SpaceAfterPropertyName:
|
||||
enabled: true
|
||||
|
||||
SpaceAfterVariableName:
|
||||
enabled: true
|
||||
|
||||
SpaceAroundOperator:
|
||||
enabled: true
|
||||
|
||||
SpaceBeforeBrace:
|
||||
enabled: true
|
||||
style: space
|
||||
@@ -135,8 +150,14 @@ linters:
|
||||
TrailingSemicolon:
|
||||
enabled: true
|
||||
|
||||
TrailingWhitespace:
|
||||
enabled: true
|
||||
|
||||
TrailingZero:
|
||||
enabled: false
|
||||
enabled: true
|
||||
|
||||
TransitionAll:
|
||||
enabled: true
|
||||
|
||||
UnnecessaryMantissa:
|
||||
enabled: true
|
||||
@@ -149,3 +170,9 @@ linters:
|
||||
|
||||
UrlQuotes:
|
||||
enabled: true
|
||||
|
||||
VendorPrefix:
|
||||
enabled: true
|
||||
|
||||
ZeroUnit:
|
||||
enabled: true
|
||||
|
||||
15
.travis.yml
Normal file
@@ -0,0 +1,15 @@
|
||||
dist: trusty
|
||||
language: node_js
|
||||
node_js:
|
||||
- 8
|
||||
cache:
|
||||
directories:
|
||||
- node_modules
|
||||
before_install:
|
||||
- rvm install 2.2
|
||||
- rvm use 2.2 --fuzzy
|
||||
install:
|
||||
- gem install scss_lint
|
||||
- npm install
|
||||
script:
|
||||
- npm run lint --silent
|
||||
115
Gruntfile.js
@@ -1,36 +1,79 @@
|
||||
module.exports = function(grunt) {
|
||||
|
||||
grunt.initConfig({
|
||||
sass: {
|
||||
options: {
|
||||
sourceMap: false,
|
||||
outputStyle: 'compressed'
|
||||
},
|
||||
dist: {
|
||||
files: {
|
||||
'stylesheets/application.css': 'sass/application.scss'
|
||||
}
|
||||
},
|
||||
redmine_backlogs: {
|
||||
files: {
|
||||
'plugins/redmine_backlogs/global.css': 'sass/plugins/redmine_backlogs/global.scss',
|
||||
'plugins/redmine_backlogs/master_backlog.css': 'sass/plugins/redmine_backlogs/master_backlog.scss',
|
||||
'plugins/redmine_backlogs/statistics.css': 'sass/plugins/redmine_backlogs/statistics.scss',
|
||||
'plugins/redmine_backlogs/taskboard.css': 'sass/plugins/redmine_backlogs/taskboard.scss'
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
watch: {
|
||||
css: {
|
||||
files: ['sass/**/*.scss'],
|
||||
tasks: ['sass']
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
grunt.loadNpmTasks('grunt-sass');
|
||||
grunt.loadNpmTasks('grunt-contrib-watch');
|
||||
|
||||
grunt.registerTask('default', ['sass']);
|
||||
};
|
||||
module.exports = function (grunt) {
|
||||
grunt.initConfig({
|
||||
src: 'src/',
|
||||
|
||||
sass: {
|
||||
options: {
|
||||
implementation: require('node-sass'),
|
||||
sourceMap: false,
|
||||
outputStyle: 'compressed'
|
||||
},
|
||||
|
||||
theme: {
|
||||
files: {
|
||||
'stylesheets/application.css': '<%= src %>sass/application.scss'
|
||||
}
|
||||
},
|
||||
|
||||
plugins: {
|
||||
files: [
|
||||
{
|
||||
expand: true,
|
||||
cwd: '<%= src %>sass/plugins/',
|
||||
src: '**/*.scss',
|
||||
dest: 'plugins/',
|
||||
ext: '.css',
|
||||
extDot: 'last'
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
|
||||
postcss: {
|
||||
options: {
|
||||
processors: [
|
||||
require('autoprefixer')({ browsers: 'last 2 versions' })
|
||||
]
|
||||
},
|
||||
|
||||
all: {
|
||||
src: [
|
||||
'stylesheets/*.css',
|
||||
'plugins/**/*.css'
|
||||
]
|
||||
}
|
||||
},
|
||||
|
||||
uglify: {
|
||||
theme: {
|
||||
src: [
|
||||
'<%= src %>javascripts/modules/*.js',
|
||||
'<%= src %>javascripts/theme.js'
|
||||
],
|
||||
dest: 'javascripts/theme.js'
|
||||
}
|
||||
},
|
||||
|
||||
watch: {
|
||||
css: {
|
||||
files: ['<%= src %>sass/**/*.scss'],
|
||||
tasks: ['css']
|
||||
},
|
||||
|
||||
js: {
|
||||
files: ['<%= src %>javascripts/**/*.js'],
|
||||
tasks: ['js']
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
grunt.loadNpmTasks('grunt-sass')
|
||||
grunt.loadNpmTasks('grunt-postcss')
|
||||
grunt.loadNpmTasks('grunt-contrib-watch')
|
||||
grunt.loadNpmTasks('grunt-contrib-uglify')
|
||||
|
||||
grunt.registerTask('css', ['sass', 'postcss'])
|
||||
grunt.registerTask('js', ['uglify'])
|
||||
|
||||
grunt.registerTask('default', ['css', 'js'])
|
||||
}
|
||||
|
||||
21
LICENSE
Normal file
@@ -0,0 +1,21 @@
|
||||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2015 Grzegorz Rajchman <mrliptontea@griego.pl>
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
228
README.md
@@ -2,37 +2,237 @@
|
||||
|
||||
A free Redmine theme for modern browsers.
|
||||
|
||||

|
||||
 [](https://travis-ci.org/mrliptontea/PurpleMine2) [](https://github.com/mrliptontea/PurpleMine2/issues) [](http://standardjs.com/)
|
||||
|
||||
Compatible with Redmine 2.5+ and browsers: IE9+, latest Firefox and Google Chrome (others where not tested).
|
||||
---
|
||||
|
||||
It's written in [SCSS]. It uses [normalize.css] and benefits from some parts of [Bootstrap][bootstrap-sass] like mixins, structure and stuff.
|
||||

|
||||
|
||||
Compatible with Redmine 2.6+ and browsers: IE10+/Edge, latest Firefox and Google Chrome (others were not tested).
|
||||
|
||||
It's written in [SCSS]. It uses [normalize.css] and benefits from some parts of [Bootstrap][bootstrap-sass] like mixins, structure, and stuff.
|
||||
|
||||
## Main features
|
||||
|
||||
* Bigger, easier to read fonts
|
||||
* Wiki content with Github-ish style
|
||||
* Sidebar moved to the left for better ergonomy (it's customizable via `_variables.scss`)
|
||||
* Coloring trackers links (on lists, issue pages and even in the wiki content)
|
||||
* Highlighting issues priority on the list and on the issue page
|
||||
* Bigger, easier to read fonts,
|
||||
* Github-like wiki content look,
|
||||
* Sidebar moved to the left for better ergonomy,
|
||||
* Coloring trackers links (on lists, issue pages and even in the wiki content),
|
||||
* Highlighting issues priority on the list and on the issue page,
|
||||
* Toggling sidebar visibility,
|
||||
* Easy to customize via variables.
|
||||
|
||||
## How install it
|
||||
|
||||
To install PurpleMine, just download [.zip](https://github.com/HolonGlobe/PurpleMine2/archive/master.zip) and unpack it to your Redmine's `public/themes` folder.
|
||||
To install PurpleMine, just download [.zip](https://github.com/mrliptontea/PurpleMine2/archive/master.zip) and unpack it to your Redmine's `public/themes` folder.
|
||||
|
||||
Then go to Redmine > Administration > Settings > Display and select PurpleMine2 from the list and save the changes.
|
||||
|
||||
## Plugins
|
||||
|
||||
This theme also features new look for [Redmine Backlogs][redmine_backlogs] plugin.
|
||||
This theme also features a new look for [Redmine Backlogs][redmine_backlogs] plugin. To install it, simply copy stylesheets from `PurpleMine2/plugins/redmine_backlogs` and overwrite files in `{redmine}/plugins/redmine_backlogs/assets/stylesheets` and restart Redmine.
|
||||
|
||||
To install it, simply copy stylesheets from `PurpleMine2/plugins/redmine_backlogs` and overwrite files in `{redmine}/public/plugin_assets/redmine_backlogs/stylesheets`.
|
||||
Also, [Redmine Time Tracker][redmine_time_tracker] and [Redmine People][redmine_crm_people] plugins should look nice with PurpleMine.
|
||||
|
||||
## License
|
||||
## How to customize it
|
||||
|
||||
[WTFPL](http://www.wtfpl.net/)
|
||||
If you want to customize PurpleMine to your needs, first, make sure that you have installed [node.js](http://nodejs.org/) and `npm` is available in your terminal.
|
||||
|
||||
Then, from the directory that contains PurpleMine run:
|
||||
|
||||
npm install
|
||||
|
||||
Now all the dependencies should be ready to use. Run one more command:
|
||||
|
||||
npm run watch
|
||||
|
||||
And now the grunt is watching for changes in files placed in `src/` folder. Just change what you need, and it'll run Sass preprocessor automatically.
|
||||
|
||||
Regrettably, optional file include is not possible in Sass, so I would recommend creating a new file, e.g. `src/sass/_custom-variables.scss` and importing it a the beginning of the `application.scss` file. That way all the variables with the `!default` flag could be overridden.
|
||||
|
||||
The path `src/sass/_custom-variables.scss` is added to `.gitignore` so it should make upgrading PurpleMine with keeping your changes rather painless, given that the only thing you changed in PurpleMine's source was adding this one line with `@import "custom-variables";`.
|
||||
|
||||
If you need to customize styles for [Redmine Backlogs][redmine_backlogs] remember to include your `_custom-variables.scss` in `src/sass/plugins/redmine_backlogs/_common.scss`.
|
||||
|
||||
## Changelog
|
||||
|
||||
v1.11.0 (2019-03-22):
|
||||
|
||||
* Backported fixes from v2:
|
||||
* Fixed #89: [RM+ custom menu](http://rmplus.pro/en/redmine/plugins/custom_menu) breaking the layout
|
||||
* Fixed #90: regression in some sidebar layouts
|
||||
* Fixed #93: Agile chart expanding indefinitely when Additional "Go to top" link is enabled
|
||||
* Fixed #94: subtasks indentation
|
||||
* Fixed styling of some flash messages
|
||||
* Fixed horizontal scrollbar appearing when sidebar is on the right
|
||||
* Fixed footer being mispositioned in Agile charts
|
||||
* Fixed positioning of admin menu icons for some plugins
|
||||
* Improved support for [Redmine Tags](https://www.redmineup.com/pages/plugins/tags) plugin
|
||||
* Added separator line between news on the news list
|
||||
* Improved Redmine 4.0 compatibility
|
||||
* Updated Font Awesome icons to 4.7.0
|
||||
|
||||
v1.10.0 (2019-03-12):
|
||||
|
||||
* Fixed #86: added support for redmine_hearts plugin
|
||||
|
||||
v1.9.0 (2019-03-01):
|
||||
|
||||
* Fixed #42: override some styles from [RM+](http://rmplus.pro) plugins
|
||||
* Merged #43: fixes for Redmine 3.3.2.devel
|
||||
* Support for responsive menu and further changes for Redmine 3.3.2.devel (fixes #26)
|
||||
* Improved styles for custom flash messages in wiki content (e.g. for [WikiNG](http://www.redmine.org/plugins/wiking) plugin)
|
||||
* Introduce project tiles on projects list page (enabled by default, can be switched off by setting `$use-project-tiles` to `false`)
|
||||
* Fixed #44: adjust width of the label column on the login form
|
||||
* Merged #49: German translations
|
||||
* Fixed #50: printed content on second page onwards was missing in Firefox
|
||||
* Fixed #51: a plugin dropdown in top menu could be too narrow
|
||||
* Fixed #52: delete watcher icon in the sidebar was missing
|
||||
* Fixed #54: long checkbox lists will be scrollable
|
||||
* Fixed #62: anchors won't scroll the page
|
||||
* Fixed #69: fixed "remember me" checkbox layout on login page
|
||||
* Fixed #78: files not visible on list in wiki when there is a lot of them
|
||||
* Updated dependencies
|
||||
* Fixed #81: top watchers checkboxes were not visible on Firefox
|
||||
* Removed `checkbox` and `radio` mixins in favour of `check`
|
||||
* Fixed #83: editor tabs layout in Redmine 4.0
|
||||
|
||||
v1.8.0 (2016-11-20):
|
||||
|
||||
* Fixed #19: missing text wrapping for long text custom fields
|
||||
* Fixed #20: applied Font Awesome font-family for icons in Time Tracker overview
|
||||
* Fixed duplicated pencil icon for Description in issue form in Redmine 3.1.2+
|
||||
* Fixed #21: added styling for compatibility with layout changes in Redmine 3.2.0
|
||||
* Fixed #23: set width for progress bars
|
||||
* Fixed #25: proper styles for pagination
|
||||
* Fixed #28: correct icon will be displayed for users that cannot edit notes in journal
|
||||
* Fixed #30: styles will now compile with latest Sass
|
||||
* Fixed #32, #33: improve @shawndibble's styles for new main menu styles in Redmine 3.3
|
||||
* Various small visual tweaks
|
||||
* Fixed #34: project breadcrumbs in the header should wrap nicely
|
||||
* Fixed #35: `.icon-only` class should now display only icons, buttons with icons should de displayed correctly with Font-Awesome disabled
|
||||
* Fixed #36: npm dependencies can be installed on production environments + update grunt to its latest version
|
||||
* Fixed #37: added support for drag'n'drop re-ordering in issue statuses, roles, and trackers settings
|
||||
* Fixed #38: corrected z-index for dropdown new item menu on backlogs page (thanks to @futaz, see PR #39)
|
||||
* Changed indentation to 2 spaces (to match with Redmine's coding style)
|
||||
* Introduced [autoprefixer](https://github.com/postcss/autoprefixer) via [PostCSS](http://postcss.org)
|
||||
* Updated [scss-lint](https://github.com/brigade/scss-lint) rules
|
||||
* Added [JavaScript Standard Style](http://standardjs.com)
|
||||
|
||||
v1.7.2 (2015-10-12):
|
||||
|
||||
* Fixed `.pagination` float in project members settings
|
||||
* Lists' cells are aligned to center by default (as in Redmine's default theme)
|
||||
|
||||
v1.7.1 (2015-10-10):
|
||||
|
||||
+ Improved styling for [Stuff To Do][stuff_to_do] plugin
|
||||
|
||||
v1.7.0 (2015-09-25):
|
||||
|
||||
* Added styles for optgroup (Firefox only)
|
||||
* Fixed #13: #header was missing clearfix and was breaking the layout is some cases
|
||||
* Coloring issue's title instead of link in Gantt diagram for overdue issues
|
||||
* Updated npm packages: grunt-sass from 0.18.0 to 1.0.0 and grunt-contrib-uglify 0.7.0 to 0.9.1
|
||||
* Use flexbox layout by default (can be changed by setting `$flexbox-layout` to `false`)
|
||||
* Fixed animation issue when showing sidebar
|
||||
* Slightly modified buttons' style
|
||||
* Few visual tweaks: nicer shadows, improved datepickers layout
|
||||
+ Configurable list borders and highlighting of hovered and even/odd rows
|
||||
+ Introduce `$pagination-padding-` variables and make pagination buttons' height equal to buttons by default
|
||||
* Fixed #16: remove `white-space: nowrap` from external links to prevent breaking the page with flexbox layout
|
||||
* Fixed colored trackers in tooltips in Backlogs plugin
|
||||
* Fixed broken codebutton modal after making buttons wider
|
||||
* Changed the license to MIT
|
||||
|
||||
v1.6.0 (2015-06-10):
|
||||
|
||||
* Fixed #8: Setting `$top-menu-collapse` to `true` will enable script allowing to toggle if top menu should be collapsed (no wrapping) or expanded (wrapped, with auto height)
|
||||
+ Header matching current URL fragment will have `#` prepended
|
||||
+ Introduced `$font-weight-normal` and `$font-weight-bold` variables to give better control on the appearance of text with custom fonts
|
||||
* Fixed #9: Added `$main-menu-collapse` and applied the same logic as in #8
|
||||
* Fixed #12: Removed `display: block` from issue's subject link to allow context menu to popup upon right click next to subject
|
||||
* Resolved #11: Company logo can be added to the header
|
||||
|
||||
v1.5.0 (2015-04-15):
|
||||
|
||||
* Fixed #5: Added default style for colored issue links.
|
||||
* Introduced `$tracker-colors-map` and removed `$tracker-X-bg` variables.
|
||||
See d220db1 comments for more details.
|
||||
* Fixed #6: Added default padding for table cells.
|
||||
|
||||
v1.4.1 (2015-04-14):
|
||||
|
||||
* Fixed #3: Closed tasks will be more appreciable.
|
||||
|
||||
v1.4.0 (2015-04-10):
|
||||
|
||||
+ Introduced option `$wiki-page-more-vertical-space` (by default `true`) to improve wiki pages' readability even more
|
||||
* Fixed bottom margin of `pre` tag
|
||||
+ Added a few helper classes from Bootstrap
|
||||
* WYSIWYG's icons will squeeze a little bit on smaller screens
|
||||
* Images in headers will be aligned to the middle vertically
|
||||
+ Introduced `text-normal` class for resetting font's weight
|
||||
+ Added class `toc-active-prev` that will "highlight" TOC as "active".
|
||||
* Fixed #2: Make sure that `.sort` with Font Awesome icons won't have background image
|
||||
* Fixed attachments div's layout for wiki pages
|
||||
|
||||
For more details, see [release v1.4.0](https://github.com/mrliptontea/PurpleMine2/releases/tag/v1.4.0)
|
||||
|
||||
v1.3.0 (2015-04-01):
|
||||
|
||||
* Backlogs: make it possible to click on empty field
|
||||
* Corrected issue form columns widths so they will be equal in all fieldsets
|
||||
* Changesets will look similar to issue's journal
|
||||
+ Improved revision page layout and added Font Awesome icons
|
||||
+ Improved file content view
|
||||
* Fixed #1: Font Awesome icons will no longer break plugins' icons
|
||||
+ Introduced styles for [People][redmine_crm_people] plugin
|
||||
* Enhanced styles for activities list
|
||||
* Regular buttons (e.g. `Cancel`) will look like links in dialog windows
|
||||
* Fixed look of collapsible arrow in Firefox
|
||||
+ Overrode Redmine's revision graph function to make it look better
|
||||
+ Animated collapsible fieldsets
|
||||
+ Custom image based icons changed to base64 embedded data
|
||||
|
||||
v1.2.0 (2015-03-03):
|
||||
|
||||
* Fixed .warning style
|
||||
+ Coloring status on issue page (it'll look like label)
|
||||
* Fixed master backlog sub-menu accessibility
|
||||
+ Changed font weight to normal for sub-projects in project list
|
||||
* Fixed watch task path for .js
|
||||
- Removed unnecessary classes from .sidebar-toggler
|
||||
* Fixed external link icon, when URI contains the word 'edit'
|
||||
* Fixed wiki page headers links font-size
|
||||
+ Changed some trackers default colors
|
||||
+ Bolded user name on issue page if it's current user
|
||||
* Issue's journal appearance changed once again
|
||||
+ Some improvements in wiki formatting
|
||||
+ Introduced HistoryTabs for filtering issue journals
|
||||
* Improved issue page styles and adjusted default priority colors
|
||||
* Backlogs: added delay before hiding backlog menu
|
||||
* Changed ancestor project name in top to equal font size, but different weight
|
||||
* Fixed context menu position regression introduced by sidebar toggle
|
||||
|
||||
v1.1.0 (2015-02-15):
|
||||
|
||||
+ Changed issue's journal appearance
|
||||
+ jQuery UI menus look improved
|
||||
+ Removed box-shadow from boxes
|
||||
+ Bumped grunt-sass version
|
||||
+ Toggling sidebar visibility
|
||||
+ Recompressed images
|
||||
+ Changelog added
|
||||
|
||||
v1.0.0 (2015-02-06):
|
||||
|
||||
Initial version
|
||||
|
||||
[SCSS]: http://sass-lang.com/
|
||||
[normalize.css]: https://github.com/necolas/normalize.css
|
||||
[bootstrap-sass]: https://github.com/twbs/bootstrap-sass
|
||||
[redmine_backlogs]: https://github.com/backlogs/redmine_backlogs
|
||||
[redmine_backlogs]: https://github.com/backlogs/redmine_backlogs
|
||||
[redmine_time_tracker]: https://github.com/hicknhack-software/redmine_time_tracker
|
||||
[redmine_crm_people]: http://www.redminecrm.com/projects/people/
|
||||
[stuff_to_do]: https://github.com/raafael911/stuff_to_do_plugin
|
||||
|
||||
BIN
favicon/favicon.ico
Normal file
|
After Width: | Height: | Size: 5.3 KiB |
|
Before Width: | Height: | Size: 280 KiB After Width: | Height: | Size: 434 KiB |
BIN
fonts/fontawesome-webfont.woff2
Normal file
BIN
images/aci.png
|
Before Width: | Height: | Size: 221 B |
|
Before Width: | Height: | Size: 248 B |
|
Before Width: | Height: | Size: 242 B |
|
Before Width: | Height: | Size: 175 B |
|
Before Width: | Height: | Size: 190 B |
|
Before Width: | Height: | Size: 205 B |
1
javascripts/theme.js
Normal file
3308
package-lock.json
generated
Normal file
40
package.json
@@ -1,26 +1,46 @@
|
||||
{
|
||||
"name": "PurpleMine2",
|
||||
"version": "2.0.0",
|
||||
"description": "A free Redmine 2.5+ theme written in SASS",
|
||||
"description": "A free Redmine 2.6+ theme written in SCSS",
|
||||
"keywords": [
|
||||
"redmine",
|
||||
"theme",
|
||||
"sass",
|
||||
"scss"
|
||||
],
|
||||
"author": "HolonGlobe",
|
||||
"author": "mrliptontea",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git@github.com:HolonGlobe/PurpleMine2.git"
|
||||
"url": "git@github.com:mrliptontea/PurpleMine2.git"
|
||||
},
|
||||
"license": "WTFPL",
|
||||
"license": "MIT",
|
||||
"bugs": {
|
||||
"url": "https://github.com/HolonGlobe/PurpleMine2/issues"
|
||||
"url": "https://github.com/mrliptontea/PurpleMine2/issues"
|
||||
},
|
||||
"homepage": "https://github.com/mrliptontea/PurpleMine2",
|
||||
"scripts": {
|
||||
"build": "grunt",
|
||||
"watch": "grunt watch",
|
||||
"lint": "standard && scss-lint"
|
||||
},
|
||||
"dependencies": {
|
||||
"autoprefixer": "^9.4.8",
|
||||
"grunt": "^1.0.4",
|
||||
"grunt-contrib-uglify": "^4.0.0",
|
||||
"grunt-contrib-watch": "^1.1.0",
|
||||
"grunt-postcss": "^0.9.0",
|
||||
"grunt-sass": "^3.0.2",
|
||||
"node-sass": "^4.11.0"
|
||||
},
|
||||
"homepage": "https://github.com/HolonGlobe/PurpleMine2",
|
||||
"devDependencies": {
|
||||
"grunt": "^0.4.5",
|
||||
"grunt-contrib-watch": "^0.6.1",
|
||||
"grunt-sass": "^0.17.0"
|
||||
"standard": "^12.0.1"
|
||||
},
|
||||
"standard": {
|
||||
"globals": [
|
||||
"$",
|
||||
"localStorage"
|
||||
],
|
||||
"ignore": [
|
||||
"/javascripts"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
1
plugins/redmine_backlogs/jquery/jquery-ui.css
vendored
Normal file
1
plugins/redmine_backlogs/jquery/jquery.multiselect.css
Normal file
@@ -0,0 +1 @@
|
||||
.ui-multiselect{padding:2px 0 2px 4px;text-align:left}.ui-multiselect span.ui-icon{float:right}.ui-multiselect-single .ui-multiselect-checkboxes input{position:absolute !important;top:auto !important;left:-9999px}.ui-multiselect-single .ui-multiselect-checkboxes label{padding:5px !important}.ui-multiselect-header{margin-bottom:3px;padding:3px}.ui-multiselect-header ul{font-size:.92em}.ui-multiselect-header ul li{padding:0 10px 0 0;float:left}.ui-multiselect-header a{text-decoration:none}.ui-multiselect-header a:hover{text-decoration:underline}.ui-multiselect-header span.ui-icon{float:left}.ui-multiselect-header li.ui-multiselect-close{padding-right:0;float:right;text-align:right}.ui-multiselect-menu{-webkit-box-shadow:0 3px 6px rgba(0,0,0,0.16),0 3px 6px rgba(0,0,0,0.23);box-shadow:0 3px 6px rgba(0,0,0,0.16),0 3px 6px rgba(0,0,0,0.23);display:none;position:absolute;z-index:10000;padding:3px;text-align:left}.ui-multiselect-checkboxes{position:relative;padding-right:2px;overflow-y:scroll}.ui-multiselect-checkboxes input[type="checkbox"]{top:0;margin:3px 0 0 -20px;float:left}.ui-multiselect-checkboxes input[type="checkbox"]:focus{outline:none}.ui-multiselect-checkboxes label{display:block;padding:3px 1px;padding-left:26px;border:1px solid transparent;cursor:default;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ui-multiselect-checkboxes label input{position:relative;top:1px}.ui-multiselect-checkboxes li{clear:both;font-size:.92em}.ui-multiselect-checkboxes li.ui-multiselect-optgroup-label{margin-bottom:2px;border-bottom:1px solid #ccc;font-weight:bold;text-align:center}.ui-multiselect-checkboxes li.ui-multiselect-optgroup-label a{display:block;margin:1px 0;padding:3px;text-decoration:none}* html .ui-multiselect-checkboxes label{border:0 none}
|
||||
1
plugins/redmine_backlogs/jquery/jquery.qtip.css
Normal file
@@ -0,0 +1 @@
|
||||
.qtip{position:absolute;top:-31000px;left:-31000px;width:auto;max-width:500px;outline:none}.ui-tooltip-content{-webkit-box-shadow:0 3px 6px rgba(0,0,0,0.16),0 3px 6px rgba(0,0,0,0.23);box-shadow:0 3px 6px rgba(0,0,0,0.16),0 3px 6px rgba(0,0,0,0.23);position:relative;padding:10px;overflow:hidden;border:1px solid #ccc;background-color:#fff;color:#555;font-size:.92em;text-align:left;word-wrap:break-word}.ui-tooltip-tip{border-color:#ccc;background-color:#fff}.ui-tooltip-tip{position:absolute;z-index:10;margin:0 auto;overflow:hidden;border:0 none;background:transparent}
|
||||
@@ -1 +1 @@
|
||||
table th,table td{padding:5px 8px}.ui-widget{margin-bottom:20px}.score{display:inline-block;width:1.5em;font-size:large;text-align:center}.score_0{background-color:#f00}.score_1{background-color:#ff5300}.score_2{background-color:#ff8100}.score_3{background-color:#ffa100}.score_4{background-color:#fb0}.score_5{background-color:#ffd300}.score_6{background-color:#ffec00}.score_7{background-color:#e9fb00}.score_8{background-color:#b1f100}.score_9{background-color:#74e600}.score_10{background-color:#0c0}
|
||||
table th,table td{padding:5px 8px}.ui-widget{margin-bottom:20px}.score{display:inline-block;width:1.5em;font-size:large;text-align:center}.score_0{background-color:#f00}.score_1{background-color:#ff5300}.score_2{background-color:#ff8100}.score_3{background-color:#ffa100}.score_4{background-color:#fb0}.score_5{background-color:#ffd300}.score_6{background-color:#ffec00}.score_7{background-color:#e9fb00}.score_8{background-color:#b1f100}.score_9{background-color:#74e600}.score_10{background-color:#0c0}
|
||||
|
||||
@@ -1,141 +0,0 @@
|
||||
//
|
||||
// Admin
|
||||
// --------------------------------------------------
|
||||
|
||||
#admin-menu {
|
||||
#admin-index > & {
|
||||
ul {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
li {
|
||||
padding: ($sidebar-padding-vertical + 1px) ($sidebar-padding-horizontal + 3px);
|
||||
}
|
||||
|
||||
a {
|
||||
display: inline-block;
|
||||
padding-left: 8 + 16px;
|
||||
background-position: 0 center;
|
||||
}
|
||||
}
|
||||
|
||||
li {
|
||||
list-style-type: none;
|
||||
|
||||
> a {
|
||||
padding-left: $sidebar-padding-horizontal + 8 + 16px;
|
||||
background-repeat: no-repeat;
|
||||
background-position: $sidebar-padding-horizontal center;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Groups
|
||||
*/
|
||||
|
||||
table.members,
|
||||
table.memberships {
|
||||
td.roles {
|
||||
width: 45%;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Permissions
|
||||
*/
|
||||
|
||||
table.permissions {
|
||||
td.role {
|
||||
color: $gray;
|
||||
font-weight: normal;
|
||||
text-align: center;
|
||||
vertical-align: bottom;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Workflows
|
||||
*/
|
||||
|
||||
table.transitions {
|
||||
td.enabled {
|
||||
background: $state-success;
|
||||
}
|
||||
}
|
||||
|
||||
#workflow_copy_form select {
|
||||
width: 200px;
|
||||
}
|
||||
|
||||
#workflow_form table select {
|
||||
width: 90%;
|
||||
min-width: 60px;
|
||||
}
|
||||
|
||||
table.fields_permissions {
|
||||
td.readonly {
|
||||
background: $gray-light;
|
||||
}
|
||||
|
||||
td.required {
|
||||
background: $state-danger;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Enumerations
|
||||
*/
|
||||
|
||||
.controller-enumerations.action-index {
|
||||
#content {
|
||||
> h3,
|
||||
> .list {
|
||||
margin-bottom: $line-height-computed / 2;
|
||||
}
|
||||
|
||||
> p {
|
||||
margin-bottom: $line-height-computed * 2;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Settings labels
|
||||
*/
|
||||
|
||||
fieldset.settings label {
|
||||
display: block;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Settings -> Notifications
|
||||
*/
|
||||
|
||||
fieldset#notified_events {
|
||||
.parent {
|
||||
padding-left: 20px;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Settings -> Repositories
|
||||
*/
|
||||
|
||||
.settings.enabled_scm {
|
||||
table {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
td.scm_name {
|
||||
font-weight: bold;
|
||||
}
|
||||
}
|
||||
@@ -1,146 +0,0 @@
|
||||
//
|
||||
// Base styles
|
||||
// --------------------------------------------------
|
||||
|
||||
html {
|
||||
overflow-y: scroll;
|
||||
}
|
||||
|
||||
body {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
background-color: $body-bg;
|
||||
color: $text-color;
|
||||
font-family: $font-family-base;
|
||||
font-size: $font-size-base;
|
||||
line-height: $line-height-base;
|
||||
}
|
||||
|
||||
a {
|
||||
color: $link-color;
|
||||
text-decoration: none;
|
||||
|
||||
&:hover,
|
||||
&:focus {
|
||||
color: $link-hover-color;
|
||||
text-decoration: $link-hover-decoration;
|
||||
}
|
||||
|
||||
&.issue.closed {
|
||||
color: $link-color-issue-closed;
|
||||
text-decoration: $link-closed-decoration;
|
||||
}
|
||||
|
||||
&.project.closed {
|
||||
color: $link-color-project-closed;
|
||||
}
|
||||
|
||||
&.user.locked {
|
||||
color: $link-color-user-locked;
|
||||
}
|
||||
}
|
||||
|
||||
h1 {
|
||||
margin: 0;
|
||||
font-size: 2em; // ~28px
|
||||
line-height: 30px;
|
||||
}
|
||||
|
||||
h2 {
|
||||
margin-top: 0;
|
||||
margin-bottom: $line-height-computed;
|
||||
font-size: 1.43em; // ~20px
|
||||
font-weight: 500;
|
||||
line-height: $line-height-computed;
|
||||
|
||||
img {
|
||||
vertical-align: middle;
|
||||
}
|
||||
}
|
||||
|
||||
h3 {
|
||||
margin-top: 0;
|
||||
margin-bottom: $line-height-computed;
|
||||
font-size: 1.14em; // ~16px
|
||||
font-weight: 500;
|
||||
line-height: $line-height-computed;
|
||||
}
|
||||
|
||||
h4 {
|
||||
margin-top: 0;
|
||||
font-size: 1em;
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
p {
|
||||
margin: 0 0 ($line-height-computed / 2);
|
||||
}
|
||||
|
||||
small {
|
||||
font-size: $font-size-small;
|
||||
}
|
||||
|
||||
ul,
|
||||
ol {
|
||||
margin-top: 0;
|
||||
margin-bottom: ($line-height-computed / 2);
|
||||
|
||||
ul,
|
||||
ol {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
}
|
||||
|
||||
dl {
|
||||
margin-top: 0;
|
||||
margin-bottom: $line-height-computed;
|
||||
}
|
||||
|
||||
dt {
|
||||
margin-top: $line-height-computed;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
dd {
|
||||
margin-bottom: $line-height-computed;
|
||||
margin-left: $line-height-computed;
|
||||
}
|
||||
|
||||
code,
|
||||
kbd,
|
||||
pre,
|
||||
samp {
|
||||
font-family: $font-family-monospace;
|
||||
font-size: 1em;
|
||||
}
|
||||
|
||||
hr {
|
||||
margin-top: $line-height-computed;
|
||||
margin-bottom: $line-height-computed;
|
||||
border: 0;
|
||||
border-top: 1px solid $hr-border;
|
||||
}
|
||||
|
||||
abbr[title] {
|
||||
border-bottom: 1px dotted $abbr-border-color;
|
||||
cursor: help;
|
||||
}
|
||||
|
||||
blockquote {
|
||||
margin: 0 0 $line-height-computed;
|
||||
padding: floor($line-height-computed / 4) $padding-large-horizontal;
|
||||
border-left: 4px solid $blockquote-border-color-fallback;
|
||||
border-left-color: $blockquote-border-color;
|
||||
|
||||
>:first-child {
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
>:last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.clear {
|
||||
@extend %clearfix;
|
||||
}
|
||||
@@ -1,185 +0,0 @@
|
||||
//
|
||||
// Buttons
|
||||
// --------------------------------------------------
|
||||
|
||||
input[type="button"],
|
||||
input[type="submit"],
|
||||
button {
|
||||
display: inline-block;
|
||||
margin-bottom: 0;
|
||||
border: 1px solid;
|
||||
cursor: pointer;
|
||||
font-weight: $btn-font-weight;
|
||||
text-align: center;
|
||||
white-space: nowrap;
|
||||
@include button-size($input-padding-vertical, $input-padding-horizontal, $font-size-base, $line-height-base, $border-radius-base);
|
||||
@include user-select(none);
|
||||
@include transition(background-color ease-in-out .07s, border-color ease-in-out .07s, box-shadow ease-in-out .07s);
|
||||
@include button-variant($btn-primary-color, $btn-primary-bg, $btn-primary-border);
|
||||
|
||||
&:hover,
|
||||
&:focus {
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
&:active {
|
||||
outline: 0;
|
||||
}
|
||||
|
||||
&.disabled,
|
||||
&[disabled],
|
||||
fieldset[disabled] & {
|
||||
pointer-events: none; // Future-proof disabling of clicks
|
||||
box-shadow: none;
|
||||
@include opacity(.65);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Issue form buttons layout
|
||||
*/
|
||||
|
||||
#issue-form,
|
||||
#history .journal form {
|
||||
input[type="submit"] {
|
||||
margin-right: 5px;
|
||||
|
||||
+ input {
|
||||
@include button-variant($btn-success-color, $btn-success-bg, $btn-success-border);
|
||||
}
|
||||
|
||||
+ a {
|
||||
margin-right: 5px;
|
||||
}
|
||||
|
||||
+ a + a {
|
||||
margin-left: 5px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Project's repository form buttons layout
|
||||
*/
|
||||
|
||||
#repository-form {
|
||||
input[type="submit"] {
|
||||
margin-right: 5px;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Repository's 'View differences' button
|
||||
*/
|
||||
form[action*="repository/diff"] {
|
||||
margin-bottom: $line-height-computed / 2;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* New _something_ form buttons layout
|
||||
*/
|
||||
|
||||
#add_attachment_form,
|
||||
#new_time_entry,
|
||||
#new_project,
|
||||
#new_document,
|
||||
#new_group,
|
||||
#new_user {
|
||||
input[type="submit"] {
|
||||
margin-right: 5px;
|
||||
|
||||
+ input {
|
||||
@include button-variant($btn-success-color, $btn-success-bg, $btn-success-border);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Wiki form buttons layout
|
||||
*/
|
||||
|
||||
#wiki_form {
|
||||
input[type="submit"] {
|
||||
margin-right: 5px;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Forum and news message form buttons layout
|
||||
*/
|
||||
|
||||
#message-form,
|
||||
#news-form {
|
||||
input[type="submit"] {
|
||||
margin-right: 5px;
|
||||
|
||||
+ a {
|
||||
margin-right: 5px;
|
||||
}
|
||||
|
||||
+ a + a {
|
||||
margin-left: 5px;
|
||||
}
|
||||
}
|
||||
|
||||
#message_sticky,
|
||||
#message_locked {
|
||||
position: relative;
|
||||
top: 1px;
|
||||
margin-left: 5px;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Query builder buttons
|
||||
*/
|
||||
|
||||
.query-columns {
|
||||
.buttons {
|
||||
vertical-align: middle;
|
||||
|
||||
input[type="button"] {
|
||||
width: 32px;
|
||||
margin-bottom: 4px;
|
||||
@include button-variant($btn-default-color, $btn-default-bg, $btn-default-border);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Button for toggling multiselect (in filters)
|
||||
*/
|
||||
|
||||
a[data-expands],
|
||||
.toggle-multiselect {
|
||||
position: relative;
|
||||
top: 3px;
|
||||
padding: 2px 8px;
|
||||
border: 1px solid;
|
||||
border-radius: $border-radius-base;
|
||||
background-image: url("../images/bullet_toggle_plus.png");
|
||||
background-repeat: no-repeat;
|
||||
background-position: 2px 2px;
|
||||
cursor: pointer;
|
||||
vertical-align: top;
|
||||
@include user-select(none);
|
||||
@include button-variant($btn-default-color, $btn-default-bg, $btn-default-border);
|
||||
}
|
||||
|
||||
a[data-expands] {
|
||||
display: inline-block;
|
||||
margin-right: 10px;
|
||||
padding: 10px;
|
||||
|
||||
img {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
@@ -1,84 +0,0 @@
|
||||
//
|
||||
// Calendar
|
||||
// --------------------------------------------------
|
||||
|
||||
|
||||
table.cal {
|
||||
width: 100%;
|
||||
margin-bottom: $line-height-computed;
|
||||
border: 1px solid $table-border-color;
|
||||
|
||||
thead th {
|
||||
width: 14%;
|
||||
padding: $table-condensed-cell-padding;
|
||||
background-color: $table-bg-hover;
|
||||
|
||||
&.week-number {
|
||||
width: auto;
|
||||
}
|
||||
}
|
||||
|
||||
tbody tr {
|
||||
height: 100px;
|
||||
}
|
||||
|
||||
td {
|
||||
padding: $table-condensed-cell-padding;
|
||||
border: 1px solid $table-border-color;
|
||||
font-size: $font-size-small;
|
||||
vertical-align: top;
|
||||
|
||||
&.week-number {
|
||||
border: 0 none;
|
||||
background-color: $table-bg-hover;
|
||||
font-size: 1em;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
p.day-num {
|
||||
float: right;
|
||||
font-size: $font-size-large;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
&.odd p.day-num {
|
||||
color: $gray-light;
|
||||
}
|
||||
|
||||
&.today {
|
||||
background: $highlight-bg;
|
||||
|
||||
p.day-num {
|
||||
font-weight: bold;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
table.cal .starting a,
|
||||
p.cal.legend .starting,
|
||||
table.cal .ending a,
|
||||
p.cal.legend .ending {
|
||||
padding-left: 20px;
|
||||
background-image: url("../../../images/bullet_go.png");
|
||||
background-repeat: no-repeat;
|
||||
background-position: 0 center;
|
||||
}
|
||||
|
||||
table.cal .ending a,
|
||||
p.cal.legend .ending {
|
||||
padding-left: 20px;
|
||||
background-image: url("../../../images/bullet_end.png");
|
||||
}
|
||||
|
||||
table.cal .starting.ending a,
|
||||
p.cal.legend .starting.ending {
|
||||
padding-left: 20px;
|
||||
background-image: url("../../../images/bullet_diamond.png");
|
||||
}
|
||||
|
||||
p.cal.legend {
|
||||
span {
|
||||
display: block;
|
||||
}
|
||||
}
|
||||
@@ -1,363 +0,0 @@
|
||||
//
|
||||
// Syntax highlight - CodeRay
|
||||
// --------------------------------------------------
|
||||
|
||||
.syntaxhl {
|
||||
div {
|
||||
display: inline;
|
||||
}
|
||||
|
||||
.line-numbers {
|
||||
margin: 0 5px 0 0;
|
||||
padding: 2px 4px;
|
||||
background-color: #eee;
|
||||
}
|
||||
|
||||
.code pre {
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
.debug {
|
||||
background: #00f !important;
|
||||
color: #fff !important;
|
||||
}
|
||||
|
||||
.annotation {
|
||||
color: #007;
|
||||
}
|
||||
|
||||
.attribute-name {
|
||||
color: #b48;
|
||||
}
|
||||
|
||||
.attribute-value {
|
||||
color: #700;
|
||||
}
|
||||
|
||||
.binary {
|
||||
color: #509;
|
||||
}
|
||||
|
||||
.char {
|
||||
color: #d20;
|
||||
|
||||
.content {
|
||||
color: #d20;
|
||||
}
|
||||
|
||||
.delimiter {
|
||||
color: #710;
|
||||
}
|
||||
}
|
||||
|
||||
.class {
|
||||
color: #795da3;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.class-variable {
|
||||
color: #369;
|
||||
}
|
||||
|
||||
.color {
|
||||
color: #0a0;
|
||||
}
|
||||
|
||||
.comment {
|
||||
color: #969896;
|
||||
|
||||
.char,
|
||||
.delimiter {
|
||||
color: #969896;
|
||||
}
|
||||
}
|
||||
|
||||
.complex {
|
||||
color: #a08;
|
||||
}
|
||||
|
||||
.constant {
|
||||
color: #795da3;
|
||||
}
|
||||
|
||||
.decorator {
|
||||
color: #b0b;
|
||||
}
|
||||
|
||||
.definition {
|
||||
color: #099;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.delimiter {
|
||||
color: #000;
|
||||
}
|
||||
|
||||
.directive {
|
||||
color: #088;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.doc {
|
||||
color: #970;
|
||||
}
|
||||
|
||||
.doc-string {
|
||||
color: #d42;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.doctype {
|
||||
color: #34b;
|
||||
}
|
||||
|
||||
.entity {
|
||||
color: #800;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.error {
|
||||
background-color: #faa;
|
||||
color: #f00;
|
||||
}
|
||||
|
||||
.escape {
|
||||
color: #666;
|
||||
}
|
||||
|
||||
.exception {
|
||||
color: #c00;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.float {
|
||||
color: #06d;
|
||||
}
|
||||
|
||||
.function {
|
||||
color: #06b;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.global-variable {
|
||||
color: #d70;
|
||||
}
|
||||
|
||||
.hex {
|
||||
color: #02b;
|
||||
}
|
||||
|
||||
.imaginary {
|
||||
color: #f00;
|
||||
}
|
||||
|
||||
.include {
|
||||
color: #b44;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.inline {
|
||||
background-color: rgba(#000, .05);
|
||||
color: #000;
|
||||
}
|
||||
|
||||
.inline-delimiter {
|
||||
color: #666;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.instance-variable {
|
||||
color: #33b;
|
||||
}
|
||||
|
||||
.integer {
|
||||
color: #0086b3;
|
||||
}
|
||||
|
||||
.key {
|
||||
color: #606;
|
||||
|
||||
.char {
|
||||
color: #60f;
|
||||
}
|
||||
|
||||
.delimiter {
|
||||
color: #404;
|
||||
}
|
||||
}
|
||||
|
||||
.keyword {
|
||||
color: #b3113e;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.label {
|
||||
color: #970;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.local-variable {
|
||||
color: #369;
|
||||
}
|
||||
|
||||
.namespace {
|
||||
color: #707;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.octal {
|
||||
color: #40e;
|
||||
}
|
||||
|
||||
.predefined {
|
||||
color: #b21;
|
||||
}
|
||||
|
||||
.predefined-constant {
|
||||
color: #009595;
|
||||
}
|
||||
|
||||
.predefined-type {
|
||||
color: #0a5;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.preprocessor {
|
||||
color: #579;
|
||||
}
|
||||
|
||||
.pseudo-class {
|
||||
color: #00c;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.regexp {
|
||||
background-color: hsla(300, 100%, 50%, .06);
|
||||
|
||||
.content {
|
||||
color: #808;
|
||||
}
|
||||
|
||||
.delimiter {
|
||||
color: #404;
|
||||
}
|
||||
|
||||
.modifier {
|
||||
color: #c2c;
|
||||
}
|
||||
}
|
||||
|
||||
.reserved {
|
||||
color: #080;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.shell {
|
||||
background-color: hsla(120, 100%, 50%, .06);
|
||||
|
||||
.content {
|
||||
color: #2b2;
|
||||
}
|
||||
|
||||
.delimiter {
|
||||
color: #161;
|
||||
}
|
||||
}
|
||||
|
||||
.string {
|
||||
.char,
|
||||
.content,
|
||||
.delimiter,
|
||||
.modifier {
|
||||
color: #df5000;
|
||||
}
|
||||
}
|
||||
|
||||
.symbol {
|
||||
color: #d33;
|
||||
|
||||
.content,
|
||||
.delimiter {
|
||||
color: #d33;
|
||||
}
|
||||
}
|
||||
|
||||
.tag {
|
||||
color: #070;
|
||||
}
|
||||
|
||||
.type {
|
||||
color: #339;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.value {
|
||||
color: #088;
|
||||
}
|
||||
|
||||
.variable {
|
||||
color: #037;
|
||||
}
|
||||
|
||||
.insert {
|
||||
background: hsla(120, 100%, 50%, .12);
|
||||
}
|
||||
|
||||
.delete {
|
||||
background: hsla(0, 100%, 50%, .12);
|
||||
}
|
||||
|
||||
.change {
|
||||
background: #007;
|
||||
color: #bbf;
|
||||
}
|
||||
|
||||
.head {
|
||||
background: #505;
|
||||
color: #f8f;
|
||||
|
||||
.filename {
|
||||
color: #fff;
|
||||
}
|
||||
}
|
||||
|
||||
.delete .eyecatcher {
|
||||
margin: -1px;
|
||||
border: 1px solid hsla(0, 100%, 45%, .5);
|
||||
border-bottom: 0 none;
|
||||
border-top-left-radius: 5px;
|
||||
border-top-right-radius: 5px;
|
||||
background-color: hsla(0, 100%, 50%, .2);
|
||||
}
|
||||
|
||||
.insert {
|
||||
.eyecatcher {
|
||||
margin: -1px;
|
||||
border: 1px solid hsla(120, 100%, 25%, .5);
|
||||
border-top: 0 none;
|
||||
border-bottom-left-radius: 5px;
|
||||
border-bottom-right-radius: 5px;
|
||||
background-color: hsla(120, 100%, 50%, .2);
|
||||
}
|
||||
|
||||
.insert {
|
||||
background: transparent;
|
||||
color: #0c0;
|
||||
font-weight: bold;
|
||||
}
|
||||
}
|
||||
|
||||
.delete .delete {
|
||||
background: transparent;
|
||||
color: #c00;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.change .change {
|
||||
color: #88f;
|
||||
}
|
||||
|
||||
.head .head {
|
||||
color: #f4f;
|
||||
}
|
||||
}
|
||||
@@ -1,160 +0,0 @@
|
||||
#main {
|
||||
@extend %clearfix;
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// Main container
|
||||
// --------------------------------------------------
|
||||
|
||||
#content {
|
||||
padding: $padding-side;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// Sidebar
|
||||
// --------------------------------------------------
|
||||
|
||||
#sidebar {
|
||||
width: $sidebar-width - ($sidebar-padding-horizontal * 2) - 1px;
|
||||
padding: $padding-side $sidebar-padding-horizontal;
|
||||
float: $sidebar-position;
|
||||
|
||||
@media screen and (min-width: 1px) {
|
||||
// scss-lint:disable VendorPrefixes
|
||||
$border: $sidebar-link-active-border;
|
||||
$body: $body-bg;
|
||||
|
||||
padding-bottom: $padding-side * 3;
|
||||
background-image: -webkit-linear-gradient($body 1%, $border 10%, $border 85%, $body);
|
||||
background-image: -o-linear-gradient($body 1%, $border 10%, $border 85%, $body);
|
||||
background-image: linear-gradient($body 1%, $border 10%, $border 85%, $body);
|
||||
background-repeat: no-repeat;
|
||||
background-size: 1px 100%;
|
||||
|
||||
@if $sidebar-position == "left" {
|
||||
padding-right: $sidebar-padding-horizontal + 1px;
|
||||
background-position: right 0;
|
||||
box-shadow: inset -9px 0 6px -6px rgba(0, 0, 0, .05);
|
||||
} @else {
|
||||
padding-left: $sidebar-padding-horizontal + 1px;
|
||||
background-position: left 0;
|
||||
box-shadow: inset 9px 0 6px -6px rgba(0, 0, 0, .05);
|
||||
}
|
||||
}
|
||||
|
||||
@if $hide-sidebar-on-screen-xs {
|
||||
@media screen and (max-width: $screen-xs-max) {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
.nosidebar & {
|
||||
width: 0;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
float: none;
|
||||
}
|
||||
|
||||
h3 {
|
||||
margin-top: $line-height-computed * 1.5;
|
||||
}
|
||||
|
||||
> h3:first-child,
|
||||
> form:first-child > h3 {
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
ul {
|
||||
margin: 0 0 ($line-height-computed / 2);
|
||||
padding: 0;
|
||||
|
||||
@if $sidebar-position == "left" {
|
||||
margin-right: -($sidebar-padding-horizontal);
|
||||
} @else {
|
||||
margin-left: -($sidebar-padding-horizontal);
|
||||
}
|
||||
}
|
||||
|
||||
li {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
list-style-type: none;
|
||||
|
||||
> a {
|
||||
display: block;
|
||||
padding: $sidebar-padding-vertical $sidebar-padding-horizontal;
|
||||
border: 1px solid transparent;
|
||||
|
||||
@if $sidebar-position == "left" {
|
||||
border-left-width: 3px;
|
||||
border-radius: $border-radius-large 0 0 $border-radius-large;
|
||||
} @else {
|
||||
border-right-width: 3px;
|
||||
border-radius: 0 $border-radius-large $border-radius-large 0;
|
||||
}
|
||||
|
||||
&:hover {
|
||||
background-color: $sidebar-link-hover-bg;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
&.selected {
|
||||
border-color: $sidebar-link-active-border;
|
||||
background-color: $sidebar-link-active-bg;
|
||||
color: $sidebar-link-active-text;
|
||||
|
||||
@if $sidebar-position == "left" {
|
||||
margin-right: -1px;
|
||||
border-right-color: $body-bg;
|
||||
border-left-color: $sidebar-link-active-side;
|
||||
box-shadow: -3px 1px 2px rgba(0, 0, 0, .1);
|
||||
} @else {
|
||||
margin-left: -1px;
|
||||
border-right-color: $sidebar-link-active-side;
|
||||
border-left-color: $body-bg;
|
||||
box-shadow: 3px 1px 2px rgba(0, 0, 0, .1);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#footer {
|
||||
margin: $line-height-computed $padding-side;
|
||||
padding-top: $line-height-computed;
|
||||
border-top: 1px solid $gray-lighter;
|
||||
color: $gray-light;
|
||||
font-size: $font-size-small;
|
||||
}
|
||||
|
||||
@if $fixed-layout {
|
||||
@media screen and (min-width: $screen-sm-min) {
|
||||
#main-menu ul,
|
||||
#main {
|
||||
width: $width-sm;
|
||||
margin-right: auto;
|
||||
margin-left: auto;
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (min-width: $screen-md-min) {
|
||||
#main-menu ul,
|
||||
#main {
|
||||
width: $width-md;
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (min-width: $screen-lg-min) {
|
||||
#main-menu ul,
|
||||
#main {
|
||||
width: $width-lg;
|
||||
}
|
||||
}
|
||||
|
||||
#main-menu ul > li > a {
|
||||
padding: $main-menu-padding-vertical 1px;
|
||||
}
|
||||
}
|
||||
@@ -1,802 +0,0 @@
|
||||
//
|
||||
// Various layout elements
|
||||
// --------------------------------------------------
|
||||
|
||||
|
||||
/**
|
||||
* Action buttons group
|
||||
*/
|
||||
|
||||
.buttons {
|
||||
margin-top: $line-height-computed;
|
||||
margin-bottom: $line-height-computed;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Export actions
|
||||
*/
|
||||
|
||||
.other-formats {
|
||||
margin: ($line-height-computed / 2) 0 0;
|
||||
text-align: right;
|
||||
|
||||
span + span:before {
|
||||
content: "/ ";
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Collapsible
|
||||
*/
|
||||
|
||||
a.collapsible,
|
||||
.collapsible > legend {
|
||||
cursor: pointer;
|
||||
color: $link-color;
|
||||
@include user-select(none);
|
||||
|
||||
&:hover {
|
||||
color: $link-hover-color;
|
||||
}
|
||||
|
||||
&:before {
|
||||
display: inline-block;
|
||||
position: relative;
|
||||
top: -1px;
|
||||
width: 0;
|
||||
height: 0;
|
||||
margin-right: 3px;
|
||||
border-top: 5px solid;
|
||||
border-right: 5px solid transparent;
|
||||
border-left: 5px solid transparent;
|
||||
content: "";
|
||||
vertical-align: middle;
|
||||
@include rotate(0);
|
||||
@include transition-transform(.1s);
|
||||
}
|
||||
}
|
||||
|
||||
a.collapsible.collapsed,
|
||||
.collapsible.collapsed > legend {
|
||||
&:before {
|
||||
@include rotate(-90deg);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Elements with context menus (doesn't really work on Windows)
|
||||
*/
|
||||
|
||||
.hascontextmenu {
|
||||
cursor: context-menu;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Actions for block
|
||||
*/
|
||||
|
||||
.contextual {
|
||||
padding-left: $padding-base-vertical;
|
||||
float: right;
|
||||
cursor: default;
|
||||
white-space: nowrap;
|
||||
|
||||
input,
|
||||
select {
|
||||
font-size: .9em;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Accessibility specific styles
|
||||
*/
|
||||
|
||||
.hidden-for-sighted {
|
||||
position: absolute;
|
||||
top: auto;
|
||||
left: -10000px;
|
||||
width: 1px;
|
||||
height: 1px;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Responsive autoscroll
|
||||
*/
|
||||
|
||||
.autoscroll {
|
||||
overflow-x: auto;
|
||||
margin-bottom: $line-height-computed;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Container
|
||||
*/
|
||||
|
||||
.box {
|
||||
margin-bottom: $line-height-computed;
|
||||
padding: $panel-body-padding;
|
||||
border: 1px solid $panel-border;
|
||||
border-radius: $border-radius-base;
|
||||
background-color: $panel-bg;
|
||||
color: $panel-color;
|
||||
word-wrap: break-word;
|
||||
box-shadow: $panel-shadow;
|
||||
|
||||
.ui-dialog-content & {
|
||||
padding: 0;
|
||||
border: 0 none;
|
||||
background: transparent;
|
||||
box-shadow: none;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Column form layout
|
||||
*/
|
||||
|
||||
.splitcontent {
|
||||
@extend %clearfix;
|
||||
}
|
||||
|
||||
.splitcontentleft,
|
||||
.splitcontentright {
|
||||
width: 50%;
|
||||
@include box-sizing(border-box);
|
||||
}
|
||||
|
||||
.splitcontentleft {
|
||||
padding-right: ($padding-side / 2);
|
||||
float: left;
|
||||
}
|
||||
|
||||
.splitcontentright {
|
||||
padding-left: ($padding-side / 2);
|
||||
float: right;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Watchers selection list
|
||||
*/
|
||||
|
||||
#users_for_watcher {
|
||||
height: 200px;
|
||||
overflow: auto;
|
||||
|
||||
label {
|
||||
display: block;
|
||||
@include checkbox;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Watchers list
|
||||
*/
|
||||
|
||||
#watchers {
|
||||
select {
|
||||
display: block;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
> .watchers {
|
||||
> li {
|
||||
display: block;
|
||||
margin-bottom: $sidebar-padding-vertical;
|
||||
@extend %clearfix;
|
||||
|
||||
@if $sidebar-position == "left" {
|
||||
padding-right: $sidebar-padding-horizontal;
|
||||
} @else {
|
||||
padding-left: $sidebar-padding-horizontal;
|
||||
}
|
||||
|
||||
> a {
|
||||
display: inline;
|
||||
padding: 0;
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
> .delete {
|
||||
float: right;
|
||||
opacity: .5;
|
||||
vertical-align: middle;
|
||||
|
||||
&:hover {
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
||||
|
||||
img.gravatar {
|
||||
position: relative;
|
||||
top: 1px;
|
||||
margin-right: .5em;
|
||||
vertical-align: top;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Subtitle paragraph (can be seen on activity list)
|
||||
*/
|
||||
|
||||
p.subtitle {
|
||||
margin-top: ($line-height-computed / -2);
|
||||
margin-bottom: $line-height-computed;
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Breadcrumbs (can be seen in time entries report)
|
||||
* No need to style them, but let this selector be here.
|
||||
*/
|
||||
|
||||
// p.breadcrumb {
|
||||
// }
|
||||
|
||||
|
||||
/**
|
||||
* My page layout
|
||||
*/
|
||||
|
||||
#block-form {
|
||||
display: inline;
|
||||
}
|
||||
|
||||
.block-receiver {
|
||||
min-height: 20px;
|
||||
margin: $padding-side / -2;
|
||||
margin-bottom: $line-height-computed;
|
||||
padding: $padding-side / 2;
|
||||
outline: 2px dashed $gray-light;
|
||||
}
|
||||
|
||||
.mypage-box {
|
||||
margin-bottom: $line-height-computed;
|
||||
|
||||
&:last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
&.ui-sortable-handle {
|
||||
outline: 1px solid $gray-lighter;
|
||||
overflow: hidden;
|
||||
|
||||
&:hover {
|
||||
outline: 1px solid $gray-light;
|
||||
}
|
||||
}
|
||||
|
||||
&.ui-sortable-placeholder {
|
||||
outline: 1px dashed $highlight-border;
|
||||
background: $highlight-bg;
|
||||
visibility: visible !important;
|
||||
}
|
||||
|
||||
&.ui-sortable-helper {
|
||||
background: $body-bg;
|
||||
box-shadow: $panel-shadow;
|
||||
}
|
||||
}
|
||||
|
||||
.handle {
|
||||
cursor: move;
|
||||
}
|
||||
|
||||
a.close-icon {
|
||||
display: block;
|
||||
width: 12px;
|
||||
height: 12px;
|
||||
margin-top: 5px;
|
||||
background-image: url("../../../images/close.png");
|
||||
background-repeat: no-repeat;
|
||||
cursor: pointer;
|
||||
overflow: hidden;
|
||||
|
||||
&:hover {
|
||||
background-image: url("../../../images/close_hl.png");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Resetting font for SCM (repository files)
|
||||
*/
|
||||
#content table.filecontent {
|
||||
width: 100%;
|
||||
|
||||
tbody,
|
||||
td.line-code pre {
|
||||
font-family: $font-family-monospace;
|
||||
}
|
||||
|
||||
td.line-code {
|
||||
padding: 2px 5px;
|
||||
|
||||
pre {
|
||||
font-size: 13px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#browser {
|
||||
font-size: 1em;
|
||||
|
||||
tr {
|
||||
border: 0 none;
|
||||
}
|
||||
|
||||
td {
|
||||
padding: $table-condensed-cell-padding;
|
||||
border: 0 none;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Projects list
|
||||
*/
|
||||
|
||||
ul.projects {
|
||||
padding-left: $padding-side;
|
||||
|
||||
&.root {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
li {
|
||||
list-style-type: none;
|
||||
}
|
||||
}
|
||||
|
||||
#projects-index ul.projects {
|
||||
ul.projects {
|
||||
border-left: 2px solid $gray-lighter;
|
||||
}
|
||||
|
||||
li.root {
|
||||
margin-bottom: $line-height-computed;
|
||||
}
|
||||
|
||||
li.child {
|
||||
margin-top: $line-height-computed / 2;
|
||||
}
|
||||
|
||||
a.project {
|
||||
font-size: $font-size-h3;
|
||||
font-weight: bold;
|
||||
}
|
||||
}
|
||||
|
||||
#custom_field_tracker_ids {
|
||||
label {
|
||||
margin-right: 10px;
|
||||
}
|
||||
}
|
||||
|
||||
#notified-projects,
|
||||
#tracker_project_ids,
|
||||
#custom_field_project_ids {
|
||||
> ul {
|
||||
max-height: $line-height-computed * 12;
|
||||
overflow-y: auto;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Time report
|
||||
*/
|
||||
|
||||
table#time-report {
|
||||
td.hours {
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
th {
|
||||
&.period,
|
||||
&.total {
|
||||
text-align: right;
|
||||
}
|
||||
}
|
||||
|
||||
tbody tr {
|
||||
&.subtotal {
|
||||
color: $gray;
|
||||
font-style: italic;
|
||||
|
||||
td.hours {
|
||||
color: $gray-light;
|
||||
}
|
||||
}
|
||||
|
||||
&.total {
|
||||
border-top: 2px solid darken($table-border-color, 5%);
|
||||
background-color: $table-bg-active;
|
||||
font-weight: bold;
|
||||
}
|
||||
}
|
||||
|
||||
.hours-dec {
|
||||
font-size: .9em;
|
||||
}
|
||||
}
|
||||
|
||||
.total-hours {
|
||||
font-weight: bold;
|
||||
|
||||
.hours-int {
|
||||
font-size: $font-size-large * 1.1;
|
||||
}
|
||||
|
||||
.hours-dec {
|
||||
font-size: $font-size-large;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Version issue list and page layout
|
||||
*/
|
||||
|
||||
div#roadmap {
|
||||
.related-issues {
|
||||
margin-bottom: $line-height-computed;
|
||||
|
||||
td.checkbox {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
table.progress {
|
||||
td {
|
||||
height: 16px;
|
||||
}
|
||||
|
||||
+ .percent {
|
||||
position: relative;
|
||||
top: 2px;
|
||||
}
|
||||
}
|
||||
|
||||
.wiki {
|
||||
h1 {
|
||||
&:first-child {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
body.controller-versions.action-show div#roadmap .related-issues {
|
||||
width: 70%;
|
||||
}
|
||||
|
||||
div#version-summary {
|
||||
width: 28%;
|
||||
float: right;
|
||||
|
||||
fieldset {
|
||||
margin-bottom: $line-height-computed;
|
||||
|
||||
&.time-tracking table {
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
th,
|
||||
td.total-hours {
|
||||
text-align: right;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Add form bottom space
|
||||
*/
|
||||
|
||||
#new_document,
|
||||
#add-message,
|
||||
#add-news {
|
||||
margin-bottom: $line-height-computed;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Ajax indicator
|
||||
*/
|
||||
|
||||
#ajax-indicator {
|
||||
position: fixed;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
width: 200px;
|
||||
margin: (($line-height-computed + $padding-large-vertical * 2 + 1px * 2) / -2) ((200px + $padding-large-horizontal * 2 + 1px * 2) / -2);
|
||||
padding: $padding-large-vertical $padding-large-horizontal;
|
||||
border: 1px solid $highlight-border;
|
||||
background-color: $highlight-bg;
|
||||
color: $highlight-text;
|
||||
font-weight: bold;
|
||||
text-align: center;
|
||||
box-shadow: $panel-shadow;
|
||||
opacity: .9;
|
||||
z-index: 100;
|
||||
|
||||
span {
|
||||
padding-left: 26px;
|
||||
background-image: url("../../../images/loading.gif");
|
||||
background-repeat: no-repeat;
|
||||
background-position: 0% 40%;
|
||||
vertical-align: bottom;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Boards (forum)
|
||||
*/
|
||||
|
||||
tr.message {
|
||||
&.locked {
|
||||
color: $gray;
|
||||
}
|
||||
|
||||
&.sticky td.subject {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
td {
|
||||
&.created_on {
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
&.last_message {
|
||||
width: 30%;
|
||||
text-align: left;
|
||||
white-space: nowrap;
|
||||
|
||||
a:last-child {
|
||||
font-weight: bold;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
table.boards {
|
||||
td {
|
||||
&.last-message {
|
||||
width: 30%;
|
||||
text-align: left;
|
||||
white-space: nowrap;
|
||||
|
||||
a:last-child {
|
||||
font-weight: bold;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Topic page
|
||||
*/
|
||||
|
||||
.controller-messages.action-show {
|
||||
h2 {
|
||||
margin-bottom: $line-height-computed / 2;
|
||||
}
|
||||
|
||||
.message {
|
||||
border: 1px solid $gray-lighter;
|
||||
border-radius: $panel-border-radius;
|
||||
background: $gray-lightest;
|
||||
|
||||
> h4,
|
||||
> p {
|
||||
margin-bottom: 0;
|
||||
padding: $padding-base-vertical $padding-base-horizontal;
|
||||
border-bottom: 1px solid mix($gray-lighter, $gray-lightest, 50%);
|
||||
color: $gray;
|
||||
font-size: $font-size-small;
|
||||
|
||||
a {
|
||||
color: $gray-darker;
|
||||
|
||||
&.user {
|
||||
font-weight: bold;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.wiki {
|
||||
padding: $padding-base-horizontal;
|
||||
border-radius: 0 0 $panel-border-radius $panel-border-radius;
|
||||
background: $body-bg;
|
||||
}
|
||||
|
||||
.contextual {
|
||||
position: relative;
|
||||
margin-right: $padding-base-vertical;
|
||||
z-index: 1;
|
||||
|
||||
@if $use-font-awesome {
|
||||
margin-top: $padding-small-vertical;
|
||||
} @else {
|
||||
margin-top: $padding-base-vertical;
|
||||
}
|
||||
|
||||
a {
|
||||
margin-left: ceil($padding-base-vertical / 2);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.reply {
|
||||
margin-bottom: $line-height-computed;
|
||||
}
|
||||
|
||||
@if $use-gravatars {
|
||||
.reply {
|
||||
margin-left: 24px + $padding-base-horizontal;
|
||||
|
||||
> h4 {
|
||||
position: relative;
|
||||
|
||||
&:before,
|
||||
&:after {
|
||||
display: block;
|
||||
position: absolute;
|
||||
top: 6px;
|
||||
right: 100%;
|
||||
left: -14px;
|
||||
width: 0;
|
||||
height: 0;
|
||||
border-style: solid solid outset;
|
||||
border-color: transparent;
|
||||
content: " ";
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
&:after {
|
||||
margin-top: 1px;
|
||||
margin-left: 2px;
|
||||
border-width: 6px;
|
||||
border-right-color: $panel-bg;
|
||||
}
|
||||
|
||||
&:before {
|
||||
border-width: 7px;
|
||||
border-right-color: $panel-border;
|
||||
}
|
||||
}
|
||||
|
||||
img.gravatar {
|
||||
margin-top: $line-height-computed - 24px;
|
||||
margin-left: -(24px + $padding-base-horizontal * 2 + 1px);
|
||||
float: left;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#message_content {
|
||||
height: $line-height-computed * 6;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* News comments
|
||||
*/
|
||||
|
||||
#comments {
|
||||
> h4 {
|
||||
margin-top: $line-height-computed;
|
||||
margin-bottom: $line-height-computed / 2;
|
||||
}
|
||||
}
|
||||
|
||||
#comment_comments {
|
||||
height: $line-height-computed * 6;
|
||||
}
|
||||
|
||||
.summary {
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Diff
|
||||
*/
|
||||
|
||||
.text-diff {
|
||||
margin-bottom: $line-height-computed;
|
||||
padding: $panel-body-padding;
|
||||
border: 1px solid $panel-border;
|
||||
border-radius: $panel-border-radius;
|
||||
background: $body-bg;
|
||||
color: $panel-color;
|
||||
}
|
||||
|
||||
.diff_out {
|
||||
background: $diff-out-bg-light;
|
||||
|
||||
span {
|
||||
background: $diff-out-bg;
|
||||
}
|
||||
}
|
||||
|
||||
.diff_in {
|
||||
background: $diff-in-bg-light;
|
||||
|
||||
span {
|
||||
background: $diff-in-bg;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Repository view
|
||||
*/
|
||||
|
||||
#revision_selector {
|
||||
display: inline;
|
||||
}
|
||||
|
||||
#related-issues {
|
||||
li img {
|
||||
vertical-align: middle;
|
||||
}
|
||||
}
|
||||
|
||||
ul.properties {
|
||||
padding: 0;
|
||||
color: $gray;
|
||||
font-size: $font-size-small;
|
||||
|
||||
li {
|
||||
list-style-type: none;
|
||||
|
||||
span {
|
||||
font-style: italic;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
tr.changeset {
|
||||
td.revision_graph {
|
||||
width: 15%;
|
||||
background-color: #fffffb;
|
||||
}
|
||||
|
||||
td.author,
|
||||
td.committed_on {
|
||||
width: 15%;
|
||||
text-align: center;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
td.comments {
|
||||
p {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
}
|
||||
|
||||
ul {
|
||||
margin-top: 0;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
}
|
||||
@@ -1,92 +0,0 @@
|
||||
//
|
||||
// Flash & error messages
|
||||
// --------------------------------------------------
|
||||
|
||||
|
||||
#errorExplanation,
|
||||
.flash,
|
||||
.nodata,
|
||||
.warning,
|
||||
.conflict {
|
||||
margin-bottom: $line-height-computed;
|
||||
padding: $padding-large-vertical $padding-large-horizontal;
|
||||
padding-left: $padding-large-horizontal + 8px + 16px;
|
||||
border: 1px solid;
|
||||
border-radius: $border-radius-large;
|
||||
|
||||
@if $use-font-awesome {
|
||||
@extend %fa-icon;
|
||||
|
||||
&:before {
|
||||
margin-left: -(8px + 16px);
|
||||
float: left;
|
||||
line-height: $line-height-computed;
|
||||
}
|
||||
} @else {
|
||||
background-repeat: no-repeat;
|
||||
background-position: $padding-large-horizontal 50%;
|
||||
}
|
||||
|
||||
p:last-child,
|
||||
ol:last-child,
|
||||
ul:last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
}
|
||||
|
||||
@mixin flash($color, $background, $border, $link, $icon) {
|
||||
color: $color;
|
||||
background-color: $background;
|
||||
border-color: $border;
|
||||
|
||||
@if $use-font-awesome {
|
||||
@if $icon == "true" { $icon: $fa-var-check; }
|
||||
@elseif $icon == "warning" { $icon: $fa-var-warning; }
|
||||
@elseif $icon == "exclamation" { $icon: $fa-var-exclamation-circle; }
|
||||
|
||||
&:before {
|
||||
content: $icon;
|
||||
}
|
||||
} @else {
|
||||
background-image: url(../../../images/#{$icon}.png);
|
||||
}
|
||||
|
||||
a {
|
||||
color: $link;
|
||||
font-weight: bold;
|
||||
}
|
||||
}
|
||||
|
||||
.flash.notice {
|
||||
@include flash($flash-success-text, $flash-success-bg, $flash-success-border, $flash-success-link, "true");
|
||||
}
|
||||
|
||||
.flash.warning,
|
||||
.conflict,
|
||||
.nodata {
|
||||
@include flash($flash-warning-text, $flash-warning-bg, $flash-warning-border, $flash-warning-link, "warning");
|
||||
}
|
||||
|
||||
#errorExplanation,
|
||||
.flash.error {
|
||||
@include flash($flash-error-text, $flash-error-bg, $flash-error-border, $flash-error-link, "exclamation");
|
||||
}
|
||||
|
||||
.nodata {
|
||||
padding-left: $padding-large-horizontal;
|
||||
text-align: center;
|
||||
|
||||
@if $use-font-awesome {
|
||||
&:before {
|
||||
margin-left: 0;
|
||||
float: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#errorExplanation {
|
||||
h2,
|
||||
p {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
@@ -1,596 +0,0 @@
|
||||
//
|
||||
// Forms
|
||||
// --------------------------------------------------
|
||||
|
||||
form {
|
||||
// display: inline;
|
||||
|
||||
td {
|
||||
padding: $table-condensed-cell-padding;
|
||||
}
|
||||
}
|
||||
|
||||
button,
|
||||
input,
|
||||
select,
|
||||
textarea {
|
||||
font-family: inherit;
|
||||
font-size: $font-size-base;
|
||||
line-height: $line-height-base;
|
||||
@include box-sizing(border-box);
|
||||
}
|
||||
|
||||
select,
|
||||
textarea,
|
||||
/*
|
||||
input[type="datetime"],
|
||||
input[type="datetime-local"],
|
||||
input[type="date"],
|
||||
input[type="month"],
|
||||
input[type="time"],
|
||||
input[type="week"],
|
||||
input[type="number"],
|
||||
input[type="url"],
|
||||
input[type="tel"],
|
||||
input[type="color"]
|
||||
*/
|
||||
input[type="search"],
|
||||
input[type="email"],
|
||||
input[type="text"],
|
||||
input[type="password"] {
|
||||
height: $input-height-base;
|
||||
padding: $input-padding-vertical $input-padding-horizontal;
|
||||
border: 1px solid $input-border;
|
||||
border-radius: $input-border-radius;
|
||||
background-color: $input-bg;
|
||||
color: $input-color;
|
||||
box-shadow: inset 0 1px 2px rgba(0, 0, 0, .075);
|
||||
@include transition(border-color ease-in-out .1s, box-shadow ease-in-out .1s);
|
||||
@include form-control-focus();
|
||||
@include placeholder();
|
||||
|
||||
&[disabled],
|
||||
&[readonly],
|
||||
fieldset[disabled] & {
|
||||
background-color: $input-bg-disabled;
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
||||
|
||||
textarea {
|
||||
resize: vertical;
|
||||
height: auto;
|
||||
}
|
||||
|
||||
input[type="search"] {
|
||||
-webkit-appearance: none;
|
||||
}
|
||||
|
||||
input[type="radio"],
|
||||
input[type="checkbox"] {
|
||||
margin: 4px 5px 0 0;
|
||||
margin-top: 1px \9; // IE8-9
|
||||
line-height: normal;
|
||||
}
|
||||
|
||||
input[type="file"] {
|
||||
display: block;
|
||||
}
|
||||
|
||||
input[type="range"] {
|
||||
display: block;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
input.autocomplete {
|
||||
padding-right: 30px;
|
||||
background-image: url("../images/aci.png"); /* autocomplete indicator */
|
||||
background-repeat: no-repeat;
|
||||
background-position: right center;
|
||||
|
||||
&.ajax-loading {
|
||||
background-image: url("../images/preloader.gif");
|
||||
}
|
||||
}
|
||||
|
||||
select {
|
||||
&[multiple],
|
||||
&[size] {
|
||||
height: auto;
|
||||
}
|
||||
|
||||
option[disabled] {
|
||||
color: $gray-lighter;
|
||||
}
|
||||
}
|
||||
|
||||
select:-moz-focusring {
|
||||
color: transparent;
|
||||
text-shadow: 0 0 0 #000;
|
||||
}
|
||||
|
||||
select.expandable {
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
fieldset {
|
||||
min-width: 0;
|
||||
margin: 0;
|
||||
padding: ($line-height-computed / 2) 0;
|
||||
border: 0 none;
|
||||
border-top: 1px solid $legend-border-color;
|
||||
}
|
||||
|
||||
legend {
|
||||
padding-right: 5px;
|
||||
color: $legend-color;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Required fields' asterisk
|
||||
*/
|
||||
|
||||
span.required {
|
||||
position: relative;
|
||||
top: 3px;
|
||||
margin-left: -.2em;
|
||||
color: #d00;
|
||||
font-size: 1.5em;
|
||||
font-weight: normal;
|
||||
line-height: 0;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Field's hint
|
||||
*/
|
||||
|
||||
em.info {
|
||||
display: block;
|
||||
padding: 2px 0;
|
||||
color: $gray;
|
||||
font-size: $font-size-small;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Wiki editor
|
||||
*/
|
||||
.wiki-edit {
|
||||
color: $wiki-text;
|
||||
font-family: $font-family-monospace;
|
||||
line-height: $wiki-line-height;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Tabular forms
|
||||
*/
|
||||
|
||||
.tabular {
|
||||
&.settings {
|
||||
p {
|
||||
padding-left: $label-wide-width + $label-space;
|
||||
}
|
||||
|
||||
label {
|
||||
width: $label-wide-width;
|
||||
margin-left: -($label-wide-width + $label-space);
|
||||
}
|
||||
}
|
||||
|
||||
p {
|
||||
margin: 0 0 ($line-height-computed / 2);
|
||||
padding-left: $label-width + $label-space;
|
||||
clear: left;
|
||||
@extend %clearfix;
|
||||
|
||||
.jstEditor {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
}
|
||||
|
||||
input,
|
||||
select {
|
||||
max-width: 100%;
|
||||
}
|
||||
|
||||
textarea {
|
||||
display: block;
|
||||
width: 100%;
|
||||
resize: vertical;
|
||||
}
|
||||
|
||||
input[type="radio"],
|
||||
input[type="checkbox"] {
|
||||
position: relative;
|
||||
top: 3px;
|
||||
vertical-align: baseline;
|
||||
}
|
||||
|
||||
span[title] {
|
||||
border-bottom: 1px dotted #aaa;
|
||||
}
|
||||
|
||||
label {
|
||||
width: $label-width;
|
||||
margin-top: $input-padding-vertical + 1px;
|
||||
margin-bottom: $input-padding-vertical + 1px;
|
||||
margin-left: -($label-width + $label-space);
|
||||
float: left;
|
||||
text-align: right;
|
||||
@include user-select(none);
|
||||
|
||||
&.floating {
|
||||
width: 270px;
|
||||
margin-left: 0;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
&.block,
|
||||
&.inline {
|
||||
display: block;
|
||||
width: auto;
|
||||
margin-left: 0;
|
||||
padding-left: 16px;
|
||||
float: none;
|
||||
cursor: pointer;
|
||||
text-align: left;
|
||||
|
||||
> input {
|
||||
margin-top: 0;
|
||||
margin-left: -16px;
|
||||
float: left;
|
||||
}
|
||||
}
|
||||
|
||||
&.inline {
|
||||
display: inline-block;
|
||||
margin-right: 10px;
|
||||
}
|
||||
|
||||
&.role-visibility {
|
||||
padding-left: 34px;
|
||||
}
|
||||
|
||||
> input[type="radio"],
|
||||
> input[type="checkbox"] {
|
||||
top: 1px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Hack: first <p> in issue form ("private" option) is moved to the right with
|
||||
* inline styles. Don't allow it break the layout
|
||||
*/
|
||||
#all_attributes > p[style] {
|
||||
margin-right: 0 !important;
|
||||
margin-bottom: 0;
|
||||
padding-left: 0;
|
||||
|
||||
input {
|
||||
top: 2px;
|
||||
}
|
||||
|
||||
label {
|
||||
margin-right: 0;
|
||||
padding-left: 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Hack: align description edit icon with label
|
||||
*/
|
||||
label[for=issue_description] + a {
|
||||
display: inline-block;
|
||||
margin-top: $input-padding-vertical + 1px;
|
||||
|
||||
img {
|
||||
vertical-align: middle;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Hack: better looking filter checkbox in sidebar in projects list
|
||||
*/
|
||||
label[for=closed] {
|
||||
display: block;
|
||||
margin-bottom: $line-height-computed / 2;
|
||||
@include checkbox;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Input sizes
|
||||
*/
|
||||
|
||||
.wiki-edit,
|
||||
#principal_search,
|
||||
#issue_subject,
|
||||
#time_entry_comments,
|
||||
#content_comments,
|
||||
#user_search,
|
||||
#user_login,
|
||||
#user_firstname,
|
||||
#user_lastname,
|
||||
#user_mail,
|
||||
#my_account_form select,
|
||||
#user_form select,
|
||||
#user_identity_url,
|
||||
#custom_field_possible_values,
|
||||
#custom_field_default_value {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
textarea.text_cf {
|
||||
width: 100%;
|
||||
resize: vertical;
|
||||
}
|
||||
|
||||
input {
|
||||
&.string_cf,
|
||||
&.link_cf {
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
select.bool_cf {
|
||||
width: auto !important;
|
||||
}
|
||||
|
||||
@if $issue-subject-large {
|
||||
$input-padding-large-vertical: 8px;
|
||||
$input-padding-large-horizontal: 12px;
|
||||
$input-height-large: (ceil($font-size-large-px * $line-height-large) + ($input-padding-large-vertical * 2) + 2);
|
||||
|
||||
label[for="issue_subject"] {
|
||||
margin-top: $input-padding-large-vertical * $line-height-large + 1px;
|
||||
}
|
||||
|
||||
#issue_subject {
|
||||
height: $input-height-large;
|
||||
padding: $input-padding-large-vertical $input-padding-large-horizontal;
|
||||
border-radius: $input-border-radius-large;
|
||||
font-size: $font-size-large;
|
||||
line-height: $line-height-large;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Add space below WYSIWYG
|
||||
*/
|
||||
|
||||
.jstEditor {
|
||||
margin-bottom: $line-height-computed / 2;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Attachments
|
||||
*/
|
||||
|
||||
#attachments_fields {
|
||||
input.description {
|
||||
width: 340px;
|
||||
margin-right: 5px;
|
||||
margin-left: 5px;
|
||||
}
|
||||
|
||||
> span {
|
||||
display: block;
|
||||
margin-bottom: $line-height-computed / 2;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
input.filename {
|
||||
width: 250px;
|
||||
padding-left: $input-padding-horizontal + 16px;
|
||||
background-image: url("../../../images/attachment.png");
|
||||
background-repeat: no-repeat;
|
||||
background-position: 4px center;
|
||||
}
|
||||
|
||||
.ajax-waiting input.filename {
|
||||
background-image: url("../../../images/hourglass.png");
|
||||
}
|
||||
|
||||
.ajax-loading input.filename {
|
||||
background-image: url("../../../images/loading.gif");
|
||||
}
|
||||
|
||||
div.ui-progressbar {
|
||||
display: inline-block;
|
||||
width: 100px;
|
||||
height: 14px;
|
||||
margin: 2px 0 -5px 8px;
|
||||
}
|
||||
}
|
||||
|
||||
#add_attachment_form {
|
||||
p {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Issue form elements
|
||||
*/
|
||||
|
||||
#issue-form {
|
||||
fieldset {
|
||||
&:last-child {
|
||||
padding-bottom: 0;
|
||||
|
||||
p {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#attributes {
|
||||
.splitcontentleft,
|
||||
.splitcontentright {
|
||||
width: 100%;
|
||||
padding-right: 0;
|
||||
padding-left: 0;
|
||||
float: left;
|
||||
|
||||
@media screen and (min-width: $screen-sm-min) {
|
||||
width: auto;
|
||||
min-width: 36em;
|
||||
}
|
||||
}
|
||||
|
||||
.splitcontentleft {
|
||||
@media screen and (min-width: $screen-sm-min) {
|
||||
margin-right: $padding-side;
|
||||
}
|
||||
}
|
||||
|
||||
textarea.text_cf,
|
||||
input.string_cf,
|
||||
input.link_cf,
|
||||
select {
|
||||
width: 90%;
|
||||
}
|
||||
|
||||
#issue_estimated_hours,
|
||||
#issue_done_ratio {
|
||||
width: 75px;
|
||||
min-width: 1em;
|
||||
padding-left: 5px;
|
||||
text-align: right;
|
||||
}
|
||||
}
|
||||
|
||||
#watchers_form {
|
||||
overflow: hidden;
|
||||
|
||||
.search_for_watchers {
|
||||
display: block;
|
||||
}
|
||||
|
||||
// scss-lint:disable VendorPrefixes
|
||||
#watchers_inputs {
|
||||
display: block;
|
||||
max-width: 80em;
|
||||
margin-top: $input-padding-vertical + 1px;
|
||||
margin-bottom: $line-height-computed / 2;
|
||||
-webkit-columns: 18em 4;
|
||||
-moz-columns: 18em 4;
|
||||
columns: 18em 4;
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
label.floating {
|
||||
display: block;
|
||||
width: auto;
|
||||
margin: 0;
|
||||
float: none;
|
||||
@include checkbox;
|
||||
|
||||
input[type="checkbox"] {
|
||||
top: -1px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Custom logic (boolean) field displayed as radio buttons
|
||||
*/
|
||||
|
||||
.check_box_group {
|
||||
display: block;
|
||||
overflow-y: auto;
|
||||
|
||||
label {
|
||||
display: block;
|
||||
width: auto;
|
||||
margin-bottom: 0;
|
||||
margin-left: 0;
|
||||
float: none;
|
||||
font-weight: normal;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
&.bool_cf {
|
||||
label {
|
||||
display: inline-block;
|
||||
margin-right: 10px;
|
||||
padding-left: 20px;
|
||||
@include user-select(none);
|
||||
@extend %clearfix;
|
||||
|
||||
input[type="checkbox"],
|
||||
input[type="radio"] {
|
||||
top: 0;
|
||||
margin-left: -20px;
|
||||
float: left;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Filters
|
||||
*/
|
||||
|
||||
fieldset#filters {
|
||||
table {
|
||||
td {
|
||||
vertical-align: top;
|
||||
}
|
||||
}
|
||||
|
||||
td {
|
||||
&.field {
|
||||
min-width: 180px;
|
||||
padding-right: $table-cell-padding * 2;
|
||||
}
|
||||
|
||||
&.operator {
|
||||
min-width: 180px;
|
||||
padding-right: $table-cell-padding * 2;
|
||||
|
||||
select {
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
&.values {
|
||||
white-space: nowrap;
|
||||
|
||||
select {
|
||||
min-width: 130px;
|
||||
}
|
||||
}
|
||||
|
||||
&.add-filter {
|
||||
padding-top: $table-condensed-cell-padding * 2;
|
||||
text-align: right;
|
||||
vertical-align: top;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Reset label style for trackers selector in custom field editor
|
||||
*/
|
||||
|
||||
label.no-css {
|
||||
width: auto;
|
||||
margin-left: 0;
|
||||
float: none;
|
||||
font-weight: inherit;
|
||||
text-align: left;
|
||||
}
|
||||
@@ -1,186 +0,0 @@
|
||||
//
|
||||
// Gantt chart
|
||||
// --------------------------------------------------
|
||||
|
||||
.gantt_hdr {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
height: 16px;
|
||||
border: 1px solid $gray-lighter;
|
||||
border-left-width: 0;
|
||||
text-align: center;
|
||||
overflow: hidden;
|
||||
|
||||
&.nwday {
|
||||
background-color: $gray-lightest;
|
||||
}
|
||||
}
|
||||
|
||||
.gantt_subjects {
|
||||
font-size: $font-size-small;
|
||||
|
||||
div {
|
||||
height: 16px;
|
||||
line-height: 16px;
|
||||
@include text-overflow;
|
||||
}
|
||||
}
|
||||
|
||||
.task {
|
||||
position: absolute;
|
||||
height: 8px;
|
||||
margin: 2px 0 0;
|
||||
padding: 0;
|
||||
font-size: 11px;
|
||||
line-height: 16px;
|
||||
white-space: nowrap;
|
||||
|
||||
&.label {
|
||||
width: 100%;
|
||||
margin-top: 0;
|
||||
|
||||
&.project,
|
||||
&.version {
|
||||
font-weight: bold;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.task_late {
|
||||
border: 1px solid darken($progress-bar-danger-bg, 10%);
|
||||
background-color: $progress-bar-danger-bg;
|
||||
}
|
||||
|
||||
.task_done {
|
||||
border: 1px solid darken($progress-bar-success-bg, 10%);
|
||||
background-color: $progress-bar-success-bg;
|
||||
}
|
||||
|
||||
.task_todo {
|
||||
border: 1px solid darken($progress-bg, 20%);
|
||||
background-color: $progress-bg;
|
||||
|
||||
&.parent {
|
||||
border: 1px solid darken($progress-bg, 30%);
|
||||
background-color: darken($progress-bg, 10%);
|
||||
}
|
||||
}
|
||||
|
||||
.task.parent {
|
||||
height: 3px;
|
||||
}
|
||||
|
||||
.task.parent.marker {
|
||||
&.starting {
|
||||
position: absolute;
|
||||
top: -1px;
|
||||
left: 0;
|
||||
width: 8px;
|
||||
height: 16px;
|
||||
margin-left: -4px;
|
||||
background: url("../../../images/task_parent_end.png") no-repeat 0 0;
|
||||
}
|
||||
|
||||
&.ending {
|
||||
position: absolute;
|
||||
top: -1px;
|
||||
right: 0;
|
||||
width: 8px;
|
||||
height: 16px;
|
||||
margin-left: -4px;
|
||||
background: url("../../../images/task_parent_end.png") no-repeat 0 0;
|
||||
}
|
||||
}
|
||||
|
||||
.project,
|
||||
.version {
|
||||
&.task_late,
|
||||
&.task_done,
|
||||
&.task_todo {
|
||||
height: 2px;
|
||||
margin-top: 3px;
|
||||
}
|
||||
|
||||
&.task_todo {
|
||||
border: 1px solid darken($progress-bar-info-bg, 10%);
|
||||
background-color: $progress-bar-info-bg;
|
||||
}
|
||||
|
||||
&.marker {
|
||||
margin-top: 1px;
|
||||
margin-left: -4px;
|
||||
border: 0 none;
|
||||
background-image: url("../../../images/version_marker.png");
|
||||
background-repeat: no-repeat;
|
||||
}
|
||||
}
|
||||
|
||||
.version-behind-schedule a,
|
||||
.issue-behind-schedule a {
|
||||
color: $brand-warning;
|
||||
|
||||
@if $color-trackers {
|
||||
&.issue {
|
||||
background-color: $brand-warning;
|
||||
color: $brand-text;
|
||||
font-weight: 700;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.version-overdue a,
|
||||
.issue-overdue a,
|
||||
.project-overdue a {
|
||||
color: $brand-danger;
|
||||
|
||||
@if $color-trackers {
|
||||
&.issue {
|
||||
background-color: $brand-danger;
|
||||
color: $brand-text;
|
||||
font-weight: 700;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Tooltips
|
||||
*/
|
||||
|
||||
.tooltip {
|
||||
position: relative;
|
||||
z-index: 24;
|
||||
|
||||
&:hover {
|
||||
z-index: 25;
|
||||
}
|
||||
|
||||
.tip {
|
||||
display: none;
|
||||
position: absolute;
|
||||
top: 9px;
|
||||
left: 24px;
|
||||
width: 270px;
|
||||
padding: $padding-base-vertical;
|
||||
border: 1px solid $tooltip-border;
|
||||
background-color: $tooltip-bg;
|
||||
color: $tooltip-text;
|
||||
font-size: $font-size-small;
|
||||
text-align: left;
|
||||
box-shadow: 0 2px 2px rgba(0, 0, 0, .2);
|
||||
}
|
||||
|
||||
@if $sidebar-position == "left" {
|
||||
tr > td:last-child & {
|
||||
.tip {
|
||||
right: 2px;
|
||||
left: auto;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
&:hover {
|
||||
.tip {
|
||||
display: block;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,34 +0,0 @@
|
||||
//
|
||||
// Gravatars
|
||||
// --------------------------------------------------
|
||||
|
||||
img.gravatar {
|
||||
border-radius: $border-radius-large;
|
||||
line-height: 1;
|
||||
overflow: hidden;
|
||||
vertical-align: middle;
|
||||
|
||||
h2 &,
|
||||
h3 &,
|
||||
h4 & {
|
||||
position: relative;
|
||||
top: -1px;
|
||||
margin-right: 5px;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// For Administration -> /users
|
||||
|
||||
.username img.gravatar {
|
||||
position: relative;
|
||||
top: 1px;
|
||||
margin-right: .5em;
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
/* Used on 12px Gravatar img tags without the icon background */
|
||||
.icon-gravatar {
|
||||
margin-right: 5px;
|
||||
float: left;
|
||||
}
|
||||
@@ -1,389 +0,0 @@
|
||||
//
|
||||
// Issue page
|
||||
// --------------------------------------------------
|
||||
|
||||
.issue.details {
|
||||
margin-bottom: $line-height-computed;
|
||||
padding: $issue-padding;
|
||||
border: 1px solid $issue-border;
|
||||
border-radius: $border-radius-base;
|
||||
background-color: $issue-bg;
|
||||
color: $issue-text;
|
||||
word-wrap: break-word;
|
||||
box-shadow: $panel-shadow;
|
||||
|
||||
@if $use-gravatars
|
||||
{
|
||||
> img.gravatar {
|
||||
width: $issue-gravatar-size;
|
||||
height: $issue-gravatar-size;
|
||||
margin-right: 10px;
|
||||
margin-bottom: $line-height-computed / 2;
|
||||
float: left;
|
||||
}
|
||||
|
||||
table img.gravatar {
|
||||
position: relative;
|
||||
top: -3px;
|
||||
margin-right: 5px;
|
||||
}
|
||||
|
||||
> .subject,
|
||||
> .author {
|
||||
padding-left: $issue-gravatar-size + 10px;
|
||||
}
|
||||
}
|
||||
|
||||
> .subject {
|
||||
h3 {
|
||||
margin-bottom: 5px;
|
||||
color: $gray-darkest;
|
||||
font-size: $issue-heading-size * 1em;
|
||||
font-weight: bold;
|
||||
line-height: $headings-line-height;
|
||||
}
|
||||
|
||||
p {
|
||||
margin-bottom: 5px;
|
||||
font-size: $font-size-small;
|
||||
}
|
||||
}
|
||||
|
||||
> .author {
|
||||
margin-bottom: $line-height-computed;
|
||||
}
|
||||
|
||||
> hr {
|
||||
margin: $issue-padding (-$issue-padding);
|
||||
border-top-color: $issue-border;
|
||||
}
|
||||
|
||||
> .description {
|
||||
> p {
|
||||
margin-bottom: $issue-padding;
|
||||
}
|
||||
|
||||
> .wiki {
|
||||
margin: 0 (-$issue-padding) (-$issue-padding);
|
||||
padding: $padding-wiki;
|
||||
border-top: 1px solid $issue-border;
|
||||
background: $body-bg;
|
||||
}
|
||||
}
|
||||
|
||||
.next-prev-links {
|
||||
color: $gray-light;
|
||||
}
|
||||
}
|
||||
|
||||
div.fileover {
|
||||
background-color: $highlight-bg;
|
||||
}
|
||||
|
||||
div.attachments {
|
||||
margin: $issue-padding (-$issue-padding) (-$issue-padding);
|
||||
padding: $issue-padding;
|
||||
border-top: 1px solid $issue-border;
|
||||
|
||||
p {
|
||||
margin: 10px 0 0;
|
||||
|
||||
&:first-child {
|
||||
margin-top: 0;
|
||||
}
|
||||
}
|
||||
|
||||
img {
|
||||
position: relative;
|
||||
top: -1px;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
.delete {
|
||||
opacity: .5;
|
||||
|
||||
&:hover {
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
||||
|
||||
span.author {
|
||||
color: $gray;
|
||||
font-size: $font-size-small;
|
||||
}
|
||||
}
|
||||
|
||||
div.thumbnails {
|
||||
margin-top: $issue-padding;
|
||||
|
||||
div {
|
||||
display: inline;
|
||||
}
|
||||
|
||||
a {
|
||||
display: inline-block;
|
||||
margin-right: 2px;
|
||||
border: 1px solid $gray-lighter;
|
||||
border-radius: $border-radius-base;
|
||||
background-color: $body-bg;
|
||||
|
||||
&:hover {
|
||||
border-color: $gray-light;
|
||||
}
|
||||
}
|
||||
|
||||
img {
|
||||
top: 0;
|
||||
margin: 3px;
|
||||
border-radius: $border-radius-base - 1;
|
||||
}
|
||||
}
|
||||
|
||||
#issue_tree,
|
||||
#relations {
|
||||
> p {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.issues {
|
||||
margin: ($line-height-computed / 2) 0 0;
|
||||
|
||||
tr:last-child > td {
|
||||
border-bottom: 0 none;
|
||||
}
|
||||
|
||||
td.checkbox {
|
||||
display: none;
|
||||
}
|
||||
|
||||
td.subject {
|
||||
padding-left: 0;
|
||||
}
|
||||
|
||||
td.buttons {
|
||||
vertical-align: middle;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#relations {
|
||||
td.checkbox {
|
||||
display: none;
|
||||
}
|
||||
|
||||
td.buttons {
|
||||
padding: 0;
|
||||
}
|
||||
}
|
||||
|
||||
table.attributes {
|
||||
width: 100%;
|
||||
|
||||
th,
|
||||
td {
|
||||
padding: $table-condensed-cell-padding $table-condensed-cell-padding $table-condensed-cell-padding 0;
|
||||
text-align: left;
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
> tbody > tr {
|
||||
> th {
|
||||
width: 15%;
|
||||
}
|
||||
|
||||
> td {
|
||||
width: 35%;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#new-relation-form {
|
||||
text-align: right;
|
||||
|
||||
> p {
|
||||
margin-bottom: 0;
|
||||
|
||||
> input {
|
||||
margin-right: 5px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$journal-gravatar: 24px;
|
||||
$journal-indent: 0;
|
||||
|
||||
@if $use-gravatars {
|
||||
$journal-indent: $journal-gravatar + 5px;
|
||||
}
|
||||
|
||||
.journal {
|
||||
margin-bottom: $line-height-computed / 2;
|
||||
overflow: auto;
|
||||
|
||||
h4 {
|
||||
margin-bottom: 5px;
|
||||
|
||||
> .gravatar {
|
||||
margin-right: 5px;
|
||||
float: left;
|
||||
}
|
||||
}
|
||||
|
||||
@if $bubble-journal-wiki-note {
|
||||
&.has-details h4 {
|
||||
border-bottom: 1px solid $gray-lighter;
|
||||
}
|
||||
} @else {
|
||||
h4 {
|
||||
border-bottom: 1px solid $gray-lighter;
|
||||
}
|
||||
}
|
||||
|
||||
.details {
|
||||
padding-left: $journal-indent + 15px;
|
||||
|
||||
img {
|
||||
margin: 0 0 -3px 4px;
|
||||
}
|
||||
}
|
||||
|
||||
.wiki {
|
||||
margin-bottom: $line-height-computed / 2;
|
||||
margin-left: $journal-indent;
|
||||
}
|
||||
|
||||
@if $use-gravatars {
|
||||
form {
|
||||
margin-left: $journal-indent;
|
||||
|
||||
.wiki {
|
||||
margin-left: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
i {
|
||||
&:first-of-type,
|
||||
&:last-of-type {
|
||||
padding: $tracker-inline-padding;
|
||||
border-radius: $border-radius-small;
|
||||
font-size: .9285em;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
&:first-of-type {
|
||||
background-color: mix($body-bg, $diff-out-bg, 64%);
|
||||
color: $diff-out-color;
|
||||
}
|
||||
|
||||
&:last-of-type {
|
||||
background-color: mix($body-bg, $diff-in-bg, 64%);
|
||||
color: $diff-in-color;
|
||||
}
|
||||
}
|
||||
|
||||
@if $bubble-journal-wiki-note {
|
||||
&.has-notes {
|
||||
.wiki {
|
||||
position: relative;
|
||||
min-height: $line-height-computed;
|
||||
padding: $padding-large-vertical $padding-base-horizontal;
|
||||
border: 1px solid $gray-lighter;
|
||||
border-left: 2px solid $gray-light;
|
||||
border-radius: $panel-border-radius;
|
||||
background: $body-bg;
|
||||
box-shadow: 0 1px 2px rgba(#000, .1);
|
||||
|
||||
@if $use-gravatars {
|
||||
&:before,
|
||||
&:after {
|
||||
display: block;
|
||||
position: absolute;
|
||||
top: 6px;
|
||||
right: 100%;
|
||||
left: -16px;
|
||||
width: 0;
|
||||
height: 0;
|
||||
border-style: solid solid outset;
|
||||
border-color: transparent;
|
||||
content: " ";
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
&:after {
|
||||
margin-top: 1px;
|
||||
margin-left: 4px;
|
||||
border-width: 6px;
|
||||
border-top-color: $body-bg;
|
||||
border-right-color: $body-bg;
|
||||
}
|
||||
|
||||
&:before {
|
||||
border-width: 8px;
|
||||
border-top-color: $gray-light;
|
||||
border-right-color: $gray-light;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
form .wiki {
|
||||
background-color: #fffbe5;
|
||||
|
||||
.preview {
|
||||
padding-bottom: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.private-notes {
|
||||
@if $bubble-journal-wiki-note {
|
||||
&.has-notes .wiki {
|
||||
border-left-color: $brand-warning;
|
||||
|
||||
&:before {
|
||||
border-top-color: $brand-warning;
|
||||
border-right-color: $brand-warning;
|
||||
}
|
||||
}
|
||||
} @else {
|
||||
margin-left: -(3px + 3px);
|
||||
padding-left: 3px;
|
||||
border-left: 3px solid $brand-warning;
|
||||
border-radius: $border-radius-base 0 0 $border-radius-base;
|
||||
}
|
||||
}
|
||||
|
||||
#activity dt,
|
||||
.journal {
|
||||
clear: left;
|
||||
}
|
||||
|
||||
.journal-link {
|
||||
float: right;
|
||||
}
|
||||
|
||||
span.private {
|
||||
position: relative;
|
||||
top: -1px;
|
||||
padding: $tracker-inline-padding;
|
||||
border-radius: $border-radius-small;
|
||||
background: $brand-warning;
|
||||
color: $brand-text;
|
||||
font-size: .714em;
|
||||
font-weight: bold;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
|
||||
div#issue-changesets {
|
||||
width: 33%;
|
||||
margin-bottom: $line-height-computed;
|
||||
margin-left: $padding-side;
|
||||
float: right;
|
||||
|
||||
div.changeset {
|
||||
padding: $table-cell-padding;
|
||||
border-bottom: 1px solid $gray-lighter;
|
||||
}
|
||||
}
|
||||
@@ -1,265 +0,0 @@
|
||||
//
|
||||
// Tweaks for jQuery UI
|
||||
// --------------------------------------------------
|
||||
|
||||
|
||||
/**
|
||||
* Component containers
|
||||
*/
|
||||
|
||||
.ui-widget {
|
||||
&,
|
||||
input,
|
||||
select,
|
||||
textarea,
|
||||
button {
|
||||
font-family: inherit;
|
||||
font-size: inherit;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Widgets
|
||||
*/
|
||||
|
||||
.ui-widget-content {
|
||||
border: 1px solid $panel-border;
|
||||
background: $body-bg;
|
||||
color: $text-color;
|
||||
|
||||
a {
|
||||
color: $text-color;
|
||||
}
|
||||
}
|
||||
|
||||
.ui-widget-header {
|
||||
border: 0 none;
|
||||
background: $header-bg;
|
||||
color: $header-text;
|
||||
font-weight: bold;
|
||||
|
||||
a,
|
||||
button {
|
||||
&.ui-state-default {
|
||||
border-color: $header-bg;
|
||||
background: $header-bg;
|
||||
color: $header-text;
|
||||
}
|
||||
|
||||
&.ui-state-hover,
|
||||
&.ui-state-focus {
|
||||
border-color: darken($header-bg, 12%);
|
||||
background: darken($header-bg, 10%);
|
||||
}
|
||||
|
||||
.ui-icon {
|
||||
background-image: url("/stylesheets/jquery/images/ui-icons_ffffff_256x240.png");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Interaction states
|
||||
*/
|
||||
|
||||
.ui-state-default,
|
||||
.ui-widget-content .ui-state-default,
|
||||
.ui-widget-header .ui-state-default {
|
||||
border: 1px solid $component-border;
|
||||
background: $component-bg;
|
||||
color: $component-color;
|
||||
font-weight: normal;
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
.ui-state-default a,
|
||||
.ui-state-default a:link,
|
||||
.ui-state-default a:visited {
|
||||
color: $component-color;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.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: 1px solid $component-active-border;
|
||||
background: $component-active-bg;
|
||||
color: $component-active-color;
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
.ui-state-hover a,
|
||||
.ui-state-hover a:hover,
|
||||
.ui-state-hover a:link,
|
||||
.ui-state-hover a:visited,
|
||||
.ui-state-focus a,
|
||||
.ui-state-focus a:hover,
|
||||
.ui-state-focus a:link,
|
||||
.ui-state-focus a:visited {
|
||||
color: $component-active-color;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.ui-state-active,
|
||||
.ui-widget-content .ui-state-active,
|
||||
.ui-widget-header .ui-state-active {
|
||||
border: 1px solid $component-active-border;
|
||||
background: $component-active-bg;
|
||||
color: $component-active-color;
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
.ui-state-active a,
|
||||
.ui-state-active a:link,
|
||||
.ui-state-active a:visited {
|
||||
color: $component-active-color;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Menu (e.g. autocomplete)
|
||||
*/
|
||||
|
||||
.ui-menu-item {
|
||||
border-radius: $panel-border-radius;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Dialogs
|
||||
*/
|
||||
|
||||
.modal {
|
||||
background: $body-bg;
|
||||
z-index: 50;
|
||||
|
||||
h3.title {
|
||||
display: none;
|
||||
}
|
||||
|
||||
p.buttons {
|
||||
margin-bottom: 0;
|
||||
text-align: right;
|
||||
}
|
||||
}
|
||||
|
||||
.ui-dialog {
|
||||
&.ui-widget-content {
|
||||
padding: 3px;
|
||||
border: 0 none;
|
||||
box-shadow: $panel-shadow;
|
||||
}
|
||||
|
||||
.ui-dialog-titlebar-close {
|
||||
right: .5em;
|
||||
}
|
||||
}
|
||||
|
||||
.ui-widget-overlay {
|
||||
background: #000;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Datepicker
|
||||
*/
|
||||
|
||||
img.ui-datepicker-trigger {
|
||||
margin-left: 4px;
|
||||
cursor: pointer;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
.ui-datepicker {
|
||||
padding: 3px;
|
||||
box-shadow: $panel-shadow;
|
||||
|
||||
.ui-datepicker-header {
|
||||
padding: .3em;
|
||||
}
|
||||
|
||||
.ui-datepicker-prev {
|
||||
left: .3em;
|
||||
}
|
||||
|
||||
.ui-datepicker-next {
|
||||
right: .3em;
|
||||
}
|
||||
|
||||
.ui-datepicker-prev,
|
||||
.ui-datepicker-next {
|
||||
top: .3em;
|
||||
border: 0 none;
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
.ui-datepicker-title {
|
||||
margin: 0 (1.8em + .3em);
|
||||
}
|
||||
|
||||
select.ui-datepicker-month,
|
||||
select.ui-datepicker-year {
|
||||
width: 49%;
|
||||
height: 1.8em;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
select.ui-datepicker-year {
|
||||
margin-left: 1%;
|
||||
}
|
||||
|
||||
.ui-datepicker-calendar {
|
||||
table-layout: fixed;
|
||||
|
||||
.ui-state-default {
|
||||
border-color: $body-bg;
|
||||
background: $body-bg;
|
||||
}
|
||||
|
||||
.ui-state-focus,
|
||||
.ui-state-hover {
|
||||
border-color: $component-active-bg;
|
||||
background: $component-active-bg;
|
||||
color: $component-active-color;
|
||||
}
|
||||
|
||||
.ui-state-active {
|
||||
border-color: $highlight-border;
|
||||
background: $highlight-bg;
|
||||
color: $highlight-text;
|
||||
}
|
||||
|
||||
.ui-datepicker-today {
|
||||
.ui-state-highlight {
|
||||
border-color: $component-active-border;
|
||||
}
|
||||
}
|
||||
|
||||
.ui-datepicker-current-day {
|
||||
.ui-state-active {
|
||||
border-color: $highlight-border;
|
||||
}
|
||||
}
|
||||
|
||||
td {
|
||||
padding: 0 1px 1px 0;
|
||||
text-align: right;
|
||||
|
||||
a {
|
||||
padding: .25em .3em .25em 0;
|
||||
border-radius: $border-radius-base;
|
||||
}
|
||||
|
||||
&.ui-datepicker-week-col {
|
||||
padding-right: $table-condensed-cell-padding;
|
||||
color: $gray-light;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,68 +0,0 @@
|
||||
//
|
||||
// WYSIWYG icons
|
||||
// --------------------------------------------------
|
||||
|
||||
.jstElements {
|
||||
@extend %clearfix;
|
||||
|
||||
.box & {
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
button {
|
||||
margin-bottom: 5px;
|
||||
box-shadow: none;
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
.jstb_help {
|
||||
margin-right: 0;
|
||||
margin-left: -6px;
|
||||
float: right;
|
||||
}
|
||||
}
|
||||
|
||||
@if $use-font-awesome
|
||||
{
|
||||
.jstElements {
|
||||
button[type="button"] {
|
||||
padding: 0;
|
||||
background: $body-bg;
|
||||
background-image: none;
|
||||
color: $btn-default-color;
|
||||
@include fa-icon();
|
||||
|
||||
&:before {
|
||||
text-align: center;
|
||||
}
|
||||
}
|
||||
|
||||
.jstb_strong:before { content: $fa-var-bold; }
|
||||
.jstb_em:before { content: $fa-var-italic; }
|
||||
.jstb_ins:before { content: $fa-var-underline; }
|
||||
.jstb_del:before { content: $fa-var-strikethrough; }
|
||||
.jstb_code:before { content: $fa-var-code; }
|
||||
.jstb_h1:before { content: $fa-var-header; }
|
||||
.jstb_h2:before { content: $fa-var-header; font-size: 11px; }
|
||||
.jstb_h3:before { content: $fa-var-header; font-size: 9px; }
|
||||
.jstb_ul:before { content: $fa-var-list-ul; }
|
||||
.jstb_ol:before { content: $fa-var-list-ol; }
|
||||
.jstb_bq:before { content: $fa-var-indent; }
|
||||
.jstb_unbq:before { content: $fa-var-outdent; }
|
||||
.jstb_pre:before { content: $fa-var-terminal; }
|
||||
.jstb_link:before { content: $fa-var-link; }
|
||||
.jstb_img:before { content: $fa-var-image; }
|
||||
|
||||
button.jstb_help {
|
||||
color: $link-color;
|
||||
|
||||
&:hover {
|
||||
color: $link-hover-color;
|
||||
}
|
||||
|
||||
&:before {
|
||||
content: $fa-var-question-circle;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,459 +0,0 @@
|
||||
//
|
||||
// Lists
|
||||
// --------------------------------------------------
|
||||
|
||||
table.list {
|
||||
width: 100%;
|
||||
margin-bottom: $line-height-computed;
|
||||
font-size: $font-size-list;
|
||||
|
||||
.autoscroll & {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
th {
|
||||
padding: $table-cell-padding;
|
||||
border-bottom: 2px solid $table-border-color;
|
||||
color: $gray;
|
||||
vertical-align: bottom;
|
||||
|
||||
a {
|
||||
color: $gray-darker;
|
||||
}
|
||||
}
|
||||
|
||||
td {
|
||||
padding: $table-cell-padding;
|
||||
border-bottom: 1px solid $table-border-color;
|
||||
text-align: center;
|
||||
vertical-align: top;
|
||||
|
||||
&.checkbox {
|
||||
width: 15px;
|
||||
padding: $table-cell-padding 0 0;
|
||||
|
||||
input {
|
||||
margin: 2px 0 0;
|
||||
}
|
||||
}
|
||||
|
||||
&.id,
|
||||
&.tracker,
|
||||
&.parent,
|
||||
&.relations {
|
||||
width: 2%;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
&.id {
|
||||
font-weight: bold;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
&.name,
|
||||
&.description,
|
||||
&.subject,
|
||||
&.comments,
|
||||
&.roles {
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
&.tick {
|
||||
width: 15%;
|
||||
}
|
||||
|
||||
&.buttons {
|
||||
width: 15%;
|
||||
text-align: right;
|
||||
white-space: nowrap;
|
||||
|
||||
a {
|
||||
padding-right: 5px;
|
||||
}
|
||||
}
|
||||
|
||||
&.reorder {
|
||||
width: 15%;
|
||||
text-align: center;
|
||||
white-space: nowrap;
|
||||
}
|
||||
}
|
||||
|
||||
caption {
|
||||
padding: .5em .5em .5em 0;
|
||||
text-align: left;
|
||||
}
|
||||
}
|
||||
|
||||
tr.project {
|
||||
.name a {
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
&.closed,
|
||||
&.archived,
|
||||
&.closed a,
|
||||
&.archived a {
|
||||
color: #aaa;
|
||||
}
|
||||
|
||||
&.idnt .name span {
|
||||
padding-left: 16px;
|
||||
background: url("../images/bullet_arrow_right.png") no-repeat -5px 50%;
|
||||
}
|
||||
|
||||
@for $i from 1 through 9 {
|
||||
&.idnt-#{$i} .name {
|
||||
padding-left: $table-cell-padding + 16px * ($i - 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
tr.issue {
|
||||
text-align: center;
|
||||
white-space: nowrap;
|
||||
|
||||
&.string,
|
||||
&.text,
|
||||
.subject,
|
||||
.category {
|
||||
white-space: normal;
|
||||
}
|
||||
|
||||
.autoscroll & {
|
||||
.subject > a {
|
||||
display: block;
|
||||
}
|
||||
}
|
||||
|
||||
&.relations {
|
||||
text-align: left;
|
||||
white-space: normal;
|
||||
|
||||
span {
|
||||
white-space: nowrap;
|
||||
}
|
||||
}
|
||||
|
||||
&.done_ratio table.progress {
|
||||
margin-right: auto;
|
||||
margin-left: auto;
|
||||
}
|
||||
|
||||
&.idnt .subject a {
|
||||
padding-left: 16px;
|
||||
background-image: url("../images/bullet_arrow_right.png");
|
||||
background-repeat: no-repeat;
|
||||
|
||||
@if $color-trackers {
|
||||
background-position: 0 0;
|
||||
} @else {
|
||||
background-position: -5px 0;
|
||||
}
|
||||
}
|
||||
|
||||
.controller-issues.action-index & {
|
||||
&.assigned-to-me {
|
||||
.assigned_to,
|
||||
.subject {
|
||||
a {
|
||||
font-weight: bold;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@for $i from 1 through 9 {
|
||||
&.idnt-#{$i} .subject {
|
||||
padding-left: $table-cell-padding + 16px * ($i - 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.issues {
|
||||
.description {
|
||||
padding: 0;
|
||||
text-align: left;
|
||||
|
||||
@media screen and (min-width: $screen-sm-min) {
|
||||
> .wiki {
|
||||
max-height: 20em;
|
||||
padding: $padding-wiki;
|
||||
overflow: auto;
|
||||
}
|
||||
}
|
||||
|
||||
pre {
|
||||
white-space: normal;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
tr {
|
||||
span.expander {
|
||||
margin-left: 0;
|
||||
padding-left: 8px;
|
||||
background: url("../images/bullet_toggle_plus.png") no-repeat center center;
|
||||
cursor: pointer;
|
||||
@include user-select(none);
|
||||
}
|
||||
|
||||
&.open span.expander {
|
||||
background-image: url("../images/bullet_toggle_minus.png");
|
||||
}
|
||||
}
|
||||
|
||||
// /* do you */ .even {
|
||||
// }
|
||||
|
||||
td.center {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.issue-report {
|
||||
table-layout: fixed;
|
||||
}
|
||||
|
||||
tr.builtin td.name {
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
tr.entry {
|
||||
border: 1px solid $gray-lighter;
|
||||
|
||||
td {
|
||||
white-space: nowrap;
|
||||
|
||||
&.filename {
|
||||
width: 30%;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
&.filename_no_report {
|
||||
width: 70%;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
&.size {
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
&.revision,
|
||||
&.author {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
&.age {
|
||||
text-align: right;
|
||||
}
|
||||
}
|
||||
|
||||
&.file td {
|
||||
&.filename a,
|
||||
&.filename_no_report a {
|
||||
margin-left: 16px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Priorities
|
||||
*/
|
||||
|
||||
@if $color-priorities {
|
||||
@include priority(".priority-lowest", $priority-lowest-bg, $priority-lowest-text, $priority-lowest-link);
|
||||
@include priority(".priority-default", $priority-default-bg, $priority-default-text, $priority-default-link);
|
||||
@include priority(".priority-high3", $priority-high3-bg, $priority-high3-text, $priority-high3-link);
|
||||
@include priority(".priority-high2", $priority-high2-bg, $priority-high2-text, $priority-high2-link);
|
||||
@include priority(".priority-highest", $priority-highest-bg, $priority-highest-text, $priority-highest-link);
|
||||
}
|
||||
|
||||
@if $color-trackers {
|
||||
@include tracker(".tracker-1", $tracker-1-bg, $tracker-1-text);
|
||||
@include tracker(".tracker-2", $tracker-2-bg, $tracker-2-text);
|
||||
@include tracker(".tracker-3", $tracker-3-bg, $tracker-3-text);
|
||||
@include tracker(".tracker-4", $tracker-4-bg, $tracker-4-text);
|
||||
@include tracker(".tracker-5", $tracker-5-bg, $tracker-5-text);
|
||||
@include tracker(".tracker-6", $tracker-6-bg, $tracker-6-text);
|
||||
@include tracker(".tracker-7", $tracker-7-bg, $tracker-7-text);
|
||||
}
|
||||
|
||||
.odd {
|
||||
background-color: $table-bg-accent;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* List groups
|
||||
*/
|
||||
|
||||
tr.group {
|
||||
> td {
|
||||
border-bottom: 1px solid $table-border-color;
|
||||
font-weight: bold;
|
||||
text-align: left;
|
||||
|
||||
a {
|
||||
color: $brand-primary;
|
||||
}
|
||||
}
|
||||
|
||||
.toggle-all {
|
||||
display: none;
|
||||
color: $gray-light;
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
&:hover .toggle-all {
|
||||
display: inline;
|
||||
}
|
||||
|
||||
.count {
|
||||
display: inline-block;
|
||||
margin: 0 5px;
|
||||
padding: 1px 4px;
|
||||
border-radius: $border-radius-small;
|
||||
background-color: $brand-primary;
|
||||
color: $brand-text;
|
||||
font-size: $font-size-small;
|
||||
}
|
||||
}
|
||||
|
||||
.toggle-all:hover {
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Time entry in report
|
||||
*/
|
||||
|
||||
tr.time-entry {
|
||||
text-align: center;
|
||||
|
||||
td.issue,
|
||||
td.comments {
|
||||
text-align: left;
|
||||
white-space: normal;
|
||||
}
|
||||
|
||||
td.hours {
|
||||
padding-right: .5em;
|
||||
font-weight: bold;
|
||||
text-align: right;
|
||||
|
||||
.hours-dec {
|
||||
font-size: .9em;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Wiki page history entry
|
||||
*/
|
||||
|
||||
tr.wiki-page-version {
|
||||
td.updated_on,
|
||||
td.author {
|
||||
text-align: center;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Project versions list
|
||||
*/
|
||||
|
||||
tr.version {
|
||||
&.closed {
|
||||
color: $gray;
|
||||
|
||||
a {
|
||||
color: $gray;
|
||||
}
|
||||
}
|
||||
|
||||
td {
|
||||
&.date,
|
||||
&.status,
|
||||
&.sharing {
|
||||
text-align: center;
|
||||
white-space: nowrap;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Users list
|
||||
*/
|
||||
|
||||
tr.user {
|
||||
td {
|
||||
width: 13%;
|
||||
white-space: nowrap;
|
||||
|
||||
&.username,
|
||||
&.firstname,
|
||||
&.lastname {
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
&.email {
|
||||
width: 18%;
|
||||
text-align: left;
|
||||
}
|
||||
}
|
||||
|
||||
&.locked,
|
||||
&.registered,
|
||||
&.locked a,
|
||||
&.registered a {
|
||||
color: $gray-light;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Plugins list
|
||||
*/
|
||||
|
||||
table.plugins {
|
||||
.configure {
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
span.name {
|
||||
margin-bottom: .5em;
|
||||
font-size: $font-size-large;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.description,
|
||||
.url {
|
||||
display: block;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Files list
|
||||
*/
|
||||
|
||||
table.files {
|
||||
tbody th {
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
tr.file td {
|
||||
&.filename {
|
||||
padding-left: 20px + $table-cell-padding;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
&.digest {
|
||||
font-family: $font-family-monospace;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,47 +0,0 @@
|
||||
//
|
||||
// Login form
|
||||
// --------------------------------------------------
|
||||
|
||||
$login-form-width: 350px;
|
||||
$login-input-width: 200px;
|
||||
|
||||
#login-form {
|
||||
margin: $line-height-computed * 2 auto;
|
||||
|
||||
table {
|
||||
margin: auto;
|
||||
}
|
||||
|
||||
@media screen and (min-width: $screen-sm-min) {
|
||||
width: $login-form-width;
|
||||
|
||||
padding: $panel-body-padding;
|
||||
border: 1px solid $panel-border;
|
||||
border-radius: $border-radius-base;
|
||||
background-color: $panel-bg;
|
||||
color: $panel-color;
|
||||
box-shadow: $panel-shadow;
|
||||
|
||||
table {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
td {
|
||||
width: 90%; // make columns expand
|
||||
padding: $table-cell-padding;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#username,
|
||||
#password,
|
||||
#openid_url {
|
||||
width: $login-input-width;
|
||||
}
|
||||
|
||||
#openid_url {
|
||||
padding-right: 8px + 24px;
|
||||
background-image: url("../../../images/openid-bg.gif");
|
||||
background-repeat: no-repeat;
|
||||
background-position: ($login-input-width - 24px) center;
|
||||
}
|
||||
@@ -1,36 +0,0 @@
|
||||
//
|
||||
// Pagination (multiple pages)
|
||||
// --------------------------------------------------
|
||||
.pagination {
|
||||
.previous,
|
||||
.next,
|
||||
.page {
|
||||
display: inline-block;
|
||||
padding: $padding-small-vertical $padding-small-horizontal;
|
||||
border: 1px solid $pagination-border;
|
||||
border-radius: $border-radius-base;
|
||||
background-color: $pagination-bg;
|
||||
color: $pagination-color;
|
||||
text-decoration: none;
|
||||
|
||||
&:hover,
|
||||
&:focus {
|
||||
border-color: $pagination-hover-border;
|
||||
background-color: $pagination-hover-bg;
|
||||
color: $pagination-hover-color;
|
||||
}
|
||||
}
|
||||
|
||||
.page.current {
|
||||
border-color: $pagination-active-border;
|
||||
background-color: $pagination-active-bg;
|
||||
cursor: default;
|
||||
color: $pagination-active-color;
|
||||
z-index: 2;
|
||||
}
|
||||
|
||||
.items,
|
||||
.per-page {
|
||||
margin-left: $padding-small-vertical;
|
||||
}
|
||||
}
|
||||
@@ -1,72 +0,0 @@
|
||||
//
|
||||
// Redmine Backlogs
|
||||
// --------------------------------------------------
|
||||
|
||||
#backlogs_view_issues_sidebar {
|
||||
> a {
|
||||
display: block;
|
||||
padding: $sidebar-padding-vertical $sidebar-padding-horizontal;
|
||||
border: 1px solid transparent;
|
||||
|
||||
@if $sidebar-position == "left" {
|
||||
margin-right: -($sidebar-padding-horizontal);
|
||||
border-left-width: 3px;
|
||||
border-radius: $border-radius-large 0 0 $border-radius-large;
|
||||
} @else {
|
||||
margin-left: -($sidebar-padding-horizontal);
|
||||
border-right-width: 3px;
|
||||
border-radius: 0 $border-radius-large $border-radius-large 0;
|
||||
}
|
||||
|
||||
&:hover {
|
||||
background-color: $sidebar-link-hover-bg;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
+ br {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// Redmine Time Tracker
|
||||
// --------------------------------------------------
|
||||
|
||||
@if $use-font-awesome {
|
||||
.icon.icon-start,
|
||||
.icon.icon-stop {
|
||||
background-image: none;
|
||||
}
|
||||
|
||||
.icon.icon-start {
|
||||
color: $icon-success-color;
|
||||
|
||||
&:hover,
|
||||
&:focus {
|
||||
color: $icon-success-color;
|
||||
}
|
||||
|
||||
&:before {
|
||||
content: $fa-var-clock-o;
|
||||
}
|
||||
}
|
||||
|
||||
.icon.icon-stop {
|
||||
color: $icon-danger-color;
|
||||
|
||||
&:hover,
|
||||
&:focus {
|
||||
color: $icon-danger-color;
|
||||
}
|
||||
|
||||
&:before {
|
||||
content: $fa-var-history;
|
||||
}
|
||||
}
|
||||
|
||||
.time-tracker-quick-menu:empty {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
@@ -1,41 +0,0 @@
|
||||
//
|
||||
// Media print specific styles
|
||||
// --------------------------------------------------
|
||||
|
||||
@media print {
|
||||
#top-menu,
|
||||
#header,
|
||||
#main-menu,
|
||||
#sidebar,
|
||||
#footer,
|
||||
#wiki_add_attachment,
|
||||
.hide-when-print,
|
||||
.contextual,
|
||||
.other-formats {
|
||||
display: none;
|
||||
}
|
||||
|
||||
#main {
|
||||
background: #fff;
|
||||
}
|
||||
|
||||
#content {
|
||||
width: 100%;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
border: 0;
|
||||
background: #fff;
|
||||
overflow: visible !important;
|
||||
}
|
||||
|
||||
.autoscroll {
|
||||
overflow-x: visible;
|
||||
}
|
||||
|
||||
table.list {
|
||||
th,
|
||||
td {
|
||||
border: 1px solid #aaa;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,44 +0,0 @@
|
||||
//
|
||||
// Progress bar
|
||||
// --------------------------------------------------
|
||||
|
||||
table.progress {
|
||||
margin-top: 1px;
|
||||
margin-right: 5px;
|
||||
float: left;
|
||||
border: 1px solid rgba(#000, .1);
|
||||
empty-cells: show;
|
||||
|
||||
td {
|
||||
height: 12px;
|
||||
padding: 0;
|
||||
border: 0 none;
|
||||
|
||||
&.closed {
|
||||
background-color: $progress-bar-success-bg;
|
||||
}
|
||||
|
||||
&.done {
|
||||
background-color: mix($progress-bar-success-bg, $progress-bg, 50%);
|
||||
}
|
||||
|
||||
&.todo {
|
||||
background-color: $progress-bg;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
p {
|
||||
&.percent {
|
||||
margin-bottom: 0;
|
||||
font-size: $font-size-small;
|
||||
}
|
||||
|
||||
&.progress-info {
|
||||
margin-top: -4px;
|
||||
margin-bottom: 0;
|
||||
clear: left;
|
||||
color: #777;
|
||||
font-size: 80%;
|
||||
}
|
||||
}
|
||||
@@ -1,100 +0,0 @@
|
||||
//
|
||||
// Activity and search results list
|
||||
// --------------------------------------------------
|
||||
|
||||
|
||||
#search-results,
|
||||
div#activity dl {
|
||||
margin-left: $padding-side;
|
||||
}
|
||||
|
||||
div#activity,
|
||||
#search-results {
|
||||
dd {
|
||||
margin-bottom: $line-height-computed;
|
||||
padding-left: $padding-side;
|
||||
}
|
||||
|
||||
dt {
|
||||
margin-bottom: 2px;
|
||||
padding-left: $padding-side;
|
||||
background-repeat: no-repeat;
|
||||
background-position: 0 center;
|
||||
}
|
||||
|
||||
span.project:after {
|
||||
content: " -";
|
||||
}
|
||||
|
||||
span.description {
|
||||
display: block;
|
||||
color: $gray;
|
||||
font-style: italic;
|
||||
}
|
||||
}
|
||||
|
||||
div#activity {
|
||||
dt {
|
||||
&.me .time {
|
||||
border-bottom: 1px solid $gray-lighter;
|
||||
}
|
||||
|
||||
.time {
|
||||
color: $gray;
|
||||
}
|
||||
}
|
||||
|
||||
dd {
|
||||
font-size: $font-size-small;
|
||||
}
|
||||
|
||||
dt.grouped,
|
||||
dd.grouped {
|
||||
margin-left: $padding-side;
|
||||
}
|
||||
}
|
||||
|
||||
div#search-results-counts {
|
||||
float: right;
|
||||
|
||||
ul {
|
||||
@extend %clearfix;
|
||||
}
|
||||
|
||||
li {
|
||||
margin-left: 1em;
|
||||
float: left;
|
||||
list-style-type: none;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Search form
|
||||
|
||||
#search-form {
|
||||
input,
|
||||
select {
|
||||
margin-right: 5px;
|
||||
}
|
||||
|
||||
label {
|
||||
display: inline-block;
|
||||
margin-right: 5px;
|
||||
@include checkbox;
|
||||
}
|
||||
|
||||
p:last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Search results highlight
|
||||
|
||||
.highlight {
|
||||
background-color: #fe8;
|
||||
|
||||
&.token-1 { background-color: #fba; }
|
||||
&.token-2 { background-color: #afb; }
|
||||
&.token-3 { background-color: #aef; }
|
||||
}
|
||||
@@ -1,142 +0,0 @@
|
||||
//
|
||||
// Tabs
|
||||
// --------------------------------------------------
|
||||
|
||||
.tabs {
|
||||
$tabs-buttons-width: 40px;
|
||||
|
||||
position: relative;
|
||||
margin-bottom: $line-height-computed;
|
||||
padding-right: $tabs-buttons-width;
|
||||
overflow: hidden;
|
||||
|
||||
> ul {
|
||||
width: 2000px; // stop it from breaking
|
||||
margin: 0;
|
||||
padding-left: 0;
|
||||
border-bottom: 1px solid $tab-border;
|
||||
list-style: none;
|
||||
@extend %clearfix;
|
||||
|
||||
> li {
|
||||
margin-bottom: -1px;
|
||||
float: left;
|
||||
|
||||
> a {
|
||||
display: block;
|
||||
margin-right: 2px;
|
||||
padding: $tab-padding-vertical $tab-padding-horizontal;
|
||||
border: 1px solid transparent;
|
||||
border-radius: $border-radius-base $border-radius-base 0 0;
|
||||
|
||||
&:hover,
|
||||
&:focus {
|
||||
border-color: $tab-hover-border $tab-hover-border $tab-border;
|
||||
background-color: $tab-hover-bg;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
&.selected {
|
||||
border-color: $tab-active-border $tab-active-border $tab-active-bg;
|
||||
background: $tab-active-bg;
|
||||
color: $tab-active-text;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.tabs-buttons {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
right: 0;
|
||||
width: $tabs-buttons-width;
|
||||
padding-left: 5px;
|
||||
background-color: $body-bg;
|
||||
|
||||
> button {
|
||||
width: 50%;
|
||||
height: $tab-padding-vertical * 2 + $line-height-computed;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
float: left;
|
||||
border: 0 none;
|
||||
background-color: $body-bg;
|
||||
background-repeat: no-repeat;
|
||||
background-position: center center;
|
||||
box-shadow: none;
|
||||
opacity: .8;
|
||||
@include transition(opacity .1s);
|
||||
|
||||
&:hover,
|
||||
&:active {
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
&:active {
|
||||
background-color: $tab-hover-bg;
|
||||
}
|
||||
}
|
||||
|
||||
.tab-left {
|
||||
background-image: url("../images/bullet_arrow_left.png");
|
||||
}
|
||||
|
||||
.tab-right {
|
||||
background-image: url("../images/bullet_arrow_right.png");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Specific tabs content layout
|
||||
*/
|
||||
|
||||
#tab-content-modules fieldset p {
|
||||
margin: 3px 0 4px;
|
||||
}
|
||||
|
||||
#tab-content-members,
|
||||
#tab-content-memberships,
|
||||
#tab-content-users {
|
||||
.splitcontentleft {
|
||||
width: 65%;
|
||||
}
|
||||
|
||||
.splitcontentright {
|
||||
width: 35%;
|
||||
}
|
||||
|
||||
fieldset {
|
||||
margin-bottom: $line-height-computed;
|
||||
|
||||
legend {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
label {
|
||||
display: block;
|
||||
margin-bottom: 3px;
|
||||
@include checkbox;
|
||||
}
|
||||
|
||||
label[for=principal_search] {
|
||||
padding-left: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.pagination .items {
|
||||
margin-left: 0;
|
||||
}
|
||||
}
|
||||
|
||||
#tab-content-members,
|
||||
#tab-content-users {
|
||||
#principals {
|
||||
max-height: 400px;
|
||||
overflow: auto;
|
||||
}
|
||||
}
|
||||
|
||||
#tab-content-memberships .splitcontentright select {
|
||||
width: 100%;
|
||||
}
|
||||
@@ -1,167 +0,0 @@
|
||||
//
|
||||
// Top menu
|
||||
// --------------------------------------------------
|
||||
|
||||
#top-menu {
|
||||
padding: $padding-small-vertical $padding-side;
|
||||
background: $top-menu-bg;
|
||||
color: $top-menu-text;
|
||||
font-size: $font-size-small;
|
||||
@extend %clearfix;
|
||||
|
||||
ul {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
li {
|
||||
display: inline;
|
||||
margin: 0 .5em 0 0;
|
||||
padding: 0;
|
||||
list-style-type: none;
|
||||
}
|
||||
|
||||
a {
|
||||
color: $top-menu-link;
|
||||
font-weight: bold;
|
||||
|
||||
&:hover {
|
||||
color: $top-menu-link-hover;
|
||||
text-decoration: none;
|
||||
}
|
||||
}
|
||||
|
||||
#loggedas {
|
||||
float: right;
|
||||
}
|
||||
}
|
||||
|
||||
#account {
|
||||
float: right;
|
||||
|
||||
> ul > li {
|
||||
margin-right: 0;
|
||||
margin-left: .5em;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// Header
|
||||
// --------------------------------------------------
|
||||
|
||||
#header {
|
||||
position: relative;
|
||||
background-color: $header-bg;
|
||||
color: $header-text;
|
||||
|
||||
> h1 {
|
||||
padding: 10px $padding-side;
|
||||
|
||||
> .root {
|
||||
color: $header-root;
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
> .ancestor {
|
||||
font-size: 80%;
|
||||
}
|
||||
}
|
||||
|
||||
a {
|
||||
color: $header-link;
|
||||
}
|
||||
}
|
||||
|
||||
#quick-search {
|
||||
margin-top: ($header-title-line-height + $padding-large-vertical * 2 - $input-height-base - 1px) / 2;
|
||||
margin-right: $padding-side;
|
||||
float: right;
|
||||
color: $header-text;
|
||||
|
||||
label {
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
form {
|
||||
display: inline;
|
||||
}
|
||||
|
||||
input,
|
||||
select {
|
||||
margin-left: 5px;
|
||||
border-color: darken($header-bg, 15%);
|
||||
background: darken($header-bg, 10%);
|
||||
color: $header-root;
|
||||
@include transition(color ease-in-out .1s, background-color ease-in-out .1s, border-color ease-in-out .1s);
|
||||
|
||||
&:focus {
|
||||
border-color: darken($header-bg, 35%);
|
||||
background-color: $input-bg;
|
||||
color: $input-color;
|
||||
box-shadow: inset 0 1px 3px rgba(0, 0, 0, .3);
|
||||
}
|
||||
}
|
||||
|
||||
input {
|
||||
width: 200px;
|
||||
}
|
||||
}
|
||||
|
||||
#main-menu {
|
||||
border-bottom: 1px solid $main-menu-border;
|
||||
background-color: $main-menu-bg;
|
||||
|
||||
@media screen and (max-width: $screen-sm-max) {
|
||||
font-size: $font-size-small-px;
|
||||
}
|
||||
|
||||
ul {
|
||||
margin: 0;
|
||||
padding: 0 ($padding-side - $main-menu-padding-horizontal);
|
||||
color: $main-menu-link;
|
||||
list-style: none;
|
||||
@extend %clearfix;
|
||||
|
||||
> li {
|
||||
margin-right: .5em;
|
||||
margin-bottom: -1px;
|
||||
float: left;
|
||||
|
||||
> a {
|
||||
display: block;
|
||||
padding: $main-menu-padding-vertical 0;
|
||||
@include transition(box-shadow .2s);
|
||||
|
||||
@media screen and (min-width: $screen-md-min) {
|
||||
padding-right: $main-menu-padding-horizontal;
|
||||
padding-left: $main-menu-padding-horizontal;
|
||||
}
|
||||
|
||||
@media screen and (min-width: $screen-lg-min) {
|
||||
padding-right: $main-menu-padding-horizontal * 2;
|
||||
padding-left: $main-menu-padding-horizontal * 2;
|
||||
}
|
||||
|
||||
&:hover,
|
||||
&:focus {
|
||||
outline: 0 none;
|
||||
text-decoration: none;
|
||||
box-shadow: inset 0 (-$main-menu-shadow-width) 0 $main-menu-shadow-hover;
|
||||
}
|
||||
|
||||
&.selected {
|
||||
padding-bottom: $main-menu-padding-vertical - $main-menu-shadow-width;
|
||||
border-bottom: 3px solid $main-menu-shadow-active;
|
||||
color: $main-menu-link-active;
|
||||
font-weight: bold;
|
||||
box-shadow: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
a {
|
||||
color: $main-menu-link;
|
||||
}
|
||||
}
|
||||
@@ -1,293 +0,0 @@
|
||||
.wiki-page {
|
||||
margin-bottom: $line-height-computed;
|
||||
font-size: $wiki-font-size;
|
||||
}
|
||||
|
||||
.controller-wiki .wiki > .preview {
|
||||
font-size: $wiki-font-size;
|
||||
}
|
||||
|
||||
div.wiki {
|
||||
color: $wiki-text;
|
||||
line-height: $wiki-line-height;
|
||||
|
||||
h1,
|
||||
h2,
|
||||
h3,
|
||||
h4,
|
||||
h5,
|
||||
h6 {
|
||||
margin-top: 1em;
|
||||
margin-bottom: .5em;
|
||||
font-weight: $headings-font-weight;
|
||||
line-height: $headings-line-height;
|
||||
}
|
||||
|
||||
h1 { font-size: $font-size-h1; }
|
||||
h2 { font-size: $font-size-h2; }
|
||||
h3 { font-size: $font-size-h3; }
|
||||
h4 { font-size: $font-size-h4; }
|
||||
h5 { font-size: $font-size-h5; }
|
||||
h6 { font-size: $font-size-h6; }
|
||||
|
||||
h1,
|
||||
h2 {
|
||||
padding-bottom: .3em;
|
||||
border-bottom: 1px solid $gray-lighter;
|
||||
}
|
||||
|
||||
h6 {
|
||||
color: $gray;
|
||||
}
|
||||
|
||||
> a:first-child {
|
||||
+ h1,
|
||||
+ h2,
|
||||
+ h3,
|
||||
+ h4,
|
||||
+ h5,
|
||||
+ h6 {
|
||||
margin-top: 0;
|
||||
}
|
||||
}
|
||||
|
||||
> *:last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.contextual {
|
||||
a {
|
||||
opacity: .4;
|
||||
|
||||
&:hover {
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ul,
|
||||
ol {
|
||||
padding-left: 2em;
|
||||
|
||||
ol {
|
||||
list-style-type: lower-roman;
|
||||
|
||||
ol {
|
||||
list-style-type: lower-alpha;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
li > p {
|
||||
margin-top: ($line-height-computed / 2);
|
||||
}
|
||||
|
||||
table {
|
||||
// scss-lint:disable DuplicateProperty
|
||||
display: block;
|
||||
width: 100%;
|
||||
margin-bottom: $line-height-computed;
|
||||
overflow: auto;
|
||||
word-break: normal;
|
||||
word-break: keep-all;
|
||||
}
|
||||
|
||||
tr:nth-child(2n) {
|
||||
background-color: $table-bg-accent;
|
||||
}
|
||||
|
||||
td,
|
||||
th {
|
||||
padding: $table-cell-padding;
|
||||
border: 1px solid $table-border-color;
|
||||
}
|
||||
|
||||
.noborder {
|
||||
border: 0 none;
|
||||
|
||||
td,
|
||||
th {
|
||||
border: 0 none;
|
||||
}
|
||||
}
|
||||
|
||||
a.new {
|
||||
color: $brand-danger;
|
||||
}
|
||||
|
||||
code {
|
||||
// scss-lint:disable DuplicateProperty
|
||||
padding: .2em .33em;
|
||||
border-radius: $border-radius-base;
|
||||
background-color: #f5f5f5; // IE8 fallback
|
||||
background-color: rgba(#000, .04);
|
||||
font-size: $font-size-small;
|
||||
}
|
||||
|
||||
pre {
|
||||
// scss-lint:disable DuplicateProperty
|
||||
width: auto;
|
||||
padding: 4px 8px;
|
||||
border: 1px solid #e7e7e7;
|
||||
border-radius: $border-radius-base;
|
||||
border-color: rgba(#000, .068);
|
||||
background-color: #f7f7f7; // IE8 fallback
|
||||
background-color: rgba(#000, .03);
|
||||
overflow-x: auto;
|
||||
overflow-y: hidden;
|
||||
font-size: $font-size-small;
|
||||
|
||||
code {
|
||||
padding: 0;
|
||||
border-radius: 0;
|
||||
background-color: transparent;
|
||||
font-size: 1em;
|
||||
}
|
||||
}
|
||||
|
||||
.toc {
|
||||
margin-bottom: $line-height-computed;
|
||||
margin-left: 0;
|
||||
padding: 0;
|
||||
list-style-type: none;
|
||||
|
||||
&.right,
|
||||
&.left {
|
||||
max-width: 45%;
|
||||
padding: 8px;
|
||||
border: 1px solid $highlight-border;
|
||||
border-radius: $border-radius-base;
|
||||
background-color: $highlight-bg;
|
||||
font-size: $font-size-small;
|
||||
box-shadow: $panel-shadow;
|
||||
|
||||
a {
|
||||
color: $highlight-text;
|
||||
font-weight: normal;
|
||||
text-decoration: none;
|
||||
|
||||
&:hover {
|
||||
color: darken($highlight-text, 10%);
|
||||
text-decoration: underline;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
&.right {
|
||||
margin-right: 0;
|
||||
margin-left: $line-height-computed;
|
||||
float: right;
|
||||
}
|
||||
|
||||
&.left {
|
||||
margin-right: $line-height-computed;
|
||||
margin-left: 0;
|
||||
float: left;
|
||||
}
|
||||
|
||||
ul {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
font-size: $font-size-small;
|
||||
|
||||
ul {
|
||||
font-size: 1em;
|
||||
}
|
||||
}
|
||||
|
||||
li {
|
||||
// scss-lint:disable SelectorDepth
|
||||
margin: 0;
|
||||
|
||||
li {
|
||||
list-style-type: disc;
|
||||
margin-left: 1.5em;
|
||||
|
||||
li {
|
||||
list-style-type: circle;
|
||||
|
||||
li {
|
||||
list-style-type: square;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
img {
|
||||
max-width: 100%;
|
||||
vertical-align: middle;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
h1,
|
||||
h2,
|
||||
h3,
|
||||
h4,
|
||||
h5,
|
||||
h6 {
|
||||
.wiki-anchor {
|
||||
display: none;
|
||||
position: relative;
|
||||
top: -(1em - $font-size-small);
|
||||
margin-left: 5px;
|
||||
color: $gray-lighter !important;
|
||||
font-size: $font-size-small;
|
||||
text-decoration: none !important;
|
||||
}
|
||||
|
||||
&:hover {
|
||||
.wiki-anchor {
|
||||
display: inline;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
p.footnote {
|
||||
margin-bottom: 5px;
|
||||
|
||||
&:before {
|
||||
display: block;
|
||||
width: 300px;
|
||||
margin-top: $line-height-computed;
|
||||
padding-top: $line-height-computed / 2;
|
||||
border-top: 1px solid $gray-lighter;
|
||||
content: "";
|
||||
}
|
||||
|
||||
+ p.footnote:before {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
.preview {
|
||||
margin-top: $line-height-computed;
|
||||
padding: $padding-wiki;
|
||||
background-color: #fffbe5;
|
||||
background-image: url("../images/draft.png");
|
||||
background-position: center center;
|
||||
|
||||
html[lang="pl"] & {
|
||||
background-image: url("../images/draft-pl.png");
|
||||
}
|
||||
}
|
||||
|
||||
#wiki_add_attachment {
|
||||
padding-top: $line-height-computed;
|
||||
border-top: 1px solid $gray-lighter;
|
||||
|
||||
> p {
|
||||
float: left;
|
||||
}
|
||||
|
||||
#add_attachment_form {
|
||||
clear: left;
|
||||
}
|
||||
}
|
||||
|
||||
.controller-wiki.action-show {
|
||||
.other-formats {
|
||||
margin-top: 0;
|
||||
float: right;
|
||||
}
|
||||
}
|
||||
26
sass/lib/font-awesome/_mixins.scss
vendored
@@ -1,26 +0,0 @@
|
||||
// Mixins
|
||||
// scss-lint:disable VendorPrefixes
|
||||
// --------------------------
|
||||
|
||||
@mixin fa-icon() {
|
||||
display: inline-block;
|
||||
font: normal normal normal 14px/1 FontAwesome; // shortening font declaration
|
||||
font-size: inherit; // can't have font-size inherit on line above, so need to override
|
||||
text-rendering: auto; // optimizelegibility throws things off #1094
|
||||
-webkit-font-smoothing: antialiased;
|
||||
-moz-osx-font-smoothing: grayscale;
|
||||
}
|
||||
|
||||
@mixin fa-icon-rotate($degrees, $rotation) {
|
||||
filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=#{$rotation});
|
||||
-webkit-transform: rotate($degrees);
|
||||
-ms-transform: rotate($degrees);
|
||||
transform: rotate($degrees);
|
||||
}
|
||||
|
||||
@mixin fa-icon-flip($horiz, $vert, $rotation) {
|
||||
filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=#{$rotation});
|
||||
-webkit-transform: scale($horiz, $vert);
|
||||
-ms-transform: scale($horiz, $vert);
|
||||
transform: scale($horiz, $vert);
|
||||
}
|
||||
13
sass/lib/font-awesome/_path.scss
vendored
@@ -1,13 +0,0 @@
|
||||
/* FONT PATH
|
||||
* -------------------------- */
|
||||
|
||||
@font-face {
|
||||
font-family: "FontAwesome";
|
||||
src: url("#{$fa-font-path}/fontawesome-webfont.eot?v=#{$fa-version}");
|
||||
src: url("#{$fa-font-path}/fontawesome-webfont.eot?#iefix&v=#{$fa-version}") format("embedded-opentype"),
|
||||
url("#{$fa-font-path}/fontawesome-webfont.woff?v=#{$fa-version}") format("woff"),
|
||||
url("#{$fa-font-path}/fontawesome-webfont.ttf?v=#{$fa-version}") format("truetype"),
|
||||
url("#{$fa-font-path}/fontawesome-webfont.svg?v=#{$fa-version}#fontawesomeregular") format("svg");
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
}
|
||||
@@ -1,39 +0,0 @@
|
||||
// Button sizes
|
||||
@mixin button-size($padding-vertical, $padding-horizontal, $font-size, $line-height, $border-radius) {
|
||||
padding: $padding-vertical $padding-horizontal;
|
||||
font-size: $font-size;
|
||||
line-height: $line-height;
|
||||
border-radius: $border-radius;
|
||||
}
|
||||
|
||||
@mixin button-variant($color, $bg, $border) {
|
||||
$focus-bg: darken($bg, 8%);
|
||||
$focus-border: darken($border, 8%);
|
||||
$active-shadow: inset 0 1px 3px rgba(#000, .3);
|
||||
|
||||
color: $color;
|
||||
border-color: $border;
|
||||
background-color: $bg;
|
||||
box-shadow: 0 1px 0 $border;
|
||||
|
||||
@if lightness($bg) > 90 {
|
||||
$focus-bg: darken($bg, 5%);
|
||||
$focus-border: darken($border, 5%);
|
||||
$active-shadow: inset 0 1px 2px rgba(#000, .1);
|
||||
}
|
||||
|
||||
&:hover,
|
||||
&:focus {
|
||||
border-color: $focus-border;
|
||||
background-color: $focus-bg;
|
||||
color: $color;
|
||||
box-shadow: 0 1px 0 $focus-border;
|
||||
}
|
||||
|
||||
&:active {
|
||||
border-color: $border;
|
||||
background-color: $bg;
|
||||
@include translate(0, 1px);
|
||||
box-shadow: $active-shadow;
|
||||
}
|
||||
}
|
||||
@@ -1,7 +0,0 @@
|
||||
// Center-align a block level element
|
||||
|
||||
@mixin center-block() {
|
||||
display: block;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
@@ -1,34 +0,0 @@
|
||||
// Clearfix
|
||||
//
|
||||
// For modern browsers
|
||||
// 1. The use of `table` rather than `block` is only necessary if using
|
||||
// `:before` to contain the top-margins of child elements.
|
||||
// 2. The space content is one way to avoid an Opera bug when the
|
||||
// contenteditable attribute is included anywhere else in the document.
|
||||
// Otherwise it causes space to appear at the top and bottom of elements
|
||||
// that are clearfixed.
|
||||
//
|
||||
// Source: http://nicolasgallagher.com/micro-clearfix-hack/
|
||||
|
||||
@mixin clearfix() {
|
||||
&:before,
|
||||
&:after {
|
||||
display: table; // 1
|
||||
content: " "; // 2
|
||||
}
|
||||
|
||||
&:after {
|
||||
clear: both;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Lighter (for output CSS) cleafix with placeholder
|
||||
|
||||
%clearfix {
|
||||
&:after {
|
||||
display: table;
|
||||
clear: both;
|
||||
content: "";
|
||||
}
|
||||
}
|
||||
@@ -1,43 +0,0 @@
|
||||
// Form control focus state
|
||||
//
|
||||
@mixin form-control-focus($color: $input-border-focus) {
|
||||
&:focus {
|
||||
border-color: $color;
|
||||
outline: 0;
|
||||
box-shadow: inset 0 1px 2px rgba(0, 0, 0, .075), 0 0 5px rgba($color, .5);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Form control sizing
|
||||
//
|
||||
@mixin input-size($parent, $input-height, $padding-vertical, $padding-horizontal, $font-size, $line-height, $border-radius) {
|
||||
#{$parent} {
|
||||
height: $input-height;
|
||||
padding: $padding-vertical $padding-horizontal;
|
||||
border-radius: $border-radius;
|
||||
font-size: $font-size;
|
||||
line-height: $line-height;
|
||||
}
|
||||
|
||||
select#{$parent} {
|
||||
height: $input-height;
|
||||
line-height: $input-height;
|
||||
}
|
||||
|
||||
textarea#{$parent},
|
||||
select[multiple]#{$parent} {
|
||||
height: auto;
|
||||
}
|
||||
}
|
||||
|
||||
@mixin checkbox() {
|
||||
padding-left: 20px;
|
||||
@include user-select(none);
|
||||
@extend %clearfix;
|
||||
|
||||
input[type="checkbox"] {
|
||||
margin-left: -20px;
|
||||
float: left;
|
||||
}
|
||||
}
|
||||
@@ -1,62 +0,0 @@
|
||||
// Gradients
|
||||
// scss-lint:disable VendorPrefixes
|
||||
|
||||
|
||||
// Horizontal gradient, from left to right
|
||||
//
|
||||
// Creates two color stops, start and end, by specifying a color and position for each color stop.
|
||||
// Color stops are not available in IE9 and below.
|
||||
@mixin gradient-horizontal($start-color: #555, $end-color: #333, $start-percent: 0%, $end-percent: 100%) {
|
||||
background-image: -webkit-linear-gradient(left, $start-color $start-percent, $end-color $end-percent); // Safari 5.1-6, Chrome 10+
|
||||
background-image: -o-linear-gradient(left, $start-color $start-percent, $end-color $end-percent); // Opera 12
|
||||
background-image: linear-gradient(to right, $start-color $start-percent, $end-color $end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+
|
||||
background-repeat: repeat-x;
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#{ie-hex-str($start-color)}', endColorstr='#{ie-hex-str($end-color)}', GradientType=1); // IE9 and down
|
||||
}
|
||||
|
||||
// Vertical gradient, from top to bottom
|
||||
//
|
||||
// Creates two color stops, start and end, by specifying a color and position for each color stop.
|
||||
// Color stops are not available in IE9 and below.
|
||||
@mixin gradient-vertical($start-color: #555, $end-color: #333, $start-percent: 0%, $end-percent: 100%) {
|
||||
background-image: -webkit-linear-gradient(top, $start-color $start-percent, $end-color $end-percent); // Safari 5.1-6, Chrome 10+
|
||||
background-image: -o-linear-gradient(top, $start-color $start-percent, $end-color $end-percent); // Opera 12
|
||||
background-image: linear-gradient(to bottom, $start-color $start-percent, $end-color $end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+
|
||||
background-repeat: repeat-x;
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#{ie-hex-str($start-color)}', endColorstr='#{ie-hex-str($end-color)}', GradientType=0); // IE9 and down
|
||||
}
|
||||
|
||||
@mixin gradient-directional($start-color: #555, $end-color: #333, $deg: 45deg) {
|
||||
background-repeat: repeat-x;
|
||||
background-image: -webkit-linear-gradient($deg, $start-color, $end-color); // Safari 5.1-6, Chrome 10+
|
||||
background-image: -o-linear-gradient($deg, $start-color, $end-color); // Opera 12
|
||||
background-image: linear-gradient($deg, $start-color, $end-color); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+
|
||||
}
|
||||
|
||||
@mixin gradient-horizontal-three-colors($start-color: #00b3ee, $mid-color: #7a43b6, $color-stop: 50%, $end-color: #c3325f) {
|
||||
background-image: -webkit-linear-gradient(left, $start-color, $mid-color $color-stop, $end-color);
|
||||
background-image: -o-linear-gradient(left, $start-color, $mid-color $color-stop, $end-color);
|
||||
background-image: linear-gradient(to right, $start-color, $mid-color $color-stop, $end-color);
|
||||
background-repeat: no-repeat;
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#{ie-hex-str($start-color)}', endColorstr='#{ie-hex-str($end-color)}', GradientType=1); // IE9 and down, gets no color-stop at all for proper fallback
|
||||
}
|
||||
|
||||
@mixin gradient-vertical-three-colors($start-color: #00b3ee, $mid-color: #7a43b6, $color-stop: 50%, $end-color: #c3325f) {
|
||||
background-image: -webkit-linear-gradient($start-color, $mid-color $color-stop, $end-color);
|
||||
background-image: -o-linear-gradient($start-color, $mid-color $color-stop, $end-color);
|
||||
background-image: linear-gradient($start-color, $mid-color $color-stop, $end-color);
|
||||
background-repeat: no-repeat;
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#{ie-hex-str($start-color)}', endColorstr='#{ie-hex-str($end-color)}', GradientType=0); // IE9 and down, gets no color-stop at all for proper fallback
|
||||
}
|
||||
|
||||
@mixin gradient-radial($inner-color: #555, $outer-color: #333) {
|
||||
background-image: -webkit-radial-gradient(circle, $inner-color, $outer-color);
|
||||
background-image: radial-gradient(circle, $inner-color, $outer-color);
|
||||
background-repeat: no-repeat;
|
||||
}
|
||||
|
||||
@mixin gradient-striped($color: rgba(255, 255, 255, .15), $angle: 45deg) {
|
||||
background-image: -webkit-linear-gradient($angle, $color 25%, transparent 25%, transparent 50%, $color 50%, $color 75%, transparent 75%, transparent);
|
||||
background-image: -o-linear-gradient($angle, $color 25%, transparent 25%, transparent 50%, $color 50%, $color 75%, transparent 75%, transparent);
|
||||
background-image: linear-gradient($angle, $color 25%, transparent 25%, transparent 50%, $color 50%, $color 75%, transparent 75%, transparent);
|
||||
}
|
||||
@@ -1,142 +0,0 @@
|
||||
// Priority highlight
|
||||
|
||||
@mixin priority($parent, $background, $color, $link) {
|
||||
$border-color: darken(desaturate($background, 30%), 13.5%);
|
||||
|
||||
tr#{$parent} {
|
||||
background: $background;
|
||||
color: $color;
|
||||
|
||||
&.odd {
|
||||
background: darken($background, 3%);
|
||||
}
|
||||
|
||||
td {
|
||||
border-color: $border-color;
|
||||
}
|
||||
|
||||
a {
|
||||
color: $link;
|
||||
|
||||
&:hover {
|
||||
color: darken($link, 10%);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@if $colored-issue {
|
||||
.issue.details#{$parent} {
|
||||
color: $color;
|
||||
|
||||
@if ".priority-default" == $parent {
|
||||
$border-color: $issue-border;
|
||||
background: $issue-bg;
|
||||
} @else {
|
||||
@if lightness($background) < 85% {
|
||||
background: lighten($background, 6%);
|
||||
} @else {
|
||||
background: $background;
|
||||
}
|
||||
}
|
||||
|
||||
&,
|
||||
hr {
|
||||
border-color: $border-color;
|
||||
}
|
||||
|
||||
a {
|
||||
color: $link;
|
||||
|
||||
&:hover {
|
||||
color: darken($link, 10%);
|
||||
}
|
||||
}
|
||||
|
||||
.next-prev-links {
|
||||
color: mix($color, $gray-light, 25%);
|
||||
}
|
||||
|
||||
.wiki {
|
||||
border-top-color: $border-color;
|
||||
|
||||
a {
|
||||
color: $link-color;
|
||||
text-decoration: none;
|
||||
|
||||
&:hover,
|
||||
&:focus {
|
||||
color: $link-hover-color;
|
||||
text-decoration: $link-hover-decoration;
|
||||
}
|
||||
|
||||
&.new {
|
||||
color: $brand-danger;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
> .attachments {
|
||||
border-top-color: lighten($border-color, 5%);
|
||||
background-color: lighten($background, 5%);
|
||||
|
||||
span.author {
|
||||
color: mix($color, $gray, 25%);
|
||||
}
|
||||
}
|
||||
|
||||
.list td {
|
||||
border-bottom-color: $border-color;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Tracker highlight
|
||||
|
||||
@mixin tracker($parent, $background, $color) {
|
||||
tr#{$parent} .id > a,
|
||||
a#{$parent},
|
||||
.relations > span > a#{$parent},
|
||||
.parent > a#{$parent} {
|
||||
border-radius: $border-radius-small ($border-radius-small * 3) ($border-radius-small * 3) $border-radius-small;
|
||||
background-color: $background;
|
||||
color: $color;
|
||||
|
||||
&:hover {
|
||||
background-color: darken($background, 10%);
|
||||
color: $color;
|
||||
text-decoration: none;
|
||||
}
|
||||
}
|
||||
|
||||
a#{$parent} {
|
||||
margin-right: 1px;
|
||||
padding: $tracker-inline-padding;
|
||||
|
||||
&.closed {
|
||||
color: mix($color, $background, 50%);
|
||||
text-decoration: $link-closed-decoration;
|
||||
}
|
||||
}
|
||||
|
||||
tr#{$parent} .id > a {
|
||||
display: block;
|
||||
padding: $tracker-list-padding;
|
||||
|
||||
&:before {
|
||||
color: mix($color, $background, 50%);
|
||||
content: "#";
|
||||
}
|
||||
}
|
||||
|
||||
@if $colored-issue {
|
||||
.issue.details a#{$parent},
|
||||
.issue.details .wiki a#{$parent} {
|
||||
&,
|
||||
&:hover {
|
||||
color: $color;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,8 +0,0 @@
|
||||
// Opacity
|
||||
|
||||
@mixin opacity($opacity) {
|
||||
opacity: $opacity;
|
||||
// IE8 filter
|
||||
$opacity-ie: ($opacity * 100);
|
||||
filter: #{alpha(opacity=$opacity-ie)};
|
||||
}
|
||||
@@ -1,236 +0,0 @@
|
||||
// Vendor Prefixes
|
||||
// scss-lint:disable VendorPrefixes
|
||||
//
|
||||
// All vendor mixins are deprecated as of v3.2.0 due to the introduction of
|
||||
// Autoprefixer in our Gruntfile. They will be removed in v4.
|
||||
|
||||
// - Animations
|
||||
// - Backface visibility
|
||||
// - Box shadow
|
||||
// - Box sizing
|
||||
// - Content columns
|
||||
// - Hyphens
|
||||
// - Placeholder text
|
||||
// - Transformations
|
||||
// - Transitions
|
||||
// - User Select
|
||||
|
||||
|
||||
// Animations
|
||||
@mixin animation($animation) {
|
||||
-webkit-animation: $animation;
|
||||
-o-animation: $animation;
|
||||
animation: $animation;
|
||||
}
|
||||
|
||||
@mixin animation-name($name) {
|
||||
-webkit-animation-name: $name;
|
||||
animation-name: $name;
|
||||
}
|
||||
|
||||
@mixin animation-duration($duration) {
|
||||
-webkit-animation-duration: $duration;
|
||||
animation-duration: $duration;
|
||||
}
|
||||
|
||||
@mixin animation-timing-function($timing-function) {
|
||||
-webkit-animation-timing-function: $timing-function;
|
||||
animation-timing-function: $timing-function;
|
||||
}
|
||||
|
||||
@mixin animation-delay($delay) {
|
||||
-webkit-animation-delay: $delay;
|
||||
animation-delay: $delay;
|
||||
}
|
||||
|
||||
@mixin animation-iteration-count($iteration-count) {
|
||||
-webkit-animation-iteration-count: $iteration-count;
|
||||
animation-iteration-count: $iteration-count;
|
||||
}
|
||||
|
||||
@mixin animation-direction($direction) {
|
||||
-webkit-animation-direction: $direction;
|
||||
animation-direction: $direction;
|
||||
}
|
||||
|
||||
@mixin animation-fill-mode($fill-mode) {
|
||||
-webkit-animation-fill-mode: $fill-mode;
|
||||
animation-fill-mode: $fill-mode;
|
||||
}
|
||||
|
||||
// Backface visibility
|
||||
// Prevent browsers from flickering when using CSS 3D transforms.
|
||||
// Default value is `visible`, but can be changed to `hidden`
|
||||
|
||||
@mixin backface-visibility($visibility) {
|
||||
-webkit-backface-visibility: $visibility;
|
||||
-moz-backface-visibility: $visibility;
|
||||
backface-visibility: $visibility;
|
||||
}
|
||||
|
||||
// Box sizing
|
||||
@mixin box-sizing($boxmodel) {
|
||||
-webkit-box-sizing: $boxmodel;
|
||||
-moz-box-sizing: $boxmodel;
|
||||
box-sizing: $boxmodel;
|
||||
}
|
||||
|
||||
// CSS3 Content Columns
|
||||
@mixin content-columns($column-count, $column-gap: $grid-gutter-width) {
|
||||
-webkit-column-count: $column-count;
|
||||
-moz-column-count: $column-count;
|
||||
column-count: $column-count;
|
||||
-webkit-column-gap: $column-gap;
|
||||
-moz-column-gap: $column-gap;
|
||||
column-gap: $column-gap;
|
||||
}
|
||||
|
||||
// Optional hyphenation
|
||||
@mixin hyphens($mode: auto) {
|
||||
word-wrap: break-word;
|
||||
-webkit-hyphens: $mode;
|
||||
-moz-hyphens: $mode;
|
||||
-ms-hyphens: $mode; // IE10+
|
||||
-o-hyphens: $mode;
|
||||
hyphens: $mode;
|
||||
}
|
||||
|
||||
// Placeholder text
|
||||
@mixin placeholder($color: $input-color-placeholder) {
|
||||
// Firefox
|
||||
&::-moz-placeholder {
|
||||
color: $color;
|
||||
opacity: 1; // See https://github.com/twbs/bootstrap/pull/11526
|
||||
}
|
||||
|
||||
&:-ms-input-placeholder { color: $color; } // Internet Explorer 10+
|
||||
&::-webkit-input-placeholder { color: $color; } // Safari and Chrome
|
||||
}
|
||||
|
||||
// Transformations
|
||||
@mixin scale($ratio...) {
|
||||
-webkit-transform: scale($ratio);
|
||||
-ms-transform: scale($ratio); // IE9 only
|
||||
-o-transform: scale($ratio);
|
||||
transform: scale($ratio);
|
||||
}
|
||||
|
||||
@mixin scaleX($ratio) {
|
||||
-webkit-transform: scaleX($ratio);
|
||||
-ms-transform: scaleX($ratio); // IE9 only
|
||||
-o-transform: scaleX($ratio);
|
||||
transform: scaleX($ratio);
|
||||
}
|
||||
|
||||
@mixin scaleY($ratio) {
|
||||
-webkit-transform: scaleY($ratio);
|
||||
-ms-transform: scaleY($ratio); // IE9 only
|
||||
-o-transform: scaleY($ratio);
|
||||
transform: scaleY($ratio);
|
||||
}
|
||||
|
||||
@mixin skew($x, $y) {
|
||||
-webkit-transform: skewX($x) skewY($y);
|
||||
-ms-transform: skewX($x) skewY($y); // See https://github.com/twbs/bootstrap/issues/4885; IE9+
|
||||
-o-transform: skewX($x) skewY($y);
|
||||
transform: skewX($x) skewY($y);
|
||||
}
|
||||
|
||||
@mixin translate($x, $y) {
|
||||
-webkit-transform: translate($x, $y);
|
||||
-ms-transform: translate($x, $y); // IE9 only
|
||||
-o-transform: translate($x, $y);
|
||||
transform: translate($x, $y);
|
||||
}
|
||||
|
||||
@mixin translate3d($x, $y, $z) {
|
||||
-webkit-transform: translate3d($x, $y, $z);
|
||||
transform: translate3d($x, $y, $z);
|
||||
}
|
||||
|
||||
@mixin rotate($degrees) {
|
||||
-webkit-transform: rotate($degrees);
|
||||
-ms-transform: rotate($degrees); // IE9 only
|
||||
-o-transform: rotate($degrees);
|
||||
transform: rotate($degrees);
|
||||
}
|
||||
|
||||
@mixin rotateX($degrees) {
|
||||
-webkit-transform: rotateX($degrees);
|
||||
-ms-transform: rotateX($degrees); // IE9 only
|
||||
-o-transform: rotateX($degrees);
|
||||
transform: rotateX($degrees);
|
||||
}
|
||||
|
||||
@mixin rotateY($degrees) {
|
||||
-webkit-transform: rotateY($degrees);
|
||||
-ms-transform: rotateY($degrees); // IE9 only
|
||||
-o-transform: rotateY($degrees);
|
||||
transform: rotateY($degrees);
|
||||
}
|
||||
|
||||
@mixin perspective($perspective) {
|
||||
-webkit-perspective: $perspective;
|
||||
-moz-perspective: $perspective;
|
||||
perspective: $perspective;
|
||||
}
|
||||
|
||||
@mixin perspective-origin($perspective) {
|
||||
-webkit-perspective-origin: $perspective;
|
||||
-moz-perspective-origin: $perspective;
|
||||
perspective-origin: $perspective;
|
||||
}
|
||||
|
||||
@mixin transform-origin($origin) {
|
||||
-webkit-transform-origin: $origin;
|
||||
-moz-transform-origin: $origin;
|
||||
-ms-transform-origin: $origin; // IE9 only
|
||||
transform-origin: $origin;
|
||||
}
|
||||
|
||||
|
||||
// Transitions
|
||||
|
||||
@mixin transition($transition...) {
|
||||
-webkit-transition: $transition;
|
||||
-o-transition: $transition;
|
||||
transition: $transition;
|
||||
}
|
||||
|
||||
@mixin transition-property($transition-property...) {
|
||||
-webkit-transition-property: $transition-property;
|
||||
transition-property: $transition-property;
|
||||
}
|
||||
|
||||
@mixin transition-delay($transition-delay) {
|
||||
-webkit-transition-delay: $transition-delay;
|
||||
transition-delay: $transition-delay;
|
||||
}
|
||||
|
||||
@mixin transition-duration($transition-duration...) {
|
||||
-webkit-transition-duration: $transition-duration;
|
||||
transition-duration: $transition-duration;
|
||||
}
|
||||
|
||||
@mixin transition-timing-function($timing-function) {
|
||||
-webkit-transition-timing-function: $timing-function;
|
||||
transition-timing-function: $timing-function;
|
||||
}
|
||||
|
||||
@mixin transition-transform($transition...) {
|
||||
-webkit-transition: -webkit-transform $transition;
|
||||
-moz-transition: -moz-transform $transition;
|
||||
-o-transition: -o-transform $transition;
|
||||
transition: transform $transition;
|
||||
}
|
||||
|
||||
|
||||
// User select
|
||||
// For selecting text on the page
|
||||
|
||||
@mixin user-select($select) {
|
||||
-webkit-user-select: $select;
|
||||
-moz-user-select: $select;
|
||||
-ms-user-select: $select; // IE10+
|
||||
user-select: $select;
|
||||
}
|
||||
@@ -1,458 +0,0 @@
|
||||
@import "common";
|
||||
|
||||
html {
|
||||
overflow-y: scroll !important;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
body {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
background-color: mix($gray-lighter, $header-bg, 70%);
|
||||
color: $text-color;
|
||||
font-family: $font-family-base;
|
||||
font-size: $font-size-base;
|
||||
line-height: $line-height-base;
|
||||
}
|
||||
|
||||
a {
|
||||
color: $link-color;
|
||||
text-decoration: none;
|
||||
|
||||
&:hover,
|
||||
&:focus {
|
||||
color: $link-hover-color;
|
||||
text-decoration: $link-hover-decoration;
|
||||
}
|
||||
|
||||
&.issue.closed {
|
||||
color: $link-color-issue-closed;
|
||||
text-decoration: $link-closed-decoration;
|
||||
}
|
||||
|
||||
&.project.closed {
|
||||
color: $link-color-project-closed;
|
||||
}
|
||||
|
||||
&.user.locked {
|
||||
color: $link-color-user-locked;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Form elements
|
||||
*/
|
||||
|
||||
button,
|
||||
input,
|
||||
select,
|
||||
textarea {
|
||||
font-family: inherit;
|
||||
font-size: $font-size-base;
|
||||
line-height: $line-height-base;
|
||||
@include box-sizing(border-box);
|
||||
}
|
||||
|
||||
select,
|
||||
textarea,
|
||||
input[type="search"],
|
||||
input[type="text"],
|
||||
input.name,
|
||||
input.editor,
|
||||
#col_width input {
|
||||
height: $input-height-base;
|
||||
padding: $input-padding-vertical $input-padding-horizontal;
|
||||
border: 1px solid $input-border;
|
||||
border-radius: $input-border-radius;
|
||||
background-color: $input-bg;
|
||||
color: $input-color;
|
||||
box-shadow: inset 0 1px 2px rgba(0, 0, 0, .075);
|
||||
@include transition(border-color ease-in-out .1s, box-shadow ease-in-out .1s);
|
||||
@include form-control-focus();
|
||||
@include placeholder();
|
||||
}
|
||||
|
||||
textarea {
|
||||
resize: vertical;
|
||||
height: auto;
|
||||
}
|
||||
|
||||
select:-moz-focusring {
|
||||
color: transparent;
|
||||
text-shadow: 0 0 0 #000;
|
||||
}
|
||||
|
||||
button.ui-multiselect {
|
||||
height: $input-height-base;
|
||||
padding: $input-padding-vertical $input-padding-horizontal;
|
||||
border: 1px solid $input-border;
|
||||
background: $input-bg;
|
||||
cursor: default;
|
||||
color: $input-color;
|
||||
white-space: nowrap;
|
||||
box-shadow: inset 0 1px 2px rgba(0, 0, 0, .075);
|
||||
overflow: hidden;
|
||||
@include transition(border-color ease-in-out .1s, box-shadow ease-in-out .1s);
|
||||
@include box-sizing(border-box);
|
||||
|
||||
&:hover,
|
||||
&:focus {
|
||||
color: $input-color;
|
||||
}
|
||||
|
||||
&:active {
|
||||
@include translate(0, 0);
|
||||
}
|
||||
|
||||
&.ui-state-active {
|
||||
border-color: $input-border-focus;
|
||||
box-shadow: inset 0 1px 2px rgba(0, 0, 0, .075), 0 0 5px rgba($input-border-focus, .5);
|
||||
}
|
||||
|
||||
.ui-icon {
|
||||
margin-top: 1px;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Top toolbar
|
||||
*/
|
||||
|
||||
#toolbar {
|
||||
display: block;
|
||||
position: relative;
|
||||
padding: 10px $padding-side;
|
||||
background-color: $main-menu-bg;
|
||||
box-shadow: $panel-shadow;
|
||||
overflow: hidden;
|
||||
z-index: 1000;
|
||||
@include clearfix;
|
||||
|
||||
.breadcrumbs {
|
||||
margin-right: 10px;
|
||||
float: left;
|
||||
|
||||
select {
|
||||
margin-right: 5px;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
.home {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.separator {
|
||||
position: relative;
|
||||
top: -1px;
|
||||
padding: 0 .2em;
|
||||
font-weight: bold;
|
||||
}
|
||||
}
|
||||
|
||||
.userselect {
|
||||
position: relative;
|
||||
float: left;
|
||||
|
||||
ul {
|
||||
padding-left: 0;
|
||||
}
|
||||
|
||||
br {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
.links {
|
||||
float: right;
|
||||
|
||||
a {
|
||||
padding-left: 5px;
|
||||
cursor: pointer;
|
||||
@include user-select(none);
|
||||
}
|
||||
}
|
||||
|
||||
input[type="search"],
|
||||
input[type="text"],
|
||||
select,
|
||||
.ui-widget {
|
||||
font-family: inherit;
|
||||
font-size: inherit;
|
||||
}
|
||||
|
||||
@media screen and (max-width: $screen-md-max) {
|
||||
font-size: $font-size-small;
|
||||
|
||||
input[type="search"],
|
||||
input[type="text"],
|
||||
select,
|
||||
.ui-widget {
|
||||
$input-padding-vertical-small: 3px;
|
||||
$input-padding-horizontal-small: 5px;
|
||||
|
||||
height: ($line-height-computed + ($input-padding-vertical-small * 2) + 2);
|
||||
padding: $input-padding-vertical-small $input-padding-horizontal-small;
|
||||
}
|
||||
|
||||
#project_quick_jump_box {
|
||||
width: 128px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#refresh {
|
||||
.loading & {
|
||||
background-image: url("images/bouncer.gif");
|
||||
background-repeat: no-repeat;
|
||||
background-position: -6px 1px;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Other elements
|
||||
*/
|
||||
|
||||
.clearfix {
|
||||
@include clearfix;
|
||||
}
|
||||
|
||||
#content {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
overflow: visible;
|
||||
}
|
||||
|
||||
#helpers,
|
||||
.meta,
|
||||
.editors {
|
||||
display: none;
|
||||
}
|
||||
|
||||
/**
|
||||
* .editor is the classname for field editors of sprint,
|
||||
* story, task, impediment. These field editors get created
|
||||
* at runtime whenever any of the above models are edited.
|
||||
*/
|
||||
|
||||
.ui-dialog .editor {
|
||||
display: block;
|
||||
}
|
||||
|
||||
ul.ui-sortable {
|
||||
min-height: 20px;
|
||||
}
|
||||
|
||||
/**
|
||||
* Story tooltip
|
||||
*/
|
||||
.ui-tooltip {
|
||||
.ui-tooltip-tip,
|
||||
.ui-tooltip-content {
|
||||
border-color: $tooltip-border;
|
||||
background-color: $tooltip-bg;
|
||||
}
|
||||
|
||||
.ui-tooltip-content {
|
||||
padding: $padding-base-vertical;
|
||||
color: $tooltip-text;
|
||||
font-size: $font-size-small;
|
||||
box-shadow: 0 2px 2px rgba(0, 0, 0, .2);
|
||||
|
||||
> div {
|
||||
max-height: 200px;
|
||||
text-overflow: ellipsis;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
hr {
|
||||
margin-top: $line-height-computed / 2;
|
||||
margin-bottom: $line-height-computed / 2;
|
||||
border: 0;
|
||||
border-top: 1px solid $hr-border;
|
||||
}
|
||||
|
||||
.wiki-anchor {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.tooltip_text {
|
||||
display: none;
|
||||
}
|
||||
|
||||
/**
|
||||
* drag-drop effect: disabled dropzones are greyed out
|
||||
*/
|
||||
|
||||
.rb-sortable-disabled,
|
||||
.ui-sortable-disabled {
|
||||
background-color: $gray-lighter;
|
||||
opacity: .5;
|
||||
}
|
||||
|
||||
.w-rb-header-collapsed {
|
||||
height: 18px;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Fix jQuery-UI datepicker
|
||||
*/
|
||||
|
||||
body {
|
||||
.ui-widget {
|
||||
&,
|
||||
input,
|
||||
select,
|
||||
textarea,
|
||||
button {
|
||||
font-family: inherit;
|
||||
font-size: inherit;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#ui-datepicker-div {
|
||||
width: 16em;
|
||||
padding: 3px;
|
||||
border: 1px solid $panel-border;
|
||||
background: $body-bg;
|
||||
color: $text-color;
|
||||
font-size: $font-size-base;
|
||||
box-shadow: $panel-shadow;
|
||||
|
||||
.ui-widget-header {
|
||||
border: 0 none;
|
||||
background: $header-bg;
|
||||
color: $header-text;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.ui-state-default {
|
||||
border: 1px solid $body-bg;
|
||||
background: $body-bg;
|
||||
color: $component-color;
|
||||
font-weight: normal;
|
||||
box-shadow: none;
|
||||
|
||||
a,
|
||||
a:link,
|
||||
a:visited {
|
||||
color: $component-color;
|
||||
text-decoration: none;
|
||||
}
|
||||
}
|
||||
|
||||
.ui-state-hover,
|
||||
.ui-state-focus {
|
||||
border: 1px solid $component-active-border;
|
||||
background: $component-active-bg;
|
||||
color: $component-active-color;
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
.ui-datepicker-header {
|
||||
padding: .3em;
|
||||
}
|
||||
|
||||
.ui-datepicker-prev {
|
||||
left: .3em;
|
||||
}
|
||||
|
||||
.ui-datepicker-next {
|
||||
right: .3em;
|
||||
}
|
||||
|
||||
.ui-datepicker-prev,
|
||||
.ui-datepicker-next {
|
||||
top: .3em;
|
||||
border: 0 none;
|
||||
background: transparent;
|
||||
|
||||
.ui-icon {
|
||||
background-image: url("/stylesheets/jquery/images/ui-icons_ffffff_256x240.png");
|
||||
}
|
||||
|
||||
&.ui-state-hover {
|
||||
border-color: darken($header-bg, 12%);
|
||||
background: darken($header-bg, 10%);
|
||||
}
|
||||
}
|
||||
|
||||
.ui-datepicker-title {
|
||||
margin: 0 (1.8em + .3em);
|
||||
}
|
||||
|
||||
select.ui-datepicker-month,
|
||||
select.ui-datepicker-year {
|
||||
width: 49%;
|
||||
height: 1.8em;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
select.ui-datepicker-year {
|
||||
margin-left: 1%;
|
||||
}
|
||||
|
||||
.ui-datepicker-calendar {
|
||||
td {
|
||||
text-align: right;
|
||||
|
||||
&.ui-datepicker-week-col {
|
||||
padding-right: $table-condensed-cell-padding;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.ui-datepicker-today {
|
||||
.ui-state-highlight {
|
||||
border-color: $component-active-border;
|
||||
background: $component-bg;
|
||||
color: $component-color;
|
||||
}
|
||||
|
||||
.ui-state-hover {
|
||||
background: $component-active-bg;
|
||||
color: $component-active-color;
|
||||
}
|
||||
}
|
||||
|
||||
.ui-datepicker-current-day {
|
||||
.ui-state-active {
|
||||
border-color: $highlight-border;
|
||||
background: $highlight-bg;
|
||||
color: $highlight-text;
|
||||
}
|
||||
}
|
||||
|
||||
.ui-datepicker-buttonpane {
|
||||
button {
|
||||
padding: $input-padding-vertical $input-padding-horizontal;
|
||||
}
|
||||
|
||||
.ui-state-default {
|
||||
border-color: $component-border;
|
||||
background: $component-bg;
|
||||
}
|
||||
|
||||
.ui-state-focus,
|
||||
.ui-state-hover {
|
||||
border-color: $component-active-bg;
|
||||
background: $component-active-bg;
|
||||
color: $component-active-color;
|
||||
}
|
||||
|
||||
.ui-state-active {
|
||||
border-color: $highlight-border;
|
||||
background: $highlight-bg;
|
||||
color: $highlight-text;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,801 +0,0 @@
|
||||
@import "common";
|
||||
|
||||
$header-line-height: floor($line-height-computed * 1.5);
|
||||
|
||||
$header-left-width: 30px;
|
||||
$header-right-width: 230px;
|
||||
$header-right-width-wider: 280px;
|
||||
|
||||
$story-left-width: 110px;
|
||||
$story-right-width: 110px;
|
||||
|
||||
$story-id-width: 51px;
|
||||
$story-project-width: 50px;
|
||||
$story-status-width: 70px;
|
||||
|
||||
$story-tracker-input-width: 100px;
|
||||
$story-status-input-width: 85px;
|
||||
$story-sp-input-width: 50px;
|
||||
|
||||
@mixin rb-tracker($parent, $background, $color) {
|
||||
#{$parent} .id .t a {
|
||||
background-color: $background;
|
||||
color: $color;
|
||||
|
||||
&:before {
|
||||
color: mix($color, $background, 50%);
|
||||
}
|
||||
|
||||
&:hover {
|
||||
background-color: darken($background, 10%);
|
||||
text-decoration: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* reserved classes are
|
||||
* .backlog (used in master_backlog.js to initialize all backlogs)
|
||||
* .model (used in backlog.js editable_inplace.js model.js)
|
||||
* .sprint (used in backlog.js
|
||||
* .stories (used in backlog.js for sortable)
|
||||
* .editor
|
||||
* .editable (bind click on)
|
||||
* .close_sprint (bind click on)
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* fluid, 2-colum layout
|
||||
*/
|
||||
|
||||
#backlogs_container {
|
||||
padding: ($padding-side / 2) ($padding-side / 4);
|
||||
|
||||
.backlogs-panel-inner {
|
||||
padding: 0 ($padding-side / 4);
|
||||
}
|
||||
|
||||
@media screen and (min-width: $screen-md-min) {
|
||||
padding: $padding-side ($padding-side / 2);
|
||||
|
||||
.backlogs-panel-inner {
|
||||
padding: 0 ($padding-side / 2);
|
||||
}
|
||||
}
|
||||
|
||||
.wrapper {
|
||||
position: relative;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
float: left;
|
||||
}
|
||||
|
||||
.left-col {
|
||||
position: relative;
|
||||
left: 0;
|
||||
width: 50%;
|
||||
float: left;
|
||||
}
|
||||
|
||||
.right-col {
|
||||
position: relative;
|
||||
right: 0;
|
||||
width: 50%;
|
||||
float: right;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Fixed-Fluid-Fixed layout
|
||||
*/
|
||||
|
||||
.fff-wrapmiddle {
|
||||
width: 100%;
|
||||
float: left;
|
||||
}
|
||||
|
||||
.fff-middle {
|
||||
margin-right: $story-right-width;
|
||||
margin-left: $story-left-width;
|
||||
}
|
||||
|
||||
.fff-left {
|
||||
width: $story-left-width;
|
||||
margin-left: -100%;
|
||||
float: left;
|
||||
}
|
||||
|
||||
.fff-right {
|
||||
width: $story-right-width;
|
||||
margin-left: -$story-right-width;
|
||||
float: left;
|
||||
}
|
||||
|
||||
.header {
|
||||
.fff-middle {
|
||||
margin-right: $header-right-width;
|
||||
margin-left: $header-left-width;
|
||||
}
|
||||
|
||||
.fff-left {
|
||||
width: $header-left-width;
|
||||
}
|
||||
|
||||
.fff-right {
|
||||
width: $header-right-width;
|
||||
margin-left: -$header-right-width;
|
||||
}
|
||||
|
||||
@media screen and (min-width: $screen-md-min) {
|
||||
.fff-middle {
|
||||
margin-right: $header-right-width-wider;
|
||||
}
|
||||
|
||||
.fff-right {
|
||||
width: $header-right-width-wider;
|
||||
margin-left: -$header-right-width-wider;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Just some space at the bottom of the page
|
||||
*/
|
||||
|
||||
#dummy_backlog_container {
|
||||
height: 150px;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Base backlog container
|
||||
*/
|
||||
|
||||
#backlogs_container {
|
||||
.closedbacklog,
|
||||
.backlog {
|
||||
display: block;
|
||||
position: relative;
|
||||
margin: 0 0 ($padding-side / 2);
|
||||
border-radius: $border-radius-large $border-radius-large 0 0;
|
||||
background-color: $gray-lightest;
|
||||
box-shadow: $panel-shadow;
|
||||
|
||||
@media screen and (min-width: $screen-md-min) {
|
||||
margin: 0 0 $padding-side;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Backlog header
|
||||
*/
|
||||
|
||||
#backlogs_container {
|
||||
.header {
|
||||
position: relative;
|
||||
height: $header-line-height;
|
||||
border: 1px solid darken($header-bg, 5%);
|
||||
border-radius: $border-radius-large $border-radius-large 0 0;
|
||||
background-color: $header-bg;
|
||||
color: $header-text;
|
||||
line-height: $header-line-height;
|
||||
|
||||
input,
|
||||
select {
|
||||
border-color: $header-bg;
|
||||
box-shadow: inset 0 1px 3px rgba(0, 0, 0, .2);
|
||||
|
||||
&:focus {
|
||||
border-color: lighten($header-bg, 25%);
|
||||
color: $gray-darkest;
|
||||
box-shadow: inset 0 1px 3px rgba(0, 0, 0, .2),
|
||||
0 0 0 1px lighten($header-bg, 25%);
|
||||
}
|
||||
}
|
||||
|
||||
.name,
|
||||
.velocity,
|
||||
.date {
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.name {
|
||||
padding-left: $padding-base-horizontal;
|
||||
font-weight: bold;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.date {
|
||||
width: 70px;
|
||||
float: left;
|
||||
font-size: $font-size-small-px;
|
||||
text-align: center;
|
||||
|
||||
+ .date {
|
||||
margin-left: $padding-base-horizontal;
|
||||
}
|
||||
}
|
||||
|
||||
.velocity {
|
||||
padding-right: $padding-base-horizontal;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
.id,
|
||||
.description,
|
||||
.status {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.saving {
|
||||
background-image: url("images/ajax.gif");
|
||||
background-repeat: no-repeat;
|
||||
background-position: center;
|
||||
}
|
||||
|
||||
.error {
|
||||
background-image: url("images/error.png");
|
||||
background-repeat: no-repeat;
|
||||
background-position: center;
|
||||
}
|
||||
|
||||
.editing {
|
||||
$editor-padding: (($header-line-height - $input-height-base) / 2);
|
||||
|
||||
.editors {
|
||||
display: block;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
padding-top: $editor-padding;
|
||||
border-radius: $border-radius-large $border-radius-large 0 0;
|
||||
background-color: $header-bg;
|
||||
z-index: 1;
|
||||
}
|
||||
|
||||
label,
|
||||
.id.editor {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.release_end_date.editor,
|
||||
.release_start_date.editor,
|
||||
.effective_date.editor,
|
||||
.sprint_start_date.editor {
|
||||
position: relative;
|
||||
width: 80px;
|
||||
margin-bottom: $editor-padding;
|
||||
margin-left: $editor-padding * 2;
|
||||
padding: 0;
|
||||
float: left;
|
||||
font-size: $font-size-small-px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.name.editor {
|
||||
$name-width-minus: $header-right-width-wider + 35px;
|
||||
|
||||
position: relative;
|
||||
width: calc(100% - #{$name-width-minus}) !important;
|
||||
min-width: 128px;
|
||||
margin-left: $header-line-height - 2px;
|
||||
float: left;
|
||||
}
|
||||
|
||||
.description.editor {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.edit-actions {
|
||||
margin-right: $editor-padding * 2;
|
||||
margin-bottom: $editor-padding;
|
||||
float: right;
|
||||
}
|
||||
}
|
||||
|
||||
.menu {
|
||||
position: relative;
|
||||
height: $header-line-height;
|
||||
border-right: 1px solid #888;
|
||||
border-bottom: 0 none;
|
||||
border-radius: ($border-radius-large - 1px) 0 0;
|
||||
cursor: pointer;
|
||||
font-size: $font-size-small;
|
||||
line-height: $line-height-base;
|
||||
overflow: visible;
|
||||
@include transition(background-color .07s);
|
||||
|
||||
&:hover {
|
||||
border-bottom: 1px solid $body-bg;
|
||||
background-color: $body-bg;
|
||||
z-index: 1000;
|
||||
}
|
||||
|
||||
.icon {
|
||||
position: relative;
|
||||
top: 7px;
|
||||
left: 6px;
|
||||
padding: 0;
|
||||
background-image: url("images/ui-icons_888888_256x240.png");
|
||||
background-position: -64px -16px;
|
||||
}
|
||||
|
||||
.items {
|
||||
display: none;
|
||||
position: absolute;
|
||||
top: $header-line-height + 1px;
|
||||
left: -1px;
|
||||
margin: 0;
|
||||
padding: $padding-small-vertical 0;
|
||||
border: 1px solid $gray-light;
|
||||
border-top: 0 none;
|
||||
border-radius: 0 0 $border-radius-base $border-radius-base;
|
||||
background-color: $body-bg;
|
||||
list-style: none;
|
||||
box-shadow: 0 2px 1px rgba(#000, .1);
|
||||
z-index: 999;
|
||||
|
||||
a {
|
||||
color: $gray-darker;
|
||||
}
|
||||
}
|
||||
|
||||
&:hover .items {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.item {
|
||||
min-width: 150px;
|
||||
white-space: nowrap;
|
||||
|
||||
> a {
|
||||
display: block;
|
||||
padding: 4px 8px;
|
||||
|
||||
&:hover {
|
||||
background-color: $component-active-bg;
|
||||
color: $component-active-color;
|
||||
text-decoration: none;
|
||||
}
|
||||
}
|
||||
|
||||
ul {
|
||||
display: none;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 160px;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
background-color: $gray-lightest;
|
||||
list-style: none;
|
||||
}
|
||||
|
||||
&:hover ul {
|
||||
display: block;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.model.headertext {
|
||||
cursor: pointer;
|
||||
}
|
||||
}
|
||||
|
||||
.close_sprint {
|
||||
float: left;
|
||||
color: $header-link;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.closedbacklog {
|
||||
.menu {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.headertext {
|
||||
cursor: default;
|
||||
/*we have model class here, but are not editable*/
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Backlog items
|
||||
*/
|
||||
|
||||
#backlogs_container {
|
||||
.stories {
|
||||
position: relative;
|
||||
min-height: ($line-height-computed + $table-condensed-cell-padding * 2);
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
font-size: $font-size-list;
|
||||
list-style: none;
|
||||
|
||||
.v {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.placeholder {
|
||||
min-height: ($line-height-computed + $table-condensed-cell-padding * 2);
|
||||
background-color: $gray;
|
||||
}
|
||||
}
|
||||
|
||||
.story {
|
||||
display: block;
|
||||
margin: 0;
|
||||
padding: $table-condensed-cell-padding;
|
||||
border-top: 1px solid $gray-lighter;
|
||||
background-color: $body-bg;
|
||||
background-repeat: no-repeat;
|
||||
background-position: center;
|
||||
cursor: move;
|
||||
|
||||
&:nth-child(2n) {
|
||||
background-color: $table-bg-accent;
|
||||
}
|
||||
|
||||
&:hover {
|
||||
background-color: $highlight-bg;
|
||||
}
|
||||
|
||||
&.saving {
|
||||
background-image: url("images/ajax.gif");
|
||||
color: $gray-light;
|
||||
}
|
||||
|
||||
&.error {
|
||||
background-image: url("images/error.png");
|
||||
color: $brand-warning;
|
||||
}
|
||||
|
||||
.tracker_id {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.id {
|
||||
position: relative;
|
||||
width: $story-id-width;
|
||||
float: left;
|
||||
|
||||
.t {
|
||||
a {
|
||||
display: block;
|
||||
padding: $tracker-list-padding;
|
||||
border-radius: $border-radius-small ($border-radius-small * 3) ($border-radius-small * 3) $border-radius-small;
|
||||
background-color: darken($gray-lightest, 3%);
|
||||
color: $gray-dark;
|
||||
font-weight: bold;
|
||||
text-align: right;
|
||||
|
||||
&:before {
|
||||
margin-left: -1em;
|
||||
color: $gray-light;
|
||||
font-weight: normal;
|
||||
content: "#";
|
||||
}
|
||||
|
||||
&:hover {
|
||||
background-color: $gray-lighter;
|
||||
text-decoration: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.project {
|
||||
display: block;
|
||||
position: relative;
|
||||
width: $story-project-width;
|
||||
padding-left: 5px;
|
||||
float: left;
|
||||
text-align: center;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
|
||||
.t {
|
||||
overflow: hidden;
|
||||
}
|
||||
}
|
||||
|
||||
.subject {
|
||||
@include text-overflow;
|
||||
}
|
||||
|
||||
&.closed .subject {
|
||||
text-decoration: line-through;
|
||||
}
|
||||
|
||||
.status_id {
|
||||
width: $story-status-width;
|
||||
padding-left: 5px;
|
||||
float: left;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.story_points {
|
||||
width: $story-right-width - ($story-status-width + $padding-base-horizontal);
|
||||
float: left;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
.story_field {
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.fixed_version_id,
|
||||
.higher_item_id,
|
||||
.story_project,
|
||||
.user_status {
|
||||
display: none;
|
||||
}
|
||||
|
||||
&.editing {
|
||||
$input-padding-vertical-small: 3px;
|
||||
$input-padding-horizontal-small: 5px;
|
||||
|
||||
border-color: $highlight-border;
|
||||
background-color: darken($highlight-bg, 10%);
|
||||
cursor: default;
|
||||
|
||||
+ .story {
|
||||
border-top-color: $highlight-border;
|
||||
}
|
||||
|
||||
input,
|
||||
select,
|
||||
textarea {
|
||||
border-color: $highlight-border;
|
||||
|
||||
&:focus {
|
||||
border-color: darken($highlight-border, 15%);
|
||||
color: $gray-darkest;
|
||||
box-shadow: inset 0 1px 2px rgba(0, 0, 0, .075),
|
||||
0 0 5px rgba(darken($highlight-border, 15%), .5);
|
||||
}
|
||||
}
|
||||
|
||||
.editors {
|
||||
display: block;
|
||||
margin-left: $story-tracker-input-width + 5px;
|
||||
text-align: right;
|
||||
|
||||
label {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
.editor {
|
||||
height: ($line-height-computed + ($input-padding-vertical-small * 2) + 2);
|
||||
margin: 0;
|
||||
margin-right: 5px;
|
||||
padding: $input-padding-vertical-small $input-padding-horizontal-small;
|
||||
font-family: inherit;
|
||||
font-size: inherit;
|
||||
vertical-align: top;
|
||||
|
||||
&.tracker_id {
|
||||
display: block;
|
||||
width: $story-tracker-input-width;
|
||||
margin-left: -($story-tracker-input-width + 5px);
|
||||
float: left;
|
||||
}
|
||||
|
||||
&.status_id {
|
||||
width: $story-status-input-width;
|
||||
float: left;
|
||||
}
|
||||
|
||||
&.story_points {
|
||||
width: $story-sp-input-width;
|
||||
margin-right: 0;
|
||||
padding-left: 0;
|
||||
float: left;
|
||||
}
|
||||
|
||||
&.subject {
|
||||
$subject-width-minus: $story-status-input-width + $story-sp-input-width + 5px * 2;
|
||||
|
||||
width: calc(100% - #{$subject-width-minus}) !important;
|
||||
height: 60px;
|
||||
float: left;
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
&.category_id {
|
||||
display: block;
|
||||
top: 4px;
|
||||
left: 456px;
|
||||
width: 60px;
|
||||
margin: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.story_field {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.project,
|
||||
select.project_id.editor {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.edit-actions {
|
||||
margin-top: 5px;
|
||||
float: right;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.closedbacklog .story {
|
||||
cursor: default;
|
||||
}
|
||||
|
||||
/**
|
||||
* override: display story subject in multiple lines
|
||||
*/
|
||||
|
||||
.rb-multilinesubject & .subject {
|
||||
height: auto;
|
||||
white-space: normal;
|
||||
overflow: show;
|
||||
}
|
||||
|
||||
@if $color-trackers {
|
||||
@include rb-tracker('.tracker1', $tracker-1-bg, $tracker-1-text);
|
||||
@include rb-tracker('.tracker2', $tracker-2-bg, $tracker-2-text);
|
||||
@include rb-tracker('.tracker3', $tracker-3-bg, $tracker-3-text);
|
||||
@include rb-tracker('.tracker4', $tracker-4-bg, $tracker-4-text);
|
||||
@include rb-tracker('.tracker5', $tracker-5-bg, $tracker-5-text);
|
||||
@include rb-tracker('.tracker6', $tracker-6-bg, $tracker-6-text);
|
||||
@include rb-tracker('.tracker7', $tracker-7-bg, $tracker-7-text);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* dialog
|
||||
*/
|
||||
|
||||
.ui-dialog {
|
||||
.ui-dialog-titlebar-close {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.ui-dialog-title {
|
||||
margin-right: 0;
|
||||
float: left;
|
||||
}
|
||||
|
||||
&.ui-widget-content {
|
||||
border: 0 none;
|
||||
box-shadow: 2px 2px 5px #777;
|
||||
}
|
||||
|
||||
.ui-dialog-buttonpane.ui-widget-content {
|
||||
border: 0 none;
|
||||
}
|
||||
|
||||
label {
|
||||
display: block;
|
||||
width: 100%;
|
||||
font-size: 11px;
|
||||
text-transform: capitalize;
|
||||
}
|
||||
|
||||
.editor {
|
||||
width: 100%;
|
||||
margin-bottom: 10px;
|
||||
font-size: 12px;
|
||||
}
|
||||
}
|
||||
|
||||
#sprint_editor .description {
|
||||
height: 65px;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* In-place Sprint Editor
|
||||
*/
|
||||
|
||||
#backlogs_container {
|
||||
|
||||
#backlogs_container .editing .editable {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.editing .edit-actions {
|
||||
white-space: nowrap;
|
||||
|
||||
a {
|
||||
display: inline-block;
|
||||
margin-bottom: 0;
|
||||
border: 1px solid;
|
||||
cursor: pointer;
|
||||
font-weight: $btn-font-weight;
|
||||
text-align: center;
|
||||
white-space: nowrap;
|
||||
@include button-size($input-padding-vertical, $input-padding-horizontal, $font-size-base, $line-height-base, $border-radius-base);
|
||||
@include user-select(none);
|
||||
@include transition(background-color ease-in-out .07s, border-color ease-in-out .07s, box-shadow ease-in-out .07s);
|
||||
|
||||
&.save {
|
||||
@include button-variant($btn-success-color, $btn-success-bg, $btn-success-border);
|
||||
}
|
||||
|
||||
&.cancel {
|
||||
@include button-variant($btn-default-color, $btn-default-bg, $btn-default-border);
|
||||
}
|
||||
|
||||
+ a {
|
||||
margin-left: 3px;
|
||||
}
|
||||
|
||||
&:hover,
|
||||
&:active {
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
@media screen and (max-width: $screen-md-max) {
|
||||
padding: $input-padding-vertical;
|
||||
font-size: $font-size-small-px;
|
||||
line-height: $line-height-computed;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* In-place Story Editor */
|
||||
|
||||
.debug {
|
||||
.story {
|
||||
.id,
|
||||
.subject,
|
||||
.status_id,
|
||||
.story_points {
|
||||
background-color: #f00;
|
||||
}
|
||||
}
|
||||
|
||||
.header {
|
||||
.name,
|
||||
.sprint_start_date,
|
||||
.effective_date,
|
||||
.actions {
|
||||
background-color: #f00;
|
||||
}
|
||||
}
|
||||
|
||||
.menu,
|
||||
.velocity,
|
||||
#new_story {
|
||||
background-color: #f00;
|
||||
}
|
||||
}
|
||||
|
||||
/* Naive but light handling of colors by user stories tracker */
|
||||
|
||||
/* datepicker bugfix: hide until it opens itself */
|
||||
|
||||
.ui-datepicker {
|
||||
display: none;
|
||||
}
|
||||
|
||||
/* show completed sprints */
|
||||
|
||||
#show_completed_sprints {
|
||||
margin-left: $padding-side / 2;
|
||||
cursor: pointer;
|
||||
color: $gray-darkest;
|
||||
}
|
||||
@@ -1,63 +0,0 @@
|
||||
@import "common";
|
||||
|
||||
table {
|
||||
th,
|
||||
td {
|
||||
padding: $table-condensed-cell-padding $table-cell-padding;
|
||||
}
|
||||
}
|
||||
|
||||
.ui-widget {
|
||||
margin-bottom: $line-height-computed;
|
||||
}
|
||||
|
||||
.score {
|
||||
display: inline-block;
|
||||
width: 1.5em;
|
||||
font-size: large;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.score_0 {
|
||||
background-color: #f00;
|
||||
}
|
||||
|
||||
.score_1 {
|
||||
background-color: #ff5300;
|
||||
}
|
||||
|
||||
.score_2 {
|
||||
background-color: #ff8100;
|
||||
}
|
||||
|
||||
.score_3 {
|
||||
background-color: #ffa100;
|
||||
}
|
||||
|
||||
.score_4 {
|
||||
background-color: #fb0;
|
||||
}
|
||||
|
||||
.score_5 {
|
||||
background-color: #ffd300;
|
||||
}
|
||||
|
||||
.score_6 {
|
||||
background-color: #ffec00;
|
||||
}
|
||||
|
||||
.score_7 {
|
||||
background-color: #e9fb00;
|
||||
}
|
||||
|
||||
.score_8 {
|
||||
background-color: #b1f100;
|
||||
}
|
||||
|
||||
.score_9 {
|
||||
background-color: #74e600;
|
||||
}
|
||||
|
||||
.score_10 {
|
||||
background-color: #0c0;
|
||||
}
|
||||
@@ -1,457 +0,0 @@
|
||||
@import "common";
|
||||
|
||||
$issue-width: 85px;
|
||||
$issue-height: 80px;
|
||||
$issue-margin: 5px;
|
||||
$issue-padding: 5px;
|
||||
$swimlane-width: $issue-width + 2 * ($issue-margin + $issue-padding + 1px);
|
||||
|
||||
#content {
|
||||
overflow: visible;
|
||||
}
|
||||
|
||||
#taskboard {
|
||||
position: relative;
|
||||
margin-bottom: $padding-side;
|
||||
|
||||
table {
|
||||
margin-right: $padding-side;
|
||||
margin-left: $padding-side;
|
||||
border-collapse: separate;
|
||||
}
|
||||
|
||||
.issue .subject {
|
||||
white-space: normal;
|
||||
}
|
||||
}
|
||||
|
||||
#impediments {
|
||||
padding-top: 30px;
|
||||
}
|
||||
|
||||
#assigned_to_id_options {
|
||||
display: none;
|
||||
}
|
||||
|
||||
#col_width {
|
||||
margin-left: 5px;
|
||||
|
||||
input {
|
||||
width: 40px;
|
||||
text-align: right;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* swimlane class is used by:
|
||||
* - #board_header
|
||||
* - .board
|
||||
*
|
||||
* Also use by the Column Width preference to determine the unit width of the
|
||||
* swimlanes. See RB.Taskboard.initialize()
|
||||
*/
|
||||
|
||||
.swimlane {
|
||||
width: $swimlane-width;
|
||||
min-width: $swimlane-width;
|
||||
padding: 5px;
|
||||
}
|
||||
|
||||
/* status labels */
|
||||
|
||||
#board_header {
|
||||
position: absolute;
|
||||
margin-right: 10px;
|
||||
margin-bottom: 0;
|
||||
border: 1px solid darken($header-bg, 5%);
|
||||
background-color: $header-bg;
|
||||
z-index: 200;
|
||||
|
||||
td {
|
||||
height: 20px;
|
||||
border-right: 1px dotted mix($header-bg, $header-text, 70%);
|
||||
background-color: $header-bg;
|
||||
color: $header-text;
|
||||
font-weight: bold;
|
||||
text-align: center;
|
||||
vertical-align: middle;
|
||||
|
||||
&:last-child {
|
||||
border-right: 0 none;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.board {
|
||||
border: 1px solid $gray;
|
||||
border-top: 0 none;
|
||||
background-color: $body-bg;
|
||||
color: $text-color;
|
||||
|
||||
td {
|
||||
border-right: 1px dotted $table-border-color;
|
||||
border-bottom: 1px dotted $table-border-color;
|
||||
vertical-align: top;
|
||||
|
||||
&:last-child {
|
||||
border-right: 0 none;
|
||||
}
|
||||
}
|
||||
|
||||
tr:last-child td {
|
||||
border-bottom: 0 none;
|
||||
}
|
||||
|
||||
.add_new {
|
||||
display: inline-block;
|
||||
vertical-align: middle;
|
||||
|
||||
&:hover {
|
||||
background-color: #ffc;
|
||||
cursor: pointer;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#board_header,
|
||||
.board {
|
||||
td:first-child {
|
||||
width: (($issue-width + $issue-margin + $issue-padding) * 2);
|
||||
min-width: (($issue-width + $issue-margin + $issue-padding) * 2);
|
||||
padding: $issue-padding;
|
||||
}
|
||||
}
|
||||
|
||||
.story,
|
||||
.label_sprint_impediments {
|
||||
display: block;
|
||||
position: relative;
|
||||
width: $issue-width * 2;
|
||||
min-height: $issue-height;
|
||||
margin: $issue-margin;
|
||||
padding: $issue-padding;
|
||||
float: left;
|
||||
border: 0 none;
|
||||
border-radius: $border-radius-large;
|
||||
background-color: $highlight-bg;
|
||||
font-size: $font-size-small-px;
|
||||
}
|
||||
|
||||
.story {
|
||||
color: $gray-darker;
|
||||
|
||||
.id {
|
||||
margin-bottom: 5px;
|
||||
padding: 0 3px;
|
||||
border-radius: $border-radius-base;
|
||||
background-color: $body-bg;
|
||||
font-size: .9em;
|
||||
line-height: 16px;
|
||||
opacity: .8;
|
||||
overflow: hidden;
|
||||
|
||||
a,
|
||||
.remaininghours {
|
||||
margin-left: 4px;
|
||||
float: right;
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
a {
|
||||
color: $gray-darkest;
|
||||
font-size: $font-size-small-px;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.assignee {
|
||||
font-size: 9px;
|
||||
}
|
||||
}
|
||||
|
||||
.subject {
|
||||
height: $issue-height * .6;
|
||||
padding: 2px;
|
||||
line-height: 1.3;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
&.closed .subject {
|
||||
text-decoration: line-through;
|
||||
}
|
||||
|
||||
.project {
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.id .v {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.story_points.editable {
|
||||
position: absolute;
|
||||
right: -$issue-padding;
|
||||
bottom: -$issue-padding;
|
||||
width: 36px;
|
||||
height: 36px;
|
||||
border: 2px solid $body-bg;
|
||||
border-radius: 50%;
|
||||
background-color: $brand-warning;
|
||||
color: $brand-text;
|
||||
font-weight: bold;
|
||||
line-height: 36px;
|
||||
text-align: center;
|
||||
|
||||
&:empty {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* item styles used by .task and .impediment */
|
||||
|
||||
#taskboard {
|
||||
.issue,
|
||||
.placeholder {
|
||||
display: block;
|
||||
position: relative;
|
||||
width: $issue-width;
|
||||
height: $issue-height;
|
||||
margin: $issue-margin;
|
||||
padding: $issue-padding;
|
||||
float: left;
|
||||
border: 0 none;
|
||||
border-radius: $border-radius-large;
|
||||
background-color: $gray-lighter;
|
||||
cursor: move;
|
||||
color: $gray-darker;
|
||||
font-size: 10px;
|
||||
line-height: 1.3;
|
||||
}
|
||||
|
||||
.placeholder {
|
||||
width: 83px;
|
||||
height: 78px;
|
||||
border: 1px dashed $highlight-border;
|
||||
background-color: $highlight-bg;
|
||||
}
|
||||
}
|
||||
|
||||
.issue {
|
||||
.id {
|
||||
margin-bottom: 5px;
|
||||
padding: 0 3px;
|
||||
border-radius: $border-radius-base;
|
||||
background-color: $body-bg;
|
||||
font-size: $font-size-small-px;
|
||||
font-weight: bold;
|
||||
line-height: 16px;
|
||||
text-align: right;
|
||||
opacity: .8;
|
||||
overflow: hidden;
|
||||
|
||||
.v {
|
||||
display: none;
|
||||
}
|
||||
|
||||
a {
|
||||
color: $gray-darkest;
|
||||
}
|
||||
}
|
||||
|
||||
.editable:hover {
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
.subject.editable {
|
||||
height: $issue-height * .5;
|
||||
padding: 2px;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
&.closed .subject.editable {
|
||||
text-decoration: line-through;
|
||||
}
|
||||
|
||||
.assigned_to_id {
|
||||
&.editable {
|
||||
width: 81px;
|
||||
height: 10px;
|
||||
margin-top: 2px;
|
||||
padding: 2px;
|
||||
padding-top: 0;
|
||||
font-size: 9px;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.v {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
.priority_id {
|
||||
&.editable {
|
||||
position: absolute;
|
||||
right: -5px;
|
||||
bottom: 10px;
|
||||
height: 13px;
|
||||
padding-right: 5px;
|
||||
padding-left: 5px;
|
||||
border: 2px solid #fff;
|
||||
border-radius: 15px;
|
||||
background-color: #00e;
|
||||
color: #fff;
|
||||
font-size: 9px;
|
||||
}
|
||||
|
||||
.v {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
.remaining_hours.editable {
|
||||
position: absolute;
|
||||
right: -5px;
|
||||
bottom: -5px;
|
||||
height: 13px;
|
||||
padding-right: 5px;
|
||||
padding-left: 5px;
|
||||
border: 2px solid #fff;
|
||||
border-radius: 15px;
|
||||
background-color: #e00;
|
||||
color: #fff;
|
||||
font-size: 9px;
|
||||
}
|
||||
|
||||
.blocks,
|
||||
.remaining_hours.editable:empty {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.indicator {
|
||||
display: none;
|
||||
position: absolute;
|
||||
top: 38px;
|
||||
left: 36px;
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
padding: 2px;
|
||||
border: 2px solid #000;
|
||||
border-radius: 12px;
|
||||
background-color: #fff;
|
||||
background-repeat: no-repeat;
|
||||
background-position: center;
|
||||
}
|
||||
|
||||
&.saving .indicator {
|
||||
display: block;
|
||||
background-image: url("images/indicator.gif");
|
||||
}
|
||||
|
||||
&.error .indicator {
|
||||
display: block;
|
||||
border-color: #c00;
|
||||
background-image: url("images/warning.png");
|
||||
background-position: 2px 0;
|
||||
}
|
||||
|
||||
.editors {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
/* dialog */
|
||||
|
||||
.rb_editor_dialog.ui-dialog {
|
||||
.ui-dialog-titlebar-close {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.ui-widget-header {
|
||||
background: none;
|
||||
background-color: #fff;
|
||||
opacity: .5;
|
||||
}
|
||||
|
||||
.ui-dialog-title {
|
||||
margin-right: 0;
|
||||
float: right;
|
||||
}
|
||||
|
||||
&.ui-widget-content {
|
||||
border: 0 none;
|
||||
background: none;
|
||||
box-shadow: 2px 2px 5px #777;
|
||||
}
|
||||
|
||||
.ui-dialog-buttonpane.ui-widget-content {
|
||||
border: 0 none;
|
||||
background: none;
|
||||
background-color: none;
|
||||
}
|
||||
}
|
||||
|
||||
/* item editor */
|
||||
|
||||
.rb_editor {
|
||||
label {
|
||||
display: block;
|
||||
width: 100%;
|
||||
font-size: 11px;
|
||||
text-transform: capitalize;
|
||||
}
|
||||
|
||||
.editor {
|
||||
width: 100%;
|
||||
margin-bottom: 10px;
|
||||
font-size: 11px;
|
||||
}
|
||||
|
||||
.subject {
|
||||
width: 272px;
|
||||
height: 65px;
|
||||
}
|
||||
|
||||
.description {
|
||||
width: 272px;
|
||||
height: 80px;
|
||||
}
|
||||
|
||||
.remaining_hours,
|
||||
.time_entry_hours,
|
||||
.time_entry_user_id,
|
||||
.time_entry_spent_on,
|
||||
.blocks {
|
||||
width: 268px;
|
||||
}
|
||||
|
||||
.time_entry_comments {
|
||||
width: 268px;
|
||||
height: 30px;
|
||||
}
|
||||
}
|
||||
|
||||
/* others */
|
||||
|
||||
#impediment_template,
|
||||
#task_template {
|
||||
display: none;
|
||||
}
|
||||
|
||||
#preloader {
|
||||
position: absolute;
|
||||
left: -500px;
|
||||
}
|
||||
|
||||
#spinner {
|
||||
background-image: url("images/indicator.gif");
|
||||
}
|
||||
|
||||
#warning {
|
||||
background-image: url("images/warning.png");
|
||||
}
|
||||
|
||||
#ui-datepicker-div {
|
||||
display: none;
|
||||
}
|
||||
|
Before Width: | Height: | Size: 35 KiB After Width: | Height: | Size: 178 KiB |
|
Before Width: | Height: | Size: 41 KiB After Width: | Height: | Size: 200 KiB |
|
Before Width: | Height: | Size: 44 KiB |
|
Before Width: | Height: | Size: 50 KiB |
BIN
screenshots/issues.png
Normal file
|
After Width: | Height: | Size: 170 KiB |
|
Before Width: | Height: | Size: 49 KiB After Width: | Height: | Size: 150 KiB |
BIN
screenshots/redmine-backlogs.png
Normal file
|
After Width: | Height: | Size: 42 KiB |
|
Before Width: | Height: | Size: 24 KiB |
107
src/javascripts/modules/HistoryTabs.js
Normal file
@@ -0,0 +1,107 @@
|
||||
var PurpleMine = PurpleMine || {} // eslint-disable-line no-use-before-define
|
||||
|
||||
PurpleMine.HistoryTabs = (function () {
|
||||
'use strict'
|
||||
|
||||
var instance
|
||||
var translations = {
|
||||
en: {
|
||||
all: 'All',
|
||||
notes: 'Notes',
|
||||
details: 'Changes'
|
||||
},
|
||||
ro: {
|
||||
all: 'Toate',
|
||||
notes: 'Note',
|
||||
details: 'Schimbări'
|
||||
},
|
||||
fr: {
|
||||
all: 'Tout',
|
||||
notes: 'Remarques',
|
||||
details: 'Changements'
|
||||
},
|
||||
pl: {
|
||||
all: 'Wszystko',
|
||||
notes: 'Notatki',
|
||||
details: 'Zmiany'
|
||||
},
|
||||
de: {
|
||||
all: 'Alles',
|
||||
notes: 'Kommentare',
|
||||
details: 'Änderungen'
|
||||
},
|
||||
ja: {
|
||||
all: 'すべて',
|
||||
notes: '注記',
|
||||
details: '変更'
|
||||
}
|
||||
}
|
||||
|
||||
function HistoryTabs () {
|
||||
if (instance) {
|
||||
return instance
|
||||
}
|
||||
|
||||
instance = this
|
||||
|
||||
this.$tabsContainer = null
|
||||
this.$tabs = null
|
||||
this.$history = $('#history')
|
||||
this.lang = document.documentElement.lang
|
||||
|
||||
if (typeof translations[this.lang] === 'undefined') {
|
||||
this.lang = 'en'
|
||||
}
|
||||
|
||||
this._ = translations[this.lang]
|
||||
|
||||
if (this.$history.length > 0) {
|
||||
buildTabs()
|
||||
markFirstOfTypes()
|
||||
}
|
||||
}
|
||||
|
||||
function buildTabs () {
|
||||
var html = ''
|
||||
var liStart = '<li><a href="javascript:;" class="'
|
||||
var liMid = 'history-tab" data-tab="'
|
||||
var liEnd = '</a></li>'
|
||||
|
||||
html += '<div class="tabs"><ul>'
|
||||
html += liStart + 'selected ' + liMid + 'all">' + instance._.all + liEnd
|
||||
html += liStart + liMid + 'notes">' + instance._.notes + liEnd
|
||||
html += liStart + liMid + 'details">' + instance._.details + liEnd
|
||||
html += '</ul></div>'
|
||||
|
||||
instance.$tabsContainer = $(html)
|
||||
$('#history > h3').after(instance.$tabsContainer)
|
||||
|
||||
instance.$tabs = instance.$tabsContainer.find('.history-tab')
|
||||
instance.$tabs.on('click', tabClick)
|
||||
}
|
||||
|
||||
function markFirstOfTypes () {
|
||||
instance.$history.find('.has-notes:first').addClass('first-of-notes')
|
||||
instance.$history.find('.has-details:first').addClass('first-of-details')
|
||||
}
|
||||
|
||||
var tabClick = function () {
|
||||
var $this = $(this)
|
||||
var tab = $this.attr('data-tab')
|
||||
|
||||
instance.$tabs.removeClass('selected')
|
||||
$this.addClass('selected')
|
||||
|
||||
instance.$history
|
||||
.removeClass('hide-details')
|
||||
.removeClass('hide-notes')
|
||||
|
||||
if (tab === 'notes') {
|
||||
instance.$history.addClass('hide-details')
|
||||
} else if (tab === 'details') {
|
||||
instance.$history.addClass('hide-notes')
|
||||
}
|
||||
}
|
||||
|
||||
return HistoryTabs
|
||||
}())
|
||||
128
src/javascripts/modules/MenuCollapse.js
Normal file
@@ -0,0 +1,128 @@
|
||||
var PurpleMine = PurpleMine || {} // eslint-disable-line no-use-before-define
|
||||
|
||||
PurpleMine.MenuCollapse = (function () {
|
||||
'use strict'
|
||||
|
||||
var instance
|
||||
var translations = {
|
||||
en: {
|
||||
topMenuToggler: 'Expand/collapse top menu'
|
||||
},
|
||||
ro: {
|
||||
topMenuToggler: 'Deschide/închide meniul de sus'
|
||||
},
|
||||
fr: {
|
||||
topMenuToggler: 'Développer/réduire le menu principal'
|
||||
},
|
||||
pl: {
|
||||
topMenuToggler: 'Zwiń/rozwiń górne menu'
|
||||
},
|
||||
de: {
|
||||
topMenuToggler: 'Ein-/Ausklappen Hauptmenu'
|
||||
},
|
||||
ja: {
|
||||
topMenuToggler: 'トップメニューの展開/折りたたみ'
|
||||
}
|
||||
}
|
||||
|
||||
function MenuCollapse () {
|
||||
if (instance) {
|
||||
return instance
|
||||
}
|
||||
|
||||
instance = this
|
||||
|
||||
this.lang = document.documentElement.lang
|
||||
|
||||
if (typeof translations[this.lang] === 'undefined') {
|
||||
this.lang = 'en'
|
||||
}
|
||||
|
||||
this._ = translations[this.lang]
|
||||
|
||||
this.menus = {
|
||||
top: {
|
||||
$el: $('#top-menu')
|
||||
}
|
||||
}
|
||||
|
||||
for (var menu in this.menus) {
|
||||
if (this.menus.hasOwnProperty(menu) && this.menus[menu].$el.length > 0) {
|
||||
handleMenu(menu)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function handleMenu (menu) {
|
||||
if (instance.menus[menu].$el.css('maxHeight') === 'none') {
|
||||
return false
|
||||
}
|
||||
|
||||
instance.menus[menu].collapsed = true
|
||||
|
||||
if (window.localStorage) {
|
||||
instance.menus[menu].collapsed =
|
||||
localStorage.getItem(getMenuStorageKey(menu)) === null
|
||||
}
|
||||
|
||||
buildToggleButton(menu)
|
||||
|
||||
if (instance.isCollapsed(menu) === false) {
|
||||
instance.expandMenu(menu)
|
||||
}
|
||||
}
|
||||
|
||||
function getMenuStorageKey (menu) {
|
||||
return 'PurpleMine:' + menu + 'MenuExpanded'
|
||||
}
|
||||
|
||||
function buildToggleButton (menu) {
|
||||
var togglerClass = menu + '-menu-toggler'
|
||||
var togglerLabel = instance._[menu + 'MenuToggler']
|
||||
var togglerHtml = '<a href="javascript:;" class="' +
|
||||
togglerClass +
|
||||
'" title="' +
|
||||
togglerLabel +
|
||||
'"></a>'
|
||||
instance.menus[menu].$toggler = $(togglerHtml)
|
||||
|
||||
instance.menus[menu].$el.prepend(instance.menus[menu].$toggler)
|
||||
instance.menus[menu].$toggler.on('click', { menu: menu }, instance.toggleMenu)
|
||||
}
|
||||
|
||||
MenuCollapse.prototype.toggleMenu = function (event) {
|
||||
var menu = event.data.menu || ''
|
||||
|
||||
if (instance.isCollapsed(menu)) {
|
||||
instance.expandMenu(menu)
|
||||
} else {
|
||||
instance.collapseMenu(menu)
|
||||
}
|
||||
}
|
||||
|
||||
MenuCollapse.prototype.isCollapsed = function (menu) {
|
||||
return this.menus[menu].collapsed
|
||||
}
|
||||
|
||||
MenuCollapse.prototype.expandMenu = function (menu) {
|
||||
this.menus[menu].$el.addClass('expanded')
|
||||
this.menus[menu].$toggler.addClass('expanded')
|
||||
this.menus[menu].collapsed = false
|
||||
|
||||
if (window.localStorage) {
|
||||
localStorage.setItem(getMenuStorageKey(menu), 'x')
|
||||
}
|
||||
}
|
||||
|
||||
MenuCollapse.prototype.collapseMenu = function (menu) {
|
||||
this.menus[menu].$el.removeClass('expanded')
|
||||
this.menus[menu].$toggler.removeClass('expanded')
|
||||
this.menus[menu].collapsed = true
|
||||
|
||||
if (window.localStorage) {
|
||||
localStorage.removeItem(getMenuStorageKey(menu))
|
||||
}
|
||||
}
|
||||
|
||||
return MenuCollapse
|
||||
}())
|
||||
141
src/javascripts/modules/RevisionGraph.js
Normal file
@@ -0,0 +1,141 @@
|
||||
var PurpleMine = PurpleMine || {} // eslint-disable-line no-use-before-define
|
||||
/* global Raphael: false, revisionGraph: true */
|
||||
|
||||
PurpleMine.RevisionGraph = function (holder, commitsHash, graphSpace) {
|
||||
'use strict'
|
||||
|
||||
var XSTEP = 20
|
||||
var CIRCLE_INROW_OFFSET = 17
|
||||
var commitsByScmid = commitsHash
|
||||
var commits = $.map(commitsByScmid, function (val) { return val })
|
||||
var maxRdmid = commits.length - 1
|
||||
var commitTableRows = $('table.changesets tr.changeset')
|
||||
|
||||
// create graph
|
||||
if (revisionGraph !== null) {
|
||||
revisionGraph.clear()
|
||||
} else {
|
||||
revisionGraph = new Raphael(holder)
|
||||
}
|
||||
|
||||
var top = revisionGraph.set()
|
||||
|
||||
// init dimensions
|
||||
var graphXOffset = commitTableRows.first().find('td').first().position().left - $(holder).position().left
|
||||
var graphYOffset = $(holder).position().top
|
||||
var graphRightSide = graphXOffset + (graphSpace + 1) * XSTEP
|
||||
var graphBottom = commitTableRows.last().position().top + commitTableRows.last().height() - graphYOffset
|
||||
|
||||
revisionGraph.setSize(graphRightSide, graphBottom)
|
||||
|
||||
// init colors
|
||||
var colors = [
|
||||
'#e74c3c',
|
||||
'#584492',
|
||||
'#019851',
|
||||
'#ed820c',
|
||||
'#4183c4'
|
||||
]
|
||||
|
||||
// get more colors if needed
|
||||
if (graphSpace >= colors.length) {
|
||||
Raphael.getColor.reset()
|
||||
|
||||
for (var k = 0; k <= graphSpace; k++) {
|
||||
colors.push(Raphael.getColor(0.9))
|
||||
}
|
||||
}
|
||||
|
||||
var parentCommit
|
||||
var x, y, parentX, parentY
|
||||
var path, title
|
||||
var revisionDotOverlay
|
||||
|
||||
$.each(commits, function (index, commit) {
|
||||
if (!commit.hasOwnProperty('space')) {
|
||||
commit.space = 0
|
||||
}
|
||||
|
||||
y = commitTableRows.eq(maxRdmid - commit.rdmid).position().top - graphYOffset + CIRCLE_INROW_OFFSET
|
||||
x = graphXOffset + XSTEP / 2 + XSTEP * commit.space
|
||||
|
||||
revisionGraph
|
||||
.circle(x, y, 3.5)
|
||||
.attr({
|
||||
fill: colors[commit.space],
|
||||
stroke: 'none'
|
||||
})
|
||||
.toFront()
|
||||
|
||||
// paths to parents
|
||||
$.each(commit.parent_scmids, function (index, parentScmid) {
|
||||
parentCommit = commitsByScmid[parentScmid]
|
||||
|
||||
if (parentCommit) {
|
||||
if (!parentCommit.hasOwnProperty('space')) {
|
||||
parentCommit.space = 0
|
||||
}
|
||||
|
||||
parentY = commitTableRows.eq(maxRdmid - parentCommit.rdmid).position().top - graphYOffset + CIRCLE_INROW_OFFSET
|
||||
parentX = graphXOffset + XSTEP / 2 + XSTEP * parentCommit.space
|
||||
|
||||
if (parentCommit.space === commit.space) {
|
||||
// vertical path
|
||||
path = revisionGraph.path([
|
||||
'M', x, y,
|
||||
'V', parentY])
|
||||
} else {
|
||||
// path to a commit in a different branch (Bezier curve)
|
||||
path = revisionGraph.path([
|
||||
'M', x, y,
|
||||
'C', x, y, x, y + (parentY - y) / 2, x + (parentX - x) / 2, y + (parentY - y) / 2,
|
||||
'C', x + (parentX - x) / 2, y + (parentY - y) / 2, parentX, parentY - (parentY - y) / 2, parentX, parentY
|
||||
])
|
||||
}
|
||||
} else {
|
||||
// vertical path ending at the bottom of the revisionGraph
|
||||
path = revisionGraph.path([
|
||||
'M', x, y,
|
||||
'V', graphBottom
|
||||
])
|
||||
}
|
||||
|
||||
path
|
||||
.attr({
|
||||
stroke: colors[commit.space],
|
||||
'stroke-width': 1.5
|
||||
})
|
||||
.toBack()
|
||||
})
|
||||
|
||||
revisionDotOverlay = revisionGraph.circle(x, y, 10)
|
||||
revisionDotOverlay
|
||||
.attr({
|
||||
fill: '#000',
|
||||
opacity: 0,
|
||||
cursor: 'pointer',
|
||||
href: commit.href
|
||||
})
|
||||
|
||||
if (commit.refs !== null && commit.refs.length > 0) {
|
||||
title = document.createElementNS(revisionGraph.canvas.namespaceURI, 'title')
|
||||
title.appendChild(document.createTextNode(commit.refs))
|
||||
revisionDotOverlay.node.appendChild(title)
|
||||
}
|
||||
|
||||
top.push(revisionDotOverlay)
|
||||
})
|
||||
|
||||
top.toFront()
|
||||
}
|
||||
|
||||
$(function () {
|
||||
'use strict'
|
||||
|
||||
if (window.drawRevisionGraph) {
|
||||
// override Redmine's function
|
||||
window.drawRevisionGraph = PurpleMine.RevisionGraph
|
||||
// make graph redraw itself
|
||||
$(window).resize()
|
||||
}
|
||||
})
|
||||
146
src/javascripts/modules/SidebarToggler.js
Normal file
@@ -0,0 +1,146 @@
|
||||
var PurpleMine = PurpleMine || {} // eslint-disable-line no-use-before-define
|
||||
|
||||
PurpleMine.SidebarToggler = (function () {
|
||||
'use strict'
|
||||
|
||||
var instance
|
||||
var translations = {
|
||||
en: {
|
||||
toggler: 'Toggle sidebar'
|
||||
},
|
||||
ro: {
|
||||
toggler: 'Deschide/închide bara laterală'
|
||||
},
|
||||
fr: {
|
||||
toggler: 'Basculer la barre latérale'
|
||||
},
|
||||
pl: {
|
||||
toggler: 'Pokaż/ukryj panel boczny'
|
||||
},
|
||||
ja: {
|
||||
toggler: 'サイドバーの切り替え'
|
||||
}
|
||||
}
|
||||
|
||||
function SidebarToggler () {
|
||||
if (instance) {
|
||||
return instance
|
||||
}
|
||||
|
||||
instance = this
|
||||
|
||||
this.sidebarVisible = true
|
||||
this.sidebarHiding = null
|
||||
this.$toggler = null
|
||||
this.$main = $('#main')
|
||||
this.$sidebar = $('#sidebar')
|
||||
this.lang = document.documentElement.lang
|
||||
|
||||
if (typeof translations[this.lang] === 'undefined') {
|
||||
this.lang = 'en'
|
||||
}
|
||||
|
||||
this._ = translations[this.lang]
|
||||
|
||||
// Fix issue with context menu position
|
||||
if (this.$main.css('position') === 'relative') {
|
||||
$(window).load(function () {
|
||||
$('#context-menu').appendTo('#wrapper3')
|
||||
})
|
||||
}
|
||||
|
||||
handleSidebar()
|
||||
}
|
||||
|
||||
function handleSidebar () {
|
||||
if (window.localStorage) {
|
||||
instance.sidebarVisible =
|
||||
localStorage.getItem('PurpleMine:sidebarHidden') === null
|
||||
}
|
||||
|
||||
if (
|
||||
instance.$sidebar.length > 0 &&
|
||||
instance.$main.hasClass('nosidebar') === false
|
||||
) {
|
||||
buildButton()
|
||||
bindKeyHandler()
|
||||
|
||||
if (instance.sidebarVisible === false) {
|
||||
instance.hideSidebar(true)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function bindKeyHandler () {
|
||||
var body = document.getElementsByTagName('body')[0]
|
||||
|
||||
window.onkeydown = function (event) {
|
||||
if (
|
||||
body === event.target &&
|
||||
event.keyCode === 83 && // "s"
|
||||
event.ctrlKey === false &&
|
||||
event.altKey === false &&
|
||||
event.shiftKey === false
|
||||
) {
|
||||
instance.toggleSidebar()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function buildButton () {
|
||||
var togglerClass = 'sidebar-toggler'
|
||||
var togglerHtml = '<a href="javascript:;" class="' +
|
||||
togglerClass +
|
||||
'" title="' +
|
||||
instance._.toggler +
|
||||
'"></a>'
|
||||
instance.$toggler = $(togglerHtml)
|
||||
|
||||
instance.$main.append(instance.$toggler)
|
||||
instance.$toggler.on('click', instance.toggleSidebar)
|
||||
}
|
||||
|
||||
SidebarToggler.prototype.toggleSidebar = function () {
|
||||
if (instance.sidebarVisible) {
|
||||
instance.hideSidebar()
|
||||
} else {
|
||||
instance.showSidebar()
|
||||
}
|
||||
}
|
||||
|
||||
SidebarToggler.prototype.hideSidebar = function (immediate) {
|
||||
if (immediate === true) {
|
||||
this.$sidebar.addClass('sidebar-hiding sidebar-hidden')
|
||||
} else {
|
||||
this.$sidebar.addClass('sidebar-hiding')
|
||||
this.sidebarHiding = setTimeout(function sidebarTimeout () {
|
||||
instance.$sidebar.addClass('sidebar-hidden')
|
||||
}, 500)
|
||||
}
|
||||
|
||||
this.$toggler.addClass('sidebar-hidden')
|
||||
this.sidebarVisible = false
|
||||
|
||||
if (window.localStorage) {
|
||||
localStorage.setItem('PurpleMine:sidebarHidden', 'x')
|
||||
}
|
||||
}
|
||||
|
||||
SidebarToggler.prototype.showSidebar = function () {
|
||||
clearTimeout(this.sidebarHiding)
|
||||
|
||||
instance.$sidebar.removeClass('sidebar-hidden')
|
||||
setTimeout(function sidebarTimeout () {
|
||||
instance.$sidebar.removeClass('sidebar-hiding')
|
||||
}, 50)
|
||||
|
||||
this.$toggler.removeClass('sidebar-hidden')
|
||||
this.sidebarVisible = true
|
||||
|
||||
if (window.localStorage) {
|
||||
localStorage.removeItem('PurpleMine:sidebarHidden')
|
||||
}
|
||||
}
|
||||
|
||||
return SidebarToggler
|
||||
}())
|
||||
9
src/javascripts/theme.js
Normal file
@@ -0,0 +1,9 @@
|
||||
$(function () {
|
||||
/* global PurpleMine */
|
||||
'use strict'
|
||||
|
||||
/* eslint-disable no-new */
|
||||
new PurpleMine.SidebarToggler()
|
||||
new PurpleMine.HistoryTabs()
|
||||
new PurpleMine.MenuCollapse()
|
||||
})
|
||||
@@ -5,9 +5,9 @@
|
||||
@import "mixins/center-block";
|
||||
@import "mixins/clearfix";
|
||||
@import "mixins/forms";
|
||||
@import "mixins/gradients";
|
||||
@import "mixins/opacity";
|
||||
@import "mixins/image";
|
||||
@import "mixins/text-overflow";
|
||||
@import "mixins/vendor-prefixes";
|
||||
|
||||
@import "mixins/issues";
|
||||
@import "mixins/link-variant";
|
||||
@import "mixins/shadows";
|
||||
@@ -7,15 +7,21 @@
|
||||
//
|
||||
|
||||
$fixed-layout: false !default;
|
||||
$flexbox-layout: true !default;
|
||||
$sidebar-position: left !default;
|
||||
$color-priorities: true !default;
|
||||
$color-trackers: true !default;
|
||||
$colored-issue: true !default;
|
||||
$color-status: true !default;
|
||||
$use-gravatars: true !default;
|
||||
$use-font-awesome: true !default;
|
||||
$hide-sidebar-on-screen-xs: true !default;
|
||||
$use-logo: false !default;
|
||||
$use-retina-logo: false !default;
|
||||
$use-project-tiles: true !default;
|
||||
$issue-subject-large: true !default;
|
||||
$bubble-journal-wiki-note: true !default;
|
||||
$enable-sidebar-toggler: true !default;
|
||||
$wiki-page-more-vertical-space: true !default;
|
||||
$top-menu-collapse: false !default;
|
||||
|
||||
|
||||
//== Colors
|
||||
@@ -36,7 +42,7 @@ $brand-accent: #deddef !default;
|
||||
|
||||
$brand-success: #019851 !default;
|
||||
$brand-info: #409ae3 !default;
|
||||
$brand-warning: #f39412 !default;
|
||||
$brand-warning: #ed820c !default;
|
||||
$brand-danger: #e74c3c !default;
|
||||
|
||||
$state-success: #b5fbb7 !default;
|
||||
@@ -67,15 +73,18 @@ $font-family-sans-serif: "Helvetica Neue", Helvetica, Arial, freesans, sa
|
||||
|
||||
$font-family-monospace: Consolas, "Liberation Mono", Menlo, "Courier New", Courier, monospace !default;
|
||||
$font-family-base: $font-family-sans-serif !default;
|
||||
$font-weight-normal: normal !default;
|
||||
$font-weight-bold: bold !default;
|
||||
|
||||
$font-size-base: 14px !default;
|
||||
$font-size-large: 1.285em !default;
|
||||
$font-size-large-px: 18px !default;
|
||||
$font-size-small: .86em !default;
|
||||
$font-size-small-px: 12px !default;
|
||||
$font-size-small-unitless: .86 !default;
|
||||
$font-size-small: $font-size-small-unitless * 1em !default;
|
||||
$font-size-small-px: floor($font-size-small-unitless * $font-size-base) !default;
|
||||
|
||||
$font-size-h1: 2.285em !default;
|
||||
$font-size-h2: 1.857em !default;
|
||||
$font-size-h1: 2.25em !default;
|
||||
$font-size-h2: 1.75em !default;
|
||||
$font-size-h3: 1.5em !default;
|
||||
$font-size-h4: 1.286em !default;
|
||||
$font-size-h5: 1em !default;
|
||||
@@ -86,7 +95,9 @@ $line-height-large: 1.33 !default;
|
||||
$line-height-computed: floor(($font-size-base * $line-height-base)) !default; // ~20px
|
||||
|
||||
$headings-font-weight: 700 !default;
|
||||
$headings-line-height: 1.2 !default;
|
||||
$headings-line-height: 1.4 !default;
|
||||
$headings-anchor-color: $gray-lighter !default;
|
||||
$headings-anchor-color-active: $gray-light !default;
|
||||
|
||||
|
||||
//== Wiki
|
||||
@@ -95,6 +106,11 @@ $headings-line-height: 1.2 !default;
|
||||
$wiki-text: #333 !default;
|
||||
$wiki-font-size: 16px !default;
|
||||
$wiki-line-height: 1.6 !default;
|
||||
$wiki-preview-bg: #fcfcfc !default;
|
||||
|
||||
$toc-active-link: darken($link-color, 10%) !default;
|
||||
$toc-active-link-hover: darken($toc-active-link, 10%) !default;
|
||||
$toc-active-border: $link-color !default;
|
||||
|
||||
|
||||
//== Components
|
||||
@@ -116,7 +132,6 @@ $border-radius-small: 2px !default;
|
||||
|
||||
$hr-border: $gray-light !default;
|
||||
$abbr-border-color: $gray-light !default;
|
||||
$blockquote-border-color-fallback: $gray-lighter !default;
|
||||
$blockquote-border-color: rgba(#000, .15) !default;
|
||||
|
||||
$component-color: $gray-dark !default;
|
||||
@@ -129,6 +144,9 @@ $component-active-border: $brand-primary !default;
|
||||
|
||||
$font-size-list: .92em !default;
|
||||
|
||||
$collapsible-animation-time: .3s !default;
|
||||
$collapsible-max-height: 10000px !default;
|
||||
|
||||
|
||||
//== Tables
|
||||
//
|
||||
@@ -136,9 +154,17 @@ $font-size-list: .92em !default;
|
||||
$table-cell-padding: 8px !default;
|
||||
$table-condensed-cell-padding: 5px !default;
|
||||
|
||||
$table-list-header-border: 0 0 2px !default;
|
||||
$table-list-item-border: 0 0 1px !default;
|
||||
$table-list-color-odd-rows: true !default;
|
||||
$table-list-color-even-rows: false !default;
|
||||
$table-list-highlight-rows: false !default;
|
||||
|
||||
$table-bg: transparent !default;
|
||||
$table-bg-accent: darken($body-bg, 3%) !default;
|
||||
$table-bg-hover: #f1f1f1 !default;
|
||||
$table-accent-factor: .03 !default;
|
||||
$table-hover-factor: .03 !default;
|
||||
$table-bg-accent: rgba(#000, $table-accent-factor) !default;
|
||||
$table-bg-hover: rgba(#000, $table-hover-factor) !default;
|
||||
$table-bg-active: $table-bg-hover !default;
|
||||
|
||||
$table-border-color: darken($body-bg, 13.5%) !default;
|
||||
@@ -147,9 +173,9 @@ $table-border-color: darken($body-bg, 13.5%) !default;
|
||||
//== Trackers priorities
|
||||
//
|
||||
|
||||
$priority-lowest-bg: #defacb !default;
|
||||
$priority-lowest-text: #565 !default;
|
||||
$priority-lowest-link: #265 !default;
|
||||
$priority-lowest-bg: #dff4d0 !default;
|
||||
$priority-lowest-text: #676 !default;
|
||||
$priority-lowest-link: #096 !default;
|
||||
|
||||
$priority-default-bg: #fff !default;
|
||||
$priority-default-text: $text-color !default;
|
||||
@@ -157,15 +183,15 @@ $priority-default-link: $link-color !default;
|
||||
|
||||
$priority-high3-bg: #d5eaff !default;
|
||||
$priority-high3-text: #556 !default;
|
||||
$priority-high3-link: #336 !default;
|
||||
$priority-high3-link: #05a !default;
|
||||
|
||||
$priority-high2-bg: #ffe1d7 !default;
|
||||
$priority-high2-text: #930 !default;
|
||||
$priority-high2-link: #624 !default;
|
||||
$priority-high2-text: #855 !default;
|
||||
$priority-high2-link: #b04 !default;
|
||||
|
||||
$priority-highest-bg: #ffa5a5 !default;
|
||||
$priority-highest-text: #900 !default;
|
||||
$priority-highest-link: #403 !default;
|
||||
$priority-highest-text: #944 !default;
|
||||
$priority-highest-link: #a03 !default;
|
||||
|
||||
|
||||
//== Trackers links
|
||||
@@ -174,43 +200,85 @@ $priority-highest-link: #403 !default;
|
||||
$tracker-inline-padding: 1px 5px !default;
|
||||
$tracker-list-padding: 0 6px !default;
|
||||
|
||||
$tracker-1-bg: $brand-danger !default;
|
||||
$tracker-1-text: $brand-text !default;
|
||||
$tracker-default-bg: #668 !default;
|
||||
$tracker-default-text: $brand-text !default;
|
||||
|
||||
$tracker-2-bg: $brand-primary !default;
|
||||
$tracker-2-text: $brand-text !default;
|
||||
|
||||
$tracker-3-bg: $brand-success !default;
|
||||
$tracker-3-text: $brand-text !default;
|
||||
|
||||
$tracker-4-bg: $brand-info !default;
|
||||
$tracker-4-text: $brand-text !default;
|
||||
|
||||
$tracker-5-bg: $brand-warning !default;
|
||||
$tracker-5-text: $brand-text !default;
|
||||
|
||||
$tracker-6-bg: mix($brand-success, $brand-info, 50%) !default;
|
||||
$tracker-6-text: $brand-text !default;
|
||||
|
||||
$tracker-7-bg: mix($brand-primary, $brand-warning, 50%) !default;
|
||||
$tracker-7-text: $brand-text !default;
|
||||
$tracker-default-colors-map: (
|
||||
1: (
|
||||
background: $brand-danger,
|
||||
color: $brand-text
|
||||
),
|
||||
2: (
|
||||
background: $brand-info,
|
||||
color: $brand-text
|
||||
),
|
||||
3: (
|
||||
background: $brand-success,
|
||||
color: $brand-text
|
||||
),
|
||||
4: (
|
||||
background: $brand-primary,
|
||||
color: $brand-text
|
||||
),
|
||||
5: (
|
||||
background: $brand-warning,
|
||||
color: $brand-text
|
||||
),
|
||||
6: (
|
||||
background: mix($brand-success, $brand-info, 50%),
|
||||
color: $brand-text
|
||||
),
|
||||
7: (
|
||||
background: mix($brand-primary, $brand-warning, 50%),
|
||||
color: $brand-text
|
||||
)
|
||||
) !default;
|
||||
$tracker-custom-colors-map: () !default;
|
||||
$tracker-colors-map: map-merge($tracker-default-colors-map, $tracker-custom-colors-map);
|
||||
|
||||
|
||||
//== Diffs
|
||||
//
|
||||
|
||||
$diff-out-color: #522;
|
||||
$diff-out-bg: #fac0d8;
|
||||
$diff-out-bg-light: #fcdcf1;
|
||||
$diff-out-color: #511 !default;
|
||||
$diff-out-bg: #fbb !default;
|
||||
$diff-out-bg-light: rgba($diff-out-bg, .3) !default;
|
||||
|
||||
$diff-in-color: #350 !default;
|
||||
$diff-in-bg: #afa !default;
|
||||
$diff-in-bg-light: rgba($diff-in-bg, .3) !default;
|
||||
|
||||
|
||||
//== Journal changes
|
||||
//
|
||||
|
||||
$journal-old-value-color: #430 !default;
|
||||
$journal-old-value-bg: rgba(#ffeaaa, .3) !default;
|
||||
$journal-new-value-color: #350 !default;
|
||||
$journal-new-value-bg: rgba(#bffbbf, .3) !default;
|
||||
|
||||
|
||||
//== Changesets
|
||||
//
|
||||
|
||||
$changeset-add-color: $brand-success !default;
|
||||
$changeset-modified-color: $brand-warning !default;
|
||||
$changeset-copied-color: $brand-info !default;
|
||||
$changeset-renamed-color: $brand-primary !default;
|
||||
$changeset-deleted-color: $brand-danger !default;
|
||||
|
||||
$diff-in-color: #350;
|
||||
$diff-in-bg: #c8fbbf;
|
||||
$diff-in-bg-light: #e1fcd8;
|
||||
|
||||
//== Buttons
|
||||
//
|
||||
|
||||
$btn-font-weight: normal !default;
|
||||
$btn-padding-vertical: 3px !default;
|
||||
$btn-padding-horizontal: 12px !default;
|
||||
$btn-padding-horizontal-small: 8px !default;
|
||||
|
||||
$btn-link-color: $link-color !default;
|
||||
$btn-link-bg: $body-bg !default;
|
||||
$btn-link-border: $body-bg !default;
|
||||
|
||||
$btn-default-color: $gray-darkest !default;
|
||||
$btn-default-bg: $gray-lightest !default;
|
||||
@@ -218,11 +286,11 @@ $btn-default-border: $gray-lighter !default;
|
||||
|
||||
$btn-primary-color: #fff !default;
|
||||
$btn-primary-bg: $brand-info !default;
|
||||
$btn-primary-border: darken($btn-primary-bg, 5%) !default;
|
||||
$btn-primary-border: $btn-primary-bg !default;
|
||||
|
||||
$btn-success-color: #fff !default;
|
||||
$btn-success-bg: $brand-success !default;
|
||||
$btn-success-border: darken($btn-success-bg, 5%) !default;
|
||||
$btn-success-border: $btn-success-bg !default;
|
||||
|
||||
|
||||
//== Highlights
|
||||
@@ -246,21 +314,29 @@ $input-border: #ccc !default;
|
||||
$input-border-radius: $border-radius-small !default;
|
||||
$input-border-radius-large: $border-radius-large !default;
|
||||
|
||||
$input-border-focus: #51a7e8 !default;
|
||||
$input-border-focus: $brand-primary !default;
|
||||
$input-border-focus-alpha: .6 !default;
|
||||
$input-shadow-focus-alpha: .2 !default;
|
||||
$input-color-placeholder: #999 !default;
|
||||
|
||||
$input-padding-vertical: 3px;
|
||||
$input-padding-horizontal: 8px;
|
||||
$input-padding-vertical: $btn-padding-vertical !default;
|
||||
$input-padding-horizontal: 8px !default;
|
||||
|
||||
$input-height-base: ($line-height-computed + ($input-padding-vertical * 2) + 2) !default;
|
||||
|
||||
$label-width: 160px;
|
||||
$label-wide-width: 280px;
|
||||
$label-space: 10px;
|
||||
$label-width: 160px !default;
|
||||
$label-wide-width: 280px !default;
|
||||
$label-space: 10px !default;
|
||||
|
||||
$legend-color: $gray-dark !default;
|
||||
$legend-border-color: #e5e5e5 !default;
|
||||
|
||||
$check-input-gutter: 20px !default;
|
||||
$check-input-margin-vertical: 3px !default;
|
||||
$check-input-margin-horizontal: 8px !default;
|
||||
|
||||
$check-list-max-height: 20 * $line-height-computed;
|
||||
$check-list-offset-top: $input-padding-vertical + 1px;
|
||||
|
||||
//== Top
|
||||
//
|
||||
@@ -274,10 +350,37 @@ $header-bg: $brand-primary !default;
|
||||
$header-text: $brand-text !default;
|
||||
$header-link: $brand-text !default;
|
||||
$header-root: $brand-accent !default;
|
||||
$header-padding-vertical: 10px !default;
|
||||
$header-padding-horizontal: $padding-side !default;
|
||||
$header-title-size: $font-size-h3 !default;
|
||||
$header-title-line-height: $line-height-computed * 1.5 !default;
|
||||
|
||||
$responsive-header-height: 54px !default;
|
||||
|
||||
$flyout-menu-bg: darken($header-bg, 15%) !default;
|
||||
$flyout-menu-text: #fff !default;
|
||||
$flyout-menu-link: #fff !default;
|
||||
$flyout-menu-link-active-bg: $header-bg !default;
|
||||
$flyout-menu-link-active: #fff !default;
|
||||
$flyout-menu-header-bg: darken($header-bg, 25%) !default;
|
||||
$flyout-menu-header-border: darken($header-bg, 25%) !default;
|
||||
$flyout-menu-header-text: #fff !default;
|
||||
|
||||
$quick-search-width: 200px !default;
|
||||
$quick-search-border: darken($header-bg, 15%) !default;
|
||||
$quick-search-border-focus: lighten($header-bg, 25%) !default;
|
||||
$quick-search-box-width: 300px !default;
|
||||
$quick-search-dropdown-bg: $body-bg !default;
|
||||
$quick-search-dropdown-border: $gray-lighter !default;
|
||||
|
||||
$logo-image-width: 60px !default;
|
||||
$logo-image-height: 40px !default;
|
||||
$logo-position-horizontal: $header-padding-vertical !default;
|
||||
$logo-position-vertical: center !default;
|
||||
$logo-space: floor($header-padding-vertical / 2) !default;
|
||||
|
||||
$main-menu-bg: $gray-lightest !default;
|
||||
$main-menu-bg-hover: $gray-lightest !default;
|
||||
$main-menu-link: $gray-darker !default;
|
||||
$main-menu-link-active: #000 !default;
|
||||
$main-menu-border: $gray-lighter !default;
|
||||
@@ -286,23 +389,31 @@ $main-menu-shadow-width: 3px !default;
|
||||
$main-menu-shadow-active: $brand-primary !default;
|
||||
$main-menu-padding-vertical: $padding-large-vertical !default;
|
||||
$main-menu-padding-horizontal: 5px !default;
|
||||
$main-menu-dropdown-bg: lighten($main-menu-bg, 3%);
|
||||
|
||||
|
||||
//== Pagination
|
||||
//
|
||||
|
||||
$pagination-padding-vertical: $btn-padding-vertical !default;
|
||||
$pagination-padding-horizontal: 10px !default;
|
||||
|
||||
$pagination-color: $link-color !default;
|
||||
$pagination-bg: #fff !default;
|
||||
$pagination-bg: #fafafa !default;
|
||||
$pagination-border: #ddd !default;
|
||||
|
||||
$pagination-hover-color: $link-hover-color !default;
|
||||
$pagination-hover-bg: $gray-lightest !default;
|
||||
$pagination-hover-border: #ddd !default;
|
||||
$pagination-hover-border: #bbb !default;
|
||||
|
||||
$pagination-active-color: #fff !default;
|
||||
$pagination-active-bg: $brand-primary !default;
|
||||
$pagination-active-border: $brand-primary !default;
|
||||
|
||||
$pagination-inactive-color: #ccc !default;
|
||||
$pagination-inactive-bg: #fff !default;
|
||||
$pagination-inactive-border: #eee !default;
|
||||
|
||||
|
||||
//== Tabs
|
||||
//
|
||||
@@ -323,6 +434,7 @@ $tab-active-border: $tab-border !default;
|
||||
$sidebar-width: 270px !default;
|
||||
$sidebar-padding-vertical: $padding-base-vertical !default;
|
||||
$sidebar-padding-horizontal: $padding-side !default;
|
||||
$sidebar-width-computed: $sidebar-width - ($sidebar-padding-horizontal * 2) - 1px !default;
|
||||
$sidebar-link-hover-bg: $gray-lightest !default;
|
||||
$sidebar-link-active-bg: $body-bg !default;
|
||||
$sidebar-link-active-border: $gray-lighter !default;
|
||||
@@ -362,9 +474,11 @@ $progress-bar-info-bg: lighten($brand-info, 20%) !default;
|
||||
//== Panels
|
||||
//
|
||||
|
||||
$panel-body-padding: 15px !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: #555 !default;
|
||||
$panel-bg: #f5f5f5 !default;
|
||||
$panel-bg: #f9f9f9 !default;
|
||||
$panel-border: #ccc !default;
|
||||
$panel-border-radius: $border-radius-base !default;
|
||||
$panel-shadow: 0 1px 2px rgba(#000, .1),
|
||||
@@ -375,6 +489,7 @@ $panel-shadow: 0 1px 2px rgba(#000, .1),
|
||||
//
|
||||
|
||||
$tooltip-bg: #fff !default;
|
||||
$tooltip-border-width: 0 !default;
|
||||
$tooltip-border: #ccc !default;
|
||||
$tooltip-text: $gray-dark !default;
|
||||
$tooltip-link: $link-color !default;
|
||||
@@ -391,11 +506,24 @@ $issue-padding: 15px !default;
|
||||
$issue-gravatar-size: 50px !default;
|
||||
$issue-heading-size: 1.5 !default;
|
||||
|
||||
$issue-attribute-padding-v: 3px !default;
|
||||
$issue-attribute-padding-h: 5px !default;
|
||||
|
||||
|
||||
//== Speech "bubbles"
|
||||
//
|
||||
|
||||
$bubble-gravatar-size: 24px !default;
|
||||
$bubble-gravatar-space: 12px !default;
|
||||
$bubble-padding-vertical: 8px !default;
|
||||
$bubble-padding-horizontal: 15px !default;
|
||||
|
||||
|
||||
//== Media queries breakpoints
|
||||
//
|
||||
|
||||
$screen-xs: 480px !default;
|
||||
$screen-xs-min: $screen-xs !default;
|
||||
|
||||
$screen-sm: 768px !default;
|
||||
$screen-sm-min: $screen-sm !default;
|
||||
@@ -410,10 +538,28 @@ $screen-xs-max: ($screen-sm-min - 1) !default;
|
||||
$screen-sm-max: ($screen-md-min - 1) !default;
|
||||
$screen-md-max: ($screen-lg-min - 1) !default;
|
||||
|
||||
$redmine-responsive-max: 899px !default;
|
||||
$redmine-responsive-min: 900px !default;
|
||||
|
||||
$top-menu-collapse-breakpoint: $screen-lg-min !default;
|
||||
|
||||
|
||||
//== Login form
|
||||
//
|
||||
|
||||
$login-form-width: 24em !default;
|
||||
$login-form-label-width: 8em !default;
|
||||
$login-form-box-breakpoint: $screen-xs-min !default;
|
||||
$login-form-adjustments-map: (
|
||||
-2: da en en-GB ko pl tr uk,
|
||||
1: fr hr nl sr-YU sv,
|
||||
2: el eu lt pt sk sr th
|
||||
) !default;
|
||||
|
||||
|
||||
//== Content widths
|
||||
//
|
||||
|
||||
$width-sm: $screen-sm - ($padding-side * 2);
|
||||
$width-md: $screen-md - ($padding-side * 2);
|
||||
$width-lg: $screen-lg - ($padding-side * 2);
|
||||
$width-sm: $screen-sm - ($padding-side * 2) !default;
|
||||
$width-md: $screen-md - ($padding-side * 2) !default;
|
||||
$width-lg: $screen-lg - ($padding-side * 2) !default;
|
||||
@@ -2,6 +2,8 @@
|
||||
@import "mixins";
|
||||
|
||||
@import "lib/normalize";
|
||||
@import "lib/font-awesome";
|
||||
|
||||
|
||||
//== Redmine's core elements
|
||||
//
|
||||
@@ -11,7 +13,6 @@
|
||||
@import "components/forms";
|
||||
@import "components/tabs";
|
||||
@import "components/pagination";
|
||||
@import "components/top";
|
||||
@import "components/content";
|
||||
@import "components/gravatar";
|
||||
@import "components/list";
|
||||
@@ -20,6 +21,7 @@
|
||||
@import "components/login";
|
||||
@import "components/admin";
|
||||
@import "components/coderay";
|
||||
@import "components/rouge";
|
||||
@import "components/gantt";
|
||||
@import "components/calendar";
|
||||
@import "components/progress";
|
||||
@@ -27,8 +29,12 @@
|
||||
@import "components/elements";
|
||||
@import "components/jquery-ui";
|
||||
@import "components/icons";
|
||||
@import "components/dropdown";
|
||||
@import "components/top";
|
||||
@import "components/jstoolbar";
|
||||
@import "components/flash";
|
||||
@import "components/image-base64";
|
||||
@import "components/responsive";
|
||||
@import "components/print";
|
||||
|
||||
|
||||
@@ -36,3 +42,9 @@
|
||||
//
|
||||
|
||||
@import "components/plugins";
|
||||
|
||||
|
||||
//== Built-in JavaScript plugins
|
||||
//
|
||||
|
||||
@import "javascripts/sidebar-toggler";
|
||||
119
src/sass/components/_admin.scss
Normal file
@@ -0,0 +1,119 @@
|
||||
//
|
||||
// Admin
|
||||
// --------------------------------------------------
|
||||
|
||||
#admin-menu {
|
||||
ul:nth-child(n) {
|
||||
li {
|
||||
list-style-type: none;
|
||||
|
||||
> a:not(.icon-only) {
|
||||
padding-left: $sidebar-padding-horizontal + 5px + 20px;
|
||||
background-repeat: no-repeat;
|
||||
background-position: $sidebar-padding-horizontal center;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#admin-index > & {
|
||||
ul {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
li {
|
||||
padding: ($sidebar-padding-vertical + 1px) ($sidebar-padding-horizontal + 3px);
|
||||
}
|
||||
|
||||
a {
|
||||
display: inline-block;
|
||||
padding-left: 5px + 20px;
|
||||
background-position: 0 center;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//== Groups
|
||||
//
|
||||
|
||||
table.members,
|
||||
table.memberships {
|
||||
td.roles {
|
||||
width: 45%;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//== Permissions
|
||||
//
|
||||
|
||||
table.permissions {
|
||||
td.role {
|
||||
color: $gray;
|
||||
font-weight: normal;
|
||||
text-align: center;
|
||||
vertical-align: bottom;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//== Workflows
|
||||
//
|
||||
|
||||
table.transitions {
|
||||
td.enabled {
|
||||
background: $state-success;
|
||||
}
|
||||
}
|
||||
|
||||
#workflow_copy_form select {
|
||||
width: 200px;
|
||||
}
|
||||
|
||||
#workflow_form table select {
|
||||
width: 90%;
|
||||
min-width: 60px;
|
||||
}
|
||||
|
||||
table.fields_permissions {
|
||||
td.readonly {
|
||||
background: $gray-light;
|
||||
}
|
||||
|
||||
td.required {
|
||||
background: $state-danger;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//== Settings labels
|
||||
//
|
||||
|
||||
fieldset.settings label {
|
||||
display: block;
|
||||
}
|
||||
|
||||
|
||||
//== Settings -> Notifications
|
||||
//
|
||||
|
||||
fieldset#notified_events {
|
||||
.parent {
|
||||
padding-left: 20px;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//== Settings -> Repositories
|
||||
//
|
||||
|
||||
.settings.enabled_scm {
|
||||
table {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
td.scm_name {
|
||||
font-weight: $font-weight-bold;
|
||||
}
|
||||
}
|
||||
172
src/sass/components/_base.scss
Normal file
@@ -0,0 +1,172 @@
|
||||
//
|
||||
// Base styles
|
||||
// --------------------------------------------------
|
||||
|
||||
html {
|
||||
overflow-y: scroll;
|
||||
tab-size: 4;
|
||||
}
|
||||
|
||||
body {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
background-color: $body-bg;
|
||||
color: $text-color;
|
||||
font-family: $font-family-base;
|
||||
font-size: $font-size-base;
|
||||
font-weight: $font-weight-normal;
|
||||
line-height: $line-height-base;
|
||||
}
|
||||
|
||||
a {
|
||||
color: $link-color;
|
||||
text-decoration: none;
|
||||
|
||||
&:hover,
|
||||
&:focus {
|
||||
color: $link-hover-color;
|
||||
text-decoration: $link-hover-decoration;
|
||||
}
|
||||
|
||||
&.issue.closed {
|
||||
color: $link-color-issue-closed;
|
||||
text-decoration: $link-closed-decoration;
|
||||
}
|
||||
|
||||
&.project.closed {
|
||||
color: $link-color-project-closed;
|
||||
}
|
||||
|
||||
&.user.locked {
|
||||
color: $link-color-user-locked;
|
||||
}
|
||||
}
|
||||
|
||||
// Remove the tapping delay on clickable elements
|
||||
a,
|
||||
area,
|
||||
button,
|
||||
input,
|
||||
label,
|
||||
select,
|
||||
summary,
|
||||
textarea,
|
||||
[tabindex] {
|
||||
touch-action: manipulation;
|
||||
}
|
||||
|
||||
h1 {
|
||||
margin: 0;
|
||||
font-size: 2em; // ~28px
|
||||
line-height: 30px;
|
||||
}
|
||||
|
||||
h2 {
|
||||
margin-top: 0;
|
||||
margin-bottom: $line-height-computed;
|
||||
font-size: 1.43em; // ~20px
|
||||
font-weight: 500;
|
||||
line-height: $line-height-computed;
|
||||
|
||||
img {
|
||||
vertical-align: middle;
|
||||
}
|
||||
}
|
||||
|
||||
h3 {
|
||||
margin-top: 0;
|
||||
margin-bottom: $line-height-computed;
|
||||
font-size: 1.14em; // ~16px
|
||||
font-weight: 500;
|
||||
line-height: $line-height-computed;
|
||||
}
|
||||
|
||||
h4 {
|
||||
margin-top: 0;
|
||||
font-size: 1em;
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
p {
|
||||
margin: 0 0 ($line-height-computed / 2);
|
||||
}
|
||||
|
||||
small {
|
||||
font-size: $font-size-small;
|
||||
}
|
||||
|
||||
table {
|
||||
th,
|
||||
td {
|
||||
padding: $table-condensed-cell-padding $table-cell-padding;
|
||||
}
|
||||
}
|
||||
|
||||
ul,
|
||||
ol {
|
||||
margin-top: 0;
|
||||
margin-bottom: ($line-height-computed / 2);
|
||||
|
||||
ul,
|
||||
ol {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
}
|
||||
|
||||
dl {
|
||||
margin-top: 0;
|
||||
margin-bottom: $line-height-computed;
|
||||
}
|
||||
|
||||
dt {
|
||||
margin-top: $line-height-computed;
|
||||
font-weight: $font-weight-bold;
|
||||
}
|
||||
|
||||
dd {
|
||||
margin-bottom: $line-height-computed;
|
||||
margin-left: $line-height-computed;
|
||||
}
|
||||
|
||||
code,
|
||||
kbd,
|
||||
pre,
|
||||
samp {
|
||||
font-family: $font-family-monospace;
|
||||
font-size: 1em;
|
||||
}
|
||||
|
||||
hr {
|
||||
margin-top: $line-height-computed;
|
||||
margin-bottom: $line-height-computed;
|
||||
border: 0;
|
||||
border-top: 1px solid $hr-border;
|
||||
|
||||
li & {
|
||||
margin-top: $line-height-computed / 2;
|
||||
margin-bottom: $line-height-computed / 2;
|
||||
}
|
||||
}
|
||||
|
||||
abbr[title] {
|
||||
border-bottom: 1px dotted $abbr-border-color;
|
||||
cursor: help;
|
||||
}
|
||||
|
||||
blockquote {
|
||||
margin: 0 0 $line-height-computed;
|
||||
padding: floor($line-height-computed / 4) $padding-large-horizontal;
|
||||
border-left: 4px solid $blockquote-border-color;
|
||||
|
||||
>:first-child {
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
>:last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.clear {
|
||||
@extend %clearfix;
|
||||
}
|
||||
224
src/sass/components/_buttons.scss
Normal file
@@ -0,0 +1,224 @@
|
||||
//
|
||||
// Buttons
|
||||
// --------------------------------------------------
|
||||
|
||||
input[type="button"],
|
||||
input[type="submit"],
|
||||
input[type="reset"],
|
||||
button {
|
||||
@include button-size($btn-padding-vertical, $btn-padding-horizontal, $font-size-base, $line-height-base, $border-radius-base);
|
||||
display: inline-block;
|
||||
margin-bottom: 0;
|
||||
transition: background-color ease-in-out .07s,
|
||||
border-color ease-in-out .07s,
|
||||
box-shadow ease-in-out .07s;
|
||||
border: 1px solid;
|
||||
font-weight: $btn-font-weight;
|
||||
text-align: center;
|
||||
white-space: nowrap;
|
||||
cursor: pointer;
|
||||
user-select: none;
|
||||
@include button-variant($btn-primary-color, $btn-primary-bg, $btn-primary-border); // scss-lint:disable DeclarationOrder
|
||||
|
||||
&:hover,
|
||||
&:focus {
|
||||
outline: 0;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
&:active {
|
||||
outline: 0;
|
||||
}
|
||||
|
||||
&.disabled,
|
||||
&[disabled],
|
||||
fieldset[disabled] & {
|
||||
opacity: .65;
|
||||
box-shadow: none;
|
||||
pointer-events: none; // Future-proof disabling of clicks
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//== Form buttons layout
|
||||
//
|
||||
|
||||
form {
|
||||
input[type="submit"] {
|
||||
margin-right: 5px;
|
||||
|
||||
+ input {
|
||||
@include button-variant($btn-success-color, $btn-success-bg, $btn-success-border);
|
||||
}
|
||||
|
||||
+ a {
|
||||
margin-right: 5px;
|
||||
|
||||
+ a {
|
||||
margin-left: 5px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//== Repository's 'View differences' button
|
||||
//
|
||||
|
||||
form[action*="repository/diff"] {
|
||||
margin-bottom: $line-height-computed / 2;
|
||||
}
|
||||
|
||||
|
||||
//== Forum and news message form buttons layout
|
||||
//
|
||||
|
||||
#message-form,
|
||||
#news-form {
|
||||
#message_sticky,
|
||||
#message_locked {
|
||||
position: relative;
|
||||
top: 1px;
|
||||
margin-left: 5px;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//== Button links
|
||||
//
|
||||
p.buttons,
|
||||
.other-formats > span,
|
||||
#wiki_add_attachment > p {
|
||||
> a {
|
||||
display: inline-block;
|
||||
padding: $btn-padding-vertical $btn-padding-horizontal-small;
|
||||
border: 1px solid $pagination-border;
|
||||
border-radius: $border-radius-base;
|
||||
background-color: $pagination-bg;
|
||||
|
||||
&:hover,
|
||||
&:focus {
|
||||
border-color: $pagination-hover-border;
|
||||
outline: 0;
|
||||
background-color: $pagination-hover-bg;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
&:active {
|
||||
outline: 0;
|
||||
box-shadow: inset 0 3px 4px -2px rgba(#000, .1);
|
||||
}
|
||||
|
||||
&.icon {
|
||||
padding-left: 20px + $btn-padding-horizontal-small;
|
||||
background-position: $btn-padding-horizontal-small 50%;
|
||||
}
|
||||
|
||||
@if $use-font-awesome == false {
|
||||
&.atom {
|
||||
padding-left: 20px + $btn-padding-horizontal-small;
|
||||
background-position: $btn-padding-horizontal-small 50%;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//== Action buttons group
|
||||
//
|
||||
|
||||
p.buttons {
|
||||
margin-bottom: $line-height-computed;
|
||||
}
|
||||
|
||||
|
||||
//== Export actions
|
||||
//
|
||||
|
||||
.other-formats {
|
||||
margin: $line-height-computed 0 0;
|
||||
text-align: right;
|
||||
|
||||
.pagination + &,
|
||||
#wiki_add_attachment + & {
|
||||
margin-top: 0;
|
||||
float: right;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//== Query builder buttons
|
||||
//
|
||||
|
||||
.query-columns {
|
||||
select {
|
||||
width: auto !important; // scss-lint:disable ImportantRule
|
||||
min-width: 130px;
|
||||
}
|
||||
|
||||
@at-root span#{&} {
|
||||
> span {
|
||||
display: inline-block;
|
||||
height: 100%;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
label {
|
||||
display: block;
|
||||
margin-bottom: $line-height-computed / 2;
|
||||
}
|
||||
}
|
||||
|
||||
.buttons {
|
||||
vertical-align: middle;
|
||||
|
||||
br {
|
||||
display: none;
|
||||
}
|
||||
|
||||
input[type="button"] {
|
||||
display: block;
|
||||
width: 32px;
|
||||
margin-bottom: 4px;
|
||||
padding-right: 1px;
|
||||
padding-left: 1px;
|
||||
@include button-variant($btn-default-color, $btn-default-bg, $btn-default-border); // scss-lint:disable DeclarationOrder
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//== Button for toggling multiselect (in filters)
|
||||
//
|
||||
|
||||
a[data-expands],
|
||||
.toggle-multiselect {
|
||||
@extend %image-toggle-plus;
|
||||
position: relative;
|
||||
top: 3px;
|
||||
padding: 2px 8px;
|
||||
border: 1px solid;
|
||||
border-radius: $border-radius-base;
|
||||
background-repeat: no-repeat;
|
||||
background-position: 2px 2px;
|
||||
vertical-align: top;
|
||||
cursor: pointer;
|
||||
user-select: none;
|
||||
@include button-variant($btn-default-color, $btn-default-bg, $btn-default-border); // scss-lint:disable DeclarationOrder
|
||||
}
|
||||
|
||||
a[data-expands] {
|
||||
display: inline-block;
|
||||
margin-right: 10px;
|
||||
padding: 10px;
|
||||
|
||||
> .toggle-multiselect {
|
||||
padding: 0;
|
||||
border: 0 none;
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
img {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
84
src/sass/components/_calendar.scss
Normal file
@@ -0,0 +1,84 @@
|
||||
//
|
||||
// Calendar
|
||||
// --------------------------------------------------
|
||||
|
||||
|
||||
table.cal {
|
||||
width: 100%;
|
||||
margin-bottom: $line-height-computed;
|
||||
border: 1px solid $table-border-color;
|
||||
|
||||
thead th {
|
||||
width: 14%;
|
||||
padding: $table-condensed-cell-padding;
|
||||
background-color: $table-bg-hover;
|
||||
|
||||
&.week-number {
|
||||
width: auto;
|
||||
}
|
||||
}
|
||||
|
||||
tbody tr {
|
||||
height: 100px;
|
||||
}
|
||||
|
||||
td {
|
||||
padding: $table-condensed-cell-padding;
|
||||
border: 1px solid $table-border-color;
|
||||
font-size: $font-size-small;
|
||||
vertical-align: top;
|
||||
|
||||
&.week-number {
|
||||
border: 0 none;
|
||||
background-color: $table-bg-hover;
|
||||
font-size: 1em;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
p.day-num {
|
||||
float: right;
|
||||
font-size: $font-size-large;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
&.odd p.day-num {
|
||||
color: $gray-light;
|
||||
}
|
||||
|
||||
&.today {
|
||||
background: $highlight-bg;
|
||||
|
||||
p.day-num {
|
||||
font-weight: $font-weight-bold;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
table.cal .starting a,
|
||||
p.cal.legend .starting,
|
||||
table.cal .ending a,
|
||||
p.cal.legend .ending {
|
||||
padding-left: 20px;
|
||||
background-image: url("../../../images/bullet_go.png");
|
||||
background-repeat: no-repeat;
|
||||
background-position: 0 center;
|
||||
}
|
||||
|
||||
table.cal .ending a,
|
||||
p.cal.legend .ending {
|
||||
padding-left: 20px;
|
||||
background-image: url("../../../images/bullet_end.png");
|
||||
}
|
||||
|
||||
table.cal .starting.ending a,
|
||||
p.cal.legend .starting.ending {
|
||||
padding-left: 20px;
|
||||
background-image: url("../../../images/bullet_diamond.png");
|
||||
}
|
||||
|
||||
p.cal.legend {
|
||||
span {
|
||||
display: block;
|
||||
}
|
||||
}
|
||||
362
src/sass/components/_coderay.scss
Normal file
@@ -0,0 +1,362 @@
|
||||
//
|
||||
// Syntax highlight - CodeRay
|
||||
// --------------------------------------------------
|
||||
|
||||
.syntaxhl {
|
||||
div {
|
||||
display: inline;
|
||||
}
|
||||
|
||||
.line-numbers {
|
||||
margin: 0 5px 0 0;
|
||||
padding: 2px 4px;
|
||||
background-color: #eee;
|
||||
}
|
||||
|
||||
.code pre {
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
.debug {
|
||||
// scss-lint:disable ImportantRule
|
||||
background: #00f !important;
|
||||
color: #fff !important;
|
||||
}
|
||||
|
||||
.annotation {
|
||||
color: #007;
|
||||
}
|
||||
|
||||
.attribute-name {
|
||||
color: #b48;
|
||||
}
|
||||
|
||||
.attribute-value {
|
||||
color: #700;
|
||||
}
|
||||
|
||||
.binary {
|
||||
color: #509;
|
||||
}
|
||||
|
||||
.char {
|
||||
color: #d20;
|
||||
|
||||
.content {
|
||||
color: #d20;
|
||||
}
|
||||
|
||||
.delimiter {
|
||||
color: #710;
|
||||
}
|
||||
}
|
||||
|
||||
.class {
|
||||
color: #795da3;
|
||||
font-weight: $font-weight-bold;
|
||||
}
|
||||
|
||||
.class-variable {
|
||||
color: #369;
|
||||
}
|
||||
|
||||
.color {
|
||||
color: #0a0;
|
||||
}
|
||||
|
||||
.comment {
|
||||
color: #969896;
|
||||
|
||||
.char,
|
||||
.delimiter {
|
||||
color: #969896;
|
||||
}
|
||||
}
|
||||
|
||||
.complex {
|
||||
color: #a08;
|
||||
}
|
||||
|
||||
.constant {
|
||||
color: #795da3;
|
||||
}
|
||||
|
||||
.decorator {
|
||||
color: #b0b;
|
||||
}
|
||||
|
||||
.definition {
|
||||
color: #099;
|
||||
font-weight: $font-weight-bold;
|
||||
}
|
||||
|
||||
.delimiter {
|
||||
color: #000;
|
||||
}
|
||||
|
||||
.directive {
|
||||
color: #088;
|
||||
font-weight: $font-weight-bold;
|
||||
}
|
||||
|
||||
.doc {
|
||||
color: #970;
|
||||
}
|
||||
|
||||
.doc-string {
|
||||
color: #d42;
|
||||
font-weight: $font-weight-bold;
|
||||
}
|
||||
|
||||
.doctype {
|
||||
color: #34b;
|
||||
}
|
||||
|
||||
.entity {
|
||||
color: #800;
|
||||
font-weight: $font-weight-bold;
|
||||
}
|
||||
|
||||
.error {
|
||||
background-color: #faa;
|
||||
color: #f00;
|
||||
}
|
||||
|
||||
.escape {
|
||||
color: #666;
|
||||
}
|
||||
|
||||
.exception {
|
||||
color: #c00;
|
||||
font-weight: $font-weight-bold;
|
||||
}
|
||||
|
||||
.float {
|
||||
color: #06d;
|
||||
}
|
||||
|
||||
.function {
|
||||
color: #06b;
|
||||
font-weight: $font-weight-bold;
|
||||
}
|
||||
|
||||
.global-variable {
|
||||
color: #d70;
|
||||
}
|
||||
|
||||
.hex {
|
||||
color: #02b;
|
||||
}
|
||||
|
||||
.imaginary {
|
||||
color: #f00;
|
||||
}
|
||||
|
||||
.include {
|
||||
color: #b44;
|
||||
font-weight: $font-weight-bold;
|
||||
}
|
||||
|
||||
.inline {
|
||||
background-color: rgba(#000, .05);
|
||||
color: #000;
|
||||
}
|
||||
|
||||
.inline-delimiter {
|
||||
color: #666;
|
||||
font-weight: $font-weight-bold;
|
||||
}
|
||||
|
||||
.instance-variable {
|
||||
color: #33b;
|
||||
}
|
||||
|
||||
.integer {
|
||||
color: #0086b3;
|
||||
}
|
||||
|
||||
.key {
|
||||
color: #606;
|
||||
|
||||
.char {
|
||||
color: #60f;
|
||||
}
|
||||
|
||||
.delimiter {
|
||||
color: #404;
|
||||
}
|
||||
}
|
||||
|
||||
.keyword {
|
||||
color: #b3113e;
|
||||
font-weight: $font-weight-bold;
|
||||
}
|
||||
|
||||
.label {
|
||||
color: #970;
|
||||
font-weight: $font-weight-bold;
|
||||
}
|
||||
|
||||
.local-variable {
|
||||
color: #369;
|
||||
}
|
||||
|
||||
.namespace {
|
||||
color: #707;
|
||||
font-weight: $font-weight-bold;
|
||||
}
|
||||
|
||||
.octal {
|
||||
color: #40e;
|
||||
}
|
||||
|
||||
.predefined {
|
||||
color: #b21;
|
||||
}
|
||||
|
||||
.predefined-constant {
|
||||
color: #009595;
|
||||
}
|
||||
|
||||
.predefined-type {
|
||||
color: #0a5;
|
||||
font-weight: $font-weight-bold;
|
||||
}
|
||||
|
||||
.preprocessor {
|
||||
color: #579;
|
||||
}
|
||||
|
||||
.pseudo-class {
|
||||
color: #00c;
|
||||
font-weight: $font-weight-bold;
|
||||
}
|
||||
|
||||
.regexp {
|
||||
background-color: hsla(300, 100%, 50%, .06);
|
||||
|
||||
.content {
|
||||
color: #808;
|
||||
}
|
||||
|
||||
.delimiter {
|
||||
color: #404;
|
||||
}
|
||||
|
||||
.modifier {
|
||||
color: #c2c;
|
||||
}
|
||||
}
|
||||
|
||||
.reserved {
|
||||
color: #080;
|
||||
font-weight: $font-weight-bold;
|
||||
}
|
||||
|
||||
.shell {
|
||||
background-color: hsla(120, 100%, 50%, .06);
|
||||
|
||||
.content {
|
||||
color: #2b2;
|
||||
}
|
||||
|
||||
.delimiter {
|
||||
color: #161;
|
||||
}
|
||||
}
|
||||
|
||||
.string {
|
||||
.char,
|
||||
.content,
|
||||
.delimiter,
|
||||
.modifier {
|
||||
color: #df5000;
|
||||
}
|
||||
}
|
||||
|
||||
.symbol {
|
||||
color: #d33;
|
||||
|
||||
.content,
|
||||
.delimiter {
|
||||
color: #d33;
|
||||
}
|
||||
}
|
||||
|
||||
.tag {
|
||||
color: #070;
|
||||
}
|
||||
|
||||
.type {
|
||||
color: #339;
|
||||
font-weight: $font-weight-bold;
|
||||
}
|
||||
|
||||
.value {
|
||||
color: #088;
|
||||
}
|
||||
|
||||
.variable {
|
||||
color: #037;
|
||||
}
|
||||
|
||||
.insert {
|
||||
background: hsla(120, 100%, 50%, .12);
|
||||
|
||||
.insert {
|
||||
background: transparent;
|
||||
color: #0c0;
|
||||
font-weight: $font-weight-bold;
|
||||
}
|
||||
|
||||
.eyecatcher {
|
||||
margin: -1px;
|
||||
border: 1px solid hsla(120, 100%, 25%, .5);
|
||||
border-top: 0 none;
|
||||
border-bottom-left-radius: 5px;
|
||||
border-bottom-right-radius: 5px;
|
||||
background-color: hsla(120, 100%, 50%, .2);
|
||||
}
|
||||
}
|
||||
|
||||
.delete {
|
||||
background: hsla(0, 100%, 50%, .12);
|
||||
|
||||
.delete {
|
||||
background: transparent;
|
||||
color: #c00;
|
||||
font-weight: $font-weight-bold;
|
||||
}
|
||||
|
||||
.eyecatcher {
|
||||
margin: -1px;
|
||||
border: 1px solid hsla(0, 100%, 45%, .5);
|
||||
border-bottom: 0 none;
|
||||
border-top-left-radius: 5px;
|
||||
border-top-right-radius: 5px;
|
||||
background-color: hsla(0, 100%, 50%, .2);
|
||||
}
|
||||
}
|
||||
|
||||
.change {
|
||||
background: #007;
|
||||
color: #bbf;
|
||||
|
||||
.change {
|
||||
color: #88f;
|
||||
}
|
||||
}
|
||||
|
||||
.head {
|
||||
background: #505;
|
||||
color: #f8f;
|
||||
|
||||
.head {
|
||||
color: #f4f;
|
||||
}
|
||||
|
||||
.filename {
|
||||
color: #fff;
|
||||
}
|
||||
}
|
||||
}
|
||||
189
src/sass/components/_content.scss
Normal file
@@ -0,0 +1,189 @@
|
||||
#main {
|
||||
@if $flexbox-layout {
|
||||
display: flex;
|
||||
} @else {
|
||||
@extend %clearfix;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// Main container
|
||||
// --------------------------------------------------
|
||||
|
||||
#content {
|
||||
padding: $padding-side;
|
||||
|
||||
@if $flexbox-layout {
|
||||
$side-space: $sidebar-width + $padding-side * 2;
|
||||
flex: 1 1 auto;
|
||||
width: calc(100% - #{$side-space});
|
||||
} @else {
|
||||
overflow: hidden;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// Sidebar
|
||||
// --------------------------------------------------
|
||||
|
||||
#sidebar {
|
||||
#main & {
|
||||
padding: $padding-side $sidebar-padding-horizontal;
|
||||
}
|
||||
|
||||
#main.nosidebar & {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
border: 0 none;
|
||||
|
||||
@if $flexbox-layout {
|
||||
flex: 0 0 auto;
|
||||
} @else {
|
||||
width: 0;
|
||||
float: none;
|
||||
}
|
||||
}
|
||||
|
||||
@if $flexbox-layout {
|
||||
flex: 0 0 $sidebar-width-computed;
|
||||
|
||||
@if $sidebar-position == "left" {
|
||||
order: -1;
|
||||
} @else {
|
||||
order: 1;
|
||||
}
|
||||
} @else {
|
||||
width: $sidebar-width-computed;
|
||||
float: $sidebar-position;
|
||||
}
|
||||
|
||||
@media screen and (min-width: 1px) {
|
||||
@if not $flexbox-layout {
|
||||
padding-bottom: $padding-side * 3;
|
||||
}
|
||||
|
||||
@if $sidebar-position == "left" {
|
||||
border-right: 1px solid $sidebar-link-active-border;
|
||||
box-shadow: inset -9px 0 6px -6px rgba(0, 0, 0, .05);
|
||||
} @else {
|
||||
border-left: 1px solid $sidebar-link-active-border;
|
||||
box-shadow: inset 9px 0 6px -6px rgba(0, 0, 0, .05);
|
||||
}
|
||||
}
|
||||
|
||||
h3 {
|
||||
margin-top: $line-height-computed * 1.5;
|
||||
}
|
||||
|
||||
> h3:first-child,
|
||||
> form:first-child > h3 {
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
ul {
|
||||
&:nth-child(n) {
|
||||
margin: 0 0 ($line-height-computed / 2);
|
||||
padding: 0;
|
||||
|
||||
@if $sidebar-position == "left" {
|
||||
margin-right: -($sidebar-padding-horizontal);
|
||||
}
|
||||
}
|
||||
|
||||
&:not(.watchers) {
|
||||
li {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
list-style-type: none;
|
||||
|
||||
> a:not(.icon-only) {
|
||||
display: block;
|
||||
padding: $sidebar-padding-vertical $sidebar-padding-horizontal;
|
||||
border: 1px solid transparent;
|
||||
|
||||
@if $sidebar-position == "left" {
|
||||
border-left-width: 3px;
|
||||
border-radius: $border-radius-large 0 0 $border-radius-large;
|
||||
} @else {
|
||||
border-right-width: 3px;
|
||||
border-radius: 0 $border-radius-large $border-radius-large 0;
|
||||
}
|
||||
|
||||
&:hover {
|
||||
background-color: $sidebar-link-hover-bg;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
&.selected {
|
||||
border-color: $sidebar-link-active-border;
|
||||
background-color: $sidebar-link-active-bg;
|
||||
color: $sidebar-link-active-text;
|
||||
|
||||
@if $sidebar-position == "left" {
|
||||
margin-right: -1px;
|
||||
border-right-color: $body-bg;
|
||||
border-left-color: $sidebar-link-active-side;
|
||||
box-shadow: -3px 1px 2px rgba(0, 0, 0, .1);
|
||||
} @else {
|
||||
margin-left: -1px;
|
||||
border-right-color: $sidebar-link-active-side;
|
||||
border-left-color: $body-bg;
|
||||
box-shadow: 3px 1px 2px rgba(0, 0, 0, .1);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Special treatment for anchor tags directly under sidebar tag
|
||||
> a {
|
||||
margin: $sidebar-padding-vertical $sidebar-padding-horizontal;
|
||||
|
||||
@if $sidebar-position == "left" {
|
||||
margin-left: $sidebar-padding-horizontal + 3px;
|
||||
} @else {
|
||||
margin-right: $sidebar-padding-horizontal + 3px;
|
||||
margin-left: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#footer {
|
||||
margin: 0 $padding-side $line-height-computed;
|
||||
padding-top: $line-height-computed;
|
||||
border-top: 1px solid $gray-lighter;
|
||||
color: $gray-light;
|
||||
font-size: $font-size-small;
|
||||
}
|
||||
|
||||
@if $fixed-layout {
|
||||
@media screen and (min-width: $screen-sm-min) {
|
||||
#main-menu ul,
|
||||
#main {
|
||||
width: $width-sm;
|
||||
margin-right: auto;
|
||||
margin-left: auto;
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (min-width: $screen-md-min) {
|
||||
#main-menu ul,
|
||||
#main {
|
||||
width: $width-md;
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (min-width: $screen-lg-min) {
|
||||
#main-menu ul,
|
||||
#main {
|
||||
width: $width-lg;
|
||||
}
|
||||
}
|
||||
|
||||
#main-menu ul > li > a {
|
||||
padding: $main-menu-padding-vertical 1px;
|
||||
}
|
||||
}
|
||||
112
src/sass/components/_dropdown.scss
Normal file
@@ -0,0 +1,112 @@
|
||||
.drdn {
|
||||
position: relative;
|
||||
|
||||
&.expanded {
|
||||
> .drdn-content {
|
||||
display: block;
|
||||
}
|
||||
}
|
||||
|
||||
&-trigger {
|
||||
display: inline-block;
|
||||
position: relative;
|
||||
box-sizing: border-box;
|
||||
cursor: pointer;
|
||||
user-select: none;
|
||||
}
|
||||
|
||||
&-content {
|
||||
@include nice-shadow(2);
|
||||
display: none;
|
||||
position: absolute;
|
||||
z-index: 1002;
|
||||
top: $input-height-base + $btn-padding-vertical;
|
||||
right: 0;
|
||||
min-width: 150px;
|
||||
overflow: hidden;
|
||||
border-radius: $border-radius-base;
|
||||
background: $body-bg;
|
||||
}
|
||||
|
||||
&-items {
|
||||
max-height: 400px;
|
||||
overflow: auto;
|
||||
color: $gray-light;
|
||||
|
||||
&:empty {
|
||||
border: 0;
|
||||
}
|
||||
|
||||
&.selection {
|
||||
> a,
|
||||
> span {
|
||||
&::before {
|
||||
content: " ";
|
||||
display: inline-block;
|
||||
width: 1em;
|
||||
font-weight: $font-weight-bold;
|
||||
}
|
||||
|
||||
@if $use-font-awesome {
|
||||
@extend %fa-icon;
|
||||
}
|
||||
}
|
||||
|
||||
> .selected::before {
|
||||
@if $use-font-awesome {
|
||||
content: $fa-var-check;
|
||||
} @else {
|
||||
content: "\2713 ";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
> a,
|
||||
> span {
|
||||
display: block;
|
||||
margin: 0;
|
||||
padding: $btn-padding-vertical $btn-padding-horizontal-small;
|
||||
|
||||
&.icon {
|
||||
padding-left: 20px + $btn-padding-horizontal-small;
|
||||
|
||||
&::before {
|
||||
width: 20px;
|
||||
margin-top: 3px;
|
||||
float: left;
|
||||
text-align: center;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.contextual {
|
||||
.drdn {
|
||||
&-trigger {
|
||||
> .icon-only::before {
|
||||
margin: 0 1px;
|
||||
}
|
||||
}
|
||||
|
||||
&-items {
|
||||
padding: 3px;
|
||||
|
||||
a,
|
||||
span {
|
||||
padding-top: $pagination-padding-vertical;
|
||||
padding-bottom: $pagination-padding-vertical;
|
||||
border: 1px solid transparent;
|
||||
border-radius: $border-radius-small;
|
||||
color: $pagination-color;
|
||||
|
||||
&:hover {
|
||||
border-color: $pagination-hover-border;
|
||||
background-color: $pagination-hover-bg;
|
||||
color: $pagination-hover-color;
|
||||
text-decoration: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
1072
src/sass/components/_elements.scss
Normal file
99
src/sass/components/_flash.scss
Normal file
@@ -0,0 +1,99 @@
|
||||
//
|
||||
// Flash & error messages
|
||||
// --------------------------------------------------
|
||||
|
||||
|
||||
#errorExplanation,
|
||||
.flash,
|
||||
.nodata,
|
||||
.warning,
|
||||
.conflict {
|
||||
margin-bottom: $line-height-computed;
|
||||
padding: $padding-large-vertical $padding-large-horizontal;
|
||||
padding-left: $padding-large-horizontal + 8px + 16px;
|
||||
border: 1px solid;
|
||||
border-radius: $border-radius-large;
|
||||
background-repeat: no-repeat;
|
||||
background-position: $padding-large-horizontal 50%;
|
||||
|
||||
@if $use-font-awesome {
|
||||
@extend %fa-icon;
|
||||
|
||||
&::before {
|
||||
margin-left: -(8px + 16px);
|
||||
float: left;
|
||||
line-height: $line-height-computed;
|
||||
}
|
||||
}
|
||||
|
||||
>:last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
}
|
||||
|
||||
@mixin flash($color, $background, $border, $link, $icon) {
|
||||
color: $color;
|
||||
background-color: $background;
|
||||
border-color: $border;
|
||||
|
||||
@if $use-font-awesome {
|
||||
@if $icon == "true" {
|
||||
$icon: $fa-var-check;
|
||||
} @elseif $icon == "warning" {
|
||||
$icon: $fa-var-warning;
|
||||
} @elseif $icon == "exclamation" {
|
||||
$icon: $fa-var-exclamation-circle;
|
||||
}
|
||||
|
||||
&::before {
|
||||
content: $icon;
|
||||
}
|
||||
} @else {
|
||||
background-image: url(../../../images/#{$icon}.png);
|
||||
}
|
||||
|
||||
a {
|
||||
color: $link;
|
||||
font-weight: $font-weight-bold;
|
||||
}
|
||||
}
|
||||
|
||||
.warning,
|
||||
.conflict,
|
||||
.nodata {
|
||||
@include flash($flash-warning-text, $flash-warning-bg, $flash-warning-border, $flash-warning-link, "warning");
|
||||
}
|
||||
|
||||
.flash.notice {
|
||||
@include flash($flash-success-text, $flash-success-bg, $flash-success-border, $flash-success-link, "true");
|
||||
}
|
||||
|
||||
#errorExplanation,
|
||||
.flash.error {
|
||||
@include flash($flash-error-text, $flash-error-bg, $flash-error-border, $flash-error-link, "exclamation");
|
||||
}
|
||||
|
||||
.nodata {
|
||||
padding-left: $padding-large-horizontal;
|
||||
text-align: center;
|
||||
|
||||
&.nodata-left {
|
||||
&::before {
|
||||
float: left;
|
||||
}
|
||||
}
|
||||
|
||||
@if $use-font-awesome {
|
||||
&::before {
|
||||
margin-left: 0;
|
||||
float: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#errorExplanation {
|
||||
h2,
|
||||
p {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
652
src/sass/components/_forms.scss
Normal file
@@ -0,0 +1,652 @@
|
||||
//
|
||||
// Forms
|
||||
// --------------------------------------------------
|
||||
|
||||
form {
|
||||
td {
|
||||
padding: $table-condensed-cell-padding;
|
||||
}
|
||||
|
||||
.contextual > & {
|
||||
display: inline-block;
|
||||
}
|
||||
}
|
||||
|
||||
button,
|
||||
input,
|
||||
select,
|
||||
textarea {
|
||||
box-sizing: border-box;
|
||||
font-family: inherit;
|
||||
font-size: $font-size-base;
|
||||
line-height: $line-height-base;
|
||||
}
|
||||
|
||||
%form-field {
|
||||
height: $input-height-base;
|
||||
padding: $input-padding-vertical $input-padding-horizontal;
|
||||
border: 1px solid $input-border;
|
||||
border-radius: $input-border-radius;
|
||||
background-color: $input-bg;
|
||||
box-shadow: inset 0 1px 2px rgba(0, 0, 0, .075);
|
||||
color: $input-color;
|
||||
}
|
||||
|
||||
select,
|
||||
textarea,
|
||||
input[type="datetime"],
|
||||
input[type="datetime-local"],
|
||||
input[type="date"],
|
||||
input[type="month"],
|
||||
input[type="time"],
|
||||
input[type="week"],
|
||||
input[type="number"],
|
||||
input[type="url"],
|
||||
input[type="tel"],
|
||||
input[type="color"],
|
||||
input[type="search"],
|
||||
input[type="email"],
|
||||
input[type="text"],
|
||||
input[type="password"] {
|
||||
@extend %form-field;
|
||||
@include form-control-focus;
|
||||
@include placeholder;
|
||||
transition: border-color ease-in-out .1s, box-shadow ease-in-out .1s;
|
||||
|
||||
&[disabled],
|
||||
&[readonly],
|
||||
fieldset[disabled] & {
|
||||
border-color: $input-border;
|
||||
opacity: 1;
|
||||
background-color: $input-bg-disabled;
|
||||
box-shadow: inset 0 1px 2px rgba(0, 0, 0, .075);
|
||||
}
|
||||
}
|
||||
|
||||
textarea {
|
||||
height: auto;
|
||||
resize: vertical;
|
||||
|
||||
&.text_cf {
|
||||
width: 100%;
|
||||
resize: vertical;
|
||||
}
|
||||
}
|
||||
|
||||
input[type="search"] {
|
||||
-webkit-appearance: none;
|
||||
}
|
||||
|
||||
input[type="radio"],
|
||||
input[type="checkbox"] {
|
||||
margin: 4px 5px 0 0;
|
||||
margin-top: 1px \9; // IE8-9
|
||||
line-height: normal;
|
||||
}
|
||||
|
||||
input[type="file"] {
|
||||
display: block;
|
||||
}
|
||||
|
||||
input[type="range"] {
|
||||
display: block;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
input {
|
||||
&.autocomplete {
|
||||
@extend %image-aci;
|
||||
padding-right: 30px;
|
||||
background-repeat: no-repeat;
|
||||
background-position: right center;
|
||||
|
||||
&.ajax-loading {
|
||||
background-image: url("../images/preloader.gif");
|
||||
}
|
||||
}
|
||||
|
||||
&.string_cf,
|
||||
&.link_cf {
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
select {
|
||||
&[multiple],
|
||||
&[size] {
|
||||
height: auto;
|
||||
}
|
||||
|
||||
&[size="1"] {
|
||||
height: $input-height-base;
|
||||
}
|
||||
|
||||
option[disabled] {
|
||||
color: $gray-lighter;
|
||||
}
|
||||
|
||||
&.expandable {
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
&.bool_cf {
|
||||
width: auto !important; // scss-lint:disable ImportantRule
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//== Browser hacks: unfortunately every browser has different capabilities when
|
||||
// it comes to styling <select> and <option> tags.
|
||||
//
|
||||
|
||||
// Mozilla Firefox
|
||||
|
||||
@-moz-document url-prefix() {
|
||||
select {
|
||||
&[multiple] {
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
option,
|
||||
optgroup::before {
|
||||
padding: $input-padding-vertical $input-padding-horizontal;
|
||||
border-bottom: 1px dotted $gray-lighter;
|
||||
}
|
||||
|
||||
optgroup > option {
|
||||
padding-right: $input-padding-horizontal * 2;
|
||||
padding-left: $input-padding-horizontal * 2;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Google Chrome and Safari
|
||||
|
||||
@supports (-webkit-appearance: none) {
|
||||
select[multiple] {
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
// For some reason nested selectors will not work
|
||||
select[multiple] option {
|
||||
padding: $input-padding-vertical $input-padding-horizontal;
|
||||
border-bottom: 1px dotted $gray-lighter;
|
||||
}
|
||||
}
|
||||
|
||||
select:-moz-focusring {
|
||||
color: transparent;
|
||||
text-shadow: 0 0 0 #000;
|
||||
}
|
||||
|
||||
fieldset {
|
||||
min-width: 0;
|
||||
margin: 0;
|
||||
padding: ($line-height-computed / 2) 0;
|
||||
border: 0 none;
|
||||
border-top: 1px solid $legend-border-color;
|
||||
|
||||
> p > label:first-child {
|
||||
margin-right: $label-space;
|
||||
}
|
||||
}
|
||||
|
||||
legend {
|
||||
padding-right: 5px;
|
||||
color: $legend-color;
|
||||
}
|
||||
|
||||
|
||||
//== Required fields' asterisk
|
||||
//
|
||||
|
||||
span.required {
|
||||
position: relative;
|
||||
top: 3px;
|
||||
margin-left: -.2em;
|
||||
color: #d00;
|
||||
font-size: 1.5em;
|
||||
font-weight: normal;
|
||||
line-height: 0;
|
||||
}
|
||||
|
||||
|
||||
//== Field's hint
|
||||
//
|
||||
|
||||
em.info {
|
||||
display: block;
|
||||
padding: 2px 0;
|
||||
color: $gray;
|
||||
font-size: $font-size-small;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
|
||||
//== Wiki editor
|
||||
//
|
||||
|
||||
.wiki-edit {
|
||||
color: $wiki-text;
|
||||
font-family: $font-family-monospace;
|
||||
line-height: $wiki-line-height;
|
||||
}
|
||||
|
||||
|
||||
//== Tabular forms
|
||||
//
|
||||
|
||||
.tabular {
|
||||
&.settings {
|
||||
p {
|
||||
padding-left: $label-wide-width + $label-space;
|
||||
}
|
||||
|
||||
label {
|
||||
width: $label-wide-width;
|
||||
margin-left: -($label-wide-width + $label-space);
|
||||
}
|
||||
}
|
||||
|
||||
p {
|
||||
@extend %clearfix;
|
||||
margin: 0 0 ($line-height-computed / 2);
|
||||
padding-left: $label-width + $label-space;
|
||||
clear: left;
|
||||
|
||||
.jstEditor {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
}
|
||||
|
||||
input,
|
||||
select {
|
||||
max-width: 100%;
|
||||
}
|
||||
|
||||
textarea {
|
||||
display: block;
|
||||
width: 100%;
|
||||
resize: vertical;
|
||||
}
|
||||
|
||||
input[type="radio"],
|
||||
input[type="checkbox"] {
|
||||
position: relative;
|
||||
top: 3px;
|
||||
vertical-align: baseline;
|
||||
}
|
||||
|
||||
span[title] {
|
||||
border-bottom: 1px dotted #aaa;
|
||||
}
|
||||
|
||||
label {
|
||||
width: $label-width;
|
||||
margin-top: $input-padding-vertical + 1px;
|
||||
margin-bottom: $input-padding-vertical + 1px;
|
||||
margin-left: -($label-width + $label-space);
|
||||
float: left;
|
||||
text-align: right;
|
||||
user-select: none;
|
||||
|
||||
&.floating {
|
||||
width: 270px;
|
||||
margin-left: 0;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
&.block,
|
||||
&.inline {
|
||||
display: block;
|
||||
width: auto;
|
||||
margin-left: 0;
|
||||
padding-left: 16px;
|
||||
float: none;
|
||||
text-align: left;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
&.inline {
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
&.role-visibility {
|
||||
padding-left: 34px;
|
||||
}
|
||||
|
||||
> input[type="radio"],
|
||||
> input[type="checkbox"] {
|
||||
top: 1px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
label.inline {
|
||||
display: inline-block;
|
||||
margin-right: $padding-base-horizontal;
|
||||
padding-left: 16px;
|
||||
float: none;
|
||||
text-align: left;
|
||||
cursor: pointer;
|
||||
|
||||
&:last-child {
|
||||
margin-right: 0;
|
||||
}
|
||||
}
|
||||
|
||||
label.inline,
|
||||
label.block {
|
||||
> input {
|
||||
margin-top: .2em;
|
||||
margin-left: -16px;
|
||||
float: left;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//== Hack: align description edit icon with label
|
||||
//
|
||||
|
||||
label[for=issue_description] + a {
|
||||
display: inline-block;
|
||||
margin-top: $input-padding-vertical + 1px;
|
||||
|
||||
img {
|
||||
vertical-align: middle;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//== Hack: better looking filter checkbox in sidebar in projects list
|
||||
//
|
||||
|
||||
label[for=closed] {
|
||||
@include check;
|
||||
display: block;
|
||||
margin-bottom: $line-height-computed / 2;
|
||||
}
|
||||
|
||||
|
||||
//== Input sizes
|
||||
//
|
||||
|
||||
.wiki-edit,
|
||||
#principal_search,
|
||||
#issue_subject,
|
||||
#time_entry_comments,
|
||||
#content_comments,
|
||||
#user_search,
|
||||
#user_login,
|
||||
#user_firstname,
|
||||
#user_lastname,
|
||||
#user_mail,
|
||||
#my_account_form select,
|
||||
#user_form select,
|
||||
#user_identity_url,
|
||||
#custom_field_possible_values {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
@if $issue-subject-large {
|
||||
$input-padding-large-vertical: 8px;
|
||||
$input-padding-large-horizontal: 12px;
|
||||
$input-height-large: (ceil($font-size-large-px * $line-height-large) + ($input-padding-large-vertical * 2) + 2);
|
||||
|
||||
label[for="issue_subject"] {
|
||||
margin-top: floor($input-padding-large-vertical * $line-height-large + 1px);
|
||||
}
|
||||
|
||||
#issue_subject {
|
||||
height: $input-height-large;
|
||||
padding: $input-padding-large-vertical $input-padding-large-horizontal;
|
||||
border-radius: $input-border-radius-large;
|
||||
font-size: $font-size-large;
|
||||
line-height: $line-height-large;
|
||||
}
|
||||
}
|
||||
|
||||
//== Add space below WYSIWYG
|
||||
//
|
||||
|
||||
.jstEditor {
|
||||
margin-bottom: $line-height-computed / 2;
|
||||
}
|
||||
|
||||
//== User form
|
||||
//
|
||||
|
||||
#user_form {
|
||||
@extend %clearfix;
|
||||
margin-bottom: $line-height-computed;
|
||||
|
||||
~ p {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//== Attachments
|
||||
//
|
||||
|
||||
#attachments_fields,
|
||||
#existing-attachments,
|
||||
.attachments_fields {
|
||||
> span {
|
||||
display: block;
|
||||
margin-bottom: $line-height-computed / 4;
|
||||
}
|
||||
|
||||
input {
|
||||
width: 21.5em;
|
||||
margin-right: .5em;
|
||||
margin-bottom: $line-height-computed / 4;
|
||||
|
||||
&.filename {
|
||||
padding-left: $input-padding-horizontal + 16px;
|
||||
background-image: url("../../../images/attachment.png");
|
||||
background-repeat: no-repeat;
|
||||
background-position: 4px center;
|
||||
}
|
||||
}
|
||||
|
||||
.ajax-waiting input.filename {
|
||||
background-image: url("../../../images/hourglass.png");
|
||||
}
|
||||
|
||||
.ajax-loading input.filename {
|
||||
background-image: url("../../../images/loading.gif");
|
||||
}
|
||||
|
||||
div.ui-progressbar {
|
||||
display: inline-block;
|
||||
width: 100px;
|
||||
height: 14px;
|
||||
margin: 2px 0 -5px 8px;
|
||||
}
|
||||
}
|
||||
|
||||
#add_attachment_form {
|
||||
p {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//== Issue form elements
|
||||
//
|
||||
|
||||
#issue-form {
|
||||
fieldset {
|
||||
&:last-child {
|
||||
padding-bottom: 0;
|
||||
|
||||
p {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.splitcontentleft,
|
||||
.splitcontentright {
|
||||
width: 100%;
|
||||
padding-right: 0;
|
||||
padding-left: 0;
|
||||
float: left;
|
||||
|
||||
@media screen and (min-width: $screen-sm-min) {
|
||||
width: auto;
|
||||
min-width: 36em;
|
||||
}
|
||||
|
||||
textarea.text_cf,
|
||||
input.string_cf,
|
||||
input.link_cf,
|
||||
select {
|
||||
width: 90%;
|
||||
}
|
||||
}
|
||||
|
||||
.splitcontentleft {
|
||||
@media screen and (min-width: $screen-sm-min) {
|
||||
margin-right: $padding-side;
|
||||
}
|
||||
}
|
||||
|
||||
#issue_estimated_hours,
|
||||
#issue_done_ratio {
|
||||
width: 5.5em;
|
||||
min-width: 1em;
|
||||
padding-left: .2em;
|
||||
text-align: right;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//== #all_attributes > p[style] is targeting Redmine 2.x
|
||||
//
|
||||
|
||||
#issue_is_private_wrap,
|
||||
#all_attributes > p[style] {
|
||||
margin-right: 0 !important; // scss-lint:disable ImportantRule
|
||||
margin-bottom: 0;
|
||||
padding-left: 0;
|
||||
float: right;
|
||||
|
||||
input {
|
||||
top: 2px;
|
||||
}
|
||||
|
||||
label {
|
||||
margin-right: 0;
|
||||
padding-left: 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#watchers_inputs {
|
||||
display: block;
|
||||
max-width: 64em;
|
||||
max-height: $check-list-max-height;
|
||||
margin-bottom: $line-height-computed / 2;
|
||||
padding-top: $check-list-offset-top;
|
||||
overflow: auto;
|
||||
columns: 18em 3;
|
||||
|
||||
label.floating {
|
||||
@include check-list;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//== List of custom field values
|
||||
//
|
||||
|
||||
.check_box_group {
|
||||
display: block;
|
||||
width: 90%;
|
||||
max-height: $check-list-max-height;
|
||||
padding-top: $check-list-offset-top;
|
||||
overflow-y: auto;
|
||||
|
||||
label {
|
||||
@include check-list;
|
||||
}
|
||||
|
||||
// Boolean field displayed as inline radio buttons
|
||||
&.bool_cf {
|
||||
overflow: initial;
|
||||
|
||||
label {
|
||||
display: inline-block;
|
||||
margin-right: $check-input-margin-horizontal;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//== Filters
|
||||
//
|
||||
|
||||
fieldset#filters {
|
||||
table {
|
||||
td {
|
||||
vertical-align: top;
|
||||
}
|
||||
}
|
||||
|
||||
.add-filter {
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
td {
|
||||
&.field {
|
||||
min-width: 180px;
|
||||
padding-right: $table-cell-padding * 2;
|
||||
}
|
||||
|
||||
&.operator {
|
||||
min-width: 180px;
|
||||
padding-right: $table-cell-padding * 2;
|
||||
|
||||
select {
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
&.values {
|
||||
min-width: 130px;
|
||||
white-space: nowrap;
|
||||
|
||||
select {
|
||||
min-width: 130px;
|
||||
}
|
||||
}
|
||||
|
||||
&.add-filter {
|
||||
padding-top: $table-condensed-cell-padding * 2;
|
||||
vertical-align: top;
|
||||
}
|
||||
}
|
||||
|
||||
div.add-filter {
|
||||
padding-top: $table-condensed-cell-padding;
|
||||
float: right;
|
||||
}
|
||||
}
|
||||
|
||||
#filters-table {
|
||||
float: left;
|
||||
}
|
||||
|
||||
|
||||
//== Reset label style for trackers selector in custom field editor
|
||||
//
|
||||
|
||||
label.no-css {
|
||||
width: auto;
|
||||
margin-left: 0;
|
||||
float: none;
|
||||
font-weight: inherit;
|
||||
text-align: left;
|
||||
}
|
||||
168
src/sass/components/_gantt.scss
Normal file
@@ -0,0 +1,168 @@
|
||||
//
|
||||
// Gantt chart
|
||||
// --------------------------------------------------
|
||||
|
||||
.gantt_hdr {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
height: 16px;
|
||||
overflow: hidden;
|
||||
border: 1px solid $gray-lighter;
|
||||
border-left-width: 0;
|
||||
text-align: center;
|
||||
|
||||
&.nwday {
|
||||
background-color: $gray-lightest;
|
||||
}
|
||||
}
|
||||
|
||||
.gantt_subjects {
|
||||
font-size: $font-size-small;
|
||||
|
||||
div {
|
||||
@include text-overflow;
|
||||
height: 16px;
|
||||
line-height: 16px;
|
||||
}
|
||||
}
|
||||
|
||||
.task {
|
||||
position: absolute;
|
||||
height: 8px;
|
||||
margin: 2px 0 0;
|
||||
padding: 0;
|
||||
font-size: 11px;
|
||||
line-height: 16px;
|
||||
white-space: nowrap;
|
||||
|
||||
&.label {
|
||||
width: 100%;
|
||||
margin-top: 0;
|
||||
|
||||
&.project,
|
||||
&.version {
|
||||
font-weight: $font-weight-bold;
|
||||
}
|
||||
}
|
||||
|
||||
&.parent {
|
||||
height: 3px;
|
||||
|
||||
&.marker {
|
||||
&.starting {
|
||||
position: absolute;
|
||||
top: -1px;
|
||||
left: 0;
|
||||
width: 8px;
|
||||
height: 16px;
|
||||
margin-left: -4px;
|
||||
background: url("../../../images/task_parent_end.png") no-repeat 0 0;
|
||||
}
|
||||
|
||||
&.ending {
|
||||
position: absolute;
|
||||
top: -1px;
|
||||
right: 0;
|
||||
width: 8px;
|
||||
height: 16px;
|
||||
margin-left: -4px;
|
||||
background: url("../../../images/task_parent_end.png") no-repeat 0 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.task_late {
|
||||
border: 1px solid darken($progress-bar-danger-bg, 10%);
|
||||
background-color: $progress-bar-danger-bg;
|
||||
}
|
||||
|
||||
.task_done {
|
||||
border: 1px solid darken($progress-bar-success-bg, 10%);
|
||||
background-color: $progress-bar-success-bg;
|
||||
}
|
||||
|
||||
.task_todo {
|
||||
border: 1px solid darken($progress-bg, 20%);
|
||||
background-color: $progress-bg;
|
||||
|
||||
&.parent {
|
||||
border: 1px solid darken($progress-bg, 30%);
|
||||
background-color: darken($progress-bg, 10%);
|
||||
}
|
||||
}
|
||||
|
||||
.project,
|
||||
.version {
|
||||
&.task_late,
|
||||
&.task_done,
|
||||
&.task_todo {
|
||||
height: 2px;
|
||||
margin-top: 3px;
|
||||
}
|
||||
|
||||
&.task_todo {
|
||||
border: 1px solid darken($progress-bar-info-bg, 10%);
|
||||
background-color: $progress-bar-info-bg;
|
||||
}
|
||||
|
||||
&.marker {
|
||||
margin-top: 1px;
|
||||
margin-left: -4px;
|
||||
border: 0 none;
|
||||
background-image: url("../../../images/version_marker.png");
|
||||
background-repeat: no-repeat;
|
||||
}
|
||||
}
|
||||
|
||||
.version-behind-schedule,
|
||||
.issue-behind-schedule {
|
||||
color: $brand-warning;
|
||||
}
|
||||
|
||||
.version-overdue,
|
||||
.issue-overdue,
|
||||
.project-overdue {
|
||||
color: $brand-danger;
|
||||
}
|
||||
|
||||
|
||||
//== Tooltips
|
||||
//
|
||||
|
||||
.tooltip {
|
||||
position: relative;
|
||||
z-index: 24;
|
||||
|
||||
&:hover {
|
||||
z-index: 25;
|
||||
|
||||
.tip {
|
||||
display: block;
|
||||
}
|
||||
}
|
||||
|
||||
.tip {
|
||||
@include nice-shadow(3);
|
||||
display: none;
|
||||
position: absolute;
|
||||
top: 9px;
|
||||
left: 24px;
|
||||
width: 270px;
|
||||
padding: $padding-base-vertical;
|
||||
border: $tooltip-border-width solid $tooltip-border;
|
||||
background-color: $tooltip-bg;
|
||||
color: $tooltip-text;
|
||||
font-size: $font-size-small;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
@if $sidebar-position == "left" {
|
||||
tr > td:last-child & {
|
||||
.tip {
|
||||
right: 2px;
|
||||
left: auto;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
34
src/sass/components/_gravatar.scss
Normal file
@@ -0,0 +1,34 @@
|
||||
//
|
||||
// Gravatars
|
||||
// --------------------------------------------------
|
||||
|
||||
img.gravatar {
|
||||
position: relative;
|
||||
top: -.15em;
|
||||
overflow: hidden;
|
||||
border-radius: $border-radius-large;
|
||||
line-height: 1;
|
||||
vertical-align: middle;
|
||||
|
||||
h2 &,
|
||||
h3 &,
|
||||
h4 & {
|
||||
margin-right: 5px;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//== Administration -> /users
|
||||
//
|
||||
|
||||
.username img.gravatar {
|
||||
margin-right: .5em;
|
||||
}
|
||||
|
||||
//== Gravatar
|
||||
// Used on 12px Gravatar img tags without the icon background
|
||||
|
||||
.icon-gravatar {
|
||||
margin-right: 5px;
|
||||
float: left;
|
||||
}
|
||||
1374
src/sass/components/_icons.scss
Normal file
44
src/sass/components/_image-base64.scss
Normal file
@@ -0,0 +1,44 @@
|
||||
//
|
||||
// Base64 encoded images
|
||||
// --------------------------------------------------
|
||||
|
||||
// ACI = AutoComplete Indicator
|
||||
%image-aci {
|
||||
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAKBAMAAAAnY0GXAAAAD1BMVEUAAACzs7Ozs7Ozs7Ozs7NJvZFvAAAABHRSTlMA5kpJG2qUMwAAABtJREFUCNdjIBMYCkMRDIg4QhBuAUUhKCIPAAAlaQNk5qF21gAAAABJRU5ErkJggg==);
|
||||
}
|
||||
|
||||
%image-arrow-up {
|
||||
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAGFBMVEUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABWNxwqAAAACHRSTlMAgFIFe2wwFmA2CKQAAAArSURBVAjXYyASGBlAGYoKEJpNUAzCKBEUKQDRzIGCgsEgBpOgoKAQA5kAAOOzAuqv1pGxAAAAAElFTkSuQmCC);
|
||||
}
|
||||
|
||||
%image-arrow-right {
|
||||
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAG1BMVEUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACUUeIgAAAACXRSTlMAgF1mUUUMBwa6cf6pAAAAIklEQVQI12PADwJgDBEYQ1ADxhBOgDIEFdBF1GG6EOYQCQC/wwKE7b2bNAAAAABJRU5ErkJggg==);
|
||||
}
|
||||
|
||||
%image-arrow-down {
|
||||
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAGFBMVEUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABWNxwqAAAACHRSTlMAgFIFbDAWVn1ccuIAAAAsSURBVAjXYyANMAkKCgqBGMyOgoLOYKFEQcEEMINVUBSqSlEByjA3YCARAADFOwKnW3vw7AAAAABJRU5ErkJggg==);
|
||||
}
|
||||
|
||||
%image-arrow-left {
|
||||
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAGFBMVEUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABWNxwqAAAACHRSTlMAgF1mUUUMBtml7EIAAAAjSURBVAjXYyAAWGEMRyhdJAih2QyhDCZBhAhcDVwXwhziAACuywJHmKAVPgAAAABJRU5ErkJggg==);
|
||||
}
|
||||
|
||||
%image-arrow-up-white {
|
||||
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAYUlEQVR4Xu2SMQqAMAxFVUxOID2FQ+9R3cRjesX4A5lCoaUFB2nhkeQPLxQyi8jU8xbwYwGBC1CrIIFda4sgKq6vFgS/1eZQI2BwZ/5NlnNJcIAtt8ny04ermx/l4zsYgheccgigTIfmMAAAAABJRU5ErkJggg==);
|
||||
}
|
||||
|
||||
%image-arrow-down-white {
|
||||
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAG1BMVEUAAAD////////////////////////////////rTT7CAAAACXRSTlMAgFIFbBZWMTBl3YBFAAAALElEQVQI12MgDTAJCgoKgRjMjoKCzmChQEHBADCDQ1AcqkpRAcowM2AgEQAAvM4CiwrixCQAAAAASUVORK5CYII=);
|
||||
}
|
||||
|
||||
%image-calendar {
|
||||
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOBAMAAADtZjDiAAAAIVBMVEUAAABVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUMftYpAAAACnRSTlMArIDn/dahwzIKIC4f+wAAADxJREFUCNdjYEhJACEGBk8HEGIQXrDYeMFiAYZVK1YB0QKGVSAApBcwMQgwMSDohaKChqKCxItXgc0pAADUBx5bh1ZBCgAAAABJRU5ErkJggg==);
|
||||
}
|
||||
|
||||
%image-toggle-minus {
|
||||
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQAQMAAAAlPW0iAAAABlBMVEUAAAAAAAClZ7nPAAAAAnRSTlMAgJsrThgAAAAQSURBVAjXY8AK+D+AEDYAAC8fAf+FxiPoAAAAAElFTkSuQmCC);
|
||||
}
|
||||
|
||||
%image-toggle-plus {
|
||||
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQAQMAAAAlPW0iAAAABlBMVEUAAAAAAAClZ7nPAAAAAnRSTlMAgJsrThgAAAAVSURBVAjXY0AGjA1QxP8BiBBcJAAAdjIFBZTfDZQAAAAASUVORK5CYII=);
|
||||
}
|
||||
680
src/sass/components/_issue.scss
Normal file
@@ -0,0 +1,680 @@
|
||||
//
|
||||
// Issue page
|
||||
// --------------------------------------------------
|
||||
|
||||
.issue {
|
||||
&.details {
|
||||
margin-bottom: $line-height-computed;
|
||||
padding: $issue-padding;
|
||||
border: 1px solid $issue-border;
|
||||
border-radius: $border-radius-base;
|
||||
background-color: $issue-bg;
|
||||
color: $issue-text;
|
||||
word-wrap: break-word;
|
||||
|
||||
@if $use-gravatars {
|
||||
// For Redmine 3.4+
|
||||
.gravatar-with-child {
|
||||
position: relative;
|
||||
|
||||
> img.gravatar {
|
||||
top: 0;
|
||||
width: $issue-gravatar-size;
|
||||
height: $issue-gravatar-size;
|
||||
margin-right: 10px;
|
||||
margin-bottom: $line-height-computed / 2;
|
||||
float: left;
|
||||
|
||||
&:nth-child(2) {
|
||||
position: absolute;
|
||||
top: $issue-gravatar-size * .6;
|
||||
left: $issue-gravatar-size * .6;
|
||||
width: $issue-gravatar-size * .5;
|
||||
height: $issue-gravatar-size * .5;
|
||||
border: 2px solid rgba(255, 255, 255, .9);
|
||||
border-radius: 20%;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
> img.gravatar {
|
||||
top: 0;
|
||||
width: $issue-gravatar-size;
|
||||
height: $issue-gravatar-size;
|
||||
margin-right: 10px;
|
||||
margin-bottom: $line-height-computed / 2;
|
||||
float: left;
|
||||
}
|
||||
|
||||
.assigned-to img.gravatar {
|
||||
position: relative;
|
||||
top: -3px;
|
||||
margin-right: 5px;
|
||||
}
|
||||
|
||||
> .subject,
|
||||
> .author {
|
||||
padding-left: $issue-gravatar-size * 1.1 + 10px;
|
||||
}
|
||||
}
|
||||
|
||||
&.assigned-to-me {
|
||||
.assigned-to .user {
|
||||
font-weight: $font-weight-bold;
|
||||
}
|
||||
}
|
||||
|
||||
> .subject {
|
||||
h3 {
|
||||
margin-bottom: .3em;
|
||||
color: $gray-darkest;
|
||||
font-size: $issue-heading-size * 1em;
|
||||
font-weight: $font-weight-bold;
|
||||
line-height: 1.2;
|
||||
}
|
||||
|
||||
p {
|
||||
margin-bottom: 5px;
|
||||
font-size: $font-size-small;
|
||||
}
|
||||
}
|
||||
|
||||
> .author {
|
||||
margin-bottom: $line-height-computed;
|
||||
}
|
||||
|
||||
> hr {
|
||||
margin: $issue-padding (-$issue-padding);
|
||||
border-top-color: $issue-border;
|
||||
}
|
||||
|
||||
> .description {
|
||||
> p {
|
||||
margin-bottom: $issue-padding;
|
||||
}
|
||||
|
||||
> .wiki {
|
||||
margin: 0 (-$issue-padding) (-$issue-padding);
|
||||
padding: $padding-wiki;
|
||||
border-top: 1px solid $issue-border;
|
||||
background: $body-bg;
|
||||
}
|
||||
}
|
||||
|
||||
.next-prev-links {
|
||||
color: $gray-light;
|
||||
}
|
||||
}
|
||||
|
||||
.attributes {
|
||||
width: 100%;
|
||||
|
||||
th,
|
||||
td {
|
||||
padding: $issue-attribute-padding-v $issue-attribute-padding-h $issue-attribute-padding-v 0;
|
||||
text-align: left;
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
> tbody > tr {
|
||||
th {
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
td {
|
||||
color: $gray-darkest;
|
||||
}
|
||||
}
|
||||
|
||||
@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;
|
||||
}
|
||||
|
||||
> td {
|
||||
width: auto;
|
||||
min-width: 16em;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@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: $brand-primary;
|
||||
color: $brand-text;
|
||||
font-size: $font-size-small;
|
||||
font-weight: $font-weight-bold;
|
||||
text-align: center;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
|
||||
&.status-1 {
|
||||
.attributes td.status,
|
||||
.attribute.status .value {
|
||||
background-color: $brand-info;
|
||||
}
|
||||
}
|
||||
|
||||
&.closed {
|
||||
.attributes td.status,
|
||||
.attribute.status .value {
|
||||
background-color: $brand-danger;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.splitcontentleft {
|
||||
@media screen and (min-width: $screen-lg-min) {
|
||||
width: auto;
|
||||
}
|
||||
}
|
||||
|
||||
.attribute {
|
||||
@extend %clearfix;
|
||||
|
||||
.label,
|
||||
.value {
|
||||
padding: $issue-attribute-padding-v $issue-attribute-padding-h $issue-attribute-padding-v 0;
|
||||
}
|
||||
|
||||
.label {
|
||||
width: 25%;
|
||||
float: left;
|
||||
|
||||
@media screen and (min-width: $screen-lg-min) {
|
||||
width: 14em;
|
||||
}
|
||||
}
|
||||
|
||||
.value {
|
||||
color: $gray-darkest;
|
||||
|
||||
@media screen and (min-width: $screen-lg-min) {
|
||||
width: auto;
|
||||
min-width: 14em + 16em;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
table.progress {
|
||||
width: 80px;
|
||||
}
|
||||
|
||||
div.attachments {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
border-top: 0;
|
||||
}
|
||||
|
||||
div.description + div.attachments {
|
||||
margin: $issue-padding (-$issue-padding) (-$issue-padding);
|
||||
padding: $issue-padding;
|
||||
border-top: 1px solid $issue-border;
|
||||
}
|
||||
}
|
||||
|
||||
div.fileover {
|
||||
background-color: $highlight-bg;
|
||||
}
|
||||
|
||||
div.attachments {
|
||||
padding: $line-height-computed 0;
|
||||
border-top: 1px solid $issue-border;
|
||||
|
||||
@at-root .collapsible #{&} {
|
||||
padding-top: 0;
|
||||
border-top: 0;
|
||||
}
|
||||
|
||||
p {
|
||||
margin: 10px 0 0;
|
||||
}
|
||||
|
||||
p:first-child,
|
||||
.contextual + p {
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
img {
|
||||
position: relative;
|
||||
top: -1px;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
.delete {
|
||||
opacity: .5;
|
||||
|
||||
&:hover {
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
||||
|
||||
span.author {
|
||||
color: $gray;
|
||||
font-size: $font-size-small;
|
||||
}
|
||||
}
|
||||
|
||||
div.thumbnails {
|
||||
margin-top: $issue-padding;
|
||||
|
||||
div {
|
||||
display: inline;
|
||||
}
|
||||
|
||||
a {
|
||||
display: inline-block;
|
||||
margin-right: 2px;
|
||||
border: 1px solid $gray-lighter;
|
||||
border-radius: $border-radius-base;
|
||||
background-color: $body-bg;
|
||||
|
||||
&:hover {
|
||||
border-color: $gray-light;
|
||||
}
|
||||
}
|
||||
|
||||
img {
|
||||
top: 0;
|
||||
margin: 3px;
|
||||
border-radius: $border-radius-base - 1;
|
||||
}
|
||||
}
|
||||
|
||||
#issue_tree,
|
||||
#relations {
|
||||
> p {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.issues {
|
||||
margin: ($line-height-computed / 2) 0 0;
|
||||
|
||||
tr {
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
tr:last-child > td {
|
||||
border-bottom: 0 none;
|
||||
}
|
||||
|
||||
td.checkbox {
|
||||
display: none;
|
||||
}
|
||||
|
||||
td.done_ratio {
|
||||
width: 80px;
|
||||
}
|
||||
|
||||
td.buttons {
|
||||
width: 3em;
|
||||
vertical-align: middle;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#new-relation-form {
|
||||
text-align: right;
|
||||
|
||||
> p {
|
||||
margin-bottom: 0;
|
||||
|
||||
> input {
|
||||
margin-right: 5px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#history {
|
||||
overflow: auto;
|
||||
|
||||
> .tabs {
|
||||
margin-bottom: $line-height-computed + 2px * 2;
|
||||
}
|
||||
|
||||
&.hide-details {
|
||||
.journal,
|
||||
.details,
|
||||
.first-of-notes::before {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.has-notes {
|
||||
display: block;
|
||||
}
|
||||
}
|
||||
|
||||
&.hide-notes {
|
||||
.journal,
|
||||
.wiki,
|
||||
.first-of-details::before {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.has-details {
|
||||
display: block;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.journal {
|
||||
position: relative;
|
||||
margin-bottom: $line-height-computed + 2px * 2;
|
||||
|
||||
@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%);
|
||||
}
|
||||
|
||||
.tabs + &::before {
|
||||
display: none;
|
||||
}
|
||||
|
||||
> div {
|
||||
border: 1px solid $issue-border;
|
||||
border-radius: $panel-border-radius;
|
||||
|
||||
&:target {
|
||||
border-color: darken($issue-border, 25%);
|
||||
|
||||
@if $use-gravatars {
|
||||
h4::before {
|
||||
border-right-color: darken($issue-border, 25%);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// For Redmine 4.0+
|
||||
> div > .contextual {
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
margin: 0;
|
||||
padding: $bubble-padding-vertical $bubble-padding-horizontal;
|
||||
font-size: $font-size-list;
|
||||
|
||||
> .journal-actions > a {
|
||||
opacity: .5;
|
||||
|
||||
&:hover {
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
||||
|
||||
> a.journal-link {
|
||||
color: $gray;
|
||||
|
||||
&::before {
|
||||
content: "";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
> div > h4 {
|
||||
margin: 0;
|
||||
padding: $bubble-padding-vertical $bubble-padding-horizontal;
|
||||
border-radius: $panel-border-radius $panel-border-radius 0 0;
|
||||
background-color: $issue-bg;
|
||||
color: $gray;
|
||||
font-size: $font-size-list;
|
||||
|
||||
a {
|
||||
color: $gray-darker;
|
||||
|
||||
&.user {
|
||||
font-weight: $font-weight-bold;
|
||||
}
|
||||
}
|
||||
|
||||
.journal-link {
|
||||
color: $gray;
|
||||
}
|
||||
}
|
||||
|
||||
@if $use-gravatars {
|
||||
> div > h4 {
|
||||
position: relative;
|
||||
|
||||
&::before,
|
||||
&::after {
|
||||
content: " ";
|
||||
display: block;
|
||||
position: absolute;
|
||||
top: 9px;
|
||||
right: 100%;
|
||||
left: -14px;
|
||||
width: 0;
|
||||
height: 0;
|
||||
border-style: solid solid outset;
|
||||
border-color: transparent;
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
&::after {
|
||||
margin-top: 1px;
|
||||
margin-left: 2px;
|
||||
border-width: 6px;
|
||||
border-right-color: $issue-bg;
|
||||
}
|
||||
|
||||
&::before {
|
||||
border-width: 7px;
|
||||
border-right-color: $issue-border;
|
||||
}
|
||||
|
||||
> .gravatar {
|
||||
top: 0;
|
||||
margin-top: $line-height-computed - $bubble-gravatar-size;
|
||||
margin-left: -($bubble-gravatar-size + $bubble-gravatar-space + $bubble-padding-horizontal + 1px);
|
||||
float: left;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.details {
|
||||
margin: 0;
|
||||
padding: $bubble-padding-vertical 0;
|
||||
padding-left: $bubble-padding-horizontal * 3;
|
||||
list-style: none;
|
||||
border-top: 1px solid mix($body-bg, $issue-border, 50%);
|
||||
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 * 1.5 + 6px / 2);
|
||||
width: 6px;
|
||||
height: 6px;
|
||||
border-radius: 50%;
|
||||
background-color: $gray-light;
|
||||
}
|
||||
}
|
||||
|
||||
img {
|
||||
margin: 0 0 -3px 4px;
|
||||
}
|
||||
}
|
||||
|
||||
.thumbnails {
|
||||
margin: 0;
|
||||
padding: 0 $bubble-padding-horizontal $bubble-padding-vertical;
|
||||
|
||||
img {
|
||||
vertical-align: middle;
|
||||
}
|
||||
}
|
||||
|
||||
.wiki,
|
||||
form {
|
||||
padding: $issue-padding;
|
||||
border-top: 1px solid mix($body-bg, $issue-border, 50%);
|
||||
}
|
||||
|
||||
form {
|
||||
padding-top: 5px;
|
||||
background-color: $gray-lightest;
|
||||
|
||||
> p {
|
||||
margin-bottom: $issue-padding;
|
||||
}
|
||||
|
||||
> .wiki {
|
||||
margin: 0 (-$issue-padding) (-$issue-padding);
|
||||
padding: 0;
|
||||
border: 0 none;
|
||||
|
||||
.preview {
|
||||
padding: $issue-padding;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
i {
|
||||
&:first-of-type,
|
||||
&:last-of-type {
|
||||
padding: 2px 4px;
|
||||
border-radius: $border-radius-small;
|
||||
font-size: .9285em;
|
||||
font-style: normal;
|
||||
}
|
||||
}
|
||||
|
||||
del > i:first-of-type,
|
||||
i:first-of-type {
|
||||
background-color: $journal-old-value-bg;
|
||||
color: $journal-old-value-color;
|
||||
}
|
||||
|
||||
i:last-of-type {
|
||||
background-color: $journal-new-value-bg;
|
||||
color: $journal-new-value-color;
|
||||
}
|
||||
}
|
||||
|
||||
.private-notes {
|
||||
> div {
|
||||
border-left-color: $brand-warning;
|
||||
|
||||
h4::before {
|
||||
border-right-color: $brand-warning;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#activity dt,
|
||||
.journal {
|
||||
clear: left;
|
||||
}
|
||||
|
||||
.journal-link {
|
||||
float: right;
|
||||
}
|
||||
|
||||
span.private {
|
||||
padding: $tracker-inline-padding;
|
||||
border-radius: $border-radius-small;
|
||||
background: $brand-warning;
|
||||
color: $brand-text;
|
||||
font-size: $font-size-small;
|
||||
font-weight: $font-weight-bold;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
|
||||
#issue-changesets {
|
||||
margin-bottom: $line-height-computed;
|
||||
|
||||
@media screen and (min-width: $screen-md-min) {
|
||||
width: 45%;
|
||||
margin-left: $padding-side;
|
||||
float: right;
|
||||
}
|
||||
|
||||
@media screen and (min-width: $screen-lg-min) {
|
||||
width: 33%;
|
||||
min-width: 28em;
|
||||
}
|
||||
|
||||
div.changeset {
|
||||
margin-top: $line-height-computed / 2 + 2px * 2;
|
||||
overflow: hidden;
|
||||
border: 1px solid $issue-border;
|
||||
border-radius: $panel-border-radius;
|
||||
background-color: $issue-bg;
|
||||
font-size: $font-size-list;
|
||||
|
||||
&:first-of-type {
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
> p {
|
||||
@include clearfix;
|
||||
margin: 0;
|
||||
padding: $padding-base-vertical $padding-base-horizontal;
|
||||
color: $gray;
|
||||
|
||||
> a {
|
||||
font-family: $font-family-monospace;
|
||||
font-weight: $font-weight-bold;
|
||||
}
|
||||
|
||||
.author a {
|
||||
color: $gray-darker;
|
||||
|
||||
&.user {
|
||||
font-weight: $font-weight-bold;
|
||||
}
|
||||
}
|
||||
|
||||
> br {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
> .wiki {
|
||||
padding: $padding-base-vertical $padding-base-horizontal;
|
||||
border-top: 1px solid mix($body-bg, $issue-border, 50%);
|
||||
background-color: $body-bg;
|
||||
}
|
||||
}
|
||||
}
|
||||