maac 1.0.1 → 2.0.0.pre.alpha
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/README.md +103 -12
- data/app/assets/javascripts/maac.js.erb +82 -0
- data/lib/maac.rb +27 -1
- data/lib/maac/config.rb +46 -0
- data/lib/maac/engine.rb +6 -0
- data/lib/maac/version.rb +5 -0
- data/tpl/bs3.html +19 -0
- data/tpl/vanilla.html +17 -0
- metadata +14 -106
- data/vendor/assets/javascripts/maac.js +0 -55
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7a55633ff282d4a350ae99e7be839675b285381d
|
4
|
+
data.tar.gz: d8eab4a2387e037cd27d3a9d0945c6ce2088b592
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7d0240b46213423cd440533f30272b73a298ba76f1f96f6e6e64e7d7fc015300ca65ce70b4c452ccbf494bbc6454696f2da6e0bc2f1bd2acb22bdd0bd51387ff
|
7
|
+
data.tar.gz: c45086746cb712a3721297a97b218e5a077f61873c7daf77e54b52de1ee596fbca71594c1c2357870688c803edf1c221e3a5705d854345624af4f13601f913d3
|
data/README.md
CHANGED
@@ -5,9 +5,33 @@
|
|
5
5
|
[](https://rubygems.org/gems/maac)
|
6
6
|
|
7
7
|
This gem allows you to replace standard confirm() call for data-confirm'ed page elements,
|
8
|
-
with a
|
9
|
-
a
|
10
|
-
|
8
|
+
with a html modal (Bootstrap modal or a custom markup). I.e. instead of calling confirm("Are you sure?") this code will draw
|
9
|
+
a yes-no popup after clicking the link.
|
10
|
+
|
11
|
+
```rhtml
|
12
|
+
<%= link_to 'A very dangerous action',
|
13
|
+
dangerous_action_path,
|
14
|
+
data: {
|
15
|
+
method: :delete,
|
16
|
+
confirm: 'Are you sure?'
|
17
|
+
} %>
|
18
|
+
```
|
19
|
+
|
20
|
+
```rhtml
|
21
|
+
<%= link_to 'A very dangerous action',
|
22
|
+
dangerous_action_path,
|
23
|
+
data: {
|
24
|
+
method: :delete,
|
25
|
+
'confirm-title': 'Oh, no!',
|
26
|
+
confirm: 'Are you sure?'
|
27
|
+
} %>
|
28
|
+
```
|
29
|
+
|
30
|
+
There are lots of gems for the similar purposes, but I found nothing appropriate for Rails 5.1
|
31
|
+
So I've made it for my own purposes. I'll be happy if you find it useful.
|
32
|
+
|
33
|
+
## Run-time configuration
|
34
|
+
You can simply customize titles via link attributes:
|
11
35
|
|
12
36
|
- **data-confirm-title** - *dialog title text: default value is "Confirm"*
|
13
37
|
|
@@ -22,11 +46,73 @@ For now, you can customize dialog texts using following attributes:
|
|
22
46
|
dangerous_action_path,
|
23
47
|
data: {
|
24
48
|
method: :delete,
|
25
|
-
confirm: 'Are you sure?'
|
49
|
+
confirm: 'Are you sure?',
|
50
|
+
'confirm-title': 'Important!',
|
51
|
+
'confirm-yes': 'Proceed',
|
52
|
+
'confirm-no': 'Dismiss',
|
53
|
+
'confirm-close': 'Never mind'
|
26
54
|
} %>
|
27
55
|
```
|
28
|
-
|
29
|
-
|
56
|
+
|
57
|
+
## Initialization
|
58
|
+
If your gemfile includes a gem, which is named with something containing "bootstrap",
|
59
|
+
the bootstrap modal'll be used by default. Otherwise it will use the following template code:
|
60
|
+
|
61
|
+
```html
|
62
|
+
<div class="maac-popup">
|
63
|
+
<div class="maac-popup_inner">
|
64
|
+
<div class="maac-popup_header">
|
65
|
+
<div class="maac-popup_header_title">%{title}</div>
|
66
|
+
<div class="maac-popup_header_buttons">
|
67
|
+
<a id="js-maac-close" href="javascript:void(0)" class="maac-popup_header_buttons_button maac-popup_header_buttons_button__close">%{close}</a>
|
68
|
+
</div>
|
69
|
+
</div>
|
70
|
+
<div class="maac-popup_body">%{text}</div>
|
71
|
+
<div class="maac-popup_footer">
|
72
|
+
<div class="maac-popup_footer_buttons">
|
73
|
+
<a id="js-maac-yes" href="javascript:void(0)" class="maac-popup_footer_buttons_button maac-popup_footer_buttons_button__yes">%{yes}</a>
|
74
|
+
<a id="js-maac-no" href="javascript:void(0)" class="maac-popup_footer_buttons_button maac-popup_footer_buttons_button__no">%{no}</a>
|
75
|
+
</div>
|
76
|
+
</div>
|
77
|
+
</div>
|
78
|
+
</div>
|
79
|
+
```
|
80
|
+
|
81
|
+
You can add an initializer, i.e.:
|
82
|
+
*/config/initializers/maac.rb*:
|
83
|
+
```ruby
|
84
|
+
Maac.configure do |config|
|
85
|
+
# Strings to be substituted into template
|
86
|
+
# (using %{key}). You can define your own set of keys
|
87
|
+
config.strings = {
|
88
|
+
title: 'A default title value',
|
89
|
+
yes: 'A default Yes button text',
|
90
|
+
no: 'A default No button text',
|
91
|
+
close: 'A default Close button text'
|
92
|
+
}
|
93
|
+
|
94
|
+
# A modal' template code
|
95
|
+
config.template = '<div class="my-modal"><span id="js-yes">%{yes}</span><span id="js-no">%{no}</span></div>'
|
96
|
+
|
97
|
+
# A modal' selector – used to remove the modal code and
|
98
|
+
# for event bindings
|
99
|
+
config.selector = '.my-modal'
|
100
|
+
|
101
|
+
# Selector of a yes button
|
102
|
+
config.selector_y = '#js-yes'
|
103
|
+
|
104
|
+
# Selector of a no button
|
105
|
+
config.selector_n = '#js-no'
|
106
|
+
|
107
|
+
# Callback, which is called just after the modal code
|
108
|
+
# appended to a page
|
109
|
+
config.after_append = 'function () {}'
|
110
|
+
|
111
|
+
# Async handler, called before code removement.
|
112
|
+
# After your code completes the execution call cb()
|
113
|
+
config.before_remove = 'function (cb) { cb(); }'
|
114
|
+
end
|
115
|
+
```
|
30
116
|
|
31
117
|
## Installation
|
32
118
|
|
@@ -85,21 +171,26 @@ Most important steps are described below. You can also look at defined rake task
|
|
85
171
|
|
86
172
|
### Setup
|
87
173
|
|
88
|
-
|
174
|
+
Simply run:
|
89
175
|
|
90
176
|
$ bundle install
|
91
|
-
$ rake
|
177
|
+
$ rake dummy:dep
|
92
178
|
$ rake
|
93
179
|
|
180
|
+
And rake will compile the .coffee.erb code and run all tests for you.
|
181
|
+
|
94
182
|
### Testing
|
95
183
|
|
96
184
|
The project uses automated testing. The RSpec is used.
|
97
185
|
The /spec directory contents:
|
98
186
|
|
99
|
-
- **/spec/
|
100
|
-
- **/spec/
|
101
|
-
- **/spec/features/
|
102
|
-
|
187
|
+
- **/spec/features/client_spec.rb** - the main behaviour testing
|
188
|
+
- **/spec/features/config_spec.rb** - the gem' configuration testing
|
189
|
+
- **/spec/features/host_application_spec.rb** - dummy application, which uses the maac, testing
|
190
|
+
|
191
|
+
- **/spec/support/dummy** - dummy applications
|
192
|
+
- **/spec/support/dummy/vanilla** - a dummy app, which uses neither jQuery nor Bpptstrap
|
193
|
+
- **/spec/support/dummy/bs3** - a dummy app, which uses both jQuery and Bpptstrap
|
103
194
|
|
104
195
|
To start automated testing just type:
|
105
196
|
|
@@ -0,0 +1,82 @@
|
|
1
|
+
|
2
|
+
/*!
|
3
|
+
* Modal As A Confirm (MAAC) 2.0.0.pre.alpha (2018-02-06 18:59:03 +0300)
|
4
|
+
* https://github.com/igorakaamigo/maac
|
5
|
+
* Released under the MIT license:
|
6
|
+
* https://github.com/igorakaamigo/maac/blob/master/MIT-LICENSE
|
7
|
+
*/
|
8
|
+
|
9
|
+
(function() {
|
10
|
+
this.Maac = (function() {
|
11
|
+
function Maac() {}
|
12
|
+
|
13
|
+
Maac.version = '2.0.0.pre.alpha';
|
14
|
+
|
15
|
+
Maac.strings = <%= Maac.strings.to_json %>;
|
16
|
+
|
17
|
+
Maac.template = <%= Maac.template.to_json %>;
|
18
|
+
|
19
|
+
Maac.selector = <%= Maac.selector.to_json %>;
|
20
|
+
|
21
|
+
Maac.selector_y = <%= Maac.selector_y.to_json %>;
|
22
|
+
|
23
|
+
Maac.selector_n = <%= Maac.selector_n.to_json %>;
|
24
|
+
|
25
|
+
Maac.after_append = <%= Maac.after_append %>;
|
26
|
+
|
27
|
+
Maac.before_remove = <%= Maac.before_remove %>;
|
28
|
+
|
29
|
+
Maac.show = function() {
|
30
|
+
if (!document.querySelector(Maac.selector)) {
|
31
|
+
document.body.innerHTML += Maac.html();
|
32
|
+
return Maac.after_append();
|
33
|
+
}
|
34
|
+
};
|
35
|
+
|
36
|
+
Maac.hide = function(confirmed) {
|
37
|
+
return Maac.before_remove(function() {
|
38
|
+
document.querySelector(Maac.selector).remove();
|
39
|
+
if (confirmed) {
|
40
|
+
Maac._link.removeAttribute('data-confirm');
|
41
|
+
return Maac._link.click();
|
42
|
+
}
|
43
|
+
});
|
44
|
+
};
|
45
|
+
|
46
|
+
Maac.avalue = function(key) {
|
47
|
+
if (key === 'text') {
|
48
|
+
return Maac._link.getAttribute('data-confirm');
|
49
|
+
} else {
|
50
|
+
return Maac._link.getAttribute("data-confirm-" + key) || Maac.strings[key];
|
51
|
+
}
|
52
|
+
};
|
53
|
+
|
54
|
+
Maac.html = function() {
|
55
|
+
return Maac.template.replace(/%{(.*?)}/g, function(_, key) {
|
56
|
+
return Maac.avalue(key);
|
57
|
+
});
|
58
|
+
};
|
59
|
+
|
60
|
+
Maac.initialize = function() {
|
61
|
+
Rails.delegate(document, 'a[data-confirm]', 'confirm', function() {
|
62
|
+
Maac._link = this;
|
63
|
+
Maac.show();
|
64
|
+
return false;
|
65
|
+
});
|
66
|
+
Rails.delegate(document, Maac.selector_n, 'click', function(event) {
|
67
|
+
Rails.stopEverything(event);
|
68
|
+
return Maac.hide();
|
69
|
+
});
|
70
|
+
return Rails.delegate(document, Maac.selector_y, 'click', function(event) {
|
71
|
+
Rails.stopEverything(event);
|
72
|
+
return Maac.hide(true);
|
73
|
+
});
|
74
|
+
};
|
75
|
+
|
76
|
+
return Maac;
|
77
|
+
|
78
|
+
})();
|
79
|
+
|
80
|
+
Maac.initialize();
|
81
|
+
|
82
|
+
}).call(this);
|
data/lib/maac.rb
CHANGED
@@ -1,4 +1,30 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'maac/engine'
|
4
|
+
require 'maac/config'
|
5
|
+
|
1
6
|
module Maac
|
2
|
-
class
|
7
|
+
class << self
|
8
|
+
def configure
|
9
|
+
yield config
|
10
|
+
end
|
11
|
+
|
12
|
+
def respond_to_missing?(symbol)
|
13
|
+
config.respond_to?(symbol) || super
|
14
|
+
end
|
15
|
+
|
16
|
+
def method_missing(symbol, *args)
|
17
|
+
if config.respond_to?(symbol)
|
18
|
+
config.send(symbol, *args)
|
19
|
+
else
|
20
|
+
super
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
private
|
25
|
+
|
26
|
+
def config
|
27
|
+
@config ||= Config.new
|
28
|
+
end
|
3
29
|
end
|
4
30
|
end
|
data/lib/maac/config.rb
ADDED
@@ -0,0 +1,46 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'rubygems'
|
4
|
+
|
5
|
+
module Maac
|
6
|
+
class Config
|
7
|
+
OPTIONS = %i[
|
8
|
+
strings
|
9
|
+
template
|
10
|
+
selector
|
11
|
+
selector_y
|
12
|
+
selector_n
|
13
|
+
after_append
|
14
|
+
before_remove
|
15
|
+
].freeze
|
16
|
+
|
17
|
+
OPTIONS.each do |option|
|
18
|
+
attr_accessor option
|
19
|
+
end
|
20
|
+
|
21
|
+
def initialize
|
22
|
+
@strings = {
|
23
|
+
title: 'Confirm',
|
24
|
+
yes: 'Yes',
|
25
|
+
no: 'No',
|
26
|
+
close: 'Close'
|
27
|
+
}
|
28
|
+
|
29
|
+
@selector = '.maac-popup'
|
30
|
+
@selector_y = '#js-maac-yes'
|
31
|
+
|
32
|
+
bsgems = Gem::Specification.reject { |s| s.name.match(/bootstrap/i).nil? }
|
33
|
+
if bsgems.count > 0
|
34
|
+
@template = File.new(File.expand_path('../../../tpl/bs3.html', __FILE__)).read
|
35
|
+
@selector_n = '#js-maac-no,#js-maac-close'
|
36
|
+
@after_append = 'function () { $(".maac-popup").modal({"backdrop": "static"}); }'
|
37
|
+
@before_remove = 'function (cb) { $(".maac-popup").modal("hide"); cb(); }'
|
38
|
+
else
|
39
|
+
@template = File.new(File.expand_path('../../../tpl/vanilla.html', __FILE__)).read
|
40
|
+
@selector_n = '#js-maac-no,#js-maac-close'
|
41
|
+
@after_append = 'function () { /* After append */; }'
|
42
|
+
@before_remove = 'function (cb) { /* Before remove */; cb(); }'
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
data/lib/maac/engine.rb
ADDED
data/lib/maac/version.rb
ADDED
data/tpl/bs3.html
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
<div class="modal maac-popup" tabindex="-1" role="dialog">
|
2
|
+
<div class="modal-dialog" role="document">
|
3
|
+
<div class="modal-content">
|
4
|
+
<div class="modal-header">
|
5
|
+
<h5 class="modal-title">%{title}</h5>
|
6
|
+
<button id="js-maac-close" type="button" class="close" aria-label="%{close}">
|
7
|
+
<span aria-hidden="true">×</span>
|
8
|
+
</button>
|
9
|
+
</div>
|
10
|
+
<div class="modal-body">
|
11
|
+
<p>%{text}</p>
|
12
|
+
</div>
|
13
|
+
<div class="modal-footer">
|
14
|
+
<button id="js-maac-yes" type="button" class="btn btn-primary">%{yes}</button>
|
15
|
+
<button id="js-maac-no" type="button" class="btn btn-secondary">%{no}</button>
|
16
|
+
</div>
|
17
|
+
</div>
|
18
|
+
</div>
|
19
|
+
</div>
|
data/tpl/vanilla.html
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
<div class="maac-popup">
|
2
|
+
<div class="maac-popup_inner">
|
3
|
+
<div class="maac-popup_header">
|
4
|
+
<div class="maac-popup_header_title">%{title}</div>
|
5
|
+
<div class="maac-popup_header_buttons">
|
6
|
+
<a id="js-maac-close" href="javascript:void(0)" class="maac-popup_header_buttons_button maac-popup_header_buttons_button__close">%{close}</a>
|
7
|
+
</div>
|
8
|
+
</div>
|
9
|
+
<div class="maac-popup_body">%{text}</div>
|
10
|
+
<div class="maac-popup_footer">
|
11
|
+
<div class="maac-popup_footer_buttons">
|
12
|
+
<a id="js-maac-yes" href="javascript:void(0)" class="maac-popup_footer_buttons_button maac-popup_footer_buttons_button__yes">%{yes}</a>
|
13
|
+
<a id="js-maac-no" href="javascript:void(0)" class="maac-popup_footer_buttons_button maac-popup_footer_buttons_button__no">%{no}</a>
|
14
|
+
</div>
|
15
|
+
</div>
|
16
|
+
</div>
|
17
|
+
</div>
|
metadata
CHANGED
@@ -1,115 +1,17 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: maac
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 2.0.0.pre.alpha
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Igor M Osipov
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-02-
|
12
|
-
dependencies:
|
13
|
-
- !ruby/object:Gem::Dependency
|
14
|
-
name: rails
|
15
|
-
requirement: !ruby/object:Gem::Requirement
|
16
|
-
requirements:
|
17
|
-
- - "~>"
|
18
|
-
- !ruby/object:Gem::Version
|
19
|
-
version: 5.1.4
|
20
|
-
type: :runtime
|
21
|
-
prerelease: false
|
22
|
-
version_requirements: !ruby/object:Gem::Requirement
|
23
|
-
requirements:
|
24
|
-
- - "~>"
|
25
|
-
- !ruby/object:Gem::Version
|
26
|
-
version: 5.1.4
|
27
|
-
- !ruby/object:Gem::Dependency
|
28
|
-
name: sqlite3
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
30
|
-
requirements:
|
31
|
-
- - ">="
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: '0'
|
34
|
-
type: :development
|
35
|
-
prerelease: false
|
36
|
-
version_requirements: !ruby/object:Gem::Requirement
|
37
|
-
requirements:
|
38
|
-
- - ">="
|
39
|
-
- !ruby/object:Gem::Version
|
40
|
-
version: '0'
|
41
|
-
- !ruby/object:Gem::Dependency
|
42
|
-
name: rspec-rails
|
43
|
-
requirement: !ruby/object:Gem::Requirement
|
44
|
-
requirements:
|
45
|
-
- - ">="
|
46
|
-
- !ruby/object:Gem::Version
|
47
|
-
version: '0'
|
48
|
-
type: :development
|
49
|
-
prerelease: false
|
50
|
-
version_requirements: !ruby/object:Gem::Requirement
|
51
|
-
requirements:
|
52
|
-
- - ">="
|
53
|
-
- !ruby/object:Gem::Version
|
54
|
-
version: '0'
|
55
|
-
- !ruby/object:Gem::Dependency
|
56
|
-
name: capybara
|
57
|
-
requirement: !ruby/object:Gem::Requirement
|
58
|
-
requirements:
|
59
|
-
- - ">="
|
60
|
-
- !ruby/object:Gem::Version
|
61
|
-
version: '0'
|
62
|
-
type: :development
|
63
|
-
prerelease: false
|
64
|
-
version_requirements: !ruby/object:Gem::Requirement
|
65
|
-
requirements:
|
66
|
-
- - ">="
|
67
|
-
- !ruby/object:Gem::Version
|
68
|
-
version: '0'
|
69
|
-
- !ruby/object:Gem::Dependency
|
70
|
-
name: factory_bot_rails
|
71
|
-
requirement: !ruby/object:Gem::Requirement
|
72
|
-
requirements:
|
73
|
-
- - ">="
|
74
|
-
- !ruby/object:Gem::Version
|
75
|
-
version: '0'
|
76
|
-
type: :development
|
77
|
-
prerelease: false
|
78
|
-
version_requirements: !ruby/object:Gem::Requirement
|
79
|
-
requirements:
|
80
|
-
- - ">="
|
81
|
-
- !ruby/object:Gem::Version
|
82
|
-
version: '0'
|
83
|
-
- !ruby/object:Gem::Dependency
|
84
|
-
name: coffee-script
|
85
|
-
requirement: !ruby/object:Gem::Requirement
|
86
|
-
requirements:
|
87
|
-
- - ">="
|
88
|
-
- !ruby/object:Gem::Version
|
89
|
-
version: '0'
|
90
|
-
type: :development
|
91
|
-
prerelease: false
|
92
|
-
version_requirements: !ruby/object:Gem::Requirement
|
93
|
-
requirements:
|
94
|
-
- - ">="
|
95
|
-
- !ruby/object:Gem::Version
|
96
|
-
version: '0'
|
97
|
-
- !ruby/object:Gem::Dependency
|
98
|
-
name: poltergeist
|
99
|
-
requirement: !ruby/object:Gem::Requirement
|
100
|
-
requirements:
|
101
|
-
- - ">="
|
102
|
-
- !ruby/object:Gem::Version
|
103
|
-
version: '0'
|
104
|
-
type: :development
|
105
|
-
prerelease: false
|
106
|
-
version_requirements: !ruby/object:Gem::Requirement
|
107
|
-
requirements:
|
108
|
-
- - ">="
|
109
|
-
- !ruby/object:Gem::Version
|
110
|
-
version: '0'
|
11
|
+
date: 2018-02-06 00:00:00.000000000 Z
|
12
|
+
dependencies: []
|
111
13
|
description: This gem allows you to replace standard confirm() call for data-confirm'ed
|
112
|
-
page elements, with a
|
14
|
+
page elements, with a nice styled modal.
|
113
15
|
email:
|
114
16
|
- osipov.igor.amigo@gmail.com
|
115
17
|
executables: []
|
@@ -118,8 +20,13 @@ extra_rdoc_files: []
|
|
118
20
|
files:
|
119
21
|
- MIT-LICENSE
|
120
22
|
- README.md
|
23
|
+
- app/assets/javascripts/maac.js.erb
|
121
24
|
- lib/maac.rb
|
122
|
-
-
|
25
|
+
- lib/maac/config.rb
|
26
|
+
- lib/maac/engine.rb
|
27
|
+
- lib/maac/version.rb
|
28
|
+
- tpl/bs3.html
|
29
|
+
- tpl/vanilla.html
|
123
30
|
homepage: https://github.com/igorakaamigo/maac
|
124
31
|
licenses:
|
125
32
|
- MIT
|
@@ -135,13 +42,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
135
42
|
version: '0'
|
136
43
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
137
44
|
requirements:
|
138
|
-
- - "
|
45
|
+
- - ">"
|
139
46
|
- !ruby/object:Gem::Version
|
140
|
-
version:
|
47
|
+
version: 1.3.1
|
141
48
|
requirements: []
|
142
49
|
rubyforge_project:
|
143
50
|
rubygems_version: 2.6.13
|
144
51
|
signing_key:
|
145
52
|
specification_version: 4
|
146
|
-
summary:
|
53
|
+
summary: Configurable confirmation modal (Bootstrap or custom markup) for data-confirm'ed
|
54
|
+
links @ Rails 5 projects
|
147
55
|
test_files: []
|
@@ -1,55 +0,0 @@
|
|
1
|
-
|
2
|
-
/*!
|
3
|
-
Modal As A Confirm (MAAC) v1.0.1 (2018-02-02T21:36:12+03:00)
|
4
|
-
https://github.com/igorakaamigo/maac
|
5
|
-
Released under the MIT license:
|
6
|
-
https://github.com/igorakaamigo/maac/blob/master/MIT-LICENSE
|
7
|
-
*/
|
8
|
-
|
9
|
-
(function() {
|
10
|
-
var safeBsModal, showAModal;
|
11
|
-
|
12
|
-
Rails.delegate(document, 'a[data-confirm]', 'confirm', function(event) {
|
13
|
-
showAModal(this, 'Yes', 'No', 'Close', 'Confirm');
|
14
|
-
return false;
|
15
|
-
});
|
16
|
-
|
17
|
-
safeBsModal = function(arg) {
|
18
|
-
if (this.jQuery && this.jQuery.fn.modal) {
|
19
|
-
return this.jQuery('.modal').modal(arg);
|
20
|
-
}
|
21
|
-
};
|
22
|
-
|
23
|
-
showAModal = function(link, defaultYes, defaultNo, defaultClose, defaultTitle) {
|
24
|
-
var close, dialogClose, dialogNo, dialogTitle, dialogYes, modal;
|
25
|
-
modal = document.createElement('div');
|
26
|
-
modal.className = 'modal';
|
27
|
-
modal.setAttribute('tabindex', '-1');
|
28
|
-
modal.setAttribute('role', 'dialog');
|
29
|
-
dialogYes = link.getAttribute('data-confirm-yes') || defaultYes;
|
30
|
-
dialogNo = link.getAttribute('data-confirm-no') || defaultNo;
|
31
|
-
dialogClose = link.getAttribute('data-confirm-close') || defaultClose;
|
32
|
-
dialogTitle = link.getAttribute('data-confirm-title') || defaultTitle;
|
33
|
-
modal.innerHTML = '<div class="modal-dialog" role="document"> <div class="modal-content"> <div class="modal-header"> <h5 class="modal-title"></h5> <button type="button" class="close" aria-label=""> <span aria-hidden="true">×</span> </button> </div> <div class="modal-body"> <p></p> </div> <div class="modal-footer"> <button type="button" class="btn btn-secondary"></button> <button type="button" class="btn btn-primary"></button> </div> </div> </div>';
|
34
|
-
modal.querySelector('.modal-body > p').innerText = link.getAttribute('data-confirm');
|
35
|
-
modal.querySelector('.modal-footer > .btn-secondary').innerText = dialogYes;
|
36
|
-
modal.querySelector('.modal-footer > .btn-primary').innerText = dialogNo;
|
37
|
-
modal.querySelector('.modal-header > button').setAttribute('aria-label', dialogClose);
|
38
|
-
modal.querySelector('.modal-header > h5').innerText = dialogTitle;
|
39
|
-
close = function() {
|
40
|
-
Rails.stopEverything(event);
|
41
|
-
safeBsModal('hide');
|
42
|
-
return modal.remove();
|
43
|
-
};
|
44
|
-
Rails.delegate(modal, '.close,.btn-primary', 'click', close);
|
45
|
-
Rails.delegate(document, '.modal-backdrop', 'click', close);
|
46
|
-
Rails.delegate(modal, '.btn-secondary', 'click', function(event) {
|
47
|
-
close();
|
48
|
-
link.removeAttribute('data-confirm');
|
49
|
-
return Rails.fire(link, 'click');
|
50
|
-
});
|
51
|
-
document.body.appendChild(modal);
|
52
|
-
return safeBsModal();
|
53
|
-
};
|
54
|
-
|
55
|
-
}).call(this);
|