constructor-core 0.9.1 → 1.0.0beta1

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.
Files changed (112) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/images/.keep +0 -0
  3. data/app/assets/javascripts/constructor_core/application.js.coffee +15 -18
  4. data/app/assets/javascripts/constructor_core/expandable_tree/hashchange.js.coffee +33 -0
  5. data/app/assets/javascripts/constructor_core/expandable_tree/initializer.js.coffee +106 -0
  6. data/app/assets/javascripts/constructor_core/expandable_tree/jquery.cookie.coffee +68 -0
  7. data/app/assets/javascripts/constructor_core/expandable_tree/restorable.js.coffee +122 -0
  8. data/app/assets/javascripts/constructor_core/jquery.ui.nestedSortable.js +429 -0
  9. data/app/assets/javascripts/constructor_core/jquery_bundle.js.coffee +2 -1
  10. data/app/assets/javascripts/constructor_core/render_tree_helper.js.coffee +82 -0
  11. data/app/assets/javascripts/constructor_core/sortable_tree/initializer.js.coffee +54 -0
  12. data/app/assets/stylesheets/constructor_core/application.css.scss +24 -1
  13. data/app/assets/stylesheets/constructor_core/framework/all.scss +4 -0
  14. data/app/assets/stylesheets/constructor_core/framework/classes.scss +4 -0
  15. data/app/assets/stylesheets/constructor_core/framework/globals.scss +49 -0
  16. data/app/assets/stylesheets/constructor_core/framework/grid.scss +33 -0
  17. data/app/assets/stylesheets/constructor_core/framework/mixin.scss +193 -0
  18. data/app/assets/stylesheets/constructor_core/project/blocks/b-button/_color/b-button_color_light.scss +12 -0
  19. data/app/assets/stylesheets/constructor_core/project/blocks/b-button/_size/b-button_size_small.scss +7 -0
  20. data/app/assets/stylesheets/constructor_core/project/blocks/b-button/b-button.scss +29 -0
  21. data/app/assets/stylesheets/constructor_core/project/blocks/b-form/__actions/b-form__actions.scss +3 -0
  22. data/app/assets/stylesheets/constructor_core/project/blocks/b-form/__field/b-form__field.scss +12 -0
  23. data/app/assets/stylesheets/constructor_core/project/blocks/b-form/__file/b-form__file.scss +12 -0
  24. data/app/assets/stylesheets/constructor_core/project/blocks/b-form/__label/b-form__label.scss +7 -0
  25. data/app/assets/stylesheets/constructor_core/project/blocks/b-form/__row/b-form__row.scss +4 -0
  26. data/app/assets/stylesheets/constructor_core/project/blocks/b-form/b-form.scss +1 -0
  27. data/app/assets/stylesheets/constructor_core/project/blocks/b-form/b-full-url/__icon/b-full-url__icon.scss +5 -0
  28. data/app/assets/stylesheets/constructor_core/project/blocks/b-form/b-full-url/__path/b-full-url__path.scss +4 -0
  29. data/app/assets/stylesheets/constructor_core/project/blocks/b-form/b-full-url/__url/b-full-url__url.scss +8 -0
  30. data/app/assets/stylesheets/constructor_core/project/blocks/b-form/b-full-url/b-full-url.scss +11 -0
  31. data/app/assets/stylesheets/constructor_core/project/blocks/b-header/b-header.scss +6 -0
  32. data/app/assets/stylesheets/constructor_core/project/blocks/b-login/__field/b-login__field.scss +13 -0
  33. data/app/assets/stylesheets/constructor_core/project/blocks/b-login/__label/b-login__label.scss +6 -0
  34. data/app/assets/stylesheets/constructor_core/project/blocks/b-login/__remember/b-login__remember.scss +4 -0
  35. data/app/assets/stylesheets/constructor_core/project/blocks/b-login/b-login.scss +8 -0
  36. data/app/assets/stylesheets/constructor_core/project/blocks/b-logo/b-logo.scss +15 -0
  37. data/app/assets/stylesheets/constructor_core/project/blocks/b-menu/__item-icon/b-menu__item-icon.scss +3 -0
  38. data/app/assets/stylesheets/constructor_core/project/blocks/b-menu/__item-link/_active/b-menu__item-link_active.scss +10 -0
  39. data/app/assets/stylesheets/constructor_core/project/blocks/b-menu/__item-link/b-menu__item-link.scss +13 -0
  40. data/app/assets/stylesheets/constructor_core/project/blocks/b-menu/__item/b-menu__item.scss +4 -0
  41. data/app/assets/stylesheets/constructor_core/project/blocks/b-menu/b-menu.scss +5 -0
  42. data/app/assets/stylesheets/constructor_core/project/blocks/b-profile/b-profile.scss +3 -0
  43. data/app/assets/stylesheets/constructor_core/project/blocks/b-tree/__expand/b-tree__expand.scss +10 -0
  44. data/app/assets/stylesheets/constructor_core/project/blocks/b-tree/__handle/b-tree__handle.scss +8 -0
  45. data/app/assets/stylesheets/constructor_core/project/blocks/b-tree/__item/b-tree__item.scss +5 -0
  46. data/app/assets/stylesheets/constructor_core/project/blocks/b-tree/__li/b-tree__li.scss +4 -0
  47. data/app/assets/stylesheets/constructor_core/project/blocks/b-tree/__link/b-tree__link.scss +14 -0
  48. data/app/assets/stylesheets/constructor_core/project/blocks/b-tree/__nested-set/b-tree__nested-set.scss +6 -0
  49. data/app/assets/stylesheets/constructor_core/project/blocks/b-tree/__url/b-tree__url.scss +5 -0
  50. data/app/assets/stylesheets/constructor_core/project/blocks/b-tree/b-tree.scss +5 -0
  51. data/app/assets/stylesheets/constructor_core/project/layouts/l-all/l-all.scss +4 -0
  52. data/app/assets/stylesheets/constructor_core/project/layouts/l-content/l-content.scss +3 -0
  53. data/app/assets/stylesheets/constructor_core/project/layouts/l-header/__avatar/l-header__avatar.scss +5 -0
  54. data/app/assets/stylesheets/constructor_core/project/layouts/l-header/__email/l-header__email.scss +12 -0
  55. data/app/assets/stylesheets/constructor_core/project/layouts/l-header/__link-icon/l-header__link-icon.scss +4 -0
  56. data/app/assets/stylesheets/constructor_core/project/layouts/l-header/__link/l-header__link.scss +12 -0
  57. data/app/assets/stylesheets/constructor_core/project/layouts/l-header/__logout/l-header__logout.scss +11 -0
  58. data/app/assets/stylesheets/constructor_core/project/layouts/l-header/__profile/l-header__profile.scss +4 -0
  59. data/app/assets/stylesheets/constructor_core/project/layouts/l-header/l-header.scss +7 -0
  60. data/app/assets/stylesheets/constructor_core/project/layouts/l-pages/l-pages.scss +3 -0
  61. data/app/assets/stylesheets/constructor_core/project/layouts/l-sidebar/l-sidebar.scss +7 -0
  62. data/app/controllers/constructor_core/sessions_controller.rb +1 -1
  63. data/app/helpers/constructor_core/application_helper.rb +6 -0
  64. data/app/helpers/render_expandable_tree_helper.rb +51 -0
  65. data/app/views/constructor_core/sessions/new.html.slim +11 -20
  66. data/app/views/constructor_core/users/profile.html.slim +11 -17
  67. data/app/views/layouts/constructor_core/application_core.html.slim +44 -70
  68. data/app/views/layouts/constructor_core/login.html.slim +27 -0
  69. data/config/locales/en.yml +3 -2
  70. data/config/locales/fr.yml +3 -2
  71. data/config/locales/ru.yml +2 -1
  72. data/constructor-core.gemspec +4 -3
  73. data/lib/constructor-core.rb +5 -2
  74. data/lib/constructor_core/version.rb +1 -1
  75. data/{app → vendor}/assets/javascripts/constructor_core/jquery.cookie.js +0 -0
  76. data/{app → vendor}/assets/javascripts/constructor_core/keys_snippet.js +0 -0
  77. data/{app → vendor}/assets/javascripts/constructor_core/retina.js +0 -0
  78. data/vendor/assets/stylesheets/constructor_core/framework/all.scss +4 -0
  79. data/vendor/assets/stylesheets/constructor_core/framework/classes.scss +4 -0
  80. data/vendor/assets/stylesheets/constructor_core/framework/globals.scss +49 -0
  81. data/vendor/assets/stylesheets/constructor_core/framework/grid.scss +33 -0
  82. data/vendor/assets/stylesheets/constructor_core/framework/mixin.scss +193 -0
  83. metadata +94 -45
  84. data/app/assets/images/constructor_core/glyphicons-halflings-white.png +0 -0
  85. data/app/assets/images/constructor_core/glyphicons-halflings.png +0 -0
  86. data/app/assets/images/constructor_core/minus.gif +0 -0
  87. data/app/assets/images/constructor_core/plus.gif +0 -0
  88. data/app/assets/images/constructor_core/rss.png +0 -0
  89. data/app/assets/images/constructor_core/treeview-black-line.gif +0 -0
  90. data/app/assets/images/constructor_core/treeview-black.gif +0 -0
  91. data/app/assets/images/constructor_core/treeview-default-line.gif +0 -0
  92. data/app/assets/images/constructor_core/treeview-default.gif +0 -0
  93. data/app/assets/images/constructor_core/treeview-famfamfam-line.gif +0 -0
  94. data/app/assets/images/constructor_core/treeview-famfamfam.gif +0 -0
  95. data/app/assets/images/constructor_core/treeview-gray-line.gif +0 -0
  96. data/app/assets/images/constructor_core/treeview-gray.gif +0 -0
  97. data/app/assets/images/constructor_core/treeview-red-line.gif +0 -0
  98. data/app/assets/images/constructor_core/treeview-red.gif +0 -0
  99. data/app/assets/images/constructor_core/twitter.png +0 -0
  100. data/app/assets/images/constructor_core/widgets.png +0 -0
  101. data/app/assets/javascripts/constructor_core/bootstrap.js +0 -2276
  102. data/app/assets/stylesheets/constructor_core/main.css.scss.erb +0 -233
  103. data/app/views/constructor_core/devise/confirmations/new.html.slim +0 -10
  104. data/app/views/constructor_core/devise/mailer/confirmation_instructions.html.slim +0 -5
  105. data/app/views/constructor_core/devise/mailer/reset_password_instructions.html.slim +0 -7
  106. data/app/views/constructor_core/devise/mailer/unlock_instructions.html.slim +0 -5
  107. data/app/views/constructor_core/devise/passwords/edit.html.slim +0 -21
  108. data/app/views/constructor_core/devise/passwords/new.html.slim +0 -13
  109. data/app/views/constructor_core/devise/registrations/edit.html.slim +0 -28
  110. data/app/views/constructor_core/devise/registrations/new.html.slim +0 -20
  111. data/app/views/constructor_core/devise/shared/_links.html.slim +0 -19
  112. data/app/views/constructor_core/devise/unlocks/new.html.slim +0 -9
@@ -1,3 +1,4 @@
1
1
  #= require jquery
2
+ #= require jquery.ui.all
2
3
  #= require jquery_ujs
3
- #= require constructor_core/jquery.cookie
4
+ #= require ./expandable_tree/jquery.cookie
@@ -0,0 +1,82 @@
1
+ @_escape = (str) ->
2
+ str
3
+ .replace(/&/g, '&')
4
+ .replace(/>/g, '>')
5
+ .replace(/</g, '&lt;')
6
+ .replace(/"/g, '&quot;')
7
+
8
+ @_unescape = (str) ->
9
+ str
10
+ .replace(/&amp;/g, '&')
11
+ .replace(/&gt;/g, '>')
12
+ .replace(/&lt;/g, '<')
13
+ .replace(/&quot;/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 ./main
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,4 @@
1
+ @import 'mixin';
2
+ @import 'classes';
3
+ @import 'globals';
4
+ @import 'grid';
@@ -0,0 +1,4 @@
1
+ .l-base { @include base; }
2
+ .b-block { @include display-block; }
3
+ .b-inline { @include display-inline; }
4
+ .b-center { @include center-block; }
@@ -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
+ }