archetype 0.0.1.pre.3.00dfd9a → 0.0.1.pre.3.6ed259b
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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +7 -0
- data/README.md +1 -1
- data/VERSION.yml +1 -1
- data/bin/archetype +3 -0
- data/lib/archetype.rb +4 -0
- data/lib/archetype/actions/help.rb +16 -0
- data/lib/archetype/actions/theme.rb +73 -0
- data/lib/archetype/executor.rb +27 -0
- data/lib/archetype/sass_extensions/functions/lists.rb +26 -32
- data/lib/archetype/sass_extensions/functions/styleguide.rb +1 -1
- data/lib/archetype/sass_extensions/functions/ui.rb +2 -1
- data/lib/archetype/sass_extensions/functions/version.rb +2 -2
- data/lib/archetype/version.rb +2 -2
- data/stylesheets/archetype/_config.scss +10 -6
- data/stylesheets/archetype/_hacks.scss +40 -16
- data/stylesheets/archetype/_ui.scss +10 -4
- data/stylesheets/archetype/styleguide/components/_buttons.scss +1 -0
- data/stylesheets/archetype/util/_styles.scss +14 -3
- data/templates/_theme/_components.scss +3 -0
- data/templates/_theme/_config.scss +1 -0
- data/templates/_theme/_core.scss +13 -0
- data/templates/_theme/_helpers.scss +1 -0
- data/templates/_theme/_primitives.scss +3 -0
- data/templates/_theme/components/README +1 -0
- data/templates/_theme/primitives/README +1 -0
- data/test/fixtures/stylesheets/archetype/assets/images/vendor/archetype/animations/loaders-s7889ccc8c1.png +0 -0
- data/test/fixtures/stylesheets/archetype/config.rb +2 -0
- data/test/fixtures/stylesheets/archetype/expected/hacks/ie_pseudo.css +3 -3
- data/test/fixtures/stylesheets/archetype/expected/hacks/transparent_focusable.css +4 -0
- data/test/fixtures/stylesheets/archetype/expected/styleguide/buttons.css +28 -0
- data/test/fixtures/stylesheets/archetype/expected/styleguide/extend.css +7 -0
- data/test/fixtures/stylesheets/archetype/expected/styleguide/selective_state.css +3 -0
- data/test/fixtures/stylesheets/archetype/expected/ui/glyph_icon.css +52 -5
- data/test/fixtures/stylesheets/archetype/expected/utilities/custom_output_styler.css +8 -0
- data/test/fixtures/stylesheets/archetype/expected/utilities/targeting/target-browser.css +5 -0
- data/test/fixtures/stylesheets/archetype/source/hacks/transparent_focusable.scss +5 -0
- data/test/fixtures/stylesheets/archetype/source/styleguide/extend.scss +23 -0
- data/test/fixtures/stylesheets/archetype/source/ui/glyph_icon.scss +12 -0
- data/test/fixtures/stylesheets/archetype/source/utilities/custom_output_styler.scss +21 -0
- data/test/fixtures/stylesheets/archetype/source/utilities/targeting/target-browser.scss +8 -1
- data/test/helpers/test_case.rb +2 -2
- data/test/units/sass_extensions_test.rb +18 -25
- metadata +29 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: eacb5a42bfad733d2f75f8a08cec94a3e8daa4ca
|
4
|
+
data.tar.gz: 124027950cc1132c5b6af87f3d7dec19e4320a52
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 96feb215ea6e7b46f6c9902a63ac491f6c3a49c41bd4fc4603187527b89ef322f1ccff9cf922e1e3a459a10f2d1f1975f61cea2c64758b9dc17ec0948b60ca83
|
7
|
+
data.tar.gz: 5c3f33dbbc76e314af88bfdb4fa22f5723ab1e1d6596d9cdcefa33c4a515df6278464f35c738fd7dfa229b1d9c0e645e680b10ff7edd000cbdd90395727963cc
|
data/CHANGELOG.md
CHANGED
@@ -15,12 +15,19 @@
|
|
15
15
|
- added `prefixed-tag()` method for consistency when generating tag names
|
16
16
|
- added Chinese font stacks
|
17
17
|
- added wildcard support to `locale()` function (e.g. `locale(en_ ja_JP _DE)`)
|
18
|
+
- added `transparent-focusable()` mixin for transparent background support in older IE
|
19
|
+
- added ability to customize `output-style()` with `custom-output-styler()` mixin and `has-custom-output-styler()` function (NEEDS DOCUMENTATION)
|
20
|
+
- added better support for targeting IE6/7 glyphs and `ie-pseudo()` generated elements (NEEDS DOCUMENTATION)
|
21
|
+
- making `unique()` generated IDs genuinely unique
|
22
|
+
- adding support for a `testing` config flag
|
23
|
+
- adding support for `@extend` from a styleguide component
|
18
24
|
|
19
25
|
### Resolved Issues:
|
20
26
|
|
21
27
|
- quotes on strings passed to `associative()` weren't being stripped correctly
|
22
28
|
- fixed some minor glyph issues
|
23
29
|
- out-of-order CSS issues in Ruby 1.8.7 are fixed using `Hashery::OrderedHash`
|
30
|
+
- fixed issue with `archetype-version()` incorrectly matching comparators
|
24
31
|
|
25
32
|
### Tests:
|
26
33
|
|
data/README.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# Archetype
|
2
2
|
|
3
|
-
[](https://travis-ci.org/linkedin/archetype)
|
3
|
+
[](https://travis-ci.org/linkedin/archetype) [](http://badge.fury.io/rb/archetype)
|
4
4
|
|
5
5
|
Archetype is a UI pattern and component library for quickly iterating on and maintaining scalable web interfaces.
|
6
6
|
|
data/VERSION.yml
CHANGED
data/bin/archetype
ADDED
data/lib/archetype.rb
CHANGED
@@ -33,6 +33,10 @@ module Archetype
|
|
33
33
|
Compass::Configuration.add_configuration_property(:memoize, "should the memoizer be used to improve compilation speed") do
|
34
34
|
not (Compass.configuration.environment || :development).to_s.include?('dev')
|
35
35
|
end
|
36
|
+
# testing (for running unit tests)
|
37
|
+
Compass::Configuration.add_configuration_property(:testing, "is this a testing environment") do
|
38
|
+
ENV['CI']
|
39
|
+
end
|
36
40
|
end
|
37
41
|
end
|
38
42
|
|
@@ -0,0 +1,16 @@
|
|
1
|
+
description = "Get help on an Archetype action"
|
2
|
+
if @description.nil?
|
3
|
+
# do stuff...
|
4
|
+
@help = true
|
5
|
+
|
6
|
+
if not ARGV[1].nil? and ARGV[1] != 'help'
|
7
|
+
action = File.join(@actions_path, ARGV[1])
|
8
|
+
begin
|
9
|
+
load "#{action}.rb"
|
10
|
+
rescue
|
11
|
+
puts "unknown action: #{ARGV[1]}"
|
12
|
+
end
|
13
|
+
end
|
14
|
+
else
|
15
|
+
@description = description
|
16
|
+
end
|
@@ -0,0 +1,73 @@
|
|
1
|
+
require 'fileutils'
|
2
|
+
description = "Generate a new Archetype theme"
|
3
|
+
|
4
|
+
if @description.nil?
|
5
|
+
options = {
|
6
|
+
:extends => 'archetype'
|
7
|
+
}
|
8
|
+
OptionParser.new do |opts|
|
9
|
+
opts.banner = description
|
10
|
+
opts.define_head "Usage: archetype theme [path] [options]"
|
11
|
+
opts.separator ""
|
12
|
+
opts.separator "Example usage:"
|
13
|
+
opts.separator " archetype theme /path/to/scss/ --name=myCustomTheme"
|
14
|
+
opts.separator " archetype theme --name=themes/myExtendedTheme --extends=themes/myBaseTheme"
|
15
|
+
|
16
|
+
opts.on('-n', '--name THEME', 'theme name') do |v|
|
17
|
+
options[:theme] = v
|
18
|
+
end
|
19
|
+
|
20
|
+
opts.on('-x', '--extends THEME', 'theme name to extend') do |v|
|
21
|
+
options[:extends] = v
|
22
|
+
end
|
23
|
+
|
24
|
+
opts.on('-h', '--help', 'shows this help message') do
|
25
|
+
puts opts
|
26
|
+
exit
|
27
|
+
end
|
28
|
+
|
29
|
+
if not @help.nil?
|
30
|
+
puts opts
|
31
|
+
exit
|
32
|
+
end
|
33
|
+
end.parse!
|
34
|
+
|
35
|
+
if not options[:theme].nil?
|
36
|
+
base = ARGV[1] || '.'
|
37
|
+
tmp = '/tmp/theme_' + rand(36**8).to_s(36)
|
38
|
+
theme_template = File.join(File.dirname(__FILE__), '../../../templates/_theme/')
|
39
|
+
theme_path = File.join(base, options[:theme])
|
40
|
+
extends = "#{options[:extends]}"
|
41
|
+
if options[:extends] != 'archetype'
|
42
|
+
extends = "#{extends}/core"
|
43
|
+
end
|
44
|
+
theme_name = File.basename(options[:theme])
|
45
|
+
# copy template files to tmp dir
|
46
|
+
FileUtils.mkdir_p(tmp)
|
47
|
+
FileUtils.cp_r(Dir["#{theme_template}/**"], tmp)
|
48
|
+
|
49
|
+
puts "Creating theme '#{theme_name}' in #{File.expand_path(theme_path)}..."
|
50
|
+
puts "extending from #{options[:extends]}" if options[:extends] != 'archetype'
|
51
|
+
|
52
|
+
# update all placeholders in template files
|
53
|
+
Dir.glob("#{tmp}/**/*.scss") do |filename|
|
54
|
+
out = File.read(filename).gsub(/__THEME_NAME__/, theme_name).gsub(/__THEME_EXTENDS__/, extends)
|
55
|
+
File.open(filename, "w") { |file| file.puts out }
|
56
|
+
end
|
57
|
+
|
58
|
+
# now move all the theme files to their destination
|
59
|
+
FileUtils.mkdir_p(theme_path)
|
60
|
+
FileUtils.cp_r(Dir["#{tmp}/**"], theme_path)
|
61
|
+
|
62
|
+
# create convenience file _<theme>.scss ...
|
63
|
+
File.open(File.join(File.dirname(theme_path), "_#{theme_name}.scss"), "w") { |file| file.puts "// #{theme_name} theme\n@import \"#{theme_name}/core\";\n" }
|
64
|
+
|
65
|
+
# remove tmp dir
|
66
|
+
FileUtils.rm_rf(tmp)
|
67
|
+
puts "Congratulations! Your new theme has been created!"
|
68
|
+
puts "Use @import \"#{options[:theme]}\" in your scss files."
|
69
|
+
exit
|
70
|
+
end
|
71
|
+
else
|
72
|
+
@description = description
|
73
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
require 'optparse'
|
2
|
+
|
3
|
+
@actions_path = File.join(File.dirname(__FILE__), 'actions')
|
4
|
+
|
5
|
+
if not ARGV[0].nil? and not ARGV[0].empty?
|
6
|
+
action_name = ARGV[0]
|
7
|
+
action = File.join(@actions_path, action_name)
|
8
|
+
begin
|
9
|
+
require action
|
10
|
+
rescue
|
11
|
+
puts "unknown action: #{action_name}"
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
# if we got here, there was either no action, or the action was invalid
|
16
|
+
OptionParser.new do |opts|
|
17
|
+
opts.banner = "Archetype command line actions\n\n"
|
18
|
+
opts.define_head "Usage: archetype <action> [options]"
|
19
|
+
opts.separator ""
|
20
|
+
opts.separator "Available Actions:"
|
21
|
+
Dir.glob("#{@actions_path}/*.rb") do |action|
|
22
|
+
@description = true
|
23
|
+
load action
|
24
|
+
opts.separator " * #{File.basename(action, '.rb')}\t- #{@description}"
|
25
|
+
end
|
26
|
+
puts opts
|
27
|
+
end.parse!
|
@@ -71,38 +71,6 @@ module Archetype::SassExtensions::Lists
|
|
71
71
|
Sass::Script::Functions.declare :list_insert, [:list, :idx, :value]
|
72
72
|
Sass::Script::Functions.declare :list_insert, [:list, :idx, :value, :separator]
|
73
73
|
|
74
|
-
#
|
75
|
-
# sort a list
|
76
|
-
#
|
77
|
-
# *Parameters*:
|
78
|
-
# - <tt>$list</tt> {List} the list to sort
|
79
|
-
# - <tt>$reverse</tt> {Boolean} sort the list in reverse order
|
80
|
-
# *Returns*:
|
81
|
-
# - {List} the sorted list
|
82
|
-
#
|
83
|
-
# TODO - this is failing, fix this
|
84
|
-
#def list_sort(list, reverse = false)
|
85
|
-
# separator = list.separator if list.is_a?(Sass::Script::List)
|
86
|
-
# list = list.to_a.sort
|
87
|
-
# list = list.reverse if (reverse == Sass::Script::Bool.new(true))
|
88
|
-
# return Sass::Script::List.new(list, separator)
|
89
|
-
#end
|
90
|
-
|
91
|
-
#
|
92
|
-
# reverse order a list
|
93
|
-
#
|
94
|
-
# *Parameters*:
|
95
|
-
# - <tt>$list</tt> {List} the list to reverse
|
96
|
-
# *Returns*:
|
97
|
-
# - {List} the reversed list
|
98
|
-
#
|
99
|
-
# TODO - this is failing, fix this
|
100
|
-
#def list_reverse(list)
|
101
|
-
# separator = list.separator if list.is_a?(Sass::Script::List)
|
102
|
-
# list = list.to_a.reverse
|
103
|
-
# return Sass::Script::List.new(list, separator)
|
104
|
-
#end
|
105
|
-
|
106
74
|
#
|
107
75
|
# add values(s) to a list
|
108
76
|
#
|
@@ -245,6 +213,32 @@ module Archetype::SassExtensions::Lists
|
|
245
213
|
end
|
246
214
|
Sass::Script::Functions.declare :associative_merge, [:list, :extender]
|
247
215
|
|
216
|
+
#
|
217
|
+
# given a string of styles, convert it into a key-value pair list
|
218
|
+
#
|
219
|
+
# *Parameters*:
|
220
|
+
# - <tt>$string</tt> {String} the string to convert
|
221
|
+
# *Returns*:
|
222
|
+
# - <tt>$list</tt> {List} the converted list of styles
|
223
|
+
#
|
224
|
+
def _style_string_to_list(string = '')
|
225
|
+
# convert to string and strip all comments
|
226
|
+
string = helpers.to_str(string, ' ').gsub(/\/\*[^\*\/]*\*\//, '')
|
227
|
+
# then split it on each rule
|
228
|
+
tmp = string.split(';')
|
229
|
+
styles = []
|
230
|
+
# and for each rule break it into it's key-value pairs
|
231
|
+
tmp.each do |rule|
|
232
|
+
kvp = []
|
233
|
+
rule.split(':').each do |str|
|
234
|
+
kvp.push Sass::Script::String.new(str)
|
235
|
+
end
|
236
|
+
styles.push Sass::Script::List.new(kvp, :comma)
|
237
|
+
end
|
238
|
+
# the recompose the list
|
239
|
+
return Sass::Script::List.new(styles, :comma)
|
240
|
+
end
|
241
|
+
|
248
242
|
private
|
249
243
|
def helpers
|
250
244
|
@helpers ||= Archetype::Functions::Helpers
|
@@ -17,7 +17,7 @@ module Archetype::SassExtensions::Styleguide
|
|
17
17
|
SPECIAL = %w(states selectors)
|
18
18
|
# these are unique CSS keys that can be exploited to provide fallback functionality by providing a second value
|
19
19
|
# e.g color: red; color: rgba(255,0,0, 0.8);
|
20
|
-
FALLBACKS = %w(background background-image background-color border border-bottom border-bottom-color border-color border-left border-left-color border-right border-right-color border-top border-top-color clip color layer-background-color outline outline-color white-space)
|
20
|
+
FALLBACKS = %w(background background-image background-color border border-bottom border-bottom-color border-color border-left border-left-color border-right border-right-color border-top border-top-color clip color layer-background-color outline outline-color white-space extend)
|
21
21
|
ADDITIVES = FALLBACKS + [DROP, INHERIT, STYLEGUIDE]
|
22
22
|
@@archetype_styleguide_mutex = Mutex.new
|
23
23
|
# :startdoc:
|
@@ -21,7 +21,8 @@ module Archetype::SassExtensions::UI
|
|
21
21
|
prefix = helpers.to_str(prefix, ' ', :quotes)
|
22
22
|
prefix = '.' if prefix == 'class'
|
23
23
|
prefix = '#' if prefix == 'id'
|
24
|
-
|
24
|
+
suffix = Compass.configuration.testing ? "RANDOM_UID" : "#{Time.now.to_i}-#{rand(36**8).to_s(36)}-#{uid}"
|
25
|
+
return Sass::Script::String.new("#{prefix}archetype-uid-#{suffix}")
|
25
26
|
end
|
26
27
|
|
27
28
|
#
|
@@ -8,7 +8,7 @@ require 'sass/version'
|
|
8
8
|
#
|
9
9
|
module Archetype::SassExtensions::Version
|
10
10
|
# :stopdoc:
|
11
|
-
COMPARATOR_PATTERN = /([
|
11
|
+
COMPARATOR_PATTERN = /(\s[neqglt]+\s|[><=!]+)/
|
12
12
|
VERSION_PATTERN = /\d+(\.\d+)*(\.[x|\*])?/
|
13
13
|
# :startdoc:
|
14
14
|
|
@@ -60,7 +60,7 @@ private
|
|
60
60
|
# check for wild cards
|
61
61
|
wild = version.index('x')
|
62
62
|
# check the comparison
|
63
|
-
comparator = (comparator || [])[0] || 'eq'
|
63
|
+
comparator = ((comparator || [])[0] || 'eq').strip
|
64
64
|
eq = comparator =~ /(e|=)/
|
65
65
|
lt = comparator =~ /(l|<)/
|
66
66
|
gt = comparator =~ /(g|>)/
|
data/lib/archetype/version.rb
CHANGED
@@ -10,7 +10,7 @@ module Archetype
|
|
10
10
|
# Method borrowed from Compass. All credit goes to Chris Eppstein and other contributors
|
11
11
|
# https://github.com/chriseppstein/compass/blob/stable/lib/compass/version.rb
|
12
12
|
# \(This method swiped from Haml and then modified, some credit goes to Nathan Weizenbaum\)
|
13
|
-
#
|
13
|
+
#
|
14
14
|
# *Returns*:
|
15
15
|
# - {String} the version of Archetype
|
16
16
|
#
|
@@ -30,7 +30,7 @@ module Archetype
|
|
30
30
|
def read_version
|
31
31
|
require 'yaml'
|
32
32
|
begin
|
33
|
-
@version = YAML
|
33
|
+
@version = YAML.load(File.read(scope('VERSION.yml')))
|
34
34
|
@version[:teeny] = @version[:patch]
|
35
35
|
@version[:string] = "#{@version[:major]}.#{@version[:minor]}"
|
36
36
|
@version[:string] << ".#{@version[:patch]}" if @version[:patch]
|
@@ -40,6 +40,7 @@ $CONTENT_PLACEHOLDER: '\0020' !default;
|
|
40
40
|
$CONFIG_DISABLED_CSS: () !default; // a list of CSS3 features to always disable when using output-style()
|
41
41
|
$CONFIG_GENERATED_TAG_PREFIX: x-archetype !default; // the prefix for the tag name to create when using ie-pseudo method
|
42
42
|
$CONFIG_GENERATED_TAG_CSS: false !default; // styles to apply to the generated tag when using ie-pseudo method (use this as a way to reset styles on these tags)
|
43
|
+
$CONFIG_GENERATED_TAG_INLINE: true !default; // if `true` insert the styles inline on the generated tag, otherwise insert the styles in a unique css rule
|
43
44
|
|
44
45
|
// z-layers
|
45
46
|
$CONFIG_Z_INDEX_BASE: 0 !default; // the default starting layer for z-index calculations
|
@@ -328,21 +329,21 @@ $CORE_SAFE_FONTS: (
|
|
328
329
|
(win, (
|
329
330
|
(default (Arial, sans-serif)),
|
330
331
|
(ja_JP (メイリオ, Meiryo, 'MS Pゴシック', 'MS PGothic', default)),
|
331
|
-
(zh_TW ('微軟正黑體', 'Microsoft JhengHei', PMingLiu, '宋体', SimSun
|
332
|
-
(zh_CN ('华文细黑', 'STHeiti Light', '微软雅黑体', 'Microsoft Yahei', '新宋体', NSimSun, '宋体', SimSun
|
332
|
+
(zh_TW (default, '微軟正黑體', 'Microsoft JhengHei', PMingLiu, '宋体', SimSun)),
|
333
|
+
(zh_CN (default, '华文细黑', 'STHeiti Light', '微软雅黑体', 'Microsoft Yahei', '新宋体', NSimSun, '宋体', SimSun)),
|
333
334
|
(ko_KR nil)
|
334
335
|
)),
|
335
336
|
(mac, (
|
336
337
|
(default (Helvetica, Arial, sans-serif)),
|
337
|
-
(zh_TW ('黑體-繁', 'Heiti TC', '儷黑Pro', 'LiHei Pro', PMingLiu, '宋体', SimSun
|
338
|
-
(zh_CN ('黑体-简', 'Heiti SC', '华文细黑', 'STHeiti Light', '华文黑体', STHeiti
|
338
|
+
(zh_TW (default, '黑體-繁', 'Heiti TC', '儷黑Pro', 'LiHei Pro', PMingLiu, '宋体', SimSun)),
|
339
|
+
(zh_CN (default, '黑体-简', 'Heiti SC', '华文细黑', 'STHeiti Light', '华文黑体', STHeiti)),
|
339
340
|
(ja_JP ('Hiragino Kaku Gothic Pro', 'ヒラギノ角ゴ Pro W3', 'MS Pゴシック', 'MS PGothic', default)),
|
340
341
|
(ko_KR nil)
|
341
342
|
)),
|
342
343
|
(linux, (
|
343
344
|
(default (Helvetica, FreeSans, 'Liberation Sans', Helmet, Arial, sans-serif)),
|
344
|
-
(zh_TW (PMingLiu, '宋体', SimSun
|
345
|
-
(zh_CN ('新宋体', NSimSun, '宋体', SimSun
|
345
|
+
(zh_TW (default, PMingLiu, '宋体', SimSun)),
|
346
|
+
(zh_CN (default, '新宋体', NSimSun, '宋体', SimSun)),
|
346
347
|
(ja_JP nil),
|
347
348
|
(ko_KR nil)
|
348
349
|
))
|
@@ -364,3 +365,6 @@ $CORE_SAFE_FONTS: (
|
|
364
365
|
); // note that this declaration isn't a `default`, but rather is enforced everytime. this can be modified (via extending $CONFIG_SAFE_FONTS)
|
365
366
|
$CONFIG_SAFE_FONTS: () !default;
|
366
367
|
$CONFIG_SAFE_FONTS: associative-merge($CORE_SAFE_FONTS, $CONFIG_SAFE_FONTS);
|
368
|
+
|
369
|
+
$archetype-glyph-selector: false !default;
|
370
|
+
$archetype-pseudo-selector: false !default;
|
@@ -34,19 +34,19 @@
|
|
34
34
|
}
|
35
35
|
|
36
36
|
// proxy for ie-pseudo
|
37
|
-
// @mixin
|
38
|
-
// @param
|
39
|
-
// @param
|
40
|
-
// @param
|
37
|
+
// @mixin ie-pseudo-before
|
38
|
+
// @param $styles {String} the styles to apply to the pseudo-element
|
39
|
+
// @param $content {String} the content to insert into the element (similar to css `content` attribute)
|
40
|
+
// @param $name {String} the name of the element
|
41
41
|
@mixin ie-pseudo-before($styles: false, $content: false, $name: '') {
|
42
42
|
@include ie-pseudo($styles, $content, before, $name);
|
43
43
|
}
|
44
44
|
|
45
45
|
// proxy for ie-pseudo
|
46
|
-
// @mixin
|
47
|
-
// @param
|
48
|
-
// @param
|
49
|
-
// @param
|
46
|
+
// @mixin ie-pseudo-after
|
47
|
+
// @param $styles {String} the styles to apply to the pseudo-element
|
48
|
+
// @param $content {String} the content to insert into the element (similar to css `content` attribute)
|
49
|
+
// @param $name {String} the name of the element
|
50
50
|
@mixin ie-pseudo-after($styles: false, $content: false, $name: '') {
|
51
51
|
@include ie-pseudo($styles, $content, after, $name);
|
52
52
|
}
|
@@ -54,19 +54,43 @@
|
|
54
54
|
// this creates a one-type executing expression that inserts an element relative to `this` element.
|
55
55
|
// this allows some level of support for :before/:after in IE6/7
|
56
56
|
// inspired by http://nicolasgallagher.com/better-float-containment-in-ie/
|
57
|
-
// @mixin
|
58
|
-
// @param
|
59
|
-
// @param
|
60
|
-
// @param
|
61
|
-
// @param
|
62
|
-
@
|
57
|
+
// @mixin ie-pseudo
|
58
|
+
// @param $styles {String} the styles to apply to the pseudo-element
|
59
|
+
// @param $content {String} the content to insert into the element (similar to css `content` attribute)
|
60
|
+
// @param $placement {String} [before|after] simulate :before or :after behavior
|
61
|
+
// @param $name {String} the name of the element
|
62
|
+
// @param $uid {String} a custom, unique identifier for the generate element
|
63
|
+
@mixin ie-pseudo($styles: false, $content: false, $placement: before, $name: '', $uid: false) {
|
64
|
+
$archetype-pseudo-selector: false;
|
63
65
|
@if $legacy-support-for-ie6 or $legacy-support-for-ie7 {
|
66
|
+
$uid: if($uid, $uid, unique('ie-pseudo-'));
|
67
|
+
$archetype-pseudo-selector: '& ##{$uid}';
|
64
68
|
$method: if($placement == before, insertBefore, appendChild);
|
65
69
|
$content: if($content and $content != nil, 'this.el.innerHTML="#{-ie-pseudo-content($content)}",', '');
|
66
70
|
@if $CONFIG_GENERATED_TAG_CSS {
|
67
71
|
$styles: if($styles and $styles != nil, #{$CONFIG_GENERATED_TAG_CSS}#{$styles}, $CONFIG_GENERATED_TAG_CSS);
|
68
72
|
}
|
69
|
-
|
70
|
-
|
73
|
+
// if we're using inline styles...
|
74
|
+
$inline: if($styles and $styles != nil and $CONFIG_GENERATED_TAG_INLINE, 'this.el.style.cssText="#{$styles}",', '');
|
75
|
+
*zoom: expression(this.runtimeStyle.zoom="1", this.el=document.createElement("#{prefixed-tag($name)}"),this.el.id="#{$uid}",#{$content}#{$inline}this.#{$method}(this.el));
|
76
|
+
// if we're NOT using inline styles...
|
77
|
+
@if not $CONFIG_GENERATED_TAG_INLINE {
|
78
|
+
// output it on the generated selector
|
79
|
+
#{$archetype-pseudo-selector} {
|
80
|
+
@include to-styles(-style-string-to-list($styles));
|
81
|
+
}
|
82
|
+
}
|
83
|
+
}
|
84
|
+
}
|
85
|
+
|
86
|
+
// a hack that allows elements with transparent backgrounds to be focusable in IE
|
87
|
+
// @mixin transparent-focusable
|
88
|
+
// @param $url {String} an optional URL to point to an image (not required)
|
89
|
+
// @param $data {String} an optional data URI for a transparent image (not required)
|
90
|
+
@mixin transparent-focusable($url: url(https://), $data: 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7') {
|
91
|
+
$bg: (transparent);
|
92
|
+
background: append($bg, $data);
|
93
|
+
@if $url {
|
94
|
+
@include target-browser(ie lte 7, background, append($bg, $url));
|
71
95
|
}
|
72
96
|
}
|
@@ -153,8 +153,10 @@
|
|
153
153
|
// @param $size {Number} the size of the icon
|
154
154
|
// @param $color {Color} the color of the font
|
155
155
|
// @param $placement {String} where to place the icon [before|after|inline]
|
156
|
-
// @param $ie-styles {String} styles to apply to IE6/7 (this is needed because the faux :before isn't
|
157
|
-
@
|
156
|
+
// @param $ie-styles {String} styles to apply to IE6/7 (this is needed because the faux :before isn't extendable)
|
157
|
+
// @param $ie-uid {String} a custom, unique identifier for the generate IE6/7 element
|
158
|
+
@mixin glyph-icon($icon, $size: default, $color: inherit, $placement: before, $ie-styles: false, $ie-uid: false) {
|
159
|
+
$archetype-glyph-selector: false;
|
158
160
|
$char-mapping: nil;
|
159
161
|
$char-code: nil;
|
160
162
|
@if $icon {
|
@@ -178,7 +180,7 @@
|
|
178
180
|
}
|
179
181
|
$selector: if(index(before after, $placement), '&:#{$placement}', '&');
|
180
182
|
#{$selector} {
|
181
|
-
font-family: $CONFIG_GLYPHS_NAME;
|
183
|
+
font-family: '#{$CONFIG_GLYPHS_NAME}';
|
182
184
|
font-weight: $CONFIG_GLYPHS_WEIGHT;
|
183
185
|
font-style: $CONFIG_GLYPHS_STYLE;
|
184
186
|
text-decoration: inherit;
|
@@ -189,6 +191,7 @@
|
|
189
191
|
content: $char-code;
|
190
192
|
}
|
191
193
|
}
|
194
|
+
$archetype-glyph-selector: $selector;
|
192
195
|
@if($selector != '&' and $ie-styles != nil) {
|
193
196
|
// support for IE6/7
|
194
197
|
$styles: "font-family:'#{$CONFIG_GLYPHS_NAME}';font-weight:#{$CONFIG_GLYPHS_WEIGHT};font-style:#{$CONFIG_GLYPHS_STYLE};text-decoration:inherit;";
|
@@ -201,7 +204,10 @@
|
|
201
204
|
@if($ie-styles) {
|
202
205
|
$styles: $styles + $ie-styles;
|
203
206
|
}
|
204
|
-
@include ie-pseudo($styles: $styles, $content: $char-code, $placement: $placement, $name: glyph);
|
207
|
+
@include ie-pseudo($styles: $styles, $content: $char-code, $placement: $placement, $name: glyph, $uid: $ie-uid);
|
208
|
+
@if $archetype-pseudo-selector {
|
209
|
+
$archetype-glyph-selector: '#{$selector}, #{$archetype-pseudo-selector}';
|
210
|
+
}
|
205
211
|
}
|
206
212
|
}
|
207
213
|
}
|