Compare commits
14 Commits
refactor/F
...
master
Author | SHA1 | Date | |
---|---|---|---|
|
a1b431c667 | ||
|
230a9e84a6 | ||
|
0e17ff09c2 | ||
|
ede4b8cb94 | ||
|
b6cc08ecf9 | ||
|
9f43646eaa | ||
|
12a1502037 | ||
|
439c0bf553 | ||
|
1d605b4bc2 | ||
|
cc8e7f9622 | ||
|
5dd4846318 | ||
|
3b71ae09dc | ||
|
ea9c66892e | ||
|
3908682f8c |
@ -1,40 +1,21 @@
|
|||||||
---
|
# http://eslint.org/docs/user-guide/configuring
|
||||||
parser: esprima
|
# http://eslint.org/docs/2.0.0/rules/
|
||||||
env:
|
env:
|
||||||
browser: true,
|
browser: true
|
||||||
jquery: true
|
jquery: true
|
||||||
settings:
|
extends: 'eslint:recommended'
|
||||||
ecmascript: 6
|
|
||||||
plugins:
|
plugins:
|
||||||
- ignore-erb
|
- ignore-erb
|
||||||
|
rules:
|
||||||
# "off" or 0 - turn the rule off
|
|
||||||
# "warn" or 1 - turn the rule on as a warning (doesn’t affect exit code)
|
|
||||||
# "error" or 2 - turn the rule on as an error (exit code is 1 when triggered)
|
|
||||||
# usually preferring warn because error can halt the build process and trips up rapid feedback
|
|
||||||
extends: "eslint:recommended"
|
|
||||||
rules: # http://eslint.org/docs/rules/
|
|
||||||
camelcase: warn
|
|
||||||
curly:
|
|
||||||
- warn
|
|
||||||
- all
|
|
||||||
indent:
|
indent:
|
||||||
- warn
|
- error
|
||||||
- 2
|
- 2
|
||||||
linebreak-style:
|
linebreak-style:
|
||||||
- error
|
- error
|
||||||
- unix
|
- unix
|
||||||
no-console:
|
no-trailing-spaces:
|
||||||
# console.error and console.warn are ok, but let's
|
|
||||||
# keep console.log out of production code.
|
|
||||||
- warn
|
- warn
|
||||||
- allow:
|
|
||||||
- warn
|
|
||||||
- error
|
|
||||||
no-mixed-spaces-and-tabs:
|
|
||||||
- warn
|
|
||||||
- smart-tabs
|
|
||||||
no-trailing-spaces: warn
|
|
||||||
no-underscore-dangle: warn
|
|
||||||
quotes: off
|
quotes: off
|
||||||
semi: warn
|
semi:
|
||||||
|
- error
|
||||||
|
- always
|
||||||
|
11
.scss-lint.yml
Normal file
11
.scss-lint.yml
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
scss_files: 'app/assets/stylesheets/**/*.scss'
|
||||||
|
|
||||||
|
linters:
|
||||||
|
StringQuotes:
|
||||||
|
enabled: false
|
||||||
|
LeadingZero:
|
||||||
|
style: 'include_zero'
|
||||||
|
SelectorFormat:
|
||||||
|
ignored_names:
|
||||||
|
QualifyingElement:
|
||||||
|
allow_element_with_attribute: true
|
6
Gemfile
6
Gemfile
@ -14,11 +14,13 @@ gem 'mailjet', '~> 1.3.8'
|
|||||||
gem 'puma', '~> 3.0'
|
gem 'puma', '~> 3.0'
|
||||||
gem 'pundit'
|
gem 'pundit'
|
||||||
gem 'sass-rails', '~> 5.0'
|
gem 'sass-rails', '~> 5.0'
|
||||||
gem 'autoprefixer-rails', '~> 6'
|
|
||||||
gem 'settingslogic', '~> 2.0.9'
|
gem 'settingslogic', '~> 2.0.9'
|
||||||
gem 'turbolinks', '~> 5'
|
gem 'turbolinks', '~> 5'
|
||||||
gem 'uglifier', '>= 1.3.0'
|
gem 'uglifier', '>= 1.3.0'
|
||||||
gem 'local_time'
|
|
||||||
|
# assets
|
||||||
|
gem 'bourbon'
|
||||||
|
gem 'neat'
|
||||||
|
|
||||||
# Foundation for Emails
|
# Foundation for Emails
|
||||||
gem 'inky-rb', require: 'inky'
|
gem 'inky-rb', require: 'inky'
|
||||||
|
143
Gemfile.lock
143
Gemfile.lock
@ -1,39 +1,39 @@
|
|||||||
GEM
|
GEM
|
||||||
remote: https://rubygems.org/
|
remote: https://rubygems.org/
|
||||||
specs:
|
specs:
|
||||||
actioncable (5.0.2)
|
actioncable (5.0.1)
|
||||||
actionpack (= 5.0.2)
|
actionpack (= 5.0.1)
|
||||||
nio4r (>= 1.2, < 3.0)
|
nio4r (~> 1.2)
|
||||||
websocket-driver (~> 0.6.1)
|
websocket-driver (~> 0.6.1)
|
||||||
actionmailer (5.0.2)
|
actionmailer (5.0.1)
|
||||||
actionpack (= 5.0.2)
|
actionpack (= 5.0.1)
|
||||||
actionview (= 5.0.2)
|
actionview (= 5.0.1)
|
||||||
activejob (= 5.0.2)
|
activejob (= 5.0.1)
|
||||||
mail (~> 2.5, >= 2.5.4)
|
mail (~> 2.5, >= 2.5.4)
|
||||||
rails-dom-testing (~> 2.0)
|
rails-dom-testing (~> 2.0)
|
||||||
actionpack (5.0.2)
|
actionpack (5.0.1)
|
||||||
actionview (= 5.0.2)
|
actionview (= 5.0.1)
|
||||||
activesupport (= 5.0.2)
|
activesupport (= 5.0.1)
|
||||||
rack (~> 2.0)
|
rack (~> 2.0)
|
||||||
rack-test (~> 0.6.3)
|
rack-test (~> 0.6.3)
|
||||||
rails-dom-testing (~> 2.0)
|
rails-dom-testing (~> 2.0)
|
||||||
rails-html-sanitizer (~> 1.0, >= 1.0.2)
|
rails-html-sanitizer (~> 1.0, >= 1.0.2)
|
||||||
actionview (5.0.2)
|
actionview (5.0.1)
|
||||||
activesupport (= 5.0.2)
|
activesupport (= 5.0.1)
|
||||||
builder (~> 3.1)
|
builder (~> 3.1)
|
||||||
erubis (~> 2.7.0)
|
erubis (~> 2.7.0)
|
||||||
rails-dom-testing (~> 2.0)
|
rails-dom-testing (~> 2.0)
|
||||||
rails-html-sanitizer (~> 1.0, >= 1.0.3)
|
rails-html-sanitizer (~> 1.0, >= 1.0.2)
|
||||||
activejob (5.0.2)
|
activejob (5.0.1)
|
||||||
activesupport (= 5.0.2)
|
activesupport (= 5.0.1)
|
||||||
globalid (>= 0.3.6)
|
globalid (>= 0.3.6)
|
||||||
activemodel (5.0.2)
|
activemodel (5.0.1)
|
||||||
activesupport (= 5.0.2)
|
activesupport (= 5.0.1)
|
||||||
activerecord (5.0.2)
|
activerecord (5.0.1)
|
||||||
activemodel (= 5.0.2)
|
activemodel (= 5.0.1)
|
||||||
activesupport (= 5.0.2)
|
activesupport (= 5.0.1)
|
||||||
arel (~> 7.0)
|
arel (~> 7.0)
|
||||||
activesupport (5.0.2)
|
activesupport (5.0.1)
|
||||||
concurrent-ruby (~> 1.0, >= 1.0.2)
|
concurrent-ruby (~> 1.0, >= 1.0.2)
|
||||||
i18n (~> 0.7)
|
i18n (~> 0.7)
|
||||||
minitest (~> 5.1)
|
minitest (~> 5.1)
|
||||||
@ -43,8 +43,6 @@ GEM
|
|||||||
ansi (1.5.0)
|
ansi (1.5.0)
|
||||||
arel (7.1.4)
|
arel (7.1.4)
|
||||||
ast (2.3.0)
|
ast (2.3.0)
|
||||||
autoprefixer-rails (6.7.7)
|
|
||||||
execjs
|
|
||||||
awesome_print (1.7.0)
|
awesome_print (1.7.0)
|
||||||
bcrypt (3.1.11)
|
bcrypt (3.1.11)
|
||||||
better_errors (2.1.1)
|
better_errors (2.1.1)
|
||||||
@ -53,41 +51,37 @@ GEM
|
|||||||
rack (>= 0.9.0)
|
rack (>= 0.9.0)
|
||||||
binding_of_caller (0.7.2)
|
binding_of_caller (0.7.2)
|
||||||
debug_inspector (>= 0.0.1)
|
debug_inspector (>= 0.0.1)
|
||||||
brakeman (3.5.0)
|
bourbon (4.2.7)
|
||||||
builder (3.2.3)
|
sass (~> 3.4)
|
||||||
|
thor (~> 0.19)
|
||||||
|
brakeman (3.4.1)
|
||||||
|
builder (3.2.2)
|
||||||
byebug (9.0.6)
|
byebug (9.0.6)
|
||||||
choice (0.2.0)
|
choice (0.2.0)
|
||||||
coderay (1.1.1)
|
coderay (1.1.1)
|
||||||
coffee-rails (4.2.1)
|
concurrent-ruby (1.0.4)
|
||||||
coffee-script (>= 2.2.0)
|
css_parser (1.4.7)
|
||||||
railties (>= 4.0.0, < 5.2.x)
|
|
||||||
coffee-script (2.4.1)
|
|
||||||
coffee-script-source
|
|
||||||
execjs
|
|
||||||
coffee-script-source (1.12.2)
|
|
||||||
concurrent-ruby (1.0.5)
|
|
||||||
css_parser (1.4.9)
|
|
||||||
addressable
|
addressable
|
||||||
debug_inspector (0.0.2)
|
debug_inspector (0.0.2)
|
||||||
docile (1.1.5)
|
docile (1.1.5)
|
||||||
domain_name (0.5.20170223)
|
domain_name (0.5.20161129)
|
||||||
unf (>= 0.0.5, < 1.0.0)
|
unf (>= 0.0.5, < 1.0.0)
|
||||||
em-websocket (0.5.1)
|
em-websocket (0.5.1)
|
||||||
eventmachine (>= 0.12.9)
|
eventmachine (>= 0.12.9)
|
||||||
http_parser.rb (~> 0.6.0)
|
http_parser.rb (~> 0.6.0)
|
||||||
erubis (2.7.0)
|
erubis (2.7.0)
|
||||||
eventmachine (1.2.3)
|
eventmachine (1.2.1)
|
||||||
execjs (2.7.0)
|
execjs (2.7.0)
|
||||||
faker (1.7.3)
|
faker (1.7.3)
|
||||||
i18n (~> 0.5)
|
i18n (~> 0.5)
|
||||||
ffi (1.9.18)
|
ffi (1.9.14)
|
||||||
figaro (1.1.1)
|
figaro (1.1.1)
|
||||||
thor (~> 0.14)
|
thor (~> 0.14)
|
||||||
formatador (0.2.5)
|
formatador (0.2.5)
|
||||||
foundation_emails (2.2.1.0)
|
foundation_emails (2.2.1.0)
|
||||||
globalid (0.3.7)
|
globalid (0.3.7)
|
||||||
activesupport (>= 4.1.0)
|
activesupport (>= 4.1.0)
|
||||||
guard (2.14.1)
|
guard (2.14.0)
|
||||||
formatador (>= 0.2.4)
|
formatador (>= 0.2.4)
|
||||||
listen (>= 2.7, < 4.0)
|
listen (>= 2.7, < 4.0)
|
||||||
lumberjack (~> 1.0)
|
lumberjack (~> 1.0)
|
||||||
@ -118,12 +112,12 @@ GEM
|
|||||||
http-cookie (1.0.3)
|
http-cookie (1.0.3)
|
||||||
domain_name (~> 0.5)
|
domain_name (~> 0.5)
|
||||||
http_parser.rb (0.6.0)
|
http_parser.rb (0.6.0)
|
||||||
i18n (0.8.1)
|
i18n (0.7.0)
|
||||||
inky-rb (1.3.7.2)
|
inky-rb (1.3.7.2)
|
||||||
foundation_emails (~> 2)
|
foundation_emails (~> 2)
|
||||||
nokogiri
|
nokogiri
|
||||||
jbuilder (2.6.3)
|
jbuilder (2.6.1)
|
||||||
activesupport (>= 3.0.0, < 5.2)
|
activesupport (>= 3.0.0, < 5.1)
|
||||||
multi_json (~> 1.2)
|
multi_json (~> 1.2)
|
||||||
jquery-rails (4.2.2)
|
jquery-rails (4.2.2)
|
||||||
rails-dom-testing (>= 1, < 3)
|
rails-dom-testing (>= 1, < 3)
|
||||||
@ -146,8 +140,6 @@ GEM
|
|||||||
rb-fsevent (~> 0.9, >= 0.9.4)
|
rb-fsevent (~> 0.9, >= 0.9.4)
|
||||||
rb-inotify (~> 0.9, >= 0.9.7)
|
rb-inotify (~> 0.9, >= 0.9.7)
|
||||||
ruby_dep (~> 1.2)
|
ruby_dep (~> 1.2)
|
||||||
local_time (1.0.3)
|
|
||||||
coffee-rails
|
|
||||||
loofah (2.0.3)
|
loofah (2.0.3)
|
||||||
nokogiri (>= 1.5.9)
|
nokogiri (>= 1.5.9)
|
||||||
lumberjack (1.0.11)
|
lumberjack (1.0.11)
|
||||||
@ -163,29 +155,32 @@ GEM
|
|||||||
mime-types-data (3.2016.0521)
|
mime-types-data (3.2016.0521)
|
||||||
mini_portile2 (2.1.0)
|
mini_portile2 (2.1.0)
|
||||||
minitest (5.10.1)
|
minitest (5.10.1)
|
||||||
minitest-reporters (1.1.14)
|
minitest-reporters (1.1.13)
|
||||||
ansi
|
ansi
|
||||||
builder
|
builder
|
||||||
minitest (>= 5.0)
|
minitest (>= 5.0)
|
||||||
ruby-progressbar
|
ruby-progressbar
|
||||||
multi_json (1.12.1)
|
multi_json (1.12.1)
|
||||||
mysql2 (0.4.5)
|
mysql2 (0.4.5)
|
||||||
|
neat (1.8.0)
|
||||||
|
sass (>= 3.3)
|
||||||
|
thor (~> 0.19)
|
||||||
nenv (0.3.0)
|
nenv (0.3.0)
|
||||||
netrc (0.11.0)
|
netrc (0.11.0)
|
||||||
nio4r (2.0.0)
|
nio4r (1.2.1)
|
||||||
nokogiri (1.7.0.1)
|
nokogiri (1.7.0.1)
|
||||||
mini_portile2 (~> 2.1.0)
|
mini_portile2 (~> 2.1.0)
|
||||||
notiffany (0.1.1)
|
notiffany (0.1.1)
|
||||||
nenv (~> 0.1)
|
nenv (~> 0.1)
|
||||||
shellany (~> 0.0)
|
shellany (~> 0.0)
|
||||||
parser (2.4.0.0)
|
parser (2.3.3.1)
|
||||||
ast (~> 2.2)
|
ast (~> 2.2)
|
||||||
policy-assertions (0.0.3)
|
policy-assertions (0.0.3)
|
||||||
activesupport (>= 3.0.0)
|
activesupport (>= 3.0.0)
|
||||||
pundit (>= 1.0.0)
|
pundit (>= 1.0.0)
|
||||||
powerpack (0.1.1)
|
powerpack (0.1.1)
|
||||||
premailer (1.10.0)
|
premailer (1.8.7)
|
||||||
css_parser (>= 1.4.9)
|
css_parser (>= 1.4.5)
|
||||||
htmlentities (>= 4.0.0)
|
htmlentities (>= 4.0.0)
|
||||||
premailer-rails (1.9.5)
|
premailer-rails (1.9.5)
|
||||||
actionmailer (>= 3, < 6)
|
actionmailer (>= 3, < 6)
|
||||||
@ -197,10 +192,10 @@ GEM
|
|||||||
pry-byebug (3.4.2)
|
pry-byebug (3.4.2)
|
||||||
byebug (~> 9.0)
|
byebug (~> 9.0)
|
||||||
pry (~> 0.10)
|
pry (~> 0.10)
|
||||||
pry-rails (0.3.5)
|
pry-rails (0.3.4)
|
||||||
pry (>= 0.9.10)
|
pry (>= 0.9.10)
|
||||||
public_suffix (2.0.5)
|
public_suffix (2.0.5)
|
||||||
puma (3.7.1)
|
puma (3.6.2)
|
||||||
pundit (1.1.0)
|
pundit (1.1.0)
|
||||||
activesupport (>= 3.0.0)
|
activesupport (>= 3.0.0)
|
||||||
rack (2.0.1)
|
rack (2.0.1)
|
||||||
@ -208,17 +203,17 @@ GEM
|
|||||||
rack
|
rack
|
||||||
rack-test (0.6.3)
|
rack-test (0.6.3)
|
||||||
rack (>= 1.0)
|
rack (>= 1.0)
|
||||||
rails (5.0.2)
|
rails (5.0.1)
|
||||||
actioncable (= 5.0.2)
|
actioncable (= 5.0.1)
|
||||||
actionmailer (= 5.0.2)
|
actionmailer (= 5.0.1)
|
||||||
actionpack (= 5.0.2)
|
actionpack (= 5.0.1)
|
||||||
actionview (= 5.0.2)
|
actionview (= 5.0.1)
|
||||||
activejob (= 5.0.2)
|
activejob (= 5.0.1)
|
||||||
activemodel (= 5.0.2)
|
activemodel (= 5.0.1)
|
||||||
activerecord (= 5.0.2)
|
activerecord (= 5.0.1)
|
||||||
activesupport (= 5.0.2)
|
activesupport (= 5.0.1)
|
||||||
bundler (>= 1.3.0, < 2.0)
|
bundler (>= 1.3.0, < 2.0)
|
||||||
railties (= 5.0.2)
|
railties (= 5.0.1)
|
||||||
sprockets-rails (>= 2.0.0)
|
sprockets-rails (>= 2.0.0)
|
||||||
rails-controller-testing (1.0.1)
|
rails-controller-testing (1.0.1)
|
||||||
actionpack (~> 5.x)
|
actionpack (~> 5.x)
|
||||||
@ -234,18 +229,18 @@ GEM
|
|||||||
ruby-graphviz (~> 1.2)
|
ruby-graphviz (~> 1.2)
|
||||||
rails-html-sanitizer (1.0.3)
|
rails-html-sanitizer (1.0.3)
|
||||||
loofah (~> 2.0)
|
loofah (~> 2.0)
|
||||||
railties (5.0.2)
|
railties (5.0.1)
|
||||||
actionpack (= 5.0.2)
|
actionpack (= 5.0.1)
|
||||||
activesupport (= 5.0.2)
|
activesupport (= 5.0.1)
|
||||||
method_source
|
method_source
|
||||||
rake (>= 0.8.7)
|
rake (>= 0.8.7)
|
||||||
thor (>= 0.18.1, < 2.0)
|
thor (>= 0.18.1, < 2.0)
|
||||||
rainbow (2.2.1)
|
rainbow (2.2.1)
|
||||||
rake (12.0.0)
|
rake (12.0.0)
|
||||||
rb-fsevent (0.9.8)
|
rb-fsevent (0.9.8)
|
||||||
rb-inotify (0.9.8)
|
rb-inotify (0.9.7)
|
||||||
ffi (>= 0.5.0)
|
ffi (>= 0.5.0)
|
||||||
rest-client (2.0.1)
|
rest-client (2.0.0)
|
||||||
http-cookie (>= 1.0.2, < 2.0)
|
http-cookie (>= 1.0.2, < 2.0)
|
||||||
mime-types (>= 1.16, < 4.0)
|
mime-types (>= 1.16, < 4.0)
|
||||||
netrc (~> 0.8)
|
netrc (~> 0.8)
|
||||||
@ -267,13 +262,13 @@ GEM
|
|||||||
tilt (>= 1.1, < 3)
|
tilt (>= 1.1, < 3)
|
||||||
settingslogic (2.0.9)
|
settingslogic (2.0.9)
|
||||||
shellany (0.0.1)
|
shellany (0.0.1)
|
||||||
simplecov (0.13.0)
|
simplecov (0.12.0)
|
||||||
docile (~> 1.1.0)
|
docile (~> 1.1.0)
|
||||||
json (>= 1.8, < 3)
|
json (>= 1.8, < 3)
|
||||||
simplecov-html (~> 0.10.0)
|
simplecov-html (~> 0.10.0)
|
||||||
simplecov-html (0.10.0)
|
simplecov-html (0.10.0)
|
||||||
slop (3.6.0)
|
slop (3.6.0)
|
||||||
spring (2.0.1)
|
spring (2.0.0)
|
||||||
activesupport (>= 4.2)
|
activesupport (>= 4.2)
|
||||||
spring-watcher-listen (2.0.1)
|
spring-watcher-listen (2.0.1)
|
||||||
listen (>= 2.7, < 4.0)
|
listen (>= 2.7, < 4.0)
|
||||||
@ -287,25 +282,25 @@ GEM
|
|||||||
sprockets (>= 3.0.0)
|
sprockets (>= 3.0.0)
|
||||||
table_print (1.5.6)
|
table_print (1.5.6)
|
||||||
thor (0.19.4)
|
thor (0.19.4)
|
||||||
thread_safe (0.3.6)
|
thread_safe (0.3.5)
|
||||||
tilt (2.0.6)
|
tilt (2.0.5)
|
||||||
turbolinks (5.0.1)
|
turbolinks (5.0.1)
|
||||||
turbolinks-source (~> 5)
|
turbolinks-source (~> 5)
|
||||||
turbolinks-source (5.0.0)
|
turbolinks-source (5.0.0)
|
||||||
tzinfo (1.2.2)
|
tzinfo (1.2.2)
|
||||||
thread_safe (~> 0.1)
|
thread_safe (~> 0.1)
|
||||||
uglifier (3.1.4)
|
uglifier (3.0.4)
|
||||||
execjs (>= 0.3.0, < 3)
|
execjs (>= 0.3.0, < 3)
|
||||||
unf (0.1.4)
|
unf (0.1.4)
|
||||||
unf_ext
|
unf_ext
|
||||||
unf_ext (0.0.7.2)
|
unf_ext (0.0.7.2)
|
||||||
unicode-display_width (1.1.3)
|
unicode-display_width (1.1.2)
|
||||||
web-console (3.4.0)
|
web-console (3.4.0)
|
||||||
actionview (>= 5.0)
|
actionview (>= 5.0)
|
||||||
activemodel (>= 5.0)
|
activemodel (>= 5.0)
|
||||||
debug_inspector
|
debug_inspector
|
||||||
railties (>= 5.0)
|
railties (>= 5.0)
|
||||||
websocket-driver (0.6.5)
|
websocket-driver (0.6.4)
|
||||||
websocket-extensions (>= 0.1.0)
|
websocket-extensions (>= 0.1.0)
|
||||||
websocket-extensions (0.1.2)
|
websocket-extensions (0.1.2)
|
||||||
|
|
||||||
@ -313,11 +308,11 @@ PLATFORMS
|
|||||||
ruby
|
ruby
|
||||||
|
|
||||||
DEPENDENCIES
|
DEPENDENCIES
|
||||||
autoprefixer-rails (~> 6)
|
|
||||||
awesome_print
|
awesome_print
|
||||||
bcrypt (~> 3.1.7)
|
bcrypt (~> 3.1.7)
|
||||||
better_errors
|
better_errors
|
||||||
binding_of_caller
|
binding_of_caller
|
||||||
|
bourbon
|
||||||
brakeman
|
brakeman
|
||||||
byebug
|
byebug
|
||||||
faker
|
faker
|
||||||
@ -334,10 +329,10 @@ DEPENDENCIES
|
|||||||
json (~> 2.0.2)
|
json (~> 2.0.2)
|
||||||
kaminari
|
kaminari
|
||||||
listen
|
listen
|
||||||
local_time
|
|
||||||
mailjet (~> 1.3.8)
|
mailjet (~> 1.3.8)
|
||||||
minitest-reporters
|
minitest-reporters
|
||||||
mysql2 (>= 0.3.18, < 0.5)
|
mysql2 (>= 0.3.18, < 0.5)
|
||||||
|
neat
|
||||||
policy-assertions
|
policy-assertions
|
||||||
premailer-rails
|
premailer-rails
|
||||||
pry-byebug
|
pry-byebug
|
||||||
|
@ -70,18 +70,13 @@ guard :minitest, spring: "bin/rails test", all_after_pass: true do
|
|||||||
watch(%r{^app/views/(.*_mailer/)?([^/]+)\.erb$}) { ["test/mailers", "test/integration"] }
|
watch(%r{^app/views/(.*_mailer/)?([^/]+)\.erb$}) { ["test/mailers", "test/integration"] }
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# ESLint
|
||||||
guard :shell, all_on_start: true do
|
guard :shell, all_on_start: true do
|
||||||
# ESLint
|
# TODO: Annoyingly, all files are linted twice on start/full runs. Why?
|
||||||
watch %r{app/assets/javascripts/*/.*} do |file|
|
watch %r{app/assets/javascripts/*/.*} do |file|
|
||||||
system %(echo "ESLint:\033[32m #{file[0]}\033[0m")
|
system %(echo "ESLint:\033[32m #{file[0]}\033[0m")
|
||||||
system %(./node_modules/eslint/bin/eslint.js #{file[0]})
|
system %(./node_modules/eslint/bin/eslint.js #{file[0]})
|
||||||
end
|
end
|
||||||
|
|
||||||
# sass-lint
|
|
||||||
watch %r{app/assets/stylesheets/*/.*scss$} do |file|
|
|
||||||
system %(echo "sass-lint:\033[32m #{file[0]}\033[0m")
|
|
||||||
system %(sass-lint --cache --config .sass-lint.yml '#{file[0]}' --verbose --no-exit)
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
guard :rubocop, cli: %w(-D -S -a) do
|
guard :rubocop, cli: %w(-D -S -a) do
|
||||||
|
18
app/assets/javascripts/admin.js
Normal file
18
app/assets/javascripts/admin.js
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
$(function(){
|
||||||
|
|
||||||
|
$("form").on('click', "[data-id=input_option_adder]", function(){
|
||||||
|
var $new_li = $(this).siblings('li').clone();
|
||||||
|
$new_li.attr('style', '');
|
||||||
|
$("[data-id=input_option_list]").append($new_li);
|
||||||
|
$new_li.find('input').focus();
|
||||||
|
});
|
||||||
|
|
||||||
|
$("#question_input_type").on('change', function(){
|
||||||
|
var qid = $(this).attr('data-qid') === undefined ? '' : "/" + $(this).attr('data-qid');
|
||||||
|
// /admin/question(/:question_id)/options/:input_type
|
||||||
|
$("[data-id=input-options-wrapper]").load("/admin/question" + qid + "/options/" + $(this).val(), function(){
|
||||||
|
$(".code-input textarea").linedtextarea();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
});
|
27
app/assets/javascripts/ajax-links.js
Normal file
27
app/assets/javascripts/ajax-links.js
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
function handleAjaxResponse($el, callback) {
|
||||||
|
var $header = $('header');
|
||||||
|
$el.on("ajax:success", function(e, data){
|
||||||
|
$header.after('<div class="success">' + data.message + '</div>');
|
||||||
|
callback(data);
|
||||||
|
}).on("ajax:error", function(e, xhr) {
|
||||||
|
if (xhr.status === 400){
|
||||||
|
$header.after('<div class="error">' + xhr.responseJSON.join('<br>') + '</div>');
|
||||||
|
} else {
|
||||||
|
$header.after('<div class="error">Oops! There was an error processing your request. Please try again.</div>');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function updateVotes(data){
|
||||||
|
$("[data-id=up-votes]").html(data.upCount);
|
||||||
|
$("[data-id=down-votes]").html(data.downCount);
|
||||||
|
$("[data-id=my-vote]").html(data.myVote);
|
||||||
|
}
|
||||||
|
|
||||||
|
$(document).ready(function() {
|
||||||
|
$('[data-id=ajax-action]').each(function(){ handleAjaxResponse($(this)); });
|
||||||
|
});
|
||||||
|
|
||||||
|
$(document).ready(function() {
|
||||||
|
$('[data-id=vote-count]').each(function(){ handleAjaxResponse($(this), updateVotes); });
|
||||||
|
});
|
@ -14,4 +14,9 @@
|
|||||||
//= require jquery_ujs
|
//= require jquery_ujs
|
||||||
//= require turbolinks
|
//= require turbolinks
|
||||||
//= require modernizr-lite/modernizr
|
//= require modernizr-lite/modernizr
|
||||||
//= require local_time
|
|
||||||
|
//= require ajax-links
|
||||||
|
|
||||||
|
//= require forms/button-group
|
||||||
|
//= require forms/animations
|
||||||
|
//= require forms/textarea-limit
|
||||||
|
13
app/assets/javascripts/cable.js
Normal file
13
app/assets/javascripts/cable.js
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
// Action Cable provides the framework to deal with WebSockets in Rails.
|
||||||
|
// You can generate new channels where WebSocket features live using the rails generate channel command.
|
||||||
|
//
|
||||||
|
//= require action_cable
|
||||||
|
//= require_self
|
||||||
|
//= require_tree ./channels
|
||||||
|
|
||||||
|
// (function() {
|
||||||
|
// this.App || (this.App = {});
|
||||||
|
//
|
||||||
|
// App.cable = ActionCable.createConsumer();
|
||||||
|
//
|
||||||
|
// }).call(this);
|
0
app/assets/javascripts/channels/.keep
Normal file
0
app/assets/javascripts/channels/.keep
Normal file
30
app/assets/javascripts/forms/animations.js
Normal file
30
app/assets/javascripts/forms/animations.js
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
var $textInput = $('[type="color"], [type="date"], [type="datetime"], [type="datetime-local"], [type="email"], [type="month"], [type="number"], [type="password"], [type="search"], [type="tel"], [type="text"], [type="time"], [type="url"], [type="week"], input:not([type]), textarea');
|
||||||
|
|
||||||
|
// Text Input Label Animation
|
||||||
|
$textInput.prev('label').addClass('loaded');
|
||||||
|
$textInput.each(function() {
|
||||||
|
if( $(this).val() ) {
|
||||||
|
$(this).prev('label').addClass('animate');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
$textInput.on('focus', function() {
|
||||||
|
$(this).prev('label').addClass('animate');
|
||||||
|
}).on('focusout', function() {
|
||||||
|
if( !$(this).val() ) {
|
||||||
|
$(this).prev('label').removeClass('animate');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// form error resolutions
|
||||||
|
$('form').has('.error').each(function(){
|
||||||
|
var $form = $(this);
|
||||||
|
|
||||||
|
$form.on('keyup', $textInput, function(){
|
||||||
|
$form.find(".error").addClass('resolve-error');
|
||||||
|
});
|
||||||
|
|
||||||
|
$form.on('change', $("[type=radio], [type=checkbox]"), function(){
|
||||||
|
$form.find(".error").addClass('resolve-error');
|
||||||
|
});
|
||||||
|
});
|
8
app/assets/javascripts/forms/button-group.js
Normal file
8
app/assets/javascripts/forms/button-group.js
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
/**
|
||||||
|
* Button Group Functionality
|
||||||
|
*/
|
||||||
|
|
||||||
|
$('.btn-group button').click(function() {
|
||||||
|
$(this).siblings().removeClass('selected');
|
||||||
|
$(this).addClass('selected');
|
||||||
|
});
|
25
app/assets/javascripts/forms/textarea-limit.js
Normal file
25
app/assets/javascripts/forms/textarea-limit.js
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
$.fn.extend({
|
||||||
|
characterLimiter: function(limit, label) {
|
||||||
|
this.on("keyup focus show", function() {
|
||||||
|
setCount(this, label);
|
||||||
|
});
|
||||||
|
|
||||||
|
// TODO: append label container after $this, instead of hard HTML
|
||||||
|
function setCount(src, label) {
|
||||||
|
if(src !== undefined) {
|
||||||
|
var chars = src.value.length;
|
||||||
|
if (chars >= limit) {
|
||||||
|
src.value = src.value.substr(0, limit);
|
||||||
|
chars = limit;
|
||||||
|
}
|
||||||
|
label.html(limit - chars);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
setCount(this[0], label);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
$(document).ready(function() {
|
||||||
|
$('textarea').characterLimiter(1000, $(".chars span"));
|
||||||
|
});
|
1
app/assets/javascripts/ie9.js
Normal file
1
app/assets/javascripts/ie9.js
Normal file
@ -0,0 +1 @@
|
|||||||
|
//= require html5shiv/dist/html5shiv.min
|
@ -12,7 +12,6 @@ function updateResults(elem) {
|
|||||||
var iBody = document.createElement('body');
|
var iBody = document.createElement('body');
|
||||||
|
|
||||||
var codeFrame = document.createElement('iframe');
|
var codeFrame = document.createElement('iframe');
|
||||||
codeFrame.setAttribute("title", "live-code-results-" + resultsContainer.getAttribute("data-qid"));
|
|
||||||
codeFrame.setAttribute("width", "100%");
|
codeFrame.setAttribute("width", "100%");
|
||||||
codeFrame.setAttribute("height", "100%");
|
codeFrame.setAttribute("height", "100%");
|
||||||
resultsContainer.appendChild(codeFrame);
|
resultsContainer.appendChild(codeFrame);
|
||||||
@ -28,7 +27,6 @@ function updateResults(elem) {
|
|||||||
codeStyle.appendChild(rulesNode);
|
codeStyle.appendChild(rulesNode);
|
||||||
iHead.appendChild(codeStyle);
|
iHead.appendChild(codeStyle);
|
||||||
|
|
||||||
iDoc.setAttribute('lang', 'en');
|
|
||||||
iDoc.appendChild(iHead);
|
iDoc.appendChild(iHead);
|
||||||
iBody.innerHTML = codeHtml;
|
iBody.innerHTML = codeHtml;
|
||||||
iDoc.appendChild(iBody);
|
iDoc.appendChild(iBody);
|
||||||
|
@ -41,11 +41,11 @@
|
|||||||
*/
|
*/
|
||||||
var fillOutLines = function(codeLines, h, lineNo){
|
var fillOutLines = function(codeLines, h, lineNo){
|
||||||
while ( (codeLines.height() - h ) <= 0 ){
|
while ( (codeLines.height() - h ) <= 0 ){
|
||||||
if ( lineNo == opts.selectedLine ) {
|
if ( lineNo == opts.selectedLine )
|
||||||
codeLines.append("<div class='lineno lineselect'>" + lineNo + "</div>");
|
codeLines.append("<div class='lineno lineselect'>" + lineNo + "</div>");
|
||||||
} else {
|
else
|
||||||
codeLines.append("<div class='lineno'>" + lineNo + "</div>");
|
codeLines.append("<div class='lineno'>" + lineNo + "</div>");
|
||||||
}
|
|
||||||
lineNo++;
|
lineNo++;
|
||||||
}
|
}
|
||||||
return lineNo;
|
return lineNo;
|
||||||
|
95
app/assets/javascripts/summary-edit.js
Normal file
95
app/assets/javascripts/summary-edit.js
Normal file
@ -0,0 +1,95 @@
|
|||||||
|
/* global updateResults */
|
||||||
|
// TODO: remove global ^ once live-coder is properly name spaced
|
||||||
|
/**
|
||||||
|
* Summary Page Answer Editor
|
||||||
|
*/
|
||||||
|
function disableForm($form){
|
||||||
|
$form.find('fieldset').prop('disabled', true);
|
||||||
|
$form.find('textarea').prop('disabled', true);
|
||||||
|
$form.find('.button-save, .button-cancel').hide();
|
||||||
|
$form.find('.button-edit').show();
|
||||||
|
$form.find('.editable').removeClass('editable');
|
||||||
|
$('.button-edit, .submit-button').removeClass('disabled-button');
|
||||||
|
}
|
||||||
|
|
||||||
|
function restoreValues($form){
|
||||||
|
$form.find('[type=radio][data-last], [type=checkbox][data-last]').each(function(){
|
||||||
|
$(this).prop('checked', $(this).attr('data-last'));
|
||||||
|
});
|
||||||
|
|
||||||
|
$form.find('textarea[data-last]').each(function(){
|
||||||
|
$(this).val($(this).attr('data-last'));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function updateLocalValues($form){
|
||||||
|
$form.find('[type=radio][data-last], [type=checkbox][data-last]').each(function(){
|
||||||
|
$(this).attr('data-last', $(this).prop('checked') ? 'checked' : '');
|
||||||
|
});
|
||||||
|
|
||||||
|
$form.find('textarea[data-last]').each(function(){
|
||||||
|
$(this).attr('data-last', $(this).val());
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function updateProgress(data) {
|
||||||
|
$(".progress-bar").attr('aria-valuenow', data.progress)
|
||||||
|
.attr('style','width: '+ data.progress +'%;')
|
||||||
|
.find('span').text(data.progress + '%');
|
||||||
|
if(data.can_submit === true){
|
||||||
|
$('#summary-submit').find('.error').remove();
|
||||||
|
$('#summary-submit').find('.submit-button').prop('disabled', false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function prepareAjax($form) {
|
||||||
|
$form.on("ajax:success", function(e, data){
|
||||||
|
$form.prepend('<div class="success">' + data.message + '</div>');
|
||||||
|
disableForm($form);
|
||||||
|
updateLocalValues($form);
|
||||||
|
updateProgress(data);
|
||||||
|
}).on("ajax:error", function(e, xhr) {
|
||||||
|
if (xhr.status === 400){
|
||||||
|
$form.prepend('<div class="error">' + xhr.responseJSON.join('<br>') + '</div>');
|
||||||
|
} else {
|
||||||
|
$form.prepend('<div class="error">Oops! There was an error processing your request. Please try again.</div>');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function editClickHandler(e) {
|
||||||
|
e.preventDefault();
|
||||||
|
$('.button-edit, .submit-button').addClass('disabled-button');
|
||||||
|
var $form = $(e.delegateTarget).closest('form');
|
||||||
|
$(e.delegateTarget).addClass('editable');
|
||||||
|
$form.find('fieldset').prop('disabled', false);
|
||||||
|
$form.find('textarea').prop('disabled', false);
|
||||||
|
$form.find('textarea').focus();
|
||||||
|
$form.find('.button-edit').hide().delay();
|
||||||
|
$form.find('.button-save, .button-cancel').show().delay();
|
||||||
|
}
|
||||||
|
|
||||||
|
function cancelClickHandler(e) {
|
||||||
|
e.preventDefault();
|
||||||
|
var $form = $(e.delegateTarget).closest('form');
|
||||||
|
$form.find('.error, .success').remove();
|
||||||
|
disableForm($form);
|
||||||
|
restoreValues($form);
|
||||||
|
updateResults($form.find("[data-id=live-coder-answer]"));
|
||||||
|
}
|
||||||
|
|
||||||
|
function saveClickHandler(e) {
|
||||||
|
e.preventDefault();
|
||||||
|
var $form = $(e.delegateTarget).closest('form');
|
||||||
|
$form.find('.error, .success').remove();
|
||||||
|
$form.submit();
|
||||||
|
}
|
||||||
|
|
||||||
|
$('.summary_tpl fieldset').prop('disabled', true);
|
||||||
|
$('.summary_tpl textarea').prop('disabled', true);
|
||||||
|
$('.summary_tpl form').each(function(){ prepareAjax($(this)); });
|
||||||
|
$('.summary_tpl .answer-sec')
|
||||||
|
.find('.button-cancel, .button-save').hide().end()
|
||||||
|
.on('click', '.button-edit', editClickHandler)
|
||||||
|
.on('click', '.button-cancel', cancelClickHandler)
|
||||||
|
.on('click', '.button-save', saveClickHandler);
|
@ -12,18 +12,15 @@
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@import 'settings/variables';
|
@import 'bourbon';
|
||||||
@import 'settings/fonts';
|
@import 'neat';
|
||||||
@import 'settings/mixins';
|
|
||||||
|
|
||||||
/*= require normalize-css/normalize */
|
@import 'core/fonts';
|
||||||
@import 'settings/reset';
|
@import 'core/variables';
|
||||||
|
@import 'core/animations';
|
||||||
|
|
||||||
@import 'generic/typography';
|
@import 'atoms/**/*';
|
||||||
|
@import 'molecules/**/*';
|
||||||
@import 'elements/body';
|
// @import 'organisms/**/*';
|
||||||
@import 'elements/progressbar';
|
@import 'templates/**/*';
|
||||||
@import 'elements/header';
|
@import 'pages/**/*';
|
||||||
@import 'elements/form-question';
|
|
||||||
|
|
||||||
// @import 'objects/';
|
|
||||||
|
8
app/assets/stylesheets/atoms/_alerts.scss
Normal file
8
app/assets/stylesheets/atoms/_alerts.scss
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
.alert {
|
||||||
|
padding: 20px;
|
||||||
|
border-radius: 5px;
|
||||||
|
&.alert-success {
|
||||||
|
background-color: $accent-color-3;
|
||||||
|
color: $white;
|
||||||
|
}
|
||||||
|
}
|
61
app/assets/stylesheets/atoms/_layout.scss
Normal file
61
app/assets/stylesheets/atoms/_layout.scss
Normal file
@ -0,0 +1,61 @@
|
|||||||
|
html {
|
||||||
|
box-sizing: border-box;
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
body {
|
||||||
|
margin: 0 1rem;
|
||||||
|
height: 100%;
|
||||||
|
.ignore-margin
|
||||||
|
{
|
||||||
|
margin-left: -1rem;
|
||||||
|
margin-right: -1rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
*,
|
||||||
|
*::before,
|
||||||
|
*::after {
|
||||||
|
box-sizing: inherit;
|
||||||
|
}
|
||||||
|
|
||||||
|
*:focus {
|
||||||
|
outline: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
main {
|
||||||
|
display: block;
|
||||||
|
padding-top: 8vw;
|
||||||
|
}
|
||||||
|
|
||||||
|
.layout {
|
||||||
|
min-height: calc(100% - 112px);
|
||||||
|
&:after {
|
||||||
|
content:"";
|
||||||
|
display:block;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media only screen and (min-width: 480px) {
|
||||||
|
.layout {
|
||||||
|
min-height: calc(100% - 116px);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media only screen and (min-width: $tablet) {
|
||||||
|
html {
|
||||||
|
// font-size: 2vw;
|
||||||
|
}
|
||||||
|
body {
|
||||||
|
margin: 0 2rem
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media only screen and (min-width: $desktop) {
|
||||||
|
html {
|
||||||
|
font-size: 16px;
|
||||||
|
}
|
||||||
|
main {
|
||||||
|
padding-top: 55px;
|
||||||
|
}
|
||||||
|
}
|
10
app/assets/stylesheets/atoms/_media.scss
Normal file
10
app/assets/stylesheets/atoms/_media.scss
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
figure {
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
img,
|
||||||
|
picture {
|
||||||
|
margin: 0;
|
||||||
|
max-width: 100%;
|
||||||
|
}
|
||||||
|
|
75
app/assets/stylesheets/atoms/_pd-slant.scss
Normal file
75
app/assets/stylesheets/atoms/_pd-slant.scss
Normal file
@ -0,0 +1,75 @@
|
|||||||
|
// Slash Logo
|
||||||
|
|
||||||
|
.slash-left {
|
||||||
|
position: relative;
|
||||||
|
|
||||||
|
&:before {
|
||||||
|
content: "";
|
||||||
|
background-color: $accent-color-1;
|
||||||
|
width:3px;
|
||||||
|
display: block;
|
||||||
|
position: absolute;
|
||||||
|
top:0;
|
||||||
|
bottom: -1rem;
|
||||||
|
left:0;
|
||||||
|
transform: skewX(-16.5deg);
|
||||||
|
transform-origin: bottom;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// HTML/CSS only Slanted Border
|
||||||
|
|
||||||
|
$prftangle: 90deg - 73.5deg;
|
||||||
|
$prftangle-negative: 73.5deg - 90deg;
|
||||||
|
|
||||||
|
@mixin slantmix ($lmargin, $rmargin, $slantht) {
|
||||||
|
|
||||||
|
position: relative;
|
||||||
|
display:block;
|
||||||
|
z-index: 1;
|
||||||
|
height: $slantht;
|
||||||
|
min-width: tan($prftangle) + 1 / 3;
|
||||||
|
overflow: wrap;
|
||||||
|
display:inline-block;
|
||||||
|
|
||||||
|
&.slantright {
|
||||||
|
margin-right:tan($prftangle) + $rmargin;
|
||||||
|
&:after {
|
||||||
|
transform: skewX($prftangle-negative);
|
||||||
|
transform-origin: 0% 100%;
|
||||||
|
min-width:auto;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&.slantleft {
|
||||||
|
margin-left:tan($prftangle) + $lmargin;
|
||||||
|
&:before {
|
||||||
|
transform: skewX($prftangle-negative);
|
||||||
|
transform-origin: 10% 0%;
|
||||||
|
min-width:auto;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.slantleft:before,
|
||||||
|
.slantright:after {
|
||||||
|
background: inherit;
|
||||||
|
bottom: 0;
|
||||||
|
top:0;
|
||||||
|
content: '\00a0';
|
||||||
|
display: block;
|
||||||
|
position: absolute;
|
||||||
|
right: 0;
|
||||||
|
left:0;
|
||||||
|
z-index: -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.slantleft:before {
|
||||||
|
right: 50%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.slantright:after {
|
||||||
|
left: 50%;
|
||||||
|
}
|
78
app/assets/stylesheets/atoms/_typography.scss
Normal file
78
app/assets/stylesheets/atoms/_typography.scss
Normal file
@ -0,0 +1,78 @@
|
|||||||
|
body {
|
||||||
|
color: $base-font-color;
|
||||||
|
font-family: $primary-font-face;
|
||||||
|
font-size: 1rem;
|
||||||
|
line-height: $base-line-height;
|
||||||
|
font-weight:300;
|
||||||
|
color: $primary-color;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hidden {
|
||||||
|
display: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
h1, h2, h3,
|
||||||
|
h4, h5, h6 {
|
||||||
|
font-family: $heading-font-face;
|
||||||
|
line-height: $heading-line-height;
|
||||||
|
margin: 0 0 $small-spacing;
|
||||||
|
color: $black;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
h1 { font-size: modular-scale(6); }
|
||||||
|
h2 { font-size: modular-scale(5); }
|
||||||
|
h3 { font-size: modular-scale(4); }
|
||||||
|
h4 { font-size: modular-scale(3); }
|
||||||
|
h5 { font-size: modular-scale(2); }
|
||||||
|
h6 { font-size: modular-scale(1); }
|
||||||
|
|
||||||
|
p { margin: 0 0 $small-spacing; }
|
||||||
|
|
||||||
|
a {
|
||||||
|
color: $primary-color;
|
||||||
|
transition: color $base-duration $base-timing;
|
||||||
|
|
||||||
|
&:active,
|
||||||
|
&:focus,
|
||||||
|
&:hover {
|
||||||
|
color: lighten($primary-color, 25%);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
hr {
|
||||||
|
border-bottom: $base-border;
|
||||||
|
border-left: 0;
|
||||||
|
border-right: 0;
|
||||||
|
border-top: 0;
|
||||||
|
margin: $base-spacing 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
// .prft-heading
|
||||||
|
h1 {
|
||||||
|
text-transform: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.question-text {
|
||||||
|
margin-bottom: 1.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
// .prft-heading,
|
||||||
|
h1,
|
||||||
|
.question-text {
|
||||||
|
font-size: 6vw;
|
||||||
|
font-weight: 100;
|
||||||
|
}
|
||||||
|
|
||||||
|
h1 > a {
|
||||||
|
font-size: 1rem;
|
||||||
|
font-weight: 300;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media screen and (min-width: $screen-sm) {
|
||||||
|
// .prft-heading,
|
||||||
|
h1,
|
||||||
|
.question-text {
|
||||||
|
font-size: 2.45rem;
|
||||||
|
}
|
||||||
|
}
|
@ -1,4 +0,0 @@
|
|||||||
# autoprefixer browsers list
|
|
||||||
> 1%
|
|
||||||
last 2 versions
|
|
||||||
IE > 8
|
|
28
app/assets/stylesheets/core/_animations.scss
Normal file
28
app/assets/stylesheets/core/_animations.scss
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
@keyframes success-fadeout {
|
||||||
|
0% {
|
||||||
|
max-height: 40px;
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
85% {
|
||||||
|
margin-bottom: .5rem;
|
||||||
|
max-height: 40px;
|
||||||
|
opacity: 0;
|
||||||
|
padding: .5rem 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
96% {
|
||||||
|
margin-bottom: 0;
|
||||||
|
max-height: 0;
|
||||||
|
opacity: 0;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
100% {
|
||||||
|
height: 0;
|
||||||
|
left: -10px;
|
||||||
|
position: absolute;
|
||||||
|
top: -10px;
|
||||||
|
width: 0;
|
||||||
|
}
|
||||||
|
}
|
163
app/assets/stylesheets/core/_fonts.scss
Normal file
163
app/assets/stylesheets/core/_fonts.scss
Normal file
@ -0,0 +1,163 @@
|
|||||||
|
//HALISR
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: 'HalisR';
|
||||||
|
src:local('Halis R Thin'),
|
||||||
|
font_url('HalisR-Thin.woff2') format('woff2'),
|
||||||
|
font_url('HalisR-Thin.woff') format('woff'),
|
||||||
|
font_url('HalisR-Thin.otf') format('opentype');
|
||||||
|
font-weight:100;
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: 'HalisR';
|
||||||
|
src:local('Halis R Light'),
|
||||||
|
font_url('HalisR-Light.woff2') format('woff2'),
|
||||||
|
font_url('HalisR-Light.woff') format('woff'),
|
||||||
|
font_url('HalisR-Light.otf') format('opentype');
|
||||||
|
font-weight:200;
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: 'HalisR';
|
||||||
|
src:local('Halis R Book'),
|
||||||
|
font_url('HalisR-Book.woff2') format('woff2'),
|
||||||
|
font_url('HalisR-Book.woff') format('woff'),
|
||||||
|
font_url('HalisR-Book.otf') format('opentype');
|
||||||
|
font-weight:300;
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: 'HalisR';
|
||||||
|
src:local('Halis R Regular'),
|
||||||
|
font_url('HalisR-Regular.woff2') format('woff2'),
|
||||||
|
font_url('HalisR-Regular.woff') format('woff'),
|
||||||
|
font_url('HalisR-Regular.otf') format('opentype');
|
||||||
|
font-weight:500;
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: 'HalisR';
|
||||||
|
src:local('Halis R Medium'),
|
||||||
|
font_url('HalisR-Medium.woff2') format('woff2'),
|
||||||
|
font_url('HalisR-Medium.woff') format('woff'),
|
||||||
|
font_url('HalisR-Medium.otf') format('opentype');
|
||||||
|
font-weight:600;
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: 'HalisR';
|
||||||
|
src:local('Halis R Bold'),
|
||||||
|
font_url('HalisR-Bold.woff2') format('woff2'),
|
||||||
|
font_url('HalisR-Bold.woff') format('woff'),
|
||||||
|
font_url('HalisR-Bold.otf') format('opentype');
|
||||||
|
font-weight:700;
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: 'HalisR';
|
||||||
|
src:local('Halis R Black'),
|
||||||
|
font_url('HalisR-Black.woff2') format('woff2'),
|
||||||
|
font_url('HalisR-Black.woff') format('woff'),
|
||||||
|
font_url('HalisR-Black.otf') format('opentype');
|
||||||
|
font-weight:900;
|
||||||
|
}
|
||||||
|
|
||||||
|
//LATO
|
||||||
|
|
||||||
|
//regular
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: 'Lato';
|
||||||
|
src:local('Lato Hairline'),
|
||||||
|
font_url('Lato-Hairline.woff2') format('woff2'),
|
||||||
|
font_url('Lato-Hairline.woff') format('woff'),
|
||||||
|
font_url('Lato-Hairline.ttf') format('truetype');
|
||||||
|
font-weight:100;
|
||||||
|
}
|
||||||
|
@font-face {
|
||||||
|
font-family: 'Lato';
|
||||||
|
src:local('Lato Light'),
|
||||||
|
font_url('Lato-Light.woff2') format('woff2'),
|
||||||
|
font_url('Lato-Light.woff') format('woff'),
|
||||||
|
font_url('Lato-Light.ttf') format('truetype');
|
||||||
|
font-weight:300;
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: 'Lato';
|
||||||
|
src:local('Lato Regular'),
|
||||||
|
font_url('Lato-Regular.woff2') format('woff2'),
|
||||||
|
font_url('Lato-Regular.woff') format('woff'),
|
||||||
|
font_url('Lato-Regular.ttf') format('truetype');
|
||||||
|
font-weight:500;
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: 'Lato';
|
||||||
|
src:local('Lato Bold'),
|
||||||
|
font_url('Lato-Bold.woff2') format('woff2'),
|
||||||
|
font_url('Lato-Bold.woff') format('woff'),
|
||||||
|
font_url('Lato-Bold.ttf') format('truetype');
|
||||||
|
font-weight:700;
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: 'Lato';
|
||||||
|
src:local('Lato Black'),
|
||||||
|
font_url('Lato-Black.woff2') format('woff2'),
|
||||||
|
font_url('Lato-Black.woff') format('woff'),
|
||||||
|
font_url('Lato-Black.ttf') format('truetype');
|
||||||
|
font-weight:900;
|
||||||
|
}
|
||||||
|
|
||||||
|
//italicized
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: 'Lato';
|
||||||
|
src:local('Lato Hairline Italic'),
|
||||||
|
font_url('Lato-HairlineItalic.woff2') format('woff2'),
|
||||||
|
font_url('Lato-HairlineItalic.woff') format('woff'),
|
||||||
|
font_url('Lato-HairlineItalic.ttf') format('truetype');
|
||||||
|
font-weight:100;
|
||||||
|
font-style: italic;
|
||||||
|
}
|
||||||
|
@font-face {
|
||||||
|
font-family: 'Lato';
|
||||||
|
src:local('Lato Light Italic'),
|
||||||
|
font_url('Lato-LightItalic.woff2') format('woff2'),
|
||||||
|
font_url('Lato-LightItalic.woff') format('woff'),
|
||||||
|
font_url('Lato-LightItalic.ttf') format('truetype');
|
||||||
|
font-weight:300;
|
||||||
|
font-style: italic;
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: 'Lato';
|
||||||
|
src:local('Lato Italic'),
|
||||||
|
font_url('Lato-Italic.woff2') format('woff2'),
|
||||||
|
font_url('Lato-Italic.woff') format('woff'),
|
||||||
|
font_url('Lato-Italic.ttf') format('truetype');
|
||||||
|
font-weight:500;
|
||||||
|
font-style: italic;
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: 'Lato';
|
||||||
|
src:local('Lato Bold Italic'),
|
||||||
|
font_url('Lato-BoldItalic.woff2') format('woff2'),
|
||||||
|
font_url('Lato-BoldItalic.woff') format('woff'),
|
||||||
|
font_url('Lato-BoldItalic.ttf') format('truetype');
|
||||||
|
font-weight:700;
|
||||||
|
font-style: italic;
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: 'Lato';
|
||||||
|
src:local('Lato Black Italic'),
|
||||||
|
font_url('Lato-BlackItalic.woff2') format('woff2'),
|
||||||
|
font_url('Lato-BlackItalic.woff') format('woff'),
|
||||||
|
font_url('Lato-BlackItalic.ttf') format('truetype');
|
||||||
|
font-weight:900;
|
||||||
|
font-style: italic;
|
||||||
|
}
|
948
app/assets/stylesheets/core/_variables.scss
Normal file
948
app/assets/stylesheets/core/_variables.scss
Normal file
@ -0,0 +1,948 @@
|
|||||||
|
$bootstrap-sass-asset-helper: false !default;
|
||||||
|
//
|
||||||
|
// Variables
|
||||||
|
// --------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
//== Colors
|
||||||
|
//
|
||||||
|
//## Gray and brand colors for use across Bootstrap.
|
||||||
|
|
||||||
|
$gray-base: #000 !default;
|
||||||
|
$gray-darker: lighten($gray-base, 13.5%) !default; // #222
|
||||||
|
$gray-dark: lighten($gray-base, 20%) !default; // #333
|
||||||
|
$gray: lighten($gray-base, 33.5%) !default; // #555
|
||||||
|
$gray-light: lighten($gray-base, 46.7%) !default; // #777
|
||||||
|
$gray-lighter: lighten($gray-base, 93.5%) !default; // #eee
|
||||||
|
|
||||||
|
$brand-primary: darken(#428bca, 6.5%) !default; // #337ab7
|
||||||
|
$brand-success: #5cb85c !default;
|
||||||
|
$brand-info: #5bc0de !default;
|
||||||
|
$brand-warning: #f0ad4e !default;
|
||||||
|
$brand-danger: #d9534f !default;
|
||||||
|
|
||||||
|
|
||||||
|
//== Scaffolding
|
||||||
|
//
|
||||||
|
//## Settings for some of the most global styles.
|
||||||
|
|
||||||
|
//** Background color for `<body>`.
|
||||||
|
$body-bg: #fff !default;
|
||||||
|
//** Global text color on `<body>`.
|
||||||
|
$text-color: $gray-dark !default;
|
||||||
|
|
||||||
|
//** Global textual link color.
|
||||||
|
$link-color: $brand-primary !default;
|
||||||
|
//** Link hover color set via `darken()` function.
|
||||||
|
$link-hover-color: darken($link-color, 15%) !default;
|
||||||
|
//** Link hover decoration.
|
||||||
|
$link-hover-decoration: underline !default;
|
||||||
|
|
||||||
|
|
||||||
|
//== Typography
|
||||||
|
//
|
||||||
|
//## Font, line-height, and color for body text, headings, and more.
|
||||||
|
|
||||||
|
$font-family-sans-serif: "Helvetica Neue", Helvetica, Arial, sans-serif !default;
|
||||||
|
$font-family-serif: Georgia, "Times New Roman", Times, serif !default;
|
||||||
|
//** Default monospace fonts for `<code>`, `<kbd>`, and `<pre>`.
|
||||||
|
$font-family-monospace: Menlo, Monaco, Consolas, "Courier New", monospace !default;
|
||||||
|
$font-family-base: $font-family-sans-serif !default;
|
||||||
|
|
||||||
|
$font-size-base: 14px !default;
|
||||||
|
$font-size-large: ceil(($font-size-base * 1.25)) !default; // ~18px
|
||||||
|
$font-size-small: ceil(($font-size-base * 0.85)) !default; // ~12px
|
||||||
|
|
||||||
|
$font-size-h1: floor(($font-size-base * 2.6)) !default; // ~36px
|
||||||
|
$font-size-h2: floor(($font-size-base * 2.15)) !default; // ~30px
|
||||||
|
$font-size-h3: ceil(($font-size-base * 1.7)) !default; // ~24px
|
||||||
|
$font-size-h4: ceil(($font-size-base * 1.25)) !default; // ~18px
|
||||||
|
$font-size-h5: $font-size-base !default;
|
||||||
|
$font-size-h6: ceil(($font-size-base * 0.85)) !default; // ~12px
|
||||||
|
|
||||||
|
//** Unit-less `line-height` for use in components like buttons.
|
||||||
|
$line-height-base: 1.428571429 !default; // 20/14
|
||||||
|
//** Computed "line-height" (`font-size` * `line-height`) for use with `margin`, `padding`, etc.
|
||||||
|
$line-height-computed: floor(($font-size-base * $line-height-base)) !default; // ~20px
|
||||||
|
|
||||||
|
//** By default, this inherits from the `<body>`.
|
||||||
|
$headings-font-family: inherit !default;
|
||||||
|
$headings-font-weight: 500 !default;
|
||||||
|
$headings-line-height: 1.1 !default;
|
||||||
|
$headings-color: inherit !default;
|
||||||
|
|
||||||
|
|
||||||
|
//== Iconography
|
||||||
|
//
|
||||||
|
//## Specify custom location and filename of the included Glyphicons icon font. Useful for those including Bootstrap via Bower.
|
||||||
|
|
||||||
|
//** Load fonts from this directory.
|
||||||
|
|
||||||
|
// [converter] If $bootstrap-sass-asset-helper if used, provide path relative to the assets load path.
|
||||||
|
// [converter] This is because some asset helpers, such as Sprockets, do not work with file-relative paths.
|
||||||
|
$icon-font-path: if($bootstrap-sass-asset-helper, "bootstrap/", "../fonts/bootstrap/") !default;
|
||||||
|
|
||||||
|
//** File name for all font files.
|
||||||
|
$icon-font-name: "glyphicons-halflings-regular" !default;
|
||||||
|
//** Element ID within SVG icon file.
|
||||||
|
$icon-font-svg-id: "glyphicons_halflingsregular" !default;
|
||||||
|
|
||||||
|
|
||||||
|
//== Components
|
||||||
|
//
|
||||||
|
//## Define common padding and border radius sizes and more. Values based on 14px text and 1.428 line-height (~20px to start).
|
||||||
|
|
||||||
|
$padding-base-vertical: 6px !default;
|
||||||
|
$padding-base-horizontal: 12px !default;
|
||||||
|
|
||||||
|
$padding-large-vertical: 10px !default;
|
||||||
|
$padding-large-horizontal: 16px !default;
|
||||||
|
|
||||||
|
$padding-small-vertical: 5px !default;
|
||||||
|
$padding-small-horizontal: 10px !default;
|
||||||
|
|
||||||
|
$padding-xs-vertical: 1px !default;
|
||||||
|
$padding-xs-horizontal: 5px !default;
|
||||||
|
|
||||||
|
$line-height-large: 1.3333333 !default; // extra decimals for Win 8.1 Chrome
|
||||||
|
$line-height-small: 1.5 !default;
|
||||||
|
|
||||||
|
$border-radius-base: 4px !default;
|
||||||
|
$border-radius-large: 6px !default;
|
||||||
|
$border-radius-small: 3px !default;
|
||||||
|
|
||||||
|
//** Global color for active items (e.g., navs or dropdowns).
|
||||||
|
$component-active-color: #fff !default;
|
||||||
|
//** Global background color for active items (e.g., navs or dropdowns).
|
||||||
|
$component-active-bg: $brand-primary !default;
|
||||||
|
|
||||||
|
//** Width of the `border` for generating carets that indicator dropdowns.
|
||||||
|
$caret-width-base: 4px !default;
|
||||||
|
//** Carets increase slightly in size for larger components.
|
||||||
|
$caret-width-large: 5px !default;
|
||||||
|
|
||||||
|
|
||||||
|
//== Tables
|
||||||
|
//
|
||||||
|
//## Customizes the `.table` component with basic values, each used across all table variations.
|
||||||
|
|
||||||
|
//** Padding for `<th>`s and `<td>`s.
|
||||||
|
$table-cell-padding: 8px !default;
|
||||||
|
//** Padding for cells in `.table-condensed`.
|
||||||
|
$table-condensed-cell-padding: 5px !default;
|
||||||
|
|
||||||
|
//** Default background color used for all tables.
|
||||||
|
$table-bg: transparent !default;
|
||||||
|
//** Background color used for `.table-striped`.
|
||||||
|
$table-bg-accent: #f9f9f9 !default;
|
||||||
|
//** Background color used for `.table-hover`.
|
||||||
|
$table-bg-hover: #f5f5f5 !default;
|
||||||
|
$table-bg-active: $table-bg-hover !default;
|
||||||
|
|
||||||
|
//** Border color for table and cell borders.
|
||||||
|
$table-border-color: #ddd !default;
|
||||||
|
|
||||||
|
|
||||||
|
//== Buttons
|
||||||
|
//
|
||||||
|
//## For each of Bootstrap's buttons, define text, background and border color.
|
||||||
|
|
||||||
|
$btn-font-weight: normal !default;
|
||||||
|
|
||||||
|
$btn-default-color: #333 !default;
|
||||||
|
$btn-default-bg: #fff !default;
|
||||||
|
$btn-default-border: #ccc !default;
|
||||||
|
|
||||||
|
$btn-primary-color: #fff !default;
|
||||||
|
$btn-primary-bg: $brand-primary !default;
|
||||||
|
$btn-primary-border: darken($btn-primary-bg, 5%) !default;
|
||||||
|
|
||||||
|
$btn-success-color: #fff !default;
|
||||||
|
$btn-success-bg: $brand-success !default;
|
||||||
|
$btn-success-border: darken($btn-success-bg, 5%) !default;
|
||||||
|
|
||||||
|
$btn-info-color: #fff !default;
|
||||||
|
$btn-info-bg: $brand-info !default;
|
||||||
|
$btn-info-border: darken($btn-info-bg, 5%) !default;
|
||||||
|
|
||||||
|
$btn-warning-color: #fff !default;
|
||||||
|
$btn-warning-bg: $brand-warning !default;
|
||||||
|
$btn-warning-border: darken($btn-warning-bg, 5%) !default;
|
||||||
|
|
||||||
|
$btn-danger-color: #fff !default;
|
||||||
|
$btn-danger-bg: $brand-danger !default;
|
||||||
|
$btn-danger-border: darken($btn-danger-bg, 5%) !default;
|
||||||
|
|
||||||
|
$btn-link-disabled-color: $gray-light !default;
|
||||||
|
|
||||||
|
// Allows for customizing button radius independently from global border radius
|
||||||
|
$btn-border-radius-base: $border-radius-base !default;
|
||||||
|
$btn-border-radius-large: $border-radius-large !default;
|
||||||
|
$btn-border-radius-small: $border-radius-small !default;
|
||||||
|
|
||||||
|
|
||||||
|
//== Forms
|
||||||
|
//
|
||||||
|
//##
|
||||||
|
|
||||||
|
//** `<input>` background color
|
||||||
|
$input-bg: #fff !default;
|
||||||
|
//** `<input disabled>` background color
|
||||||
|
$input-bg-disabled: $gray-lighter !default;
|
||||||
|
|
||||||
|
//** Text color for `<input>`s
|
||||||
|
$input-color: $gray !default;
|
||||||
|
//** `<input>` border color
|
||||||
|
$input-border: #ccc !default;
|
||||||
|
|
||||||
|
// TODO: Rename `$input-border-radius` to `$input-border-radius-base` in v4
|
||||||
|
//** Default `.form-control` border radius
|
||||||
|
// This has no effect on `<select>`s in some browsers, due to the limited stylability of `<select>`s in CSS.
|
||||||
|
$input-border-radius: $border-radius-base !default;
|
||||||
|
//** Large `.form-control` border radius
|
||||||
|
$input-border-radius-large: $border-radius-large !default;
|
||||||
|
//** Small `.form-control` border radius
|
||||||
|
$input-border-radius-small: $border-radius-small !default;
|
||||||
|
|
||||||
|
//** Border color for inputs on focus
|
||||||
|
$input-border-focus: #66afe9 !default;
|
||||||
|
|
||||||
|
//** Placeholder text color
|
||||||
|
$input-color-placeholder: #999 !default;
|
||||||
|
|
||||||
|
//** Default `.form-control` height
|
||||||
|
$input-height-base: ($line-height-computed + ($padding-base-vertical * 2) + 2) !default;
|
||||||
|
//** Large `.form-control` height
|
||||||
|
$input-height-large: (ceil($font-size-large * $line-height-large) + ($padding-large-vertical * 2) + 2) !default;
|
||||||
|
//** Small `.form-control` height
|
||||||
|
$input-height-small: (floor($font-size-small * $line-height-small) + ($padding-small-vertical * 2) + 2) !default;
|
||||||
|
|
||||||
|
//** `.form-group` margin
|
||||||
|
$form-group-margin-bottom: 15px !default;
|
||||||
|
|
||||||
|
$legend-color: $gray-dark !default;
|
||||||
|
$legend-border-color: #e5e5e5 !default;
|
||||||
|
|
||||||
|
//** Background color for textual input addons
|
||||||
|
$input-group-addon-bg: $gray-lighter !default;
|
||||||
|
//** Border color for textual input addons
|
||||||
|
$input-group-addon-border-color: $input-border !default;
|
||||||
|
|
||||||
|
//** Disabled cursor for form controls and buttons.
|
||||||
|
$cursor-disabled: not-allowed !default;
|
||||||
|
|
||||||
|
|
||||||
|
//== Dropdowns
|
||||||
|
//
|
||||||
|
//## Dropdown menu container and contents.
|
||||||
|
|
||||||
|
//** Background for the dropdown menu.
|
||||||
|
$dropdown-bg: #fff !default;
|
||||||
|
//** Dropdown menu `border-color`.
|
||||||
|
$dropdown-border: rgba(0,0,0,.15) !default;
|
||||||
|
//** Dropdown menu `border-color` **for IE8**.
|
||||||
|
$dropdown-fallback-border: #ccc !default;
|
||||||
|
//** Divider color for between dropdown items.
|
||||||
|
$dropdown-divider-bg: #e5e5e5 !default;
|
||||||
|
|
||||||
|
//** Dropdown link text color.
|
||||||
|
$dropdown-link-color: $gray-dark !default;
|
||||||
|
//** Hover color for dropdown links.
|
||||||
|
$dropdown-link-hover-color: darken($gray-dark, 5%) !default;
|
||||||
|
//** Hover background for dropdown links.
|
||||||
|
$dropdown-link-hover-bg: #f5f5f5 !default;
|
||||||
|
|
||||||
|
//** Active dropdown menu item text color.
|
||||||
|
$dropdown-link-active-color: $component-active-color !default;
|
||||||
|
//** Active dropdown menu item background color.
|
||||||
|
$dropdown-link-active-bg: $component-active-bg !default;
|
||||||
|
|
||||||
|
//** Disabled dropdown menu item background color.
|
||||||
|
$dropdown-link-disabled-color: $gray-light !default;
|
||||||
|
|
||||||
|
//** Text color for headers within dropdown menus.
|
||||||
|
$dropdown-header-color: $gray-light !default;
|
||||||
|
|
||||||
|
//** Deprecated `$dropdown-caret-color` as of v3.1.0
|
||||||
|
$dropdown-caret-color: #000 !default;
|
||||||
|
|
||||||
|
|
||||||
|
//-- Z-index master list
|
||||||
|
//
|
||||||
|
// Warning: Avoid customizing these values. They're used for a bird's eye view
|
||||||
|
// of components dependent on the z-axis and are designed to all work together.
|
||||||
|
//
|
||||||
|
// Note: These variables are not generated into the Customizer.
|
||||||
|
|
||||||
|
$zindex-navbar: 1000 !default;
|
||||||
|
$zindex-dropdown: 1000 !default;
|
||||||
|
$zindex-popover: 1060 !default;
|
||||||
|
$zindex-tooltip: 1070 !default;
|
||||||
|
$zindex-navbar-fixed: 1030 !default;
|
||||||
|
$zindex-modal-background: 1040 !default;
|
||||||
|
$zindex-modal: 1050 !default;
|
||||||
|
|
||||||
|
|
||||||
|
//== Media queries breakpoints
|
||||||
|
//
|
||||||
|
//## Define the breakpoints at which your layout will change, adapting to different screen sizes.
|
||||||
|
|
||||||
|
// Extra small screen / phone
|
||||||
|
//** Deprecated `$screen-xs` as of v3.0.1
|
||||||
|
$screen-xs: 480px !default;
|
||||||
|
//** Deprecated `$screen-xs-min` as of v3.2.0
|
||||||
|
$screen-xs-min: $screen-xs !default;
|
||||||
|
//** Deprecated `$screen-phone` as of v3.0.1
|
||||||
|
$screen-phone: $screen-xs-min !default;
|
||||||
|
|
||||||
|
// Small screen / tablet
|
||||||
|
//** Deprecated `$screen-sm` as of v3.0.1
|
||||||
|
$screen-sm: 768px !default;
|
||||||
|
$screen-sm-min: $screen-sm !default;
|
||||||
|
//** Deprecated `$screen-tablet` as of v3.0.1
|
||||||
|
$screen-tablet: $screen-sm-min !default;
|
||||||
|
|
||||||
|
// Medium screen / desktop
|
||||||
|
//** Deprecated `$screen-md` as of v3.0.1
|
||||||
|
$screen-md: 992px !default;
|
||||||
|
$screen-md-min: $screen-md !default;
|
||||||
|
//** Deprecated `$screen-desktop` as of v3.0.1
|
||||||
|
$screen-desktop: $screen-md-min !default;
|
||||||
|
|
||||||
|
// Large screen / wide desktop
|
||||||
|
//** Deprecated `$screen-lg` as of v3.0.1
|
||||||
|
$screen-lg: 1200px !default;
|
||||||
|
$screen-lg-min: $screen-lg !default;
|
||||||
|
//** Deprecated `$screen-lg-desktop` as of v3.0.1
|
||||||
|
$screen-lg-desktop: $screen-lg-min !default;
|
||||||
|
|
||||||
|
// So media queries don't overlap when required, provide a maximum
|
||||||
|
$screen-xs-max: ($screen-sm-min - 1) !default;
|
||||||
|
$screen-sm-max: ($screen-md-min - 1) !default;
|
||||||
|
$screen-md-max: ($screen-lg-min - 1) !default;
|
||||||
|
|
||||||
|
|
||||||
|
//== Grid system
|
||||||
|
//
|
||||||
|
//## Define your custom responsive grid.
|
||||||
|
|
||||||
|
//** Number of columns in the grid.
|
||||||
|
$grid-columns: 12 !default;
|
||||||
|
//** Padding between columns. Gets divided in half for the left and right.
|
||||||
|
$grid-gutter-width: 30px !default;
|
||||||
|
// Navbar collapse
|
||||||
|
//** Point at which the navbar becomes uncollapsed.
|
||||||
|
$grid-float-breakpoint: $screen-sm-min !default;
|
||||||
|
//** Point at which the navbar begins collapsing.
|
||||||
|
$grid-float-breakpoint-max: ($grid-float-breakpoint - 1) !default;
|
||||||
|
|
||||||
|
|
||||||
|
//== Container sizes
|
||||||
|
//
|
||||||
|
//## Define the maximum width of `.container` for different screen sizes.
|
||||||
|
|
||||||
|
// Small screen / tablet
|
||||||
|
$container-tablet: (720px + $grid-gutter-width) !default;
|
||||||
|
//** For `$screen-sm-min` and up.
|
||||||
|
$container-sm: $container-tablet !default;
|
||||||
|
|
||||||
|
// Medium screen / desktop
|
||||||
|
$container-desktop: (940px + $grid-gutter-width) !default;
|
||||||
|
//** For `$screen-md-min` and up.
|
||||||
|
$container-md: $container-desktop !default;
|
||||||
|
|
||||||
|
// Large screen / wide desktop
|
||||||
|
$container-large-desktop: (1140px + $grid-gutter-width) !default;
|
||||||
|
//** For `$screen-lg-min` and up.
|
||||||
|
$container-lg: $container-large-desktop !default;
|
||||||
|
|
||||||
|
|
||||||
|
//== Navbar
|
||||||
|
//
|
||||||
|
//##
|
||||||
|
|
||||||
|
// Basics of a navbar
|
||||||
|
$navbar-height: 50px !default;
|
||||||
|
$navbar-margin-bottom: $line-height-computed !default;
|
||||||
|
$navbar-border-radius: $border-radius-base !default;
|
||||||
|
$navbar-padding-horizontal: floor(($grid-gutter-width / 2)) !default;
|
||||||
|
$navbar-padding-vertical: (($navbar-height - $line-height-computed) / 2) !default;
|
||||||
|
$navbar-collapse-max-height: 340px !default;
|
||||||
|
|
||||||
|
$navbar-default-color: #777 !default;
|
||||||
|
$navbar-default-bg: #f8f8f8 !default;
|
||||||
|
$navbar-default-border: darken($navbar-default-bg, 6.5%) !default;
|
||||||
|
|
||||||
|
// Navbar links
|
||||||
|
$navbar-default-link-color: #777 !default;
|
||||||
|
$navbar-default-link-hover-color: #333 !default;
|
||||||
|
$navbar-default-link-hover-bg: transparent !default;
|
||||||
|
$navbar-default-link-active-color: #555 !default;
|
||||||
|
$navbar-default-link-active-bg: darken($navbar-default-bg, 6.5%) !default;
|
||||||
|
$navbar-default-link-disabled-color: #ccc !default;
|
||||||
|
$navbar-default-link-disabled-bg: transparent !default;
|
||||||
|
|
||||||
|
// Navbar brand label
|
||||||
|
$navbar-default-brand-color: $navbar-default-link-color !default;
|
||||||
|
$navbar-default-brand-hover-color: darken($navbar-default-brand-color, 10%) !default;
|
||||||
|
$navbar-default-brand-hover-bg: transparent !default;
|
||||||
|
|
||||||
|
// Navbar toggle
|
||||||
|
$navbar-default-toggle-hover-bg: #ddd !default;
|
||||||
|
$navbar-default-toggle-icon-bar-bg: #888 !default;
|
||||||
|
$navbar-default-toggle-border-color: #ddd !default;
|
||||||
|
|
||||||
|
|
||||||
|
//=== Inverted navbar
|
||||||
|
// Reset inverted navbar basics
|
||||||
|
$navbar-inverse-color: lighten($gray-light, 15%) !default;
|
||||||
|
$navbar-inverse-bg: #222 !default;
|
||||||
|
$navbar-inverse-border: darken($navbar-inverse-bg, 10%) !default;
|
||||||
|
|
||||||
|
// Inverted navbar links
|
||||||
|
$navbar-inverse-link-color: lighten($gray-light, 15%) !default;
|
||||||
|
$navbar-inverse-link-hover-color: #fff !default;
|
||||||
|
$navbar-inverse-link-hover-bg: transparent !default;
|
||||||
|
$navbar-inverse-link-active-color: $navbar-inverse-link-hover-color !default;
|
||||||
|
$navbar-inverse-link-active-bg: darken($navbar-inverse-bg, 10%) !default;
|
||||||
|
$navbar-inverse-link-disabled-color: #444 !default;
|
||||||
|
$navbar-inverse-link-disabled-bg: transparent !default;
|
||||||
|
|
||||||
|
// Inverted navbar brand label
|
||||||
|
$navbar-inverse-brand-color: $navbar-inverse-link-color !default;
|
||||||
|
$navbar-inverse-brand-hover-color: #fff !default;
|
||||||
|
$navbar-inverse-brand-hover-bg: transparent !default;
|
||||||
|
|
||||||
|
// Inverted navbar toggle
|
||||||
|
$navbar-inverse-toggle-hover-bg: #333 !default;
|
||||||
|
$navbar-inverse-toggle-icon-bar-bg: #fff !default;
|
||||||
|
$navbar-inverse-toggle-border-color: #333 !default;
|
||||||
|
|
||||||
|
|
||||||
|
//== Navs
|
||||||
|
//
|
||||||
|
//##
|
||||||
|
|
||||||
|
//=== Shared nav styles
|
||||||
|
$nav-link-padding: 10px 15px !default;
|
||||||
|
$nav-link-hover-bg: $gray-lighter !default;
|
||||||
|
|
||||||
|
$nav-disabled-link-color: $gray-light !default;
|
||||||
|
$nav-disabled-link-hover-color: $gray-light !default;
|
||||||
|
|
||||||
|
//== Tabs
|
||||||
|
$nav-tabs-border-color: #ddd !default;
|
||||||
|
|
||||||
|
$nav-tabs-link-hover-border-color: $gray-lighter !default;
|
||||||
|
|
||||||
|
$nav-tabs-active-link-hover-bg: $body-bg !default;
|
||||||
|
$nav-tabs-active-link-hover-color: $gray !default;
|
||||||
|
$nav-tabs-active-link-hover-border-color: #ddd !default;
|
||||||
|
|
||||||
|
$nav-tabs-justified-link-border-color: #ddd !default;
|
||||||
|
$nav-tabs-justified-active-link-border-color: $body-bg !default;
|
||||||
|
|
||||||
|
//== Pills
|
||||||
|
$nav-pills-border-radius: $border-radius-base !default;
|
||||||
|
$nav-pills-active-link-hover-bg: $component-active-bg !default;
|
||||||
|
$nav-pills-active-link-hover-color: $component-active-color !default;
|
||||||
|
|
||||||
|
|
||||||
|
//== Pagination
|
||||||
|
//
|
||||||
|
//##
|
||||||
|
|
||||||
|
$pagination-color: $link-color !default;
|
||||||
|
$pagination-bg: #fff !default;
|
||||||
|
$pagination-border: #ddd !default;
|
||||||
|
|
||||||
|
$pagination-hover-color: $link-hover-color !default;
|
||||||
|
$pagination-hover-bg: $gray-lighter !default;
|
||||||
|
$pagination-hover-border: #ddd !default;
|
||||||
|
|
||||||
|
$pagination-active-color: #fff !default;
|
||||||
|
$pagination-active-bg: $brand-primary !default;
|
||||||
|
$pagination-active-border: $brand-primary !default;
|
||||||
|
|
||||||
|
$pagination-disabled-color: $gray-light !default;
|
||||||
|
$pagination-disabled-bg: #fff !default;
|
||||||
|
$pagination-disabled-border: #ddd !default;
|
||||||
|
|
||||||
|
|
||||||
|
//== Pager
|
||||||
|
//
|
||||||
|
//##
|
||||||
|
|
||||||
|
$pager-bg: $pagination-bg !default;
|
||||||
|
$pager-border: $pagination-border !default;
|
||||||
|
$pager-border-radius: 15px !default;
|
||||||
|
|
||||||
|
$pager-hover-bg: $pagination-hover-bg !default;
|
||||||
|
|
||||||
|
$pager-active-bg: $pagination-active-bg !default;
|
||||||
|
$pager-active-color: $pagination-active-color !default;
|
||||||
|
|
||||||
|
$pager-disabled-color: $pagination-disabled-color !default;
|
||||||
|
|
||||||
|
|
||||||
|
//== Jumbotron
|
||||||
|
//
|
||||||
|
//##
|
||||||
|
|
||||||
|
$jumbotron-padding: 30px !default;
|
||||||
|
$jumbotron-color: inherit !default;
|
||||||
|
$jumbotron-bg: $gray-lighter !default;
|
||||||
|
$jumbotron-heading-color: inherit !default;
|
||||||
|
$jumbotron-font-size: ceil(($font-size-base * 1.5)) !default;
|
||||||
|
$jumbotron-heading-font-size: ceil(($font-size-base * 4.5)) !default;
|
||||||
|
|
||||||
|
|
||||||
|
//== Form states and alerts
|
||||||
|
//
|
||||||
|
//## Define colors for form feedback states and, by default, alerts.
|
||||||
|
|
||||||
|
$state-success-text: #3c763d !default;
|
||||||
|
$state-success-bg: #dff0d8 !default;
|
||||||
|
$state-success-border: darken(adjust-hue($state-success-bg, -10), 5%) !default;
|
||||||
|
|
||||||
|
$state-info-text: #31708f !default;
|
||||||
|
$state-info-bg: #d9edf7 !default;
|
||||||
|
$state-info-border: darken(adjust-hue($state-info-bg, -10), 7%) !default;
|
||||||
|
|
||||||
|
$state-warning-text: #8a6d3b !default;
|
||||||
|
$state-warning-bg: #fcf8e3 !default;
|
||||||
|
$state-warning-border: darken(adjust-hue($state-warning-bg, -10), 5%) !default;
|
||||||
|
|
||||||
|
$state-danger-text: #a94442 !default;
|
||||||
|
$state-danger-bg: #f2dede !default;
|
||||||
|
$state-danger-border: darken(adjust-hue($state-danger-bg, -10), 5%) !default;
|
||||||
|
|
||||||
|
|
||||||
|
//== Tooltips
|
||||||
|
//
|
||||||
|
//##
|
||||||
|
|
||||||
|
//** Tooltip max width
|
||||||
|
$tooltip-max-width: 200px !default;
|
||||||
|
//** Tooltip text color
|
||||||
|
$tooltip-color: #fff !default;
|
||||||
|
//** Tooltip background color
|
||||||
|
$tooltip-bg: #000 !default;
|
||||||
|
$tooltip-opacity: .9 !default;
|
||||||
|
|
||||||
|
//** Tooltip arrow width
|
||||||
|
$tooltip-arrow-width: 5px !default;
|
||||||
|
//** Tooltip arrow color
|
||||||
|
$tooltip-arrow-color: $tooltip-bg !default;
|
||||||
|
|
||||||
|
|
||||||
|
//== Popovers
|
||||||
|
//
|
||||||
|
//##
|
||||||
|
|
||||||
|
//** Popover body background color
|
||||||
|
$popover-bg: #fff !default;
|
||||||
|
//** Popover maximum width
|
||||||
|
$popover-max-width: 276px !default;
|
||||||
|
//** Popover border color
|
||||||
|
$popover-border-color: rgba(0,0,0,.2) !default;
|
||||||
|
//** Popover fallback border color
|
||||||
|
$popover-fallback-border-color: #ccc !default;
|
||||||
|
|
||||||
|
//** Popover title background color
|
||||||
|
$popover-title-bg: darken($popover-bg, 3%) !default;
|
||||||
|
|
||||||
|
//** Popover arrow width
|
||||||
|
$popover-arrow-width: 10px !default;
|
||||||
|
//** Popover arrow color
|
||||||
|
$popover-arrow-color: $popover-bg !default;
|
||||||
|
|
||||||
|
//** Popover outer arrow width
|
||||||
|
$popover-arrow-outer-width: ($popover-arrow-width + 1) !default;
|
||||||
|
//** Popover outer arrow color
|
||||||
|
$popover-arrow-outer-color: fade_in($popover-border-color, 0.05) !default;
|
||||||
|
//** Popover outer arrow fallback color
|
||||||
|
$popover-arrow-outer-fallback-color: darken($popover-fallback-border-color, 20%) !default;
|
||||||
|
|
||||||
|
|
||||||
|
//== Labels
|
||||||
|
//
|
||||||
|
//##
|
||||||
|
|
||||||
|
//** Default label background color
|
||||||
|
$label-default-bg: $gray-light !default;
|
||||||
|
//** Primary label background color
|
||||||
|
$label-primary-bg: $brand-primary !default;
|
||||||
|
//** Success label background color
|
||||||
|
$label-success-bg: $brand-success !default;
|
||||||
|
//** Info label background color
|
||||||
|
$label-info-bg: $brand-info !default;
|
||||||
|
//** Warning label background color
|
||||||
|
$label-warning-bg: $brand-warning !default;
|
||||||
|
//** Danger label background color
|
||||||
|
$label-danger-bg: $brand-danger !default;
|
||||||
|
|
||||||
|
//** Default label text color
|
||||||
|
$label-color: #fff !default;
|
||||||
|
//** Default text color of a linked label
|
||||||
|
$label-link-hover-color: #fff !default;
|
||||||
|
|
||||||
|
|
||||||
|
//== Modals
|
||||||
|
//
|
||||||
|
//##
|
||||||
|
|
||||||
|
//** Padding applied to the modal body
|
||||||
|
$modal-inner-padding: 15px !default;
|
||||||
|
|
||||||
|
//** Padding applied to the modal title
|
||||||
|
$modal-title-padding: 15px !default;
|
||||||
|
//** Modal title line-height
|
||||||
|
$modal-title-line-height: $line-height-base !default;
|
||||||
|
|
||||||
|
//** Background color of modal content area
|
||||||
|
$modal-content-bg: #fff !default;
|
||||||
|
//** Modal content border color
|
||||||
|
$modal-content-border-color: rgba(0,0,0,.2) !default;
|
||||||
|
//** Modal content border color **for IE8**
|
||||||
|
$modal-content-fallback-border-color: #999 !default;
|
||||||
|
|
||||||
|
//** Modal backdrop background color
|
||||||
|
$modal-backdrop-bg: #000 !default;
|
||||||
|
//** Modal backdrop opacity
|
||||||
|
$modal-backdrop-opacity: .5 !default;
|
||||||
|
//** Modal header border color
|
||||||
|
$modal-header-border-color: #e5e5e5 !default;
|
||||||
|
//** Modal footer border color
|
||||||
|
$modal-footer-border-color: $modal-header-border-color !default;
|
||||||
|
|
||||||
|
$modal-lg: 900px !default;
|
||||||
|
$modal-md: 600px !default;
|
||||||
|
$modal-sm: 300px !default;
|
||||||
|
|
||||||
|
|
||||||
|
//== Alerts
|
||||||
|
//
|
||||||
|
//## Define alert colors, border radius, and padding.
|
||||||
|
|
||||||
|
$alert-padding: 15px !default;
|
||||||
|
$alert-border-radius: $border-radius-base !default;
|
||||||
|
$alert-link-font-weight: bold !default;
|
||||||
|
|
||||||
|
$alert-success-bg: $state-success-bg !default;
|
||||||
|
$alert-success-text: $state-success-text !default;
|
||||||
|
$alert-success-border: $state-success-border !default;
|
||||||
|
|
||||||
|
$alert-info-bg: $state-info-bg !default;
|
||||||
|
$alert-info-text: $state-info-text !default;
|
||||||
|
$alert-info-border: $state-info-border !default;
|
||||||
|
|
||||||
|
$alert-warning-bg: $state-warning-bg !default;
|
||||||
|
$alert-warning-text: $state-warning-text !default;
|
||||||
|
$alert-warning-border: $state-warning-border !default;
|
||||||
|
|
||||||
|
$alert-danger-bg: $state-danger-bg !default;
|
||||||
|
$alert-danger-text: $state-danger-text !default;
|
||||||
|
$alert-danger-border: $state-danger-border !default;
|
||||||
|
|
||||||
|
|
||||||
|
//== Progress bars
|
||||||
|
//
|
||||||
|
//##
|
||||||
|
|
||||||
|
//** Background color of the whole progress component
|
||||||
|
$progress-bg: #f5f5f5 !default;
|
||||||
|
//** Progress bar text color
|
||||||
|
$progress-bar-color: #fff !default;
|
||||||
|
//** Variable for setting rounded corners on progress bar.
|
||||||
|
$progress-border-radius: $border-radius-base !default;
|
||||||
|
|
||||||
|
//** Default progress bar color
|
||||||
|
$progress-bar-bg: $brand-primary !default;
|
||||||
|
//** Success progress bar color
|
||||||
|
$progress-bar-success-bg: $brand-success !default;
|
||||||
|
//** Warning progress bar color
|
||||||
|
$progress-bar-warning-bg: $brand-warning !default;
|
||||||
|
//** Danger progress bar color
|
||||||
|
$progress-bar-danger-bg: $brand-danger !default;
|
||||||
|
//** Info progress bar color
|
||||||
|
$progress-bar-info-bg: $brand-info !default;
|
||||||
|
|
||||||
|
|
||||||
|
//== List group
|
||||||
|
//
|
||||||
|
//##
|
||||||
|
|
||||||
|
//** Background color on `.list-group-item`
|
||||||
|
$list-group-bg: #fff !default;
|
||||||
|
//** `.list-group-item` border color
|
||||||
|
$list-group-border: #ddd !default;
|
||||||
|
//** List group border radius
|
||||||
|
$list-group-border-radius: $border-radius-base !default;
|
||||||
|
|
||||||
|
//** Background color of single list items on hover
|
||||||
|
$list-group-hover-bg: #f5f5f5 !default;
|
||||||
|
//** Text color of active list items
|
||||||
|
$list-group-active-color: $component-active-color !default;
|
||||||
|
//** Background color of active list items
|
||||||
|
$list-group-active-bg: $component-active-bg !default;
|
||||||
|
//** Border color of active list elements
|
||||||
|
$list-group-active-border: $list-group-active-bg !default;
|
||||||
|
//** Text color for content within active list items
|
||||||
|
$list-group-active-text-color: lighten($list-group-active-bg, 40%) !default;
|
||||||
|
|
||||||
|
//** Text color of disabled list items
|
||||||
|
$list-group-disabled-color: $gray-light !default;
|
||||||
|
//** Background color of disabled list items
|
||||||
|
$list-group-disabled-bg: $gray-lighter !default;
|
||||||
|
//** Text color for content within disabled list items
|
||||||
|
$list-group-disabled-text-color: $list-group-disabled-color !default;
|
||||||
|
|
||||||
|
$list-group-link-color: #555 !default;
|
||||||
|
$list-group-link-hover-color: $list-group-link-color !default;
|
||||||
|
$list-group-link-heading-color: #333 !default;
|
||||||
|
|
||||||
|
|
||||||
|
//== Panels
|
||||||
|
//
|
||||||
|
//##
|
||||||
|
|
||||||
|
$panel-bg: #fff !default;
|
||||||
|
$panel-body-padding: 15px !default;
|
||||||
|
$panel-heading-padding: 10px 15px !default;
|
||||||
|
$panel-footer-padding: $panel-heading-padding !default;
|
||||||
|
$panel-border-radius: $border-radius-base !default;
|
||||||
|
|
||||||
|
//** Border color for elements within panels
|
||||||
|
$panel-inner-border: #ddd !default;
|
||||||
|
$panel-footer-bg: #f5f5f5 !default;
|
||||||
|
|
||||||
|
$panel-default-text: $gray-dark !default;
|
||||||
|
$panel-default-border: #ddd !default;
|
||||||
|
$panel-default-heading-bg: #f5f5f5 !default;
|
||||||
|
|
||||||
|
$panel-primary-text: #fff !default;
|
||||||
|
$panel-primary-border: $brand-primary !default;
|
||||||
|
$panel-primary-heading-bg: $brand-primary !default;
|
||||||
|
|
||||||
|
$panel-success-text: $state-success-text !default;
|
||||||
|
$panel-success-border: $state-success-border !default;
|
||||||
|
$panel-success-heading-bg: $state-success-bg !default;
|
||||||
|
|
||||||
|
$panel-info-text: $state-info-text !default;
|
||||||
|
$panel-info-border: $state-info-border !default;
|
||||||
|
$panel-info-heading-bg: $state-info-bg !default;
|
||||||
|
|
||||||
|
$panel-warning-text: $state-warning-text !default;
|
||||||
|
$panel-warning-border: $state-warning-border !default;
|
||||||
|
$panel-warning-heading-bg: $state-warning-bg !default;
|
||||||
|
|
||||||
|
$panel-danger-text: $state-danger-text !default;
|
||||||
|
$panel-danger-border: $state-danger-border !default;
|
||||||
|
$panel-danger-heading-bg: $state-danger-bg !default;
|
||||||
|
|
||||||
|
|
||||||
|
//== Thumbnails
|
||||||
|
//
|
||||||
|
//##
|
||||||
|
|
||||||
|
//** Padding around the thumbnail image
|
||||||
|
$thumbnail-padding: 4px !default;
|
||||||
|
//** Thumbnail background color
|
||||||
|
$thumbnail-bg: $body-bg !default;
|
||||||
|
//** Thumbnail border color
|
||||||
|
$thumbnail-border: #ddd !default;
|
||||||
|
//** Thumbnail border radius
|
||||||
|
$thumbnail-border-radius: $border-radius-base !default;
|
||||||
|
|
||||||
|
//** Custom text color for thumbnail captions
|
||||||
|
$thumbnail-caption-color: $text-color !default;
|
||||||
|
//** Padding around the thumbnail caption
|
||||||
|
$thumbnail-caption-padding: 9px !default;
|
||||||
|
|
||||||
|
|
||||||
|
//== Wells
|
||||||
|
//
|
||||||
|
//##
|
||||||
|
|
||||||
|
$well-bg: #f5f5f5 !default;
|
||||||
|
$well-border: darken($well-bg, 7%) !default;
|
||||||
|
|
||||||
|
|
||||||
|
//== Badges
|
||||||
|
//
|
||||||
|
//##
|
||||||
|
|
||||||
|
$badge-color: #fff !default;
|
||||||
|
//** Linked badge text color on hover
|
||||||
|
$badge-link-hover-color: #fff !default;
|
||||||
|
$badge-bg: $gray-light !default;
|
||||||
|
|
||||||
|
//** Badge text color in active nav link
|
||||||
|
$badge-active-color: $link-color !default;
|
||||||
|
//** Badge background color in active nav link
|
||||||
|
$badge-active-bg: #fff !default;
|
||||||
|
|
||||||
|
$badge-font-weight: bold !default;
|
||||||
|
$badge-line-height: 1 !default;
|
||||||
|
$badge-border-radius: 10px !default;
|
||||||
|
|
||||||
|
|
||||||
|
//== Breadcrumbs
|
||||||
|
//
|
||||||
|
//##
|
||||||
|
|
||||||
|
$breadcrumb-padding-vertical: 8px !default;
|
||||||
|
$breadcrumb-padding-horizontal: 15px !default;
|
||||||
|
//** Breadcrumb background color
|
||||||
|
$breadcrumb-bg: #f5f5f5 !default;
|
||||||
|
//** Breadcrumb text color
|
||||||
|
$breadcrumb-color: #ccc !default;
|
||||||
|
//** Text color of current page in the breadcrumb
|
||||||
|
$breadcrumb-active-color: $gray-light !default;
|
||||||
|
//** Textual separator for between breadcrumb elements
|
||||||
|
$breadcrumb-separator: "/" !default;
|
||||||
|
|
||||||
|
|
||||||
|
//== Carousel
|
||||||
|
//
|
||||||
|
//##
|
||||||
|
|
||||||
|
$carousel-text-shadow: 0 1px 2px rgba(0,0,0,.6) !default;
|
||||||
|
|
||||||
|
$carousel-control-color: #fff !default;
|
||||||
|
$carousel-control-width: 15% !default;
|
||||||
|
$carousel-control-opacity: .5 !default;
|
||||||
|
$carousel-control-font-size: 20px !default;
|
||||||
|
|
||||||
|
$carousel-indicator-active-bg: #fff !default;
|
||||||
|
$carousel-indicator-border-color: #fff !default;
|
||||||
|
|
||||||
|
$carousel-caption-color: #fff !default;
|
||||||
|
|
||||||
|
|
||||||
|
//== Close
|
||||||
|
//
|
||||||
|
//##
|
||||||
|
|
||||||
|
$close-font-weight: bold !default;
|
||||||
|
$close-color: #000 !default;
|
||||||
|
$close-text-shadow: 0 1px 0 #fff !default;
|
||||||
|
|
||||||
|
|
||||||
|
//== Code
|
||||||
|
//
|
||||||
|
//##
|
||||||
|
|
||||||
|
$code-color: #c7254e !default;
|
||||||
|
$code-bg: #f9f2f4 !default;
|
||||||
|
|
||||||
|
$kbd-color: #fff !default;
|
||||||
|
$kbd-bg: #333 !default;
|
||||||
|
|
||||||
|
$pre-bg: #f5f5f5 !default;
|
||||||
|
$pre-color: $gray-dark !default;
|
||||||
|
$pre-border-color: #ccc !default;
|
||||||
|
$pre-scrollable-max-height: 340px !default;
|
||||||
|
|
||||||
|
|
||||||
|
//== Type
|
||||||
|
//
|
||||||
|
//##
|
||||||
|
|
||||||
|
//** Horizontal offset for forms and lists.
|
||||||
|
$component-offset-horizontal: 180px !default;
|
||||||
|
//** Text muted color
|
||||||
|
$text-muted: $gray-light !default;
|
||||||
|
//** Abbreviations and acronyms border color
|
||||||
|
$abbr-border-color: $gray-light !default;
|
||||||
|
//** Headings small color
|
||||||
|
$headings-small-color: $gray-light !default;
|
||||||
|
//** Blockquote small color
|
||||||
|
$blockquote-small-color: $gray-light !default;
|
||||||
|
//** Blockquote font size
|
||||||
|
$blockquote-font-size: ($font-size-base * 1.25) !default;
|
||||||
|
//** Blockquote border color
|
||||||
|
$blockquote-border-color: $gray-lighter !default;
|
||||||
|
//** Page header border color
|
||||||
|
$page-header-border-color: $gray-lighter !default;
|
||||||
|
//** Width of horizontal description list titles
|
||||||
|
$dl-horizontal-offset: $component-offset-horizontal !default;
|
||||||
|
//** Point at which .dl-horizontal becomes horizontal
|
||||||
|
$dl-horizontal-breakpoint: $grid-float-breakpoint !default;
|
||||||
|
//** Horizontal line color.
|
||||||
|
$hr-border: $gray-lighter !default;
|
||||||
|
|
||||||
|
// BITTERS VARIABLES
|
||||||
|
|
||||||
|
// Breakpoints
|
||||||
|
$medium-screen: 600px;
|
||||||
|
$large-screen: 900px;
|
||||||
|
|
||||||
|
// Typography
|
||||||
|
$base-font-family: $helvetica;
|
||||||
|
$heading-font-family: $base-font-family;
|
||||||
|
|
||||||
|
// Font Sizes
|
||||||
|
$base-font-size: 1em;
|
||||||
|
|
||||||
|
// Line height
|
||||||
|
$base-line-height: 1.5;
|
||||||
|
$heading-line-height: 1.2;
|
||||||
|
|
||||||
|
// Other Sizes
|
||||||
|
$base-border-radius: 0px;
|
||||||
|
$base-spacing: $base-line-height * 1em;
|
||||||
|
$small-spacing: $base-spacing / 2;
|
||||||
|
$base-z-index: 0;
|
||||||
|
|
||||||
|
// Colors
|
||||||
|
$blue: #1565c0;
|
||||||
|
$dark-gray: #333;
|
||||||
|
$medium-gray: #999;
|
||||||
|
$light-gray: #ddd;
|
||||||
|
|
||||||
|
// Font Colors
|
||||||
|
$base-font-color: $dark-gray;
|
||||||
|
$action-color: $blue;
|
||||||
|
|
||||||
|
// Border
|
||||||
|
$base-border-color: $light-gray;
|
||||||
|
$base-border: 1px solid $base-border-color;
|
||||||
|
|
||||||
|
// Background Colors
|
||||||
|
$base-background-color: #fff;
|
||||||
|
$secondary-background-color: tint($base-border-color, 75%);
|
||||||
|
|
||||||
|
// Forms
|
||||||
|
$form-box-shadow: inset 0 1px 3px rgba(#000, 0.06);
|
||||||
|
$form-box-shadow-focus: $form-box-shadow, 0 0 5px adjust-color($action-color, $lightness: -5%, $alpha: -0.3);
|
||||||
|
|
||||||
|
// Animations
|
||||||
|
$base-duration: 150ms;
|
||||||
|
$base-timing: ease;
|
||||||
|
|
||||||
|
// Perficient Digital Variables
|
||||||
|
$heading-font-face: 'HalisR', sans-serif;
|
||||||
|
$primary-font-face: 'Lato', sans-serif;
|
||||||
|
|
||||||
|
$black: #000000;
|
||||||
|
$primary-color: #202526; // Dark Gray
|
||||||
|
$secondary-color: lighten($primary-color, 31%); // Gray
|
||||||
|
$accent-color-1: #EF0734; // Perficient Digital Red
|
||||||
|
$accent-color-2: #FFF200; // Perficient Digital Yellow
|
||||||
|
$accent-color-3: #2AB68F; // Perficient Digital Green
|
||||||
|
$white: #FFFFFF;
|
||||||
|
|
||||||
|
$primary-padding:1.5rem 3rem 1rem;
|
||||||
|
|
||||||
|
// Breakpoints Minimum Resolution
|
||||||
|
$tablet: 48em; // tablet
|
||||||
|
$desktop: 64em; // desktop
|
||||||
|
|
||||||
|
// Bourbon Omega Reset
|
||||||
|
|
||||||
|
@mixin omega-reset($nth) {
|
||||||
|
&:nth-child(#{$nth}) { margin-right: flex-gutter(); }
|
||||||
|
&:nth-child(#{$nth}+1) { clear: none }
|
||||||
|
}
|
@ -1,15 +0,0 @@
|
|||||||
body {
|
|
||||||
display: flex;
|
|
||||||
flex-direction: column;
|
|
||||||
margin: 0;
|
|
||||||
padding: 0;
|
|
||||||
|
|
||||||
> {
|
|
||||||
& header,
|
|
||||||
& main,
|
|
||||||
& footer {
|
|
||||||
order: 2;
|
|
||||||
margin: $gutter $gutter 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,18 +0,0 @@
|
|||||||
.form-question {
|
|
||||||
|
|
||||||
textarea {
|
|
||||||
display: block;
|
|
||||||
margin-top: 1em;
|
|
||||||
border: 0;
|
|
||||||
border-bottom: 1px solid;
|
|
||||||
padding: 1em 0.5em;
|
|
||||||
width: 100%;
|
|
||||||
line-height: 1.5;
|
|
||||||
font-size: 1em;
|
|
||||||
box-sizing: border-box;
|
|
||||||
}
|
|
||||||
|
|
||||||
div {
|
|
||||||
margin: $gutter 0;
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,21 +0,0 @@
|
|||||||
header {
|
|
||||||
position: relative;
|
|
||||||
padding: 0.375em 0 0.375em 1.5em;
|
|
||||||
text-transform: uppercase;
|
|
||||||
line-height: 1;
|
|
||||||
font-size: 1.25em;
|
|
||||||
font-weight: bold;
|
|
||||||
|
|
||||||
&::before {
|
|
||||||
display: block;
|
|
||||||
position: absolute;
|
|
||||||
top: 0;
|
|
||||||
bottom: 0;
|
|
||||||
left: 0;
|
|
||||||
transform: skewX(-16.5deg);
|
|
||||||
background-color: $pd-red;
|
|
||||||
width: 3px;
|
|
||||||
content: "";
|
|
||||||
transform-origin: bottom;
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,7 +0,0 @@
|
|||||||
.progressbar {
|
|
||||||
order: 1;
|
|
||||||
margin: 0;
|
|
||||||
background-color: $turquoise;
|
|
||||||
padding: $gutter / 2 $gutter;
|
|
||||||
color: $white;
|
|
||||||
}
|
|
@ -1,14 +0,0 @@
|
|||||||
body {
|
|
||||||
@include primary-font;
|
|
||||||
font-size: 1em;
|
|
||||||
}
|
|
||||||
|
|
||||||
h1,
|
|
||||||
h2,
|
|
||||||
h3,
|
|
||||||
h4,
|
|
||||||
h5,
|
|
||||||
h6 {
|
|
||||||
@include heading-font;
|
|
||||||
margin: 0 0 $gutter;
|
|
||||||
}
|
|
@ -1,60 +1,47 @@
|
|||||||
// sass-lint:disable no-important
|
|
||||||
|
|
||||||
a {
|
a {
|
||||||
text-decoration: underline;
|
text-decoration: underline;
|
||||||
color: $success-color;
|
color: $success-color;
|
||||||
}
|
}
|
||||||
|
|
||||||
.email-container {
|
.email-container {
|
||||||
.email-heading {
|
.email-heading th {
|
||||||
th {
|
font-family: 'Lato', Helvetica Neue, Helvetica, Ariel, sans-serif;
|
||||||
font-family: 'Lato', Helvetica Neue, Helvetica, Ariel, sans-serif;
|
.prft-slash {
|
||||||
|
font-size: 100px;
|
||||||
.prft-slash {
|
font-weight: 200;
|
||||||
vertical-align: middle;
|
color: $success-color;
|
||||||
color: $success-color;
|
vertical-align: middle;
|
||||||
font-size: 100px;
|
}
|
||||||
font-weight: 200;
|
.email-title {
|
||||||
}
|
text-transform: uppercase;
|
||||||
|
font-weight: 700;
|
||||||
.email-title {
|
font-size:18px;
|
||||||
vertical-align: sub;
|
vertical-align: sub;
|
||||||
text-transform: uppercase;
|
|
||||||
font-size: 18px;
|
|
||||||
font-weight: 700;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
.email-body * {
|
||||||
.email-body {
|
font-family: 'Lato', Helvetica Neue, Helvetica, Ariel, sans-serif;
|
||||||
* {
|
font-size: 16px;
|
||||||
padding-bottom: 20px;
|
line-height: 1.5em;
|
||||||
line-height: 1.5em;
|
padding-bottom: 20px;
|
||||||
font-family: 'Lato', Helvetica Neue, Helvetica, Ariel, sans-serif;
|
font-weight:300;
|
||||||
font-size: 16px;
|
word-break: break-word;
|
||||||
font-weight: 300;
|
strong {
|
||||||
word-break: break-word;
|
font-weight:bold;
|
||||||
|
|
||||||
strong {
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.email-copyright {
|
.email-copyright {
|
||||||
vertical-align: bottom;
|
|
||||||
color: $dark-grey;
|
|
||||||
font-family: 'Lato', Helvetica Neue, Helvetica, Ariel, sans-serif;
|
font-family: 'Lato', Helvetica Neue, Helvetica, Ariel, sans-serif;
|
||||||
font-size: 10px;
|
font-size: 10px;
|
||||||
}
|
color: #909090;
|
||||||
|
vertical-align: bottom;
|
||||||
.email-logo {
|
}
|
||||||
|
.email-logo {
|
||||||
|
text-align: right;
|
||||||
vertical-align: bottom;
|
vertical-align: bottom;
|
||||||
text-align: right;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.email-bg {
|
.email-bg {
|
||||||
background: $accent-color-2 !important;
|
background:#fef035 !important;
|
||||||
background-color: $accent-color-2 !important;
|
background-color:#fef035 !important;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
$dark-grey: #909090;
|
|
||||||
|
|
||||||
// foundation overrides
|
// foundation overrides
|
||||||
$success-color: #ef0734;
|
|
||||||
|
$success-color: #EF0734;
|
||||||
$global-width: 600px;
|
$global-width: 600px;
|
||||||
$body-font-family: inherit;
|
$body-font-family: inherit;
|
||||||
$body-background: #fff;
|
$body-background: #ffffff;
|
||||||
|
@ -1,21 +1,18 @@
|
|||||||
@import '../settings/variables';
|
@import 'foundation-emails/scss/util/util',
|
||||||
|
'foundation-emails/scss/global',
|
||||||
|
|
||||||
@import 'foundation-emails/scss/util/util';
|
'foundation_global_overrides',
|
||||||
@import 'foundation-emails/scss/global';
|
|
||||||
|
|
||||||
@import 'foundation_global_overrides';
|
|
||||||
|
|
||||||
@import 'foundation-emails/scss/components/normalize';
|
|
||||||
@import 'foundation-emails/scss/grid/grid';
|
|
||||||
@import 'foundation-emails/scss/grid/block-grid';
|
|
||||||
@import 'foundation-emails/scss/components/alignment';
|
|
||||||
@import 'foundation-emails/scss/components/visibility';
|
|
||||||
@import 'foundation-emails/scss/components/typography';
|
|
||||||
@import 'foundation-emails/scss/components/button';
|
|
||||||
@import 'foundation-emails/scss/components/callout';
|
|
||||||
@import 'foundation-emails/scss/components/thumbnail';
|
|
||||||
@import 'foundation-emails/scss/components/menu';
|
|
||||||
@import 'foundation-emails/scss/components/outlook-first';
|
|
||||||
@import 'foundation-emails/scss/components/media-query';
|
|
||||||
|
|
||||||
|
'foundation-emails/scss/components/normalize',
|
||||||
|
'foundation-emails/scss/grid/grid',
|
||||||
|
'foundation-emails/scss/grid/block-grid',
|
||||||
|
'foundation-emails/scss/components/alignment',
|
||||||
|
'foundation-emails/scss/components/visibility',
|
||||||
|
'foundation-emails/scss/components/typography',
|
||||||
|
'foundation-emails/scss/components/button',
|
||||||
|
'foundation-emails/scss/components/callout',
|
||||||
|
'foundation-emails/scss/components/thumbnail',
|
||||||
|
'foundation-emails/scss/components/menu',
|
||||||
|
'foundation-emails/scss/components/outlook-first',
|
||||||
|
'foundation-emails/scss/components/media-query';
|
||||||
@import 'custom-mailer-styles';
|
@import 'custom-mailer-styles';
|
||||||
|
57
app/assets/stylesheets/molecules/_accordions.scss
Normal file
57
app/assets/stylesheets/molecules/_accordions.scss
Normal file
@ -0,0 +1,57 @@
|
|||||||
|
.accordion {
|
||||||
|
margin-bottom: 0.75em;
|
||||||
|
|
||||||
|
[type="checkbox"]:checked + label,
|
||||||
|
[type="checkbox"]:checked ~ label:after,
|
||||||
|
[type="checkbox"]:not(:checked) + label,
|
||||||
|
[type="checkbox"]:not(:checked) ~ label:after,
|
||||||
|
[type="radio"]:checked + label,
|
||||||
|
[type="radio"]:checked ~ label:after,
|
||||||
|
[type="radio"]:not(:checked) + label,
|
||||||
|
[type="radio"]:not(:checked) ~ label:after {
|
||||||
|
content: "";
|
||||||
|
border: 0;
|
||||||
|
background-color: transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
[type="checkbox"]:hover:not(:disabled) + label:before,
|
||||||
|
[type="radio"]:hover:not(:disabled) + label:before,
|
||||||
|
[type="radio"]:not(:checked) ~ label:before,
|
||||||
|
[type="checkbox"]:not(:checked) ~ label:before,
|
||||||
|
[type="radio"]:checked ~ label:before,
|
||||||
|
[type="checkbox"]:checked ~ label:before {
|
||||||
|
background-color: transparent;
|
||||||
|
border: 0;
|
||||||
|
content: "+";
|
||||||
|
font-size: 1.3em;
|
||||||
|
line-height: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
[type="checkbox"]:hover:checked + label:before,
|
||||||
|
[type="radio"]:hover:checked + label:before,
|
||||||
|
[type="radio"]:checked ~ label:before,
|
||||||
|
[type="checkbox"]:checked ~ label:before {
|
||||||
|
background-color: transparent;
|
||||||
|
content: "-";
|
||||||
|
}
|
||||||
|
|
||||||
|
[type="radio"]:not(:checked) + label,
|
||||||
|
[type="checkbox"]:not(:checked) + label,
|
||||||
|
[type="radio"]:checked + label,
|
||||||
|
[type="checkbox"]:checked + label {
|
||||||
|
padding-left: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.accordion__copy {
|
||||||
|
display: none;
|
||||||
|
margin-top: 0.75em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.accordion__toggle:checked ~ .accordion__copy {
|
||||||
|
background-color: $gray-lighter;
|
||||||
|
display: block;
|
||||||
|
padding: 2.5em 1.25em 1em 1.75em;
|
||||||
|
margin: -2.25em 0 2em -0.5em;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
31
app/assets/stylesheets/molecules/_admin.scss
Normal file
31
app/assets/stylesheets/molecules/_admin.scss
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
main {
|
||||||
|
@include outer-container;
|
||||||
|
.saveadd {
|
||||||
|
@include span-columns(12);
|
||||||
|
}
|
||||||
|
.savecancel {
|
||||||
|
@include span-columns(12);
|
||||||
|
}
|
||||||
|
label.error {
|
||||||
|
text-align: right;
|
||||||
|
padding-top: 0;
|
||||||
|
font-size: 0.8rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media only screen and (min-width: $tablet) {
|
||||||
|
main {
|
||||||
|
@include outer-container;
|
||||||
|
.viewall {
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
.saveadd {
|
||||||
|
@include span-columns(6);
|
||||||
|
}
|
||||||
|
.savecancel {
|
||||||
|
@include span-columns(6);
|
||||||
|
@include omega();
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
118
app/assets/stylesheets/molecules/_admin_review.scss
Normal file
118
app/assets/stylesheets/molecules/_admin_review.scss
Normal file
@ -0,0 +1,118 @@
|
|||||||
|
.admin-review {
|
||||||
|
counter-reset: question;
|
||||||
|
float: left;
|
||||||
|
width: 66%;
|
||||||
|
|
||||||
|
form {
|
||||||
|
margin-left: 2.3em;
|
||||||
|
position: relative;
|
||||||
|
|
||||||
|
&::before {
|
||||||
|
content: counter(question) ') ';
|
||||||
|
counter-increment: question;
|
||||||
|
font-size: 1.25em;
|
||||||
|
left: -1.8em;
|
||||||
|
position: absolute;
|
||||||
|
top: 0.4em;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
.review-comments {
|
||||||
|
float: right;
|
||||||
|
padding-left: 30px;
|
||||||
|
width: 33%;
|
||||||
|
|
||||||
|
> div {
|
||||||
|
margin-bottom: 30px;
|
||||||
|
}
|
||||||
|
|
||||||
|
form {
|
||||||
|
margin-bottom: 30px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.comment-message {
|
||||||
|
margin-right: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.comment-author {
|
||||||
|
font-size: 0.85em;
|
||||||
|
font-weight: 700;
|
||||||
|
margin-bottom: 30px;
|
||||||
|
text-align: right;
|
||||||
|
|
||||||
|
&::before {
|
||||||
|
content: '- ';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.comment-edit-stamp {
|
||||||
|
color: rgba($gray-dark, 0.65);
|
||||||
|
font-size: 0.75em;
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
|
||||||
|
.comment-edit-btn {
|
||||||
|
cursor: pointer;
|
||||||
|
display: inline-block;
|
||||||
|
font-size: 0.85em;
|
||||||
|
font-weight: bold;
|
||||||
|
padding: 2px 5px;
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
background-color: $gray-base;
|
||||||
|
color: $gray-lighter;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.comment-edit-form {
|
||||||
|
display: none;
|
||||||
|
margin: 30px 0;
|
||||||
|
padding: 10px 0;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
[type="checkbox"] {
|
||||||
|
&:checked + .comment-edit-form {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.review_meta {
|
||||||
|
|
||||||
|
@media screen and (min-width: 768px) {
|
||||||
|
display: flex;
|
||||||
|
& > div { flex: 1 1 auto; }
|
||||||
|
}
|
||||||
|
|
||||||
|
.review_meta__votes {
|
||||||
|
margin-bottom: 15px;
|
||||||
|
a { padding: 5px; }
|
||||||
|
}
|
||||||
|
|
||||||
|
.review_meta__vetos {
|
||||||
|
label {
|
||||||
|
display: inline-block;
|
||||||
|
margin-left: 15px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.review-status-comments {
|
||||||
|
opacity: 0;
|
||||||
|
padding: 15px 0;
|
||||||
|
height: 0;
|
||||||
|
max-height: 0;
|
||||||
|
overflow: hidden;
|
||||||
|
transition: all 0.500s;
|
||||||
|
}
|
||||||
|
|
||||||
|
input:checked ~ .review-status-comments {
|
||||||
|
opacity: 1;
|
||||||
|
height: auto;
|
||||||
|
max-height: 9999px;
|
||||||
|
overflow: auto;
|
||||||
|
transition: all 0.7500s;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
26
app/assets/stylesheets/molecules/_buttongroups.scss
Normal file
26
app/assets/stylesheets/molecules/_buttongroups.scss
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
.btn-group {
|
||||||
|
> button {
|
||||||
|
float: left;
|
||||||
|
background-color: $white;
|
||||||
|
color: $secondary-color;
|
||||||
|
border-width: 1px 0;
|
||||||
|
border-style: solid;
|
||||||
|
border-color: $secondary-color;
|
||||||
|
margin: 0;
|
||||||
|
&:first-child {
|
||||||
|
border-radius: 999px 0 0 999px;
|
||||||
|
border-width:1px 0 1px 1px;
|
||||||
|
}
|
||||||
|
&:last-child {
|
||||||
|
border-radius: 0 999px 999px 0;
|
||||||
|
border-width:1px 1px 1px 0;
|
||||||
|
}
|
||||||
|
&.selected {
|
||||||
|
background-color: $primary-color;
|
||||||
|
color:$white;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
&:after {
|
||||||
|
@include clearfix;
|
||||||
|
}
|
||||||
|
}
|
110
app/assets/stylesheets/molecules/_buttons.scss
Normal file
110
app/assets/stylesheets/molecules/_buttons.scss
Normal file
@ -0,0 +1,110 @@
|
|||||||
|
#{$all-buttons}, .btn {
|
||||||
|
appearance: none;
|
||||||
|
background-color: $primary-color;
|
||||||
|
border: 0;
|
||||||
|
border-radius: $base-border-radius;
|
||||||
|
color: #fff;
|
||||||
|
cursor: pointer;
|
||||||
|
display: inline-block;
|
||||||
|
font-family: $primary-font-face;
|
||||||
|
text-transform: uppercase;
|
||||||
|
font-size: 0.875rem;
|
||||||
|
letter-spacing: 0.2rem;
|
||||||
|
-webkit-font-smoothing: antialiased;
|
||||||
|
font-weight: 600;
|
||||||
|
line-height: 1;
|
||||||
|
padding: 1.2em 2em;
|
||||||
|
text-decoration: none;
|
||||||
|
transition: background-color $base-duration $base-timing;
|
||||||
|
user-select: none;
|
||||||
|
vertical-align: middle;
|
||||||
|
white-space: nowrap;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
&:hover,
|
||||||
|
&:focus {
|
||||||
|
&:not([disabled]) {
|
||||||
|
background-color: $secondary-color;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&:disabled {
|
||||||
|
cursor: not-allowed;
|
||||||
|
opacity: 0.3;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.secondary-btn,
|
||||||
|
input[type="submit"].secondary-btn,
|
||||||
|
button.secondary-btn {
|
||||||
|
background-color: $secondary-color;
|
||||||
|
}
|
||||||
|
|
||||||
|
.tertiary-btn,
|
||||||
|
input[type="submit"].tertiary-btn,
|
||||||
|
button.tertiary-btn {
|
||||||
|
background-color: transparent;
|
||||||
|
color: $primary-color;
|
||||||
|
border: 1px solid $primary-color;
|
||||||
|
}
|
||||||
|
|
||||||
|
.button-save {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.button-cancel,
|
||||||
|
.tertiary-btn.button-cancel {
|
||||||
|
color: #ef0734;
|
||||||
|
border: 1px solid #ef0734;
|
||||||
|
display: none;
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
&:not([disabled]) {
|
||||||
|
color: #fff;
|
||||||
|
background-color: #ef0734;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.answer-buttons {
|
||||||
|
.button-cancel {
|
||||||
|
margin-left: .5rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.disabled-button {
|
||||||
|
pointer-events: none;
|
||||||
|
opacity: 0.5;
|
||||||
|
cursor: default;
|
||||||
|
}
|
||||||
|
|
||||||
|
.button-wrap {
|
||||||
|
margin-top: 3rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
// JS-enabled styles
|
||||||
|
html.no-js {
|
||||||
|
.tertiary-btn.button-edit {
|
||||||
|
border: none;
|
||||||
|
text-decoration: underline;
|
||||||
|
}
|
||||||
|
.button-save,
|
||||||
|
.button-cancel {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
html.js {
|
||||||
|
.button-edit {
|
||||||
|
@extend .btn;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media screen and (min-width: $screen-sm) {
|
||||||
|
html.no-js {
|
||||||
|
.tertiary-btn.button-edit {
|
||||||
|
display: inline-block;
|
||||||
|
padding-top: .75rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
303
app/assets/stylesheets/molecules/_forms.scss
Normal file
303
app/assets/stylesheets/molecules/_forms.scss
Normal file
@ -0,0 +1,303 @@
|
|||||||
|
// TODO: Align colors with variables.scss
|
||||||
|
fieldset {
|
||||||
|
background-color: transparent;
|
||||||
|
border: none;
|
||||||
|
padding: 0;
|
||||||
|
margin: 0;
|
||||||
|
|
||||||
|
&:disabled {
|
||||||
|
label {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
.form-group-multiples {
|
||||||
|
label {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
legend {
|
||||||
|
font-weight: 300;
|
||||||
|
margin-bottom: $small-spacing / 2;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
label {
|
||||||
|
display: block;
|
||||||
|
font-weight: 300;
|
||||||
|
}
|
||||||
|
|
||||||
|
form.btn-center {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
#{$all-text-inputs} {
|
||||||
|
display: block;
|
||||||
|
font-size: $base-font-size;
|
||||||
|
border: none;
|
||||||
|
border-bottom: 1px solid $secondary-color;
|
||||||
|
box-shadow: none;
|
||||||
|
border-radius: $base-border-radius;
|
||||||
|
box-sizing: border-box;
|
||||||
|
margin-bottom: 1.4em;
|
||||||
|
padding: $base-spacing / 3;
|
||||||
|
width: 100%;
|
||||||
|
font-weight: 300;
|
||||||
|
font-family: $primary-font-face;
|
||||||
|
line-height: 1.5em;
|
||||||
|
|
||||||
|
&:focus {
|
||||||
|
outline: none;
|
||||||
|
box-shadow: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
&:disabled {
|
||||||
|
background-color: shade($base-background-color, 5%);
|
||||||
|
cursor: default;
|
||||||
|
border-bottom-color: #bbb;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
button:disabled,
|
||||||
|
input[type='submit']:disabled {
|
||||||
|
opacity: .3;
|
||||||
|
cursor: default;
|
||||||
|
}
|
||||||
|
|
||||||
|
textarea {
|
||||||
|
resize: vertical;
|
||||||
|
background: transparent;
|
||||||
|
padding: 0 0 3rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.summary_tpl textarea {
|
||||||
|
padding: 1rem 1rem 3rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
[type="search"] {
|
||||||
|
appearance: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
%multiple-choice {
|
||||||
|
display: inline;
|
||||||
|
margin-right: $small-spacing / 2;
|
||||||
|
&:not(:checked),
|
||||||
|
&:checked {
|
||||||
|
position: absolute;
|
||||||
|
left: -9999px;
|
||||||
|
+ label {
|
||||||
|
position: relative;
|
||||||
|
padding-left: 25px;
|
||||||
|
cursor: pointer;
|
||||||
|
&:after {
|
||||||
|
position: absolute;
|
||||||
|
line-height: 0.8;
|
||||||
|
color: $primary-color;
|
||||||
|
transition: all .2s;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
&:disabled {
|
||||||
|
+ label {
|
||||||
|
&:before {
|
||||||
|
box-shadow: none;
|
||||||
|
border-color: #bbb;
|
||||||
|
background-color: #ddd;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
&:not(:checked) {
|
||||||
|
+ label {
|
||||||
|
&:after {
|
||||||
|
opacity: 0;
|
||||||
|
transform: scale(0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
&:checked {
|
||||||
|
+ label {
|
||||||
|
&:before {
|
||||||
|
border: 1px solid $gray;
|
||||||
|
background: transparent;
|
||||||
|
}
|
||||||
|
&:after {
|
||||||
|
opacity: 1;
|
||||||
|
transform: scale(1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
&:disabled {
|
||||||
|
+ label {
|
||||||
|
&:after {
|
||||||
|
color: #999;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
&:hover:not(:disabled) {
|
||||||
|
+ label {
|
||||||
|
&:before {
|
||||||
|
border: 2px solid $primary-color;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
&:disabled {
|
||||||
|
+ label {
|
||||||
|
color: #aaa;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
+ label {
|
||||||
|
&:before {
|
||||||
|
content: '';
|
||||||
|
position: absolute;
|
||||||
|
left:0;
|
||||||
|
top: 2px;
|
||||||
|
width: 20px;
|
||||||
|
height: 20px;
|
||||||
|
box-shadow: 0;
|
||||||
|
border: 1px solid $primary-color;
|
||||||
|
background: transparent;
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[type="radio"] {
|
||||||
|
@extend %multiple-choice;
|
||||||
|
&:not(:checked),
|
||||||
|
&:checked {
|
||||||
|
+ label {
|
||||||
|
&:after {
|
||||||
|
content: '';
|
||||||
|
position: absolute;
|
||||||
|
width: 8px;
|
||||||
|
height: 8px;
|
||||||
|
top: 8px;
|
||||||
|
left: 6px;
|
||||||
|
background-color: $primary-color;
|
||||||
|
border-radius: 100%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
+ label {
|
||||||
|
&:before {
|
||||||
|
border-radius: 50%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
&:not(:disabled) + label:before {
|
||||||
|
background-color: white;
|
||||||
|
}
|
||||||
|
&:disabled {
|
||||||
|
+ label {
|
||||||
|
&:after {
|
||||||
|
background-color: #888;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[type="checkbox"] {
|
||||||
|
@extend %multiple-choice;
|
||||||
|
&:not(:checked),
|
||||||
|
&:checked {
|
||||||
|
+ label {
|
||||||
|
&:after {
|
||||||
|
font-family: 'Zapf Dingbats', 'Menlo';
|
||||||
|
content: '\2714';
|
||||||
|
font-size: 13px;
|
||||||
|
top: 7px;
|
||||||
|
left: 5px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
&:not(:disabled) + label:before {
|
||||||
|
background-color: white;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[type="file"] {
|
||||||
|
margin-bottom: $small-spacing;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
select {
|
||||||
|
margin-bottom: 0.75em;
|
||||||
|
max-width: 100%;
|
||||||
|
width: auto; // needed?
|
||||||
|
background-color: $white;
|
||||||
|
border: 1px solid #aaa;
|
||||||
|
border-radius: 0px;
|
||||||
|
font-weight: 300;
|
||||||
|
font-family: $primary-font-face;
|
||||||
|
font-size: 1rem;
|
||||||
|
&::-ms-expand {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
&:not([multiple]) {
|
||||||
|
background-image: asset_data_url("icon-dropdownlist.png");
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
background-position: right 10px bottom 50%;
|
||||||
|
-webkit-appearance: none;
|
||||||
|
-moz-appearance: none;
|
||||||
|
appearance: none;
|
||||||
|
padding: 10px 40px 10px 10px;
|
||||||
|
}
|
||||||
|
option {
|
||||||
|
font-weight: 300;
|
||||||
|
font-family: $primary-font-face;
|
||||||
|
font-size: 1rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.form-group {
|
||||||
|
position: relative;
|
||||||
|
margin-bottom: 1.2rem;
|
||||||
|
|
||||||
|
label {
|
||||||
|
transition: 0.2s ease;
|
||||||
|
+ #{$all-text-inputs} {
|
||||||
|
background: transparent;
|
||||||
|
}
|
||||||
|
&.loaded {
|
||||||
|
left: 0;
|
||||||
|
top: 5px;
|
||||||
|
font-size: 1em;
|
||||||
|
position: absolute;
|
||||||
|
pointer-events: none;
|
||||||
|
}
|
||||||
|
&.animate {
|
||||||
|
font-size: 0.8em;
|
||||||
|
top: -10px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
label[for="answer_text"],
|
||||||
|
label[for="answer_live_code"] {
|
||||||
|
font-weight: 400;
|
||||||
|
font-style: italic;
|
||||||
|
}
|
||||||
|
|
||||||
|
.form-group-multiples { // radios, checks wrappers
|
||||||
|
margin-bottom: .5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.button-group {
|
||||||
|
margin-top: 2rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.skills-app-form {
|
||||||
|
margin-top: 2rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.resolve-error {
|
||||||
|
animation-name: success-fadeout;
|
||||||
|
animation-duration: 1.5s;
|
||||||
|
animation-delay: 0;
|
||||||
|
animation-fill-mode: forwards;
|
||||||
|
}
|
||||||
|
|
||||||
|
html.no-js {
|
||||||
|
.chars {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
}
|
35
app/assets/stylesheets/molecules/_lists.scss
Normal file
35
app/assets/stylesheets/molecules/_lists.scss
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
ul, ol {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0 0 0 1em;
|
||||||
|
li {
|
||||||
|
line-height: 2em;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
dl {
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
dt {
|
||||||
|
font-weight: 600;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
dd {
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
ul {
|
||||||
|
list-style-type: none;
|
||||||
|
list-style-position: inside;
|
||||||
|
li {
|
||||||
|
position:relative;
|
||||||
|
padding-left:1em;
|
||||||
|
&:before {
|
||||||
|
position: absolute;
|
||||||
|
top: 3px;
|
||||||
|
left:0;
|
||||||
|
content: asset_data_url('icon-unorderedlistbullet.png');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
143
app/assets/stylesheets/molecules/_livecoder.scss
Normal file
143
app/assets/stylesheets/molecules/_livecoder.scss
Normal file
@ -0,0 +1,143 @@
|
|||||||
|
.code-input {
|
||||||
|
margin: 10px 0;
|
||||||
|
|
||||||
|
textarea {
|
||||||
|
font-family: "Lucida Console", Monaco, monospace;
|
||||||
|
font-size: 10px;
|
||||||
|
// line-height: 1.6em;
|
||||||
|
margin-bottom: 0;
|
||||||
|
min-height: 205px;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.code-input textarea,
|
||||||
|
.questions_tpl .code-input textarea {
|
||||||
|
padding: 4px 0.2rem 0 2rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.code-input ~ button {
|
||||||
|
margin-left: 0;
|
||||||
|
clear: both;
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
.code-results {
|
||||||
|
margin-bottom: -0.65em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.results {
|
||||||
|
border: 1px solid $secondary-color;
|
||||||
|
clear: both;
|
||||||
|
margin: 10px 0;
|
||||||
|
min-height: 200px;
|
||||||
|
width: 100%;
|
||||||
|
background-color: #fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
fieldset:disabled {
|
||||||
|
.results {
|
||||||
|
border-color: #bbb;
|
||||||
|
}
|
||||||
|
|
||||||
|
.code-results,
|
||||||
|
.code-input label {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
iframe {
|
||||||
|
border: 0;
|
||||||
|
height: 100%;
|
||||||
|
min-height: 190px;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media only screen and (min-width: $desktop) {
|
||||||
|
.code-input {
|
||||||
|
float: left;
|
||||||
|
margin: 10px 1%;
|
||||||
|
width: 32%;
|
||||||
|
|
||||||
|
&:nth-of-type(1) {
|
||||||
|
margin-left: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
&:nth-of-type(3) {
|
||||||
|
margin-right: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// jQuery Lined Textarea Plugin
|
||||||
|
// http://alan.blog-city.com/jquerylinedtextarea.htm
|
||||||
|
//
|
||||||
|
// Copyright (c) 2010 Alan Williamson
|
||||||
|
//
|
||||||
|
// Released under the MIT License:
|
||||||
|
// http://www.opensource.org/licenses/mit-license.php
|
||||||
|
//
|
||||||
|
// Usage:
|
||||||
|
// Displays a line number count column to the left of the textarea
|
||||||
|
//
|
||||||
|
// Class up your textarea with a given class, or target it directly
|
||||||
|
// with JQuery Selectors
|
||||||
|
//
|
||||||
|
// $(".lined").linedtextarea({
|
||||||
|
// selectedLine: 10,
|
||||||
|
// selectedClass: 'lineselect'
|
||||||
|
// });
|
||||||
|
|
||||||
|
.linedwrap {
|
||||||
|
border: 1px solid $secondary-color;
|
||||||
|
padding: 0;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
fieldset:disabled .linedwrap {
|
||||||
|
border-color: #bbb;
|
||||||
|
}
|
||||||
|
|
||||||
|
.linedtextarea {
|
||||||
|
padding: 0;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.linedtextarea textarea, .linedwrap .codelines .lineno {
|
||||||
|
font-size: 10pt;
|
||||||
|
font-family: "Lucida Console", Monaco, monospace;
|
||||||
|
line-height: normal !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.linedtextarea textarea {
|
||||||
|
padding-right: 0.3em;
|
||||||
|
padding-top: 0.3em;
|
||||||
|
border: 0 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.linedwrap .lines {
|
||||||
|
margin-top: 0px;
|
||||||
|
overflow: hidden;
|
||||||
|
border-right: 1px solid #c0c0c0;
|
||||||
|
margin-right: 10px;
|
||||||
|
position: absolute;
|
||||||
|
left: 0.3rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.linedwrap .codelines {
|
||||||
|
padding-top: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.linedwrap .codelines .lineno {
|
||||||
|
color:#AAAAAA;
|
||||||
|
padding-right: 0.5em;
|
||||||
|
padding-top: 0.0em;
|
||||||
|
text-align: right;
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
|
||||||
|
.linedwrap .codelines .lineselect {
|
||||||
|
color: red;
|
||||||
|
}
|
17
app/assets/stylesheets/molecules/_nav.scss
Normal file
17
app/assets/stylesheets/molecules/_nav.scss
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
nav {
|
||||||
|
margin: 15px 0;
|
||||||
|
padding: 0;
|
||||||
|
text-align: right;
|
||||||
|
|
||||||
|
a,
|
||||||
|
a:visited {
|
||||||
|
text-decoration: none;
|
||||||
|
padding: 15px;
|
||||||
|
margin: 0;
|
||||||
|
text-transform: uppercase;
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
background-color: $gray-lighter;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
41
app/assets/stylesheets/molecules/_progressbar.scss
Normal file
41
app/assets/stylesheets/molecules/_progressbar.scss
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
.progress {
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
width: 100%;
|
||||||
|
max-height: 84px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.progress-bar {
|
||||||
|
// background-color: $primary-color;
|
||||||
|
background-color: #39bd9a;
|
||||||
|
color:white;
|
||||||
|
text-align: right;
|
||||||
|
line-height: 8vw;
|
||||||
|
font-weight: 900;
|
||||||
|
min-width: 50px;
|
||||||
|
position: relative;
|
||||||
|
transform: skewX(-16.5deg);
|
||||||
|
|
||||||
|
span {
|
||||||
|
display: inline-block;
|
||||||
|
transform: skewX(16.5deg);
|
||||||
|
margin-right: .85rem;
|
||||||
|
font-size: 3vw;
|
||||||
|
line-height: 8vw;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media screen and (min-width: 500px) {
|
||||||
|
.progress-bar span {
|
||||||
|
font-size: 16px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media only screen and (min-width: $desktop) {
|
||||||
|
.progress-bar,
|
||||||
|
.progress-bar span {
|
||||||
|
line-height: 84px;
|
||||||
|
max-height: 84px;
|
||||||
|
}
|
||||||
|
}
|
66
app/assets/stylesheets/molecules/_tables.scss
Normal file
66
app/assets/stylesheets/molecules/_tables.scss
Normal file
@ -0,0 +1,66 @@
|
|||||||
|
table {
|
||||||
|
border-collapse: collapse;
|
||||||
|
margin: $small-spacing 0;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
th {
|
||||||
|
border-bottom: 1px solid shade($base-border-color, 25%);
|
||||||
|
font-weight: 600;
|
||||||
|
padding: $small-spacing 0;
|
||||||
|
text-align: left;
|
||||||
|
|
||||||
|
a {
|
||||||
|
display: inline-block;
|
||||||
|
margin-right: 18px;
|
||||||
|
padding-right: 5px;
|
||||||
|
position: relative;
|
||||||
|
text-decoration: none;
|
||||||
|
|
||||||
|
&::after {
|
||||||
|
background-image: asset_data_url("ic_sort_black_24dp_2x.png");
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
background-size: contain;
|
||||||
|
content: "";
|
||||||
|
display: block;
|
||||||
|
height: 18px;
|
||||||
|
left: 100%;
|
||||||
|
opacity: 0.5;
|
||||||
|
position: absolute;
|
||||||
|
top: 4px;
|
||||||
|
width: 18px;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.asc {
|
||||||
|
&::after {
|
||||||
|
background-image: asset_data_url("ic_arrow_drop_up_black_24dp_2x.png");
|
||||||
|
height: 25px;
|
||||||
|
left: calc(100% - 5px);
|
||||||
|
opacity: 1;
|
||||||
|
top: 1px;
|
||||||
|
width: 25px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&.desc {
|
||||||
|
&::after {
|
||||||
|
background-image: asset_data_url("ic_arrow_drop_down_black_24dp_2x.png");
|
||||||
|
height: 25px;
|
||||||
|
left: calc(100% - 5px);
|
||||||
|
opacity: 1;
|
||||||
|
top: 1px;
|
||||||
|
width: 25px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
td {
|
||||||
|
padding: $small-spacing 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
tr,
|
||||||
|
td,
|
||||||
|
th {
|
||||||
|
vertical-align: middle;
|
||||||
|
}
|
0
app/assets/stylesheets/organisms/.keep
Normal file
0
app/assets/stylesheets/organisms/.keep
Normal file
58
app/assets/stylesheets/pages/_error.scss
Normal file
58
app/assets/stylesheets/pages/_error.scss
Normal file
@ -0,0 +1,58 @@
|
|||||||
|
.error {
|
||||||
|
text-align: center;
|
||||||
|
background-color: $accent-color-1;
|
||||||
|
color: #fff;
|
||||||
|
margin: 2rem 0 .5rem;
|
||||||
|
padding: .5rem 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.error-header {
|
||||||
|
@include outer-container;
|
||||||
|
.page-title {
|
||||||
|
display: inline-block;
|
||||||
|
h1 {
|
||||||
|
font-family: $heading-font-face;
|
||||||
|
font-size: 1.5rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.secondary-btn {
|
||||||
|
margin-top: 1rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.warning {
|
||||||
|
@extend .error;
|
||||||
|
background-color: #f39c12;
|
||||||
|
}
|
||||||
|
|
||||||
|
.success {
|
||||||
|
@extend .error;
|
||||||
|
background-color: $brand-success;
|
||||||
|
}
|
||||||
|
|
||||||
|
.notice {
|
||||||
|
@extend .error;
|
||||||
|
background-color: $brand-info;
|
||||||
|
}
|
||||||
|
|
||||||
|
[data-id="live-coder-finish-later"] {
|
||||||
|
.warning {
|
||||||
|
margin-top: 0;
|
||||||
|
margin-bottom: 2rem;
|
||||||
|
text-align: left;
|
||||||
|
padding: .5rem 1rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media only screen and (min-width: $desktop) {
|
||||||
|
.error-header {
|
||||||
|
.page-title {
|
||||||
|
h1 {
|
||||||
|
font-size: 1.5rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.secondary-btn {
|
||||||
|
float:right;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
32
app/assets/stylesheets/pages/_styleguide.scss
Normal file
32
app/assets/stylesheets/pages/_styleguide.scss
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
.styleguide_tpl {
|
||||||
|
@include outer-container;
|
||||||
|
}
|
||||||
|
|
||||||
|
#halisr {
|
||||||
|
font-family: $heading-font-face;
|
||||||
|
font-size:2rem;
|
||||||
|
#primary-100 { font-weight: 100; }
|
||||||
|
#primary-200 { font-weight: 200; }
|
||||||
|
#primary-300 { font-weight: 300; }
|
||||||
|
#primary-400 { font-weight: 400; }
|
||||||
|
#primary-500 { font-weight: 500; }
|
||||||
|
#primary-600 { font-weight: 600; }
|
||||||
|
#primary-700 { font-weight: 700; }
|
||||||
|
#primary-800 { font-weight: 800; }
|
||||||
|
#primary-900 { font-weight: 900; }
|
||||||
|
}
|
||||||
|
|
||||||
|
#lato {
|
||||||
|
font-family: $primary-font-face;
|
||||||
|
font-size:2rem;
|
||||||
|
#secondary-100 { font-weight: 100; }
|
||||||
|
#secondary-300 { font-weight: 300; }
|
||||||
|
#secondary-500 { font-weight: 500; }
|
||||||
|
#secondary-700 { font-weight: 700; }
|
||||||
|
#secondary-900 { font-weight: 900; }
|
||||||
|
#secondary-100-i { font-weight: 100; font-style: italic; }
|
||||||
|
#secondary-300-i { font-weight: 300; font-style: italic; }
|
||||||
|
#secondary-500-i { font-weight: 500; font-style: italic; }
|
||||||
|
#secondary-700-i { font-weight: 700; font-style: italic; }
|
||||||
|
#secondary-900-i { font-weight: 900; font-style: italic; }
|
||||||
|
}
|
@ -1,163 +0,0 @@
|
|||||||
// sass-lint:disable function-name-format
|
|
||||||
|
|
||||||
//HALISR
|
|
||||||
|
|
||||||
@font-face {
|
|
||||||
font-family: 'HalisR';
|
|
||||||
font-weight: 100;
|
|
||||||
src: local('Halis R Thin'),
|
|
||||||
font_url('HalisR-Thin.woff2') format('woff2'),
|
|
||||||
font_url('HalisR-Thin.woff') format('woff'),
|
|
||||||
font_url('HalisR-Thin.otf') format('opentype');
|
|
||||||
}
|
|
||||||
|
|
||||||
@font-face {
|
|
||||||
font-family: 'HalisR';
|
|
||||||
font-weight: 200;
|
|
||||||
src: local('Halis R Light'),
|
|
||||||
font_url('HalisR-Light.woff2') format('woff2'),
|
|
||||||
font_url('HalisR-Light.woff') format('woff'),
|
|
||||||
font_url('HalisR-Light.otf') format('opentype');
|
|
||||||
}
|
|
||||||
|
|
||||||
@font-face {
|
|
||||||
font-family: 'HalisR';
|
|
||||||
font-weight: 300;
|
|
||||||
src: local('Halis R Book'),
|
|
||||||
font_url('HalisR-Book.woff2') format('woff2'),
|
|
||||||
font_url('HalisR-Book.woff') format('woff'),
|
|
||||||
font_url('HalisR-Book.otf') format('opentype');
|
|
||||||
}
|
|
||||||
|
|
||||||
@font-face {
|
|
||||||
font-family: 'HalisR';
|
|
||||||
font-weight: 500;
|
|
||||||
src: local('Halis R Regular'),
|
|
||||||
font_url('HalisR-Regular.woff2') format('woff2'),
|
|
||||||
font_url('HalisR-Regular.woff') format('woff'),
|
|
||||||
font_url('HalisR-Regular.otf') format('opentype');
|
|
||||||
}
|
|
||||||
|
|
||||||
@font-face {
|
|
||||||
font-family: 'HalisR';
|
|
||||||
font-weight: 600;
|
|
||||||
src: local('Halis R Medium'),
|
|
||||||
font_url('HalisR-Medium.woff2') format('woff2'),
|
|
||||||
font_url('HalisR-Medium.woff') format('woff'),
|
|
||||||
font_url('HalisR-Medium.otf') format('opentype');
|
|
||||||
}
|
|
||||||
|
|
||||||
@font-face {
|
|
||||||
font-family: 'HalisR';
|
|
||||||
font-weight: 700;
|
|
||||||
src: local('Halis R Bold'),
|
|
||||||
font_url('HalisR-Bold.woff2') format('woff2'),
|
|
||||||
font_url('HalisR-Bold.woff') format('woff'),
|
|
||||||
font_url('HalisR-Bold.otf') format('opentype');
|
|
||||||
}
|
|
||||||
|
|
||||||
@font-face {
|
|
||||||
font-family: 'HalisR';
|
|
||||||
font-weight: 900;
|
|
||||||
src: local('Halis R Black'),
|
|
||||||
font_url('HalisR-Black.woff2') format('woff2'),
|
|
||||||
font_url('HalisR-Black.woff') format('woff'),
|
|
||||||
font_url('HalisR-Black.otf') format('opentype');
|
|
||||||
}
|
|
||||||
|
|
||||||
//LATO
|
|
||||||
|
|
||||||
@font-face {
|
|
||||||
font-family: 'Lato';
|
|
||||||
font-weight: 100;
|
|
||||||
src: local('Lato Hairline'),
|
|
||||||
font_url('Lato-Hairline.woff2') format('woff2'),
|
|
||||||
font_url('Lato-Hairline.woff') format('woff'),
|
|
||||||
font_url('Lato-Hairline.ttf') format('truetype');
|
|
||||||
}
|
|
||||||
|
|
||||||
@font-face {
|
|
||||||
font-family: 'Lato';
|
|
||||||
font-weight: 300;
|
|
||||||
src: local('Lato Light'),
|
|
||||||
font_url('Lato-Light.woff2') format('woff2'),
|
|
||||||
font_url('Lato-Light.woff') format('woff'),
|
|
||||||
font_url('Lato-Light.ttf') format('truetype');
|
|
||||||
}
|
|
||||||
|
|
||||||
@font-face {
|
|
||||||
font-family: 'Lato';
|
|
||||||
font-weight: 500;
|
|
||||||
src: local('Lato Regular'),
|
|
||||||
font_url('Lato-Regular.woff2') format('woff2'),
|
|
||||||
font_url('Lato-Regular.woff') format('woff'),
|
|
||||||
font_url('Lato-Regular.ttf') format('truetype');
|
|
||||||
}
|
|
||||||
|
|
||||||
@font-face {
|
|
||||||
font-family: 'Lato';
|
|
||||||
font-weight: 700;
|
|
||||||
src: local('Lato Bold'),
|
|
||||||
font_url('Lato-Bold.woff2') format('woff2'),
|
|
||||||
font_url('Lato-Bold.woff') format('woff'),
|
|
||||||
font_url('Lato-Bold.ttf') format('truetype');
|
|
||||||
}
|
|
||||||
|
|
||||||
@font-face {
|
|
||||||
font-family: 'Lato';
|
|
||||||
font-weight: 900;
|
|
||||||
src: local('Lato Black'),
|
|
||||||
font_url('Lato-Black.woff2') format('woff2'),
|
|
||||||
font_url('Lato-Black.woff') format('woff'),
|
|
||||||
font_url('Lato-Black.ttf') format('truetype');
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@font-face {
|
|
||||||
font-family: 'Lato';
|
|
||||||
font-weight: 100;
|
|
||||||
font-style: italic;
|
|
||||||
src: local('Lato Hairline Italic'),
|
|
||||||
font_url('Lato-HairlineItalic.woff2') format('woff2'),
|
|
||||||
font_url('Lato-HairlineItalic.woff') format('woff'),
|
|
||||||
font_url('Lato-HairlineItalic.ttf') format('truetype');
|
|
||||||
}
|
|
||||||
@font-face {
|
|
||||||
font-family: 'Lato';
|
|
||||||
font-weight: 300;
|
|
||||||
font-style: italic;
|
|
||||||
src: local('Lato Light Italic'),
|
|
||||||
font_url('Lato-LightItalic.woff2') format('woff2'),
|
|
||||||
font_url('Lato-LightItalic.woff') format('woff'),
|
|
||||||
font_url('Lato-LightItalic.ttf') format('truetype');
|
|
||||||
}
|
|
||||||
|
|
||||||
@font-face {
|
|
||||||
font-family: 'Lato';
|
|
||||||
font-weight: 500;
|
|
||||||
font-style: italic;
|
|
||||||
src: local('Lato Italic'),
|
|
||||||
font_url('Lato-Italic.woff2') format('woff2'),
|
|
||||||
font_url('Lato-Italic.woff') format('woff'),
|
|
||||||
font_url('Lato-Italic.ttf') format('truetype');
|
|
||||||
}
|
|
||||||
|
|
||||||
@font-face {
|
|
||||||
font-family: 'Lato';
|
|
||||||
font-weight: 700;
|
|
||||||
font-style: italic;
|
|
||||||
src: local('Lato Bold Italic'),
|
|
||||||
font_url('Lato-BoldItalic.woff2') format('woff2'),
|
|
||||||
font_url('Lato-BoldItalic.woff') format('woff'),
|
|
||||||
font_url('Lato-BoldItalic.ttf') format('truetype');
|
|
||||||
}
|
|
||||||
|
|
||||||
@font-face {
|
|
||||||
font-family: 'Lato';
|
|
||||||
font-weight: 900;
|
|
||||||
font-style: italic;
|
|
||||||
src: local('Lato Black Italic'),
|
|
||||||
font_url('Lato-BlackItalic.woff2') format('woff2'),
|
|
||||||
font_url('Lato-BlackItalic.woff') format('woff'),
|
|
||||||
font_url('Lato-BlackItalic.ttf') format('truetype');
|
|
||||||
}
|
|
@ -1,9 +0,0 @@
|
|||||||
@mixin primary-font {
|
|
||||||
font-family: $primary-font-face;
|
|
||||||
font-weight: 300;
|
|
||||||
}
|
|
||||||
|
|
||||||
@mixin heading-font {
|
|
||||||
font-family: $heading-font-face;
|
|
||||||
font-weight: 100;
|
|
||||||
}
|
|
@ -1,27 +0,0 @@
|
|||||||
// normalize css is loaded, then these additions:
|
|
||||||
|
|
||||||
html {
|
|
||||||
margin: 0;
|
|
||||||
padding: 0;
|
|
||||||
font-size: 16px;
|
|
||||||
box-sizing: border-box;
|
|
||||||
}
|
|
||||||
|
|
||||||
main,
|
|
||||||
section,
|
|
||||||
article,
|
|
||||||
aside,
|
|
||||||
footer,
|
|
||||||
h1,
|
|
||||||
h2,
|
|
||||||
h3,
|
|
||||||
h4,
|
|
||||||
h5,
|
|
||||||
h6,
|
|
||||||
div,
|
|
||||||
p,
|
|
||||||
ul,
|
|
||||||
*::before,
|
|
||||||
*::after {
|
|
||||||
box-sizing: inherit;
|
|
||||||
}
|
|
@ -1,28 +0,0 @@
|
|||||||
// Breakpoints Minimum Resolution
|
|
||||||
$tablet: 48em; // tablet
|
|
||||||
$desktop: 64em; // desktop
|
|
||||||
|
|
||||||
$gutter: 32px;
|
|
||||||
|
|
||||||
$progressbar-height: $gutter * 2;
|
|
||||||
|
|
||||||
$heading-font-face: 'HalisR', sans-serif;
|
|
||||||
$primary-font-face: 'Lato', sans-serif;
|
|
||||||
|
|
||||||
//colors
|
|
||||||
$pd-red: #ef0734;
|
|
||||||
$pd-yellow: #fff200;
|
|
||||||
$pd-green: #2ab68f;
|
|
||||||
|
|
||||||
$black: #000;
|
|
||||||
$dark-grey: #202526;
|
|
||||||
$grey: lighten($dark-grey, 31%);
|
|
||||||
$white: #fff;
|
|
||||||
|
|
||||||
$turquoise: #39bd9a;
|
|
||||||
|
|
||||||
$primary-color: $dark-grey;
|
|
||||||
$secondary-color: $grey;
|
|
||||||
$accent-color-1: $pd-red;
|
|
||||||
$accent-color-2: $pd-yellow;
|
|
||||||
$accent-color-3: $pd-green;
|
|
44
app/assets/stylesheets/templates/_footer.scss
Normal file
44
app/assets/stylesheets/templates/_footer.scss
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
footer {
|
||||||
|
width: 100%;
|
||||||
|
height: 112px;
|
||||||
|
@include outer-container;
|
||||||
|
}
|
||||||
|
.footer_title {
|
||||||
|
@include span-columns(6);
|
||||||
|
padding:2.5rem 0 1rem;
|
||||||
|
h2 {
|
||||||
|
font-family: $primary-font-face;
|
||||||
|
text-transform: uppercase;
|
||||||
|
font-weight: 700;
|
||||||
|
margin: 0 0 0 0;
|
||||||
|
font-size: 3vw;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.pd_logo {
|
||||||
|
@include span-columns(6);
|
||||||
|
@include omega();
|
||||||
|
text-align: right;
|
||||||
|
padding:1.5rem 0 1rem;
|
||||||
|
img {
|
||||||
|
max-height: 45px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.footer_yellow-bar {
|
||||||
|
@include span-columns(12);
|
||||||
|
@include omega();
|
||||||
|
@include slantmix(0, 0, 1.5rem);
|
||||||
|
background-color:$accent-color-2;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media only screen and (min-width: 480px) {
|
||||||
|
footer {
|
||||||
|
height: 116px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@media screen and (min-width: 700px) {
|
||||||
|
.footer_title h2 {
|
||||||
|
font-size: 1.25rem;
|
||||||
|
}
|
||||||
|
}
|
30
app/assets/stylesheets/templates/_header.scss
Normal file
30
app/assets/stylesheets/templates/_header.scss
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
header {
|
||||||
|
@include outer-container;
|
||||||
|
padding-top: 13vw;
|
||||||
|
|
||||||
|
&.no-progressbar {
|
||||||
|
padding-top: 52px;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.no-progressbar.admin {
|
||||||
|
padding-top: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.page-title {
|
||||||
|
@include omega();
|
||||||
|
text-transform: uppercase;
|
||||||
|
padding: 1rem 3rem .5rem;
|
||||||
|
|
||||||
|
div {
|
||||||
|
font: bold 1.25rem $primary-font-face;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media screen and (min-width: $desktop) {
|
||||||
|
header {
|
||||||
|
padding-top: 135px;
|
||||||
|
}
|
||||||
|
.page-title {
|
||||||
|
padding:$primary-padding;
|
||||||
|
}
|
||||||
|
}
|
26
app/assets/stylesheets/templates/_intro.scss
Normal file
26
app/assets/stylesheets/templates/_intro.scss
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
.intro_tpl {
|
||||||
|
@include outer-container;
|
||||||
|
padding:$primary-padding;
|
||||||
|
form {
|
||||||
|
margin-top: 3rem;
|
||||||
|
@include span-columns(12);
|
||||||
|
@include omega();
|
||||||
|
button[type='submit']
|
||||||
|
{
|
||||||
|
display: block;
|
||||||
|
width:100%;
|
||||||
|
margin-top: 3rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media only screen and (min-width: $desktop) {
|
||||||
|
.intro_tpl {
|
||||||
|
padding:$primary-padding;
|
||||||
|
form {
|
||||||
|
@include span-columns(6);
|
||||||
|
@include shift(3);
|
||||||
|
@include omega();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
70
app/assets/stylesheets/templates/_questions.scss
Normal file
70
app/assets/stylesheets/templates/_questions.scss
Normal file
@ -0,0 +1,70 @@
|
|||||||
|
.questions_tpl {
|
||||||
|
@include outer-container;
|
||||||
|
.prft-heading,
|
||||||
|
.content-well {
|
||||||
|
padding: 1rem 0;
|
||||||
|
@include outer-container;
|
||||||
|
.column-left,
|
||||||
|
.column-right {
|
||||||
|
@include span-columns(12);
|
||||||
|
@include omega();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.form-group {
|
||||||
|
position: relative;
|
||||||
|
textarea {
|
||||||
|
+ label {
|
||||||
|
position: absolute;
|
||||||
|
left: 3rem;
|
||||||
|
top: 1rem;
|
||||||
|
pointer-events: none;
|
||||||
|
}
|
||||||
|
&:focus,
|
||||||
|
&:valid {
|
||||||
|
+ label {
|
||||||
|
top: -10px;
|
||||||
|
font-size: 0.8em;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
textarea {
|
||||||
|
padding: 1rem 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn-container-left,
|
||||||
|
.btn-container-right {
|
||||||
|
padding-top: 2rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn-container-left {
|
||||||
|
@include span-columns(5);
|
||||||
|
}
|
||||||
|
.btn-container-right {
|
||||||
|
@include span-columns(7);
|
||||||
|
@include omega();
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn-container-summary {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media only screen and (min-width: $desktop) {
|
||||||
|
.questions_tpl {
|
||||||
|
@include outer-container;
|
||||||
|
.prft-heading,
|
||||||
|
.content-well {
|
||||||
|
|
||||||
|
.column-left {
|
||||||
|
@include omega-reset(6n);
|
||||||
|
@include span-columns(6);
|
||||||
|
}
|
||||||
|
.column-right {
|
||||||
|
@include span-columns(6);
|
||||||
|
@include omega();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
100
app/assets/stylesheets/templates/_summary.scss
Normal file
100
app/assets/stylesheets/templates/_summary.scss
Normal file
@ -0,0 +1,100 @@
|
|||||||
|
.summary_tpl {
|
||||||
|
@include outer-container;
|
||||||
|
padding: 2rem 0;
|
||||||
|
h2 {
|
||||||
|
font-size:1.875rem;
|
||||||
|
font-weight: 400;
|
||||||
|
}
|
||||||
|
.answer-sec {
|
||||||
|
// padding-top:2rem;
|
||||||
|
margin-bottom: 2rem;
|
||||||
|
transition: 0.3s ease;
|
||||||
|
// &.editable {
|
||||||
|
// background-color: #f2f2f2;
|
||||||
|
// }
|
||||||
|
.question-heading {
|
||||||
|
@include outer-container;
|
||||||
|
}
|
||||||
|
.question-title {
|
||||||
|
@include span-columns(12);
|
||||||
|
@include omega();
|
||||||
|
padding-top: .75rem;
|
||||||
|
}
|
||||||
|
h3 {
|
||||||
|
font-size: 1.25rem;
|
||||||
|
font-weight: 400;
|
||||||
|
}
|
||||||
|
.answer-buttons {
|
||||||
|
@include span-columns(12);
|
||||||
|
@include omega();
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
.answer-container {
|
||||||
|
padding:2rem 0;
|
||||||
|
|
||||||
|
textarea:not(:disabled) {
|
||||||
|
background-color: white;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.editable {
|
||||||
|
background-color: #f2f2f2;
|
||||||
|
padding: 2rem;
|
||||||
|
margin: 0 -2rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
#summary-form {
|
||||||
|
margin-top: 3rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.success {
|
||||||
|
box-sizing: border-box;
|
||||||
|
text-align: center;
|
||||||
|
background-color: $accent-color-3;
|
||||||
|
color: #fff;
|
||||||
|
padding-top: .5rem;
|
||||||
|
padding-bottom: .5rem;
|
||||||
|
margin-bottom: .5rem;
|
||||||
|
animation-name: success-fadeout;
|
||||||
|
animation-duration: 1.5s;
|
||||||
|
animation-delay: 2s;
|
||||||
|
animation-fill-mode: forwards;
|
||||||
|
}
|
||||||
|
|
||||||
|
.text-answer.answer-container {
|
||||||
|
white-space: pre-line;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media only screen and (min-width: $tablet) {
|
||||||
|
.summary_tpl {
|
||||||
|
.answer-sec {
|
||||||
|
.question-heading {
|
||||||
|
.question-title {
|
||||||
|
@include span-columns(8);
|
||||||
|
}
|
||||||
|
.answer-buttons {
|
||||||
|
@include span-columns(4);
|
||||||
|
@include omega();
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media only screen and (min-width: $desktop) {
|
||||||
|
.summary_tpl {
|
||||||
|
.answer-sec {
|
||||||
|
.question-heading {
|
||||||
|
.question-title {
|
||||||
|
@include span-columns(9);
|
||||||
|
}
|
||||||
|
.answer-buttons {
|
||||||
|
@include span-columns(3);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -28,8 +28,7 @@ class Candidate < ApplicationRecord
|
|||||||
|
|
||||||
def interview?
|
def interview?
|
||||||
return 'yes' if approved?
|
return 'yes' if approved?
|
||||||
return 'no' if declined?
|
'no' if declined?
|
||||||
'-'
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def build_reviews
|
def build_reviews
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
<nav aria-label="Admin Menu">
|
<nav>
|
||||||
<%= link_to("Users", admin_users_url) if policy(User).index? %>
|
<%= link_to("Users", admin_users_url) if policy(User).index? %>
|
||||||
<% #= link_to("Departments", admin_departments_url) if policy(Department).index? %>
|
<% #= link_to("Departments", admin_departments_url) if policy(Department).index? %>
|
||||||
<%= link_to("Quizzes", admin_quizzes_url) if policy(Quiz).index? %>
|
<%= link_to("Quizzes", admin_quizzes_url) if policy(Quiz).index? %>
|
||||||
|
@ -1,23 +1,27 @@
|
|||||||
<% content_for :title, "Skills Assessment Admin" %>
|
<%
|
||||||
|
content_for :main_class, "intro_tpl"
|
||||||
|
content_for :title, "Skills Assessment Admin"
|
||||||
|
%>
|
||||||
|
|
||||||
<h1>Admin Login</h1>
|
<h1>Admin Login</h1>
|
||||||
|
|
||||||
<%= form_for :auth, url: admin_login_path do |form| %>
|
<%= form_for :auth, url: admin_login_path do |form| %>
|
||||||
<% if flash[:error].present? %>
|
<% if flash[:error].present? %>
|
||||||
<div>
|
<div class="form-group">
|
||||||
Need a <%= link_to "password reset", admin_reset_request_path %>?
|
Need a <%= link_to "password reset", admin_reset_request_path %>?
|
||||||
</div>
|
</div>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|
||||||
<div>
|
<div class="form-group">
|
||||||
<%= form.label :email %>
|
<%= form.label :email %>
|
||||||
<%= form.email_field :email %>
|
<%= form.email_field :email %>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div>
|
<div class="form-group">
|
||||||
<%= form.label :password %>
|
<%= form.label :password %>
|
||||||
<%= form.password_field :password %>
|
<%= form.password_field :password %>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<%= submit_tag "Log in" %>
|
<%= submit_tag "Log in" %>
|
||||||
|
|
||||||
<% end %>
|
<% end %>
|
||||||
|
@ -1,18 +1,22 @@
|
|||||||
<% content_for :title, "Skills Assessment Admin" %>
|
<%
|
||||||
|
content_for :main_class, "intro_tpl"
|
||||||
|
content_for :title, "Skills Assessment Admin"
|
||||||
|
%>
|
||||||
|
|
||||||
<h1>Password Reset</h1>
|
<h1>Password Reset</h1>
|
||||||
|
|
||||||
<%= form_for :auth, url: admin_reset_password_path do |form| %>
|
<%= form_for :auth, url: admin_reset_password_path do |form| %>
|
||||||
<div>
|
<%= hidden_field_tag :reset_token, params[:reset_token] %>
|
||||||
|
|
||||||
|
<div class="form-group">
|
||||||
<%= form.label :password %>
|
<%= form.label :password %>
|
||||||
<%= form.password_field :password %>
|
<%= form.password_field :password %>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div>
|
<div class="form-group">
|
||||||
<%= form.label :password_confirmation %>
|
<%= form.label :password_confirmation %>
|
||||||
<%= form.password_field :password_confirmation %>
|
<%= form.password_field :password_confirmation %>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<%= submit_tag "Reset Password" %>
|
<%= submit_tag "Reset Password" %>
|
||||||
<%= hidden_field_tag :reset_token, params[:reset_token] %>
|
|
||||||
<% end %>
|
<% end %>
|
||||||
|
@ -1,9 +1,12 @@
|
|||||||
<% content_for :title, "Skills Assessment Admin" %>
|
<%
|
||||||
|
content_for :main_class, "intro_tpl"
|
||||||
|
content_for :title, "Skills Assessment Admin"
|
||||||
|
%>
|
||||||
|
|
||||||
<h1>Password Reset</h1>
|
<h1>Password Reset</h1>
|
||||||
<%= form_for :auth, url: admin_send_reset_path do |form| %>
|
<%= form_for :auth, url: admin_send_reset_path do |form| %>
|
||||||
|
|
||||||
<div>
|
<div class="form-group">
|
||||||
<%= form.label :email %>
|
<%= form.label :email %>
|
||||||
<%= form.email_field :email %>
|
<%= form.email_field :email %>
|
||||||
</div>
|
</div>
|
||||||
|
@ -1,29 +1,27 @@
|
|||||||
<%= render partial: 'shared/form_model_errors', locals: { obj: candidate } %>
|
<%= render partial: 'shared/form_model_errors', locals: { obj: candidate } %>
|
||||||
|
|
||||||
<%= form_for candidate, url: action, method: :post do |form| %>
|
<%= form_for candidate, url: action, method: :post do |form| %>
|
||||||
<div>
|
<div class="form-group">
|
||||||
<%= form.label :name, "Candidate name" %>
|
<%= form.label :name, "Candidate name" %>
|
||||||
<%= form.text_field :name %>
|
<%= form.text_field :name %>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div>
|
<div class="form-group">
|
||||||
<%= form.label :email, "Candidate email" %>
|
<%= form.label :email, "Candidate email" %>
|
||||||
<%= form.email_field :email %>
|
<%= form.email_field :email %>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div>
|
<div class="form-group">
|
||||||
<%= form.label :experience, "Years of experience" %>
|
<%= form.label :experience, "Years of experience" %>
|
||||||
<%= form.select :experience, experience_options(candidate.experience), include_blank: false %>
|
<%= form.select :experience, experience_options(candidate.experience), include_blank: false %>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div>
|
<div class="form-group">
|
||||||
<%= form.label :project, "Client or project" %>
|
<%= form.label :project, "Client or project" %>
|
||||||
<%= form.text_field :project %>
|
<%= form.text_field :project %>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div role="group" aria-labelledby="position-type">
|
<div class="form-group">
|
||||||
<span id="position-type">Position Type</span>
|
|
||||||
|
|
||||||
<%= form.radio_button :position, 'full-time' %>
|
<%= form.radio_button :position, 'full-time' %>
|
||||||
<%= form.label "position_full-time", "Full-time" %>
|
<%= form.label "position_full-time", "Full-time" %>
|
||||||
|
|
||||||
@ -31,12 +29,12 @@
|
|||||||
<%= form.label :position_contract, "Contract" %>
|
<%= form.label :position_contract, "Contract" %>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div>
|
<div class="form-group">
|
||||||
<%= form.label :skill_needs, "Specific skill needs" %>
|
<%= form.label :skill_needs, "Specific skill needs" %>
|
||||||
<%= form.text_field :skill_needs %>
|
<%= form.text_field :skill_needs %>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div>
|
<div class="form-group">
|
||||||
<%= form.label :quiz_id, "Quiz" %>
|
<%= form.label :quiz_id, "Quiz" %>
|
||||||
<%= form.select :quiz_id, quiz_options(quizzes, candidate.quiz_id), include_blank: (quizzes.size > 1) %>
|
<%= form.select :quiz_id, quiz_options(quizzes, candidate.quiz_id), include_blank: (quizzes.size > 1) %>
|
||||||
</div>
|
</div>
|
||||||
|
@ -1,7 +1,10 @@
|
|||||||
<% content_for :title, "Edit Candidate - Skills Assessment Admin" %>
|
<%
|
||||||
|
content_for :title, "Edit Candidate - Skills Assessment Admin"
|
||||||
|
%>
|
||||||
|
|
||||||
<h1>Edit: <%= @candidate.name %></h1>
|
<main class="intro_tpl">
|
||||||
|
<h1>Edit: <%= @candidate.name %></h1>
|
||||||
|
<p><strong>Test ID: </strong><%= @candidate.test_hash %></p>
|
||||||
|
|
||||||
<div><strong>Test ID: </strong><%= @candidate.test_hash %></div>
|
<%= render partial: 'form', locals: { action: admin_update_candidate_path(@candidate.id), candidate: @candidate, quizzes: @quizzes } %>
|
||||||
|
</main>
|
||||||
<%= render partial: 'form', locals: { action: admin_update_candidate_path(@candidate.id), candidate: @candidate, quizzes: @quizzes } %>
|
|
||||||
|
@ -2,39 +2,41 @@
|
|||||||
content_for :section_title, "Candidates"
|
content_for :section_title, "Candidates"
|
||||||
content_for :title, "Candidates - Skills Assessment Admin"
|
content_for :title, "Candidates - Skills Assessment Admin"
|
||||||
%>
|
%>
|
||||||
|
<main class="summary_tpl">
|
||||||
|
<%= link_to(admin_new_candidate_path, { class: 'secondary-btn' }) do %>
|
||||||
|
<button>Create New Candidate</button>
|
||||||
|
<% end if policy(Candidate).create? %>
|
||||||
|
|
||||||
<h1>Candidates</h1>
|
<table cellspacing="0" cellpadding="0">
|
||||||
|
|
||||||
<%= link_to("Create New Candidate", admin_new_candidate_path, { class: "" }) if policy(Candidate).create? %>
|
|
||||||
|
|
||||||
<table cellspacing="0" cellpadding="0">
|
|
||||||
<tr>
|
|
||||||
<th><%= sortable "name", "Candidate" %></th>
|
|
||||||
<th><%= sortable "test_hash", "Test ID" %></th>
|
|
||||||
<th><%= sortable "email" %></th>
|
|
||||||
<th><%= sortable "experience" %></th>
|
|
||||||
<th>Progress</th>
|
|
||||||
<th><%= sortable "completed_at", "Completed" %></th>
|
|
||||||
<th><%= sortable "reminded" %></th>
|
|
||||||
<th>Interview?</th>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<% @candidates.each do |candidate| %>
|
|
||||||
<tr>
|
<tr>
|
||||||
<td><%= link_to candidate.name, admin_edit_candidate_path(candidate.id) %></td>
|
<th><%= sortable "name", "Candidate" %></th>
|
||||||
<td><%= candidate.test_hash %></td>
|
<th><%= sortable "test_hash", "Test ID" %></th>
|
||||||
<td>
|
<th><%= sortable "email" %></th>
|
||||||
<%= mail_to(candidate.email) %>
|
<th><%= sortable "experience" %></th>
|
||||||
<br />
|
<th>Progress</th>
|
||||||
<%= link_to "resend welcome email", admin_resend_welcome_path(candidate.id), remote: true, class: '', data: { id: 'ajax-action' } %>
|
<th><%= sortable "completed_at", "Completed" %></th>
|
||||||
</td>
|
<th><%= sortable "reminded" %></th>
|
||||||
<td><%= candidate.experience %> years</td>
|
<th>Interview?</th>
|
||||||
<td><%= candidate.status %></td>
|
|
||||||
<td><%= candidate.completed ? link_to("Submitted", admin_result_path(candidate.test_hash)) : "" %></td>
|
|
||||||
<td><%= raw candidate.reminded ? "✓" : "·" %></td>
|
|
||||||
<td><%= candidate.interview? %></td>
|
|
||||||
</tr>
|
</tr>
|
||||||
<% end %>
|
|
||||||
</table>
|
|
||||||
|
|
||||||
<%= paginate @candidates %>
|
<% @candidates.each do |candidate| %>
|
||||||
|
<tr>
|
||||||
|
<td><%= link_to candidate.name, admin_edit_candidate_path(candidate.id) %></td>
|
||||||
|
<td><%= candidate.test_hash %></td>
|
||||||
|
<td>
|
||||||
|
<%= mail_to(candidate.email) %>
|
||||||
|
<!--
|
||||||
|
<br />
|
||||||
|
<%# = link_to "resend welcome email", admin_resend_welcome_path(candidate.id), remote: true, class: '', data: { id: 'ajax-action' } %>
|
||||||
|
-->
|
||||||
|
</td>
|
||||||
|
<td><%= candidate.experience %> years</td>
|
||||||
|
<td><%= candidate.status %></td>
|
||||||
|
<td><%= candidate.completed ? link_to("Submitted", admin_result_path(candidate.test_hash)) : "" %></td>
|
||||||
|
<td><%= candidate.reminded ? "Yes" : "" %></td>
|
||||||
|
<td><%= candidate.interview? %></td>
|
||||||
|
</tr>
|
||||||
|
<% end %>
|
||||||
|
</table>
|
||||||
|
<%= paginate @candidates %>
|
||||||
|
</main>
|
||||||
|
@ -1,6 +1,10 @@
|
|||||||
<% content_for :title, "New Candidate - Skills Assessment Admin" %>
|
<%
|
||||||
|
content_for :title, "New Candidate - Skills Assessment Admin"
|
||||||
|
%>
|
||||||
|
|
||||||
<h1>New Candidate</h1>
|
<main class="intro_tpl">
|
||||||
|
<h1>New Candidate</h1>
|
||||||
|
|
||||||
<%= render partial: 'form', locals:
|
<%= render partial: 'form', locals:
|
||||||
{ action: admin_create_candidate_path, candidate: @candidate, quizzes: @quizzes } %>
|
{ action: admin_create_candidate_path, candidate: @candidate, quizzes: @quizzes } %>
|
||||||
|
</main>
|
||||||
|
@ -3,27 +3,24 @@
|
|||||||
content_for :title, "Profile - Skills Assessment Admin"
|
content_for :title, "Profile - Skills Assessment Admin"
|
||||||
%>
|
%>
|
||||||
|
|
||||||
<h1>Edit Profile</h1>
|
|
||||||
|
|
||||||
<%= render partial: 'shared/form_model_errors', locals: {obj: @user} %>
|
<%= render partial: 'shared/form_model_errors', locals: {obj: @user} %>
|
||||||
|
|
||||||
<%= form_for @user, url: admin_profile_url, method: :post do |form| %>
|
<%= form_for @user, url: admin_profile_url, method: :post do |form| %>
|
||||||
<div>
|
<div class="form-group">
|
||||||
<%= form.label :name, "Full Name" %>
|
<%= form.label :name, "Full Name" %>
|
||||||
<%= form.text_field :name %>
|
<%= form.text_field :name %>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div>
|
<div class="form-group">
|
||||||
<%= form.label :email, "eMail" %>
|
<%= form.label :email, "eMail" %>
|
||||||
<%= form.email_field :email %>
|
<%= form.email_field :email %>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div>
|
<div class="form-group">
|
||||||
<%= form.label :password, "New Password" %>
|
<%= form.label :password, "New Password" %>
|
||||||
<%= form.password_field :password %>
|
<%= form.password_field :password %>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div>
|
<div class="form-group">
|
||||||
<%= form.label :password_confirmation, "New Password Confirmation" %>
|
<%= form.label :password_confirmation, "New Password Confirmation" %>
|
||||||
<%= form.password_field :password_confirmation %>
|
<%= form.password_field :password_confirmation %>
|
||||||
</div>
|
</div>
|
||||||
|
@ -3,10 +3,7 @@
|
|||||||
content_for :title, "Profile - Skills Assessment Admin"
|
content_for :title, "Profile - Skills Assessment Admin"
|
||||||
%>
|
%>
|
||||||
|
|
||||||
<h1>Profile</h1>
|
<p>Name: <%= current_user.name %></p>
|
||||||
|
<p>email: <%= current_user.email %></p>
|
||||||
<div>Name: <%= current_user.name %></div>
|
<p>Role: <%= current_user.role %></p>
|
||||||
<div>email: <%= current_user.email %></div>
|
<%= link_to('Edit', admin_edit_profile_path, { class: 'btn' }) %>
|
||||||
<div>Role: <%= current_user.role %></div>
|
|
||||||
|
|
||||||
<%= link_to('Edit', admin_edit_profile_path, { class: "" }) %>
|
|
||||||
|
@ -9,8 +9,10 @@
|
|||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<% unless (disable ||= false) %>
|
<% unless (disable ||= false) %>
|
||||||
<div> Add option </div>
|
<div class="form-group">
|
||||||
<div>
|
<div class="btn tertiary-btn" data-id="input_option_adder"> Add option </div>
|
||||||
<%= text_field_tag 'question[multi_choice][]', nil, { disabled: (disable ||= false), data: { last: nil } } %>
|
<li style="display: none;">
|
||||||
|
<%= text_field_tag 'question[multi_choice][]', nil, { disabled: (disable ||= false), data: { last: nil } } %>
|
||||||
|
</li>
|
||||||
</div>
|
</div>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
@ -12,8 +12,10 @@
|
|||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<% unless (disable ||= false) %>
|
<% unless (disable ||= false) %>
|
||||||
<div>Add option</div>
|
<div class="form-group">
|
||||||
<div>
|
<div class="btn tertiary-btn" data-id="input_option_adder"> Add option </div>
|
||||||
<%= text_field_tag 'question[multi_choice][]', nil, { disabled: (disable ||= false), data: { last: nil } } %>
|
<li style="display: none;">
|
||||||
|
<%= text_field_tag 'question[multi_choice][]', nil, { disabled: (disable ||= false), data: { last: nil } } %>
|
||||||
|
</li>
|
||||||
</div>
|
</div>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
@ -1,44 +1,45 @@
|
|||||||
<%= render partial: 'shared/form_model_errors', locals: { obj: question} %>
|
<%= render partial: 'shared/form_model_errors', locals: { obj: question} %>
|
||||||
|
|
||||||
<%= form_for question, url: action do |form| %>
|
<%= form_for question, url: action do |form| %>
|
||||||
<div>
|
<div class="form-group">
|
||||||
<%= form.label :quiz_id, 'Quiz' %>
|
<%= form.label :quiz_id, 'Quiz' %>
|
||||||
<%= form.select :quiz_id, options_for_select(@quizzes.map{ |q| [q.name, q.id] }, question.quiz_id), include_blank: (@quizzes.size > 1) %>
|
<%= form.select :quiz_id, options_for_select(@quizzes.map{ |q| [q.name, q.id] }, question.quiz_id), include_blank: (@quizzes.size > 1) %>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div>
|
<div class="form-group">
|
||||||
<%= form.label :category, 'Category' %>
|
<%= form.label :category, 'Category' %>
|
||||||
<%= form.text_field :category %>
|
<%= form.text_field :category %>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div>
|
<div class="form-group">
|
||||||
<%= form.label :sort, 'Sort' %>
|
<%= form.label :sort, 'Sort' %>
|
||||||
<%= form.text_field :sort %>
|
<%= form.text_field :sort %>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div>
|
<div class="form-group">
|
||||||
<%= form.check_box :active %>
|
<%= form.check_box :active %>
|
||||||
<%= form.label :active, 'Active' %>
|
<%= form.label :active, 'Active' %>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div>
|
<div class="form-group">
|
||||||
<%= form.label :question, "Question" %>
|
<%= form.label :question, "Question" %>
|
||||||
<%= form.text_area :question %>
|
<%= form.text_area :question %>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div>
|
<div class="form-group">
|
||||||
<%= form.label :attachment, "Attachment URL" %>
|
<%= form.label :attachment, "Attachment URL" %>
|
||||||
<%= form.text_field :attachment %>
|
<%= form.text_field :attachment %>
|
||||||
|
|
||||||
<%= image_tag @question.attachment if @question.attachment.present? %>
|
<% if @question.attachment.present? %>
|
||||||
|
<p><%= image_tag @question.attachment %></p>
|
||||||
|
<% end %>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div>
|
<div class="form-group">
|
||||||
<%= form.label :input_type, 'Input Type' %>
|
<%= form.label :input_type, 'Input Type' %>
|
||||||
<%= form.select :input_type, question_type_options(question.input_type), { include_blank: false }, { data: { qid: question.id } } %>
|
<%= form.select :input_type, question_type_options(question.input_type), { include_blank: false }, { data: { qid: question.id } } %>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div>
|
<div class="form-group" data-id="input-options-wrapper">
|
||||||
<%= fields_for @question do |fields| %>
|
<%= fields_for @question do |fields| %>
|
||||||
<% partial = question.input_type.blank? ? 'admin/question/text' : "admin/question/#{question.input_type}" %>
|
<% partial = question.input_type.blank? ? 'admin/question/text' : "admin/question/#{question.input_type}" %>
|
||||||
<%= render partial: partial, locals: {question: question, fields: fields } %>
|
<%= render partial: partial, locals: {question: question, fields: fields } %>
|
||||||
|
@ -9,8 +9,10 @@
|
|||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<% unless (disable ||= false) %>
|
<% unless (disable ||= false) %>
|
||||||
<div>Add option</div>
|
<div class="form-group">
|
||||||
<div>
|
<div class="btn tertiary-btn" data-id="input_option_adder"> Add option </div>
|
||||||
<%= text_field_tag 'question[multi_choice][]', nil, { disabled: (disable ||= false), data: { last: nil } } %>
|
<li style="display: none;">
|
||||||
|
<%= text_field_tag 'question[multi_choice][]', nil, { disabled: (disable ||= false), data: { last: nil } } %>
|
||||||
|
</li>
|
||||||
</div>
|
</div>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
@ -1,17 +1,21 @@
|
|||||||
<strong>Radio Options</strong>
|
<strong>Radio Options</strong>
|
||||||
|
|
||||||
<ul>
|
<ul data-id="input_option_list">
|
||||||
<% question.input_options.each do | option | %>
|
<% question.input_options.each do | option | %>
|
||||||
<li>
|
<li>
|
||||||
<%= text_field_tag 'question[multi_choice][]', option, { disabled: (disable ||= false), data: { last: option } } %>
|
<%= text_field_tag 'question[multi_choice][]', option, { disabled: (disable ||= false), data: { last: option } } %>
|
||||||
</li>
|
</li>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
</ul>
|
||||||
|
<ul>
|
||||||
<li>Other: <input type="text" disabled="disabled" /></li>
|
<li>Other: <input type="text" disabled="disabled" /></li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<% unless (disable ||= false) %>
|
<% unless (disable ||= false) %>
|
||||||
<div>Add option</div>
|
<div class="form-group">
|
||||||
<div>
|
<div class="btn tertiary-btn" data-id="input_option_adder"> Add option </div>
|
||||||
<%= text_field_tag 'question[multi_choice][]', nil, { disabled: (disable ||= false), data: { last: nil } } %>
|
<li style="display: none;">
|
||||||
|
<%= text_field_tag 'question[multi_choice][]', nil, { disabled: (disable ||= false), data: { last: nil } } %>
|
||||||
|
</li>
|
||||||
</div>
|
</div>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
@ -14,8 +14,8 @@
|
|||||||
<td><%= question.question %></td>
|
<td><%= question.question %></td>
|
||||||
<td><%= question.input_type %></td>
|
<td><%= question.input_type %></td>
|
||||||
<td><%= question.category %></td>
|
<td><%= question.category %></td>
|
||||||
<td><%= raw question.active? ? "✓" : "✗" %></td>
|
<td><%= question.active unless question.active? %></td>
|
||||||
<td><%= link_to 'Edit', admin_edit_question_path(question.to_i), { class: "" } %></td>
|
<td><%= link_to 'Edit', admin_edit_question_path(question.to_i), { class: 'btn tertiary-btn' } %></td>
|
||||||
</tr>
|
</tr>
|
||||||
<% end %>
|
<% end %>
|
||||||
</table>
|
</table>
|
||||||
|
@ -4,5 +4,4 @@
|
|||||||
%>
|
%>
|
||||||
|
|
||||||
<h1><%= @question.quiz.name %></h1>
|
<h1><%= @question.quiz.name %></h1>
|
||||||
|
|
||||||
<%= render partial: 'form', locals: {question: @question, action: admin_update_question_path } %>
|
<%= render partial: 'form', locals: {question: @question, action: admin_update_question_path } %>
|
||||||
|
@ -3,11 +3,9 @@
|
|||||||
content_for :title, "Questions - Skills Assessment Admin"
|
content_for :title, "Questions - Skills Assessment Admin"
|
||||||
%>
|
%>
|
||||||
|
|
||||||
<h1>Questions</h1>
|
|
||||||
|
|
||||||
<% quizzes = @questions.group_by{ |q| q.quiz.name } %>
|
<% quizzes = @questions.group_by{ |q| q.quiz.name } %>
|
||||||
<% quizzes.each do |quiz, questions| %>
|
<% quizzes.each do |quiz, questions| %>
|
||||||
<h1><%= quiz %></h1>
|
<h1><%= quiz %></h1>
|
||||||
<%= render partial: 'admin/question/table_list', locals: { questions: questions } %>
|
<%= render partial: 'admin/question/table_list', locals: { questions: questions } %>
|
||||||
<%= link_to('Edit Quiz', admin_quiz_path(questions.first.quiz.to_i), { class: "" }) %>
|
<%= link_to('Edit Quiz', admin_quiz_path(questions.first.quiz.to_i), { class: 'btn' }) %>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
@ -3,6 +3,4 @@
|
|||||||
content_for :title, "New Question - Skills Assessment Admin"
|
content_for :title, "New Question - Skills Assessment Admin"
|
||||||
%>
|
%>
|
||||||
|
|
||||||
<h1>New Question</h1>
|
|
||||||
|
|
||||||
<%= render partial: 'form', locals: {question: @question, action: admin_create_question_path } %>
|
<%= render partial: 'form', locals: {question: @question, action: admin_create_question_path } %>
|
||||||
|
@ -3,30 +3,39 @@
|
|||||||
content_for :title, "Question - Skills Assessment Admin"
|
content_for :title, "Question - Skills Assessment Admin"
|
||||||
%>
|
%>
|
||||||
|
|
||||||
<h1><%= @question.quiz.name %></h1>
|
<table cellspacing="0" cellpadding="0">
|
||||||
|
<tr>
|
||||||
|
<th>Category</th>
|
||||||
|
<td><%= @question.category %></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>Type</th>
|
||||||
|
<td><%= @question.input_type %></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>Sort</th>
|
||||||
|
<td><%= @question.sort %></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th></th>
|
||||||
|
<td>
|
||||||
|
<%= check_box_tag 'question_active', nil, @question.active?, {disabled: true} %>
|
||||||
|
<%= label_tag 'question_active', 'Active' %>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
<h2>Category</h2>
|
<strong>Question</strong>
|
||||||
<div><%= @question.category %></div>
|
<p><%= @question.question %></p>
|
||||||
|
|
||||||
<h2>Type</h2>
|
<% if @question.attachment.present? %>
|
||||||
<div><%= @question.input_type %></div>
|
<p><%= image_tag @question.attachment %></p>
|
||||||
|
<% end %>
|
||||||
<h2>Sort</h2>
|
|
||||||
<div><%= @question.sort %></div>
|
|
||||||
|
|
||||||
<div>
|
|
||||||
<%= check_box_tag 'question_active', nil, @question.active?, {disabled: true} %>
|
|
||||||
<%= label_tag 'question_active', 'Active' %>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
<h2>Question</h2>
|
|
||||||
<div><%= @question.question %></div>
|
|
||||||
<div><%= image_tag @question.attachment if @question.attachment.present? %></div>
|
|
||||||
|
|
||||||
<%= fields_for @question do |fields| %>
|
<%= fields_for @question do |fields| %>
|
||||||
<%= render partial: "admin/question/#{@question.input_type}", locals: {question: @question, disable: true, fields: fields } %>
|
<%= render partial: "admin/question/#{@question.input_type}", locals: {question: @question, disable: true, fields: fields } %>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|
||||||
<%= link_to('Edit', admin_edit_question_path(@question.to_i), { class: "" }) %>
|
<%= link_to('Edit', admin_edit_question_path(@question.to_i), { class: 'btn' }) %>
|
||||||
<%= link_to('View Quiz', admin_quiz_path(@question.quiz_id), { class: "" }) %>
|
|
||||||
|
<%= link_to('View Quiz', admin_quiz_path(@question.quiz_id), { class: 'btn' }) %>
|
||||||
|
@ -1,16 +1,16 @@
|
|||||||
<%= render partial: 'shared/form_model_errors', locals: { obj: quiz} %>
|
<%= render partial: 'shared/form_model_errors', locals: { obj: quiz} %>
|
||||||
<%= form_for quiz, url: action do |form| %>
|
<%= form_for quiz, url: action do |form| %>
|
||||||
<div>
|
<div class="form-group">
|
||||||
<%= form.label :name, "Quiz Description" %>
|
<%= form.label :name, "Quiz Description" %>
|
||||||
<%= form.text_field :name %>
|
<%= form.text_field :name %>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div>
|
<div class="form-group">
|
||||||
<%= form.label :dept, 'Department' %>
|
<%= form.label :dept, 'Department' %>
|
||||||
<%= form.text_field :dept %>
|
<%= form.text_field :dept %>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div>
|
<div class="form-group">
|
||||||
<%= form.label :unit, 'Unit' %>
|
<%= form.label :unit, 'Unit' %>
|
||||||
<%= form.text_field :unit %>
|
<%= form.text_field :unit %>
|
||||||
</div>
|
</div>
|
||||||
|
@ -13,7 +13,7 @@
|
|||||||
<td><%= quiz.dept %></td>
|
<td><%= quiz.dept %></td>
|
||||||
<td><%= quiz.unit %></td>
|
<td><%= quiz.unit %></td>
|
||||||
<td><%= quiz.questions.count %></td>
|
<td><%= quiz.questions.count %></td>
|
||||||
<td><%= link_to 'edit', admin_edit_quiz_path(quiz.to_i), { class: "" } if policy(quiz).edit? %></td>
|
<td><%= link_to 'edit', admin_edit_quiz_path(quiz.to_i), { class: 'btn tertiary-btn' } if policy(quiz).edit? %></td>
|
||||||
</tr>
|
</tr>
|
||||||
<% end %>
|
<% end %>
|
||||||
</table>
|
</table>
|
||||||
|
@ -1,8 +1,5 @@
|
|||||||
<%
|
<%
|
||||||
content_for :section_title, "Edit: #{@quiz.name}"
|
content_for :section_title, "Edit: #{@quiz.name}"
|
||||||
content_for :title, "Quizzes - Skills Assessment Admin"
|
|
||||||
%>
|
%>
|
||||||
|
|
||||||
<h1>Edit: <%=@quiz.name %></h1>
|
|
||||||
|
|
||||||
<%= render partial: 'form', locals: { quiz: @quiz, action: admin_update_quiz_path } %>
|
<%= render partial: 'form', locals: { quiz: @quiz, action: admin_update_quiz_path } %>
|
||||||
|
@ -3,7 +3,5 @@
|
|||||||
content_for :title, "Quizzes - Skills Assessment Admin"
|
content_for :title, "Quizzes - Skills Assessment Admin"
|
||||||
%>
|
%>
|
||||||
|
|
||||||
<h1>Quizzes</h1>
|
|
||||||
|
|
||||||
<%= render partial: 'admin/quiz/table_list', locals: { quizzes: @quizzes } %>
|
<%= render partial: 'admin/quiz/table_list', locals: { quizzes: @quizzes } %>
|
||||||
<%= link_to('New Quiz', admin_new_quiz_path, { class: "" }) %>
|
<%= link_to('New Quiz', admin_new_quiz_path, { class: 'btn' }) %>
|
||||||
|
@ -3,6 +3,4 @@
|
|||||||
content_for :title, "New Quiz - Skills Assessment Admin"
|
content_for :title, "New Quiz - Skills Assessment Admin"
|
||||||
%>
|
%>
|
||||||
|
|
||||||
<h1>New Quiz</h1>
|
|
||||||
|
|
||||||
<%= render partial: 'form', locals: { quiz: @quiz, action: admin_create_quiz_path } %>
|
<%= render partial: 'form', locals: { quiz: @quiz, action: admin_create_quiz_path } %>
|
||||||
|
@ -3,11 +3,10 @@
|
|||||||
content_for :title, "Quiz - Skills Assessment Admin"
|
content_for :title, "Quiz - Skills Assessment Admin"
|
||||||
%>
|
%>
|
||||||
|
|
||||||
<h1><%= @quiz.name %></h1>
|
<p><%= @quiz.name %></p>
|
||||||
|
<p><%= @quiz.dept %></p>
|
||||||
<div><%= @quiz.dept %></div>
|
<p><%= @quiz.unit %></p>
|
||||||
<div><%= @quiz.unit %></div>
|
<%= link_to('Edit', admin_edit_quiz_path(@quiz.to_i), { class: 'btn' }) %>
|
||||||
<%= link_to('Edit', admin_edit_quiz_path(@quiz.to_i), { class: "" }) %>
|
|
||||||
|
|
||||||
<%= render partial: 'admin/question/table_list', locals: { questions: @quiz.questions, disable: true } %>
|
<%= render partial: 'admin/question/table_list', locals: { questions: @quiz.questions, disable: true } %>
|
||||||
<%= link_to('New Question', admin_new_question_path, { class: "" }) %>
|
<%= link_to('New Question', admin_new_question_path, { class: 'btn' }) %>
|
||||||
|
@ -1,20 +1,23 @@
|
|||||||
<div>
|
<div class="comment-message">
|
||||||
<%= comment.message %>
|
<%= comment.message %>
|
||||||
|
|
||||||
<% if policy(comment).update? %>
|
<% if policy(comment).update? %>
|
||||||
<label class="" for="comment-<%= comment.id %>">edit</label>
|
<label class="comment-edit-btn" for="comment-<%= comment.id %>">edit</label>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|
||||||
<% if comment.edits? %>
|
<% if comment.edits? %>
|
||||||
<div>Updated <%= local_time_ago(comment.updated_at) %></div>
|
<div class="comment-edit-stamp">Updated <%= time_ago_in_words(comment.updated_at) %> ago</div>
|
||||||
<% else %>
|
<% else %>
|
||||||
<div><%= local_time_ago(comment.created_at) %></div>
|
<div class="comment-edit-stamp"><%= time_ago_in_words(comment.created_at) %> ago</div>
|
||||||
<% end %>
|
<% end %>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div><%= comment.user.name %></div>
|
<div class="comment-author"><%= comment.user.name %></div>
|
||||||
|
|
||||||
|
|
||||||
<% if policy(comment).update? %>
|
<% if policy(comment).update? %>
|
||||||
<input type="checkbox" id="comment-<%= comment.id %>">
|
<input type="checkbox" id="comment-<%= comment.id %>">
|
||||||
<%= render partial: 'comment_form', locals: {comment: comment, test_hash: comment.test_hash } %>
|
<div class="comment-edit-form">
|
||||||
|
<%= render partial: 'comment_form', locals: {comment: comment, test_hash: comment.test_hash } %>
|
||||||
|
</div>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
<% if comment.id.nil? %>
|
<% if comment.id.nil? %>
|
||||||
|
|
||||||
<%= form_for comment, url: admin_create_comment_path(test_hash: test_hash), method: :post do |form| %>
|
<%= form_for comment, url: admin_create_comment_path(test_hash: test_hash), method: :post do |form| %>
|
||||||
<div>
|
<div class="form-group">
|
||||||
<%= form.label :message, "New Comment" %>
|
<%= form.label :message, "New Comment" %>
|
||||||
<%= form.text_area :message %>
|
<%= form.text_area :message %>
|
||||||
</div>
|
</div>
|
||||||
@ -12,7 +12,7 @@
|
|||||||
<% else %>
|
<% else %>
|
||||||
|
|
||||||
<%= form_for comment, url: admin_update_comment_path(test_hash: test_hash, id: comment.id), method: :post do |form| %>
|
<%= form_for comment, url: admin_update_comment_path(test_hash: test_hash, id: comment.id), method: :post do |form| %>
|
||||||
<div>
|
<div class="form-group">
|
||||||
<%= form.label :message, "Update Comment" %>
|
<%= form.label :message, "Update Comment" %>
|
||||||
<%= form.text_area :message %>
|
<%= form.text_area :message %>
|
||||||
</div>
|
</div>
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
|
<% # TODO: This should be extracted into a decorator, or something. It is only a quick hack solution. %>
|
||||||
|
|
||||||
<% if current_user.acts_as_reviewer? %>
|
<% if current_user.acts_as_reviewer? %>
|
||||||
<div data-id="vote-count">
|
<div class="review_meta__votes" data-id="vote-count">
|
||||||
<strong>Votes: </strong>
|
<strong>Votes: </strong>
|
||||||
|
|
||||||
<% if @candidate.pending? && current_user.commented_on?(@candidate.test_hash) %>
|
<% if @candidate.pending? && current_user.commented_on?(@candidate.test_hash) %>
|
||||||
@ -25,20 +27,18 @@
|
|||||||
<% end %>
|
<% end %>
|
||||||
|
|
||||||
<% if current_user.acts_as_manager? %>
|
<% if current_user.acts_as_manager? %>
|
||||||
<div>
|
<div class="review_meta__vetos">
|
||||||
<%= form_tag admin_interview_path(test_hash: @candidate.test_hash) do %>
|
<%= form_tag admin_interview_path(test_hash: @candidate.test_hash) do %>
|
||||||
<div role="group" aria-labelledby="interview-status">
|
<strong>Interview: </strong>
|
||||||
<strong id="interview-status">Interview: </strong>
|
|
||||||
|
|
||||||
<%= radio_button_tag :review_status, :approved, checked = @candidate.approved? %>
|
<%= radio_button_tag :review_status, :approved, checked = @candidate.approved? %>
|
||||||
<%= label_tag :review_status_approved, "Yes" %>
|
<%= label_tag :review_status_approved, "Yes" %>
|
||||||
|
|
||||||
<%= radio_button_tag :review_status, :declined, checked = @candidate.declined? %>
|
<%= radio_button_tag :review_status, :declined, checked = @candidate.declined? %>
|
||||||
<%= label_tag :review_status_declined, "No" %>
|
<%= label_tag :review_status_declined, "No" %>
|
||||||
</div>
|
|
||||||
|
|
||||||
<div>
|
<div class="review-status-comments">
|
||||||
<%= label_tag :review_comments, "Review comments for recruiter" %>
|
<span>Review comments for recruiter</span>
|
||||||
<%= text_area_tag :review_comments, @candidate.review_comments %>
|
<%= text_area_tag :review_comments, @candidate.review_comments %>
|
||||||
<%= submit_tag 'Send Request' %>
|
<%= submit_tag 'Send Request' %>
|
||||||
</div>
|
</div>
|
||||||
|
@ -2,29 +2,27 @@
|
|||||||
content_for :section_title, "Completed Tests"
|
content_for :section_title, "Completed Tests"
|
||||||
content_for :title, "Quiz Results - Skills Assessment Admin"
|
content_for :title, "Quiz Results - Skills Assessment Admin"
|
||||||
%>
|
%>
|
||||||
|
<main class="summary_tpl">
|
||||||
<h1>Results</h1>
|
<table cellspacing="0" cellpadding="0">
|
||||||
|
|
||||||
<table cellspacing="0" cellpadding="0">
|
|
||||||
<tr>
|
|
||||||
<th><%= sortable "test_hash", "Test ID" %></th>
|
|
||||||
<th><%= sortable "name" %></th>
|
|
||||||
<th><%= sortable "project", "Client/Project" %></th>
|
|
||||||
<th>Recruiter</th>
|
|
||||||
<th><%= sortable "completed_at", "Submitted on" %></th>
|
|
||||||
<th>Interview?</th>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<% @candidates.each do |candidate| %>
|
|
||||||
<tr>
|
<tr>
|
||||||
<td><%= link_to candidate.test_hash, admin_result_path(candidate.test_hash) %></td>
|
<th><%= sortable "test_hash", "Test ID" %></th>
|
||||||
<td><%= candidate.name if !candidate.pending? %></td>
|
<th><%= sortable "name" %></th>
|
||||||
<td><%= candidate.project %></td>
|
<th><%= sortable "project", "Client/Project" %></th>
|
||||||
<td><%= mail_to(candidate.recruiter.email) %></td>
|
<th>Recruiter</th>
|
||||||
<td><%= candidate.completed_at.strftime('%D') unless candidate.completed_at.nil? %></td>
|
<th><%= sortable "completed_at", "Submitted on" %></th>
|
||||||
<td><%= candidate.interview? %></td>
|
<th>Interview?</th>
|
||||||
</tr>
|
</tr>
|
||||||
<% end %>
|
|
||||||
</table>
|
|
||||||
|
|
||||||
<%= paginate @candidates %>
|
<% @candidates.each do |candidate| %>
|
||||||
|
<tr>
|
||||||
|
<td><%= link_to candidate.test_hash, admin_result_path(candidate.test_hash) %></td>
|
||||||
|
<td><%= candidate.name if !candidate.pending? %></td>
|
||||||
|
<td><%= candidate.project %></td>
|
||||||
|
<td><%= mail_to(candidate.recruiter.email) %></td>
|
||||||
|
<td><%= candidate.completed_at.strftime('%D') unless candidate.completed_at.nil? %></td>
|
||||||
|
<td><%= candidate.interview? %></td>
|
||||||
|
</tr>
|
||||||
|
<% end %>
|
||||||
|
</table>
|
||||||
|
<%= paginate @candidates %>
|
||||||
|
</main>
|
||||||
|
@ -2,48 +2,65 @@
|
|||||||
content_for :title, "Quiz Review - Skills Assessment Admin"
|
content_for :title, "Quiz Review - Skills Assessment Admin"
|
||||||
%>
|
%>
|
||||||
|
|
||||||
<div>
|
<div class="summary_tpl">
|
||||||
<h1>Quiz Review</h1>
|
<div class="admin-review">
|
||||||
|
<h2 class="prft-heading">Quiz Review</h2>
|
||||||
|
|
||||||
<div>
|
<div class="review_meta">
|
||||||
<% unless @candidate.pending? %>
|
<div>
|
||||||
<strong>Name:</strong> <%= @candidate.name %><br />
|
<% unless @candidate.pending? %>
|
||||||
|
<strong>Name:</strong> <%= @candidate.name %><br />
|
||||||
|
<% end %>
|
||||||
|
<strong>Test ID:</strong> <%= @candidate.test_hash %><br />
|
||||||
|
<strong>Years of Experience:</strong> <%= @candidate.experience %><br />
|
||||||
|
<strong>Client/Project:</strong> <%= @candidate.project %><br />
|
||||||
|
<strong>Position Type:</strong> <%= @candidate.position %><br />
|
||||||
|
<strong>Skill Needs:</strong> <%= @candidate.skill_needs %><br />
|
||||||
|
<strong>Recruiter Email:</strong> <%= mail_to @candidate.recruiter.name, @candidate.recruiter.email %><br />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<% @quiz.each do |question| %>
|
||||||
|
<%= form_for(:answer, url: '#never-post', html:{id: 'summary-form'}) do |form| %>
|
||||||
|
<article class="answer-sec <%= question.input_type %>-type" data-qid="<%= question.question_id %>">
|
||||||
|
<div class="question-heading">
|
||||||
|
<div class="question-title">
|
||||||
|
<h3><%= question.question %></h3>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="answer-container">
|
||||||
|
<% if question.attachment.present? %>
|
||||||
|
<%= image_tag question.attachment %>
|
||||||
|
<% end %>
|
||||||
|
<fieldset disabled class="answer-block">
|
||||||
|
<%= render partial: "quiz/#{question.input_type}", locals: {question: question, answer: question.answer, form: form} %>
|
||||||
|
</fieldset>
|
||||||
|
</div>
|
||||||
|
</article>
|
||||||
|
<% end #form_tag %>
|
||||||
|
<% end #questions loop %>
|
||||||
|
|
||||||
|
<%= link_to(admin_results_path, { class: 'secondary-btn' }) do %>
|
||||||
|
<button>Back to list</button>
|
||||||
<% end %>
|
<% end %>
|
||||||
<strong>Test ID:</strong> <%= @candidate.test_hash %><br />
|
|
||||||
<strong>Years of Experience:</strong> <%= @candidate.experience %><br />
|
|
||||||
<strong>Client/Project:</strong> <%= @candidate.project %><br />
|
|
||||||
<strong>Position Type:</strong> <%= @candidate.position %><br />
|
|
||||||
<strong>Skill Needs:</strong> <%= @candidate.skill_needs %><br />
|
|
||||||
<strong>Recruiter Email:</strong> <%= mail_to @candidate.recruiter.name, @candidate.recruiter.email %><br />
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<% @quiz.each do |question| %>
|
<div class="review-comments">
|
||||||
<%= form_for(:answer, url: '#never-post', html:{id: "summary-#{question.to_i}"}) do |form| %>
|
<div>
|
||||||
<h2><%= question.question %></h2>
|
<h2 class="prft-heading">Voting</h2>
|
||||||
<%= image_tag question.attachment if question.attachment.present? %>
|
<div class="review_meta">
|
||||||
|
<div><%= render partial: 'voting' %></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
<fieldset disabled>
|
<div>
|
||||||
<legend>Response</legend>
|
<h2 id="comment-header" class="prft-heading">Comments</h2>
|
||||||
<%= render partial: "quiz/#{question.input_type}", locals: {question: question, answer: question.answer, form: form} %>
|
<% if policy(QuizComment).new? %>
|
||||||
</fieldset>
|
<%= render partial: 'comment_form', locals: {comment: @comment, test_hash: @candidate.test_hash } %>
|
||||||
<% end %>
|
<% end %>
|
||||||
<% end %>
|
<%= render partial: 'comment', collection: @comments, locals: { test_hash: @candidate.test_hash } %>
|
||||||
|
<a href="#comment-header">Back to top</a>
|
||||||
<%= link_to("Back to list", admin_results_path, { class: "" }) %>
|
</div>
|
||||||
</div>
|
|
||||||
|
|
||||||
<div>
|
|
||||||
<div>
|
|
||||||
<h1>Voting</h1>
|
|
||||||
<div><%= render partial: 'voting' %></div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div>
|
|
||||||
<h1 id="comment-header">Comments</h1>
|
|
||||||
<% if policy(QuizComment).new? %>
|
|
||||||
<%= render partial: 'comment_form', locals: {comment: @comment, test_hash: @candidate.test_hash } %>
|
|
||||||
<% end %>
|
|
||||||
<%= render partial: 'comment', collection: @comments, locals: { test_hash: @candidate.test_hash } %>
|
|
||||||
<a href="#comment-header">Back to top</a>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -1,38 +1,33 @@
|
|||||||
<%= render partial: 'shared/form_model_errors', locals: { obj: user} %>
|
<%= render partial: 'shared/form_model_errors', locals: { obj: user} %>
|
||||||
|
|
||||||
<%= form_for user, url: action do |form| %>
|
<%= form_for user, url: action do |form| %>
|
||||||
<div>
|
<div class="form-group">
|
||||||
<%= form.label :name, "Full Name" %>
|
<%= form.label :name, "Full Name" %>
|
||||||
<%= form.text_field :name %>
|
<%= form.text_field :name %>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div>
|
<div class="form-group">
|
||||||
<%= form.label :email, "eMail" %>
|
<%= form.label :email, "eMail" %>
|
||||||
<%= form.email_field :email %>
|
<%= form.email_field :email %>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div>
|
<div class="form-group">
|
||||||
<%= form.label :role, "Role" %>
|
<%= form.label :role, "Role" %>
|
||||||
<%= form.select :role, admin_role_options(user.role), include_blank: false %>
|
<%= form.select :role, admin_role_options(user.role), include_blank: false %>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div role="group" aria-labelledby="assigned-quiz-list">
|
<div class="form-group">
|
||||||
<div id="assigned-quiz-list"><strong>Quiz Review List</strong></div>
|
<div><strong>Quiz Review List</strong></div>
|
||||||
<p>
|
<p>
|
||||||
Quizzes this user should be reviewing the results of.<br />
|
Quizzes this user should be reviewing the results of.<br />
|
||||||
Admins and Recruiters should not have any checked, unless they are expected
|
Admins and Recruiters should not have any checked, unless they are expected
|
||||||
to participate in the technical review for that quiz.
|
to participate in the technical review for that quiz.
|
||||||
</p>
|
</p>
|
||||||
|
<%= form.collection_check_boxes(:quiz_ids, Quiz.all, :id, :name, {}, {class: 'checkbox'}) do | quiz | %>
|
||||||
<%= hidden_field_tag('user[quiz_ids][]') %>
|
<div class="form-group-multiples">
|
||||||
<ul>
|
<%= quiz.check_box( checked: user.quizzes.include?(quiz.object)) %>
|
||||||
<%= form.collection_check_boxes(:quiz_ids, Quiz.all, :id, :name, {include_hidden: false}, {class: ""}) do | quiz | %>
|
<%= quiz.label %>
|
||||||
<li>
|
</div>
|
||||||
<%= quiz.check_box( checked: user.quizzes.include?(quiz.object)) %>
|
<% end %>
|
||||||
<%= quiz.label %>
|
|
||||||
</li>
|
|
||||||
<% end %>
|
|
||||||
</ul>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<%= form.submit %>
|
<%= form.submit %>
|
||||||
|
@ -11,7 +11,7 @@
|
|||||||
<td><%= link_to user.name, admin_user_path(user.to_i) %></td>
|
<td><%= link_to user.name, admin_user_path(user.to_i) %></td>
|
||||||
<td><%= mail_to(user.email) %></td>
|
<td><%= mail_to(user.email) %></td>
|
||||||
<td><%= user.role %></td>
|
<td><%= user.role %></td>
|
||||||
<td><%= link_to 'edit', admin_edit_user_path(user.to_i), { class: "" } if policy(user).edit? %></td>
|
<td><%= link_to 'edit', admin_edit_user_path(user.to_i), { class: 'btn tertiary-btn' } if policy(user).edit? %></td>
|
||||||
</tr>
|
</tr>
|
||||||
<% end %>
|
<% end %>
|
||||||
</table>
|
</table>
|
||||||
|
@ -1,8 +1,5 @@
|
|||||||
<%
|
<%
|
||||||
content_for :section_title, "Edit: #{@user.name}"
|
content_for :section_title, "Edit: #{@user.name}"
|
||||||
content_for :title, "Users - Skills Assessment Admin"
|
|
||||||
%>
|
%>
|
||||||
|
|
||||||
<h1>Edit <%= @user.name %></h1>
|
|
||||||
|
|
||||||
<%= render partial: 'form', locals: {user: @user, action: admin_update_user_path } %>
|
<%= render partial: 'form', locals: {user: @user, action: admin_update_user_path } %>
|
||||||
|
@ -1,10 +1,7 @@
|
|||||||
<%
|
<%
|
||||||
content_for :section_title, "Users"
|
content_for :section_title, "Users"
|
||||||
content_for :title, "Users - Skills Assessment Admin"
|
|
||||||
%>
|
%>
|
||||||
|
|
||||||
<h1>Users</h1>
|
<h1>Users</h1>
|
||||||
|
|
||||||
<%= render partial: 'admin/user/table_list', locals: { users: @users } %>
|
<%= render partial: 'admin/user/table_list', locals: { users: @users } %>
|
||||||
|
<%= link_to('New User', admin_new_user_path, { class: 'btn' }) if policy(User).create? %>
|
||||||
<%= link_to('New User', admin_new_user_path, { class: "" }) if policy(User).create? %>
|
|
||||||
|
@ -1,8 +1,5 @@
|
|||||||
<%
|
<%
|
||||||
content_for :section_title, "Users"
|
content_for :section_title, "New User"
|
||||||
content_for :title, "Users - Skills Assessment Admin"
|
|
||||||
%>
|
%>
|
||||||
|
|
||||||
<h1>New User</h1>
|
|
||||||
|
|
||||||
<%= render partial: 'form', locals: {user: @user, action: admin_create_user_path } %>
|
<%= render partial: 'form', locals: {user: @user, action: admin_create_user_path } %>
|
||||||
|
@ -1,17 +1,16 @@
|
|||||||
<%
|
<%
|
||||||
content_for :section_title, "Users"
|
content_for :section_title, "#{@user.name}"
|
||||||
content_for :title, "Users - Skills Assessment Admin"
|
|
||||||
%>
|
%>
|
||||||
|
|
||||||
<h1><%= @user.name %></h1>
|
<p><%= @user.name %></p>
|
||||||
<div><%= mail_to(@user.email) %></div>
|
<p><%= mail_to(@user.email) %></p>
|
||||||
<div><%= @user.role %></div>
|
<p><%= @user.role %></p>
|
||||||
|
|
||||||
<div>Quizzes:</div>
|
<p>Quizzes:</p>
|
||||||
<ul>
|
<ul>
|
||||||
<% @user.quizzes.each do |quiz| %>
|
<% @user.quizzes.each do |quiz| %>
|
||||||
<li><%= quiz.name %></li>
|
<li><%= quiz.name %></li>
|
||||||
<% end %>
|
<% end %>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<%= link_to('Edit', admin_edit_user_path(@user.to_i), { class: "" }) %>
|
<%= link_to('Edit', admin_edit_user_path(@user.to_i), { class: 'btn' }) %>
|
||||||
|
@ -1,14 +1,20 @@
|
|||||||
<% content_for :title, "Skills Assessment" %>
|
<% content_for :title, "Skills Assessment" %>
|
||||||
|
|
||||||
<h1>Let's Get Started</h1>
|
<main class="intro_tpl">
|
||||||
|
<h1 class="prft-heading">Let's Get Started</h1>
|
||||||
|
<p>
|
||||||
|
Hey there! Give us your Test ID, and we'll get you started.
|
||||||
|
</p>
|
||||||
|
|
||||||
<p>Hey there! Give us your Test ID, and we'll get you started.</p>
|
<%= form_tag(validate_candidate_path) do %>
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="userid">What's your Test ID?</label>
|
||||||
|
<input type="text" id="test_id" name="test_id" required/>
|
||||||
|
|
||||||
<%= form_tag(validate_candidate_path) do %>
|
<% if flash[:error].present? %>
|
||||||
<%= render partial: "shared/generic_flash" %>
|
<div class="error"><%= flash[:error] %></div>
|
||||||
|
<% end %>
|
||||||
<label for="test_id">What's your Test ID?</label>
|
</div>
|
||||||
<input type="text" id="test_id" name="test_id" required />
|
<button type="submit">Log in</button>
|
||||||
|
<% end %>
|
||||||
<button type="submit">Log in</button>
|
</main>
|
||||||
<% end %>
|
|
||||||
|
@ -1,10 +1,11 @@
|
|||||||
<% content_for :title, "Skills Assessment" %>
|
<% content_for :title, "Skills Assessment" %>
|
||||||
|
|
||||||
<h1>Oops!</h1>
|
<main class="intro_tpl">
|
||||||
|
<h1 class="prft-heading">Oops!</h1>
|
||||||
|
<p>
|
||||||
|
Looks like you hit the browser's Back button. You can't go backwards in the test,
|
||||||
|
but you'll have a chance at the end to review your answers and make changes.
|
||||||
|
</p>
|
||||||
|
|
||||||
<p>
|
<a href="<%= question_path %>"><button>Continue Test</button></a>
|
||||||
Looks like you hit the browser's Back button. You can't go backwards in the test,
|
</main>
|
||||||
but you'll have a chance at the end to review your answers and make changes.
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<%= link_to "Continue Test", question_path, {class: ""} %>
|
|
||||||
|
@ -1,8 +1,11 @@
|
|||||||
<% content_for :title, "Saved! - Skills Assessment" %>
|
<% content_for :title, "Saved! - Skills Assessment" %>
|
||||||
|
<main class="styleguide_tpl">
|
||||||
|
<p>
|
||||||
|
Your test results have been saved. You can visit again later with your Test ID to complete
|
||||||
|
the test starting from where you left off.
|
||||||
|
</p>
|
||||||
|
|
||||||
<p>
|
<div class="button-wrap">
|
||||||
Your test results have been saved. You can visit again later with your Test ID to complete
|
<a class="btn primary-btn" href="<%= question_path %>">Return to test</a>
|
||||||
the test starting from where you left off.
|
</div>
|
||||||
</p>
|
</main>
|
||||||
|
|
||||||
<%= link_to "Return to test", question_path, {class: ""} %>
|
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
<% content_for :title, "Thank You - Skills Assessment" %>
|
<% content_for :title, "Thank You - Skills Assessment" %>
|
||||||
|
<main class="styleguide_tpl">
|
||||||
<h1>Thank you!</h1>
|
<h1>Thank you!</h1>
|
||||||
|
<p>
|
||||||
<p>
|
Your answers have been submitted. We will review and your recruiter
|
||||||
Your answers have been submitted.
|
will be in touch.
|
||||||
We will review and your recruiter will be in touch.
|
</p>
|
||||||
</p>
|
</main>
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user