beyond_canvas 0.6.4.pre → 0.7.0.pre
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 +11 -0
- data/Gemfile.lock +9 -9
- data/app/assets/javascripts/beyond_canvas.js +1 -0
- data/app/assets/javascripts/buttons.js +65 -0
- data/app/assets/javascripts/flash.js +8 -5
- data/app/assets/stylesheets/_beyond_canvas.sass +2 -0
- data/app/assets/stylesheets/components/_actions.sass +5 -0
- data/app/assets/stylesheets/components/_buttons.sass +15 -0
- data/app/assets/stylesheets/components/spinner.sass +38 -0
- data/app/views/beyond_canvas/shared/_head.html.slim +6 -6
- data/lib/beyond_canvas.rb +3 -1
- data/lib/beyond_canvas/version.rb +1 -1
- data/lib/generators/templates/beyond_canvas.rb +3 -0
- data/lib/generators/templates/beyond_canvas_form_utils.rb +11 -8
- metadata +5 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 57ce3075063f9f943f9b4a4fa47580696046a4d23563e70a3fc1a40c578592f9
|
4
|
+
data.tar.gz: b7a63f7471c95a67c8c436a6291826878d79acf913faeb13539f3604c1341820
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: cb70bf7931a673e05d1040923d9c4fdfaffd1c50a6a9f03e3b5b9aca0937c488d03923b6971a9c69d871ab0f6291493dec782399b6097d69e24cbc12aad841c8
|
7
|
+
data.tar.gz: 93f84bcd9bc6027fe4e25ea77213ae8a818d6edb0c4f0f683d71da5ff9fb7fbd14768aaa80edf31197a04a01661ce58de76561afd34f0a03d6269651163408fb
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,14 @@
|
|
1
|
+
### v0.7.0.pre
|
2
|
+
|
3
|
+
* deprecations
|
4
|
+
* Use custom `stylesheet_link_tag` and `javascript_include_tag` on head
|
5
|
+
|
6
|
+
* enhancements
|
7
|
+
* Make `lib/generators/templates/beyond_canvas_form_utils.rb` rubocop compatible
|
8
|
+
|
9
|
+
* features
|
10
|
+
* Add loading buttons
|
11
|
+
|
1
12
|
### v0.6.4.pre
|
2
13
|
|
3
14
|
* bug-fixes
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
beyond_canvas (0.
|
4
|
+
beyond_canvas (0.7.0.pre)
|
5
5
|
bourbon (~> 5.1)
|
6
6
|
inline_svg (~> 1.5)
|
7
7
|
sassc-rails (~> 2.1)
|
@@ -34,13 +34,13 @@ GEM
|
|
34
34
|
thor (~> 0.19)
|
35
35
|
builder (3.2.4)
|
36
36
|
colorize (0.8.1)
|
37
|
-
concurrent-ruby (1.1.
|
38
|
-
crass (1.0.
|
37
|
+
concurrent-ruby (1.1.6)
|
38
|
+
crass (1.0.6)
|
39
39
|
erubi (1.9.0)
|
40
|
-
ffi (1.
|
41
|
-
i18n (1.
|
40
|
+
ffi (1.12.2)
|
41
|
+
i18n (1.8.2)
|
42
42
|
concurrent-ruby (~> 1.0)
|
43
|
-
inline_svg (1.
|
43
|
+
inline_svg (1.7.0)
|
44
44
|
activesupport (>= 3.0)
|
45
45
|
nokogiri (>= 1.6)
|
46
46
|
loofah (2.4.0)
|
@@ -48,10 +48,10 @@ GEM
|
|
48
48
|
nokogiri (>= 1.5.9)
|
49
49
|
method_source (0.9.2)
|
50
50
|
mini_portile2 (2.4.0)
|
51
|
-
minitest (5.
|
52
|
-
nokogiri (1.10.
|
51
|
+
minitest (5.14.0)
|
52
|
+
nokogiri (1.10.8)
|
53
53
|
mini_portile2 (~> 2.4.0)
|
54
|
-
rack (2.
|
54
|
+
rack (2.2.2)
|
55
55
|
rack-test (1.1.0)
|
56
56
|
rack (>= 1.0, < 3)
|
57
57
|
rails-dom-testing (2.0.3)
|
@@ -0,0 +1,65 @@
|
|
1
|
+
$(document).ready(function() {
|
2
|
+
('use strict');
|
3
|
+
|
4
|
+
$('[class^="button"]').each(function() {
|
5
|
+
var button = $(this);
|
6
|
+
|
7
|
+
// Add width attribute and save old width
|
8
|
+
button.width(button.width());
|
9
|
+
button.data('oldWidth', button.width());
|
10
|
+
|
11
|
+
// Add the spinner
|
12
|
+
button.prepend(`
|
13
|
+
<div class="spinner">
|
14
|
+
<div class="bounce1"></div>
|
15
|
+
<div class="bounce2"></div>
|
16
|
+
<div class="bounce3"></div>
|
17
|
+
</div>`
|
18
|
+
);
|
19
|
+
|
20
|
+
// Bind ajax:success and ajax:error to the form the button belongs to
|
21
|
+
button
|
22
|
+
.closest('form')
|
23
|
+
.on('ajax:success', function() {
|
24
|
+
hideSpinner(button);
|
25
|
+
enableActionElements();
|
26
|
+
})
|
27
|
+
.on('ajax:error', function() {
|
28
|
+
hideSpinner(button);
|
29
|
+
enableActionElements();
|
30
|
+
});
|
31
|
+
});
|
32
|
+
|
33
|
+
// Bind click event to buttons
|
34
|
+
$('[class^="button"]').click(function() {
|
35
|
+
disableActionElements();
|
36
|
+
showSpinner($(this));
|
37
|
+
});
|
38
|
+
});
|
39
|
+
|
40
|
+
function showSpinner(button) {
|
41
|
+
// Adjust the width of the button
|
42
|
+
button.width(button.width() + $('.spinner').outerWidth(true));
|
43
|
+
// Show the spinner
|
44
|
+
setTimeout(function() {
|
45
|
+
button.find('.spinner').css('display', 'flex');
|
46
|
+
}, 125);
|
47
|
+
}
|
48
|
+
|
49
|
+
function hideSpinner(button) {
|
50
|
+
// Hide the spinner
|
51
|
+
button.find('.spinner').hide();
|
52
|
+
// Adjust the width of the button
|
53
|
+
button.width(button.data('oldWidth'));
|
54
|
+
}
|
55
|
+
|
56
|
+
function disableActionElements() {
|
57
|
+
$('a, input[type="submit"], input[type="button"], input[type="reset"], button').each(function() {
|
58
|
+
$(this).addClass('actions--disabled');
|
59
|
+
});
|
60
|
+
}
|
61
|
+
function enableActionElements() {
|
62
|
+
$('a, input[type="submit"], input[type="button"], input[type="reset"], button').each(function() {
|
63
|
+
$(this).removeClass("actions--disabled");
|
64
|
+
});
|
65
|
+
}
|
@@ -1,5 +1,5 @@
|
|
1
|
-
document.
|
2
|
-
'use strict'
|
1
|
+
$(document).ready(function() {
|
2
|
+
('use strict');
|
3
3
|
|
4
4
|
$('.flash').each(function() {
|
5
5
|
$(this).css('right', -$(this).width() + 'px');
|
@@ -14,8 +14,11 @@ document.addEventListener('turbolinks:load', function() {
|
|
14
14
|
});
|
15
15
|
|
16
16
|
function closeAlert() {
|
17
|
-
$('.flash')
|
18
|
-
|
19
|
-
|
17
|
+
$('.flash')
|
18
|
+
.removeClass('flash--shown')
|
19
|
+
.delay(700)
|
20
|
+
.queue(function() {
|
21
|
+
$(this).remove();
|
22
|
+
});
|
20
23
|
}
|
21
24
|
});
|
@@ -6,6 +6,7 @@
|
|
6
6
|
|
7
7
|
@import 'utilities/mixins'
|
8
8
|
|
9
|
+
@import 'components/actions'
|
9
10
|
@import 'components/buttons'
|
10
11
|
@import 'components/cards'
|
11
12
|
@import 'components/comments'
|
@@ -18,3 +19,4 @@
|
|
18
19
|
@import 'components/notices'
|
19
20
|
@import 'components/relative'
|
20
21
|
@import 'components/tables'
|
22
|
+
@import 'components/spinner'
|
@@ -2,11 +2,14 @@
|
|
2
2
|
+padding($button-padding)
|
3
3
|
@if $button-box-shadow != true
|
4
4
|
padding-top: 7px
|
5
|
+
align-items: center
|
5
6
|
border-radius: $button-border-radius
|
6
7
|
border-width: 1px
|
7
8
|
border-style: solid
|
8
9
|
cursor: pointer
|
10
|
+
display: flex
|
9
11
|
font-weight: $button-font-weight
|
12
|
+
justify-content: flex-end
|
10
13
|
line-height: 1
|
11
14
|
outline: none
|
12
15
|
transition: $main-transition
|
@@ -15,6 +18,12 @@
|
|
15
18
|
+background-color-darken($background, 10%)
|
16
19
|
color: $color
|
17
20
|
|
21
|
+
.spinner
|
22
|
+
display: none
|
23
|
+
|
24
|
+
> div
|
25
|
+
background-color: $color
|
26
|
+
|
18
27
|
&:hover
|
19
28
|
border-color: darken($background, 10%)
|
20
29
|
|
@@ -23,6 +32,12 @@
|
|
23
32
|
border-color: $background
|
24
33
|
color: $background
|
25
34
|
|
35
|
+
.spinner
|
36
|
+
display: none
|
37
|
+
|
38
|
+
> div
|
39
|
+
background-color: $background
|
40
|
+
|
26
41
|
&:hover
|
27
42
|
background-color: lighten($background, 40%)
|
28
43
|
|
@@ -0,0 +1,38 @@
|
|
1
|
+
.spinner
|
2
|
+
display: flex
|
3
|
+
margin-right: 12px
|
4
|
+
width: 24px
|
5
|
+
text-align: center
|
6
|
+
|
7
|
+
> div
|
8
|
+
margin: 0 !important
|
9
|
+
width: 8px
|
10
|
+
height: 8px
|
11
|
+
border-radius: 100%
|
12
|
+
display: inline-block
|
13
|
+
-webkit-animation: sk-bouncedelay 1.4s infinite ease-in-out both
|
14
|
+
animation: sk-bouncedelay 1.4s infinite ease-in-out both
|
15
|
+
|
16
|
+
.bounce1
|
17
|
+
-webkit-animation-delay: -0.32s
|
18
|
+
animation-delay: -0.32s
|
19
|
+
|
20
|
+
.bounce2
|
21
|
+
-webkit-animation-delay: -0.16s
|
22
|
+
animation-delay: -0.16s
|
23
|
+
|
24
|
+
@-webkit-keyframes sk-bouncedelay
|
25
|
+
0%, 80%, 100%
|
26
|
+
-webkit-transform: scale(0)
|
27
|
+
|
28
|
+
40%
|
29
|
+
-webkit-transform: scale(1)
|
30
|
+
|
31
|
+
@keyframes sk-bouncedelay
|
32
|
+
0%, 80%, 100%
|
33
|
+
-webkit-transform: scale(0)
|
34
|
+
transform: scale(0)
|
35
|
+
|
36
|
+
40%
|
37
|
+
-webkit-transform: scale(1)
|
38
|
+
transform: scale(1)
|
@@ -3,10 +3,10 @@ head
|
|
3
3
|
meta content='width=device-width, initial-scale=1.0' name='viewport' /
|
4
4
|
link crossorigin="anonymous" href="https://use.fontawesome.com/releases/v5.6.3/css/all.css" integrity="sha384-UHRtZLI+pbxtHCWp1t77Bi1L4ZtiqrqD80Kn4Z8NTSRyMA2Fd33n5dQ8lWUE00s/" rel="stylesheet" /
|
5
5
|
script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
6
|
+
|
7
|
+
- stylesheet_link_tag = BeyondCanvas.configuration.stylesheet_link_tag
|
8
|
+
- javascript_include_tag = BeyondCanvas.configuration.javascript_include_tag
|
9
|
+
= stylesheet_link_tag(stylesheet_link_tag) unless stylesheet_link_tag.nil?
|
10
|
+
= javascript_include_tag(javascript_include_tag) unless javascript_include_tag.nil?
|
11
|
+
|
12
12
|
= render 'beyond_canvas/custom/public_head'
|
data/lib/beyond_canvas.rb
CHANGED
@@ -26,10 +26,12 @@ module BeyondCanvas
|
|
26
26
|
end
|
27
27
|
|
28
28
|
class Configuration
|
29
|
-
attr_accessor :public_logo
|
29
|
+
attr_accessor :public_logo, :stylesheet_link_tag, :javascript_include_tag
|
30
30
|
|
31
31
|
def initialize
|
32
32
|
@public_logo = nil
|
33
|
+
@stylesheet_link_tag = nil
|
34
|
+
@javascript_include_tag = nil
|
33
35
|
end
|
34
36
|
end
|
35
37
|
end
|
@@ -1,19 +1,22 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
3
|
+
# Adds form__error class to the inputs after sending a form when errors
|
4
|
+
ActionView::Base.field_error_proc = proc do |html_tag, _instance|
|
5
|
+
include ActionView::Helpers::SanitizeHelper
|
6
|
+
|
4
7
|
if html_tag =~ /<(input|textarea|select)/
|
5
|
-
error_class =
|
8
|
+
error_class = 'form__error'
|
6
9
|
|
7
10
|
doc = Nokogiri::XML(html_tag)
|
8
11
|
doc.children.each do |field|
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
12
|
+
next if field['type'] == 'hidden'
|
13
|
+
|
14
|
+
next if field['class'] =~ /\berror\b/
|
15
|
+
|
16
|
+
field['class'] = "#{field['class']} #{error_class}".strip
|
14
17
|
end
|
15
18
|
|
16
|
-
doc.to_html
|
19
|
+
sanitize doc.to_html
|
17
20
|
else
|
18
21
|
html_tag
|
19
22
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: beyond_canvas
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.7.0.pre
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Unai Abrisketa
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-02-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: colorize
|
@@ -98,8 +98,10 @@ files:
|
|
98
98
|
- README.md
|
99
99
|
- Rakefile
|
100
100
|
- app/assets/javascripts/beyond_canvas.js
|
101
|
+
- app/assets/javascripts/buttons.js
|
101
102
|
- app/assets/javascripts/flash.js
|
102
103
|
- app/assets/stylesheets/_beyond_canvas.sass
|
104
|
+
- app/assets/stylesheets/components/_actions.sass
|
103
105
|
- app/assets/stylesheets/components/_buttons.sass
|
104
106
|
- app/assets/stylesheets/components/_cards.sass
|
105
107
|
- app/assets/stylesheets/components/_comments.sass
|
@@ -112,6 +114,7 @@ files:
|
|
112
114
|
- app/assets/stylesheets/components/_notices.sass
|
113
115
|
- app/assets/stylesheets/components/_relative.sass
|
114
116
|
- app/assets/stylesheets/components/_tables.sass
|
117
|
+
- app/assets/stylesheets/components/spinner.sass
|
115
118
|
- app/assets/stylesheets/settings/_reset_css.sass
|
116
119
|
- app/assets/stylesheets/settings/_typography.sass
|
117
120
|
- app/assets/stylesheets/settings/_variables.sass
|