facades 0.1.0 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.gitignore +1 -0
- data/.rbenv-gemsets +1 -0
- data/.rvmrc +1 -0
- data/.travis.yml +6 -0
- data/Gemfile +12 -0
- data/Guardfile +19 -0
- data/README.md +115 -101
- data/Rakefile +8 -0
- data/app/assets/javascripts/facades/debug/grid.js +0 -0
- data/app/helpers/facades_helper.rb +1 -0
- data/config.ru +7 -0
- data/facades.gemspec +9 -2
- data/lib/facades/helpers/layout.rb +36 -73
- data/lib/facades/helpers/navigation.rb +182 -110
- data/lib/facades/helpers/{elements.rb → notifications.rb} +9 -36
- data/lib/facades/helpers.rb +6 -17
- data/lib/facades/patterns/tabs.rb +75 -0
- data/lib/facades/patterns.rb +7 -0
- data/lib/facades/{sass_ext → sass_extensions}/color.rb +5 -13
- data/lib/facades/sass_extensions/conversions.rb +27 -0
- data/lib/facades/sass_extensions/functions.rb +84 -0
- data/lib/facades/sass_extensions/icons.rb +66 -0
- data/lib/facades/sass_extensions.rb +21 -0
- data/lib/facades/support/compass/project/MIT-LICENSE.txt +20 -0
- data/lib/facades/support/compass/project/humans.txt +8 -0
- data/lib/facades/support/compass/project/index.html +45 -0
- data/lib/facades/support/compass/project/manifest.rb +18 -0
- data/lib/facades/support/compass/project/robots.txt +4 -0
- data/lib/facades/support/compass.rb +9 -0
- data/lib/facades/support/rails.rb +12 -15
- data/lib/facades/support/simple_form.rb +32 -0
- data/lib/facades/version.rb +1 -1
- data/lib/facades.rb +21 -44
- data/spec/internal/app/helpers/application_helper.rb +3 -0
- data/spec/internal/app/views/navigation/_multi_list.html.erb +11 -0
- data/spec/internal/app/views/navigation/_multi_option_list.html.erb +14 -0
- data/spec/internal/app/views/navigation/_single_list.html.erb +9 -0
- data/spec/internal/config/database.yml +3 -0
- data/spec/internal/config/routes.rb +3 -0
- data/spec/internal/db/schema.rb +3 -0
- data/spec/internal/log/.gitignore +1 -0
- data/spec/internal/public/favicon.ico +0 -0
- data/spec/spec_helper.rb +16 -6
- data/spec/unit/helpers/layout_spec.rb +4 -0
- data/spec/unit/helpers/navigation_spec.rb +384 -0
- data/spec/unit/helpers/notifications_spec.rb +4 -0
- data/spec/unit/patterns/tabs_spec.rb +58 -0
- data/src/icons/facades.yml +105 -0
- data/src/icons/font-awesome.yml +210 -0
- data/src/scss/facades/_buttons.scss +10 -0
- data/src/scss/facades/_config.scss +99 -0
- data/src/scss/facades/_debug.scss +8 -0
- data/src/scss/facades/_forms.scss +228 -0
- data/src/scss/facades/_global.scss +104 -0
- data/src/scss/facades/_icons.scss +61 -0
- data/src/scss/facades/_mixins.scss +115 -0
- data/src/scss/facades/_mobile.scss +3 -0
- data/src/scss/facades/_setup.scss +191 -0
- data/src/scss/facades/_typography.scss +220 -0
- data/src/scss/facades/buttons/_glossy.scss +29 -0
- data/src/scss/facades/buttons/_gradient.scss +36 -0
- data/src/scss/facades/buttons/_shared.scss +33 -0
- data/src/scss/facades/buttons/_simple.scss +28 -0
- data/src/scss/facades/icons/_classes.scss +37 -0
- data/src/scss/facades/icons/_legacy.scss +27 -0
- data/src/scss/facades/layout/_lists.scss +43 -0
- data/src/scss/facades/mixins/_gradients.scss +30 -0
- data/src/scss/facades/mixins/_rhythm.scss +37 -0
- data/src/scss/facades/mobile/_buttons.scss +97 -0
- data/src/scss/facades/mobile/_config.scss +30 -0
- data/src/scss/facades/mobile/_global.scss +81 -0
- data/src/scss/facades/mobile/_mixins.scss +49 -0
- data/src/scss/facades/mobile/_setup.scss +50 -0
- data/src/scss/facades/mobile/patterns/_navbar.scss +21 -0
- data/src/scss/facades/mobile/patterns/_panel.scss +37 -0
- data/src/scss/facades/mobile/patterns/_stage.scss +20 -0
- data/src/scss/facades/mobile/patterns/_toolbar.scss +25 -0
- data/src/scss/facades/mobile/themes/_apple.scss +17 -0
- data/src/scss/facades/patterns/_labels.scss +50 -0
- data/src/scss/facades/patterns/_navbar.scss +4 -0
- data/src/scss/facades/patterns/_notifications.scss +82 -0
- data/src/scss/facades/patterns/_pagination.scss +4 -0
- data/src/scss/facades/patterns/_pills.scss +50 -0
- data/src/scss/facades/patterns/_tabs.scss +83 -0
- data/src/scss/facades/patterns/_twipsy.scss +84 -0
- data/src/scss/facades/typography/_tables.scss +95 -0
- metadata +201 -58
- data/app/views/facades/_pagination.html.erb +0 -20
- data/lib/facades/builders/form/base.rb +0 -212
- data/lib/facades/builders/form/elements.rb +0 -112
- data/lib/facades/builders/form/helper.rb +0 -29
- data/lib/facades/builders/form.rb +0 -22
- data/lib/facades/builders/sprite.rb +0 -50
- data/lib/facades/builders/table.rb +0 -76
- data/lib/facades/debug/html.rb +0 -6
- data/lib/facades/helpers/builders.rb +0 -24
- data/lib/facades/helpers/mobile.rb +0 -57
- data/lib/facades/helpers/pagination.rb +0 -83
- data/lib/facades/helpers/utility.rb +0 -31
- data/lib/facades/sass_ext/form_elements.rb +0 -52
- data/lib/facades/sass_ext/funcs.rb +0 -33
- data/lib/facades/sass_ext.rb +0 -14
- data/lib/facades/stylesheets/facades/_common.scss +0 -7
- data/lib/facades/stylesheets/facades/_css3.scss +0 -93
- data/lib/facades/stylesheets/facades/_layout.scss +0 -5
- data/lib/facades/stylesheets/facades/_normalize.scss +0 -5
- data/lib/facades/stylesheets/facades/_setup.scss +0 -104
- data/lib/facades/stylesheets/facades/_typography.scss +0 -2
- data/lib/facades/stylesheets/facades/_ui.scss +0 -3
- data/lib/facades/stylesheets/facades/_utilities.scss +0 -32
- data/lib/facades/stylesheets/facades/layout/_dropdown-list.scss +0 -7
- data/lib/facades/stylesheets/facades/layout/_forms.scss +0 -53
- data/lib/facades/stylesheets/facades/layout/_grid.scss +0 -49
- data/lib/facades/stylesheets/facades/layout/_responsive_grid.scss +0 -164
- data/lib/facades/stylesheets/facades/setup/_forms.scss +0 -284
- data/lib/facades/stylesheets/facades/setup/_ie.scss +0 -12
- data/lib/facades/stylesheets/facades/setup/_reset.scss +0 -255
- data/lib/facades/stylesheets/facades/typography/_baseline.scss +0 -91
- data/lib/facades/stylesheets/facades/typography/_lists.scss +0 -34
- data/lib/facades/stylesheets/facades/typography/_shadow.scss +0 -8
- data/lib/facades/stylesheets/facades/ui/_buttons.scss +0 -34
- data/lib/facades/stylesheets/facades/ui/_flash-messages.scss +0 -29
- data/lib/facades/stylesheets/facades/ui/_tabbed.scss +0 -5
- data/lib/facades/stylesheets/facades/ui/_tool-tip.scss +0 -44
- data/lib/facades/stylesheets/facades/utilities/_clearfix.scss +0 -20
- data/lib/facades/stylesheets/facades/utilities/_color.scss +0 -7
- data/lib/facades/stylesheets/facades/utilities/_cursors.scss +0 -4
- data/lib/facades/support/serve.rb +0 -17
- data/lib/facades/support/tipsy.rb +0 -17
- data/spec/facades/helpers/elements_spec.rb +0 -86
- data/spec/facades/helpers/layout_helpers_spec.rb +0 -5
- data/spec/facades/helpers/navigation_spec.rb +0 -107
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
module Facades::Builders
|
|
2
|
-
module FormHelper
|
|
3
|
-
##
|
|
4
|
-
#
|
|
5
|
-
# Cusomizes the default form_for helper to add additional functionality
|
|
6
|
-
# All params are the same as Rails' form_for
|
|
7
|
-
#
|
|
8
|
-
# @param [Mixed] record_name_or_array
|
|
9
|
-
# @param [Array] args
|
|
10
|
-
# @param [Block] &block
|
|
11
|
-
#
|
|
12
|
-
def form_for(record_name_or_array, *args, &proc)
|
|
13
|
-
|
|
14
|
-
raise ArgumentError, "Missing block" unless block_given?
|
|
15
|
-
|
|
16
|
-
options = args.extract_options!
|
|
17
|
-
options.reverse_merge!(:builder => Facades::Builders::Form)
|
|
18
|
-
options[:html] ||= {}
|
|
19
|
-
options[:html].merge!('data-js-validatable' => true) if options.delete(:validate)
|
|
20
|
-
|
|
21
|
-
default_proc = ::ActionView::Base.field_error_proc
|
|
22
|
-
::ActionView::Base.field_error_proc = lambda{ |html_tag, instance_tag| html_tag }
|
|
23
|
-
super(record_name_or_array, *(args << options), &proc)
|
|
24
|
-
ensure
|
|
25
|
-
::ActionView::Base.field_error_proc = default_proc
|
|
26
|
-
end
|
|
27
|
-
|
|
28
|
-
end
|
|
29
|
-
end
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
require 'facades/builders/form/base'
|
|
2
|
-
require 'facades/builders/form/elements'
|
|
3
|
-
require 'facades/builders/form/helper'
|
|
4
|
-
|
|
5
|
-
module Facades
|
|
6
|
-
module Builders
|
|
7
|
-
class Form < ActionView::Helpers::FormBuilder #:nodoc:
|
|
8
|
-
include Facades::Builders::FormBuilder::Base
|
|
9
|
-
include Facades::Builders::FormBuilder::Elements
|
|
10
|
-
|
|
11
|
-
def with_custom_error_proc(&block)
|
|
12
|
-
default_proc = ::ActionView::Base.field_error_proc
|
|
13
|
-
::ActionView::Base.field_error_proc = lambda{ |html_tag, instance_tag| html_tag }
|
|
14
|
-
yield
|
|
15
|
-
ensure
|
|
16
|
-
::ActionView::Base.field_error_proc = default_proc
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
ActionView::Base.send(:include, Facades::Builders::FormHelper)
|
|
20
|
-
end
|
|
21
|
-
end
|
|
22
|
-
end
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
require 'tilt'
|
|
2
|
-
|
|
3
|
-
module Facades
|
|
4
|
-
module Builders
|
|
5
|
-
class Sprite < Tilt::Template
|
|
6
|
-
|
|
7
|
-
def prepare
|
|
8
|
-
end
|
|
9
|
-
|
|
10
|
-
def evaluate(scope, locals, &block)
|
|
11
|
-
sprites = sprite_context(scope)
|
|
12
|
-
sprites.instance_eval data
|
|
13
|
-
sprites = sprites.send(:fetch!).uniq
|
|
14
|
-
File.open(sprites.first).read
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
def locate_sprite_folder(scope)
|
|
18
|
-
paths, name = scope.environment.paths, File.basename(scope.logical_path)
|
|
19
|
-
paths.detect{ |p| File.directory?(File.join(p, name)) }
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
def sprite_context(scope)
|
|
23
|
-
cxt = SpriteContext.new
|
|
24
|
-
cxt.root = locate_sprite_folder(scope)
|
|
25
|
-
cxt.base_path = File.basename(scope.logical_path)
|
|
26
|
-
cxt
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
class SpriteContext
|
|
30
|
-
attr_accessor :base_path, :sprite_images, :root
|
|
31
|
-
def images(*args)
|
|
32
|
-
@sprite_images = args
|
|
33
|
-
end
|
|
34
|
-
private
|
|
35
|
-
def fetch!
|
|
36
|
-
@sprite_images ||= Dir.glob(File.join(root, base_path, '*.png'))
|
|
37
|
-
end
|
|
38
|
-
end
|
|
39
|
-
|
|
40
|
-
end
|
|
41
|
-
|
|
42
|
-
end
|
|
43
|
-
end
|
|
44
|
-
|
|
45
|
-
begin
|
|
46
|
-
require 'sprockets'
|
|
47
|
-
Sprockets::Engines
|
|
48
|
-
Sprockets.register_engine '.sprite', Facades::Builders::Sprite
|
|
49
|
-
rescue LoadError
|
|
50
|
-
end
|
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
module Facades
|
|
2
|
-
module Builders
|
|
3
|
-
class TableBuilder
|
|
4
|
-
attr_reader :template, :options, :resources, :buffer
|
|
5
|
-
|
|
6
|
-
def initialize(resources, tpl, options)
|
|
7
|
-
@buffer = ""
|
|
8
|
-
@template, @options, @resources = tpl, options, resources
|
|
9
|
-
end
|
|
10
|
-
|
|
11
|
-
delegate :content_tag, :to => :template
|
|
12
|
-
|
|
13
|
-
##
|
|
14
|
-
# Get a list of all headings for the table
|
|
15
|
-
# Use the resource class's table_headings method first, options hash next
|
|
16
|
-
#
|
|
17
|
-
def headings
|
|
18
|
-
return resource_class.table_attributes if resource_class.respond_to?(:table_attributes)
|
|
19
|
-
[options[:headings]].flatten.compact
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
##
|
|
23
|
-
# The class for this resource
|
|
24
|
-
def resource_class
|
|
25
|
-
resources.first.class
|
|
26
|
-
end
|
|
27
|
-
|
|
28
|
-
##
|
|
29
|
-
# Renders the table content immediately using the provided options
|
|
30
|
-
def inline!
|
|
31
|
-
[head, body].map(&:to_s).join("\n")
|
|
32
|
-
end
|
|
33
|
-
|
|
34
|
-
def head
|
|
35
|
-
return content_tag(:thead, render_heading) unless block_given?
|
|
36
|
-
content_tag(:thead) do
|
|
37
|
-
yield self
|
|
38
|
-
end
|
|
39
|
-
end
|
|
40
|
-
|
|
41
|
-
def body
|
|
42
|
-
return content_tag(:tbody, render_body) unless block_given?
|
|
43
|
-
content_tag(:tbody) do
|
|
44
|
-
yield self
|
|
45
|
-
end
|
|
46
|
-
end
|
|
47
|
-
|
|
48
|
-
private
|
|
49
|
-
|
|
50
|
-
# Render an entire body inline
|
|
51
|
-
def render_body
|
|
52
|
-
rows = []
|
|
53
|
-
resources.each_with_index do |res, index|
|
|
54
|
-
attrs = { :class => (ind.even? ? 'even' : 'odd') }
|
|
55
|
-
buff = content_tag(:tr, attrs) do
|
|
56
|
-
headings.collect do |hd|
|
|
57
|
-
content_tag(:td, res.send(:"#{hd}"))
|
|
58
|
-
end.to_s.join("\n")
|
|
59
|
-
end
|
|
60
|
-
rows << buff
|
|
61
|
-
end
|
|
62
|
-
rows.map(&:to_s).join("\n")
|
|
63
|
-
end
|
|
64
|
-
|
|
65
|
-
# Render entire body inline
|
|
66
|
-
def render_heading
|
|
67
|
-
buffer << template.content_tag(:thead) do
|
|
68
|
-
headings.collect do |hd|
|
|
69
|
-
content_tag(:th, hd)
|
|
70
|
-
end.to_s.join("\n")
|
|
71
|
-
end
|
|
72
|
-
end
|
|
73
|
-
|
|
74
|
-
end
|
|
75
|
-
end
|
|
76
|
-
end
|
data/lib/facades/debug/html.rb
DELETED
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
require 'facades/builders/table'
|
|
2
|
-
|
|
3
|
-
module Facades
|
|
4
|
-
module Helpers
|
|
5
|
-
module Builders
|
|
6
|
-
|
|
7
|
-
def table_for(resource_or_class, *args, &block)
|
|
8
|
-
options = args.extract_options!
|
|
9
|
-
html_attrs = options.delete(:html)
|
|
10
|
-
builder = options.delete(:builder) || TableBuilder
|
|
11
|
-
builder = builder.new(resource_or_class, self, options)
|
|
12
|
-
|
|
13
|
-
unless block_given?
|
|
14
|
-
content_tag(:table, builder.inline!, html_attrs)
|
|
15
|
-
else
|
|
16
|
-
content_tag(:table, html_attrs) do
|
|
17
|
-
yield builder
|
|
18
|
-
end
|
|
19
|
-
end
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
end
|
|
23
|
-
end
|
|
24
|
-
end
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
module Facades
|
|
2
|
-
module Helpers
|
|
3
|
-
##
|
|
4
|
-
# Helper methods for mobile tags and attributes
|
|
5
|
-
module Mobile
|
|
6
|
-
|
|
7
|
-
def mobile_meta_tags
|
|
8
|
-
tags = [ tag(:meta, {"http-equiv" => 'cleartype', 'content' => 'on' }), # IE Cleartype
|
|
9
|
-
meta_tag('HandheldFriendly', 'True'),
|
|
10
|
-
meta_tag('viewport', "width=device-width, minimum-scale=1.0, initial-scale=1.0")
|
|
11
|
-
].join("\n")
|
|
12
|
-
tags = tags.html_safe if tags.respond_to?(:html_safe)
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
def mobile_only(&block)
|
|
16
|
-
return "" unless mobile_device?
|
|
17
|
-
capture(&block)
|
|
18
|
-
end
|
|
19
|
-
|
|
20
|
-
def unless_mobile_device(&block)
|
|
21
|
-
return "" if mobile_device?
|
|
22
|
-
capture(&block)
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
end
|
|
26
|
-
|
|
27
|
-
module MobileController
|
|
28
|
-
extend ActiveSupport::Concern
|
|
29
|
-
|
|
30
|
-
included do
|
|
31
|
-
helper_method :mobile_device?, :iphone?, :android?
|
|
32
|
-
end
|
|
33
|
-
|
|
34
|
-
def mobile_device_user_agent_regexp
|
|
35
|
-
Regexp.new(['palm','blackberry','nokia','phone','midp','mobi','symbian','chtml','ericsson','minimo',
|
|
36
|
-
'audiovox','motorola','samsung','telit','upg1','windows ce','ucweb','astel','plucker',
|
|
37
|
-
'x320','x240','j2me','sgh','portable','sprint','docomo','kddi','softbank','android','mmp',
|
|
38
|
-
'pdxgw','netfront','xiino','vodafone','portalmmm','sagem','mot-','sie-','ipod','up\\.b',
|
|
39
|
-
'webos','amoi','novarra','cdm','alcatel','pocket','ipad','iphone','mobileexplorer','mobile'].join('|'))
|
|
40
|
-
end
|
|
41
|
-
|
|
42
|
-
def iphone?
|
|
43
|
-
request.user_agent.to_s.downcase.include?("iphone")
|
|
44
|
-
end
|
|
45
|
-
|
|
46
|
-
def android?
|
|
47
|
-
request.user_agent.to_s.downcase.include?("android")
|
|
48
|
-
end
|
|
49
|
-
|
|
50
|
-
def mobile_device?
|
|
51
|
-
request.user_agent.to_s.downcase =~ mobile_device_user_agent_regexp
|
|
52
|
-
end
|
|
53
|
-
|
|
54
|
-
end
|
|
55
|
-
|
|
56
|
-
end
|
|
57
|
-
end
|
|
@@ -1,83 +0,0 @@
|
|
|
1
|
-
module Facades
|
|
2
|
-
module Helpers
|
|
3
|
-
|
|
4
|
-
module Pagination
|
|
5
|
-
|
|
6
|
-
class PageLink
|
|
7
|
-
attr_reader :number
|
|
8
|
-
attr_reader :current
|
|
9
|
-
|
|
10
|
-
def initialize(num, curr)
|
|
11
|
-
@number = num
|
|
12
|
-
@current = curr
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
def current?
|
|
16
|
-
current === true
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
class Paginator
|
|
22
|
-
|
|
23
|
-
attr_reader :current_page
|
|
24
|
-
attr_reader :total_pages
|
|
25
|
-
attr_reader :attributes
|
|
26
|
-
attr_reader :links
|
|
27
|
-
|
|
28
|
-
def initialize(collection, view, request)
|
|
29
|
-
@total_pages = collection.total_pages
|
|
30
|
-
@current_page = collection.current_page
|
|
31
|
-
@links = []
|
|
32
|
-
@template = view
|
|
33
|
-
@request = request
|
|
34
|
-
end
|
|
35
|
-
|
|
36
|
-
def paginate!(window)
|
|
37
|
-
window.each do |page|
|
|
38
|
-
@links << PageLink.new(page, (page == current_page))
|
|
39
|
-
end
|
|
40
|
-
end
|
|
41
|
-
|
|
42
|
-
def first?
|
|
43
|
-
current_page == 1
|
|
44
|
-
end
|
|
45
|
-
|
|
46
|
-
def last?
|
|
47
|
-
(current_page == total_pages)
|
|
48
|
-
end
|
|
49
|
-
|
|
50
|
-
def next
|
|
51
|
-
links.detect{ |l| l.number == current_page + 1 }
|
|
52
|
-
end
|
|
53
|
-
|
|
54
|
-
def previous
|
|
55
|
-
links.detect{ |l| l.number == current_page - 1 }
|
|
56
|
-
end
|
|
57
|
-
|
|
58
|
-
def link(page_number, attrs = {}, text = nil)
|
|
59
|
-
text ||= page_number
|
|
60
|
-
options = CGI.parse(@request.query_string).merge('page' => page_number)
|
|
61
|
-
@template.link_to(text.to_s.html_safe, "?#{options.to_query}", attrs)
|
|
62
|
-
end
|
|
63
|
-
|
|
64
|
-
end
|
|
65
|
-
|
|
66
|
-
def paginate(collection, html_attrs = {}, file = "facades/pagination")
|
|
67
|
-
|
|
68
|
-
return "" if collection.total_count <= 0
|
|
69
|
-
paginator = Paginator.new(collection, self, request)
|
|
70
|
-
window_min = [(paginator.current_page - 5), 1].max
|
|
71
|
-
window_max = [(paginator.current_page + 5), paginator.total_pages].min
|
|
72
|
-
wrapper = Facades.enable_html5 ? :nav : :div
|
|
73
|
-
|
|
74
|
-
paginator.paginate!((window_min..window_max).to_a)
|
|
75
|
-
contents = render(partial: file, locals: { paginator: paginator })
|
|
76
|
-
|
|
77
|
-
content_tag(wrapper, contents.html_safe, class: 'pagination')
|
|
78
|
-
end
|
|
79
|
-
|
|
80
|
-
end
|
|
81
|
-
|
|
82
|
-
end
|
|
83
|
-
end
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
module Facades
|
|
2
|
-
module Helpers
|
|
3
|
-
module Utility
|
|
4
|
-
|
|
5
|
-
def facade_assets
|
|
6
|
-
content = if_ie(8) do
|
|
7
|
-
javascript_include_tag("https://html5shim.googlecode.com/svn/trunk/html5.js")
|
|
8
|
-
end
|
|
9
|
-
content.to_s.html_safe
|
|
10
|
-
end
|
|
11
|
-
|
|
12
|
-
##
|
|
13
|
-
# Render an IE conditional statement. By default conditionals use a less-than-or-equal-to format. Use the `specific`
|
|
14
|
-
# param to force only that version.
|
|
15
|
-
#
|
|
16
|
-
# @param version [Integer] The IE version to target
|
|
17
|
-
# @param specific [Boolean] optional Target the IE version specificially.
|
|
18
|
-
#
|
|
19
|
-
#
|
|
20
|
-
def if_ie(version, specific = false, &block)
|
|
21
|
-
content = capture(&block)
|
|
22
|
-
condition = specific ? "IE #{version}" : "lte IE #{version}"
|
|
23
|
-
str = "<!--[if #{condition}]>"
|
|
24
|
-
str << content.html_safe.lstrip
|
|
25
|
-
str << "<![endif]-->"
|
|
26
|
-
str.html_safe
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
end
|
|
30
|
-
end
|
|
31
|
-
end
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
module Facades
|
|
2
|
-
module SassExt
|
|
3
|
-
module FormElements
|
|
4
|
-
|
|
5
|
-
def fields_of_type(*args)
|
|
6
|
-
types = args.collect do |type|
|
|
7
|
-
send(:"#{type}_input_types")
|
|
8
|
-
end
|
|
9
|
-
Sass::Script::String.new(types.join(", "))
|
|
10
|
-
end
|
|
11
|
-
|
|
12
|
-
private
|
|
13
|
-
|
|
14
|
-
def all_input_types
|
|
15
|
-
[:checkbox, :password, :radio, :select, :string, :textarea].collect{ |t| send(:"#{t}_input_types") }.flatten.compact
|
|
16
|
-
end
|
|
17
|
-
|
|
18
|
-
def button_input_types
|
|
19
|
-
"input[type=submit], input[type=reset], button[type=submit]"
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
def checkbox_input_types
|
|
23
|
-
"input[type=checkbox]"
|
|
24
|
-
end
|
|
25
|
-
alias :check_input_types :checkbox_input_types
|
|
26
|
-
|
|
27
|
-
def password_input_types
|
|
28
|
-
"input[type=password]"
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
def radio_input_types
|
|
32
|
-
"input[type=radio]"
|
|
33
|
-
end
|
|
34
|
-
|
|
35
|
-
def select_input_types
|
|
36
|
-
"select"
|
|
37
|
-
end
|
|
38
|
-
|
|
39
|
-
def string_input_types
|
|
40
|
-
%w{email password text number search tel time url datetime date datetime-local week month}.collect do |type|
|
|
41
|
-
"input[type=#{type}]"
|
|
42
|
-
end
|
|
43
|
-
end
|
|
44
|
-
|
|
45
|
-
def textarea_input_types
|
|
46
|
-
"textarea"
|
|
47
|
-
end
|
|
48
|
-
|
|
49
|
-
end
|
|
50
|
-
|
|
51
|
-
end
|
|
52
|
-
end
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
module Facades
|
|
2
|
-
module SassExt
|
|
3
|
-
module Funcs
|
|
4
|
-
|
|
5
|
-
##
|
|
6
|
-
# Compact via compass
|
|
7
|
-
#
|
|
8
|
-
def compact(*args)
|
|
9
|
-
sep = :comma
|
|
10
|
-
if args.size == 1 && args.first.is_a?(Sass::Script::List)
|
|
11
|
-
list = args.first
|
|
12
|
-
args = list.value
|
|
13
|
-
sep = list.separator
|
|
14
|
-
end
|
|
15
|
-
Sass::Script::List.new(args.reject{|a| !a.to_bool}, sep)
|
|
16
|
-
end
|
|
17
|
-
|
|
18
|
-
##
|
|
19
|
-
# Joins a list with spaces or returns a single element if the
|
|
20
|
-
# list only contains one item
|
|
21
|
-
#
|
|
22
|
-
def spacify(list)
|
|
23
|
-
if list.is_a?(Sass::Script::List)
|
|
24
|
-
Sass::Script::List.new(list.value.dup, :space)
|
|
25
|
-
else
|
|
26
|
-
Sass::Script::List.new([list], :space)
|
|
27
|
-
end
|
|
28
|
-
end
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
end # Funcs
|
|
32
|
-
end # SassExt
|
|
33
|
-
end # Facades
|
data/lib/facades/sass_ext.rb
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
require 'sass'
|
|
2
|
-
module Facades
|
|
3
|
-
module SassExt
|
|
4
|
-
end
|
|
5
|
-
end
|
|
6
|
-
|
|
7
|
-
['form_elements', 'color', 'funcs'].each do |req|
|
|
8
|
-
require "facades/sass_ext/#{req}"
|
|
9
|
-
Sass::Script::Functions.send(:include, Facades::SassExt.const_get(req.camelize))
|
|
10
|
-
end
|
|
11
|
-
|
|
12
|
-
class Sass::Script::Functions::EvaluationContext
|
|
13
|
-
include Sass::Script::Functions
|
|
14
|
-
end
|
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
$_vendor-prefixes: compact(-moz -webkit -o -ms);
|
|
2
|
-
$_common-prefixes: compact(-moz -webkit -o);
|
|
3
|
-
|
|
4
|
-
// Outputs vendor prefixed property names
|
|
5
|
-
@mixin with-vendor-prefix($property, $values, $type: default){
|
|
6
|
-
$prefixes:if($type == default, $_vendor-prefixes, $_common-prefixes);
|
|
7
|
-
@each $prefix in $prefixes{
|
|
8
|
-
#{join(compact($prefix), compact($property), ",")}:$values;
|
|
9
|
-
}
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
@mixin background-size($size1: 100% auto, $size2: false, $size3: false, $size4: false, $size5: false){
|
|
13
|
-
$sizes: compact($size1, $size2, $size3, $size4, $size5);
|
|
14
|
-
@include with-vendor-prefix(background-size, $sizes, common);
|
|
15
|
-
background-size:$sizes;
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
@mixin border-radius($radius){
|
|
19
|
-
@include with-vendor-prefix(border-radius, $radius);
|
|
20
|
-
border-radius:$radius;
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
@mixin box-shadow($color, $horiz, $vert, $blur, $spread, $inner){
|
|
24
|
-
$props: compact();
|
|
25
|
-
@if( $inset == true or $inset == inset ){
|
|
26
|
-
$props: join($props, inset);
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
$props: join($props, compact($color $horiz $vert $blur $spread));
|
|
30
|
-
@include with-vendor-prefix(box-shadow, spacify($props));
|
|
31
|
-
box-shadow: spacify($props);
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
@mixin linear-gradient($pos, $g1, $g2:false, $g3:false, $g4:false, $g5:false, $g6:false, $g7:false, $g8:false, $g9:false, $g10:false){
|
|
36
|
-
|
|
37
|
-
$pos-type: type-of(nth($pos, 1));
|
|
38
|
-
@if ($pos-type == color) or (nth($pos, 1) == "transparent"){
|
|
39
|
-
$g10: $g9; $g9: $g8; $g8: $g7; $g7: $g6; $g6: $g5; $g5: $g4; $g4: $g3; $g3: $g2; $g2: $g1; $g1: $pos;
|
|
40
|
-
$pos: top; // Default position
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
$basic: ($g1);
|
|
44
|
-
$webkit: color-stop($g1);
|
|
45
|
-
|
|
46
|
-
@each $grad in $g2 $g3 $g4 $g5 $g6 $g7 $g8 $g9 $g10{
|
|
47
|
-
@if $grad != false{
|
|
48
|
-
$basic: $basic + ',' + $grad;
|
|
49
|
-
$webkit: $webkit + ',' + color-stop($grad);
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
$basic: unquote($basic);
|
|
54
|
-
$webkit: unquote($webkit);
|
|
55
|
-
|
|
56
|
-
background-color: nth($g1, 1);
|
|
57
|
-
background: deprecated-webkit-gradient(linear, $basic) no-repeat;
|
|
58
|
-
background: -webkit-gradient(linear, $pos, $webkit) no-repeat;
|
|
59
|
-
background: -webkit-linear-gradient($pos, $basic) no-repeat;
|
|
60
|
-
background: -moz-linear-gradient($pos, $basic) no-repeat;
|
|
61
|
-
background: -ms-linear-gradient($pos, $basic) no-repeat;
|
|
62
|
-
background: -o-linear-gradient($pos, $basic) no-repeat;
|
|
63
|
-
background: linear-gradient($pos, $basic) no-repeat;
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
@mixin transition($properties:all, $duration: 1s, $delay:false, $function: false){
|
|
67
|
-
@include transition-property($properties);
|
|
68
|
-
@include transition-duration($duration);
|
|
69
|
-
@include transition-timing-function($function);
|
|
70
|
-
@include transition-delay($delay);
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
@mixin transition-property($properties: all) {
|
|
74
|
-
@include with-vendor-prefix(transition-duration, unquote($properties));
|
|
75
|
-
transition-property:spacify($properties);
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
@mixin transition-duration($duration: 1s) {
|
|
80
|
-
@include with-vendor-prefix(transition-duration, if(type-of($duration) == string, unquote($duration), $duration));
|
|
81
|
-
transition-duration:$duration;
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
@mixin transition-timing-function($function: false) {
|
|
85
|
-
@include with-vendor-prefix(transition-timing-function, unquote($function));
|
|
86
|
-
transition-timing-function:$function;
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
@mixin transition-delay($delay: false) {
|
|
91
|
-
@include with-vendor-prefix(transition-delay, if(type-of($delay) == string, unquote($delay), $delay));
|
|
92
|
-
transition-delay:$delay;
|
|
93
|
-
}
|