data-confirm-modal 1.1.1 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 51553390f46b33fab5ef7c510383311e3e4b0c16
4
- data.tar.gz: 09d08afd86829132cf63712585b2811257f9d1e3
3
+ metadata.gz: 036d8ef59a741d41fdde8be51c5133108deda949
4
+ data.tar.gz: 78e832d68393925aeff5e1643159dc338b76c615
5
5
  SHA512:
6
- metadata.gz: 8bd8a34f895f5c63f91a311b09112b84e76f015c3e25badcd22be4206711a24bef5f8a8706af1cdd7830d02f453e6fc271e352c59c2951324ef284922b084e74
7
- data.tar.gz: da1dfe1a0a3675cd235da276e51ad9d931c81c5e2bdd8adb0a69b8dcf7d5145bef0dfb8458dd2672d4fea0c7d3dfe5a447f84123d55d8b7853164adfb3eba1ff
6
+ metadata.gz: 252e3c3a9d9fd2eb9c5a450ae7d3cc100f3ddb6a50778e1a75a45583a48dba3eebf29c49c4781fdd0db1a4983e3e6fb095569a4b14d73e8a28743b846ef41442
7
+ data.tar.gz: 27e3cddc2965780e9a74a216b6510e75008f14c42e60407a2d799e45f2dc6025a6a92ece54fb0a5cad70c6bc7d6620cafda18faf996c1d3b3f39089b37a6f871
data/README.md CHANGED
@@ -30,7 +30,7 @@ And then require the Javascript from your `application.js`:
30
30
 
31
31
  ## Usage
32
32
 
33
- ### With Rails
33
+ ### With Rails ([example](http://jsfiddle.net/zpu4u6mh/))
34
34
 
35
35
  By default, the Gem's Javascript overrides Rails' [data-confirm behaviour][]
36
36
  for you, with no change required to your code. The modal is applicable to
@@ -67,7 +67,7 @@ To restore default settings use `dataConfirmModal.restoreDefaults()`.
67
67
 
68
68
  [data-confirm-behaviour]: http://api.rubyonrails.org/classes/ActionView/Helpers/UrlHelper.html
69
69
 
70
- ### Without Rails, with data attributes
70
+ ### Without Rails, with data attributes ([example](http://jsfiddle.net/ze2Lz8tm/))
71
71
 
72
72
  Given an element with `data-confirm` attributes in place, such as
73
73
 
@@ -80,7 +80,7 @@ you can then invoke `.confirmModal()` on it using:
80
80
  that'll display the confirmation modal. If the user confirms, then the `#foo`
81
81
  link will receive a `click` event.
82
82
 
83
- ### Without Rails, without data attributes
83
+ ### Without Rails, without data attributes ([example](https://jsfiddle.net/h370g63r/))
84
84
 
85
85
  Use `dataConfirmModal.confirm()` passing any of the supported options, and pass
86
86
  an `onConfirm` and `onCancel` callbacks that'll be invoked when the user clicks
@@ -96,8 +96,6 @@ the confirm or the cancel buttons.
96
96
  onCancel: function() { alert('cancelled') }
97
97
  });
98
98
 
99
- A live jsfiddle example is [available here](http://jsfiddle.net/t0m7ayr3/).
100
-
101
99
  ### Modal Options
102
100
 
103
101
  The default [bootstrap modal options](http://getbootstrap.com/javascript/#modals-options)
@@ -10,7 +10,6 @@ Gem::Specification.new do |s|
10
10
  s.homepage = "http://github.com/ifad/data-confirm-modal"
11
11
  s.summary = "Use bootstrap modals with Rails' UJS data-confirm"
12
12
  s.description = "This gem overrides Rails' UJS behaviour to open up a Bootstrap Modal instead of the browser's built in confirm() dialog"
13
- s.licenses = "MIT"
14
13
 
15
14
  s.required_rubygems_version = ">= 1.3.6"
16
15
 
@@ -1,3 +1,3 @@
1
1
  module DataConfirmModal
2
- VERSION = '1.1.1'
2
+ VERSION = '1.2.0'
3
3
  end
@@ -111,10 +111,10 @@
111
111
 
112
112
  var modal = buildModal(options);
113
113
 
114
- modal.data('confirmed', false);
115
114
  modal.find('.commit').on('click', function () {
116
- modal.data('confirmed', true);
117
- element.trigger('click');
115
+ // Call the original event handler chain
116
+ element.get(0).click();
117
+
118
118
  modal.modal('hide');
119
119
  });
120
120
 
@@ -239,43 +239,63 @@
239
239
  * caching it into the element's `confirm-modal` data attribute.
240
240
  */
241
241
  var getModal = function (element) {
242
- var modal = element.data('confirm-modal') || buildElementModal(element);
242
+ var modal = element.data('confirm-modal');
243
243
 
244
- if (modal && !element.data('confirm-modal'))
244
+ if (!modal) {
245
+ modal = buildElementModal(element);
245
246
  element.data('confirm-modal', modal);
247
+ }
246
248
 
247
249
  return modal;
248
250
  };
249
251
 
250
252
  $.fn.confirmModal = function () {
251
- getModal($(this)).spawn();
253
+ var modal = getModal($(this));
254
+
255
+ modal.spawn();
252
256
 
253
- return this;
257
+ return modal;
254
258
  };
255
259
 
256
260
  if ($.rails) {
257
261
  /**
258
- * Attaches to the Rails' UJS adapter 'confirm' event on links having a
259
- * `data-confirm` attribute. Temporarily overrides the `$.rails.confirm`
260
- * function with an anonymous one that returns the 'confirmed' status of
261
- * the modal.
262
+ * Attaches to Rails' UJS adapter's 'confirm' event, triggered on elements
263
+ * having a `data-confirm` attribute set.
264
+ *
265
+ * If the modal is not visible, then it is spawned and the default Rails
266
+ * confirmation dialog is canceled.
267
+ *
268
+ * If the modal is visible, it means the handler is being called by the
269
+ * modal commit button click handler, as such the user has successfully
270
+ * clicked on the confirm button. In this case Rails' confirm function
271
+ * is briefly overriden, and afterwards reset when the modal is closed.
262
272
  *
263
- * A modal is considered 'confirmed' when an user has successfully clicked
264
- * the 'confirm' button in it.
265
273
  */
274
+ var rails_confirm = $.rails.confirm;
275
+
266
276
  $(document).delegate(settings.elements.join(', '), 'confirm', function() {
267
277
  var element = $(this), modal = getModal(element);
268
- var confirmed = modal.data('confirmed');
269
278
 
270
- if (!confirmed && !modal.is(':visible')) {
279
+ if (!modal.is(':visible')) {
271
280
  modal.spawn();
272
281
 
273
- var confirm = $.rails.confirm;
274
- $.rails.confirm = function () { return modal.data('confirmed'); }
275
- modal.on('hide', function () { $.rails.confirm = confirm; });
276
- }
282
+ // Cancel Rails' confirmation
283
+ return false;
277
284
 
278
- return confirmed;
285
+ } else {
286
+ // Modal has been confirmed. Override Rails' handler
287
+ $.rails.confirm = function () {
288
+ return true;
289
+ }
290
+
291
+ modal.one('hidden.bs.modal', function() {
292
+ // Reset it after modal is closed.
293
+ $.rails.confirm = rails_confirm;
294
+ });
295
+
296
+ // Proceed with Rails' handlers
297
+ return true;
298
+ }
279
299
  });
280
300
  }
281
301
 
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.1.1
4
+ version: 1.2.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: 2016-04-27 00:00:00.000000000 Z
11
+ date: 2016-06-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: railties
@@ -43,8 +43,7 @@ files:
43
43
  - lib/data-confirm-modal/version.rb
44
44
  - vendor/assets/javascripts/data-confirm-modal.js
45
45
  homepage: http://github.com/ifad/data-confirm-modal
46
- licenses:
47
- - MIT
46
+ licenses: []
48
47
  metadata: {}
49
48
  post_install_message:
50
49
  rdoc_options: []
@@ -62,7 +61,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
62
61
  version: 1.3.6
63
62
  requirements: []
64
63
  rubyforge_project:
65
- rubygems_version: 2.5.1
64
+ rubygems_version: 2.4.8
66
65
  signing_key:
67
66
  specification_version: 4
68
67
  summary: Use bootstrap modals with Rails' UJS data-confirm