rails-sweetalert2-confirm 0.9.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.
Files changed (57) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +11 -0
  3. data/.travis.yml +17 -0
  4. data/Gemfile +3 -0
  5. data/MIT-LICENSE +20 -0
  6. data/README.md +222 -0
  7. data/Rakefile +12 -0
  8. data/lib/assets/javascripts/rails_sweetalert2_confirm.js +163 -0
  9. data/lib/rails_sweetalert2_confirm.rb +7 -0
  10. data/lib/rails_sweetalert2_confirm/rails/engine.rb +6 -0
  11. data/lib/rails_sweetalert2_confirm/railtie.rb +8 -0
  12. data/lib/rails_sweetalert2_confirm/version.rb +3 -0
  13. data/lib/rails_sweetalert2_confirm/view_helpers.rb +50 -0
  14. data/rails_sweetalert2_confirm.gemspec +29 -0
  15. data/spec/dummy/.gitignore +2 -0
  16. data/spec/dummy/.rspec +1 -0
  17. data/spec/dummy/Rakefile +6 -0
  18. data/spec/dummy/app/assets/javascripts/application.js +16 -0
  19. data/spec/dummy/app/assets/javascripts/application_turbolinks.js +17 -0
  20. data/spec/dummy/app/assets/stylesheets/application.css +3 -0
  21. data/spec/dummy/app/controllers/application_controller.rb +19 -0
  22. data/spec/dummy/app/views/application/destroy.html.erb +1 -0
  23. data/spec/dummy/app/views/application/destroy.js.erb +1 -0
  24. data/spec/dummy/app/views/application/index.html.erb +42 -0
  25. data/spec/dummy/app/views/layouts/application.html.erb +19 -0
  26. data/spec/dummy/bin/bundle +3 -0
  27. data/spec/dummy/bin/rails +4 -0
  28. data/spec/dummy/bin/rake +4 -0
  29. data/spec/dummy/config.ru +4 -0
  30. data/spec/dummy/config/application.rb +29 -0
  31. data/spec/dummy/config/boot.rb +5 -0
  32. data/spec/dummy/config/database.yml +25 -0
  33. data/spec/dummy/config/environment.rb +5 -0
  34. data/spec/dummy/config/environments/development.rb +37 -0
  35. data/spec/dummy/config/environments/production.rb +78 -0
  36. data/spec/dummy/config/environments/test.rb +43 -0
  37. data/spec/dummy/config/initializers/assets.rb +8 -0
  38. data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
  39. data/spec/dummy/config/initializers/cookies_serializer.rb +3 -0
  40. data/spec/dummy/config/initializers/filter_parameter_logging.rb +4 -0
  41. data/spec/dummy/config/initializers/inflections.rb +16 -0
  42. data/spec/dummy/config/initializers/mime_types.rb +4 -0
  43. data/spec/dummy/config/initializers/secret_token.rb +1 -0
  44. data/spec/dummy/config/initializers/session_store.rb +3 -0
  45. data/spec/dummy/config/initializers/wrap_parameters.rb +14 -0
  46. data/spec/dummy/config/locales/en.yml +23 -0
  47. data/spec/dummy/config/routes.rb +5 -0
  48. data/spec/dummy/config/secrets.yml +22 -0
  49. data/spec/dummy/log/.keep +0 -0
  50. data/spec/dummy/public/404.html +67 -0
  51. data/spec/dummy/public/422.html +67 -0
  52. data/spec/dummy/public/500.html +66 -0
  53. data/spec/dummy/public/favicon.ico +0 -0
  54. data/spec/features/rails_sweetalert2_confirm_spec.rb +109 -0
  55. data/spec/spec_helper.rb +48 -0
  56. data/tags +20 -0
  57. metadata +241 -0
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: b17024ae196406be2bbc291db4c4680844c9034a
4
+ data.tar.gz: e44ec7a426ef55df14e471d8cb7a7d4f20be779e
5
+ SHA512:
6
+ metadata.gz: 662303f02449318d6162f36464806972758eeaf37ddaac85e644ba69af4674c747b0a41f1a71743a26bcf5b8db7ea9c5a79e71406c37c4cda81a4951313095dd
7
+ data.tar.gz: 2835717b2667acda29680fca4d411a329a0daafbb250df213dcad3f44b6f41deb211f90ecf2edbbb0984a16764e2c93628882d70b0ec2728b986bd3103a1b1e6
@@ -0,0 +1,11 @@
1
+ .bundle/
2
+ log/*.log
3
+ pkg/
4
+ spec/dummy/db/*.sqlite3
5
+ spec/dummy/db/*.sqlite3-journal
6
+ spec/dummy/log/*.log
7
+ spec/dummy/tmp/
8
+ spec/dummy/.sass-cache
9
+ Gemfile.lock
10
+ .DS_Store
11
+ *.gem
@@ -0,0 +1,17 @@
1
+ env:
2
+ - RAILS_VERSION=4.0.8
3
+ - RAILS_VERSION=4.1.4
4
+ - RAILS_VERSION=4.1.4 USE_TURBOLINKS=true
5
+ - RAILS_VERSION=4.2.4
6
+ - RAILS_VERSION=4.2.4 USE_TURBOLINKS=true
7
+ - RAILS_VERSION=master
8
+
9
+ rvm:
10
+ - 1.9.3
11
+ - 2.2
12
+ - jruby-19mode
13
+
14
+ matrix:
15
+ allow_failures:
16
+ - env: "RAILS_VERSION=master"
17
+ - rvm: ruby-head
data/Gemfile ADDED
@@ -0,0 +1,3 @@
1
+ source "https://rubygems.org"
2
+ gemspec
3
+ gem "rails-assets-sweetalert2", source: 'https://rails-assets.org'
@@ -0,0 +1,20 @@
1
+ Copyright 2014 YOURNAME
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,222 @@
1
+ Rails SweetAlert2 Confirmations <img src="https://travis-ci.org/JoeWoodward/rails-sweetalert2-confirm.svg" alt="build:">
2
+ ---
3
+
4
+ An awesome [SweetAlert2](https://github.com/limonte/sweetalert2)
5
+ replacement for Rails' confirmation dialogs.
6
+
7
+ [See SweetAlert2 in action!](https://limonte.github.io/sweetalert2/)
8
+
9
+ <img src="https://raw.github.com/limonte/sweetalert2/master/sweetalert2.gif" width="686">
10
+
11
+ Installation
12
+ ---
13
+
14
+ ```ruby
15
+ # Gemfile
16
+
17
+ gem 'rails-sweetalert2-confirm'
18
+ gem 'rails-assets-sweetalert2', source 'https://rails-assets.org'
19
+ ```
20
+
21
+ ```javascript
22
+ // app/assets/javascripts/application.js
23
+
24
+ //= require sweetalert2
25
+ //= require sweetalert2-rails-confirm
26
+ ```
27
+
28
+ ```css
29
+ /* app/assets/stylesheets/application.css
30
+
31
+ *= require sweetalert2
32
+ */
33
+ ```
34
+
35
+ Requirements
36
+ ---
37
+
38
+ **Rails 4+**
39
+
40
+ Previous versions may be supported but are untested, use at your own risk!
41
+
42
+ Usage
43
+ ---
44
+
45
+ **Basic Setup**
46
+ ___
47
+ Simply implement the `link_to` with a `data: { confirm: 'message' }` as you normally would
48
+ ```ruby
49
+ link_to('Another page', another_page_path, data: { confirm: 'Are you sure you want to leave this page?' })
50
+ ```
51
+
52
+ **Remote Setup**
53
+ ___
54
+ Simply implement the `link_to` with a `data: { confirm: 'message' }` and `remote: true` as you normally would
55
+ ```ruby
56
+ link_to('Another page', another_page_path, remote: true, data: { confirm: 'Are you sure you want to leave this page?' })
57
+ ```
58
+
59
+ **Setting Default SweetAlert2 Options**
60
+ ___
61
+ You can define the default sweet alert options globally by creating a js
62
+ object named `sweetAlertConfirmDefaults`.
63
+
64
+ ```javascript
65
+ var sweetAlertConfirmDefaults = {
66
+ title: 'Are you sure?',
67
+ type: 'warning',
68
+ showCancelButton: true,
69
+ confirmButtonText: "I'm sure"
70
+ confirmButtonClass: 'btn btn-danger'
71
+ cancelButtonClass: 'btn btn-default',
72
+ };
73
+ ```
74
+ | Argument | Default value | Description |
75
+ | --------------------- | -------------------- | ----------- |
76
+ | `sweetSelector` | `"[data-swal]"` | The selector that railsSweetAlert2Confirm will look for to hijack the confirms. **This needs to be set before you import rails_sweetalert2_confirm.js** |
77
+ | `remote` | `false` | Submit the link_to or form via rails' default remote implementation |
78
+ | `afterComfirm` | N/A | Define a function to run after the user clicks the confirm button |
79
+ | `afterDismiss` | N/A | Define a function to run after the user dismisses the modal. Passes dismiss `function(dismiss)` in as a param, value of **dismiss** can be `'cancel'`, `'overlay'`, `'close'`, `'timer'` |
80
+ | `title` | N/A | The title of the modal. It can either be added to the object under the key "title" or passed as the first parameter of the function. |
81
+ | `text` | N/A | A description for the modal. It can either be added to the object under the key "text" or passed as the second parameter of the function. |
82
+ | `html` | N/A | A HTML description for the modal. If `text` and `html` parameters are provided in the same time, "text" will be used. |
83
+ | `type ` | N/A | The type of the modal. SweetAlert2 comes with [5 built-in types](#modal-types) which will show a corresponding icon animation: `warning`, `error`, `success`, `info` and `question`. It can either be put in the array under the key `type` or passed as the third parameter of the function. |
84
+ | `customClass` | N/A | A custom CSS class for the modal. |
85
+ | `animation` | `true` | If set to `false`, modal CSS animation will be disabled. |
86
+ | `allowOutsideClick` | `true` | If set to `false`, the user can't dismiss the modal by clicking outside it. |
87
+ | `allowEscapeKey` | `true` | If set to `false`, the user can't dismiss the modal by pressing the Escape key. |
88
+ | `showConfirmButton` | `true` | If set to `false`, a "Confirm"-button will not be shown. It can be useful when you're using `html` parameter for custom HTML description. |
89
+ | `showCancelButton` | `false` | If set to `true`, a "Cancel"-button will be shown, which the user can click on to dismiss the modal. |
90
+ | `confirmButtonText` | `"OK"` | Use this to change the text on the "Confirm"-button. |
91
+ | `cancelButtonText` | `"Cancel"` | Use this to change the text on the "Cancel"-button. |
92
+ | `confirmButtonColor` | `"#3085d6"` | Use this to change the background color of the "Confirm"-button (must be a HEX value). |
93
+ | `cancelButtonColor` | `"#aaa"` | Use this to change the background color of the "Cancel"-button (must be a HEX value). |
94
+ | `confirmButtonClass` | N/A | A custom CSS class for the "Confirm"-button. |
95
+ | `cancelButtonClass` | N/A | A custom CSS class for the "Cancel"-button. |
96
+ | `buttonsStyling` | `true` | Apply default swal2 styling to buttons. If you want to use your own classes (e.g. Bootstrap classes) set this parameter to `false`. |
97
+ | `reverseButtons` | `false` | Set to `true` if you want to invert default buttons positions. |
98
+ | `showCloseButton` | `false` | Set to `true` to show close button in top right corner of the modal. |
99
+ | `showLoaderOnConfirm` | `false` | Set to `true` to disable buttons and show that something is loading. Useful for AJAX requests. |
100
+ | `preConfirm` | N/A | Function to execute before confirm, should return Promise, see <a href="https://limonte.github.io/sweetalert2/#ajax-request">usage example</a>. |
101
+ | `imageUrl` | N/A | Add a customized icon for the modal. Should contain a string with the path or URL to the image. |
102
+ | `imageWidth` | N/A | If imageUrl is set, you can specify imageWidth to describes image width in px. |
103
+ | `imageHeight` | N/A | Custom image height in px. |
104
+ | `imageClass` | N/A | A custom CSS class for the customized icon. |
105
+ | `timer` | N/A | Auto close timer of the modal. Set in ms (milliseconds). |
106
+ | `width` | `500` | Modal window width, including paddings (`box-sizing: border-box`). |
107
+ | `padding` | `20` | Modal window padding. |
108
+ | `background` | `"#fff"` | Modal window background (CSS `background` property). |
109
+ | `input` | N/A | Input field type, can be `"text"`, `"email"`, `"password"`, `"textarea"`, `"select"`, `"radio"`, `"checkbox"` and `"file"`. |
110
+ | `inputPlaceholder` | N/A | Input field placeholder. |
111
+ | `inputValue` | N/A | Input field initial value. |
112
+ | `inputOptions` | N/A | If `input` parameter is set to `"select"` or `"radio"`, you can provide options. Object keys will represent options values, object values will represent options text values. |
113
+ | `inputAutoTrim` | `true` | Automatically remove whitespaces from both ends of a result string. Set this parameter to `false` to disable auto-trimming. |
114
+ | `inputValidator` | N/A | Validator for input field, should return Promise, see <a href="https://limonte.github.io/sweetalert2/#select-box">usage example</a>. |
115
+ | `inputClass` | N/A | A custom CSS class for the input field. |
116
+ | `onOpen` | N/A | Function to run when modal opens, provides modal DOM element as first param. |
117
+ | `onClose` | N/A | Function to run when modal closes, provides modal DOM element as first param. |
118
+ **N/A** means that the value isn't submitted unless defined
119
+
120
+ Please refer to the [SweetAlert2 Documentation](https://limonte.github.io/sweetalert2/) for the correct values
121
+
122
+ **NOTE**: If you would like to assign a different sweetSelector then
123
+ please create the **sweetAlertConfirmDefaults** object **before** you import
124
+ **rails_sweetalert2_confirm.js**
125
+ ```javascript
126
+ // rails_sweetalert2_confirm_defaults.js
127
+ var sweetAlertConfirmDefaults = {
128
+ sweetSelector: ".sweetalert2_confirm"
129
+ }
130
+
131
+ // application.js
132
+ //= require sweetalert2
133
+ //= require rails_sweetalert2_confirm_defaults
134
+ //= require rails_sweetalert2_confirm
135
+ ```
136
+ **Setting SweetAlert2 Options Per Link**
137
+ ___
138
+ You can define the default sweet alert options per link_to (or
139
+ submit/button tag) by defining them on data: { swal: {} } as a json
140
+ object.
141
+ **These will override the default options**
142
+
143
+ ```ruby
144
+ link_to(
145
+ 'Custom page',
146
+ custom_page_path,
147
+ data: {
148
+ confirm: 'Is this what you want?',
149
+ swal: {
150
+ text: "I'm a subtitle",
151
+ type: 'question',
152
+ confirm_button_class: 'btn btn-default'
153
+ }
154
+ }
155
+ )
156
+ ```
157
+ | Argument | Default value | Description |
158
+ | --------------------- | -------------------- | ----------- |
159
+ | `remote` | `false` | Submit the link_to or form via rails' default remote implementation |
160
+ | `after_comfirm` | N/A | Define a function to run after the user clicks the confirm button |
161
+ | `after_dismiss` | N/A | Define a function to run after the user dismisses the modal. Passes dismiss `function(dismiss)` in as a param, value of **dismiss** can be `'cancel'`, `'overlay'`, `'close'`, `'timer'` |
162
+ | `title` | N/A | The title of the modal. It can either be added to the object under the key "title" or passed as the first parameter of the function. |
163
+ | `text` | N/A | A description for the modal. It can either be added to the object under the key "text" or passed as the second parameter of the function. |
164
+ | `html` | N/A | A HTML description for the modal. If `text` and `html` parameters are provided in the same time, "text" will be used. |
165
+ | `type ` | N/A | The type of the modal. SweetAlert2 comes with [5 built-in types](#modal-types) which will show a corresponding icon animation: `warning`, `error`, `success`, `info` and `question`. It can either be put in the array under the key `type` or passed as the third parameter of the function. |
166
+ | `custom_class` | N/A | A custom CSS class for the modal. |
167
+ | `animation` | `true` | If set to `false`, modal CSS animation will be disabled. |
168
+ | `allow_outside_click` | `true` | If set to `false`, the user can't dismiss the modal by clicking outside it. |
169
+ | `allow_escape_key` | `true` | If set to `false`, the user can't dismiss the modal by pressing the Escape key. |
170
+ | `show_confirm_button` | `true` | If set to `false`, a "Confirm"-button will not be shown. It can be useful when you're using `html` parameter for custom HTML description. |
171
+ | `show_cancel_button` | `false` | If set to `true`, a "Cancel"-button will be shown, which the user can click on to dismiss the modal. |
172
+ | `confirm_button_text` | `"OK"` | Use this to change the text on the "Confirm"-button. |
173
+ | `cancel_button_text` | `"Cancel"` | Use this to change the text on the "Cancel"-button. |
174
+ | `confirm_button_color` | `"#3085d6"` | Use this to change the background color of the "Confirm"-button (must be a HEX value). |
175
+ | `cancel_button_color` | `"#aaa"` | Use this to change the background color of the "Cancel"-button (must be a HEX value). |
176
+ | `confirm_button_class` | N/A | A custom CSS class for the "Confirm"-button. |
177
+ | `cancel_button_class` | N/A | A custom CSS class for the "Cancel"-button. |
178
+ | `buttons_styling` | `true` | Apply default swal2 styling to buttons. If you want to use your own classes (e.g. Bootstrap classes) set this parameter to `false`. |
179
+ | `reverse_buttons` | `false` | Set to `true` if you want to invert default buttons positions. |
180
+ | `show_close_button` | `false` | Set to `true` to show close button in top right corner of the modal. |
181
+ | `show_loader_on_confirm` | `false` | Set to `true` to disable buttons and show that something is loading. Useful for AJAX requests. |
182
+ | `pre_confirm` | N/A | Function to execute before confirm, should return Promise, see <a href="https://limonte.github.io/sweetalert2/#ajax-request">usage example</a>. |
183
+ | `image_url` | N/A | Add a customized icon for the modal. Should contain a string with the path or URL to the image. |
184
+ | `image_width` | N/A | If image_url is set, you can specify image_width to describes image width in px. |
185
+ | `image_height` | N/A | Custom image height in px. |
186
+ | `image_class` | N/A | A custom CSS class for the customized icon. |
187
+ | `timer` | N/A | Auto close timer of the modal. Set in ms (milliseconds). |
188
+ | `width` | `500` | Modal window width, including paddings (`box-sizing: border-box`). |
189
+ | `padding` | `20` | Modal window padding. |
190
+ | `background` | `"#fff"` | Modal window background (CSS `background` property). |
191
+ | `input` | N/A | Input field type, can be `"text"`, `"email"`, `"password"`, `"textarea"`, `"select"`, `"radio"`, `"checkbox"` and `"file"`. |
192
+ | `input_placeholder` | N/A | Input field placeholder. |
193
+ | `input_value` | N/A | Input field initial value. |
194
+ | `input_options` | N/A | If `input` parameter is set to `"select"` or `"radio"`, you can provide options. Object keys will represent options values, object values will represent options text values. |
195
+ | `input_auto_trim` | `true` | Automatically remove whitespaces from both ends of a result string. Set this parameter to `false` to disable auto-trimming. |
196
+ | `input_validator` | N/A | Validator for input field, should return Promise, see <a href="https://limonte.github.io/sweetalert2/#select-box">usage example</a>. |
197
+ | `input_class` | N/A | A custom CSS class for the input field. |
198
+ | `on_open` | N/A | Function to run when modal opens, provides modal DOM element as first param. |
199
+ | `on_close` | N/A | Function to run when modal closes, provides modal DOM element as first param. |
200
+ **N/A** means that the value isn't submitted unless defined
201
+
202
+ Please refer to the [SweetAlert2 Documentation](https://limonte.github.io/sweetalert2/) for the correct values
203
+
204
+
205
+ Modal Types
206
+ -----------
207
+
208
+ | `success` | `error` | `warning` | `info` | `question` |
209
+ | ------------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | -------------------------------------------------------------------------------- |
210
+ | ![](https://raw.github.com/limonte/sweetalert2/master/images/swal2-success.png) | ![](https://raw.github.com/limonte/sweetalert2/master/images/swal2-error.png) | ![](https://raw.github.com/limonte/sweetalert2/master/images/swal2-warning.png) | ![](https://raw.github.com/limonte/sweetalert2/master/images/swal2-info.png) | ![](https://raw.github.com/limonte/sweetalert2/master/images/swal2-question.png) |
211
+
212
+ Browser compatibility
213
+ ---------------------
214
+
215
+ SweetAlert2 works in most major browsers (yes, even IE). Some details:
216
+
217
+ - **IE: 10+**, Promise polyfill should be included (see [SweetAlert2 usage example](https://github.com/limonte/sweetalert2/blob/master/README.md#usage)).
218
+ - **Microsoft Edge: 12+**
219
+ - **Safari: 4+**
220
+ - **Firefox: 4+**
221
+ - **Chrome 14+**
222
+ - **Opera: 15+**
@@ -0,0 +1,12 @@
1
+ begin
2
+ require 'bundler/setup'
3
+ rescue LoadError
4
+ puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
5
+ end
6
+
7
+ task :default => [:spec]
8
+ desc 'run Rspec specs'
9
+ task :spec do
10
+ sh 'rspec spec -f d -c'
11
+ end
12
+
@@ -0,0 +1,163 @@
1
+ var sweetAlertConfirmDefaults = sweetAlertConfirmDefaults || {};
2
+ sweetAlertConfirmDefaults.sweetSelector = sweetAlertConfirmDefaults.sweetSelector || '[data-swal]';
3
+
4
+ var sweetAlertConfirm = function(event) {
5
+ var $linkToConfirm = $(this);
6
+
7
+ var swalOptions = {
8
+ animation: sweetAlertConfirmDefaults.animation || true,
9
+ allowOutsideClick: sweetAlertConfirmDefaults.allowOutsideClick || true,
10
+ allowEscapeKey: sweetAlertConfirmDefaults.allowEscapeKey || true,
11
+ showConfirmButton: sweetAlertConfirmDefaults.showConfirmButton || true,
12
+ showCancelButton: sweetAlertConfirmDefaults.showCancelButton || true,
13
+ confirmButtonText: sweetAlertConfirmDefaults.confirmButtonText || "OK",
14
+ cancelButtonText: sweetAlertConfirmDefaults.cancelButtonText || "Cancel",
15
+ confirmButtonColor: sweetAlertConfirmDefaults.confirmButtonColor || "#3085d6",
16
+ cancelButtonColor: sweetAlertConfirmDefaults.cancelButtonColor || "#aaa",
17
+ buttonsStyling: sweetAlertConfirmDefaults.buttonsStyling || true,
18
+ reverseButtons: sweetAlertConfirmDefaults.reverseButtons || false,
19
+ showCloseButton: sweetAlertConfirmDefaults.showCloseButton || false,
20
+ showLoaderOnConfirm: sweetAlertConfirmDefaults.showLoaderOnConfirm || false,
21
+ preConfirm: sweetAlertConfirmDefaults.preConfirm || false,
22
+ width: sweetAlertConfirmDefaults.width || 500,
23
+ padding: sweetAlertConfirmDefaults.padding || 20,
24
+ background: sweetAlertConfirmDefaults.background || '#fff',
25
+ inputAutoTrim: sweetAlertConfirmDefaults.inputAutoTrim || true,
26
+ };
27
+
28
+ var canBeNullOptions = [
29
+ 'title',
30
+ 'text',
31
+ 'html',
32
+ 'type',
33
+ 'customClass',
34
+ 'confirmButtonClass',
35
+ 'cancelButtonClass',
36
+ 'imageUrl',
37
+ 'imageWidth',
38
+ 'imageHeight',
39
+ 'imageClass',
40
+ 'timer',
41
+ 'input',
42
+ 'inputPlaceholder',
43
+ 'inputValue',
44
+ 'inputOptions',
45
+ 'inputValidator',
46
+ 'inputClass',
47
+ 'onOpen',
48
+ 'onClose'
49
+ ]
50
+
51
+ $.each(canBeNullOptions, function(index, option) {
52
+ if(sweetAlertConfirmDefaults[option]) {
53
+ swalOptions[option] = sweetAlertConfirmDefaults[option]
54
+ };
55
+ });
56
+
57
+ var remoteSubmit =
58
+ sweetAlertConfirmDefaults.remote || $linkToConfirm.data('swal').remote || false
59
+
60
+ var swalOptionsMappings = {
61
+ "title":"title",
62
+ "text":"text",
63
+ "html":"html",
64
+ "type":"type",
65
+ "custom_class":"customClass",
66
+ "animation":"animation",
67
+ "allow_outside_click":"allowOutsideClick",
68
+ "allow_escape_key":"allowEscapeKey",
69
+ "show_confirm_button":"showConfirmButton",
70
+ "show_cancel_button":"showCancelButton",
71
+ "confirm_button_text":"confirmButtonText",
72
+ "cancel_button_text":"cancelButtonText",
73
+ "confirm_button_color":"confirmButtonColor",
74
+ "cancel_button_color":"cancelButtonColor",
75
+ "confirm_button_class":"confirmButtonClass",
76
+ "cancel_button_class":"cancelButtonClass",
77
+ "buttons_styling":"buttonsStyling",
78
+ "reverse_buttons":"reverseButtons",
79
+ "show_close_button":"showCloseButton",
80
+ "show_loader_on_confirm":"showLoaderOnConfirm",
81
+ "pre_confirm":"preConfirm",
82
+ "image_url":"imageUrl",
83
+ "image_width":"imageWidth",
84
+ "image_height":"imageHeight",
85
+ "image_class":"imageClass",
86
+ "timer":"timer",
87
+ "width":"width",
88
+ "padding":"padding",
89
+ "background":"background",
90
+ "input":"input",
91
+ "input_placeholder":"inputPlaceholder",
92
+ "input_value":"inputValue",
93
+ "input_options":"inputOptions",
94
+ "input_auto_trim":"inputAutoTrim",
95
+ "input_validator":"inputValidator",
96
+ "input_class":"inputClass",
97
+ "on_open":"onOpen",
98
+ "on_close":"onClose",
99
+ };
100
+
101
+ function afterConfirmCallback() {
102
+ if (afterConfirm) {
103
+ window[afterConfirm]();
104
+ return false
105
+ };
106
+
107
+ if (remoteSubmit === true) {
108
+ $.rails.handleRemote($linkToConfirm)
109
+ } else if(swalOptions['method'] !== undefined) {
110
+ $.rails.handleMethod($linkToConfirm);
111
+ } else {
112
+ if($linkToConfirm.attr('type') == 'submit'){
113
+ var name = $linkToConfirm.attr('name'),
114
+ data = name ? {name: name, value:$linkToConfirm.val()} : null;
115
+ $linkToConfirm.closest('form').data('ujs:submit-button', data);
116
+ $linkToConfirm.closest('form').submit();
117
+ } else {
118
+ window.location.href = $linkToConfirm.attr('href');
119
+ };
120
+ };
121
+ }
122
+
123
+ function afterDismissCallback(dismiss) {
124
+ if(afterDismiss) {
125
+ window[afterDismiss](dismiss)
126
+ return false
127
+ }
128
+ };
129
+
130
+ var skipConfirm = $linkToConfirm.data('swal').skip_confirm || null;
131
+
132
+ if(skipConfirm != null) {
133
+ if(skipConfirm === true || window[skipConfirm]($linkToConfirm) === true) {
134
+ return afterAlertCallback(true);
135
+ };
136
+ };
137
+
138
+ var optionKeys = [];
139
+ for(var option in swalOptionsMappings) { optionKeys.push(option) }
140
+
141
+ $.each($linkToConfirm.data('swal'), function(key, val){
142
+ if ($.inArray(key, optionKeys) >= 0) {
143
+ swalOptions[swalOptionsMappings[key]] = val
144
+ }
145
+ });
146
+
147
+ var afterConfirm = sweetAlertConfirmDefaults.afterConfirm || $linkToConfirm.data('swal').after_confirm || null
148
+ var afterDismiss = sweetAlertConfirmDefaults.afterDismiss || $linkToConfirm.data('swal').after_dismiss || null
149
+
150
+ swal(swalOptions).then(afterConfirmCallback, afterDismissCallback);
151
+ return false;
152
+ };
153
+
154
+ $(document).on('ready turbolinks:load page:update ajaxComplete', function() {
155
+ $(sweetAlertConfirmDefaults.sweetSelector).on('click', sweetAlertConfirm);
156
+ });
157
+
158
+ $(document).on('ready turbolinks:load page:load', function() {
159
+ //To avoid "Uncaught TypeError: Cannot read property 'querySelector' of null" on turbolinks
160
+ if (typeof window.sweetAlertInitialize === 'function') {
161
+ window.sweetAlertInitialize();
162
+ };
163
+ });