data-confirm-modal 1.5.0 → 1.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d5a0e9ea89cbad2ba0d296d89a8aace861403af1
4
- data.tar.gz: 461e536d152b506114f72651cd89afa6e5e11be8
3
+ metadata.gz: 499d44b1254e1733f2c500c502ec93ebaeb2019c
4
+ data.tar.gz: 40188e1811123f215a49d6e9ab5b1092605e0ccb
5
5
  SHA512:
6
- metadata.gz: a0e632bbd63b7f5ad39d12f01daab6d7460148c8fc5ac7abafc00cd8fa0b2291a59f8a5534d0c742448f198edd9e125f33a3cb298e7aef61becd7453877d1e86
7
- data.tar.gz: ccf22556fd0c3d837de3f89da51335b1e343eff299de6f1decf130a3226ad225a9fb355695d705fd473017f7fe43ee14270ea8b47b884f890a22f814ecfbd682
6
+ metadata.gz: 06ff311becfd5eca22ccbb8f01af4df98875e07b0aea4cedf42b7730d0d9876d68bbd947b5145958528cfac27e21529741c4b53d4196449fa41b356639cafe3f
7
+ data.tar.gz: 334261aef657e5fb3ae2b5cb4f717741541ae143403061bcd3115b765a1c323e2066c096a382c790b44609b81f89ae1f024ed70be94ed405255bef36517e039f
data/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  [![Gem Version](https://badge.fury.io/rb/data-confirm-modal.svg)](https://badge.fury.io/rb/data-confirm-modal)
4
4
 
5
- Uses [Bootstrap's modals](http://twitter.github.io/bootstrap/javascript.html#modals)
5
+ Uses [Bootstrap's modals](https://twitter.github.io/bootstrap/javascript.html#modals)
6
6
  in place of the browser's builtin `confirm()` API for links generated through Rails'
7
7
  helpers with the `:confirm` option.
8
8
 
@@ -18,7 +18,8 @@ Add this line to your application's Gemfile:
18
18
 
19
19
  gem 'data-confirm-modal'
20
20
 
21
- if you are stuck on Bootstrap 2.3, use the `bootstrap2` branch:
21
+ The library supports Bootstrap 3 and 4. If you are stuck on Bootstrap 2.3, you must
22
+ use the `bootstrap2` branch:
22
23
 
23
24
  gem 'data-confirm-modal', github: 'ifad/data-confirm-modal', branch: 'bootstrap2'
24
25
 
@@ -32,7 +33,7 @@ And then require the Javascript from your `application.js`:
32
33
 
33
34
  ## Usage
34
35
 
35
- ### With Rails ([example](http://jsfiddle.net/zpu4u6mh/))
36
+ ### With Rails: [example B3](https://jsfiddle.net/zpu4u6mh/), [example B4](https://jsfiddle.net/02t20nwx/)
36
37
 
37
38
  By default, the Gem's Javascript overrides Rails' [data-confirm behaviour][]
38
39
  for you, with no change required to your code. The modal is applicable to
@@ -68,7 +69,7 @@ To restore default settings use `dataConfirmModal.restoreDefaults()`.
68
69
 
69
70
  [data-confirm-behaviour]: http://api.rubyonrails.org/classes/ActionView/Helpers/UrlHelper.html
70
71
 
71
- ### Without Rails, with data attributes ([example](http://jsfiddle.net/ze2Lz8tm/))
72
+ ### Without Rails, with data attributes: [example B3](https://jsfiddle.net/nugqscyx/), [example B4](https://jsfiddle.net/0g53ar5n/)
72
73
 
73
74
  Given an element with `data-confirm` attributes in place, such as
74
75
 
@@ -81,7 +82,7 @@ you can then invoke `.confirmModal()` on it using:
81
82
  that'll display the confirmation modal. If the user confirms, then the `#foo`
82
83
  link will receive a `click` event.
83
84
 
84
- ### Without Rails, without data attributes ([example](https://jsfiddle.net/h370g63r/))
85
+ ### Without Rails, without data attributes: [example B3](https://jsfiddle.net/h370g63r/), [example B4](https://jsfiddle.net/veg879px/)
85
86
 
86
87
  Use `dataConfirmModal.confirm()` passing any of the supported options, and pass
87
88
  an `onConfirm` and `onCancel` callbacks that'll be invoked when the user clicks
@@ -99,7 +100,7 @@ the confirm or the cancel buttons.
99
100
 
100
101
  ### Modal Options
101
102
 
102
- The default [bootstrap modal options](http://getbootstrap.com/javascript/#modals-options)
103
+ The default [bootstrap modal options](https://getbootstrap.com/javascript/#modals-options)
103
104
  can be passed either via JavaScript or through data attributes.
104
105
 
105
106
  $('#foo').confirmModal({backdrop: 'static', keyboard: false});
@@ -116,7 +117,7 @@ or
116
117
 
117
118
  ## Background
118
119
 
119
- Spinned off a corporate [IFAD](http://github.com/ifad/) application in which
120
+ Spinned off a corporate [IFAD](https://github.com/ifad/) application in which
120
121
  an user did too much damage because the confirm wasn't *THAT* explicit ... ;-).
121
122
 
122
123
  ## Contributing
@@ -1,3 +1,3 @@
1
1
  module DataConfirmModal
2
- VERSION = '1.5.0'
2
+ VERSION = '1.6.0'
3
3
  end
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "data-confirm-modal",
3
- "version": "1.5.0",
3
+ "version": "1.6.0",
4
4
  "description": "Makes Rails' link_to confirm: 'foo' build a Bootstrap Modal instead of calling the browser's confirm() API.",
5
5
  "main": "vendor/assets/javascripts/data-confirm-modal.js",
6
6
  "repository": "https://github.com/ifad/data-confirm-modal.git",
@@ -89,6 +89,31 @@
89
89
 
90
90
  dataConfirmModal.restoreDefaults();
91
91
 
92
+ // Detect bootstrap version, or bail out.
93
+ //
94
+ if ($.fn.modal == undefined) {
95
+ throw new Error("The bootstrap modal plugin does not appear to be loaded.");
96
+ }
97
+
98
+ if ($.fn.modal.Constructor == undefined) {
99
+ throw new Error("The bootstrap modal plugin does not have a Constructor ?!?");
100
+ }
101
+
102
+ if ($.fn.modal.Constructor.VERSION == undefined) {
103
+ throw new Error("The bootstrap modal plugin does not have its version defined ?!?");
104
+ }
105
+
106
+ var versionString = $.fn.modal.Constructor.VERSION;
107
+ var match = versionString.match(/^(\d)\./);
108
+ if (!match) {
109
+ throw new Error("Cannot identify Bootstrap version. Version string: " + versionString);
110
+ }
111
+
112
+ var bootstrapVersion = parseInt(match[1]);
113
+ if (bootstrapVersion != 3 && bootstrapVersion != 4) {
114
+ throw new Error("Unsupported bootstrap version: " + bootstrapVersion + ". data-confirm-modal supports version 3 and 4.");
115
+ }
116
+
92
117
  var buildElementModal = function (element) {
93
118
  var options = {
94
119
  title: element.data('title') || element.attr('title') || element.data('original-title'),
@@ -127,13 +152,32 @@
127
152
  var fade = settings.fade ? 'fade' : '';
128
153
  var modalClass = options.modalClass ? options.modalClass : settings.modalClass;
129
154
 
155
+ var modalTitle = '<h5 id="'+id+'Label" class="modal-title"></h5> '
156
+ var modalClose = '<button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>';
157
+ var modalHeader;
158
+
159
+ // Bootstrap 3 and 4 have different DOMs and different CSS. In B4, the
160
+ // modalHeader is display:flex and the modalClose uses negative margins,
161
+ // so it can stay after the modalTitle.
162
+ //
163
+ // In B3, the close button floats to the right, so it must stay before
164
+ // the modalTitle.
165
+ //
166
+ switch (bootstrapVersion) {
167
+ case 3:
168
+ modalHeader = modalClose + modalTitle;
169
+ break;
170
+ case 4:
171
+ modalHeader = modalTitle + modalClose;
172
+ break;
173
+ }
174
+
130
175
  var modal = $(
131
176
  '<div id="'+id+'" class="modal '+modalClass+' '+fade+'" tabindex="-1" role="dialog" aria-labelledby="'+id+'Label" aria-hidden="true">' +
132
177
  '<div class="modal-dialog" role="document">' +
133
178
  '<div class="modal-content">' +
134
179
  '<div class="modal-header">' +
135
- '<h5 id="'+id+'Label" class="modal-title"></h5> ' +
136
- '<button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>' +
180
+ modalHeader +
137
181
  '</div>' +
138
182
  '<div class="modal-body"></div>' +
139
183
  '<div class="modal-footer">' +
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: data-confirm-modal
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.5.0
4
+ version: 1.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Marcello Barnaba
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-10-05 00:00:00.000000000 Z
11
+ date: 2017-11-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: railties
@@ -65,7 +65,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
65
65
  version: 1.3.6
66
66
  requirements: []
67
67
  rubyforge_project:
68
- rubygems_version: 2.4.8
68
+ rubygems_version: 2.5.2.1
69
69
  signing_key:
70
70
  specification_version: 4
71
71
  summary: Use bootstrap modals with Rails' UJS data-confirm