alchemy_cms 3.5.0 → 3.6.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.
- checksums.yaml +4 -4
- data/.rubocop.yml +82 -26
- data/.travis.yml +1 -1
- data/CHANGELOG.md +23 -1
- data/README.md +14 -5
- data/Rakefile +0 -1
- data/alchemy_cms.gemspec +2 -5
- data/app/assets/images/alchemy/alchemy-logo.png +0 -0
- data/app/assets/javascripts/alchemy/admin.js +1 -1
- data/app/assets/javascripts/alchemy/alchemy.base.js.coffee +4 -8
- data/app/assets/javascripts/alchemy/alchemy.buttons.js.coffee +2 -2
- data/app/assets/javascripts/alchemy/alchemy.datepicker.js.coffee +18 -27
- data/app/assets/javascripts/alchemy/alchemy.dialog.js.coffee +1 -1
- data/app/assets/javascripts/alchemy/alchemy.element_editors.js.coffee +3 -8
- data/app/assets/javascripts/alchemy/alchemy.elements_window.js.coffee +1 -1
- data/app/assets/javascripts/alchemy/alchemy.gui.js.coffee +0 -1
- data/app/assets/javascripts/alchemy/alchemy.page_sorter.js +22 -46
- data/app/assets/javascripts/alchemy/alchemy.preview_window.js.coffee +1 -1
- data/app/assets/javascripts/alchemy/alchemy.sitemap.js.coffee +2 -2
- data/app/assets/javascripts/alchemy/alchemy.spinner.js +32 -0
- data/app/assets/javascripts/alchemy/alchemy.tinymce.js.coffee +1 -1
- data/app/assets/javascripts/alchemy/templates/index.js +1 -0
- data/app/assets/javascripts/alchemy/templates/spinner.hbs +7 -0
- data/app/assets/stylesheets/alchemy/_extends.scss +1 -0
- data/app/assets/stylesheets/alchemy/admin.scss +1 -0
- data/app/assets/stylesheets/alchemy/base.scss +1 -7
- data/app/assets/stylesheets/alchemy/buttons.scss +1 -5
- data/app/assets/stylesheets/alchemy/dialogs.scss +0 -4
- data/app/assets/stylesheets/alchemy/elements.scss +2 -6
- data/app/assets/stylesheets/alchemy/frame.scss +0 -5
- data/app/assets/stylesheets/alchemy/image_library.scss +0 -13
- data/app/assets/stylesheets/alchemy/sitemap.scss +5 -34
- data/app/assets/stylesheets/alchemy/spinner.scss +52 -0
- data/app/controllers/alchemy/admin/attachments_controller.rb +12 -11
- data/app/controllers/alchemy/admin/base_controller.rb +3 -7
- data/app/controllers/alchemy/admin/essence_pictures_controller.rb +2 -1
- data/app/controllers/alchemy/admin/languages_controller.rb +3 -8
- data/app/controllers/alchemy/admin/pictures_controller.rb +11 -7
- data/app/controllers/alchemy/admin/resources_controller.rb +1 -1
- data/app/controllers/alchemy/attachments_controller.rb +2 -0
- data/app/controllers/alchemy/base_controller.rb +4 -5
- data/app/controllers/concerns/alchemy/admin/uploader_responses.rb +1 -1
- data/app/helpers/alchemy/admin/base_helper.rb +17 -8
- data/app/helpers/alchemy/admin/tags_helper.rb +31 -18
- data/app/helpers/alchemy/base_helper.rb +1 -1
- data/app/helpers/alchemy/pages_helper.rb +4 -7
- data/app/models/alchemy/attachment.rb +4 -0
- data/app/models/alchemy/cell.rb +1 -1
- data/app/models/alchemy/element.rb +6 -12
- data/app/models/alchemy/element/definitions.rb +2 -2
- data/app/models/alchemy/element/element_contents.rb +1 -1
- data/app/models/alchemy/essence_picture_view.rb +14 -2
- data/app/models/alchemy/language.rb +4 -4
- data/app/models/alchemy/page.rb +25 -28
- data/app/models/alchemy/page/page_elements.rb +1 -1
- data/app/models/alchemy/page/page_natures.rb +1 -1
- data/app/models/alchemy/picture.rb +5 -1
- data/app/models/alchemy/site.rb +27 -12
- data/app/views/alchemy/admin/attachments/_tag_list.html.erb +14 -13
- data/app/views/alchemy/admin/dashboard/info.html.erb +1 -1
- data/app/views/alchemy/admin/layoutpages/edit.html.erb +1 -1
- data/app/views/alchemy/admin/pages/_create_language_form.html.erb +1 -1
- data/app/views/alchemy/admin/pages/_form.html.erb +1 -1
- data/app/views/alchemy/admin/pages/_new_page_form.html.erb +1 -1
- data/app/views/alchemy/admin/pages/_page.html.erb +1 -1
- data/app/views/alchemy/admin/pages/_sitemap.html.erb +2 -2
- data/app/views/alchemy/admin/pages/configure_external.html.erb +1 -1
- data/app/views/alchemy/admin/pages/index.html.erb +5 -7
- data/app/views/alchemy/admin/pages/sort.html.erb +19 -0
- data/app/views/alchemy/admin/pages/update.js.erb +1 -1
- data/app/views/alchemy/admin/pictures/_archive.html.erb +19 -19
- data/app/views/alchemy/admin/pictures/_tag_list.html.erb +3 -4
- data/app/views/alchemy/admin/resources/_tag_list.html.erb +3 -4
- data/app/views/alchemy/admin/resources/edit.html.erb +1 -1
- data/app/views/alchemy/admin/resources/new.html.erb +1 -1
- data/app/views/alchemy/pages/_meta_data.html.erb +1 -1
- data/app/views/alchemy/pages/show.rss.builder +0 -2
- data/app/views/alchemy/welcome.html.erb +1 -1
- data/app/views/layouts/alchemy/admin.html.erb +1 -1
- data/config/locales/alchemy.de.yml +4 -4
- data/config/locales/alchemy.en.yml +4 -4
- data/config/locales/alchemy.es.yml +3 -3
- data/config/locales/alchemy.fr.yml +4 -4
- data/config/locales/alchemy.it.yml +3 -3
- data/config/locales/alchemy.nl.yml +4 -4
- data/config/locales/alchemy.ru.yml +3 -3
- data/lib/alchemy/auth_accessors.rb +6 -6
- data/lib/alchemy/cache_digests/template_tracker.rb +5 -5
- data/lib/alchemy/controller_actions.rb +1 -6
- data/lib/alchemy/engine.rb +0 -53
- data/lib/alchemy/errors.rb +12 -3
- data/lib/alchemy/i18n.rb +1 -1
- data/lib/alchemy/logger.rb +1 -1
- data/lib/alchemy/page_layout.rb +5 -5
- data/lib/alchemy/seeder.rb +16 -49
- data/lib/alchemy/tasks/helpers.rb +1 -1
- data/lib/alchemy/test_support/config_stubbing.rb +28 -0
- data/lib/alchemy/test_support/essence_shared_examples.rb +6 -6
- data/lib/alchemy/test_support/factories/language_factory.rb +1 -1
- data/lib/alchemy/test_support/factories/page_factory.rb +7 -0
- data/lib/alchemy/test_support/factories/site_factory.rb +6 -0
- data/lib/alchemy/test_support/shared_contexts.rb +14 -0
- data/lib/alchemy/test_support/shared_uploader_examples.rb +10 -0
- data/lib/alchemy/touching.rb +1 -1
- data/lib/alchemy/version.rb +1 -1
- data/lib/alchemy_cms.rb +56 -1
- data/lib/{alchemy/kaminari → kaminari}/scoped_pagination_url_helper.rb +0 -0
- data/lib/rails/generators/alchemy/base.rb +1 -1
- data/lib/rails/generators/alchemy/elements/elements_generator.rb +2 -1
- data/lib/rails/generators/alchemy/page_layouts/page_layouts_generator.rb +2 -1
- data/lib/rails/generators/alchemy/site_layouts/site_layouts_generator.rb +2 -1
- data/lib/tasks/alchemy/tidy.rake +91 -89
- data/lib/tasks/alchemy/upgrade.rake +15 -15
- metadata +29 -14
- data/app/assets/javascripts/alchemy/alchemy.spinner.js.coffee +0 -49
- data/app/views/alchemy/admin/pages/sort.js.erb +0 -4
- data/vendor/assets/javascripts/handlebars.js +0 -4608
- data/vendor/assets/javascripts/spin.min.js +0 -1
|
@@ -136,16 +136,11 @@ Alchemy.ElementEditors =
|
|
|
136
136
|
# Folds or expands the element editor with the given id.
|
|
137
137
|
#
|
|
138
138
|
toggleFold: (id, callback) ->
|
|
139
|
-
|
|
140
|
-
spinner
|
|
141
|
-
$toggler = $('> .element-header .ajax-folder', $el)
|
|
139
|
+
spinner = new Alchemy.Spinner('small')
|
|
140
|
+
spinner.spin("#element_#{id} > .element-header .ajax-folder")
|
|
142
141
|
$("#element_#{id}_folder").hide()
|
|
143
|
-
$toggler.prepend(spinner.spin().el)
|
|
144
142
|
$.post Alchemy.routes.fold_admin_element_path(id), =>
|
|
145
|
-
|
|
146
|
-
spinner.stop()
|
|
147
|
-
if callback?
|
|
148
|
-
callback.call()
|
|
143
|
+
callback.call() if callback?
|
|
149
144
|
return
|
|
150
145
|
|
|
151
146
|
# Updates the title quote if one of the several conditions are met
|
|
@@ -34,7 +34,7 @@ Alchemy.ElementsWindow =
|
|
|
34
34
|
false
|
|
35
35
|
height = @resize()
|
|
36
36
|
window.requestAnimationFrame =>
|
|
37
|
-
spinner = Alchemy.Spinner
|
|
37
|
+
spinner = new Alchemy.Spinner('medium')
|
|
38
38
|
spinner.spin @element_area[0]
|
|
39
39
|
$('#main_content').append(@element_window)
|
|
40
40
|
@reload()
|
|
@@ -1,48 +1,24 @@
|
|
|
1
|
-
|
|
2
|
-
var
|
|
3
|
-
}
|
|
1
|
+
Alchemy.PageSorter = function() {
|
|
2
|
+
var $sortables = $('ul#sitemap').find('ul.level_1_children');
|
|
4
3
|
|
|
5
|
-
(
|
|
4
|
+
$sortables.nestedSortable({
|
|
5
|
+
disableNesting: 'no-nest',
|
|
6
|
+
forcePlaceholderSize: true,
|
|
7
|
+
handle: '.handle',
|
|
8
|
+
items: 'li',
|
|
9
|
+
listType: 'ul',
|
|
10
|
+
opacity: 0.5,
|
|
11
|
+
placeholder: 'placeholder',
|
|
12
|
+
tabSize: 16,
|
|
13
|
+
tolerance: 'pointer',
|
|
14
|
+
toleranceElement: '> div'
|
|
15
|
+
});
|
|
6
16
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
disableNesting: 'no-nest',
|
|
16
|
-
forcePlaceholderSize: true,
|
|
17
|
-
handle: '.handle',
|
|
18
|
-
items: 'li',
|
|
19
|
-
listType: 'ul',
|
|
20
|
-
opacity: 0.5,
|
|
21
|
-
placeholder: 'placeholder',
|
|
22
|
-
tabSize: 16,
|
|
23
|
-
tolerance: 'pointer',
|
|
24
|
-
toleranceElement: '> div'
|
|
25
|
-
});
|
|
26
|
-
$('#save_page_order').click(function(e) {
|
|
27
|
-
var params = {
|
|
28
|
-
set: JSON.stringify($sortables.nestedSortable('toHierarchy'))
|
|
29
|
-
};
|
|
30
|
-
$.post(Alchemy.routes.order_admin_pages_path, params);
|
|
31
|
-
return false;
|
|
32
|
-
});
|
|
33
|
-
$('#sort_panel .button').click(Alchemy.pleaseWaitOverlay);
|
|
34
|
-
Alchemy.PageSorter.disableButton();
|
|
35
|
-
},
|
|
36
|
-
|
|
37
|
-
disableButton: function() {
|
|
38
|
-
var $buttonLink = $('#page_sorting_button a');
|
|
39
|
-
$buttonLink.removeAttr('onclick');
|
|
40
|
-
$('#page_sorting_button').addClass('active');
|
|
41
|
-
$buttonLink.css({
|
|
42
|
-
cursor: 'default'
|
|
43
|
-
});
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
})(jQuery);
|
|
17
|
+
$('#save_page_order').click(function(e) {
|
|
18
|
+
e.preventDefault();
|
|
19
|
+
Alchemy.Buttons.disable(this);
|
|
20
|
+
$.post(Alchemy.routes.order_admin_pages_path, {
|
|
21
|
+
set: JSON.stringify($sortables.nestedSortable('toHierarchy'))
|
|
22
|
+
});
|
|
23
|
+
});
|
|
24
|
+
};
|
|
@@ -29,13 +29,13 @@ Alchemy.Sitemap =
|
|
|
29
29
|
self = Alchemy.Sitemap
|
|
30
30
|
|
|
31
31
|
if foldingId
|
|
32
|
-
spinner = Alchemy.Spinner
|
|
32
|
+
spinner = new Alchemy.Spinner('small')
|
|
33
33
|
spinTarget = $('#fold_button_' + foldingId)
|
|
34
34
|
renderTarget = $('#page_' + foldingId)
|
|
35
35
|
renderTemplate = @list_template
|
|
36
36
|
pageId = foldingId
|
|
37
37
|
else
|
|
38
|
-
spinner = @options.spinner || Alchemy.Spinner
|
|
38
|
+
spinner = @options.spinner || new Alchemy.Spinner('medium')
|
|
39
39
|
spinTarget = @sitemap_wrapper
|
|
40
40
|
renderTarget = @sitemap_wrapper
|
|
41
41
|
renderTemplate = @template
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
Alchemy.Spinner = function Spinner(size, styles) {
|
|
2
|
+
var html = HandlebarsTemplates.spinner(),
|
|
3
|
+
$spinner = $(html),
|
|
4
|
+
$svg = $spinner.find('svg'),
|
|
5
|
+
className;
|
|
6
|
+
|
|
7
|
+
switch (size) {
|
|
8
|
+
case 'small': className = 'spinner--small';
|
|
9
|
+
break;
|
|
10
|
+
case 'large': className = 'spinner--large';
|
|
11
|
+
break;
|
|
12
|
+
default: className = 'spinner--medium';
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
$spinner.addClass(className);
|
|
16
|
+
|
|
17
|
+
if (styles) {
|
|
18
|
+
$svg.find('path').css(styles);
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
this.el = $spinner;
|
|
22
|
+
|
|
23
|
+
this.spin = function spin(parent) {
|
|
24
|
+
if (parent === undefined) parent = 'body';
|
|
25
|
+
$(parent).append($spinner);
|
|
26
|
+
return this;
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
this.stop = function stop() {
|
|
30
|
+
$spinner.remove();
|
|
31
|
+
};
|
|
32
|
+
};
|
|
@@ -55,7 +55,7 @@ $.extend Alchemy.Tinymce,
|
|
|
55
55
|
return
|
|
56
56
|
config = @getConfig(id, textarea[0].classList[1])
|
|
57
57
|
if config
|
|
58
|
-
spinner = Alchemy.Spinner
|
|
58
|
+
spinner = new Alchemy.Spinner('small')
|
|
59
59
|
textarea.closest('.tinymce_container').prepend spinner.spin().el
|
|
60
60
|
tinymce.init(config)
|
|
61
61
|
else
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//= require alchemy/templates/spinner
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
<div class="spinner">
|
|
2
|
+
<svg width="100%" viewBox="0 0 28 28">
|
|
3
|
+
<path class="hex1" d="M5.938,18.07l-5.878-5.9l2.154-8.058l8.024-2.161l5.87,5.9l-2.144,8.058L5.938,18.07z"/>
|
|
4
|
+
<path class="hex2" d="M19.686,20.785l-4.731-4.754l1.725-6.487l6.468-1.742l4.733,4.754l-1.734,6.487L19.686,20.785z"/>
|
|
5
|
+
<path class="hex3" d="M11.708,26.294l-3.47-3.485l1.276-4.758l4.74-1.276l3.468,3.485l-1.265,4.758L11.708,26.294z"/>
|
|
6
|
+
</svg>
|
|
7
|
+
</div>
|
|
@@ -3,8 +3,7 @@ html {
|
|
|
3
3
|
|
|
4
4
|
&.turbolinks-progress-bar::before,
|
|
5
5
|
.turbolinks-progress-bar {
|
|
6
|
-
background-color:
|
|
7
|
-
height: 3px !important;
|
|
6
|
+
background-color: #fff !important;
|
|
8
7
|
z-index: 400001;
|
|
9
8
|
}
|
|
10
9
|
}
|
|
@@ -125,11 +124,6 @@ hr {
|
|
|
125
124
|
|
|
126
125
|
.center {
|
|
127
126
|
text-align: center;
|
|
128
|
-
|
|
129
|
-
.spinner {
|
|
130
|
-
display: inline-block;
|
|
131
|
-
vertical-align: middle;
|
|
132
|
-
}
|
|
133
127
|
}
|
|
134
128
|
|
|
135
129
|
kbd {
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
button, input[type="submit"], a.button, input.button {
|
|
2
2
|
@include button-defaults;
|
|
3
|
+
position: relative;
|
|
3
4
|
|
|
4
5
|
&.small {
|
|
5
6
|
padding: $default-padding 3*$default-padding;
|
|
@@ -51,11 +52,6 @@ button, input[type="submit"], a.button, input.button {
|
|
|
51
52
|
overflow: hidden;
|
|
52
53
|
text-align: center;
|
|
53
54
|
|
|
54
|
-
.spinner {
|
|
55
|
-
left: 50% !important; // the spin.js lib calculates false!
|
|
56
|
-
top: 50% !important;
|
|
57
|
-
}
|
|
58
|
-
|
|
59
55
|
.icon {
|
|
60
56
|
display: inline-block;
|
|
61
57
|
vertical-align: middle;
|
|
@@ -87,6 +87,8 @@
|
|
|
87
87
|
|
|
88
88
|
.ajax-folder {
|
|
89
89
|
position: absolute;
|
|
90
|
+
width: 16px;
|
|
91
|
+
height: 16px;
|
|
90
92
|
right: 8px;
|
|
91
93
|
top: 8px;
|
|
92
94
|
|
|
@@ -255,11 +257,6 @@
|
|
|
255
257
|
@extend .disable-user-select;
|
|
256
258
|
cursor: pointer;
|
|
257
259
|
|
|
258
|
-
.spinner {
|
|
259
|
-
top: 9px;
|
|
260
|
-
right: 9px;
|
|
261
|
-
}
|
|
262
|
-
|
|
263
260
|
> .hint-with-icon {
|
|
264
261
|
position: absolute;
|
|
265
262
|
right: 32px;
|
|
@@ -582,7 +579,6 @@ div.tinymce_container {
|
|
|
582
579
|
|
|
583
580
|
.spinner {
|
|
584
581
|
top: 70px;
|
|
585
|
-
left: 50%;
|
|
586
582
|
}
|
|
587
583
|
}
|
|
588
584
|
|
|
@@ -8,11 +8,6 @@ div#overlay {
|
|
|
8
8
|
z-index: 400000;
|
|
9
9
|
background-color: rgba(229, 229, 229, 0.4);
|
|
10
10
|
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr = #40E5E5E5, endColorstr = #40E5E5E5);
|
|
11
|
-
|
|
12
|
-
.spinner {
|
|
13
|
-
top: 50%;
|
|
14
|
-
left: 50%;
|
|
15
|
-
}
|
|
16
11
|
}
|
|
17
12
|
|
|
18
13
|
div#overlay_text_box {
|
|
@@ -38,10 +38,6 @@ $image-overlay-transition-easing: ease-in;
|
|
|
38
38
|
right: $picture-overlay-handle-width;
|
|
39
39
|
}
|
|
40
40
|
|
|
41
|
-
.spinner {
|
|
42
|
-
margin-left: 0;
|
|
43
|
-
}
|
|
44
|
-
|
|
45
41
|
.picture-overlay-handle {
|
|
46
42
|
right: 0;
|
|
47
43
|
|
|
@@ -162,15 +158,6 @@ $image-overlay-transition-easing: ease-in;
|
|
|
162
158
|
margin-left: -4px;
|
|
163
159
|
}
|
|
164
160
|
|
|
165
|
-
.spinner {
|
|
166
|
-
position: absolute !important;
|
|
167
|
-
left: 50% !important;
|
|
168
|
-
top: 50% !important;
|
|
169
|
-
@include transform(translateY(-50%));
|
|
170
|
-
margin-left: -$image-overlay-form-width/2 + $picture-overlay-handle-width;
|
|
171
|
-
@include transition(margin-left $image-overlay-transition-duration $image-overlay-transition-easing);
|
|
172
|
-
}
|
|
173
|
-
|
|
174
161
|
img {
|
|
175
162
|
display: inline-block;
|
|
176
163
|
height: auto;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
#sort_panel {
|
|
2
|
-
background: $
|
|
3
|
-
padding:
|
|
2
|
+
background: $light-gray;
|
|
3
|
+
padding: 47px 0 8px 0;
|
|
4
4
|
position: fixed;
|
|
5
|
-
top:
|
|
5
|
+
top: 29px;
|
|
6
6
|
left: 0;
|
|
7
7
|
z-index: 1;
|
|
8
8
|
width: 100%;
|
|
@@ -13,19 +13,14 @@
|
|
|
13
13
|
}
|
|
14
14
|
|
|
15
15
|
.buttons {
|
|
16
|
-
margin
|
|
16
|
+
margin: 0 12px 0 163px;
|
|
17
|
+
text-align: right;
|
|
17
18
|
}
|
|
18
19
|
}
|
|
19
20
|
|
|
20
21
|
#sitemap-wrapper {
|
|
21
22
|
position: relative;
|
|
22
23
|
min-height: 100%;
|
|
23
|
-
|
|
24
|
-
.loading .spinner {
|
|
25
|
-
position: absolute !important;
|
|
26
|
-
top: 50% !important;
|
|
27
|
-
left: 50% !important;
|
|
28
|
-
}
|
|
29
24
|
}
|
|
30
25
|
|
|
31
26
|
.sitemap_pagename_link {
|
|
@@ -357,27 +352,3 @@ a.folder_link {
|
|
|
357
352
|
.elements_from_page_selector {
|
|
358
353
|
width: 100%;
|
|
359
354
|
}
|
|
360
|
-
|
|
361
|
-
.elements_for_page {
|
|
362
|
-
position: absolute;
|
|
363
|
-
right: 32px;
|
|
364
|
-
top: -7px;
|
|
365
|
-
z-index: 15;
|
|
366
|
-
background-color: white;
|
|
367
|
-
width: 280px;
|
|
368
|
-
height: 33px;
|
|
369
|
-
padding: $default-padding;
|
|
370
|
-
border: $default-border;
|
|
371
|
-
box-shadow: #9ea09f 0px 0px 4px;
|
|
372
|
-
@extend %rounded-border;
|
|
373
|
-
|
|
374
|
-
.spinner {
|
|
375
|
-
top: 17px !important;
|
|
376
|
-
left: 50% !important;
|
|
377
|
-
margin-left: $default-margin;
|
|
378
|
-
}
|
|
379
|
-
|
|
380
|
-
.alchemy_selectbox {
|
|
381
|
-
width: 252px;
|
|
382
|
-
}
|
|
383
|
-
}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
.spinner {
|
|
2
|
+
position: absolute;
|
|
3
|
+
top: 50%;
|
|
4
|
+
left: 50%;
|
|
5
|
+
transform: translate(-50%, -50%);
|
|
6
|
+
text-align: center;
|
|
7
|
+
line-height: 1;
|
|
8
|
+
|
|
9
|
+
path {
|
|
10
|
+
fill: $dark-gray;
|
|
11
|
+
opacity: 1;
|
|
12
|
+
animation: spinner 1s infinite ease-in-out both;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
&.spinner--tiny {
|
|
16
|
+
width: 8px;
|
|
17
|
+
height: 8px;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
&.spinner--small {
|
|
21
|
+
width: 16px;
|
|
22
|
+
height: 16px;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
&.spinner--medium {
|
|
26
|
+
width: 32px;
|
|
27
|
+
height: 32px;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
&.spinner--large {
|
|
31
|
+
width: 48px;
|
|
32
|
+
height: 48px;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
.hex2 {
|
|
36
|
+
animation-delay: 0.15s;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
.hex3 {
|
|
40
|
+
animation-delay: 0.3s;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
@keyframes spinner {
|
|
45
|
+
0%, 100% {
|
|
46
|
+
opacity: 1;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
25%, 75% {
|
|
50
|
+
opacity: 0.1;
|
|
51
|
+
}
|
|
52
|
+
}
|