adt-js-components 1.1.3 → 1.2.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.
package/README.md CHANGED
@@ -93,6 +93,23 @@ Attribute `data-adt-submit-form` must be included in your HTML!
93
93
  AdtJsComponents.initSubmitForm();
94
94
  ```
95
95
 
96
+ On each submit before and after callback can be added.
97
+ Before callback is invoked before submit and form is not submitted if the function return false.
98
+ After callback is invoked after successed submit.
99
+
100
+ ```html
101
+ <script>
102
+ function myConfirm() {
103
+ return confirm('Do you realy want to submit the form?');
104
+ }
105
+ function myAlert() {
106
+ alert('Data was saved.');
107
+ }
108
+ </script>
109
+
110
+ <button ... data-adt-submit-form-before-callback="myConfirm" data-adt-submit-form-after-callback="myAlert">Submit</button>
111
+ ```
112
+
96
113
  ### Ajax Select
97
114
 
98
115
  Attribute `data-adt-ajax-select` must be included in your HTML!
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "adt-js-components",
3
- "version": "1.1.3",
3
+ "version": "1.2.0",
4
4
  "description": "JavaScript components for Nette framework",
5
5
  "main": "index.js",
6
6
  "scripts": {
@@ -22,9 +22,11 @@
22
22
  "scrollparent": "^2.0.1",
23
23
  "tinymce": "^5.7.0",
24
24
  "tinymce-i18n": "^20.12.25",
25
- "jquery": "^3.4.1",
26
25
  "nette.ajax.js": "^2.3.0"
27
26
  },
27
+ "peerDependencies": {
28
+ "jquery": "^3.4.1"
29
+ },
28
30
  "author": "Apps Dev Team",
29
31
  "license": "MIT",
30
32
  "bugs": {
@@ -22,6 +22,10 @@ function scrollToFirstError(form) {
22
22
  }
23
23
 
24
24
  function run(options) {
25
+
26
+ // Unregister ext "redirect", for own implemenation in ext "submitForm".succcess
27
+ $.nette.ext('redirect', null);
28
+
25
29
  $.nette.ext('live').after(function($el) {
26
30
  $el.find('[data-adt-submit-form]').find('input, textarea, select').on('input', function(e) {
27
31
  this.classList.remove('is-invalid');
@@ -66,6 +70,14 @@ function run(options) {
66
70
  $.nette.ext("submitForm", {
67
71
  before: function (xhr, settings) {
68
72
  if (settings.nette && settings.nette.form && settings.nette.form.attr('data-adt-submit-form') !== undefined) {
73
+
74
+ let beforeCallback = settings.nette.el.attr('data-adt-submit-form-before-callback');
75
+ if (beforeCallback) {
76
+ if (!window[beforeCallback]()) {
77
+ return false;
78
+ }
79
+ }
80
+
69
81
  settings.nette.form.data('enabledButtons', settings.nette.form.find('button:enabled'));
70
82
  settings.nette.form.find('button').prop('disabled', true);
71
83
  settings.nette.el.css('width', settings.nette.el.outerWidth());
@@ -76,8 +88,21 @@ function run(options) {
76
88
  }
77
89
  },
78
90
  success: function (payload, status, xhr, settings) {
91
+ if (settings.nette && settings.nette.el) {
92
+ let afterCallback = settings.nette.el.attr('data-adt-submit-form-after-callback');
93
+ if (afterCallback) {
94
+ window[afterCallback]();
95
+ }
96
+ }
97
+
98
+ // Own implementation redirecting (same as in nette.ajax.js ext "redirect"), but after our afterCallback
99
+ if (payload.redirect) {
100
+ window.location.href = payload.redirect;
101
+ return false;
102
+ }
103
+
79
104
  // if there is no redirect, we will enable buttons
80
- if (!payload.redirect && settings.nette && settings.nette.form && settings.nette.form.attr('data-adt-submit-form') !== undefined) {
105
+ if (settings.nette && settings.nette.form && settings.nette.form.attr('data-adt-submit-form') !== undefined) {
81
106
  settings.nette.el.html(settings.nette.el.data('originalContent'));
82
107
  settings.nette.form.data('enabledButtons').each(function () {
83
108
  $(this).prop('disabled', false);