foundation-rails 6.4.1.0 → 6.4.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 +4 -4
- data/.gitignore +2 -1
- data/Rakefile +5 -6
- data/lib/foundation/rails/version.rb +1 -1
- data/vendor/assets/js/foundation.abide.js +781 -0
- data/vendor/assets/js/foundation.accordion.js +511 -0
- data/vendor/assets/js/foundation.accordionMenu.js +527 -0
- data/vendor/assets/js/foundation.core.js +860 -0
- data/vendor/assets/js/foundation.drilldown.js +759 -0
- data/vendor/assets/js/foundation.dropdown.js +1131 -0
- data/vendor/assets/js/foundation.dropdownMenu.js +678 -0
- data/vendor/assets/js/foundation.equalizer.js +542 -0
- data/vendor/assets/js/foundation.interchange.js +399 -0
- data/vendor/assets/js/{foundation.js.es6 → foundation.js} +11 -12
- data/vendor/assets/js/foundation.magellan.js +449 -0
- data/vendor/assets/js/foundation.offcanvas.js +1052 -0
- data/vendor/assets/js/foundation.orbit.js +767 -0
- data/vendor/assets/js/foundation.responsiveAccordionTabs.js +440 -0
- data/vendor/assets/js/foundation.responsiveMenu.js +362 -0
- data/vendor/assets/js/foundation.responsiveToggle.js +336 -0
- data/vendor/assets/js/foundation.reveal.js +1066 -0
- data/vendor/assets/js/foundation.slider.js +1236 -0
- data/vendor/assets/js/foundation.smoothScroll.js +303 -0
- data/vendor/assets/js/foundation.sticky.js +1001 -0
- data/vendor/assets/js/foundation.tabs.js +678 -0
- data/vendor/assets/js/foundation.toggler.js +602 -0
- data/vendor/assets/js/foundation.tooltip.js +1195 -0
- data/vendor/assets/js/{foundation.util.box.js.es6 → foundation.util.box.js} +154 -41
- data/vendor/assets/js/foundation.util.imageLoader.js +163 -0
- data/vendor/assets/js/foundation.util.keyboard.js +298 -0
- data/vendor/assets/js/foundation.util.mediaQuery.js +353 -0
- data/vendor/assets/js/foundation.util.motion.js +231 -0
- data/vendor/assets/js/foundation.util.nest.js +181 -0
- data/vendor/assets/js/foundation.util.timer.js +170 -0
- data/vendor/assets/js/foundation.util.timerAndImageLoader.js +90 -0
- data/vendor/assets/js/foundation.util.touch.js +275 -0
- data/vendor/assets/js/foundation.util.triggers.js +399 -0
- data/vendor/assets/js/foundation.zf.responsiveAccordionTabs.js +262 -0
- metadata +37 -71
- data/vendor/assets/js/entries/foundation-plugins.js +0 -25
- data/vendor/assets/js/entries/foundation.js +0 -101
- data/vendor/assets/js/entries/plugins/foundation.abide.js +0 -4
- data/vendor/assets/js/entries/plugins/foundation.accordion.js +0 -4
- data/vendor/assets/js/entries/plugins/foundation.accordionMenu.js +0 -5
- data/vendor/assets/js/entries/plugins/foundation.core.js +0 -21
- data/vendor/assets/js/entries/plugins/foundation.drilldown.js +0 -4
- data/vendor/assets/js/entries/plugins/foundation.dropdown.js +0 -5
- data/vendor/assets/js/entries/plugins/foundation.dropdownMenu.js +0 -4
- data/vendor/assets/js/entries/plugins/foundation.equalizer.js +0 -4
- data/vendor/assets/js/entries/plugins/foundation.interchange.js +0 -4
- data/vendor/assets/js/entries/plugins/foundation.magellan.js +0 -4
- data/vendor/assets/js/entries/plugins/foundation.offcanvas.js +0 -4
- data/vendor/assets/js/entries/plugins/foundation.orbit.js +0 -5
- data/vendor/assets/js/entries/plugins/foundation.responsiveAccordionTabs.js +0 -5
- data/vendor/assets/js/entries/plugins/foundation.responsiveMenu.js +0 -5
- data/vendor/assets/js/entries/plugins/foundation.responsiveToggle.js +0 -5
- data/vendor/assets/js/entries/plugins/foundation.reveal.js +0 -4
- data/vendor/assets/js/entries/plugins/foundation.slider.js +0 -5
- data/vendor/assets/js/entries/plugins/foundation.smoothScroll.js +0 -5
- data/vendor/assets/js/entries/plugins/foundation.sticky.js +0 -5
- data/vendor/assets/js/entries/plugins/foundation.tabs.js +0 -5
- data/vendor/assets/js/entries/plugins/foundation.toggler.js +0 -5
- data/vendor/assets/js/entries/plugins/foundation.tooltip.js +0 -4
- data/vendor/assets/js/entries/plugins/foundation.util.box.js +0 -4
- data/vendor/assets/js/entries/plugins/foundation.util.imageLoader.js +0 -5
- data/vendor/assets/js/entries/plugins/foundation.util.keyboard.js +0 -4
- data/vendor/assets/js/entries/plugins/foundation.util.mediaQuery.js +0 -4
- data/vendor/assets/js/entries/plugins/foundation.util.motion.js +0 -5
- data/vendor/assets/js/entries/plugins/foundation.util.nest.js +0 -5
- data/vendor/assets/js/entries/plugins/foundation.util.timer.js +0 -5
- data/vendor/assets/js/entries/plugins/foundation.util.touch.js +0 -7
- data/vendor/assets/js/entries/plugins/foundation.util.triggers.js +0 -5
- data/vendor/assets/js/foundation.abide.js.es6 +0 -587
- data/vendor/assets/js/foundation.accordion.js.es6 +0 -329
- data/vendor/assets/js/foundation.accordionMenu.js.es6 +0 -328
- data/vendor/assets/js/foundation.core.js.es6 +0 -337
- data/vendor/assets/js/foundation.drilldown.js.es6 +0 -536
- data/vendor/assets/js/foundation.dropdown.js.es6 +0 -394
- data/vendor/assets/js/foundation.dropdownMenu.js.es6 +0 -458
- data/vendor/assets/js/foundation.equalizer.js.es6 +0 -318
- data/vendor/assets/js/foundation.interchange.js.es6 +0 -210
- data/vendor/assets/js/foundation.magellan.js.es6 +0 -257
- data/vendor/assets/js/foundation.offcanvas.js.es6 +0 -546
- data/vendor/assets/js/foundation.orbit.js.es6 +0 -531
- data/vendor/assets/js/foundation.plugin.js.es6 +0 -54
- data/vendor/assets/js/foundation.positionable.js.es6 +0 -206
- data/vendor/assets/js/foundation.responsiveAccordionTabs.js.es6 +0 -243
- data/vendor/assets/js/foundation.responsiveMenu.js.es6 +0 -155
- data/vendor/assets/js/foundation.responsiveToggle.js.es6 +0 -156
- data/vendor/assets/js/foundation.reveal.js.es6 +0 -585
- data/vendor/assets/js/foundation.slider.js.es6 +0 -712
- data/vendor/assets/js/foundation.smoothScroll.js.es6 +0 -135
- data/vendor/assets/js/foundation.sticky.js.es6 +0 -507
- data/vendor/assets/js/foundation.tabs.js.es6 +0 -498
- data/vendor/assets/js/foundation.toggler.js.es6 +0 -150
- data/vendor/assets/js/foundation.tooltip.js.es6 +0 -462
- data/vendor/assets/js/foundation.util.core.js.es6 +0 -52
- data/vendor/assets/js/foundation.util.imageLoader.js.es6 +0 -45
- data/vendor/assets/js/foundation.util.keyboard.js.es6 +0 -162
- data/vendor/assets/js/foundation.util.mediaQuery.js.es6 +0 -234
- data/vendor/assets/js/foundation.util.motion.js.es6 +0 -104
- data/vendor/assets/js/foundation.util.nest.js.es6 +0 -67
- data/vendor/assets/js/foundation.util.timer.js.es6 +0 -48
- data/vendor/assets/js/foundation.util.touch.js.es6 +0 -149
- data/vendor/assets/js/foundation.util.triggers.js.es6 +0 -268
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: f38e8190ad81cddc9c9536417ae51d06e3b42f29
|
|
4
|
+
data.tar.gz: e14ace5fca793ecda3ed180f5372a36288ef7c32
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: db13a7141da47c7b7fd5ce32f95086ae7d56dbfc40b138ab948b80283355185e272195454c0134e08196f59b936bd292d5d7e49fb6f08c0a809774e99bd6dd2c
|
|
7
|
+
data.tar.gz: fc63247c5a7c776e7071f42d11715c53f35237c682b7c0d521a30568482ee16848c294204913983f87ab5622ed2a0ffd038364a5739fe9d7c0419d7c7cb2dcab
|
data/.gitignore
CHANGED
data/Rakefile
CHANGED
|
@@ -11,7 +11,8 @@ namespace :assets do
|
|
|
11
11
|
desc 'Update Foundation for Sites assets'
|
|
12
12
|
task update: :clean do
|
|
13
13
|
sh 'bower install'
|
|
14
|
-
sh 'cp -R bower_components/foundation-sites/js/* vendor/assets/js/'
|
|
14
|
+
sh 'cp -R bower_components/foundation-sites/dist/js/plugins/* vendor/assets/js/'
|
|
15
|
+
sh 'rm -f vendor/assets/js/*.min.*'
|
|
15
16
|
sh 'cp -R bower_components/foundation-sites/scss/* vendor/assets/scss/'
|
|
16
17
|
sh 'cp -R bower_components/foundation-sites/scss/settings/_settings.scss lib/generators/foundation/templates'
|
|
17
18
|
sh 'cp -R bower_components/motion-ui/src/* vendor/assets/scss/motion-ui'
|
|
@@ -20,14 +21,12 @@ namespace :assets do
|
|
|
20
21
|
|
|
21
22
|
js_files = Dir['vendor/assets/js/*.js'].sort
|
|
22
23
|
# Move foundation.core.js to beginning of js_files
|
|
23
|
-
|
|
24
|
+
util_file_regex = /foundation\.util*/
|
|
25
|
+
js_files = js_files.find_all { |file| file =~ util_file_regex } + js_files.reject { |file| file =~ util_file_regex }
|
|
26
|
+
js_files.insert(0, js_files.delete(js_files.find { |file| file =~ /foundation\.core\.js/ }))
|
|
24
27
|
manifest = js_files.map { |file| "//= require #{File.basename(file)}" }.join("\n")
|
|
25
28
|
File.write('vendor/assets/js/foundation.js', manifest)
|
|
26
29
|
|
|
27
|
-
Dir['vendor/assets/js/*.js'].each do |file|
|
|
28
|
-
sh "mv #{file} #{file}.es6"
|
|
29
|
-
end
|
|
30
|
-
|
|
31
30
|
puts "\n*********************\n** ASSETS UPDATED! **\n*********************\n"
|
|
32
31
|
end
|
|
33
32
|
|
|
@@ -0,0 +1,781 @@
|
|
|
1
|
+
/******/ (function(modules) { // webpackBootstrap
|
|
2
|
+
/******/ // The module cache
|
|
3
|
+
/******/ var installedModules = {};
|
|
4
|
+
/******/
|
|
5
|
+
/******/ // The require function
|
|
6
|
+
/******/ function __webpack_require__(moduleId) {
|
|
7
|
+
/******/
|
|
8
|
+
/******/ // Check if module is in cache
|
|
9
|
+
/******/ if(installedModules[moduleId]) {
|
|
10
|
+
/******/ return installedModules[moduleId].exports;
|
|
11
|
+
/******/ }
|
|
12
|
+
/******/ // Create a new module (and put it into the cache)
|
|
13
|
+
/******/ var module = installedModules[moduleId] = {
|
|
14
|
+
/******/ i: moduleId,
|
|
15
|
+
/******/ l: false,
|
|
16
|
+
/******/ exports: {}
|
|
17
|
+
/******/ };
|
|
18
|
+
/******/
|
|
19
|
+
/******/ // Execute the module function
|
|
20
|
+
/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
|
|
21
|
+
/******/
|
|
22
|
+
/******/ // Flag the module as loaded
|
|
23
|
+
/******/ module.l = true;
|
|
24
|
+
/******/
|
|
25
|
+
/******/ // Return the exports of the module
|
|
26
|
+
/******/ return module.exports;
|
|
27
|
+
/******/ }
|
|
28
|
+
/******/
|
|
29
|
+
/******/
|
|
30
|
+
/******/ // expose the modules object (__webpack_modules__)
|
|
31
|
+
/******/ __webpack_require__.m = modules;
|
|
32
|
+
/******/
|
|
33
|
+
/******/ // expose the module cache
|
|
34
|
+
/******/ __webpack_require__.c = installedModules;
|
|
35
|
+
/******/
|
|
36
|
+
/******/ // identity function for calling harmony imports with the correct context
|
|
37
|
+
/******/ __webpack_require__.i = function(value) { return value; };
|
|
38
|
+
/******/
|
|
39
|
+
/******/ // define getter function for harmony exports
|
|
40
|
+
/******/ __webpack_require__.d = function(exports, name, getter) {
|
|
41
|
+
/******/ if(!__webpack_require__.o(exports, name)) {
|
|
42
|
+
/******/ Object.defineProperty(exports, name, {
|
|
43
|
+
/******/ configurable: false,
|
|
44
|
+
/******/ enumerable: true,
|
|
45
|
+
/******/ get: getter
|
|
46
|
+
/******/ });
|
|
47
|
+
/******/ }
|
|
48
|
+
/******/ };
|
|
49
|
+
/******/
|
|
50
|
+
/******/ // getDefaultExport function for compatibility with non-harmony modules
|
|
51
|
+
/******/ __webpack_require__.n = function(module) {
|
|
52
|
+
/******/ var getter = module && module.__esModule ?
|
|
53
|
+
/******/ function getDefault() { return module['default']; } :
|
|
54
|
+
/******/ function getModuleExports() { return module; };
|
|
55
|
+
/******/ __webpack_require__.d(getter, 'a', getter);
|
|
56
|
+
/******/ return getter;
|
|
57
|
+
/******/ };
|
|
58
|
+
/******/
|
|
59
|
+
/******/ // Object.prototype.hasOwnProperty.call
|
|
60
|
+
/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
|
|
61
|
+
/******/
|
|
62
|
+
/******/ // __webpack_public_path__
|
|
63
|
+
/******/ __webpack_require__.p = "";
|
|
64
|
+
/******/
|
|
65
|
+
/******/ // Load entry module and return exports
|
|
66
|
+
/******/ return __webpack_require__(__webpack_require__.s = 79);
|
|
67
|
+
/******/ })
|
|
68
|
+
/************************************************************************/
|
|
69
|
+
/******/ ({
|
|
70
|
+
|
|
71
|
+
/***/ 0:
|
|
72
|
+
/***/ (function(module, exports) {
|
|
73
|
+
|
|
74
|
+
module.exports = jQuery;
|
|
75
|
+
|
|
76
|
+
/***/ }),
|
|
77
|
+
|
|
78
|
+
/***/ 1:
|
|
79
|
+
/***/ (function(module, exports) {
|
|
80
|
+
|
|
81
|
+
module.exports = {Foundation: window.Foundation};
|
|
82
|
+
|
|
83
|
+
/***/ }),
|
|
84
|
+
|
|
85
|
+
/***/ 13:
|
|
86
|
+
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
87
|
+
|
|
88
|
+
"use strict";
|
|
89
|
+
Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
|
|
90
|
+
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__foundation_core__ = __webpack_require__(1);
|
|
91
|
+
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__foundation_core___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0__foundation_core__);
|
|
92
|
+
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__foundation_abide__ = __webpack_require__(43);
|
|
93
|
+
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
__WEBPACK_IMPORTED_MODULE_0__foundation_core__["Foundation"].plugin(__WEBPACK_IMPORTED_MODULE_1__foundation_abide__["a" /* Abide */], 'Abide');
|
|
97
|
+
|
|
98
|
+
/***/ }),
|
|
99
|
+
|
|
100
|
+
/***/ 2:
|
|
101
|
+
/***/ (function(module, exports) {
|
|
102
|
+
|
|
103
|
+
module.exports = {Plugin: window.Foundation.Plugin};
|
|
104
|
+
|
|
105
|
+
/***/ }),
|
|
106
|
+
|
|
107
|
+
/***/ 43:
|
|
108
|
+
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
109
|
+
|
|
110
|
+
"use strict";
|
|
111
|
+
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return Abide; });
|
|
112
|
+
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_jquery__ = __webpack_require__(0);
|
|
113
|
+
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_jquery___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_jquery__);
|
|
114
|
+
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__foundation_plugin__ = __webpack_require__(2);
|
|
115
|
+
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__foundation_plugin___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1__foundation_plugin__);
|
|
116
|
+
|
|
117
|
+
|
|
118
|
+
var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
|
|
119
|
+
|
|
120
|
+
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
121
|
+
|
|
122
|
+
function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
|
|
123
|
+
|
|
124
|
+
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
|
|
125
|
+
|
|
126
|
+
|
|
127
|
+
|
|
128
|
+
|
|
129
|
+
/**
|
|
130
|
+
* Abide module.
|
|
131
|
+
* @module foundation.abide
|
|
132
|
+
*/
|
|
133
|
+
|
|
134
|
+
var Abide = function (_Plugin) {
|
|
135
|
+
_inherits(Abide, _Plugin);
|
|
136
|
+
|
|
137
|
+
function Abide() {
|
|
138
|
+
_classCallCheck(this, Abide);
|
|
139
|
+
|
|
140
|
+
return _possibleConstructorReturn(this, (Abide.__proto__ || Object.getPrototypeOf(Abide)).apply(this, arguments));
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
_createClass(Abide, [{
|
|
144
|
+
key: '_setup',
|
|
145
|
+
|
|
146
|
+
/**
|
|
147
|
+
* Creates a new instance of Abide.
|
|
148
|
+
* @class
|
|
149
|
+
* @name Abide
|
|
150
|
+
* @fires Abide#init
|
|
151
|
+
* @param {Object} element - jQuery object to add the trigger to.
|
|
152
|
+
* @param {Object} options - Overrides to the default plugin settings.
|
|
153
|
+
*/
|
|
154
|
+
value: function _setup(element) {
|
|
155
|
+
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
156
|
+
|
|
157
|
+
this.$element = element;
|
|
158
|
+
this.options = __WEBPACK_IMPORTED_MODULE_0_jquery___default.a.extend({}, Abide.defaults, this.$element.data(), options);
|
|
159
|
+
|
|
160
|
+
this.className = 'Abide'; // ie9 back compat
|
|
161
|
+
this._init();
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
/**
|
|
165
|
+
* Initializes the Abide plugin and calls functions to get Abide functioning on load.
|
|
166
|
+
* @private
|
|
167
|
+
*/
|
|
168
|
+
|
|
169
|
+
}, {
|
|
170
|
+
key: '_init',
|
|
171
|
+
value: function _init() {
|
|
172
|
+
this.$inputs = this.$element.find('input, textarea, select');
|
|
173
|
+
|
|
174
|
+
this._events();
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
/**
|
|
178
|
+
* Initializes events for Abide.
|
|
179
|
+
* @private
|
|
180
|
+
*/
|
|
181
|
+
|
|
182
|
+
}, {
|
|
183
|
+
key: '_events',
|
|
184
|
+
value: function _events() {
|
|
185
|
+
var _this3 = this;
|
|
186
|
+
|
|
187
|
+
this.$element.off('.abide').on('reset.zf.abide', function () {
|
|
188
|
+
_this3.resetForm();
|
|
189
|
+
}).on('submit.zf.abide', function () {
|
|
190
|
+
return _this3.validateForm();
|
|
191
|
+
});
|
|
192
|
+
|
|
193
|
+
if (this.options.validateOn === 'fieldChange') {
|
|
194
|
+
this.$inputs.off('change.zf.abide').on('change.zf.abide', function (e) {
|
|
195
|
+
_this3.validateInput(__WEBPACK_IMPORTED_MODULE_0_jquery___default()(e.target));
|
|
196
|
+
});
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
if (this.options.liveValidate) {
|
|
200
|
+
this.$inputs.off('input.zf.abide').on('input.zf.abide', function (e) {
|
|
201
|
+
_this3.validateInput(__WEBPACK_IMPORTED_MODULE_0_jquery___default()(e.target));
|
|
202
|
+
});
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
if (this.options.validateOnBlur) {
|
|
206
|
+
this.$inputs.off('blur.zf.abide').on('blur.zf.abide', function (e) {
|
|
207
|
+
_this3.validateInput(__WEBPACK_IMPORTED_MODULE_0_jquery___default()(e.target));
|
|
208
|
+
});
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
/**
|
|
213
|
+
* Calls necessary functions to update Abide upon DOM change
|
|
214
|
+
* @private
|
|
215
|
+
*/
|
|
216
|
+
|
|
217
|
+
}, {
|
|
218
|
+
key: '_reflow',
|
|
219
|
+
value: function _reflow() {
|
|
220
|
+
this._init();
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
/**
|
|
224
|
+
* Checks whether or not a form element has the required attribute and if it's checked or not
|
|
225
|
+
* @param {Object} element - jQuery object to check for required attribute
|
|
226
|
+
* @returns {Boolean} Boolean value depends on whether or not attribute is checked or empty
|
|
227
|
+
*/
|
|
228
|
+
|
|
229
|
+
}, {
|
|
230
|
+
key: 'requiredCheck',
|
|
231
|
+
value: function requiredCheck($el) {
|
|
232
|
+
if (!$el.attr('required')) return true;
|
|
233
|
+
|
|
234
|
+
var isGood = true;
|
|
235
|
+
|
|
236
|
+
switch ($el[0].type) {
|
|
237
|
+
case 'checkbox':
|
|
238
|
+
isGood = $el[0].checked;
|
|
239
|
+
break;
|
|
240
|
+
|
|
241
|
+
case 'select':
|
|
242
|
+
case 'select-one':
|
|
243
|
+
case 'select-multiple':
|
|
244
|
+
var opt = $el.find('option:selected');
|
|
245
|
+
if (!opt.length || !opt.val()) isGood = false;
|
|
246
|
+
break;
|
|
247
|
+
|
|
248
|
+
default:
|
|
249
|
+
if (!$el.val() || !$el.val().length) isGood = false;
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
return isGood;
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
/**
|
|
256
|
+
* Get:
|
|
257
|
+
* - Based on $el, the first element(s) corresponding to `formErrorSelector` in this order:
|
|
258
|
+
* 1. The element's direct sibling('s).
|
|
259
|
+
* 2. The element's parent's children.
|
|
260
|
+
* - Element(s) with the attribute `[data-form-error-for]` set with the element's id.
|
|
261
|
+
*
|
|
262
|
+
* This allows for multiple form errors per input, though if none are found, no form errors will be shown.
|
|
263
|
+
*
|
|
264
|
+
* @param {Object} $el - jQuery object to use as reference to find the form error selector.
|
|
265
|
+
* @returns {Object} jQuery object with the selector.
|
|
266
|
+
*/
|
|
267
|
+
|
|
268
|
+
}, {
|
|
269
|
+
key: 'findFormError',
|
|
270
|
+
value: function findFormError($el) {
|
|
271
|
+
var id = $el[0].id;
|
|
272
|
+
var $error = $el.siblings(this.options.formErrorSelector);
|
|
273
|
+
|
|
274
|
+
if (!$error.length) {
|
|
275
|
+
$error = $el.parent().find(this.options.formErrorSelector);
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
$error = $error.add(this.$element.find('[data-form-error-for="' + id + '"]'));
|
|
279
|
+
|
|
280
|
+
return $error;
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
/**
|
|
284
|
+
* Get the first element in this order:
|
|
285
|
+
* 2. The <label> with the attribute `[for="someInputId"]`
|
|
286
|
+
* 3. The `.closest()` <label>
|
|
287
|
+
*
|
|
288
|
+
* @param {Object} $el - jQuery object to check for required attribute
|
|
289
|
+
* @returns {Boolean} Boolean value depends on whether or not attribute is checked or empty
|
|
290
|
+
*/
|
|
291
|
+
|
|
292
|
+
}, {
|
|
293
|
+
key: 'findLabel',
|
|
294
|
+
value: function findLabel($el) {
|
|
295
|
+
var id = $el[0].id;
|
|
296
|
+
var $label = this.$element.find('label[for="' + id + '"]');
|
|
297
|
+
|
|
298
|
+
if (!$label.length) {
|
|
299
|
+
return $el.closest('label');
|
|
300
|
+
}
|
|
301
|
+
|
|
302
|
+
return $label;
|
|
303
|
+
}
|
|
304
|
+
|
|
305
|
+
/**
|
|
306
|
+
* Get the set of labels associated with a set of radio els in this order
|
|
307
|
+
* 2. The <label> with the attribute `[for="someInputId"]`
|
|
308
|
+
* 3. The `.closest()` <label>
|
|
309
|
+
*
|
|
310
|
+
* @param {Object} $el - jQuery object to check for required attribute
|
|
311
|
+
* @returns {Boolean} Boolean value depends on whether or not attribute is checked or empty
|
|
312
|
+
*/
|
|
313
|
+
|
|
314
|
+
}, {
|
|
315
|
+
key: 'findRadioLabels',
|
|
316
|
+
value: function findRadioLabels($els) {
|
|
317
|
+
var _this4 = this;
|
|
318
|
+
|
|
319
|
+
var labels = $els.map(function (i, el) {
|
|
320
|
+
var id = el.id;
|
|
321
|
+
var $label = _this4.$element.find('label[for="' + id + '"]');
|
|
322
|
+
|
|
323
|
+
if (!$label.length) {
|
|
324
|
+
$label = __WEBPACK_IMPORTED_MODULE_0_jquery___default()(el).closest('label');
|
|
325
|
+
}
|
|
326
|
+
return $label[0];
|
|
327
|
+
});
|
|
328
|
+
|
|
329
|
+
return __WEBPACK_IMPORTED_MODULE_0_jquery___default()(labels);
|
|
330
|
+
}
|
|
331
|
+
|
|
332
|
+
/**
|
|
333
|
+
* Adds the CSS error class as specified by the Abide settings to the label, input, and the form
|
|
334
|
+
* @param {Object} $el - jQuery object to add the class to
|
|
335
|
+
*/
|
|
336
|
+
|
|
337
|
+
}, {
|
|
338
|
+
key: 'addErrorClasses',
|
|
339
|
+
value: function addErrorClasses($el) {
|
|
340
|
+
var $label = this.findLabel($el);
|
|
341
|
+
var $formError = this.findFormError($el);
|
|
342
|
+
|
|
343
|
+
if ($label.length) {
|
|
344
|
+
$label.addClass(this.options.labelErrorClass);
|
|
345
|
+
}
|
|
346
|
+
|
|
347
|
+
if ($formError.length) {
|
|
348
|
+
$formError.addClass(this.options.formErrorClass);
|
|
349
|
+
}
|
|
350
|
+
|
|
351
|
+
$el.addClass(this.options.inputErrorClass).attr('data-invalid', '');
|
|
352
|
+
}
|
|
353
|
+
|
|
354
|
+
/**
|
|
355
|
+
* Remove CSS error classes etc from an entire radio button group
|
|
356
|
+
* @param {String} groupName - A string that specifies the name of a radio button group
|
|
357
|
+
*
|
|
358
|
+
*/
|
|
359
|
+
|
|
360
|
+
}, {
|
|
361
|
+
key: 'removeRadioErrorClasses',
|
|
362
|
+
value: function removeRadioErrorClasses(groupName) {
|
|
363
|
+
var $els = this.$element.find(':radio[name="' + groupName + '"]');
|
|
364
|
+
var $labels = this.findRadioLabels($els);
|
|
365
|
+
var $formErrors = this.findFormError($els);
|
|
366
|
+
|
|
367
|
+
if ($labels.length) {
|
|
368
|
+
$labels.removeClass(this.options.labelErrorClass);
|
|
369
|
+
}
|
|
370
|
+
|
|
371
|
+
if ($formErrors.length) {
|
|
372
|
+
$formErrors.removeClass(this.options.formErrorClass);
|
|
373
|
+
}
|
|
374
|
+
|
|
375
|
+
$els.removeClass(this.options.inputErrorClass).removeAttr('data-invalid');
|
|
376
|
+
}
|
|
377
|
+
|
|
378
|
+
/**
|
|
379
|
+
* Removes CSS error class as specified by the Abide settings from the label, input, and the form
|
|
380
|
+
* @param {Object} $el - jQuery object to remove the class from
|
|
381
|
+
*/
|
|
382
|
+
|
|
383
|
+
}, {
|
|
384
|
+
key: 'removeErrorClasses',
|
|
385
|
+
value: function removeErrorClasses($el) {
|
|
386
|
+
// radios need to clear all of the els
|
|
387
|
+
if ($el[0].type == 'radio') {
|
|
388
|
+
return this.removeRadioErrorClasses($el.attr('name'));
|
|
389
|
+
}
|
|
390
|
+
|
|
391
|
+
var $label = this.findLabel($el);
|
|
392
|
+
var $formError = this.findFormError($el);
|
|
393
|
+
|
|
394
|
+
if ($label.length) {
|
|
395
|
+
$label.removeClass(this.options.labelErrorClass);
|
|
396
|
+
}
|
|
397
|
+
|
|
398
|
+
if ($formError.length) {
|
|
399
|
+
$formError.removeClass(this.options.formErrorClass);
|
|
400
|
+
}
|
|
401
|
+
|
|
402
|
+
$el.removeClass(this.options.inputErrorClass).removeAttr('data-invalid');
|
|
403
|
+
}
|
|
404
|
+
|
|
405
|
+
/**
|
|
406
|
+
* Goes through a form to find inputs and proceeds to validate them in ways specific to their type.
|
|
407
|
+
* Ignores inputs with data-abide-ignore, type="hidden" or disabled attributes set
|
|
408
|
+
* @fires Abide#invalid
|
|
409
|
+
* @fires Abide#valid
|
|
410
|
+
* @param {Object} element - jQuery object to validate, should be an HTML input
|
|
411
|
+
* @returns {Boolean} goodToGo - If the input is valid or not.
|
|
412
|
+
*/
|
|
413
|
+
|
|
414
|
+
}, {
|
|
415
|
+
key: 'validateInput',
|
|
416
|
+
value: function validateInput($el) {
|
|
417
|
+
var clearRequire = this.requiredCheck($el),
|
|
418
|
+
validated = false,
|
|
419
|
+
customValidator = true,
|
|
420
|
+
validator = $el.attr('data-validator'),
|
|
421
|
+
equalTo = true;
|
|
422
|
+
|
|
423
|
+
// don't validate ignored inputs or hidden inputs or disabled inputs
|
|
424
|
+
if ($el.is('[data-abide-ignore]') || $el.is('[type="hidden"]') || $el.is('[disabled]')) {
|
|
425
|
+
return true;
|
|
426
|
+
}
|
|
427
|
+
|
|
428
|
+
switch ($el[0].type) {
|
|
429
|
+
case 'radio':
|
|
430
|
+
validated = this.validateRadio($el.attr('name'));
|
|
431
|
+
break;
|
|
432
|
+
|
|
433
|
+
case 'checkbox':
|
|
434
|
+
validated = clearRequire;
|
|
435
|
+
break;
|
|
436
|
+
|
|
437
|
+
case 'select':
|
|
438
|
+
case 'select-one':
|
|
439
|
+
case 'select-multiple':
|
|
440
|
+
validated = clearRequire;
|
|
441
|
+
break;
|
|
442
|
+
|
|
443
|
+
default:
|
|
444
|
+
validated = this.validateText($el);
|
|
445
|
+
}
|
|
446
|
+
|
|
447
|
+
if (validator) {
|
|
448
|
+
customValidator = this.matchValidation($el, validator, $el.attr('required'));
|
|
449
|
+
}
|
|
450
|
+
|
|
451
|
+
if ($el.attr('data-equalto')) {
|
|
452
|
+
equalTo = this.options.validators.equalTo($el);
|
|
453
|
+
}
|
|
454
|
+
|
|
455
|
+
var goodToGo = [clearRequire, validated, customValidator, equalTo].indexOf(false) === -1;
|
|
456
|
+
var message = (goodToGo ? 'valid' : 'invalid') + '.zf.abide';
|
|
457
|
+
|
|
458
|
+
if (goodToGo) {
|
|
459
|
+
// Re-validate inputs that depend on this one with equalto
|
|
460
|
+
var dependentElements = this.$element.find('[data-equalto="' + $el.attr('id') + '"]');
|
|
461
|
+
if (dependentElements.length) {
|
|
462
|
+
var _this = this;
|
|
463
|
+
dependentElements.each(function () {
|
|
464
|
+
if (__WEBPACK_IMPORTED_MODULE_0_jquery___default()(this).val()) {
|
|
465
|
+
_this.validateInput(__WEBPACK_IMPORTED_MODULE_0_jquery___default()(this));
|
|
466
|
+
}
|
|
467
|
+
});
|
|
468
|
+
}
|
|
469
|
+
}
|
|
470
|
+
|
|
471
|
+
this[goodToGo ? 'removeErrorClasses' : 'addErrorClasses']($el);
|
|
472
|
+
|
|
473
|
+
/**
|
|
474
|
+
* Fires when the input is done checking for validation. Event trigger is either `valid.zf.abide` or `invalid.zf.abide`
|
|
475
|
+
* Trigger includes the DOM element of the input.
|
|
476
|
+
* @event Abide#valid
|
|
477
|
+
* @event Abide#invalid
|
|
478
|
+
*/
|
|
479
|
+
$el.trigger(message, [$el]);
|
|
480
|
+
|
|
481
|
+
return goodToGo;
|
|
482
|
+
}
|
|
483
|
+
|
|
484
|
+
/**
|
|
485
|
+
* Goes through a form and if there are any invalid inputs, it will display the form error element
|
|
486
|
+
* @returns {Boolean} noError - true if no errors were detected...
|
|
487
|
+
* @fires Abide#formvalid
|
|
488
|
+
* @fires Abide#forminvalid
|
|
489
|
+
*/
|
|
490
|
+
|
|
491
|
+
}, {
|
|
492
|
+
key: 'validateForm',
|
|
493
|
+
value: function validateForm() {
|
|
494
|
+
var acc = [];
|
|
495
|
+
var _this = this;
|
|
496
|
+
|
|
497
|
+
this.$inputs.each(function () {
|
|
498
|
+
acc.push(_this.validateInput(__WEBPACK_IMPORTED_MODULE_0_jquery___default()(this)));
|
|
499
|
+
});
|
|
500
|
+
|
|
501
|
+
var noError = acc.indexOf(false) === -1;
|
|
502
|
+
|
|
503
|
+
this.$element.find('[data-abide-error]').css('display', noError ? 'none' : 'block');
|
|
504
|
+
|
|
505
|
+
/**
|
|
506
|
+
* Fires when the form is finished validating. Event trigger is either `formvalid.zf.abide` or `forminvalid.zf.abide`.
|
|
507
|
+
* Trigger includes the element of the form.
|
|
508
|
+
* @event Abide#formvalid
|
|
509
|
+
* @event Abide#forminvalid
|
|
510
|
+
*/
|
|
511
|
+
this.$element.trigger((noError ? 'formvalid' : 'forminvalid') + '.zf.abide', [this.$element]);
|
|
512
|
+
|
|
513
|
+
return noError;
|
|
514
|
+
}
|
|
515
|
+
|
|
516
|
+
/**
|
|
517
|
+
* Determines whether or a not a text input is valid based on the pattern specified in the attribute. If no matching pattern is found, returns true.
|
|
518
|
+
* @param {Object} $el - jQuery object to validate, should be a text input HTML element
|
|
519
|
+
* @param {String} pattern - string value of one of the RegEx patterns in Abide.options.patterns
|
|
520
|
+
* @returns {Boolean} Boolean value depends on whether or not the input value matches the pattern specified
|
|
521
|
+
*/
|
|
522
|
+
|
|
523
|
+
}, {
|
|
524
|
+
key: 'validateText',
|
|
525
|
+
value: function validateText($el, pattern) {
|
|
526
|
+
// A pattern can be passed to this function, or it will be infered from the input's "pattern" attribute, or it's "type" attribute
|
|
527
|
+
pattern = pattern || $el.attr('pattern') || $el.attr('type');
|
|
528
|
+
var inputText = $el.val();
|
|
529
|
+
var valid = false;
|
|
530
|
+
|
|
531
|
+
if (inputText.length) {
|
|
532
|
+
// If the pattern attribute on the element is in Abide's list of patterns, then test that regexp
|
|
533
|
+
if (this.options.patterns.hasOwnProperty(pattern)) {
|
|
534
|
+
valid = this.options.patterns[pattern].test(inputText);
|
|
535
|
+
}
|
|
536
|
+
// If the pattern name isn't also the type attribute of the field, then test it as a regexp
|
|
537
|
+
else if (pattern !== $el.attr('type')) {
|
|
538
|
+
valid = new RegExp(pattern).test(inputText);
|
|
539
|
+
} else {
|
|
540
|
+
valid = true;
|
|
541
|
+
}
|
|
542
|
+
}
|
|
543
|
+
// An empty field is valid if it's not required
|
|
544
|
+
else if (!$el.prop('required')) {
|
|
545
|
+
valid = true;
|
|
546
|
+
}
|
|
547
|
+
|
|
548
|
+
return valid;
|
|
549
|
+
}
|
|
550
|
+
|
|
551
|
+
/**
|
|
552
|
+
* Determines whether or a not a radio input is valid based on whether or not it is required and selected. Although the function targets a single `<input>`, it validates by checking the `required` and `checked` properties of all radio buttons in its group.
|
|
553
|
+
* @param {String} groupName - A string that specifies the name of a radio button group
|
|
554
|
+
* @returns {Boolean} Boolean value depends on whether or not at least one radio input has been selected (if it's required)
|
|
555
|
+
*/
|
|
556
|
+
|
|
557
|
+
}, {
|
|
558
|
+
key: 'validateRadio',
|
|
559
|
+
value: function validateRadio(groupName) {
|
|
560
|
+
// If at least one radio in the group has the `required` attribute, the group is considered required
|
|
561
|
+
// Per W3C spec, all radio buttons in a group should have `required`, but we're being nice
|
|
562
|
+
var $group = this.$element.find(':radio[name="' + groupName + '"]');
|
|
563
|
+
var valid = false,
|
|
564
|
+
required = false;
|
|
565
|
+
|
|
566
|
+
// For the group to be required, at least one radio needs to be required
|
|
567
|
+
$group.each(function (i, e) {
|
|
568
|
+
if (__WEBPACK_IMPORTED_MODULE_0_jquery___default()(e).attr('required')) {
|
|
569
|
+
required = true;
|
|
570
|
+
}
|
|
571
|
+
});
|
|
572
|
+
if (!required) valid = true;
|
|
573
|
+
|
|
574
|
+
if (!valid) {
|
|
575
|
+
// For the group to be valid, at least one radio needs to be checked
|
|
576
|
+
$group.each(function (i, e) {
|
|
577
|
+
if (__WEBPACK_IMPORTED_MODULE_0_jquery___default()(e).prop('checked')) {
|
|
578
|
+
valid = true;
|
|
579
|
+
}
|
|
580
|
+
});
|
|
581
|
+
};
|
|
582
|
+
|
|
583
|
+
return valid;
|
|
584
|
+
}
|
|
585
|
+
|
|
586
|
+
/**
|
|
587
|
+
* Determines if a selected input passes a custom validation function. Multiple validations can be used, if passed to the element with `data-validator="foo bar baz"` in a space separated listed.
|
|
588
|
+
* @param {Object} $el - jQuery input element.
|
|
589
|
+
* @param {String} validators - a string of function names matching functions in the Abide.options.validators object.
|
|
590
|
+
* @param {Boolean} required - self explanatory?
|
|
591
|
+
* @returns {Boolean} - true if validations passed.
|
|
592
|
+
*/
|
|
593
|
+
|
|
594
|
+
}, {
|
|
595
|
+
key: 'matchValidation',
|
|
596
|
+
value: function matchValidation($el, validators, required) {
|
|
597
|
+
var _this5 = this;
|
|
598
|
+
|
|
599
|
+
required = required ? true : false;
|
|
600
|
+
|
|
601
|
+
var clear = validators.split(' ').map(function (v) {
|
|
602
|
+
return _this5.options.validators[v]($el, required, $el.parent());
|
|
603
|
+
});
|
|
604
|
+
return clear.indexOf(false) === -1;
|
|
605
|
+
}
|
|
606
|
+
|
|
607
|
+
/**
|
|
608
|
+
* Resets form inputs and styles
|
|
609
|
+
* @fires Abide#formreset
|
|
610
|
+
*/
|
|
611
|
+
|
|
612
|
+
}, {
|
|
613
|
+
key: 'resetForm',
|
|
614
|
+
value: function resetForm() {
|
|
615
|
+
var $form = this.$element,
|
|
616
|
+
opts = this.options;
|
|
617
|
+
|
|
618
|
+
__WEBPACK_IMPORTED_MODULE_0_jquery___default()('.' + opts.labelErrorClass, $form).not('small').removeClass(opts.labelErrorClass);
|
|
619
|
+
__WEBPACK_IMPORTED_MODULE_0_jquery___default()('.' + opts.inputErrorClass, $form).not('small').removeClass(opts.inputErrorClass);
|
|
620
|
+
__WEBPACK_IMPORTED_MODULE_0_jquery___default()(opts.formErrorSelector + '.' + opts.formErrorClass).removeClass(opts.formErrorClass);
|
|
621
|
+
$form.find('[data-abide-error]').css('display', 'none');
|
|
622
|
+
__WEBPACK_IMPORTED_MODULE_0_jquery___default()(':input', $form).not(':button, :submit, :reset, :hidden, :radio, :checkbox, [data-abide-ignore]').val('').removeAttr('data-invalid');
|
|
623
|
+
__WEBPACK_IMPORTED_MODULE_0_jquery___default()(':input:radio', $form).not('[data-abide-ignore]').prop('checked', false).removeAttr('data-invalid');
|
|
624
|
+
__WEBPACK_IMPORTED_MODULE_0_jquery___default()(':input:checkbox', $form).not('[data-abide-ignore]').prop('checked', false).removeAttr('data-invalid');
|
|
625
|
+
/**
|
|
626
|
+
* Fires when the form has been reset.
|
|
627
|
+
* @event Abide#formreset
|
|
628
|
+
*/
|
|
629
|
+
$form.trigger('formreset.zf.abide', [$form]);
|
|
630
|
+
}
|
|
631
|
+
|
|
632
|
+
/**
|
|
633
|
+
* Destroys an instance of Abide.
|
|
634
|
+
* Removes error styles and classes from elements, without resetting their values.
|
|
635
|
+
*/
|
|
636
|
+
|
|
637
|
+
}, {
|
|
638
|
+
key: '_destroy',
|
|
639
|
+
value: function _destroy() {
|
|
640
|
+
var _this = this;
|
|
641
|
+
this.$element.off('.abide').find('[data-abide-error]').css('display', 'none');
|
|
642
|
+
|
|
643
|
+
this.$inputs.off('.abide').each(function () {
|
|
644
|
+
_this.removeErrorClasses(__WEBPACK_IMPORTED_MODULE_0_jquery___default()(this));
|
|
645
|
+
});
|
|
646
|
+
}
|
|
647
|
+
}]);
|
|
648
|
+
|
|
649
|
+
return Abide;
|
|
650
|
+
}(__WEBPACK_IMPORTED_MODULE_1__foundation_plugin__["Plugin"]);
|
|
651
|
+
|
|
652
|
+
/**
|
|
653
|
+
* Default settings for plugin
|
|
654
|
+
*/
|
|
655
|
+
|
|
656
|
+
|
|
657
|
+
Abide.defaults = {
|
|
658
|
+
/**
|
|
659
|
+
* The default event to validate inputs. Checkboxes and radios validate immediately.
|
|
660
|
+
* Remove or change this value for manual validation.
|
|
661
|
+
* @option
|
|
662
|
+
* @type {?string}
|
|
663
|
+
* @default 'fieldChange'
|
|
664
|
+
*/
|
|
665
|
+
validateOn: 'fieldChange',
|
|
666
|
+
|
|
667
|
+
/**
|
|
668
|
+
* Class to be applied to input labels on failed validation.
|
|
669
|
+
* @option
|
|
670
|
+
* @type {string}
|
|
671
|
+
* @default 'is-invalid-label'
|
|
672
|
+
*/
|
|
673
|
+
labelErrorClass: 'is-invalid-label',
|
|
674
|
+
|
|
675
|
+
/**
|
|
676
|
+
* Class to be applied to inputs on failed validation.
|
|
677
|
+
* @option
|
|
678
|
+
* @type {string}
|
|
679
|
+
* @default 'is-invalid-input'
|
|
680
|
+
*/
|
|
681
|
+
inputErrorClass: 'is-invalid-input',
|
|
682
|
+
|
|
683
|
+
/**
|
|
684
|
+
* Class selector to use to target Form Errors for show/hide.
|
|
685
|
+
* @option
|
|
686
|
+
* @type {string}
|
|
687
|
+
* @default '.form-error'
|
|
688
|
+
*/
|
|
689
|
+
formErrorSelector: '.form-error',
|
|
690
|
+
|
|
691
|
+
/**
|
|
692
|
+
* Class added to Form Errors on failed validation.
|
|
693
|
+
* @option
|
|
694
|
+
* @type {string}
|
|
695
|
+
* @default 'is-visible'
|
|
696
|
+
*/
|
|
697
|
+
formErrorClass: 'is-visible',
|
|
698
|
+
|
|
699
|
+
/**
|
|
700
|
+
* Set to true to validate text inputs on any value change.
|
|
701
|
+
* @option
|
|
702
|
+
* @type {boolean}
|
|
703
|
+
* @default false
|
|
704
|
+
*/
|
|
705
|
+
liveValidate: false,
|
|
706
|
+
|
|
707
|
+
/**
|
|
708
|
+
* Set to true to validate inputs on blur.
|
|
709
|
+
* @option
|
|
710
|
+
* @type {boolean}
|
|
711
|
+
* @default false
|
|
712
|
+
*/
|
|
713
|
+
validateOnBlur: false,
|
|
714
|
+
|
|
715
|
+
patterns: {
|
|
716
|
+
alpha: /^[a-zA-Z]+$/,
|
|
717
|
+
alpha_numeric: /^[a-zA-Z0-9]+$/,
|
|
718
|
+
integer: /^[-+]?\d+$/,
|
|
719
|
+
number: /^[-+]?\d*(?:[\.\,]\d+)?$/,
|
|
720
|
+
|
|
721
|
+
// amex, visa, diners
|
|
722
|
+
card: /^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|(?:222[1-9]|2[3-6][0-9]{2}|27[0-1][0-9]|2720)[0-9]{12}|6(?:011|5[0-9][0-9])[0-9]{12}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|(?:2131|1800|35\d{3})\d{11})$/,
|
|
723
|
+
cvv: /^([0-9]){3,4}$/,
|
|
724
|
+
|
|
725
|
+
// http://www.whatwg.org/specs/web-apps/current-work/multipage/states-of-the-type-attribute.html#valid-e-mail-address
|
|
726
|
+
email: /^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+$/,
|
|
727
|
+
|
|
728
|
+
url: /^(https?|ftp|file|ssh):\/\/(((([a-zA-Z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-zA-Z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-zA-Z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-zA-Z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-zA-Z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-zA-Z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-zA-Z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-zA-Z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-zA-Z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-zA-Z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-zA-Z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-zA-Z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-zA-Z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/,
|
|
729
|
+
// abc.de
|
|
730
|
+
domain: /^([a-zA-Z0-9]([a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,8}$/,
|
|
731
|
+
|
|
732
|
+
datetime: /^([0-2][0-9]{3})\-([0-1][0-9])\-([0-3][0-9])T([0-5][0-9])\:([0-5][0-9])\:([0-5][0-9])(Z|([\-\+]([0-1][0-9])\:00))$/,
|
|
733
|
+
// YYYY-MM-DD
|
|
734
|
+
date: /(?:19|20)[0-9]{2}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-9])|(?:(?!02)(?:0[1-9]|1[0-2])-(?:30))|(?:(?:0[13578]|1[02])-31))$/,
|
|
735
|
+
// HH:MM:SS
|
|
736
|
+
time: /^(0[0-9]|1[0-9]|2[0-3])(:[0-5][0-9]){2}$/,
|
|
737
|
+
dateISO: /^\d{4}[\/\-]\d{1,2}[\/\-]\d{1,2}$/,
|
|
738
|
+
// MM/DD/YYYY
|
|
739
|
+
month_day_year: /^(0[1-9]|1[012])[- \/.](0[1-9]|[12][0-9]|3[01])[- \/.]\d{4}$/,
|
|
740
|
+
// DD/MM/YYYY
|
|
741
|
+
day_month_year: /^(0[1-9]|[12][0-9]|3[01])[- \/.](0[1-9]|1[012])[- \/.]\d{4}$/,
|
|
742
|
+
|
|
743
|
+
// #FFF or #FFFFFF
|
|
744
|
+
color: /^#?([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$/,
|
|
745
|
+
|
|
746
|
+
// Domain || URL
|
|
747
|
+
website: {
|
|
748
|
+
test: function (text) {
|
|
749
|
+
return Abide.defaults.patterns['domain'].test(text) || Abide.defaults.patterns['url'].test(text);
|
|
750
|
+
}
|
|
751
|
+
}
|
|
752
|
+
},
|
|
753
|
+
|
|
754
|
+
/**
|
|
755
|
+
* Optional validation functions to be used. `equalTo` being the only default included function.
|
|
756
|
+
* Functions should return only a boolean if the input is valid or not. Functions are given the following arguments:
|
|
757
|
+
* el : The jQuery element to validate.
|
|
758
|
+
* required : Boolean value of the required attribute be present or not.
|
|
759
|
+
* parent : The direct parent of the input.
|
|
760
|
+
* @option
|
|
761
|
+
*/
|
|
762
|
+
validators: {
|
|
763
|
+
equalTo: function (el, required, parent) {
|
|
764
|
+
return __WEBPACK_IMPORTED_MODULE_0_jquery___default()('#' + el.attr('data-equalto')).val() === el.val();
|
|
765
|
+
}
|
|
766
|
+
}
|
|
767
|
+
};
|
|
768
|
+
|
|
769
|
+
|
|
770
|
+
|
|
771
|
+
/***/ }),
|
|
772
|
+
|
|
773
|
+
/***/ 79:
|
|
774
|
+
/***/ (function(module, exports, __webpack_require__) {
|
|
775
|
+
|
|
776
|
+
module.exports = __webpack_require__(13);
|
|
777
|
+
|
|
778
|
+
|
|
779
|
+
/***/ })
|
|
780
|
+
|
|
781
|
+
/******/ });
|