data_confirm_modal 0.1.1 → 0.1.2

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: eef4fd91c6606d5ad30073426605e6a47046e144
4
- data.tar.gz: 18728275fca601741572cf87f30a658952af150a
3
+ metadata.gz: 4377cbbdb26816736adcb6f1fc3539cc526d61ad
4
+ data.tar.gz: 2198698d92a7a90e8f0085aa461e33a47a3851d6
5
5
  SHA512:
6
- metadata.gz: 0667f015f3a821ec883b95f05cc1a3a20cc657493f3c8380bec9bb7a62c4be0e21c18fdae7606051674354ca943127ef481c4ddffbc5e33964c199506975df10
7
- data.tar.gz: 5a48a4b9e37f6398f16c2fe70e475979566c780366ffd92c82450b4e2c84ae20ea4183b156897d4e3b3334c7bbe8407ff252c6d000f496099086eff5122ee355
6
+ metadata.gz: 44ac32d2a689d9cc429fe48a61d81b85f9d5701d72a96b8e5fed6c1e7a07b3d9589610bcdd45bbb39614bd6dee34769be84781e12b53b07f675ede11ea422c21
7
+ data.tar.gz: bf2bc439c60d2254e1b1a3b304186e0d740276bdec62da4a8aa7f0d3eda3d25a13bb33125210dee1a8503c20a735531068257d2e24716aad119741b753a1f95a
data/README.md CHANGED
@@ -1,8 +1,8 @@
1
1
  # DataConfirmModal
2
2
 
3
- Welcome to your new gem! In this directory, you'll find the files you need to be able to package up your Ruby library into a gem. Put your Ruby code in the file `lib/data_confirm_modal`. To experiment with that code, run `bin/console` for an interactive prompt.
3
+ This Gem was designed as a simple solution to integrate https://github.com/agoragames/confirm-with-reveal into your rails 4+ Application. I have added some instructions on how to customize the modals below, however for full documentation on the original plugin please refer to the repo above.
4
4
 
5
- TODO: Delete this and the text above, and describe your gem
5
+ Please note this gem is still in development, and will change continuously, please follow this page to keep current with updates.
6
6
 
7
7
  ## Installation
8
8
 
@@ -21,16 +21,40 @@ Or install it yourself as:
21
21
  $ gem install data_confirm_modal
22
22
 
23
23
  ## Usage
24
- This Gem is only compatible with Foundation Framework 5+
24
+ ### At Present This Gem is only compatible with Foundation Framework 5+
25
25
 
26
- ## ToDo
27
- Troubleshoot integration
26
+ Add to your application.js like shown below:
28
27
 
29
- ## Development
28
+ ```ruby
29
+ //= require jquery_ujs
30
+ //= require foundation
31
+ //= require data_confirm_modal
32
+ ```
33
+
34
+ Add the following to the bottom of the page but above ```</html>``` that contains the modal you wish to modify:
35
+
36
+ With out forcing a user to type a "Password (that you define)" to continue
37
+ ```ruby
38
+ <script>
39
+ $(document).confirmWithReveal({
40
+ ok: 'Proceed',
41
+ cancel: 'Cancel'
42
+ })
43
+ </script>
44
+ ```
30
45
 
31
- After checking out the repo, run `bin/setup` to install dependencies. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
46
+ To force a user to type a password of your choosing to proceed with the action:
32
47
 
33
- To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
48
+ ```ruby
49
+ <script>
50
+ $(document).confirmWithReveal({
51
+ password: 'DELETE'
52
+ ok: 'Proceed',
53
+ cancel: 'Cancel'
54
+ })
55
+ </script>
56
+ ```
57
+ To Be Continued... This should be enough to get you out of the gate!
34
58
 
35
59
  ## Contributing
36
60
 
@@ -1,3 +1,3 @@
1
1
  module DataConfirmModal
2
- VERSION = "0.1.1"
2
+ VERSION = "0.1.2"
3
3
  end
@@ -0,0 +1,148 @@
1
+ # Examples using Rails’ link_to helper
2
+ #
3
+ # Basic usage:
4
+ # = link_to 'Delete', foo_path(foo), method: :delete, data: { confirm: true }
5
+ #
6
+ # Customization of individual links/buttons via JSON in data-confirm:
7
+ # = link_to 'Delete', foo_path(foo), method: :delete, data: {
8
+ # confirm: {
9
+ # title: 'You might want to think twice about this!',
10
+ # body: 'If you click “Simon Says Delete” there will be no takebacks!',
11
+ # ok: 'Simon Says Delete'
12
+ # }
13
+ # }
14
+ #
15
+ # Fall back to window.confirm() when confirm is a plain string:
16
+ # = link_to 'Delete', foo_path(foo), method: :delete, confirm: 'Are you sure?'
17
+
18
+ $ = this.jQuery
19
+
20
+ $.fn.extend
21
+ confirmWithReveal: (options = {}) ->
22
+
23
+ defaults =
24
+ modal_class: 'medium'
25
+ title: 'Are you sure?'
26
+ title_class: ''
27
+ body: 'This action cannot be undone.'
28
+ body_class: ''
29
+ password: false
30
+ prompt: 'Type <strong>%s</strong> to continue:'
31
+ footer_class: ''
32
+ ok: 'Confirm'
33
+ ok_class: 'button alert'
34
+ cancel: 'Cancel'
35
+ cancel_class: 'button secondary'
36
+
37
+ settings = $.extend {}, defaults, options
38
+
39
+ do_confirm = ($el) ->
40
+
41
+ el_options = $el.data('confirm')
42
+
43
+ # The confirmation is actually triggered again when hitting "OK"
44
+ # (or whatever) in the modal (since we clone the original link in),
45
+ # but since we strip off the 'confirm' data attribute, we can tell
46
+ # whether this is the first confirmation or a subsequent one.
47
+ return true unless $el.attr('data-confirm')?
48
+
49
+ if (typeof el_options == 'string') and (el_options.length > 0)
50
+ return ($.rails?.confirm || window.confirm).call(window, el_options)
51
+
52
+ option = (name) ->
53
+ el_options[name] || settings[name]
54
+
55
+ # TODO: allow caller to pass in a template (DOM element to clone?)
56
+ modal = $("""
57
+ <div data-reveal class='reveal-modal #{option 'modal_class'}'>
58
+ <h2 data-confirm-title class='#{option 'title_class'}'></h2>
59
+ <p data-confirm-body class='#{option 'body_class'}'></p>
60
+ <div data-confirm-footer class='#{option 'footer_class'}'>
61
+ <a data-confirm-cancel class='#{option 'cancel_class'}'></a>
62
+ </div>
63
+ </div>
64
+ """)
65
+
66
+ confirm_button = if $el.is('a') then $el.clone() else $('<a/>')
67
+ confirm_button
68
+ .removeAttr('data-confirm')
69
+ .attr('class', option 'ok_class')
70
+ .html(option 'ok')
71
+ .on 'click', (e) ->
72
+ return false if $(this).prop('disabled')
73
+ # TODO: Handlers of this event cannot stop the confirmation from
74
+ # going through (e.g. chaining additional validation). Fix TBD.
75
+ $el.trigger('confirm.reveal', e)
76
+ if $el.is('form, :input')
77
+ $el
78
+ .closest('form')
79
+ .removeAttr('data-confirm')
80
+ .submit()
81
+
82
+ modal
83
+ .find('[data-confirm-title]')
84
+ .html(option 'title')
85
+ modal
86
+ .find('[data-confirm-body]')
87
+ .html(option 'body')
88
+ modal
89
+ .find('[data-confirm-cancel]')
90
+ .html(option 'cancel')
91
+ .on 'click', (e) ->
92
+ modal.foundation('reveal', 'close')
93
+ $el.trigger('cancel.reveal', e)
94
+ modal
95
+ .find('[data-confirm-footer]')
96
+ .append(confirm_button)
97
+
98
+ if (password = option 'password')
99
+ confirm_label =
100
+ (option 'prompt')
101
+ .replace '%s', password
102
+ confirm_html = """
103
+ <label>
104
+ #{confirm_label}
105
+ <input data-confirm-password type='text'/>
106
+ </label>
107
+ """
108
+ modal
109
+ .find('[data-confirm-body]')
110
+ .after($(confirm_html))
111
+ modal
112
+ .find('[data-confirm-password]')
113
+ .on 'keyup', (e) ->
114
+ disabled = $(this).val() != password
115
+ confirm_button
116
+ .toggleClass('disabled', disabled)
117
+ .prop('disabled', disabled)
118
+ .trigger('keyup')
119
+
120
+ modal
121
+ .appendTo($('body'))
122
+ .foundation()
123
+ .foundation('reveal', 'open')
124
+ .on 'closed.fndtn.reveal', (e) ->
125
+ modal.remove()
126
+
127
+ return false
128
+
129
+ if $.rails
130
+
131
+ # We do NOT do the event binding if $.rails exists, because jquery_ujs
132
+ # has already done it for us
133
+
134
+ $.rails.allowAction = (link) -> do_confirm $(link)
135
+ return $(this)
136
+
137
+ else
138
+
139
+ handler = (e) ->
140
+ unless (do_confirm $(this))
141
+ e.preventDefault()
142
+ e.stopImmediatePropagation()
143
+
144
+ return @each () ->
145
+ $el = $(this)
146
+ $el.on 'click', 'a[data-confirm], :input[data-confirm]', handler
147
+ $el.on 'submit', 'form[data-confirm]', handler
148
+ $el
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: data_confirm_modal
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Shawn Wilson
@@ -57,7 +57,8 @@ files:
57
57
  - data_confirm_modal.gemspec
58
58
  - lib/data_confirm_modal.rb
59
59
  - lib/data_confirm_modal/version.rb
60
- - vendor/assets/javascripts/confirm_with_reveal.js
60
+ - vendor/assets/javascripts/data-confirm-modal.coffee
61
+ - vendor/assets/javascripts/data-confirm-modal.js
61
62
  homepage: https://github.com/swilson223/data-confirm-foundation
62
63
  licenses:
63
64
  - MIT