constructor-core 0.9.1 → 1.0.0beta1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/assets/images/.keep +0 -0
- data/app/assets/javascripts/constructor_core/application.js.coffee +15 -18
- data/app/assets/javascripts/constructor_core/expandable_tree/hashchange.js.coffee +33 -0
- data/app/assets/javascripts/constructor_core/expandable_tree/initializer.js.coffee +106 -0
- data/app/assets/javascripts/constructor_core/expandable_tree/jquery.cookie.coffee +68 -0
- data/app/assets/javascripts/constructor_core/expandable_tree/restorable.js.coffee +122 -0
- data/app/assets/javascripts/constructor_core/jquery.ui.nestedSortable.js +429 -0
- data/app/assets/javascripts/constructor_core/jquery_bundle.js.coffee +2 -1
- data/app/assets/javascripts/constructor_core/render_tree_helper.js.coffee +82 -0
- data/app/assets/javascripts/constructor_core/sortable_tree/initializer.js.coffee +54 -0
- data/app/assets/stylesheets/constructor_core/application.css.scss +24 -1
- data/app/assets/stylesheets/constructor_core/framework/all.scss +4 -0
- data/app/assets/stylesheets/constructor_core/framework/classes.scss +4 -0
- data/app/assets/stylesheets/constructor_core/framework/globals.scss +49 -0
- data/app/assets/stylesheets/constructor_core/framework/grid.scss +33 -0
- data/app/assets/stylesheets/constructor_core/framework/mixin.scss +193 -0
- data/app/assets/stylesheets/constructor_core/project/blocks/b-button/_color/b-button_color_light.scss +12 -0
- data/app/assets/stylesheets/constructor_core/project/blocks/b-button/_size/b-button_size_small.scss +7 -0
- data/app/assets/stylesheets/constructor_core/project/blocks/b-button/b-button.scss +29 -0
- data/app/assets/stylesheets/constructor_core/project/blocks/b-form/__actions/b-form__actions.scss +3 -0
- data/app/assets/stylesheets/constructor_core/project/blocks/b-form/__field/b-form__field.scss +12 -0
- data/app/assets/stylesheets/constructor_core/project/blocks/b-form/__file/b-form__file.scss +12 -0
- data/app/assets/stylesheets/constructor_core/project/blocks/b-form/__label/b-form__label.scss +7 -0
- data/app/assets/stylesheets/constructor_core/project/blocks/b-form/__row/b-form__row.scss +4 -0
- data/app/assets/stylesheets/constructor_core/project/blocks/b-form/b-form.scss +1 -0
- data/app/assets/stylesheets/constructor_core/project/blocks/b-form/b-full-url/__icon/b-full-url__icon.scss +5 -0
- data/app/assets/stylesheets/constructor_core/project/blocks/b-form/b-full-url/__path/b-full-url__path.scss +4 -0
- data/app/assets/stylesheets/constructor_core/project/blocks/b-form/b-full-url/__url/b-full-url__url.scss +8 -0
- data/app/assets/stylesheets/constructor_core/project/blocks/b-form/b-full-url/b-full-url.scss +11 -0
- data/app/assets/stylesheets/constructor_core/project/blocks/b-header/b-header.scss +6 -0
- data/app/assets/stylesheets/constructor_core/project/blocks/b-login/__field/b-login__field.scss +13 -0
- data/app/assets/stylesheets/constructor_core/project/blocks/b-login/__label/b-login__label.scss +6 -0
- data/app/assets/stylesheets/constructor_core/project/blocks/b-login/__remember/b-login__remember.scss +4 -0
- data/app/assets/stylesheets/constructor_core/project/blocks/b-login/b-login.scss +8 -0
- data/app/assets/stylesheets/constructor_core/project/blocks/b-logo/b-logo.scss +15 -0
- data/app/assets/stylesheets/constructor_core/project/blocks/b-menu/__item-icon/b-menu__item-icon.scss +3 -0
- data/app/assets/stylesheets/constructor_core/project/blocks/b-menu/__item-link/_active/b-menu__item-link_active.scss +10 -0
- data/app/assets/stylesheets/constructor_core/project/blocks/b-menu/__item-link/b-menu__item-link.scss +13 -0
- data/app/assets/stylesheets/constructor_core/project/blocks/b-menu/__item/b-menu__item.scss +4 -0
- data/app/assets/stylesheets/constructor_core/project/blocks/b-menu/b-menu.scss +5 -0
- data/app/assets/stylesheets/constructor_core/project/blocks/b-profile/b-profile.scss +3 -0
- data/app/assets/stylesheets/constructor_core/project/blocks/b-tree/__expand/b-tree__expand.scss +10 -0
- data/app/assets/stylesheets/constructor_core/project/blocks/b-tree/__handle/b-tree__handle.scss +8 -0
- data/app/assets/stylesheets/constructor_core/project/blocks/b-tree/__item/b-tree__item.scss +5 -0
- data/app/assets/stylesheets/constructor_core/project/blocks/b-tree/__li/b-tree__li.scss +4 -0
- data/app/assets/stylesheets/constructor_core/project/blocks/b-tree/__link/b-tree__link.scss +14 -0
- data/app/assets/stylesheets/constructor_core/project/blocks/b-tree/__nested-set/b-tree__nested-set.scss +6 -0
- data/app/assets/stylesheets/constructor_core/project/blocks/b-tree/__url/b-tree__url.scss +5 -0
- data/app/assets/stylesheets/constructor_core/project/blocks/b-tree/b-tree.scss +5 -0
- data/app/assets/stylesheets/constructor_core/project/layouts/l-all/l-all.scss +4 -0
- data/app/assets/stylesheets/constructor_core/project/layouts/l-content/l-content.scss +3 -0
- data/app/assets/stylesheets/constructor_core/project/layouts/l-header/__avatar/l-header__avatar.scss +5 -0
- data/app/assets/stylesheets/constructor_core/project/layouts/l-header/__email/l-header__email.scss +12 -0
- data/app/assets/stylesheets/constructor_core/project/layouts/l-header/__link-icon/l-header__link-icon.scss +4 -0
- data/app/assets/stylesheets/constructor_core/project/layouts/l-header/__link/l-header__link.scss +12 -0
- data/app/assets/stylesheets/constructor_core/project/layouts/l-header/__logout/l-header__logout.scss +11 -0
- data/app/assets/stylesheets/constructor_core/project/layouts/l-header/__profile/l-header__profile.scss +4 -0
- data/app/assets/stylesheets/constructor_core/project/layouts/l-header/l-header.scss +7 -0
- data/app/assets/stylesheets/constructor_core/project/layouts/l-pages/l-pages.scss +3 -0
- data/app/assets/stylesheets/constructor_core/project/layouts/l-sidebar/l-sidebar.scss +7 -0
- data/app/controllers/constructor_core/sessions_controller.rb +1 -1
- data/app/helpers/constructor_core/application_helper.rb +6 -0
- data/app/helpers/render_expandable_tree_helper.rb +51 -0
- data/app/views/constructor_core/sessions/new.html.slim +11 -20
- data/app/views/constructor_core/users/profile.html.slim +11 -17
- data/app/views/layouts/constructor_core/application_core.html.slim +44 -70
- data/app/views/layouts/constructor_core/login.html.slim +27 -0
- data/config/locales/en.yml +3 -2
- data/config/locales/fr.yml +3 -2
- data/config/locales/ru.yml +2 -1
- data/constructor-core.gemspec +4 -3
- data/lib/constructor-core.rb +5 -2
- data/lib/constructor_core/version.rb +1 -1
- data/{app → vendor}/assets/javascripts/constructor_core/jquery.cookie.js +0 -0
- data/{app → vendor}/assets/javascripts/constructor_core/keys_snippet.js +0 -0
- data/{app → vendor}/assets/javascripts/constructor_core/retina.js +0 -0
- data/vendor/assets/stylesheets/constructor_core/framework/all.scss +4 -0
- data/vendor/assets/stylesheets/constructor_core/framework/classes.scss +4 -0
- data/vendor/assets/stylesheets/constructor_core/framework/globals.scss +49 -0
- data/vendor/assets/stylesheets/constructor_core/framework/grid.scss +33 -0
- data/vendor/assets/stylesheets/constructor_core/framework/mixin.scss +193 -0
- metadata +94 -45
- data/app/assets/images/constructor_core/glyphicons-halflings-white.png +0 -0
- data/app/assets/images/constructor_core/glyphicons-halflings.png +0 -0
- data/app/assets/images/constructor_core/minus.gif +0 -0
- data/app/assets/images/constructor_core/plus.gif +0 -0
- data/app/assets/images/constructor_core/rss.png +0 -0
- data/app/assets/images/constructor_core/treeview-black-line.gif +0 -0
- data/app/assets/images/constructor_core/treeview-black.gif +0 -0
- data/app/assets/images/constructor_core/treeview-default-line.gif +0 -0
- data/app/assets/images/constructor_core/treeview-default.gif +0 -0
- data/app/assets/images/constructor_core/treeview-famfamfam-line.gif +0 -0
- data/app/assets/images/constructor_core/treeview-famfamfam.gif +0 -0
- data/app/assets/images/constructor_core/treeview-gray-line.gif +0 -0
- data/app/assets/images/constructor_core/treeview-gray.gif +0 -0
- data/app/assets/images/constructor_core/treeview-red-line.gif +0 -0
- data/app/assets/images/constructor_core/treeview-red.gif +0 -0
- data/app/assets/images/constructor_core/twitter.png +0 -0
- data/app/assets/images/constructor_core/widgets.png +0 -0
- data/app/assets/javascripts/constructor_core/bootstrap.js +0 -2276
- data/app/assets/stylesheets/constructor_core/main.css.scss.erb +0 -233
- data/app/views/constructor_core/devise/confirmations/new.html.slim +0 -10
- data/app/views/constructor_core/devise/mailer/confirmation_instructions.html.slim +0 -5
- data/app/views/constructor_core/devise/mailer/reset_password_instructions.html.slim +0 -7
- data/app/views/constructor_core/devise/mailer/unlock_instructions.html.slim +0 -5
- data/app/views/constructor_core/devise/passwords/edit.html.slim +0 -21
- data/app/views/constructor_core/devise/passwords/new.html.slim +0 -13
- data/app/views/constructor_core/devise/registrations/edit.html.slim +0 -28
- data/app/views/constructor_core/devise/registrations/new.html.slim +0 -20
- data/app/views/constructor_core/devise/shared/_links.html.slim +0 -19
- data/app/views/constructor_core/devise/unlocks/new.html.slim +0 -9
@@ -0,0 +1,82 @@
|
|
1
|
+
@_escape = (str) ->
|
2
|
+
str
|
3
|
+
.replace(/&/g, '&')
|
4
|
+
.replace(/>/g, '>')
|
5
|
+
.replace(/</g, '<')
|
6
|
+
.replace(/"/g, '"')
|
7
|
+
|
8
|
+
@_unescape = (str) ->
|
9
|
+
str
|
10
|
+
.replace(/&/g, '&')
|
11
|
+
.replace(/>/g, '>')
|
12
|
+
.replace(/</g, '<')
|
13
|
+
.replace(/"/g, '"')
|
14
|
+
|
15
|
+
@render_tree = (tree, options = {}) ->
|
16
|
+
html = ''
|
17
|
+
|
18
|
+
opts =
|
19
|
+
id: 'id'
|
20
|
+
node: null
|
21
|
+
root: false
|
22
|
+
level: 0
|
23
|
+
boost: []
|
24
|
+
|
25
|
+
# JQuery hash merge
|
26
|
+
$.extend opts, options
|
27
|
+
|
28
|
+
# Define Boost Only Once
|
29
|
+
unless opts['boost'].length is 0
|
30
|
+
boost = []
|
31
|
+
for node in tree
|
32
|
+
num = node.parent_id || 0
|
33
|
+
item = boost[num]
|
34
|
+
boost[num] = [] unless item instanceof Array
|
35
|
+
boost[num].push node
|
36
|
+
|
37
|
+
opts['boost'] = boost
|
38
|
+
|
39
|
+
unless opts.node
|
40
|
+
# render root nodes
|
41
|
+
roots = opts['boost'][0]
|
42
|
+
|
43
|
+
# select roots
|
44
|
+
# for node in tree
|
45
|
+
# roots.push node if node.parent_id is null
|
46
|
+
|
47
|
+
# roots is empty, but tree is not empty
|
48
|
+
# I should select nodes with minimal parent_id
|
49
|
+
# they will be roots
|
50
|
+
# order by lft, should be made at server side
|
51
|
+
min_elem = tree[0]
|
52
|
+
if roots.length is 0 and tree.length isnt 0
|
53
|
+
for elem in tree
|
54
|
+
min_elem = elem if elem.parent_id < min_elem.parent_id
|
55
|
+
# select roots witn min parent_id
|
56
|
+
for elem in tree
|
57
|
+
if elem.parent_id is min_elem.parent_id
|
58
|
+
roots.push elem
|
59
|
+
|
60
|
+
# render tree
|
61
|
+
for node in roots
|
62
|
+
$.extend opts, { node: node, root: false, level: opts.level + 1 }
|
63
|
+
children_html = render_tree tree, opts
|
64
|
+
html += opts.render_node(node, children_html, opts)
|
65
|
+
else
|
66
|
+
# render children nodes
|
67
|
+
children = []
|
68
|
+
children_html = ''
|
69
|
+
children = boost[opts.node.id]
|
70
|
+
|
71
|
+
# select children
|
72
|
+
# for elem in tree
|
73
|
+
# children.push elem if elem.parent_id is opts.node.id
|
74
|
+
|
75
|
+
# render children nodes
|
76
|
+
for node in children
|
77
|
+
$.extend opts, { node: node, root: false, level: opts.level + 1 }
|
78
|
+
children_html = render_tree tree, opts
|
79
|
+
html += opts.render_node(node, children_html, opts)
|
80
|
+
|
81
|
+
# result html
|
82
|
+
html
|
@@ -0,0 +1,54 @@
|
|
1
|
+
@rebuild_sortable_tree = (rebuild_url, item_id, parent_id, prev_id, next_id) ->
|
2
|
+
$.ajax
|
3
|
+
type: 'POST'
|
4
|
+
dataType: 'script'
|
5
|
+
url: rebuild_url
|
6
|
+
data:
|
7
|
+
id: item_id
|
8
|
+
parent_id: parent_id
|
9
|
+
prev_id: prev_id
|
10
|
+
next_id: next_id
|
11
|
+
|
12
|
+
error: (xhr, status, error) ->
|
13
|
+
console.log error
|
14
|
+
|
15
|
+
@init_sortable_tree = ->
|
16
|
+
sortable_tree = $('.b-tree')
|
17
|
+
return false if sortable_tree.length is 0
|
18
|
+
|
19
|
+
rebuild_url = sortable_tree.data('rebuild_url') || sortable_tree.data('rebuild-url')
|
20
|
+
max_levels = sortable_tree.data('max_levels') || sortable_tree.data('max-levels')
|
21
|
+
|
22
|
+
############################################
|
23
|
+
# Initialize Sortable Tree
|
24
|
+
############################################
|
25
|
+
sortable_tree.nestedSortable
|
26
|
+
items: '.b-tree__li'
|
27
|
+
helper: 'clone'
|
28
|
+
handle: '.b-tree__handle'
|
29
|
+
tolerance: 'pointer'
|
30
|
+
maxLevels: max_levels
|
31
|
+
revert: 250
|
32
|
+
tabSize: 25
|
33
|
+
opacity: 0.6
|
34
|
+
placeholder: 'placeholder'
|
35
|
+
disableNesting: 'no-nest'
|
36
|
+
toleranceElement: '> div'
|
37
|
+
forcePlaceholderSize: true
|
38
|
+
|
39
|
+
############################################
|
40
|
+
# Sortable Update Event
|
41
|
+
############################################
|
42
|
+
sortable_tree.on "sortupdate", (event, ui) =>
|
43
|
+
item = ui.item
|
44
|
+
attr_name = 'node-id'
|
45
|
+
item_id = item.data(attr_name)
|
46
|
+
prev_id = item.prev().data(attr_name)
|
47
|
+
next_id = item.next().data(attr_name)
|
48
|
+
parent_id = item.parent().parent().data(attr_name)
|
49
|
+
|
50
|
+
rebuild_sortable_tree(rebuild_url, item_id, parent_id, prev_id, next_id)
|
51
|
+
|
52
|
+
true
|
53
|
+
|
54
|
+
$ -> init_sortable_tree()
|
@@ -1,3 +1,26 @@
|
|
1
1
|
//= require ckeditor/contents
|
2
2
|
//= require ckeditor/skins/moono/editor.css
|
3
|
-
//= require
|
3
|
+
//= require font-awesome
|
4
|
+
//= require jquery.ui.all
|
5
|
+
//= require tree
|
6
|
+
//= require sortable_tree
|
7
|
+
//= require nested_options
|
8
|
+
//= require_self
|
9
|
+
|
10
|
+
@import 'framework/all';
|
11
|
+
@import 'project/**/*';
|
12
|
+
|
13
|
+
html {
|
14
|
+
height: 100%;
|
15
|
+
width: 100%;
|
16
|
+
}
|
17
|
+
|
18
|
+
body {
|
19
|
+
height: 100%;
|
20
|
+
margin: 0;
|
21
|
+
color: #333;
|
22
|
+
font-size: 16px;
|
23
|
+
font-family: Ubuntu, Arial, sans-serif;
|
24
|
+
font-weight: 100;
|
25
|
+
background: #ddd;
|
26
|
+
}
|
@@ -0,0 +1,49 @@
|
|
1
|
+
.g-out { overflow: visible !important}
|
2
|
+
|
3
|
+
.g-line {
|
4
|
+
@include clearfix;
|
5
|
+
}
|
6
|
+
|
7
|
+
.g-align_left {
|
8
|
+
text-align: left !important;
|
9
|
+
}
|
10
|
+
|
11
|
+
.g-align_right {
|
12
|
+
text-align: right !important;
|
13
|
+
}
|
14
|
+
|
15
|
+
.g-align_center {
|
16
|
+
text-align: center !important;
|
17
|
+
}
|
18
|
+
|
19
|
+
.g-float_left {
|
20
|
+
float: left !important;
|
21
|
+
}
|
22
|
+
|
23
|
+
.g-float_right {
|
24
|
+
float: right !important;
|
25
|
+
}
|
26
|
+
|
27
|
+
.g-hidden, .g-hide {
|
28
|
+
display: none !important;
|
29
|
+
}
|
30
|
+
|
31
|
+
.g-uppercase {
|
32
|
+
text-transform: uppercase !important;
|
33
|
+
}
|
34
|
+
|
35
|
+
.g-spin {
|
36
|
+
-webkit-animation-name: spin;
|
37
|
+
-webkit-animation-duration: 2000ms;
|
38
|
+
-webkit-animation-iteration-count: infinite;
|
39
|
+
-webkit-animation-timing-function: linear;
|
40
|
+
-moz-animation-name: spin;
|
41
|
+
-moz-animation-duration: 2000ms;
|
42
|
+
-moz-animation-iteration-count: infinite;
|
43
|
+
-moz-animation-timing-function: linear;
|
44
|
+
-ms-animation-name: spin;
|
45
|
+
-ms-animation-duration: 2000ms;
|
46
|
+
-ms-animation-iteration-count: infinite;
|
47
|
+
-ms-animation-timing-function: linear;
|
48
|
+
-o-transition: rotate(3600deg);
|
49
|
+
}
|
@@ -0,0 +1,33 @@
|
|
1
|
+
.l-row {
|
2
|
+
@include clearfix;
|
3
|
+
overflow: hidden;
|
4
|
+
margin-left: -20px;
|
5
|
+
}
|
6
|
+
|
7
|
+
.l-col {
|
8
|
+
float: left;
|
9
|
+
overflow: hidden;
|
10
|
+
margin-left: 20px;
|
11
|
+
@include box-sizing(border-box);
|
12
|
+
}
|
13
|
+
|
14
|
+
.l-col-i {
|
15
|
+
padding: 0 10px;
|
16
|
+
}
|
17
|
+
|
18
|
+
.l-col-1 { width: 40px; }
|
19
|
+
.l-col-2 { width: 100px; }
|
20
|
+
.l-col-3 { width: 160px; }
|
21
|
+
.l-col-4 { width: 220px; }
|
22
|
+
.l-col-5 { width: 280px; }
|
23
|
+
.l-col-6 { width: 340px; }
|
24
|
+
.l-col-7 { width: 400px; }
|
25
|
+
.l-col-8 { width: 460px; }
|
26
|
+
.l-col-9 { width: 520px; }
|
27
|
+
.l-col-10 { width: 580px; }
|
28
|
+
.l-col-11 { width: 640px; }
|
29
|
+
.l-col-12 { width: 700px; }
|
30
|
+
.l-col-13 { width: 760px; }
|
31
|
+
.l-col-14 { width: 820px; }
|
32
|
+
.l-col-15 { width: 880px; }
|
33
|
+
.l-col-16 { width: 940px; }
|
@@ -0,0 +1,193 @@
|
|
1
|
+
@mixin gradient-vertical($startColor: #555, $endColor: #333) {
|
2
|
+
background-color: mix($startColor, $endColor, 60%);
|
3
|
+
background-image: -moz-linear-gradient(top, $startColor, $endColor); // FF 3.6+
|
4
|
+
background-image: -webkit-gradient(linear, 0 0, 0 100%, from($startColor), to($endColor)); // Safari 4+, Chrome 2+
|
5
|
+
background-image: -webkit-linear-gradient(top, $startColor, $endColor); // Safari 5.1+, Chrome 10+
|
6
|
+
background-image: -o-linear-gradient(top, $startColor, $endColor); // Opera 11.10
|
7
|
+
background-image: linear-gradient(to bottom, $startColor, $endColor); // Standard, IE10
|
8
|
+
background-repeat: repeat-x;
|
9
|
+
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#{ie-hex-str($startColor)}', endColorstr='#{ie-hex-str($endColor)}', GradientType=0); // IE9 and down
|
10
|
+
}
|
11
|
+
|
12
|
+
@mixin gradient-horizontal($startColor: #555, $endColor: #333) {
|
13
|
+
background-color: $endColor;
|
14
|
+
background-image: -moz-linear-gradient(left, $startColor, $endColor); // FF 3.6+
|
15
|
+
background-image: -webkit-gradient(linear, 0 0, 100% 0, from($startColor), to($endColor)); // Safari 4+, Chrome 2+
|
16
|
+
background-image: -webkit-linear-gradient(left, $startColor, $endColor); // Safari 5.1+, Chrome 10+
|
17
|
+
background-image: -o-linear-gradient(left, $startColor, $endColor); // Opera 11.10
|
18
|
+
background-image: linear-gradient(to right, $startColor, $endColor); // Standard, IE10
|
19
|
+
background-repeat: repeat-x;
|
20
|
+
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#{ie-hex-str($startColor)}', endColorstr='#{ie-hex-str($endColor)}', GradientType=1); // IE9 and down
|
21
|
+
}
|
22
|
+
|
23
|
+
@mixin gradient-radial($innerColor: #555, $outerColor: #333) {
|
24
|
+
background-color: $outerColor;
|
25
|
+
background-image: -webkit-gradient(radial, center center, 0, center center, 460, from($innerColor), to($outerColor));
|
26
|
+
background-image: -webkit-radial-gradient(circle, $innerColor, $outerColor);
|
27
|
+
background-image: -moz-radial-gradient(circle, $innerColor, $outerColor);
|
28
|
+
background-image: -o-radial-gradient(circle, $innerColor, $outerColor);
|
29
|
+
background-repeat: no-repeat;
|
30
|
+
}
|
31
|
+
|
32
|
+
@mixin box-shadow($shadow...) {
|
33
|
+
-webkit-box-shadow: $shadow;
|
34
|
+
-moz-box-shadow: $shadow;
|
35
|
+
box-shadow: $shadow;
|
36
|
+
}
|
37
|
+
|
38
|
+
@mixin box-sizing($boxmodel) {
|
39
|
+
-webkit-box-sizing: $boxmodel;
|
40
|
+
-moz-box-sizing: $boxmodel;
|
41
|
+
box-sizing: $boxmodel;
|
42
|
+
}
|
43
|
+
|
44
|
+
@mixin border-radius($radius) {
|
45
|
+
-webkit-border-radius: $radius;
|
46
|
+
-moz-border-radius: $radius;
|
47
|
+
border-radius: $radius;
|
48
|
+
}
|
49
|
+
|
50
|
+
@mixin border-top-left-radius($radius) {
|
51
|
+
-webkit-border-top-left-radius: $radius;
|
52
|
+
-moz-border-radius-topleft: $radius;
|
53
|
+
border-top-left-radius: $radius;
|
54
|
+
}
|
55
|
+
@mixin border-top-right-radius($radius) {
|
56
|
+
-webkit-border-top-right-radius: $radius;
|
57
|
+
-moz-border-radius-topright: $radius;
|
58
|
+
border-top-right-radius: $radius;
|
59
|
+
}
|
60
|
+
@mixin border-bottom-right-radius($radius) {
|
61
|
+
-webkit-border-bottom-right-radius: $radius;
|
62
|
+
-moz-border-radius-bottomright: $radius;
|
63
|
+
border-bottom-right-radius: $radius;
|
64
|
+
}
|
65
|
+
@mixin border-bottom-left-radius($radius) {
|
66
|
+
-webkit-border-bottom-left-radius: $radius;
|
67
|
+
-moz-border-radius-bottomleft: $radius;
|
68
|
+
border-bottom-left-radius: $radius;
|
69
|
+
}
|
70
|
+
|
71
|
+
@mixin border-top-radius($radius) {
|
72
|
+
@include border-top-right-radius($radius);
|
73
|
+
@include border-top-left-radius($radius);
|
74
|
+
}
|
75
|
+
@mixin border-right-radius($radius) {
|
76
|
+
@include border-top-right-radius($radius);
|
77
|
+
@include border-bottom-right-radius($radius);
|
78
|
+
}
|
79
|
+
@mixin border-bottom-radius($radius) {
|
80
|
+
@include border-bottom-right-radius($radius);
|
81
|
+
@include border-bottom-left-radius($radius);
|
82
|
+
}
|
83
|
+
@mixin border-left-radius($radius) {
|
84
|
+
@include border-top-left-radius($radius);
|
85
|
+
@include border-bottom-left-radius($radius);
|
86
|
+
}
|
87
|
+
|
88
|
+
@mixin transition($transition) {
|
89
|
+
-webkit-transition: $transition;
|
90
|
+
-moz-transition: $transition;
|
91
|
+
-o-transition: $transition;
|
92
|
+
transition: $transition;
|
93
|
+
}
|
94
|
+
|
95
|
+
@mixin opacity($opacity) {
|
96
|
+
opacity: $opacity / 100;
|
97
|
+
filter: alpha(opacity=$opacity);
|
98
|
+
}
|
99
|
+
|
100
|
+
@mixin size($height, $width) {
|
101
|
+
width: $width;
|
102
|
+
height: $height;
|
103
|
+
}
|
104
|
+
|
105
|
+
@mixin square($size) {
|
106
|
+
@include size($size, $size);
|
107
|
+
}
|
108
|
+
|
109
|
+
|
110
|
+
// Transformations
|
111
|
+
@mixin rotate($degrees) {
|
112
|
+
-webkit-transform: rotate($degrees);
|
113
|
+
-moz-transform: rotate($degrees);
|
114
|
+
-ms-transform: rotate($degrees);
|
115
|
+
-o-transform: rotate($degrees);
|
116
|
+
transform: rotate($degrees);
|
117
|
+
}
|
118
|
+
@mixin scale($ratio) {
|
119
|
+
-webkit-transform: scale($ratio);
|
120
|
+
-moz-transform: scale($ratio);
|
121
|
+
-ms-transform: scale($ratio);
|
122
|
+
-o-transform: scale($ratio);
|
123
|
+
transform: scale($ratio);
|
124
|
+
}
|
125
|
+
@mixin translate($x, $y) {
|
126
|
+
-webkit-transform: translate($x, $y);
|
127
|
+
-moz-transform: translate($x, $y);
|
128
|
+
-ms-transform: translate($x, $y);
|
129
|
+
-o-transform: translate($x, $y);
|
130
|
+
transform: translate($x, $y);
|
131
|
+
}
|
132
|
+
@mixin skew($x, $y) {
|
133
|
+
-webkit-transform: skew($x, $y);
|
134
|
+
-moz-transform: skew($x, $y);
|
135
|
+
-ms-transform: skewX($x) skewY($y); // See https://github.com/twitter/bootstrap/issues/4885
|
136
|
+
-o-transform: skew($x, $y);
|
137
|
+
transform: skew($x, $y);
|
138
|
+
-webkit-backface-visibility: hidden; // See https://github.com/twitter/bootstrap/issues/5319
|
139
|
+
}
|
140
|
+
@mixin translate3d($x, $y, $z) {
|
141
|
+
-webkit-transform: translate3d($x, $y, $z);
|
142
|
+
-moz-transform: translate3d($x, $y, $z);
|
143
|
+
-o-transform: translate3d($x, $y, $z);
|
144
|
+
transform: translate3d($x, $y, $z);
|
145
|
+
}
|
146
|
+
|
147
|
+
|
148
|
+
|
149
|
+
@mixin display-inline() {
|
150
|
+
position: relative;
|
151
|
+
display: -moz-inline-stack;
|
152
|
+
display: inline-block;
|
153
|
+
overflow: hidden;
|
154
|
+
vertical-align: top;
|
155
|
+
*display: inline;
|
156
|
+
*zoom: 1;
|
157
|
+
}
|
158
|
+
|
159
|
+
@mixin display-block() {
|
160
|
+
position: relative;
|
161
|
+
display: block;
|
162
|
+
overflow: hidden;
|
163
|
+
}
|
164
|
+
|
165
|
+
@mixin clearfix(){
|
166
|
+
&:before,
|
167
|
+
&:after {
|
168
|
+
content: " ";
|
169
|
+
display: table;
|
170
|
+
}
|
171
|
+
|
172
|
+
&:after {
|
173
|
+
clear: both;
|
174
|
+
}
|
175
|
+
|
176
|
+
*zoom: 1;
|
177
|
+
}
|
178
|
+
|
179
|
+
@mixin center-block() {
|
180
|
+
@include display-block;
|
181
|
+
margin-left: auto;
|
182
|
+
margin-right: auto;
|
183
|
+
}
|
184
|
+
|
185
|
+
@mixin background-asset($asset, $options...) {
|
186
|
+
background: asset-data-url($asset) $options;
|
187
|
+
*background: asset-url($asset) $options;
|
188
|
+
}
|
189
|
+
|
190
|
+
@mixin base($width: 1000px) {
|
191
|
+
@include center-block;
|
192
|
+
width: $width;
|
193
|
+
}
|