Compare commits
17 Commits
master
...
refactor/F
Author | SHA1 | Date | |
---|---|---|---|
|
8bfe455946 | ||
|
0f0e7ae75e | ||
|
9f3e90386e | ||
|
b961fe7553 | ||
|
9368184aa8 | ||
|
d53d87f1bc | ||
|
235b4314a4 | ||
|
4d71ac7166 | ||
|
2730ca10c8 | ||
|
0b82cb1d01 | ||
|
39246ca138 | ||
|
5e743ca2eb | ||
|
0727440a31 | ||
|
cb6f41fe29 | ||
|
2cc94ba296 | ||
|
858c9b2eeb | ||
|
8549bd2d15 |
@ -1,21 +1,40 @@
|
||||
# http://eslint.org/docs/user-guide/configuring
|
||||
# http://eslint.org/docs/2.0.0/rules/
|
||||
---
|
||||
parser: esprima
|
||||
env:
|
||||
browser: true
|
||||
browser: true,
|
||||
jquery: true
|
||||
extends: 'eslint:recommended'
|
||||
settings:
|
||||
ecmascript: 6
|
||||
plugins:
|
||||
- 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:
|
||||
- error
|
||||
- warn
|
||||
- 2
|
||||
linebreak-style:
|
||||
- error
|
||||
- unix
|
||||
no-trailing-spaces:
|
||||
no-console:
|
||||
# console.error and console.warn are ok, but let's
|
||||
# keep console.log out of production code.
|
||||
- warn
|
||||
- allow:
|
||||
- warn
|
||||
- error
|
||||
no-mixed-spaces-and-tabs:
|
||||
- warn
|
||||
- smart-tabs
|
||||
no-trailing-spaces: warn
|
||||
no-underscore-dangle: warn
|
||||
quotes: off
|
||||
semi:
|
||||
- error
|
||||
- always
|
||||
semi: warn
|
||||
|
@ -1,11 +0,0 @@
|
||||
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,13 +14,11 @@ gem 'mailjet', '~> 1.3.8'
|
||||
gem 'puma', '~> 3.0'
|
||||
gem 'pundit'
|
||||
gem 'sass-rails', '~> 5.0'
|
||||
gem 'autoprefixer-rails', '~> 6'
|
||||
gem 'settingslogic', '~> 2.0.9'
|
||||
gem 'turbolinks', '~> 5'
|
||||
gem 'uglifier', '>= 1.3.0'
|
||||
|
||||
# assets
|
||||
gem 'bourbon'
|
||||
gem 'neat'
|
||||
gem 'local_time'
|
||||
|
||||
# Foundation for Emails
|
||||
gem 'inky-rb', require: 'inky'
|
||||
|
143
Gemfile.lock
143
Gemfile.lock
@ -1,39 +1,39 @@
|
||||
GEM
|
||||
remote: https://rubygems.org/
|
||||
specs:
|
||||
actioncable (5.0.1)
|
||||
actionpack (= 5.0.1)
|
||||
nio4r (~> 1.2)
|
||||
actioncable (5.0.2)
|
||||
actionpack (= 5.0.2)
|
||||
nio4r (>= 1.2, < 3.0)
|
||||
websocket-driver (~> 0.6.1)
|
||||
actionmailer (5.0.1)
|
||||
actionpack (= 5.0.1)
|
||||
actionview (= 5.0.1)
|
||||
activejob (= 5.0.1)
|
||||
actionmailer (5.0.2)
|
||||
actionpack (= 5.0.2)
|
||||
actionview (= 5.0.2)
|
||||
activejob (= 5.0.2)
|
||||
mail (~> 2.5, >= 2.5.4)
|
||||
rails-dom-testing (~> 2.0)
|
||||
actionpack (5.0.1)
|
||||
actionview (= 5.0.1)
|
||||
activesupport (= 5.0.1)
|
||||
actionpack (5.0.2)
|
||||
actionview (= 5.0.2)
|
||||
activesupport (= 5.0.2)
|
||||
rack (~> 2.0)
|
||||
rack-test (~> 0.6.3)
|
||||
rails-dom-testing (~> 2.0)
|
||||
rails-html-sanitizer (~> 1.0, >= 1.0.2)
|
||||
actionview (5.0.1)
|
||||
activesupport (= 5.0.1)
|
||||
actionview (5.0.2)
|
||||
activesupport (= 5.0.2)
|
||||
builder (~> 3.1)
|
||||
erubis (~> 2.7.0)
|
||||
rails-dom-testing (~> 2.0)
|
||||
rails-html-sanitizer (~> 1.0, >= 1.0.2)
|
||||
activejob (5.0.1)
|
||||
activesupport (= 5.0.1)
|
||||
rails-html-sanitizer (~> 1.0, >= 1.0.3)
|
||||
activejob (5.0.2)
|
||||
activesupport (= 5.0.2)
|
||||
globalid (>= 0.3.6)
|
||||
activemodel (5.0.1)
|
||||
activesupport (= 5.0.1)
|
||||
activerecord (5.0.1)
|
||||
activemodel (= 5.0.1)
|
||||
activesupport (= 5.0.1)
|
||||
activemodel (5.0.2)
|
||||
activesupport (= 5.0.2)
|
||||
activerecord (5.0.2)
|
||||
activemodel (= 5.0.2)
|
||||
activesupport (= 5.0.2)
|
||||
arel (~> 7.0)
|
||||
activesupport (5.0.1)
|
||||
activesupport (5.0.2)
|
||||
concurrent-ruby (~> 1.0, >= 1.0.2)
|
||||
i18n (~> 0.7)
|
||||
minitest (~> 5.1)
|
||||
@ -43,6 +43,8 @@ GEM
|
||||
ansi (1.5.0)
|
||||
arel (7.1.4)
|
||||
ast (2.3.0)
|
||||
autoprefixer-rails (6.7.7)
|
||||
execjs
|
||||
awesome_print (1.7.0)
|
||||
bcrypt (3.1.11)
|
||||
better_errors (2.1.1)
|
||||
@ -51,37 +53,41 @@ GEM
|
||||
rack (>= 0.9.0)
|
||||
binding_of_caller (0.7.2)
|
||||
debug_inspector (>= 0.0.1)
|
||||
bourbon (4.2.7)
|
||||
sass (~> 3.4)
|
||||
thor (~> 0.19)
|
||||
brakeman (3.4.1)
|
||||
builder (3.2.2)
|
||||
brakeman (3.5.0)
|
||||
builder (3.2.3)
|
||||
byebug (9.0.6)
|
||||
choice (0.2.0)
|
||||
coderay (1.1.1)
|
||||
concurrent-ruby (1.0.4)
|
||||
css_parser (1.4.7)
|
||||
coffee-rails (4.2.1)
|
||||
coffee-script (>= 2.2.0)
|
||||
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
|
||||
debug_inspector (0.0.2)
|
||||
docile (1.1.5)
|
||||
domain_name (0.5.20161129)
|
||||
domain_name (0.5.20170223)
|
||||
unf (>= 0.0.5, < 1.0.0)
|
||||
em-websocket (0.5.1)
|
||||
eventmachine (>= 0.12.9)
|
||||
http_parser.rb (~> 0.6.0)
|
||||
erubis (2.7.0)
|
||||
eventmachine (1.2.1)
|
||||
eventmachine (1.2.3)
|
||||
execjs (2.7.0)
|
||||
faker (1.7.3)
|
||||
i18n (~> 0.5)
|
||||
ffi (1.9.14)
|
||||
ffi (1.9.18)
|
||||
figaro (1.1.1)
|
||||
thor (~> 0.14)
|
||||
formatador (0.2.5)
|
||||
foundation_emails (2.2.1.0)
|
||||
globalid (0.3.7)
|
||||
activesupport (>= 4.1.0)
|
||||
guard (2.14.0)
|
||||
guard (2.14.1)
|
||||
formatador (>= 0.2.4)
|
||||
listen (>= 2.7, < 4.0)
|
||||
lumberjack (~> 1.0)
|
||||
@ -112,12 +118,12 @@ GEM
|
||||
http-cookie (1.0.3)
|
||||
domain_name (~> 0.5)
|
||||
http_parser.rb (0.6.0)
|
||||
i18n (0.7.0)
|
||||
i18n (0.8.1)
|
||||
inky-rb (1.3.7.2)
|
||||
foundation_emails (~> 2)
|
||||
nokogiri
|
||||
jbuilder (2.6.1)
|
||||
activesupport (>= 3.0.0, < 5.1)
|
||||
jbuilder (2.6.3)
|
||||
activesupport (>= 3.0.0, < 5.2)
|
||||
multi_json (~> 1.2)
|
||||
jquery-rails (4.2.2)
|
||||
rails-dom-testing (>= 1, < 3)
|
||||
@ -140,6 +146,8 @@ GEM
|
||||
rb-fsevent (~> 0.9, >= 0.9.4)
|
||||
rb-inotify (~> 0.9, >= 0.9.7)
|
||||
ruby_dep (~> 1.2)
|
||||
local_time (1.0.3)
|
||||
coffee-rails
|
||||
loofah (2.0.3)
|
||||
nokogiri (>= 1.5.9)
|
||||
lumberjack (1.0.11)
|
||||
@ -155,32 +163,29 @@ GEM
|
||||
mime-types-data (3.2016.0521)
|
||||
mini_portile2 (2.1.0)
|
||||
minitest (5.10.1)
|
||||
minitest-reporters (1.1.13)
|
||||
minitest-reporters (1.1.14)
|
||||
ansi
|
||||
builder
|
||||
minitest (>= 5.0)
|
||||
ruby-progressbar
|
||||
multi_json (1.12.1)
|
||||
mysql2 (0.4.5)
|
||||
neat (1.8.0)
|
||||
sass (>= 3.3)
|
||||
thor (~> 0.19)
|
||||
nenv (0.3.0)
|
||||
netrc (0.11.0)
|
||||
nio4r (1.2.1)
|
||||
nio4r (2.0.0)
|
||||
nokogiri (1.7.0.1)
|
||||
mini_portile2 (~> 2.1.0)
|
||||
notiffany (0.1.1)
|
||||
nenv (~> 0.1)
|
||||
shellany (~> 0.0)
|
||||
parser (2.3.3.1)
|
||||
parser (2.4.0.0)
|
||||
ast (~> 2.2)
|
||||
policy-assertions (0.0.3)
|
||||
activesupport (>= 3.0.0)
|
||||
pundit (>= 1.0.0)
|
||||
powerpack (0.1.1)
|
||||
premailer (1.8.7)
|
||||
css_parser (>= 1.4.5)
|
||||
premailer (1.10.0)
|
||||
css_parser (>= 1.4.9)
|
||||
htmlentities (>= 4.0.0)
|
||||
premailer-rails (1.9.5)
|
||||
actionmailer (>= 3, < 6)
|
||||
@ -192,10 +197,10 @@ GEM
|
||||
pry-byebug (3.4.2)
|
||||
byebug (~> 9.0)
|
||||
pry (~> 0.10)
|
||||
pry-rails (0.3.4)
|
||||
pry-rails (0.3.5)
|
||||
pry (>= 0.9.10)
|
||||
public_suffix (2.0.5)
|
||||
puma (3.6.2)
|
||||
puma (3.7.1)
|
||||
pundit (1.1.0)
|
||||
activesupport (>= 3.0.0)
|
||||
rack (2.0.1)
|
||||
@ -203,17 +208,17 @@ GEM
|
||||
rack
|
||||
rack-test (0.6.3)
|
||||
rack (>= 1.0)
|
||||
rails (5.0.1)
|
||||
actioncable (= 5.0.1)
|
||||
actionmailer (= 5.0.1)
|
||||
actionpack (= 5.0.1)
|
||||
actionview (= 5.0.1)
|
||||
activejob (= 5.0.1)
|
||||
activemodel (= 5.0.1)
|
||||
activerecord (= 5.0.1)
|
||||
activesupport (= 5.0.1)
|
||||
rails (5.0.2)
|
||||
actioncable (= 5.0.2)
|
||||
actionmailer (= 5.0.2)
|
||||
actionpack (= 5.0.2)
|
||||
actionview (= 5.0.2)
|
||||
activejob (= 5.0.2)
|
||||
activemodel (= 5.0.2)
|
||||
activerecord (= 5.0.2)
|
||||
activesupport (= 5.0.2)
|
||||
bundler (>= 1.3.0, < 2.0)
|
||||
railties (= 5.0.1)
|
||||
railties (= 5.0.2)
|
||||
sprockets-rails (>= 2.0.0)
|
||||
rails-controller-testing (1.0.1)
|
||||
actionpack (~> 5.x)
|
||||
@ -229,18 +234,18 @@ GEM
|
||||
ruby-graphviz (~> 1.2)
|
||||
rails-html-sanitizer (1.0.3)
|
||||
loofah (~> 2.0)
|
||||
railties (5.0.1)
|
||||
actionpack (= 5.0.1)
|
||||
activesupport (= 5.0.1)
|
||||
railties (5.0.2)
|
||||
actionpack (= 5.0.2)
|
||||
activesupport (= 5.0.2)
|
||||
method_source
|
||||
rake (>= 0.8.7)
|
||||
thor (>= 0.18.1, < 2.0)
|
||||
rainbow (2.2.1)
|
||||
rake (12.0.0)
|
||||
rb-fsevent (0.9.8)
|
||||
rb-inotify (0.9.7)
|
||||
rb-inotify (0.9.8)
|
||||
ffi (>= 0.5.0)
|
||||
rest-client (2.0.0)
|
||||
rest-client (2.0.1)
|
||||
http-cookie (>= 1.0.2, < 2.0)
|
||||
mime-types (>= 1.16, < 4.0)
|
||||
netrc (~> 0.8)
|
||||
@ -262,13 +267,13 @@ GEM
|
||||
tilt (>= 1.1, < 3)
|
||||
settingslogic (2.0.9)
|
||||
shellany (0.0.1)
|
||||
simplecov (0.12.0)
|
||||
simplecov (0.13.0)
|
||||
docile (~> 1.1.0)
|
||||
json (>= 1.8, < 3)
|
||||
simplecov-html (~> 0.10.0)
|
||||
simplecov-html (0.10.0)
|
||||
slop (3.6.0)
|
||||
spring (2.0.0)
|
||||
spring (2.0.1)
|
||||
activesupport (>= 4.2)
|
||||
spring-watcher-listen (2.0.1)
|
||||
listen (>= 2.7, < 4.0)
|
||||
@ -282,25 +287,25 @@ GEM
|
||||
sprockets (>= 3.0.0)
|
||||
table_print (1.5.6)
|
||||
thor (0.19.4)
|
||||
thread_safe (0.3.5)
|
||||
tilt (2.0.5)
|
||||
thread_safe (0.3.6)
|
||||
tilt (2.0.6)
|
||||
turbolinks (5.0.1)
|
||||
turbolinks-source (~> 5)
|
||||
turbolinks-source (5.0.0)
|
||||
tzinfo (1.2.2)
|
||||
thread_safe (~> 0.1)
|
||||
uglifier (3.0.4)
|
||||
uglifier (3.1.4)
|
||||
execjs (>= 0.3.0, < 3)
|
||||
unf (0.1.4)
|
||||
unf_ext
|
||||
unf_ext (0.0.7.2)
|
||||
unicode-display_width (1.1.2)
|
||||
unicode-display_width (1.1.3)
|
||||
web-console (3.4.0)
|
||||
actionview (>= 5.0)
|
||||
activemodel (>= 5.0)
|
||||
debug_inspector
|
||||
railties (>= 5.0)
|
||||
websocket-driver (0.6.4)
|
||||
websocket-driver (0.6.5)
|
||||
websocket-extensions (>= 0.1.0)
|
||||
websocket-extensions (0.1.2)
|
||||
|
||||
@ -308,11 +313,11 @@ PLATFORMS
|
||||
ruby
|
||||
|
||||
DEPENDENCIES
|
||||
autoprefixer-rails (~> 6)
|
||||
awesome_print
|
||||
bcrypt (~> 3.1.7)
|
||||
better_errors
|
||||
binding_of_caller
|
||||
bourbon
|
||||
brakeman
|
||||
byebug
|
||||
faker
|
||||
@ -329,10 +334,10 @@ DEPENDENCIES
|
||||
json (~> 2.0.2)
|
||||
kaminari
|
||||
listen
|
||||
local_time
|
||||
mailjet (~> 1.3.8)
|
||||
minitest-reporters
|
||||
mysql2 (>= 0.3.18, < 0.5)
|
||||
neat
|
||||
policy-assertions
|
||||
premailer-rails
|
||||
pry-byebug
|
||||
|
@ -70,13 +70,18 @@ guard :minitest, spring: "bin/rails test", all_after_pass: true do
|
||||
watch(%r{^app/views/(.*_mailer/)?([^/]+)\.erb$}) { ["test/mailers", "test/integration"] }
|
||||
end
|
||||
|
||||
# ESLint
|
||||
guard :shell, all_on_start: true do
|
||||
# TODO: Annoyingly, all files are linted twice on start/full runs. Why?
|
||||
# ESLint
|
||||
watch %r{app/assets/javascripts/*/.*} do |file|
|
||||
system %(echo "ESLint:\033[32m #{file[0]}\033[0m")
|
||||
system %(./node_modules/eslint/bin/eslint.js #{file[0]})
|
||||
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
|
||||
|
||||
guard :rubocop, cli: %w(-D -S -a) do
|
||||
|
@ -1,18 +0,0 @@
|
||||
$(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();
|
||||
});
|
||||
});
|
||||
|
||||
});
|
@ -1,27 +0,0 @@
|
||||
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,9 +14,4 @@
|
||||
//= require jquery_ujs
|
||||
//= require turbolinks
|
||||
//= require modernizr-lite/modernizr
|
||||
|
||||
//= require ajax-links
|
||||
|
||||
//= require forms/button-group
|
||||
//= require forms/animations
|
||||
//= require forms/textarea-limit
|
||||
//= require local_time
|
||||
|
@ -1,13 +0,0 @@
|
||||
// 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);
|
@ -1,30 +0,0 @@
|
||||
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');
|
||||
});
|
||||
});
|
@ -1,8 +0,0 @@
|
||||
/**
|
||||
* Button Group Functionality
|
||||
*/
|
||||
|
||||
$('.btn-group button').click(function() {
|
||||
$(this).siblings().removeClass('selected');
|
||||
$(this).addClass('selected');
|
||||
});
|
@ -1,25 +0,0 @@
|
||||
$.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 +0,0 @@
|
||||
//= require html5shiv/dist/html5shiv.min
|
@ -12,6 +12,7 @@ function updateResults(elem) {
|
||||
var iBody = document.createElement('body');
|
||||
|
||||
var codeFrame = document.createElement('iframe');
|
||||
codeFrame.setAttribute("title", "live-code-results-" + resultsContainer.getAttribute("data-qid"));
|
||||
codeFrame.setAttribute("width", "100%");
|
||||
codeFrame.setAttribute("height", "100%");
|
||||
resultsContainer.appendChild(codeFrame);
|
||||
@ -27,6 +28,7 @@ function updateResults(elem) {
|
||||
codeStyle.appendChild(rulesNode);
|
||||
iHead.appendChild(codeStyle);
|
||||
|
||||
iDoc.setAttribute('lang', 'en');
|
||||
iDoc.appendChild(iHead);
|
||||
iBody.innerHTML = codeHtml;
|
||||
iDoc.appendChild(iBody);
|
||||
|
@ -41,11 +41,11 @@
|
||||
*/
|
||||
var fillOutLines = function(codeLines, h, lineNo){
|
||||
while ( (codeLines.height() - h ) <= 0 ){
|
||||
if ( lineNo == opts.selectedLine )
|
||||
if ( lineNo == opts.selectedLine ) {
|
||||
codeLines.append("<div class='lineno lineselect'>" + lineNo + "</div>");
|
||||
else
|
||||
} else {
|
||||
codeLines.append("<div class='lineno'>" + lineNo + "</div>");
|
||||
|
||||
}
|
||||
lineNo++;
|
||||
}
|
||||
return lineNo;
|
||||
|
@ -1,95 +0,0 @@
|
||||
/* 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,15 +12,18 @@
|
||||
*
|
||||
*/
|
||||
|
||||
@import 'bourbon';
|
||||
@import 'neat';
|
||||
@import 'settings/variables';
|
||||
@import 'settings/fonts';
|
||||
@import 'settings/mixins';
|
||||
|
||||
@import 'core/fonts';
|
||||
@import 'core/variables';
|
||||
@import 'core/animations';
|
||||
/*= require normalize-css/normalize */
|
||||
@import 'settings/reset';
|
||||
|
||||
@import 'atoms/**/*';
|
||||
@import 'molecules/**/*';
|
||||
// @import 'organisms/**/*';
|
||||
@import 'templates/**/*';
|
||||
@import 'pages/**/*';
|
||||
@import 'generic/typography';
|
||||
|
||||
@import 'elements/body';
|
||||
@import 'elements/progressbar';
|
||||
@import 'elements/header';
|
||||
@import 'elements/form-question';
|
||||
|
||||
// @import 'objects/';
|
||||
|
@ -1,8 +0,0 @@
|
||||
.alert {
|
||||
padding: 20px;
|
||||
border-radius: 5px;
|
||||
&.alert-success {
|
||||
background-color: $accent-color-3;
|
||||
color: $white;
|
||||
}
|
||||
}
|
@ -1,61 +0,0 @@
|
||||
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;
|
||||
}
|
||||
}
|
@ -1,10 +0,0 @@
|
||||
figure {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
img,
|
||||
picture {
|
||||
margin: 0;
|
||||
max-width: 100%;
|
||||
}
|
||||
|
@ -1,75 +0,0 @@
|
||||
// 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%;
|
||||
}
|
@ -1,78 +0,0 @@
|
||||
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;
|
||||
}
|
||||
}
|
4
app/assets/stylesheets/browserslist
Normal file
4
app/assets/stylesheets/browserslist
Normal file
@ -0,0 +1,4 @@
|
||||
# autoprefixer browsers list
|
||||
> 1%
|
||||
last 2 versions
|
||||
IE > 8
|
@ -1,28 +0,0 @@
|
||||
@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;
|
||||
}
|
||||
}
|
@ -1,163 +0,0 @@
|
||||
//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;
|
||||
}
|
@ -1,948 +0,0 @@
|
||||
$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 }
|
||||
}
|
15
app/assets/stylesheets/elements/_body.scss
Normal file
15
app/assets/stylesheets/elements/_body.scss
Normal file
@ -0,0 +1,15 @@
|
||||
body {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
|
||||
> {
|
||||
& header,
|
||||
& main,
|
||||
& footer {
|
||||
order: 2;
|
||||
margin: $gutter $gutter 0;
|
||||
}
|
||||
}
|
||||
}
|
18
app/assets/stylesheets/elements/_form-question.scss
Normal file
18
app/assets/stylesheets/elements/_form-question.scss
Normal file
@ -0,0 +1,18 @@
|
||||
.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;
|
||||
}
|
||||
}
|
21
app/assets/stylesheets/elements/_header.scss
Normal file
21
app/assets/stylesheets/elements/_header.scss
Normal file
@ -0,0 +1,21 @@
|
||||
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;
|
||||
}
|
||||
}
|
7
app/assets/stylesheets/elements/_progressbar.scss
Normal file
7
app/assets/stylesheets/elements/_progressbar.scss
Normal file
@ -0,0 +1,7 @@
|
||||
.progressbar {
|
||||
order: 1;
|
||||
margin: 0;
|
||||
background-color: $turquoise;
|
||||
padding: $gutter / 2 $gutter;
|
||||
color: $white;
|
||||
}
|
14
app/assets/stylesheets/generic/_typography.scss
Normal file
14
app/assets/stylesheets/generic/_typography.scss
Normal file
@ -0,0 +1,14 @@
|
||||
body {
|
||||
@include primary-font;
|
||||
font-size: 1em;
|
||||
}
|
||||
|
||||
h1,
|
||||
h2,
|
||||
h3,
|
||||
h4,
|
||||
h5,
|
||||
h6 {
|
||||
@include heading-font;
|
||||
margin: 0 0 $gutter;
|
||||
}
|
@ -1,47 +1,60 @@
|
||||
// sass-lint:disable no-important
|
||||
|
||||
a {
|
||||
text-decoration: underline;
|
||||
color: $success-color;
|
||||
}
|
||||
|
||||
.email-container {
|
||||
.email-heading th {
|
||||
font-family: 'Lato', Helvetica Neue, Helvetica, Ariel, sans-serif;
|
||||
.prft-slash {
|
||||
font-size: 100px;
|
||||
font-weight: 200;
|
||||
color: $success-color;
|
||||
vertical-align: middle;
|
||||
}
|
||||
.email-title {
|
||||
text-transform: uppercase;
|
||||
font-weight: 700;
|
||||
font-size:18px;
|
||||
vertical-align: sub;
|
||||
.email-heading {
|
||||
th {
|
||||
font-family: 'Lato', Helvetica Neue, Helvetica, Ariel, sans-serif;
|
||||
|
||||
.prft-slash {
|
||||
vertical-align: middle;
|
||||
color: $success-color;
|
||||
font-size: 100px;
|
||||
font-weight: 200;
|
||||
}
|
||||
|
||||
.email-title {
|
||||
vertical-align: sub;
|
||||
text-transform: uppercase;
|
||||
font-size: 18px;
|
||||
font-weight: 700;
|
||||
}
|
||||
}
|
||||
}
|
||||
.email-body * {
|
||||
font-family: 'Lato', Helvetica Neue, Helvetica, Ariel, sans-serif;
|
||||
font-size: 16px;
|
||||
line-height: 1.5em;
|
||||
padding-bottom: 20px;
|
||||
font-weight:300;
|
||||
word-break: break-word;
|
||||
strong {
|
||||
font-weight:bold;
|
||||
|
||||
.email-body {
|
||||
* {
|
||||
padding-bottom: 20px;
|
||||
line-height: 1.5em;
|
||||
font-family: 'Lato', Helvetica Neue, Helvetica, Ariel, sans-serif;
|
||||
font-size: 16px;
|
||||
font-weight: 300;
|
||||
word-break: break-word;
|
||||
|
||||
strong {
|
||||
font-weight: bold;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.email-copyright {
|
||||
vertical-align: bottom;
|
||||
color: $dark-grey;
|
||||
font-family: 'Lato', Helvetica Neue, Helvetica, Ariel, sans-serif;
|
||||
font-size: 10px;
|
||||
color: #909090;
|
||||
vertical-align: bottom;
|
||||
}
|
||||
|
||||
.email-logo {
|
||||
text-align: right;
|
||||
vertical-align: bottom;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
.email-bg {
|
||||
background:#fef035 !important;
|
||||
background-color:#fef035 !important;
|
||||
background: $accent-color-2 !important;
|
||||
background-color: $accent-color-2 !important;
|
||||
}
|
||||
}
|
||||
|
@ -1,6 +1,7 @@
|
||||
// foundation overrides
|
||||
$dark-grey: #909090;
|
||||
|
||||
$success-color: #EF0734;
|
||||
// foundation overrides
|
||||
$success-color: #ef0734;
|
||||
$global-width: 600px;
|
||||
$body-font-family: inherit;
|
||||
$body-background: #ffffff;
|
||||
$body-background: #fff;
|
||||
|
@ -1,18 +1,21 @@
|
||||
@import 'foundation-emails/scss/util/util',
|
||||
'foundation-emails/scss/global',
|
||||
@import '../settings/variables';
|
||||
|
||||
'foundation_global_overrides',
|
||||
@import 'foundation-emails/scss/util/util';
|
||||
@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';
|
||||
|
@ -1,57 +0,0 @@
|
||||
.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;
|
||||
}
|
||||
|
||||
}
|
@ -1,31 +0,0 @@
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
@ -1,118 +0,0 @@
|
||||
.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;
|
||||
}
|
||||
}
|
||||
}
|
@ -1,26 +0,0 @@
|
||||
.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;
|
||||
}
|
||||
}
|
@ -1,110 +0,0 @@
|
||||
#{$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;
|
||||
}
|
||||
}
|
||||
}
|
@ -1,303 +0,0 @@
|
||||
// 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;
|
||||
}
|
||||
}
|
@ -1,35 +0,0 @@
|
||||
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');
|
||||
}
|
||||
}
|
||||
}
|
@ -1,143 +0,0 @@
|
||||
.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;
|
||||
}
|
@ -1,17 +0,0 @@
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
@ -1,41 +0,0 @@
|
||||
.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;
|
||||
}
|
||||
}
|
@ -1,66 +0,0 @@
|
||||
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;
|
||||
}
|
@ -1,58 +0,0 @@
|
||||
.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;
|
||||
}
|
||||
}
|
||||
}
|
@ -1,32 +0,0 @@
|
||||
.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; }
|
||||
}
|
163
app/assets/stylesheets/settings/_fonts.scss
Normal file
163
app/assets/stylesheets/settings/_fonts.scss
Normal file
@ -0,0 +1,163 @@
|
||||
// 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');
|
||||
}
|
9
app/assets/stylesheets/settings/_mixins.scss
Normal file
9
app/assets/stylesheets/settings/_mixins.scss
Normal file
@ -0,0 +1,9 @@
|
||||
@mixin primary-font {
|
||||
font-family: $primary-font-face;
|
||||
font-weight: 300;
|
||||
}
|
||||
|
||||
@mixin heading-font {
|
||||
font-family: $heading-font-face;
|
||||
font-weight: 100;
|
||||
}
|
27
app/assets/stylesheets/settings/_reset.scss
Normal file
27
app/assets/stylesheets/settings/_reset.scss
Normal file
@ -0,0 +1,27 @@
|
||||
// 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;
|
||||
}
|
28
app/assets/stylesheets/settings/_variables.scss
Normal file
28
app/assets/stylesheets/settings/_variables.scss
Normal file
@ -0,0 +1,28 @@
|
||||
// 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;
|
@ -1,44 +0,0 @@
|
||||
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;
|
||||
}
|
||||
}
|
@ -1,30 +0,0 @@
|
||||
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;
|
||||
}
|
||||
}
|
@ -1,26 +0,0 @@
|
||||
.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();
|
||||
}
|
||||
}
|
||||
}
|
@ -1,70 +0,0 @@
|
||||
.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();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,100 +0,0 @@
|
||||
.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,7 +28,8 @@ class Candidate < ApplicationRecord
|
||||
|
||||
def interview?
|
||||
return 'yes' if approved?
|
||||
'no' if declined?
|
||||
return 'no' if declined?
|
||||
'-'
|
||||
end
|
||||
|
||||
def build_reviews
|
||||
|
@ -1,4 +1,4 @@
|
||||
<nav>
|
||||
<nav aria-label="Admin Menu">
|
||||
<%= link_to("Users", admin_users_url) if policy(User).index? %>
|
||||
<% #= link_to("Departments", admin_departments_url) if policy(Department).index? %>
|
||||
<%= link_to("Quizzes", admin_quizzes_url) if policy(Quiz).index? %>
|
||||
|
@ -1,23 +1,20 @@
|
||||
<%
|
||||
content_for :main_class, "intro_tpl"
|
||||
content_for :title, "Skills Assessment Admin"
|
||||
%>
|
||||
<% content_for :title, "Skills Assessment Admin" %>
|
||||
|
||||
<h1>Admin Login</h1>
|
||||
|
||||
<%= form_for :auth, url: admin_login_path do |form| %>
|
||||
<% if flash[:error].present? %>
|
||||
<div class="form-group">
|
||||
<div>
|
||||
Need a <%= link_to "password reset", admin_reset_request_path %>?
|
||||
</div>
|
||||
<% end %>
|
||||
|
||||
<div class="form-group">
|
||||
<div>
|
||||
<%= form.label :email %>
|
||||
<%= form.email_field :email %>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<div>
|
||||
<%= form.label :password %>
|
||||
<%= form.password_field :password %>
|
||||
</div>
|
||||
|
@ -1,22 +1,18 @@
|
||||
<%
|
||||
content_for :main_class, "intro_tpl"
|
||||
content_for :title, "Skills Assessment Admin"
|
||||
%>
|
||||
<% content_for :title, "Skills Assessment Admin" %>
|
||||
|
||||
<h1>Password Reset</h1>
|
||||
|
||||
<%= form_for :auth, url: admin_reset_password_path do |form| %>
|
||||
<%= hidden_field_tag :reset_token, params[:reset_token] %>
|
||||
|
||||
<div class="form-group">
|
||||
<div>
|
||||
<%= form.label :password %>
|
||||
<%= form.password_field :password %>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<div>
|
||||
<%= form.label :password_confirmation %>
|
||||
<%= form.password_field :password_confirmation %>
|
||||
</div>
|
||||
|
||||
<%= submit_tag "Reset Password" %>
|
||||
<%= hidden_field_tag :reset_token, params[:reset_token] %>
|
||||
<% end %>
|
||||
|
@ -1,12 +1,9 @@
|
||||
<%
|
||||
content_for :main_class, "intro_tpl"
|
||||
content_for :title, "Skills Assessment Admin"
|
||||
%>
|
||||
<% content_for :title, "Skills Assessment Admin" %>
|
||||
|
||||
<h1>Password Reset</h1>
|
||||
<%= form_for :auth, url: admin_send_reset_path do |form| %>
|
||||
|
||||
<div class="form-group">
|
||||
<div>
|
||||
<%= form.label :email %>
|
||||
<%= form.email_field :email %>
|
||||
</div>
|
||||
|
@ -1,27 +1,29 @@
|
||||
<%= render partial: 'shared/form_model_errors', locals: { obj: candidate } %>
|
||||
|
||||
<%= form_for candidate, url: action, method: :post do |form| %>
|
||||
<div class="form-group">
|
||||
<div>
|
||||
<%= form.label :name, "Candidate name" %>
|
||||
<%= form.text_field :name %>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<div>
|
||||
<%= form.label :email, "Candidate email" %>
|
||||
<%= form.email_field :email %>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<div>
|
||||
<%= form.label :experience, "Years of experience" %>
|
||||
<%= form.select :experience, experience_options(candidate.experience), include_blank: false %>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<div>
|
||||
<%= form.label :project, "Client or project" %>
|
||||
<%= form.text_field :project %>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<div role="group" aria-labelledby="position-type">
|
||||
<span id="position-type">Position Type</span>
|
||||
|
||||
<%= form.radio_button :position, 'full-time' %>
|
||||
<%= form.label "position_full-time", "Full-time" %>
|
||||
|
||||
@ -29,12 +31,12 @@
|
||||
<%= form.label :position_contract, "Contract" %>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<div>
|
||||
<%= form.label :skill_needs, "Specific skill needs" %>
|
||||
<%= form.text_field :skill_needs %>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<div>
|
||||
<%= form.label :quiz_id, "Quiz" %>
|
||||
<%= form.select :quiz_id, quiz_options(quizzes, candidate.quiz_id), include_blank: (quizzes.size > 1) %>
|
||||
</div>
|
||||
|
@ -1,10 +1,7 @@
|
||||
<%
|
||||
content_for :title, "Edit Candidate - Skills Assessment Admin"
|
||||
%>
|
||||
<% content_for :title, "Edit Candidate - Skills Assessment Admin" %>
|
||||
|
||||
<main class="intro_tpl">
|
||||
<h1>Edit: <%= @candidate.name %></h1>
|
||||
<p><strong>Test ID: </strong><%= @candidate.test_hash %></p>
|
||||
<h1>Edit: <%= @candidate.name %></h1>
|
||||
|
||||
<%= render partial: 'form', locals: { action: admin_update_candidate_path(@candidate.id), candidate: @candidate, quizzes: @quizzes } %>
|
||||
</main>
|
||||
<div><strong>Test ID: </strong><%= @candidate.test_hash %></div>
|
||||
|
||||
<%= render partial: 'form', locals: { action: admin_update_candidate_path(@candidate.id), candidate: @candidate, quizzes: @quizzes } %>
|
||||
|
@ -2,39 +2,39 @@
|
||||
content_for :section_title, "Candidates"
|
||||
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? %>
|
||||
|
||||
<table cellspacing="0" cellpadding="0">
|
||||
<h1>Candidates</h1>
|
||||
|
||||
<%= 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>
|
||||
<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>
|
||||
<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><%= raw candidate.reminded ? "✓" : "·" %></td>
|
||||
<td><%= candidate.interview? %></td>
|
||||
</tr>
|
||||
<% end %>
|
||||
</table>
|
||||
|
||||
<% @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>
|
||||
<%= paginate @candidates %>
|
||||
|
@ -1,10 +1,6 @@
|
||||
<%
|
||||
content_for :title, "New Candidate - Skills Assessment Admin"
|
||||
%>
|
||||
<% content_for :title, "New Candidate - Skills Assessment Admin" %>
|
||||
|
||||
<main class="intro_tpl">
|
||||
<h1>New Candidate</h1>
|
||||
<h1>New Candidate</h1>
|
||||
|
||||
<%= render partial: 'form', locals:
|
||||
{ action: admin_create_candidate_path, candidate: @candidate, quizzes: @quizzes } %>
|
||||
</main>
|
||||
<%= render partial: 'form', locals:
|
||||
{ action: admin_create_candidate_path, candidate: @candidate, quizzes: @quizzes } %>
|
||||
|
@ -3,24 +3,27 @@
|
||||
content_for :title, "Profile - Skills Assessment Admin"
|
||||
%>
|
||||
|
||||
<h1>Edit Profile</h1>
|
||||
|
||||
<%= render partial: 'shared/form_model_errors', locals: {obj: @user} %>
|
||||
|
||||
<%= form_for @user, url: admin_profile_url, method: :post do |form| %>
|
||||
<div class="form-group">
|
||||
<div>
|
||||
<%= form.label :name, "Full Name" %>
|
||||
<%= form.text_field :name %>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<div>
|
||||
<%= form.label :email, "eMail" %>
|
||||
<%= form.email_field :email %>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<div>
|
||||
<%= form.label :password, "New Password" %>
|
||||
<%= form.password_field :password %>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<div>
|
||||
<%= form.label :password_confirmation, "New Password Confirmation" %>
|
||||
<%= form.password_field :password_confirmation %>
|
||||
</div>
|
||||
|
@ -3,7 +3,10 @@
|
||||
content_for :title, "Profile - Skills Assessment Admin"
|
||||
%>
|
||||
|
||||
<p>Name: <%= current_user.name %></p>
|
||||
<p>email: <%= current_user.email %></p>
|
||||
<p>Role: <%= current_user.role %></p>
|
||||
<%= link_to('Edit', admin_edit_profile_path, { class: 'btn' }) %>
|
||||
<h1>Profile</h1>
|
||||
|
||||
<div>Name: <%= current_user.name %></div>
|
||||
<div>email: <%= current_user.email %></div>
|
||||
<div>Role: <%= current_user.role %></div>
|
||||
|
||||
<%= link_to('Edit', admin_edit_profile_path, { class: "" }) %>
|
||||
|
@ -9,10 +9,8 @@
|
||||
</ul>
|
||||
|
||||
<% unless (disable ||= false) %>
|
||||
<div class="form-group">
|
||||
<div class="btn tertiary-btn" data-id="input_option_adder"> Add option </div>
|
||||
<li style="display: none;">
|
||||
<%= text_field_tag 'question[multi_choice][]', nil, { disabled: (disable ||= false), data: { last: nil } } %>
|
||||
</li>
|
||||
<div> Add option </div>
|
||||
<div>
|
||||
<%= text_field_tag 'question[multi_choice][]', nil, { disabled: (disable ||= false), data: { last: nil } } %>
|
||||
</div>
|
||||
<% end %>
|
||||
|
@ -12,10 +12,8 @@
|
||||
</ul>
|
||||
|
||||
<% unless (disable ||= false) %>
|
||||
<div class="form-group">
|
||||
<div class="btn tertiary-btn" data-id="input_option_adder"> Add option </div>
|
||||
<li style="display: none;">
|
||||
<%= text_field_tag 'question[multi_choice][]', nil, { disabled: (disable ||= false), data: { last: nil } } %>
|
||||
</li>
|
||||
<div>Add option</div>
|
||||
<div>
|
||||
<%= text_field_tag 'question[multi_choice][]', nil, { disabled: (disable ||= false), data: { last: nil } } %>
|
||||
</div>
|
||||
<% end %>
|
||||
|
@ -1,45 +1,44 @@
|
||||
<%= render partial: 'shared/form_model_errors', locals: { obj: question} %>
|
||||
|
||||
<%= form_for question, url: action do |form| %>
|
||||
<div class="form-group">
|
||||
<div>
|
||||
<%= 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) %>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<div>
|
||||
<%= form.label :category, 'Category' %>
|
||||
<%= form.text_field :category %>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<div>
|
||||
<%= form.label :sort, 'Sort' %>
|
||||
<%= form.text_field :sort %>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<div>
|
||||
<%= form.check_box :active %>
|
||||
<%= form.label :active, 'Active' %>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<div>
|
||||
<%= form.label :question, "Question" %>
|
||||
<%= form.text_area :question %>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<div>
|
||||
<%= form.label :attachment, "Attachment URL" %>
|
||||
<%= form.text_field :attachment %>
|
||||
|
||||
<% if @question.attachment.present? %>
|
||||
<p><%= image_tag @question.attachment %></p>
|
||||
<% end %>
|
||||
<%= image_tag @question.attachment if @question.attachment.present? %>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<div>
|
||||
<%= form.label :input_type, 'Input Type' %>
|
||||
<%= form.select :input_type, question_type_options(question.input_type), { include_blank: false }, { data: { qid: question.id } } %>
|
||||
</div>
|
||||
|
||||
<div class="form-group" data-id="input-options-wrapper">
|
||||
<div>
|
||||
<%= fields_for @question do |fields| %>
|
||||
<% partial = question.input_type.blank? ? 'admin/question/text' : "admin/question/#{question.input_type}" %>
|
||||
<%= render partial: partial, locals: {question: question, fields: fields } %>
|
||||
|
@ -9,10 +9,8 @@
|
||||
</ul>
|
||||
|
||||
<% unless (disable ||= false) %>
|
||||
<div class="form-group">
|
||||
<div class="btn tertiary-btn" data-id="input_option_adder"> Add option </div>
|
||||
<li style="display: none;">
|
||||
<%= text_field_tag 'question[multi_choice][]', nil, { disabled: (disable ||= false), data: { last: nil } } %>
|
||||
</li>
|
||||
<div>Add option</div>
|
||||
<div>
|
||||
<%= text_field_tag 'question[multi_choice][]', nil, { disabled: (disable ||= false), data: { last: nil } } %>
|
||||
</div>
|
||||
<% end %>
|
||||
|
@ -1,21 +1,17 @@
|
||||
<strong>Radio Options</strong>
|
||||
|
||||
<ul data-id="input_option_list">
|
||||
<ul>
|
||||
<% question.input_options.each do | option | %>
|
||||
<li>
|
||||
<%= text_field_tag 'question[multi_choice][]', option, { disabled: (disable ||= false), data: { last: option } } %>
|
||||
</li>
|
||||
<% end %>
|
||||
</ul>
|
||||
<ul>
|
||||
<li>Other: <input type="text" disabled="disabled" /></li>
|
||||
</ul>
|
||||
|
||||
<% unless (disable ||= false) %>
|
||||
<div class="form-group">
|
||||
<div class="btn tertiary-btn" data-id="input_option_adder"> Add option </div>
|
||||
<li style="display: none;">
|
||||
<%= text_field_tag 'question[multi_choice][]', nil, { disabled: (disable ||= false), data: { last: nil } } %>
|
||||
</li>
|
||||
<div>Add option</div>
|
||||
<div>
|
||||
<%= text_field_tag 'question[multi_choice][]', nil, { disabled: (disable ||= false), data: { last: nil } } %>
|
||||
</div>
|
||||
<% end %>
|
||||
|
@ -14,8 +14,8 @@
|
||||
<td><%= question.question %></td>
|
||||
<td><%= question.input_type %></td>
|
||||
<td><%= question.category %></td>
|
||||
<td><%= question.active unless question.active? %></td>
|
||||
<td><%= link_to 'Edit', admin_edit_question_path(question.to_i), { class: 'btn tertiary-btn' } %></td>
|
||||
<td><%= raw question.active? ? "✓" : "✗" %></td>
|
||||
<td><%= link_to 'Edit', admin_edit_question_path(question.to_i), { class: "" } %></td>
|
||||
</tr>
|
||||
<% end %>
|
||||
</table>
|
||||
|
@ -4,4 +4,5 @@
|
||||
%>
|
||||
|
||||
<h1><%= @question.quiz.name %></h1>
|
||||
|
||||
<%= render partial: 'form', locals: {question: @question, action: admin_update_question_path } %>
|
||||
|
@ -3,9 +3,11 @@
|
||||
content_for :title, "Questions - Skills Assessment Admin"
|
||||
%>
|
||||
|
||||
<h1>Questions</h1>
|
||||
|
||||
<% quizzes = @questions.group_by{ |q| q.quiz.name } %>
|
||||
<% quizzes.each do |quiz, questions| %>
|
||||
<h1><%= quiz %></h1>
|
||||
<%= render partial: 'admin/question/table_list', locals: { questions: questions } %>
|
||||
<%= link_to('Edit Quiz', admin_quiz_path(questions.first.quiz.to_i), { class: 'btn' }) %>
|
||||
<%= link_to('Edit Quiz', admin_quiz_path(questions.first.quiz.to_i), { class: "" }) %>
|
||||
<% end %>
|
||||
|
@ -3,4 +3,6 @@
|
||||
content_for :title, "New Question - Skills Assessment Admin"
|
||||
%>
|
||||
|
||||
<h1>New Question</h1>
|
||||
|
||||
<%= render partial: 'form', locals: {question: @question, action: admin_create_question_path } %>
|
||||
|
@ -3,39 +3,30 @@
|
||||
content_for :title, "Question - Skills Assessment Admin"
|
||||
%>
|
||||
|
||||
<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>
|
||||
<h1><%= @question.quiz.name %></h1>
|
||||
|
||||
<strong>Question</strong>
|
||||
<p><%= @question.question %></p>
|
||||
<h2>Category</h2>
|
||||
<div><%= @question.category %></div>
|
||||
|
||||
<% if @question.attachment.present? %>
|
||||
<p><%= image_tag @question.attachment %></p>
|
||||
<% end %>
|
||||
<h2>Type</h2>
|
||||
<div><%= @question.input_type %></div>
|
||||
|
||||
<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| %>
|
||||
<%= render partial: "admin/question/#{@question.input_type}", locals: {question: @question, disable: true, fields: fields } %>
|
||||
<% end %>
|
||||
|
||||
<%= link_to('Edit', admin_edit_question_path(@question.to_i), { class: 'btn' }) %>
|
||||
|
||||
<%= link_to('View Quiz', admin_quiz_path(@question.quiz_id), { class: 'btn' }) %>
|
||||
<%= link_to('Edit', admin_edit_question_path(@question.to_i), { class: "" }) %>
|
||||
<%= link_to('View Quiz', admin_quiz_path(@question.quiz_id), { class: "" }) %>
|
||||
|
@ -1,16 +1,16 @@
|
||||
<%= render partial: 'shared/form_model_errors', locals: { obj: quiz} %>
|
||||
<%= form_for quiz, url: action do |form| %>
|
||||
<div class="form-group">
|
||||
<div>
|
||||
<%= form.label :name, "Quiz Description" %>
|
||||
<%= form.text_field :name %>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<div>
|
||||
<%= form.label :dept, 'Department' %>
|
||||
<%= form.text_field :dept %>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<div>
|
||||
<%= form.label :unit, 'Unit' %>
|
||||
<%= form.text_field :unit %>
|
||||
</div>
|
||||
|
@ -13,7 +13,7 @@
|
||||
<td><%= quiz.dept %></td>
|
||||
<td><%= quiz.unit %></td>
|
||||
<td><%= quiz.questions.count %></td>
|
||||
<td><%= link_to 'edit', admin_edit_quiz_path(quiz.to_i), { class: 'btn tertiary-btn' } if policy(quiz).edit? %></td>
|
||||
<td><%= link_to 'edit', admin_edit_quiz_path(quiz.to_i), { class: "" } if policy(quiz).edit? %></td>
|
||||
</tr>
|
||||
<% end %>
|
||||
</table>
|
||||
|
@ -1,5 +1,8 @@
|
||||
<%
|
||||
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 } %>
|
||||
|
@ -3,5 +3,7 @@
|
||||
content_for :title, "Quizzes - Skills Assessment Admin"
|
||||
%>
|
||||
|
||||
<h1>Quizzes</h1>
|
||||
|
||||
<%= render partial: 'admin/quiz/table_list', locals: { quizzes: @quizzes } %>
|
||||
<%= link_to('New Quiz', admin_new_quiz_path, { class: 'btn' }) %>
|
||||
<%= link_to('New Quiz', admin_new_quiz_path, { class: "" }) %>
|
||||
|
@ -3,4 +3,6 @@
|
||||
content_for :title, "New Quiz - Skills Assessment Admin"
|
||||
%>
|
||||
|
||||
<h1>New Quiz</h1>
|
||||
|
||||
<%= render partial: 'form', locals: { quiz: @quiz, action: admin_create_quiz_path } %>
|
||||
|
@ -3,10 +3,11 @@
|
||||
content_for :title, "Quiz - Skills Assessment Admin"
|
||||
%>
|
||||
|
||||
<p><%= @quiz.name %></p>
|
||||
<p><%= @quiz.dept %></p>
|
||||
<p><%= @quiz.unit %></p>
|
||||
<%= link_to('Edit', admin_edit_quiz_path(@quiz.to_i), { class: 'btn' }) %>
|
||||
<h1><%= @quiz.name %></h1>
|
||||
|
||||
<div><%= @quiz.dept %></div>
|
||||
<div><%= @quiz.unit %></div>
|
||||
<%= link_to('Edit', admin_edit_quiz_path(@quiz.to_i), { class: "" }) %>
|
||||
|
||||
<%= render partial: 'admin/question/table_list', locals: { questions: @quiz.questions, disable: true } %>
|
||||
<%= link_to('New Question', admin_new_question_path, { class: 'btn' }) %>
|
||||
<%= link_to('New Question', admin_new_question_path, { class: "" }) %>
|
||||
|
@ -1,23 +1,20 @@
|
||||
<div class="comment-message">
|
||||
<div>
|
||||
<%= comment.message %>
|
||||
|
||||
<% if policy(comment).update? %>
|
||||
<label class="comment-edit-btn" for="comment-<%= comment.id %>">edit</label>
|
||||
<label class="" for="comment-<%= comment.id %>">edit</label>
|
||||
<% end %>
|
||||
|
||||
<% if comment.edits? %>
|
||||
<div class="comment-edit-stamp">Updated <%= time_ago_in_words(comment.updated_at) %> ago</div>
|
||||
<div>Updated <%= local_time_ago(comment.updated_at) %></div>
|
||||
<% else %>
|
||||
<div class="comment-edit-stamp"><%= time_ago_in_words(comment.created_at) %> ago</div>
|
||||
<div><%= local_time_ago(comment.created_at) %></div>
|
||||
<% end %>
|
||||
</div>
|
||||
|
||||
<div class="comment-author"><%= comment.user.name %></div>
|
||||
|
||||
<div><%= comment.user.name %></div>
|
||||
|
||||
<% if policy(comment).update? %>
|
||||
<input type="checkbox" id="comment-<%= comment.id %>">
|
||||
<div class="comment-edit-form">
|
||||
<%= render partial: 'comment_form', locals: {comment: comment, test_hash: comment.test_hash } %>
|
||||
</div>
|
||||
<%= render partial: 'comment_form', locals: {comment: comment, test_hash: comment.test_hash } %>
|
||||
<% end %>
|
||||
|
@ -1,7 +1,7 @@
|
||||
<% if comment.id.nil? %>
|
||||
|
||||
<%= form_for comment, url: admin_create_comment_path(test_hash: test_hash), method: :post do |form| %>
|
||||
<div class="form-group">
|
||||
<div>
|
||||
<%= form.label :message, "New Comment" %>
|
||||
<%= form.text_area :message %>
|
||||
</div>
|
||||
@ -12,7 +12,7 @@
|
||||
<% else %>
|
||||
|
||||
<%= form_for comment, url: admin_update_comment_path(test_hash: test_hash, id: comment.id), method: :post do |form| %>
|
||||
<div class="form-group">
|
||||
<div>
|
||||
<%= form.label :message, "Update Comment" %>
|
||||
<%= form.text_area :message %>
|
||||
</div>
|
||||
|
@ -1,7 +1,5 @@
|
||||
<% # TODO: This should be extracted into a decorator, or something. It is only a quick hack solution. %>
|
||||
|
||||
<% if current_user.acts_as_reviewer? %>
|
||||
<div class="review_meta__votes" data-id="vote-count">
|
||||
<div data-id="vote-count">
|
||||
<strong>Votes: </strong>
|
||||
|
||||
<% if @candidate.pending? && current_user.commented_on?(@candidate.test_hash) %>
|
||||
@ -27,18 +25,20 @@
|
||||
<% end %>
|
||||
|
||||
<% if current_user.acts_as_manager? %>
|
||||
<div class="review_meta__vetos">
|
||||
<div>
|
||||
<%= form_tag admin_interview_path(test_hash: @candidate.test_hash) do %>
|
||||
<strong>Interview: </strong>
|
||||
<div role="group" aria-labelledby="interview-status">
|
||||
<strong id="interview-status">Interview: </strong>
|
||||
|
||||
<%= radio_button_tag :review_status, :approved, checked = @candidate.approved? %>
|
||||
<%= label_tag :review_status_approved, "Yes" %>
|
||||
<%= radio_button_tag :review_status, :approved, checked = @candidate.approved? %>
|
||||
<%= label_tag :review_status_approved, "Yes" %>
|
||||
|
||||
<%= radio_button_tag :review_status, :declined, checked = @candidate.declined? %>
|
||||
<%= label_tag :review_status_declined, "No" %>
|
||||
<%= radio_button_tag :review_status, :declined, checked = @candidate.declined? %>
|
||||
<%= label_tag :review_status_declined, "No" %>
|
||||
</div>
|
||||
|
||||
<div class="review-status-comments">
|
||||
<span>Review comments for recruiter</span>
|
||||
<div>
|
||||
<%= label_tag :review_comments, "Review comments for recruiter" %>
|
||||
<%= text_area_tag :review_comments, @candidate.review_comments %>
|
||||
<%= submit_tag 'Send Request' %>
|
||||
</div>
|
||||
|
@ -2,27 +2,29 @@
|
||||
content_for :section_title, "Completed Tests"
|
||||
content_for :title, "Quiz Results - Skills Assessment Admin"
|
||||
%>
|
||||
<main class="summary_tpl">
|
||||
<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>
|
||||
<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>
|
||||
<h1>Results</h1>
|
||||
|
||||
<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>
|
||||
<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 %>
|
||||
|
@ -2,65 +2,48 @@
|
||||
content_for :title, "Quiz Review - Skills Assessment Admin"
|
||||
%>
|
||||
|
||||
<div class="summary_tpl">
|
||||
<div class="admin-review">
|
||||
<h2 class="prft-heading">Quiz Review</h2>
|
||||
<div>
|
||||
<h1>Quiz Review</h1>
|
||||
|
||||
<div class="review_meta">
|
||||
<div>
|
||||
<% 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>
|
||||
<div>
|
||||
<% 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 class="review-comments">
|
||||
<div>
|
||||
<h2 class="prft-heading">Voting</h2>
|
||||
<div class="review_meta">
|
||||
<div><%= render partial: 'voting' %></div>
|
||||
</div>
|
||||
</div>
|
||||
<% @quiz.each do |question| %>
|
||||
<%= form_for(:answer, url: '#never-post', html:{id: "summary-#{question.to_i}"}) do |form| %>
|
||||
<h2><%= question.question %></h2>
|
||||
<%= image_tag question.attachment if question.attachment.present? %>
|
||||
|
||||
<div>
|
||||
<h2 id="comment-header" class="prft-heading">Comments</h2>
|
||||
<% 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>
|
||||
<fieldset disabled>
|
||||
<legend>Response</legend>
|
||||
<%= render partial: "quiz/#{question.input_type}", locals: {question: question, answer: question.answer, form: form} %>
|
||||
</fieldset>
|
||||
<% end %>
|
||||
<% end %>
|
||||
|
||||
<%= link_to("Back to list", admin_results_path, { class: "" }) %>
|
||||
</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>
|
||||
|
@ -1,33 +1,38 @@
|
||||
<%= render partial: 'shared/form_model_errors', locals: { obj: user} %>
|
||||
|
||||
<%= form_for user, url: action do |form| %>
|
||||
<div class="form-group">
|
||||
<div>
|
||||
<%= form.label :name, "Full Name" %>
|
||||
<%= form.text_field :name %>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<div>
|
||||
<%= form.label :email, "eMail" %>
|
||||
<%= form.email_field :email %>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<div>
|
||||
<%= form.label :role, "Role" %>
|
||||
<%= form.select :role, admin_role_options(user.role), include_blank: false %>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<div><strong>Quiz Review List</strong></div>
|
||||
<div role="group" aria-labelledby="assigned-quiz-list">
|
||||
<div id="assigned-quiz-list"><strong>Quiz Review List</strong></div>
|
||||
<p>
|
||||
Quizzes this user should be reviewing the results of.<br />
|
||||
Admins and Recruiters should not have any checked, unless they are expected
|
||||
to participate in the technical review for that quiz.
|
||||
</p>
|
||||
<%= form.collection_check_boxes(:quiz_ids, Quiz.all, :id, :name, {}, {class: 'checkbox'}) do | quiz | %>
|
||||
<div class="form-group-multiples">
|
||||
<%= quiz.check_box( checked: user.quizzes.include?(quiz.object)) %>
|
||||
<%= quiz.label %>
|
||||
</div>
|
||||
<% end %>
|
||||
|
||||
<%= hidden_field_tag('user[quiz_ids][]') %>
|
||||
<ul>
|
||||
<%= form.collection_check_boxes(:quiz_ids, Quiz.all, :id, :name, {include_hidden: false}, {class: ""}) do | quiz | %>
|
||||
<li>
|
||||
<%= quiz.check_box( checked: user.quizzes.include?(quiz.object)) %>
|
||||
<%= quiz.label %>
|
||||
</li>
|
||||
<% end %>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<%= form.submit %>
|
||||
|
@ -11,7 +11,7 @@
|
||||
<td><%= link_to user.name, admin_user_path(user.to_i) %></td>
|
||||
<td><%= mail_to(user.email) %></td>
|
||||
<td><%= user.role %></td>
|
||||
<td><%= link_to 'edit', admin_edit_user_path(user.to_i), { class: 'btn tertiary-btn' } if policy(user).edit? %></td>
|
||||
<td><%= link_to 'edit', admin_edit_user_path(user.to_i), { class: "" } if policy(user).edit? %></td>
|
||||
</tr>
|
||||
<% end %>
|
||||
</table>
|
||||
|
@ -1,5 +1,8 @@
|
||||
<%
|
||||
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 } %>
|
||||
|
@ -1,7 +1,10 @@
|
||||
<%
|
||||
content_for :section_title, "Users"
|
||||
content_for :title, "Users - Skills Assessment Admin"
|
||||
%>
|
||||
|
||||
<h1>Users</h1>
|
||||
|
||||
<%= 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,5 +1,8 @@
|
||||
<%
|
||||
content_for :section_title, "New User"
|
||||
content_for :section_title, "Users"
|
||||
content_for :title, "Users - Skills Assessment Admin"
|
||||
%>
|
||||
|
||||
<h1>New User</h1>
|
||||
|
||||
<%= render partial: 'form', locals: {user: @user, action: admin_create_user_path } %>
|
||||
|
@ -1,16 +1,17 @@
|
||||
<%
|
||||
content_for :section_title, "#{@user.name}"
|
||||
content_for :section_title, "Users"
|
||||
content_for :title, "Users - Skills Assessment Admin"
|
||||
%>
|
||||
|
||||
<p><%= @user.name %></p>
|
||||
<p><%= mail_to(@user.email) %></p>
|
||||
<p><%= @user.role %></p>
|
||||
<h1><%= @user.name %></h1>
|
||||
<div><%= mail_to(@user.email) %></div>
|
||||
<div><%= @user.role %></div>
|
||||
|
||||
<p>Quizzes:</p>
|
||||
<div>Quizzes:</div>
|
||||
<ul>
|
||||
<% @user.quizzes.each do |quiz| %>
|
||||
<li><%= quiz.name %></li>
|
||||
<% end %>
|
||||
</ul>
|
||||
|
||||
<%= link_to('Edit', admin_edit_user_path(@user.to_i), { class: 'btn' }) %>
|
||||
<%= link_to('Edit', admin_edit_user_path(@user.to_i), { class: "" }) %>
|
||||
|
@ -1,20 +1,14 @@
|
||||
<% content_for :title, "Skills Assessment" %>
|
||||
|
||||
<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>
|
||||
<h1>Let's Get Started</h1>
|
||||
|
||||
<%= 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/>
|
||||
<p>Hey there! Give us your Test ID, and we'll get you started.</p>
|
||||
|
||||
<% if flash[:error].present? %>
|
||||
<div class="error"><%= flash[:error] %></div>
|
||||
<% end %>
|
||||
</div>
|
||||
<button type="submit">Log in</button>
|
||||
<% end %>
|
||||
</main>
|
||||
<%= form_tag(validate_candidate_path) do %>
|
||||
<%= render partial: "shared/generic_flash" %>
|
||||
|
||||
<label for="test_id">What's your Test ID?</label>
|
||||
<input type="text" id="test_id" name="test_id" required />
|
||||
|
||||
<button type="submit">Log in</button>
|
||||
<% end %>
|
||||
|
@ -1,11 +1,10 @@
|
||||
<% content_for :title, "Skills Assessment" %>
|
||||
|
||||
<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>
|
||||
<h1>Oops!</h1>
|
||||
|
||||
<a href="<%= question_path %>"><button>Continue Test</button></a>
|
||||
</main>
|
||||
<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>
|
||||
|
||||
<%= link_to "Continue Test", question_path, {class: ""} %>
|
||||
|
@ -1,11 +1,8 @@
|
||||
<% 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>
|
||||
|
||||
<div class="button-wrap">
|
||||
<a class="btn primary-btn" href="<%= question_path %>">Return to test</a>
|
||||
</div>
|
||||
</main>
|
||||
<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>
|
||||
|
||||
<%= link_to "Return to test", question_path, {class: ""} %>
|
||||
|
@ -1,8 +1,8 @@
|
||||
<% content_for :title, "Thank You - Skills Assessment" %>
|
||||
<main class="styleguide_tpl">
|
||||
<h1>Thank you!</h1>
|
||||
<p>
|
||||
Your answers have been submitted. We will review and your recruiter
|
||||
will be in touch.
|
||||
</p>
|
||||
</main>
|
||||
|
||||
<h1>Thank you!</h1>
|
||||
|
||||
<p>
|
||||
Your answers have been submitted.
|
||||
We will review and your recruiter will be in touch.
|
||||
</p>
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user