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,492 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports["default"] = void 0;
|
|
7
|
+
var _appState = _interopRequireDefault(require("../../src/appState"));
|
|
8
|
+
var utils = _interopRequireWildcard(require("../../src/utils"));
|
|
9
|
+
var _baseComponent = _interopRequireDefault(require("../../src/baseComponent"));
|
|
10
|
+
var _UserAgentService = _interopRequireDefault(require("../../src/services/UserAgentService"));
|
|
11
|
+
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
|
|
12
|
+
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
|
|
13
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
|
|
14
|
+
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); }
|
|
15
|
+
function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); }
|
|
16
|
+
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); } }
|
|
17
|
+
function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; }
|
|
18
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
|
|
19
|
+
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); }
|
|
20
|
+
var validateSettings = [{
|
|
21
|
+
setting: "content",
|
|
22
|
+
isRequired: true,
|
|
23
|
+
validate: "type",
|
|
24
|
+
possibleValues: ["string", "object"],
|
|
25
|
+
errorMessage: ["GDK TimelineFilter : Content must be defined and set to a DOM selector or Node"]
|
|
26
|
+
}, {
|
|
27
|
+
setting: "onFilterSubmit",
|
|
28
|
+
isRequired: false,
|
|
29
|
+
validate: "type",
|
|
30
|
+
possibleValues: ["function"],
|
|
31
|
+
errorMessage: ["GDK TimelineFilter : onFilterSubmit must be a function"]
|
|
32
|
+
}, {
|
|
33
|
+
setting: "onClearFilter",
|
|
34
|
+
isRequired: false,
|
|
35
|
+
validate: "type",
|
|
36
|
+
possibleValues: ["function"],
|
|
37
|
+
errorMessage: ["GDK TimelineFilter : onClearFilter must be a function"]
|
|
38
|
+
}, {
|
|
39
|
+
setting: "setInitialFilters",
|
|
40
|
+
isRequired: false,
|
|
41
|
+
validate: "type",
|
|
42
|
+
possibleValues: ["object"],
|
|
43
|
+
errorMessage: ["GDK TimelineFilter : setInitialFilters must be an object"]
|
|
44
|
+
}];
|
|
45
|
+
var TimelineFilter = /*#__PURE__*/function () {
|
|
46
|
+
/**
|
|
47
|
+
* Refer to the design kit section of this component for JS examples and setting details.
|
|
48
|
+
* @param {string, Object} content
|
|
49
|
+
* A reference to the html timeline filter node
|
|
50
|
+
*
|
|
51
|
+
* @param {function} [onFilterSubmit]
|
|
52
|
+
* Callback function fired once a 'filter-submit' is clicked
|
|
53
|
+
*
|
|
54
|
+
* @param {function} [onClearFilter]
|
|
55
|
+
* Callback function fired once 'Clear Filters' is clicked
|
|
56
|
+
*
|
|
57
|
+
* @param {object} [setDefaultFilters]
|
|
58
|
+
* Accepts an array of objects containing checkbox IDs and an indicator to select or deselect them, selects or deselects them, and updates the count bubble
|
|
59
|
+
*
|
|
60
|
+
*/
|
|
61
|
+
function TimelineFilter(options) {
|
|
62
|
+
_classCallCheck(this, TimelineFilter);
|
|
63
|
+
this._internalVars = {
|
|
64
|
+
node: null,
|
|
65
|
+
//used for content item
|
|
66
|
+
dropdownTrigger: null,
|
|
67
|
+
checkbox: null,
|
|
68
|
+
dropdown: null,
|
|
69
|
+
mobileOpen: null,
|
|
70
|
+
//mobileClose: null,
|
|
71
|
+
mobileBar: null,
|
|
72
|
+
mobileText: null,
|
|
73
|
+
clear: null,
|
|
74
|
+
search: null,
|
|
75
|
+
submit: null,
|
|
76
|
+
dropdownContainer: null
|
|
77
|
+
};
|
|
78
|
+
|
|
79
|
+
//options with defaults set
|
|
80
|
+
this._defaults = {};
|
|
81
|
+
|
|
82
|
+
// Create options by extending defaults with the passed in arugments
|
|
83
|
+
if (options && _typeof(options) === "object") {
|
|
84
|
+
this._options = _baseComponent["default"].extendDefaults(this._defaults, options);
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
//if the required options are valid set up the environment
|
|
88
|
+
if (_baseComponent["default"].validateSettings(this._options, validateSettings)) {
|
|
89
|
+
this._internalVars.contentType = _baseComponent["default"].getContentType(this);
|
|
90
|
+
setLocalVars.call(this);
|
|
91
|
+
setEvents.call(this);
|
|
92
|
+
if (_appState["default"].mode == "desktop") Array.prototype.forEach.call(this._internalVars.dropdownTrigger, function (el, i) {
|
|
93
|
+
el.setAttribute('aria-expanded', 'false');
|
|
94
|
+
});
|
|
95
|
+
if (this._options.setInitialFilters) {
|
|
96
|
+
this.setDefaultFilters.call(this, this._options.setInitialFilters);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
//Public Methods
|
|
102
|
+
|
|
103
|
+
/**
|
|
104
|
+
* setDefaultFilters(obj)
|
|
105
|
+
* @param {object} [obj]
|
|
106
|
+
* Accepts an array of objects containing checkbox IDs and an indicator to select or deselect them, selects or deselects them, and updates the count bubble
|
|
107
|
+
*/
|
|
108
|
+
return _createClass(TimelineFilter, [{
|
|
109
|
+
key: "setDefaultFilters",
|
|
110
|
+
value: function setDefaultFilters(obj) {
|
|
111
|
+
var _this = this;
|
|
112
|
+
Array.prototype.forEach.call(obj, function (el) {
|
|
113
|
+
if (el.id && el.action) {
|
|
114
|
+
var checkbox = document.querySelector('#' + el.id);
|
|
115
|
+
if (checkbox) {
|
|
116
|
+
if (el.action === 'select') {
|
|
117
|
+
checkbox.checked = true;
|
|
118
|
+
updateAllNotificationBubbles.call(_this, checkbox);
|
|
119
|
+
} else if (el.action === 'deselect') {
|
|
120
|
+
checkbox.checked = false;
|
|
121
|
+
updateAllNotificationBubbles.call(_this, checkbox);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
/**
|
|
129
|
+
* destroy()
|
|
130
|
+
* removes the node from the dom and any events attached
|
|
131
|
+
*/
|
|
132
|
+
}, {
|
|
133
|
+
key: "destroy",
|
|
134
|
+
value: function destroy() {
|
|
135
|
+
removeEvents.call(this);
|
|
136
|
+
this._internalVars.node.parentNode.removeChild(this._internalVars.node);
|
|
137
|
+
|
|
138
|
+
//a little garbage collection
|
|
139
|
+
for (var variableKey in this) {
|
|
140
|
+
if (this.hasOwnProperty(variableKey)) {
|
|
141
|
+
delete this[variableKey];
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
}]);
|
|
146
|
+
}(); // Private Methods
|
|
147
|
+
/**
|
|
148
|
+
* setLocalVars()
|
|
149
|
+
* set all the local vars to passed in options
|
|
150
|
+
*/
|
|
151
|
+
function setLocalVars() {
|
|
152
|
+
//determine the type of content passed in
|
|
153
|
+
if (this._internalVars.contentType === 'string') {
|
|
154
|
+
this._internalVars.node = document.querySelector(this._options.content);
|
|
155
|
+
} else if (this._internalVars.contentType === 'domNode') {
|
|
156
|
+
this._internalVars.node = this._options.content;
|
|
157
|
+
}
|
|
158
|
+
this._internalVars.dropdownTrigger = this._internalVars.node.querySelectorAll(".filter-dropdown-trigger");
|
|
159
|
+
this._internalVars.checkbox = this._internalVars.node.querySelectorAll(".filter-checkbox");
|
|
160
|
+
this._internalVars.dropdown = this._internalVars.node.querySelectorAll(".filter-dropdown");
|
|
161
|
+
this._internalVars.clear = this._internalVars.node.querySelector(".filter-clear");
|
|
162
|
+
this._internalVars.search = this._internalVars.node.querySelector(".filter-search");
|
|
163
|
+
this._internalVars.submit = this._internalVars.node.querySelector(".filter-submit");
|
|
164
|
+
this._internalVars.dropdownContainer = this._internalVars.node.querySelectorAll(".filter-container");
|
|
165
|
+
this._internalVars.mobileOpen = this._internalVars.node.querySelector(".filter-mobile-open");
|
|
166
|
+
//this._internalVars.mobileClose = this._internalVars.node.querySelector(".filter-mobile-close");
|
|
167
|
+
this._internalVars.mobileBar = this._internalVars.node.querySelector(".filter-mobile-bar");
|
|
168
|
+
this._internalVars.mobileText = this._internalVars.node.querySelector(".filter-mobile-bar-text");
|
|
169
|
+
this._internalVars.outsideHandler = outsideFieldClickHandler.bind(this);
|
|
170
|
+
this._internalVars.dropdownHandler = dropdownClickHandler.bind(this);
|
|
171
|
+
this._internalVars.checkTouchHandler = checkForTouch.bind(this);
|
|
172
|
+
this._internalVars.checkboxHandler = checkboxChangeHandler.bind(this);
|
|
173
|
+
this._internalVars.clearFilterHandler = clearFilter.bind(this);
|
|
174
|
+
this._internalVars.submitFilterHandler = submitFilter.bind(this);
|
|
175
|
+
this._internalVars.openDrawerHandler = openDrawer.bind(this);
|
|
176
|
+
this._internalVars.searchFocusHandler = searchFocus.bind(this);
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
/**
|
|
180
|
+
* setEvents()
|
|
181
|
+
* Sets all the events needed for the component
|
|
182
|
+
*/
|
|
183
|
+
function setEvents() {
|
|
184
|
+
var _this2 = this;
|
|
185
|
+
var eventName = _UserAgentService["default"]._clickEventName();
|
|
186
|
+
|
|
187
|
+
//set click events
|
|
188
|
+
Array.prototype.forEach.call(this._internalVars.dropdownTrigger, function (el, i) {
|
|
189
|
+
el.addEventListener(eventName, _this2._internalVars.dropdownHandler);
|
|
190
|
+
el.addEventListener("pointerdown", _this2._internalVars.checkTouchHandler);
|
|
191
|
+
});
|
|
192
|
+
Array.prototype.forEach.call(this._internalVars.dropdownContainer, function (el, i) {
|
|
193
|
+
el.addEventListener("mouseleave", _this2._internalVars.outsideHandler);
|
|
194
|
+
});
|
|
195
|
+
Array.prototype.forEach.call(this._internalVars.checkbox, function (el, i) {
|
|
196
|
+
el.addEventListener('change', _this2._internalVars.checkboxHandler);
|
|
197
|
+
});
|
|
198
|
+
this._internalVars.clear.addEventListener(eventName, this._internalVars.clearFilterHandler);
|
|
199
|
+
if (this._internalVars.search) {
|
|
200
|
+
this._internalVars.search.addEventListener('focus', this._internalVars.searchFocusHandler);
|
|
201
|
+
}
|
|
202
|
+
this._internalVars.submit.addEventListener(eventName, this._internalVars.submitFilterHandler);
|
|
203
|
+
|
|
204
|
+
// mobile
|
|
205
|
+
this._internalVars.mobileOpen.addEventListener(eventName, this._internalVars.openDrawerHandler);
|
|
206
|
+
//this._internalVars.mobileClose.addEventListener(eventName, closeDrawer.bind(this) );
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
/**
|
|
210
|
+
* removeEvents()
|
|
211
|
+
* removes all events from the component
|
|
212
|
+
*/
|
|
213
|
+
function removeEvents() {
|
|
214
|
+
var _this3 = this;
|
|
215
|
+
var eventName = _UserAgentService["default"]._clickEventName();
|
|
216
|
+
|
|
217
|
+
//remove click events
|
|
218
|
+
Array.prototype.forEach.call(this._internalVars.dropdownTrigger, function (el, i) {
|
|
219
|
+
el.removeEventListener(eventName, _this3._internalVars.dropdownHandler);
|
|
220
|
+
el.removeEventListener("pointerdown", _this3._internalVars.checkTouchHandler);
|
|
221
|
+
});
|
|
222
|
+
Array.prototype.forEach.call(this._internalVars.dropdownContainer, function (el, i) {
|
|
223
|
+
el.removeEventListener("mouseleave", _this3._internalVars.outsideHandler);
|
|
224
|
+
});
|
|
225
|
+
Array.prototype.forEach.call(this._internalVars.checkbox, function (el, i) {
|
|
226
|
+
el.removeEventListener('change', _this3._internalVars.checkboxHandler);
|
|
227
|
+
});
|
|
228
|
+
this._internalVars.clear.removeEventListener(eventName, this._internalVars.clearFilterHandler);
|
|
229
|
+
if (this._internalVars.search) {
|
|
230
|
+
this._internalVars.search.removeEventListener('focus', this._internalVars.searchFocusHandler);
|
|
231
|
+
}
|
|
232
|
+
this._internalVars.submit.removeEventListener(eventName, this._internalVars.submitFilterHandler);
|
|
233
|
+
|
|
234
|
+
// mobile
|
|
235
|
+
this._internalVars.mobileOpen.removeEventListener(eventName, this._internalVars.openDrawerHandler);
|
|
236
|
+
//this._internalVars.mobileClose.removeEventListener(eventName, closeDrawer.bind(this) );
|
|
237
|
+
}
|
|
238
|
+
function checkForTouch(el) {
|
|
239
|
+
var _this4 = this;
|
|
240
|
+
if (el.pointerType == 'touch') {
|
|
241
|
+
Array.prototype.forEach.call(this._internalVars.dropdownContainer, function (el, i) {
|
|
242
|
+
el.removeEventListener("mouseleave", _this4._internalVars.outsideHandler);
|
|
243
|
+
});
|
|
244
|
+
} else {
|
|
245
|
+
Array.prototype.forEach.call(this._internalVars.dropdownContainer, function (el, i) {
|
|
246
|
+
el.addEventListener("mouseleave", _this4._internalVars.outsideHandler);
|
|
247
|
+
});
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
/**
|
|
252
|
+
* openDrawer()
|
|
253
|
+
* opens the mobile filter drawer
|
|
254
|
+
*/
|
|
255
|
+
function openDrawer(el) {
|
|
256
|
+
if (utils.hasClass(this._internalVars.node, "-drawer-open")) {
|
|
257
|
+
closeDrawer.call(this);
|
|
258
|
+
} else {
|
|
259
|
+
this._internalVars.node.classList.add("-drawer-open");
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
/**
|
|
264
|
+
* closeDrawer()
|
|
265
|
+
* closes the mobile filter drawer
|
|
266
|
+
*/
|
|
267
|
+
function closeDrawer(el) {
|
|
268
|
+
this._internalVars.node.classList.remove("-drawer-open");
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
/**
|
|
272
|
+
* submitFilter()
|
|
273
|
+
* submits Filter form
|
|
274
|
+
*/
|
|
275
|
+
function submitFilter(el) {
|
|
276
|
+
var _this5 = this;
|
|
277
|
+
var data = serializeForm(this._internalVars.node);
|
|
278
|
+
|
|
279
|
+
// if mobile, close the drawer and update the filter text
|
|
280
|
+
if (_appState["default"].mode === "mobile") {
|
|
281
|
+
var fields = Object.keys(data).length;
|
|
282
|
+
if (data.keywords !== '' || fields > 1) {
|
|
283
|
+
this._internalVars.mobileText.innerHTML = 'Showing filtered activities & policies';
|
|
284
|
+
} else {
|
|
285
|
+
this._internalVars.mobileText.innerHTML = 'Showing all activities & policies';
|
|
286
|
+
}
|
|
287
|
+
this._internalVars.node.classList.remove("-drawer-open");
|
|
288
|
+
}
|
|
289
|
+
|
|
290
|
+
// fire onFilterSubmit Callback if there is one
|
|
291
|
+
setTimeout(function () {
|
|
292
|
+
if (_this5._options.onFilterSubmit) _this5._options.onFilterSubmit(data);
|
|
293
|
+
}, 10);
|
|
294
|
+
return false;
|
|
295
|
+
}
|
|
296
|
+
|
|
297
|
+
/**
|
|
298
|
+
* serializeForm()
|
|
299
|
+
* serialize form into object
|
|
300
|
+
*/
|
|
301
|
+
function serializeForm(form) {
|
|
302
|
+
if (!form || form.nodeName !== "FORM") {
|
|
303
|
+
return;
|
|
304
|
+
}
|
|
305
|
+
var i,
|
|
306
|
+
j,
|
|
307
|
+
obj = {};
|
|
308
|
+
for (i = form.elements.length - 1; i >= 0; i = i - 1) {
|
|
309
|
+
if (form.elements[i].name === "") {
|
|
310
|
+
continue;
|
|
311
|
+
}
|
|
312
|
+
switch (form.elements[i].nodeName) {
|
|
313
|
+
case 'INPUT':
|
|
314
|
+
switch (form.elements[i].type) {
|
|
315
|
+
case 'text':
|
|
316
|
+
case 'hidden':
|
|
317
|
+
case 'password':
|
|
318
|
+
case 'button':
|
|
319
|
+
case 'reset':
|
|
320
|
+
case 'submit':
|
|
321
|
+
obj[form.elements[i].name] = encodeURIComponent(form.elements[i].value);
|
|
322
|
+
break;
|
|
323
|
+
case 'checkbox':
|
|
324
|
+
case 'radio':
|
|
325
|
+
if (form.elements[i].checked) {
|
|
326
|
+
obj[form.elements[i].name] = encodeURIComponent(form.elements[i].value);
|
|
327
|
+
}
|
|
328
|
+
break;
|
|
329
|
+
case 'file':
|
|
330
|
+
break;
|
|
331
|
+
}
|
|
332
|
+
break;
|
|
333
|
+
case 'TEXTAREA':
|
|
334
|
+
obj[form.elements[i].name] = encodeURIComponent(form.elements[i].value);
|
|
335
|
+
break;
|
|
336
|
+
case 'SELECT':
|
|
337
|
+
switch (form.elements[i].type) {
|
|
338
|
+
case 'select-one':
|
|
339
|
+
obj[form.elements[i].name] = encodeURIComponent(form.elements[i].value);
|
|
340
|
+
break;
|
|
341
|
+
case 'select-multiple':
|
|
342
|
+
for (j = form.elements[i].options.length - 1; j >= 0; j = j - 1) {
|
|
343
|
+
if (form.elements[i].options[j].selected) {
|
|
344
|
+
obj[form.elements[i].name] = encodeURIComponent(form.elements[i].options[j].value);
|
|
345
|
+
}
|
|
346
|
+
}
|
|
347
|
+
break;
|
|
348
|
+
}
|
|
349
|
+
break;
|
|
350
|
+
case 'BUTTON':
|
|
351
|
+
switch (form.elements[i].type) {
|
|
352
|
+
case 'reset':
|
|
353
|
+
case 'submit':
|
|
354
|
+
case 'button':
|
|
355
|
+
obj[form.elements[i].name] = encodeURIComponent(form.elements[i].value);
|
|
356
|
+
break;
|
|
357
|
+
}
|
|
358
|
+
break;
|
|
359
|
+
}
|
|
360
|
+
}
|
|
361
|
+
return obj;
|
|
362
|
+
}
|
|
363
|
+
|
|
364
|
+
/**
|
|
365
|
+
* clearFilter()
|
|
366
|
+
* clears the timeline filters and unchecks all checkboxes
|
|
367
|
+
*/
|
|
368
|
+
function clearFilter(e) {
|
|
369
|
+
var _this6 = this;
|
|
370
|
+
e.preventDefault();
|
|
371
|
+
// unchecks all checkboxes
|
|
372
|
+
Array.prototype.forEach.call(this._internalVars.checkbox, function (el, i) {
|
|
373
|
+
el.checked = false;
|
|
374
|
+
});
|
|
375
|
+
|
|
376
|
+
// update notification bubble to 0
|
|
377
|
+
Array.prototype.forEach.call(this._internalVars.dropdownTrigger, function (el, i) {
|
|
378
|
+
updateNotificationBubble(el, 0);
|
|
379
|
+
});
|
|
380
|
+
|
|
381
|
+
// clears search field
|
|
382
|
+
if (this._internalVars.search) {
|
|
383
|
+
this._internalVars.search.value = '';
|
|
384
|
+
}
|
|
385
|
+
|
|
386
|
+
// fire onClearFilter Callback if there is one
|
|
387
|
+
setTimeout(function () {
|
|
388
|
+
if (_this6._options.onClearFilter) _this6._options.onClearFilter();
|
|
389
|
+
}, 10);
|
|
390
|
+
}
|
|
391
|
+
|
|
392
|
+
/**
|
|
393
|
+
* checkboxChangeHandler()
|
|
394
|
+
* updates the notification of how many checkboxes are selected per dropdown
|
|
395
|
+
*/
|
|
396
|
+
function checkboxChangeHandler(el) {
|
|
397
|
+
var currentNode = el.currentTarget;
|
|
398
|
+
var dropdownParent = findAncestor(currentNode, 'filter-dropdown');
|
|
399
|
+
var dropdownTrigger = dropdownParent.parentElement;
|
|
400
|
+
var total = dropdownParent.querySelectorAll('input[type="checkbox"]:checked').length;
|
|
401
|
+
updateNotificationBubble(dropdownTrigger, total);
|
|
402
|
+
}
|
|
403
|
+
|
|
404
|
+
/**
|
|
405
|
+
* findAncestor()
|
|
406
|
+
* Finds nearest ancestor with specified class
|
|
407
|
+
*/
|
|
408
|
+
function findAncestor(el, cls) {
|
|
409
|
+
while ((el = el.parentElement) && !el.classList.contains(cls));
|
|
410
|
+
return el;
|
|
411
|
+
}
|
|
412
|
+
|
|
413
|
+
/**
|
|
414
|
+
* updateNotificationBubble()
|
|
415
|
+
* updates the notification of how many checkboxes are selected per dropdown
|
|
416
|
+
*/
|
|
417
|
+
function updateNotificationBubble(el, value) {
|
|
418
|
+
var bubble = el.getElementsByClassName('dropdown-notify')[0];
|
|
419
|
+
bubble.innerHTML = value;
|
|
420
|
+
if (value > 0) {
|
|
421
|
+
bubble.classList.add("-visible");
|
|
422
|
+
} else {
|
|
423
|
+
bubble.classList.remove("-visible");
|
|
424
|
+
}
|
|
425
|
+
}
|
|
426
|
+
function updateAllNotificationBubbles(el) {
|
|
427
|
+
var dropdownParent = findAncestor(el, 'filter-dropdown');
|
|
428
|
+
var dropdownTrigger = dropdownParent.parentElement;
|
|
429
|
+
var total = dropdownParent.querySelectorAll('input[type="checkbox"]:checked').length;
|
|
430
|
+
updateNotificationBubble(dropdownTrigger, total);
|
|
431
|
+
}
|
|
432
|
+
|
|
433
|
+
/**
|
|
434
|
+
* dropdownClickHandler()
|
|
435
|
+
* Opens tab content for clicked tab and hides the rest
|
|
436
|
+
*/
|
|
437
|
+
function dropdownClickHandler(el) {
|
|
438
|
+
var currentNode = el.currentTarget;
|
|
439
|
+
currentNode.focus();
|
|
440
|
+
// add -active class
|
|
441
|
+
Array.prototype.map.call(this._internalVars.dropdownTrigger, function (e, rank) {
|
|
442
|
+
if (e === currentNode && e === document.activeElement) {
|
|
443
|
+
// if already has active class, remove it
|
|
444
|
+
if (utils.hasClass(e, 'filter-dropdown-trigger--active')) {
|
|
445
|
+
e.classList.remove("filter-dropdown-trigger--active");
|
|
446
|
+
if (_appState["default"].mode == 'desktop') e.setAttribute('aria-expanded', 'false');
|
|
447
|
+
} else {
|
|
448
|
+
e.classList.add("filter-dropdown-trigger--active");
|
|
449
|
+
if (_appState["default"].mode == 'desktop') {
|
|
450
|
+
e.setAttribute('aria-expanded', 'true');
|
|
451
|
+
}
|
|
452
|
+
}
|
|
453
|
+
} else {
|
|
454
|
+
e.classList.remove("filter-dropdown-trigger--active");
|
|
455
|
+
if (_appState["default"].mode == 'desktop') e.setAttribute('aria-expanded', 'false');
|
|
456
|
+
}
|
|
457
|
+
});
|
|
458
|
+
}
|
|
459
|
+
|
|
460
|
+
/**
|
|
461
|
+
* dropdownClickHandler()
|
|
462
|
+
* Opens tab content for clicked tab and hides the rest
|
|
463
|
+
*/
|
|
464
|
+
function outsideFieldClickHandler(el) {
|
|
465
|
+
var currentNode = el.currentTarget;
|
|
466
|
+
// add -active class
|
|
467
|
+
Array.prototype.map.call(this._internalVars.dropdownTrigger, function (e, rank) {
|
|
468
|
+
if (e === currentNode) {
|
|
469
|
+
// if already has active class, remove it
|
|
470
|
+
if (utils.hasClass(e, 'filter-dropdown-trigger--active')) {
|
|
471
|
+
e.classList.remove("filter-dropdown-trigger--active");
|
|
472
|
+
if (_appState["default"].mode == 'desktop') e.setAttribute('aria-expanded', 'false');
|
|
473
|
+
}
|
|
474
|
+
} else {
|
|
475
|
+
e.classList.remove("filter-dropdown-trigger--active");
|
|
476
|
+
if (_appState["default"].mode == 'desktop') e.setAttribute('aria-expanded', 'false');
|
|
477
|
+
}
|
|
478
|
+
});
|
|
479
|
+
}
|
|
480
|
+
|
|
481
|
+
/**
|
|
482
|
+
* searchFocus()
|
|
483
|
+
* Closes all dropdowns on search focus
|
|
484
|
+
*/
|
|
485
|
+
function searchFocus(el) {
|
|
486
|
+
// add -active class
|
|
487
|
+
Array.prototype.map.call(this._internalVars.dropdownTrigger, function (e, rank) {
|
|
488
|
+
e.classList.remove("filter-dropdown-trigger--active");
|
|
489
|
+
if (_appState["default"].mode == 'desktop') e.setAttribute('aria-expanded', 'false');
|
|
490
|
+
});
|
|
491
|
+
}
|
|
492
|
+
var _default = exports["default"] = TimelineFilter;
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports["default"] = void 0;
|
|
7
|
+
var _baseComponent = _interopRequireDefault(require("../../src/baseComponent"));
|
|
8
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
|
|
9
|
+
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); }
|
|
10
|
+
function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); }
|
|
11
|
+
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); } }
|
|
12
|
+
function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; }
|
|
13
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
|
|
14
|
+
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); }
|
|
15
|
+
var validateSettings = [{
|
|
16
|
+
setting: "content",
|
|
17
|
+
isRequired: true,
|
|
18
|
+
validate: "type",
|
|
19
|
+
possibleValues: ["string", "object"],
|
|
20
|
+
errorMessage: ["GDK ToTopArrow : Content must be defined and set to a DOM selector or Node"]
|
|
21
|
+
}, {
|
|
22
|
+
setting: "toTopArrowClicked",
|
|
23
|
+
isRequired: false,
|
|
24
|
+
validate: "type",
|
|
25
|
+
possibleValues: ["function"],
|
|
26
|
+
errorMessage: ["GDK ToTopArrow : toTopArrowClicked must be defined and set function"]
|
|
27
|
+
}];
|
|
28
|
+
var ToTopArrow = /*#__PURE__*/function () {
|
|
29
|
+
/**
|
|
30
|
+
* Refer to the design kit section of this component for JS examples and setting details.
|
|
31
|
+
* @param {string, Object} content
|
|
32
|
+
* A reference to the component node to toggle
|
|
33
|
+
*
|
|
34
|
+
* @param {function} [toTopArrowClicked]
|
|
35
|
+
* A callback function that gets fired when the To Top arrow is clicked
|
|
36
|
+
*
|
|
37
|
+
*/
|
|
38
|
+
function ToTopArrow(options) {
|
|
39
|
+
_classCallCheck(this, ToTopArrow);
|
|
40
|
+
console.log('ToTopArrow has been initialized');
|
|
41
|
+
this._internalVars = {
|
|
42
|
+
node: null //used for current node
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
//options with defaults set
|
|
46
|
+
this._defaults = {
|
|
47
|
+
"getDuration": function getDuration() {
|
|
48
|
+
return pageYOffset <= 2000 ? 300 : 1200;
|
|
49
|
+
}
|
|
50
|
+
};
|
|
51
|
+
|
|
52
|
+
// Create options by extending defaults with the passed in arguments
|
|
53
|
+
if (options && _typeof(options) === "object") {
|
|
54
|
+
this._options = _baseComponent["default"].extendDefaults(this._defaults, options);
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
//if the required options are valid set up the environment
|
|
58
|
+
if (_baseComponent["default"].validateSettings(this._options, validateSettings)) {
|
|
59
|
+
this._internalVars.contentType = _baseComponent["default"].getContentType(this);
|
|
60
|
+
setLocalVars.call(this);
|
|
61
|
+
setEvents.call(this);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
//Public Methods
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* removes the node from the dom and any events attached
|
|
69
|
+
*/
|
|
70
|
+
return _createClass(ToTopArrow, [{
|
|
71
|
+
key: "destroy",
|
|
72
|
+
value: function destroy() {
|
|
73
|
+
removeEvents.call(this);
|
|
74
|
+
this._internalVars.node.parentNode.removeChild(this._internalVars.node);
|
|
75
|
+
|
|
76
|
+
//a little garbage collection
|
|
77
|
+
for (var variableKey in this) {
|
|
78
|
+
if (this.hasOwnProperty(variableKey)) {
|
|
79
|
+
delete this[variableKey];
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}]);
|
|
84
|
+
}(); // Private Methods
|
|
85
|
+
/**
|
|
86
|
+
* setEvents()
|
|
87
|
+
* Sets all the events needed for the component
|
|
88
|
+
*/
|
|
89
|
+
function setEvents() {
|
|
90
|
+
this._internalVars.button.addEventListener("click", this._internalVars.handler);
|
|
91
|
+
window.addEventListener("scroll", toggleScrollBtnView.bind(this));
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
/**
|
|
95
|
+
* removeEvents()
|
|
96
|
+
* removes all events from the component
|
|
97
|
+
*/
|
|
98
|
+
function removeEvents() {
|
|
99
|
+
this._internalVars.button.removeEventListener("click", this._internalVars.handler);
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
/**
|
|
103
|
+
* toggleScrollBtnView()
|
|
104
|
+
* @param e
|
|
105
|
+
*/
|
|
106
|
+
function toggleScrollBtnView(e) {
|
|
107
|
+
if ((window.scrollY || screen.scrollY) > 200 && !this._internalVars.isDisplayed || (window.pageYOffset || screen.pageYOffset) > 200 && !this._internalVars.isDisplayed) {
|
|
108
|
+
this._internalVars.button.classList.add('displayed');
|
|
109
|
+
this._internalVars.isDisplayed = true;
|
|
110
|
+
} else if (window.scrollY <= 100 && this._internalVars.isDisplayed || window.pageYOffset <= 100 && this._internalVars.isDisplayed) {
|
|
111
|
+
this._internalVars.button.classList.remove('displayed');
|
|
112
|
+
this._internalVars.isDisplayed = false;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
/**
|
|
117
|
+
* toggleView()
|
|
118
|
+
* instantiate To Top Arrow
|
|
119
|
+
*/
|
|
120
|
+
|
|
121
|
+
function toggleScroll(e) {
|
|
122
|
+
//TODO: set correct Duration speed!
|
|
123
|
+
var duration = this._defaults.getDuration();
|
|
124
|
+
e.preventDefault();
|
|
125
|
+
var scrollStep = -window.scrollY / (duration / 15) || -window.pageYOffset / (duration / 15),
|
|
126
|
+
scrollInterval = setInterval(function () {
|
|
127
|
+
if (window.scrollY !== 0 && window.scrollY !== undefined || window.pageYOffset !== 0 && window.pageYOffset !== undefined) {
|
|
128
|
+
window.scrollBy(0, scrollStep);
|
|
129
|
+
} else clearInterval(scrollInterval);
|
|
130
|
+
}, 15);
|
|
131
|
+
if (this._options.toTopArrowClicked) {
|
|
132
|
+
this._options.toTopArrowClicked();
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
/**
|
|
137
|
+
* setLocalVars()
|
|
138
|
+
* set local vars to the ones passed in options
|
|
139
|
+
*/
|
|
140
|
+
function setLocalVars() {
|
|
141
|
+
if (this._internalVars.contentType === 'string') {
|
|
142
|
+
this._internalVars.node = document.querySelector(this._options.content);
|
|
143
|
+
} else if (this._internalVars.contentType === 'domNode') {
|
|
144
|
+
this._internalVars.node = this._options.content;
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
//add icon dom
|
|
148
|
+
this._internalVars.node.insertAdjacentHTML('beforeend', "<div class=\"icon-to-top-arrow\"></div>");
|
|
149
|
+
this._internalVars.button = this._internalVars.node;
|
|
150
|
+
this._internalVars.isDisplayed = false;
|
|
151
|
+
this._internalVars.handler = toggleScroll.bind(this);
|
|
152
|
+
}
|
|
153
|
+
var _default = exports["default"] = ToTopArrow;
|