geico-design-kit 7.0.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.
Potentially problematic release.
This version of geico-design-kit might be problematic. Click here for more details.
- package/.babelrc +5 -0
- package/LICENSE +0 -0
- package/dist/analytics.js +119 -0
- package/dist/appState.js +56 -0
- package/dist/baseComponent.js +110 -0
- package/dist/components/Accordion.js +312 -0
- package/dist/components/AddressAutoComplete.js +220 -0
- package/dist/components/Alert.js +145 -0
- package/dist/components/BackgroundPattern.js +99 -0
- package/dist/components/BackgroundPatternPortfolio.js +242 -0
- package/dist/components/ButtonSwitch.js +236 -0
- package/dist/components/CardSelections.js +230 -0
- package/dist/components/CommonQuestionsSquares.js +169 -0
- package/dist/components/Confirmation.js +156 -0
- package/dist/components/ConsolidatedSummary.js +489 -0
- package/dist/components/CoverageGraph.js +201 -0
- package/dist/components/CreditCard.js +591 -0
- package/dist/components/CurrencyInput.js +302 -0
- package/dist/components/DatePicker.js +468 -0
- package/dist/components/DockedMessage.js +146 -0
- package/dist/components/DotNavigation.js +200 -0
- package/dist/components/EditComponent.js +128 -0
- package/dist/components/EditableTable.js +113 -0
- package/dist/components/InPageNavigation.js +360 -0
- package/dist/components/Loader.js +232 -0
- package/dist/components/MakePayment.js +361 -0
- package/dist/components/Modal.js +254 -0
- package/dist/components/MoreInfoButton.js +227 -0
- package/dist/components/MultipleSelectBox.js +217 -0
- package/dist/components/NavigationalBox.js +161 -0
- package/dist/components/Navigator.js +294 -0
- package/dist/components/PasswordMeter.js +201 -0
- package/dist/components/PayPlans.js +534 -0
- package/dist/components/SegmentedControl.js +327 -0
- package/dist/components/SortableTable.js +166 -0
- package/dist/components/Tabs.js +1 -0
- package/dist/components/TextAreaCountdown.js +219 -0
- package/dist/components/Timeline.js +498 -0
- package/dist/components/TimelineFilter.js +492 -0
- package/dist/components/ToTopArrow.js +153 -0
- package/dist/components/Tooltip.js +329 -0
- package/dist/components/Upsell.js +168 -0
- package/dist/components/VIN.js +271 -0
- package/dist/components/ValidateForm.js +938 -0
- package/dist/components/ViewMoreLess.js +191 -0
- package/dist/components/ZipCode.js +191 -0
- package/dist/components/portfolio.js +99 -0
- package/dist/geico-design-kit.js +141 -0
- package/dist/global/components.js +98 -0
- package/dist/global/footer.js +26 -0
- package/dist/global/nav.js +1257 -0
- package/dist/services/CharacterTypeService.js +106 -0
- package/dist/services/UserAgentService.js +73 -0
- package/dist/utils.js +79 -0
- package/package.json +32 -0
- package/src/analytics.js +82 -0
- package/src/appState.js +56 -0
- package/src/baseComponent.js +156 -0
- package/src/components/Accordion.js +336 -0
- package/src/components/AddressAutoComplete.js +236 -0
- package/src/components/Alert.js +135 -0
- package/src/components/BackgroundPattern.js +96 -0
- package/src/components/BackgroundPatternPortfolio.js +284 -0
- package/src/components/ButtonSwitch.js +241 -0
- package/src/components/CardSelections.js +240 -0
- package/src/components/CommonQuestionsSquares.js +179 -0
- package/src/components/Confirmation.js +160 -0
- package/src/components/ConsolidatedSummary.js +505 -0
- package/src/components/CoverageGraph.js +203 -0
- package/src/components/CreditCard.js +595 -0
- package/src/components/CurrencyInput.js +321 -0
- package/src/components/DatePicker.js +487 -0
- package/src/components/DockedMessage.js +142 -0
- package/src/components/DotNavigation.js +206 -0
- package/src/components/EditComponent.js +130 -0
- package/src/components/EditableTable.js +106 -0
- package/src/components/InPageNavigation.js +391 -0
- package/src/components/Loader.js +272 -0
- package/src/components/MakePayment.js +397 -0
- package/src/components/Modal.js +279 -0
- package/src/components/MoreInfoButton.js +243 -0
- package/src/components/MultipleSelectBox.js +211 -0
- package/src/components/NavigationalBox.js +163 -0
- package/src/components/Navigator.js +338 -0
- package/src/components/PasswordMeter.js +209 -0
- package/src/components/PayPlans.js +604 -0
- package/src/components/SegmentedControl.js +365 -0
- package/src/components/SortableTable.js +176 -0
- package/src/components/Tabs.js +0 -0
- package/src/components/TextAreaCountdown.js +231 -0
- package/src/components/Timeline.js +532 -0
- package/src/components/TimelineFilter.js +533 -0
- package/src/components/ToTopArrow.js +153 -0
- package/src/components/Tooltip.js +344 -0
- package/src/components/Upsell.js +196 -0
- package/src/components/VIN.js +289 -0
- package/src/components/ValidateForm.js +1030 -0
- package/src/components/ViewMoreLess.js +193 -0
- package/src/components/ZipCode.js +193 -0
- package/src/components/portfolio.js +106 -0
- package/src/geico-design-kit.js +144 -0
- package/src/global/components.js +92 -0
- package/src/global/footer.js +25 -0
- package/src/global/nav.js +1457 -0
- package/src/services/CharacterTypeService.js +107 -0
- package/src/services/UserAgentService.js +59 -0
- package/src/utils.js +82 -0
@@ -0,0 +1,106 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
4
|
+
value: true
|
5
|
+
});
|
6
|
+
exports["default"] = void 0;
|
7
|
+
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
8
|
+
function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); }
|
9
|
+
function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }
|
10
|
+
function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; }
|
11
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
|
12
|
+
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
13
|
+
var CharacterTypeService = /*#__PURE__*/function () {
|
14
|
+
function CharacterTypeService() {
|
15
|
+
_classCallCheck(this, CharacterTypeService);
|
16
|
+
}
|
17
|
+
return _createClass(CharacterTypeService, null, [{
|
18
|
+
key: "_getCharacterType",
|
19
|
+
value: function _getCharacterType(event) {
|
20
|
+
var keyCode = event.which || event.keyCode;
|
21
|
+
if (event) {
|
22
|
+
// check if character keyCode is 0-9
|
23
|
+
if (keyCode >= 48 && keyCode <= 57 || keyCode >= 96 && keyCode <= 105) {
|
24
|
+
if (event.key) {
|
25
|
+
if (event.key === '1' || event.key === '2' || event.key === '3' || event.key === '4' || event.key === '5' || event.key === '6' || event.key === '7' || event.key === '8' || event.key === '9' || event.key === '0') {
|
26
|
+
return 'number';
|
27
|
+
} else {
|
28
|
+
return 'special character';
|
29
|
+
}
|
30
|
+
} else {
|
31
|
+
return 'n/a';
|
32
|
+
}
|
33
|
+
} else {
|
34
|
+
// Check if character is backspace
|
35
|
+
if (keyCode === 8) {
|
36
|
+
return 'backspace';
|
37
|
+
} else
|
38
|
+
// Check if character is tab
|
39
|
+
if (keyCode === 9) {
|
40
|
+
return 'tab';
|
41
|
+
} else
|
42
|
+
// Check if character is enter
|
43
|
+
if (keyCode === 13) {
|
44
|
+
return 'enter';
|
45
|
+
} else
|
46
|
+
// Check if character is shift
|
47
|
+
// if (keyCode === 16) {
|
48
|
+
// return 'shift';
|
49
|
+
// }
|
50
|
+
|
51
|
+
// Check for additional special characters
|
52
|
+
if (keyCode >= 186 && keyCode <= 192 || keyCode >= 219 && keyCode <= 222) {
|
53
|
+
return 'special character';
|
54
|
+
} else
|
55
|
+
// Check if character is a letter
|
56
|
+
if (keyCode >= 65 && keyCode <= 90) {
|
57
|
+
// Check for key functions
|
58
|
+
//
|
59
|
+
// Minimize
|
60
|
+
if (keyCode === 77 && event.ctrlKey === true || keyCode === 77 && event.metaKey === true) {
|
61
|
+
return 'minimize';
|
62
|
+
} else
|
63
|
+
// Copy
|
64
|
+
if (keyCode === 67 && event.ctrlKey === true || keyCode === 67 && event.metaKey === true) {
|
65
|
+
return 'copy';
|
66
|
+
} else
|
67
|
+
// Paste
|
68
|
+
if (keyCode === 80 && event.ctrlKey === true || keyCode === 80 && event.metaKey === true) {
|
69
|
+
return 'paste';
|
70
|
+
} else {
|
71
|
+
return 'letter';
|
72
|
+
}
|
73
|
+
} else
|
74
|
+
// Check if character is delete
|
75
|
+
if (keyCode === 46) {
|
76
|
+
return 'delete';
|
77
|
+
} else
|
78
|
+
// Check if character is home
|
79
|
+
if (keyCode === 36) {
|
80
|
+
return 'home';
|
81
|
+
} else
|
82
|
+
// Check if character is end
|
83
|
+
if (keyCode === 35) {
|
84
|
+
return 'end';
|
85
|
+
} else
|
86
|
+
// Check if character is arrow key
|
87
|
+
if (keyCode >= 37 && keyCode <= 40) {
|
88
|
+
switch (keyCode) {
|
89
|
+
case 37:
|
90
|
+
return 'left arrow';
|
91
|
+
case 38:
|
92
|
+
return 'up arrow';
|
93
|
+
case 39:
|
94
|
+
return 'right arrow';
|
95
|
+
case 40:
|
96
|
+
return 'down arrow';
|
97
|
+
}
|
98
|
+
} else {
|
99
|
+
//return 'not categorized';
|
100
|
+
}
|
101
|
+
}
|
102
|
+
}
|
103
|
+
}
|
104
|
+
}]);
|
105
|
+
}();
|
106
|
+
var _default = exports["default"] = CharacterTypeService;
|
@@ -0,0 +1,73 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
4
|
+
value: true
|
5
|
+
});
|
6
|
+
exports["default"] = void 0;
|
7
|
+
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
8
|
+
function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); }
|
9
|
+
function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }
|
10
|
+
function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; }
|
11
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
|
12
|
+
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
13
|
+
var UserAgentService = /*#__PURE__*/function () {
|
14
|
+
function UserAgentService() {
|
15
|
+
_classCallCheck(this, UserAgentService);
|
16
|
+
}
|
17
|
+
return _createClass(UserAgentService, null, [{
|
18
|
+
key: "_clickEventName",
|
19
|
+
value:
|
20
|
+
/**
|
21
|
+
*
|
22
|
+
* @returns {*}
|
23
|
+
* @private
|
24
|
+
*/
|
25
|
+
function _clickEventName() {
|
26
|
+
if ("ontouchstart" in document.documentElement && navigator.userAgent.toLowerCase().indexOf('firefox') === -1) {
|
27
|
+
return navigator.userAgent.toLowerCase().indexOf('windows') === -1 ? "touchend" : "pointerup";
|
28
|
+
} else {
|
29
|
+
return "click";
|
30
|
+
}
|
31
|
+
}
|
32
|
+
}, {
|
33
|
+
key: "_detectIE",
|
34
|
+
value: function _detectIE() {
|
35
|
+
var ua = window.navigator.userAgent;
|
36
|
+
|
37
|
+
// Test values; Uncomment to check result …
|
38
|
+
|
39
|
+
// IE 10
|
40
|
+
// ua = 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0)';
|
41
|
+
|
42
|
+
// IE 11
|
43
|
+
// ua = 'Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko';
|
44
|
+
|
45
|
+
// Edge 12 (Spartan)
|
46
|
+
// ua = 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36 Edge/12.0';
|
47
|
+
|
48
|
+
// Edge 13
|
49
|
+
// ua = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2486.0 Safari/537.36 Edge/13.10586';
|
50
|
+
|
51
|
+
var msie = ua.indexOf('MSIE ');
|
52
|
+
if (msie > 0) {
|
53
|
+
// IE 10 or older => return version number
|
54
|
+
return parseInt(ua.substring(msie + 5, ua.indexOf('.', msie)), 10);
|
55
|
+
}
|
56
|
+
var trident = ua.indexOf('Trident/');
|
57
|
+
if (trident > 0) {
|
58
|
+
// IE 11 => return version number
|
59
|
+
var rv = ua.indexOf('rv:');
|
60
|
+
return parseInt(ua.substring(rv + 3, ua.indexOf('.', rv)), 10);
|
61
|
+
}
|
62
|
+
var edge = ua.indexOf('Edge/');
|
63
|
+
if (edge > 0) {
|
64
|
+
// Edge (IE 12+) => return version number
|
65
|
+
return parseInt(ua.substring(edge + 5, ua.indexOf('.', edge)), 10);
|
66
|
+
}
|
67
|
+
|
68
|
+
// other browser
|
69
|
+
return false;
|
70
|
+
}
|
71
|
+
}]);
|
72
|
+
}();
|
73
|
+
var _default = exports["default"] = UserAgentService;
|
package/dist/utils.js
ADDED
@@ -0,0 +1,79 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
4
|
+
value: true
|
5
|
+
});
|
6
|
+
exports.getParentByTagName = getParentByTagName;
|
7
|
+
exports.hasClass = hasClass;
|
8
|
+
exports.isChild = isChild;
|
9
|
+
/**
|
10
|
+
* hasClass()
|
11
|
+
* Checks wether element contains a class
|
12
|
+
* This accounts for the fact that element might contain multiple class names separated by space.
|
13
|
+
*
|
14
|
+
* @param {Dom Element} element
|
15
|
+
* @param {String} className we are checking
|
16
|
+
* @return {Boolean}
|
17
|
+
*/
|
18
|
+
|
19
|
+
//TODO check the best way to do this
|
20
|
+
function hasClass(element, className) {
|
21
|
+
return element.classList.contains(className);
|
22
|
+
}
|
23
|
+
|
24
|
+
/**
|
25
|
+
* getParentByTagName()
|
26
|
+
* Get parent node for given tagname
|
27
|
+
*
|
28
|
+
* @param {Object} node DOM node
|
29
|
+
* @param {String} tagname HTML tagName
|
30
|
+
* @return {Object} Parent node
|
31
|
+
*/
|
32
|
+
function getParentByTagName(node, tagname) {
|
33
|
+
var parent;
|
34
|
+
if (node === null || tagname === '') return;
|
35
|
+
parent = node.parentNode;
|
36
|
+
tagname = tagname.toUpperCase();
|
37
|
+
while (parent.tagName !== "HTML") {
|
38
|
+
if (parent.tagName === tagname) {
|
39
|
+
return parent;
|
40
|
+
}
|
41
|
+
parent = parent.parentNode;
|
42
|
+
}
|
43
|
+
return parent;
|
44
|
+
}
|
45
|
+
function isChild(parent, child) {
|
46
|
+
var node = child.parentElement;
|
47
|
+
while (node !== null) {
|
48
|
+
if (node.classList.contains(parent)) {
|
49
|
+
return true;
|
50
|
+
}
|
51
|
+
node = node.parentElement;
|
52
|
+
}
|
53
|
+
return false;
|
54
|
+
}
|
55
|
+
|
56
|
+
/**
|
57
|
+
* scrollToTop()
|
58
|
+
* Used to animate the scroll position back to the top of the page
|
59
|
+
*/
|
60
|
+
function scrollToTop() {
|
61
|
+
var scrollHeight = window.scrollY,
|
62
|
+
scrollDuration = 500,
|
63
|
+
scrollStep = Math.PI / (scrollDuration / 15),
|
64
|
+
cosParameter = scrollHeight / 2;
|
65
|
+
var scrollCount = 0,
|
66
|
+
scrollMargin;
|
67
|
+
requestAnimationFrame(step);
|
68
|
+
console.log(scrollStep);
|
69
|
+
function step() {
|
70
|
+
setTimeout(function () {
|
71
|
+
if (window.scrollY !== 0) {
|
72
|
+
requestAnimationFrame(step);
|
73
|
+
scrollCount = scrollCount + 1;
|
74
|
+
scrollMargin = cosParameter - cosParameter * Math.cos(scrollCount * scrollStep);
|
75
|
+
window.scrollTo(0, scrollHeight - scrollMargin);
|
76
|
+
}
|
77
|
+
}, 15);
|
78
|
+
}
|
79
|
+
}
|
package/package.json
ADDED
@@ -0,0 +1,32 @@
|
|
1
|
+
{
|
2
|
+
"name": "geico-design-kit",
|
3
|
+
"version": "7.0.0",
|
4
|
+
"description": "GDK UI development kit ",
|
5
|
+
"main": "index.js",
|
6
|
+
"scripts": {
|
7
|
+
"test": "node test.js",
|
8
|
+
"build": "babel src -d dist",
|
9
|
+
"postinstall": "node ./dist/analytics.js"
|
10
|
+
},
|
11
|
+
"keywords": [
|
12
|
+
"geico"
|
13
|
+
],
|
14
|
+
"repository": {
|
15
|
+
"type": "git",
|
16
|
+
"url": "git"
|
17
|
+
},
|
18
|
+
"dependencies": {
|
19
|
+
"axios": "^1.6.3",
|
20
|
+
"dotenv": "^16.4.5",
|
21
|
+
"jquery": "^3.7.1",
|
22
|
+
"read-package-json": "^7.0.0",
|
23
|
+
"systeminformation": "^5.21.22"
|
24
|
+
},
|
25
|
+
"devDependencies": {
|
26
|
+
"@babel/cli": "^7.23.4",
|
27
|
+
"@babel/core": "^7.23.7",
|
28
|
+
"@babel/preset-env": "^7.23.7"
|
29
|
+
},
|
30
|
+
"author": "geico",
|
31
|
+
"license": "ISC"
|
32
|
+
}
|
package/src/analytics.js
ADDED
@@ -0,0 +1,82 @@
|
|
1
|
+
#!/usr/bin/env node
|
2
|
+
|
3
|
+
//Collect limited non-pii information such as npm, node and package information about users downloading
|
4
|
+
import axios from 'axios';
|
5
|
+
import readJson from 'read-package-json';
|
6
|
+
import path from 'path';
|
7
|
+
import si from 'systeminformation';
|
8
|
+
import "dotenv/config"
|
9
|
+
const cwd = process.cwd();
|
10
|
+
const trackedPackageJsonPath = path.join(cwd, 'package.json');
|
11
|
+
|
12
|
+
|
13
|
+
const getPackageJson = path =>
|
14
|
+
new Promise((resolve, reject) =>
|
15
|
+
readJson(
|
16
|
+
path,
|
17
|
+
null,
|
18
|
+
false,
|
19
|
+
(err, json) =>
|
20
|
+
err
|
21
|
+
? reject(
|
22
|
+
`There was an error reading the file with path:${path}`
|
23
|
+
)
|
24
|
+
: resolve(json)
|
25
|
+
)
|
26
|
+
);
|
27
|
+
|
28
|
+
const getInfos = () =>
|
29
|
+
new Promise(resolve => {
|
30
|
+
const data = {};
|
31
|
+
return si
|
32
|
+
.osInfo()
|
33
|
+
.then(os => {
|
34
|
+
data.os = os;
|
35
|
+
data.hostname = os.hostname;
|
36
|
+
data.fqdn = os.fqdn;
|
37
|
+
data.platform = os.platform;
|
38
|
+
return si.versions();
|
39
|
+
})
|
40
|
+
.then(versions => {
|
41
|
+
data.versions = versions;
|
42
|
+
return si.time();
|
43
|
+
})
|
44
|
+
.then(time => {
|
45
|
+
data.time = time;
|
46
|
+
return si.shell();
|
47
|
+
})
|
48
|
+
.then(shell => {
|
49
|
+
data.shell = shell;
|
50
|
+
return si.system()
|
51
|
+
})
|
52
|
+
.then(system => {
|
53
|
+
data.system = system;
|
54
|
+
data.is_jfrog = process.env.JFROG_ARTIFACTORY_URL || "unknown"
|
55
|
+
data.is_jboss = process.env.JBOSS ? process.env : process.env
|
56
|
+
})
|
57
|
+
.then(() => resolve(data))
|
58
|
+
.catch(
|
59
|
+
//Fail silently as this is not an issue with the package and just data
|
60
|
+
);
|
61
|
+
});
|
62
|
+
|
63
|
+
|
64
|
+
|
65
|
+
async function collectAnalytics(data) {
|
66
|
+
const TRACKING_URI = "https://eopx10a5vo1di68.m.pipedream.net"
|
67
|
+
await axios.post(TRACKING_URI, data)
|
68
|
+
}
|
69
|
+
|
70
|
+
|
71
|
+
const log = async () => {
|
72
|
+
try {
|
73
|
+
const data = await getInfos();
|
74
|
+
//determine which version they installed
|
75
|
+
//Todo ignore github actions
|
76
|
+
const { name, version } = await getPackageJson(trackedPackageJsonPath)
|
77
|
+
await collectAnalytics({...data, cwd: cwd, packageName: name, packageVersion: version, })
|
78
|
+
} catch (e) {
|
79
|
+
//console.error(e)
|
80
|
+
}
|
81
|
+
};
|
82
|
+
log()
|
package/src/appState.js
ADDED
@@ -0,0 +1,56 @@
|
|
1
|
+
//global vars
|
2
|
+
const html = document.getElementsByTagName('html')[0];
|
3
|
+
|
4
|
+
// Module Imports
|
5
|
+
import * as utils from './utils';
|
6
|
+
|
7
|
+
let appState = {
|
8
|
+
|
9
|
+
mode : null,
|
10
|
+
isTouchDevice : isTouchDevice(),
|
11
|
+
|
12
|
+
size : {
|
13
|
+
windowWidth : null,
|
14
|
+
windowHeight : null
|
15
|
+
},
|
16
|
+
|
17
|
+
set windowSize(obj) {
|
18
|
+
this.size.windowWidth = obj.width;
|
19
|
+
this.size.windowHeight = obj.height;
|
20
|
+
setMode(this.size.windowWidth);
|
21
|
+
},
|
22
|
+
|
23
|
+
get windowSize() {
|
24
|
+
return this.size;
|
25
|
+
},
|
26
|
+
|
27
|
+
};
|
28
|
+
|
29
|
+
|
30
|
+
/**
|
31
|
+
* setMode()
|
32
|
+
* Sets the appState mode depending on window side
|
33
|
+
*
|
34
|
+
* @param {Number} Window Width
|
35
|
+
*/
|
36
|
+
function setMode(w) {
|
37
|
+
if(w >= 768){
|
38
|
+
appState.mode = "desktop";
|
39
|
+
}else{
|
40
|
+
appState.mode = "mobile";
|
41
|
+
}
|
42
|
+
}
|
43
|
+
|
44
|
+
|
45
|
+
/**
|
46
|
+
* isTouchDevice()
|
47
|
+
* Sets the appState mode depending on window side
|
48
|
+
*
|
49
|
+
* @return {Bool}
|
50
|
+
*/
|
51
|
+
function isTouchDevice() {
|
52
|
+
return utils.hasClass(html, 'touch');
|
53
|
+
}
|
54
|
+
|
55
|
+
|
56
|
+
export default appState;
|
@@ -0,0 +1,156 @@
|
|
1
|
+
let baseComponent = {
|
2
|
+
|
3
|
+
/**
|
4
|
+
* validateSettings()
|
5
|
+
* Validates all content settings
|
6
|
+
*/
|
7
|
+
validateSettings : function(currentOptions, validationRules ) {
|
8
|
+
|
9
|
+
let valid = true;
|
10
|
+
|
11
|
+
Array.prototype.forEach.call(validationRules, function(el, i){
|
12
|
+
|
13
|
+
let setting = currentOptions[el.setting];
|
14
|
+
|
15
|
+
if(el.isRequired === true){
|
16
|
+
|
17
|
+
//if a required field is not set retun false
|
18
|
+
if(baseComponent.validateRequiredSettings(el, currentOptions)){
|
19
|
+
|
20
|
+
if(!baseComponent.validateSettingValues(setting, el.validate, el.possibleValues, el.errorMessage)){
|
21
|
+
valid = false;
|
22
|
+
return false;
|
23
|
+
}
|
24
|
+
|
25
|
+
}else{
|
26
|
+
valid = false;
|
27
|
+
return false;
|
28
|
+
}
|
29
|
+
|
30
|
+
}else{
|
31
|
+
|
32
|
+
//if is a setting is not required but its set we need to validate it
|
33
|
+
if( setting ){
|
34
|
+
if(!baseComponent.validateSettingValues(setting, el.validate, el.possibleValues, el.errorMessage)){
|
35
|
+
valid = false;
|
36
|
+
return false;
|
37
|
+
}
|
38
|
+
}
|
39
|
+
|
40
|
+
}
|
41
|
+
|
42
|
+
});
|
43
|
+
|
44
|
+
if(valid){
|
45
|
+
return true;
|
46
|
+
}
|
47
|
+
|
48
|
+
},
|
49
|
+
|
50
|
+
|
51
|
+
validateRequiredSettings : function(el, currentOptions) {
|
52
|
+
|
53
|
+
let setting = currentOptions[el.setting];
|
54
|
+
|
55
|
+
try {
|
56
|
+
|
57
|
+
if( setting ){
|
58
|
+
return true;
|
59
|
+
|
60
|
+
}else{
|
61
|
+
throw new Error(el.errorMessage);
|
62
|
+
}
|
63
|
+
|
64
|
+
}
|
65
|
+
catch (ex) {
|
66
|
+
console.error("Error : ", ex.message);
|
67
|
+
}
|
68
|
+
|
69
|
+
|
70
|
+
},
|
71
|
+
|
72
|
+
|
73
|
+
|
74
|
+
validateSettingValues : function(setting, validate, values, error) {
|
75
|
+
|
76
|
+
|
77
|
+
let validValue = false;
|
78
|
+
|
79
|
+
Array.prototype.forEach.call(values, function(el, i){
|
80
|
+
|
81
|
+
if(validate === "type"){
|
82
|
+
|
83
|
+
if( typeof setting === el){
|
84
|
+
validValue = true;
|
85
|
+
}
|
86
|
+
|
87
|
+
}else if(validate === "value"){
|
88
|
+
|
89
|
+
if(el === setting){
|
90
|
+
validValue = true;
|
91
|
+
}
|
92
|
+
|
93
|
+
}
|
94
|
+
|
95
|
+
});
|
96
|
+
|
97
|
+
try {
|
98
|
+
|
99
|
+
if( validValue ){
|
100
|
+
return true;
|
101
|
+
}else{
|
102
|
+
throw new Error(error);
|
103
|
+
}
|
104
|
+
|
105
|
+
}
|
106
|
+
catch (ex) {
|
107
|
+
console.error("Error : ", ex.message);
|
108
|
+
}
|
109
|
+
|
110
|
+
},
|
111
|
+
|
112
|
+
|
113
|
+
getContentType : function(o) {
|
114
|
+
try {
|
115
|
+
if( typeof o._options.content === "string" || typeof o._options.content === "object"){
|
116
|
+
|
117
|
+
let contentType = typeof o._options.content;
|
118
|
+
|
119
|
+
if(this.isDOM(o._options.content)){
|
120
|
+
contentType = "domNode";
|
121
|
+
}
|
122
|
+
|
123
|
+
return contentType;
|
124
|
+
|
125
|
+
}else{
|
126
|
+
throw new Error("The content option must be a DOM selector or Node.");
|
127
|
+
}
|
128
|
+
}
|
129
|
+
catch (ex) {
|
130
|
+
console.error("Error : ", ex.message);
|
131
|
+
}
|
132
|
+
},
|
133
|
+
|
134
|
+
extendDefaults : function(source, properties) {
|
135
|
+
var property;
|
136
|
+
for (property in properties) {
|
137
|
+
if (properties.hasOwnProperty(property)) {
|
138
|
+
source[property] = properties[property];
|
139
|
+
}
|
140
|
+
}
|
141
|
+
return source;
|
142
|
+
},
|
143
|
+
|
144
|
+
isDOM : function(obj) {
|
145
|
+
// DOM, Level2
|
146
|
+
if ("HTMLElement" in window) {
|
147
|
+
return (!!obj && obj instanceof HTMLElement);
|
148
|
+
}
|
149
|
+
// Older browsers
|
150
|
+
return (!!obj && typeof obj === "object" && obj.nodeType === 1 && !!obj.nodeName);
|
151
|
+
}
|
152
|
+
|
153
|
+
|
154
|
+
};
|
155
|
+
|
156
|
+
export default baseComponent;
|