geico-design-kit 7.0.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of geico-design-kit might be problematic. Click here for more details.

Files changed (107) hide show
  1. package/.babelrc +5 -0
  2. package/LICENSE +0 -0
  3. package/dist/analytics.js +119 -0
  4. package/dist/appState.js +56 -0
  5. package/dist/baseComponent.js +110 -0
  6. package/dist/components/Accordion.js +312 -0
  7. package/dist/components/AddressAutoComplete.js +220 -0
  8. package/dist/components/Alert.js +145 -0
  9. package/dist/components/BackgroundPattern.js +99 -0
  10. package/dist/components/BackgroundPatternPortfolio.js +242 -0
  11. package/dist/components/ButtonSwitch.js +236 -0
  12. package/dist/components/CardSelections.js +230 -0
  13. package/dist/components/CommonQuestionsSquares.js +169 -0
  14. package/dist/components/Confirmation.js +156 -0
  15. package/dist/components/ConsolidatedSummary.js +489 -0
  16. package/dist/components/CoverageGraph.js +201 -0
  17. package/dist/components/CreditCard.js +591 -0
  18. package/dist/components/CurrencyInput.js +302 -0
  19. package/dist/components/DatePicker.js +468 -0
  20. package/dist/components/DockedMessage.js +146 -0
  21. package/dist/components/DotNavigation.js +200 -0
  22. package/dist/components/EditComponent.js +128 -0
  23. package/dist/components/EditableTable.js +113 -0
  24. package/dist/components/InPageNavigation.js +360 -0
  25. package/dist/components/Loader.js +232 -0
  26. package/dist/components/MakePayment.js +361 -0
  27. package/dist/components/Modal.js +254 -0
  28. package/dist/components/MoreInfoButton.js +227 -0
  29. package/dist/components/MultipleSelectBox.js +217 -0
  30. package/dist/components/NavigationalBox.js +161 -0
  31. package/dist/components/Navigator.js +294 -0
  32. package/dist/components/PasswordMeter.js +201 -0
  33. package/dist/components/PayPlans.js +534 -0
  34. package/dist/components/SegmentedControl.js +327 -0
  35. package/dist/components/SortableTable.js +166 -0
  36. package/dist/components/Tabs.js +1 -0
  37. package/dist/components/TextAreaCountdown.js +219 -0
  38. package/dist/components/Timeline.js +498 -0
  39. package/dist/components/TimelineFilter.js +492 -0
  40. package/dist/components/ToTopArrow.js +153 -0
  41. package/dist/components/Tooltip.js +329 -0
  42. package/dist/components/Upsell.js +168 -0
  43. package/dist/components/VIN.js +271 -0
  44. package/dist/components/ValidateForm.js +938 -0
  45. package/dist/components/ViewMoreLess.js +191 -0
  46. package/dist/components/ZipCode.js +191 -0
  47. package/dist/components/portfolio.js +99 -0
  48. package/dist/geico-design-kit.js +141 -0
  49. package/dist/global/components.js +98 -0
  50. package/dist/global/footer.js +26 -0
  51. package/dist/global/nav.js +1257 -0
  52. package/dist/services/CharacterTypeService.js +106 -0
  53. package/dist/services/UserAgentService.js +73 -0
  54. package/dist/utils.js +79 -0
  55. package/package.json +32 -0
  56. package/src/analytics.js +82 -0
  57. package/src/appState.js +56 -0
  58. package/src/baseComponent.js +156 -0
  59. package/src/components/Accordion.js +336 -0
  60. package/src/components/AddressAutoComplete.js +236 -0
  61. package/src/components/Alert.js +135 -0
  62. package/src/components/BackgroundPattern.js +96 -0
  63. package/src/components/BackgroundPatternPortfolio.js +284 -0
  64. package/src/components/ButtonSwitch.js +241 -0
  65. package/src/components/CardSelections.js +240 -0
  66. package/src/components/CommonQuestionsSquares.js +179 -0
  67. package/src/components/Confirmation.js +160 -0
  68. package/src/components/ConsolidatedSummary.js +505 -0
  69. package/src/components/CoverageGraph.js +203 -0
  70. package/src/components/CreditCard.js +595 -0
  71. package/src/components/CurrencyInput.js +321 -0
  72. package/src/components/DatePicker.js +487 -0
  73. package/src/components/DockedMessage.js +142 -0
  74. package/src/components/DotNavigation.js +206 -0
  75. package/src/components/EditComponent.js +130 -0
  76. package/src/components/EditableTable.js +106 -0
  77. package/src/components/InPageNavigation.js +391 -0
  78. package/src/components/Loader.js +272 -0
  79. package/src/components/MakePayment.js +397 -0
  80. package/src/components/Modal.js +279 -0
  81. package/src/components/MoreInfoButton.js +243 -0
  82. package/src/components/MultipleSelectBox.js +211 -0
  83. package/src/components/NavigationalBox.js +163 -0
  84. package/src/components/Navigator.js +338 -0
  85. package/src/components/PasswordMeter.js +209 -0
  86. package/src/components/PayPlans.js +604 -0
  87. package/src/components/SegmentedControl.js +365 -0
  88. package/src/components/SortableTable.js +176 -0
  89. package/src/components/Tabs.js +0 -0
  90. package/src/components/TextAreaCountdown.js +231 -0
  91. package/src/components/Timeline.js +532 -0
  92. package/src/components/TimelineFilter.js +533 -0
  93. package/src/components/ToTopArrow.js +153 -0
  94. package/src/components/Tooltip.js +344 -0
  95. package/src/components/Upsell.js +196 -0
  96. package/src/components/VIN.js +289 -0
  97. package/src/components/ValidateForm.js +1030 -0
  98. package/src/components/ViewMoreLess.js +193 -0
  99. package/src/components/ZipCode.js +193 -0
  100. package/src/components/portfolio.js +106 -0
  101. package/src/geico-design-kit.js +144 -0
  102. package/src/global/components.js +92 -0
  103. package/src/global/footer.js +25 -0
  104. package/src/global/nav.js +1457 -0
  105. package/src/services/CharacterTypeService.js +107 -0
  106. package/src/services/UserAgentService.js +59 -0
  107. package/src/utils.js +82 -0
@@ -0,0 +1,329 @@
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
+ var _UserAgentService = _interopRequireDefault(require("../../src/services/UserAgentService"));
9
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
10
+ 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); }
11
+ function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); }
12
+ 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); } }
13
+ function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; }
14
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
15
+ 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); }
16
+ var validateSettings = [{
17
+ setting: "content",
18
+ isRequired: true,
19
+ validate: "type",
20
+ possibleValues: ["string", "object"],
21
+ errorMessage: ["GDK Tooltip : Content must be defined and set to a DOM selector or Node"]
22
+ }, {
23
+ setting: "toolTipText",
24
+ isRequired: false,
25
+ validate: "type",
26
+ possibleValues: ["string"],
27
+ errorMessage: ["GDK Tooltip : toolTipText must be set to a string"]
28
+ }, {
29
+ setting: "toolTipOpen",
30
+ isRequired: false,
31
+ validate: "type",
32
+ possibleValues: ["function"],
33
+ errorMessage: ["GDK Tooltip : toolTipOpen must be defined and set function"]
34
+ }, {
35
+ setting: "toolTipClose",
36
+ isRequired: false,
37
+ validate: "type",
38
+ possibleValues: ["function"],
39
+ errorMessage: ["GDK Tooltip : toolTipClose must be defined and set function"]
40
+ }];
41
+ var Tooltip = /*#__PURE__*/function () {
42
+ /**
43
+ * Refer to the design kit section of this component for JS examples and setting details.
44
+ * @param {string, Object} content
45
+ * A reference to the html Tooltip trigger's node
46
+ *
47
+ * @param {string} [toolTipText]
48
+ * Callback function fired once a 'filter-submit' is clicked
49
+ *
50
+ * @param {function} [toolTipOpen]
51
+ * A callback function triggered when a tooltip is displayed
52
+ *
53
+ * @param {function} [toolTipClose]
54
+ * A callback function triggered when a tooltip is closed manually
55
+ *
56
+ */
57
+ function Tooltip(options) {
58
+ _classCallCheck(this, Tooltip);
59
+ this._internalVars = {
60
+ node: null,
61
+ //used for content item
62
+ toolTip: null,
63
+ triggerOffset: null,
64
+ timeout: null,
65
+ delay: 300,
66
+ // delay 0.3 seconds
67
+ breakpoint: 768,
68
+ margin: 12,
69
+ wrapperElementId: "wrapper",
70
+ toolTiplElementClass: "tooltip",
71
+ toolTipTriggerElementClass: "tooltip-trigger",
72
+ toolTipCloseElementClass: "icon-close-20",
73
+ toolTipActiveClass: "tooltip--active",
74
+ wrapper: null,
75
+ closeBtn: null
76
+ };
77
+
78
+ //options with defaults set
79
+ this._defaults = {
80
+ toolTipText: null
81
+ };
82
+
83
+ // Create options by extending defaults with the passed in arugments
84
+ if (options && _typeof(options) === "object") {
85
+ this._options = _baseComponent["default"].extendDefaults(this._defaults, options);
86
+ }
87
+
88
+ //if the required options are valid set up the environment
89
+ if (_baseComponent["default"].validateSettings(this._options, validateSettings)) {
90
+ this._internalVars.contentType = _baseComponent["default"].getContentType(this);
91
+ setLocalVars.call(this);
92
+ setEvents.call(this);
93
+ }
94
+ }
95
+
96
+ //Public Methods
97
+
98
+ /**
99
+ * destroy()
100
+ * removes the node from the dom and any events attached
101
+ */
102
+ return _createClass(Tooltip, [{
103
+ key: "destroy",
104
+ value: function destroy() {
105
+ removeEvents.call(this);
106
+ this._internalVars.node.parentNode.removeChild(this._internalVars.node);
107
+ this._internalVars.toolTip.parentNode.removeChild(this._internalVars.toolTip);
108
+ //a little garbage collection
109
+ for (var variableKey in this) {
110
+ if (this.hasOwnProperty(variableKey)) {
111
+ delete this[variableKey];
112
+ }
113
+ }
114
+ }
115
+ }]);
116
+ }(); // Private Methods
117
+ /**
118
+ * setLocalVars()
119
+ * set all the local vars to passed in options
120
+ */
121
+ function setLocalVars() {
122
+ //determine the type of content passed in
123
+ if (this._internalVars.contentType === 'string') {
124
+ this._internalVars.node = document.querySelector(this._options.content);
125
+ } else if (this._internalVars.contentType === 'domNode') {
126
+ this._internalVars.node = this._options.content;
127
+ }
128
+ if (this._options.toolTipText === null) {
129
+ this._internalVars.toolTip = document.querySelector("#" + this._internalVars.node.getAttribute('data-tooltip-view'));
130
+ this._internalVars.node.parentNode.insertBefore(this._internalVars.toolTip, this._internalVars.node.nextSibling);
131
+ } else {
132
+ buildNewTooltip.call(this);
133
+ }
134
+ this._internalVars.wrapper = document.querySelector("#" + this._internalVars.wrapperElementId);
135
+ this._internalVars.closeBtn = this._internalVars.toolTip.querySelector("." + this._internalVars.toolTipCloseElementClass);
136
+ this._internalVars.toolTipClass = 'tooltip';
137
+ }
138
+
139
+ /**
140
+ * setEvents()
141
+ * Sets all the events needed for the component
142
+ */
143
+ function setEvents() {
144
+ var eventName = _UserAgentService["default"]._clickEventName();
145
+ if ("ontouchstart" in document.documentElement) {
146
+ this._internalVars.node.addEventListener(eventName, showToolTip.bind(this));
147
+ this._internalVars.node.addEventListener("mouseover", showToolTip.bind(this));
148
+ this._internalVars.closeBtn.addEventListener(eventName, closeBtnClickHandler.bind(this));
149
+ } else {
150
+ this._internalVars.node.addEventListener("mouseenter", showToolTip.bind(this));
151
+ this._internalVars.node.addEventListener(eventName, function (e) {
152
+ e.preventDefault();
153
+ });
154
+ this._internalVars.node.addEventListener("focus", showToolTip.bind(this));
155
+ this._internalVars.node.addEventListener("keydown", shiftTab.bind(this));
156
+ this._internalVars.closeBtn.addEventListener(eventName, closeBtnClickHandler.bind(this));
157
+ this._internalVars.closeBtn.addEventListener("blur", closeBtnClickHandler.bind(this));
158
+ }
159
+ }
160
+ function shiftTab(e) {
161
+ if (e.keyCode == '9' && e.shiftKey) {
162
+ hideToolTip.call(this);
163
+ }
164
+ }
165
+
166
+ /**
167
+ * removeEvents()
168
+ * removes all events from the component
169
+ */
170
+ function removeEvents() {
171
+ var eventName = _UserAgentService["default"]._clickEventName();
172
+ if ("ontouchstart" in document.documentElement) {
173
+ this._internalVars.node.removeEventListener(eventName, showToolTip.bind(this));
174
+ this._internalVars.node.removeEventListener("mouseover", showToolTip.bind(this));
175
+ this._internalVars.closeBtn.removeEventListener(eventName, closeBtnClickHandler.bind(this));
176
+ } else {
177
+ this._internalVars.node.removeEventListener("mouseenter", showToolTip.bind(this));
178
+ this._internalVars.closeBtn.removeEventListener(eventName, closeBtnClickHandler.bind(this));
179
+ this._internalVars.node.removeEventListener(eventName, function (e) {
180
+ e.preventDefault();
181
+ });
182
+ this._internalVars.node.removeEventListener("focus", showToolTip.bind(this));
183
+ this._internalVars.node.removeEventListener("keydown", shiftTab.bind(this));
184
+ this._internalVars.closeBtn.removeEventListener("blur", closeBtnClickHandler.bind(this));
185
+ }
186
+ }
187
+
188
+ /**
189
+ * closeBtnClickHandler()
190
+ * catches click on close button
191
+ */
192
+ function closeBtnClickHandler(e) {
193
+ console.log("closeBtnClickHandler");
194
+ e.preventDefault();
195
+ hideToolTip.call(this);
196
+ if (this._options.toolTipClose) {
197
+ var tooltip = e.currentTarget.parentNode;
198
+ this._options.toolTipClose(tooltip);
199
+ }
200
+ }
201
+
202
+ /**
203
+ * buildNewTooltip()
204
+ * use to dynamically create the tooltip
205
+ */
206
+ function buildNewTooltip() {
207
+ var toolTipId = this._internalVars.node.getAttribute('data-tooltip-view');
208
+ var dynamicToolTip = document.createElement('div');
209
+ dynamicToolTip.setAttribute('id', toolTipId);
210
+ dynamicToolTip.classList.add("tooltip");
211
+ dynamicToolTip.innerHTML = '<div tabindex="0">' + this._options.toolTipText + '</div><button class="icon-close-20" aria-label="Close tooltip"></button>';
212
+ this._internalVars.node.parentNode.insertBefore(dynamicToolTip, this._internalVars.node.nextSibling);
213
+ this._internalVars.toolTip = document.querySelector("#" + toolTipId);
214
+ }
215
+
216
+ /**
217
+ * showToolTip()
218
+ * show tooltip on hover
219
+ */
220
+ function showToolTip(e) {
221
+ var _this = this;
222
+ e.preventDefault();
223
+
224
+ // prep tooltip
225
+
226
+ var toolTipId = this._internalVars.node.getAttribute('data-tooltip-view');
227
+ var toolTip = document.querySelector("#" + toolTipId);
228
+ this._internalVars.node.parentNode.insertBefore(toolTip, this._internalVars.node.nextSibling);
229
+ this._internalVars.toolTip = toolTip;
230
+ try {
231
+ hideToolTip.call(this);
232
+ } catch (err) {
233
+ // clear existing tt
234
+ }
235
+ clearTimeout(this._internalVars.timeout);
236
+ var self = e.currentTarget;
237
+ self.classList.add(this._internalVars.toolTipActiveClass);
238
+ this._internalVars.activationArea = self;
239
+ self.addEventListener("mouseleave", settimeout.bind(this));
240
+ this._internalVars.toolTip.addEventListener("mouseleave", settimeout.bind(this));
241
+ this._internalVars.toolTip.addEventListener("mouseover", cleartimeout.bind(this));
242
+ this._internalVars.triggerOffset = self.getBoundingClientRect();
243
+ setTimeout(function () {
244
+ if (self.classList.contains("tooltip--active")) {
245
+ _this._internalVars.toolTip.style.display = "block";
246
+ //position the tooltip after setting to block
247
+ positionToolTip.call(_this);
248
+ //set opacity and let css transition fade it in
249
+ _this._internalVars.toolTip.style.opacity = 1;
250
+ }
251
+ }, this._internalVars.delay);
252
+ if (this._options.toolTipOpen) {
253
+ var triggerElement = e.currentTarget.parentNode,
254
+ tooltip = triggerElement.querySelector('.' + this._internalVars.toolTipClass);
255
+ this._options.toolTipOpen(tooltip);
256
+ }
257
+ }
258
+
259
+ /**
260
+ * cleartimeout()
261
+ * clears set timeout
262
+ */
263
+ function cleartimeout(e) {
264
+ clearTimeout(this._internalVars.timeout);
265
+ }
266
+
267
+ /**
268
+ * settimeout()
269
+ * sets a timeout to hide the tooltip
270
+ */
271
+ function settimeout(e) {
272
+ if (document.activeElement != e.currentTarget) {
273
+ clearTimeout(this._internalVars.timeout);
274
+ this._internalVars.node.classList.remove(this._internalVars.toolTipActiveClass);
275
+ this._internalVars.timeout = setTimeout(hideToolTip.bind(this), 200);
276
+ // this._internalVars.timeout = hideToolTip.call(this);
277
+ }
278
+ }
279
+
280
+ /**
281
+ * hideToolTip()
282
+ * hides the tooltip
283
+ */
284
+ function hideToolTip() {
285
+ var _this2 = this;
286
+ this._internalVars.toolTip.style.opacity = 0;
287
+ setTimeout(function () {
288
+ _this2._internalVars.toolTip.style.display = "none";
289
+ }, this._internalVars.delay);
290
+ }
291
+
292
+ /**
293
+ * positionToolTip()
294
+ * sets the position for the tooltip depending on trigger position
295
+ */
296
+ function positionToolTip() {
297
+ this._internalVars.toolTip.classList.remove("arrow-right");
298
+ this._internalVars.toolTip.classList.remove("arrow-bottom");
299
+ var winWidth = document.body.clientWidth;
300
+ var winHeight = window.innerHeight || document.documentElement.clientHeight;
301
+ var containerOffset = this._internalVars.wrapper.getBoundingClientRect();
302
+ var containerOffsetLeft = containerOffset.left;
303
+ var containerWidth = this._internalVars.wrapper.offsetWidth;
304
+ var tooltipWidth = this._internalVars.toolTip.offsetWidth;
305
+ var tooltipHeight = this._internalVars.toolTip.offsetHeight;
306
+ var xpos = null;
307
+ var ypos = null;
308
+ if (winWidth < this._internalVars.breakpoint) {
309
+ ypos = 25;
310
+ if (this._internalVars.triggerOffset.left - containerOffsetLeft + tooltipWidth < containerWidth) {
311
+ xpos = 0;
312
+ } else {
313
+ xpos = -(this._internalVars.triggerOffset.left - containerOffsetLeft + tooltipWidth - containerWidth + 10);
314
+ }
315
+ } else {
316
+ xpos = 40;
317
+ ypos = -15;
318
+ if (this._internalVars.triggerOffset.left - containerOffsetLeft + tooltipWidth + 50 < containerWidth) {
319
+ xpos = 40;
320
+ ypos = -15;
321
+ } else {
322
+ xpos = -(tooltipWidth + 5);
323
+ this._internalVars.toolTip.classList.add("arrow-right");
324
+ }
325
+ }
326
+ this._internalVars.toolTip.style.left = xpos + "px";
327
+ this._internalVars.toolTip.style.top = ypos + "px";
328
+ }
329
+ var _default = exports["default"] = Tooltip;
@@ -0,0 +1,168 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports["default"] = void 0;
7
+ var utils = _interopRequireWildcard(require("../../src/utils"));
8
+ var _baseComponent = _interopRequireDefault(require("../../src/baseComponent"));
9
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
10
+ 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); }
11
+ 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; }
12
+ 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); }
13
+ 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); } }
14
+ function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; }
15
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
16
+ 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); }
17
+ function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); }
18
+ var validateSettings = [{
19
+ setting: "content",
20
+ isRequired: true,
21
+ validate: "type",
22
+ possibleValues: ["string", "object"],
23
+ errorMessage: ["GDK UpsellCarousel : Content must be defined and set to a DOM selector or Node"]
24
+ }];
25
+ var UpsellCarousel = /*#__PURE__*/_createClass(function UpsellCarousel(options) {
26
+ _classCallCheck(this, UpsellCarousel);
27
+ console.log('UpsellCarousel initialized');
28
+ this._internalVars = {
29
+ node: null
30
+ };
31
+
32
+ //options with defaults set
33
+ this._defaults = {};
34
+
35
+ // Create options by extending defaults with the passed in arguments
36
+ if (options && _typeof(options) === "object") {
37
+ this._options = _baseComponent["default"].extendDefaults(this._defaults, options);
38
+ }
39
+
40
+ //if the required options are valid set up the environment
41
+ if (_baseComponent["default"].validateSettings(this._options, validateSettings)) {
42
+ this._internalVars.contentType = _baseComponent["default"].getContentType(this);
43
+ setLocalVars.call(this);
44
+ setEvents.call(this);
45
+ if (this._internalVars.node) {
46
+ carouselDefaults.call(this);
47
+ }
48
+ }
49
+ }); // Private Methods
50
+ /**
51
+ * setEvents()
52
+ * Sets all the events needed for the component
53
+ */
54
+ function setEvents() {
55
+ window.addEventListener("load", carouselDefaults.bind(this));
56
+ window.addEventListener("resize", carouselDefaults.bind(this));
57
+ for (var i = 0; i < this._internalVars.carouselChevronBtn.length; i++) {
58
+ this._internalVars.carouselChevronBtn[i].addEventListener("click", carouselClick.bind(this, this._internalVars.carouselChevronBtn[i]));
59
+ }
60
+ }
61
+
62
+ /**
63
+ * removeEvents()
64
+ * removes all events from the component
65
+ */
66
+ function removeEvents() {
67
+ window.removeEventListener("load", carouselDefaults.bind(this));
68
+ window.removeEventListener("resize", carouselDefaults.bind(this));
69
+ for (var i = 0; i < this._internalVars.carouselChevronBtn.length; i++) {
70
+ this._internalVars.carouselChevronBtn[i].removeEventListener("click", carouselClick.bind(this, this._internalVars.carouselChevronBtn[i]));
71
+ }
72
+ }
73
+
74
+ /**
75
+ * toggleView()
76
+ * instantiate View More/Less
77
+ */
78
+ function carouselDefaults() {
79
+ if (window.innerWidth > this._internalVars.carouselIconDisplay) {
80
+ this._internalVars.carouselIconNumber = 4;
81
+ } else if (window.innerWidth > this._internalVars.carouselIconSmallDisplay) {
82
+ this._internalVars.carouselIconNumber = 2;
83
+ } else {
84
+ this._internalVars.carouselIconNumber = 1;
85
+ }
86
+ this._internalVars.carouselIconWidth = this._internalVars.carouselObject.querySelector(this._internalVars.carouselIconClass).clientWidth;
87
+ this._internalVars.carouselObject.style.width = (this._internalVars.carouselIconNumber + 2) * this._internalVars.carouselIconWidth + 'px';
88
+ this._internalVars.carouselItemsLeft = this._internalVars.carouselUpsellNumber - this._internalVars.carouselIconNumber;
89
+ this._internalVars.carouselLeftVal = 0;
90
+ this._internalVars.carouselObject.querySelector(this._internalVars.carouselIconWrapperClass).style.left = 0 + 'px';
91
+ var wrapperWidth = this._internalVars.carouselIconWidth * this._internalVars.carouselIconNumber,
92
+ containerWidth = this._internalVars.carouselIconWidth * this._internalVars.carouselUpsellNumber;
93
+ document.querySelector(this._internalVars.carouselWrapperClass).style.width = wrapperWidth + 'px';
94
+ document.querySelector(this._internalVars.carouselIconWrapperClass).style.width = containerWidth + 'px';
95
+ chevronState.call(this);
96
+ }
97
+ function carouselClick(e) {
98
+ if (!e.classList.contains("disabled")) {
99
+ var itemsLeftWidth = document.querySelector(this._internalVars.carouselIconWrapperClass).style.getPropertyValue("left"),
100
+ itemsLeftWidthValue = itemsLeftWidth.slice(0, -2),
101
+ itemsLeftWidthVal = Number(itemsLeftWidthValue.replace(/^-/, "")),
102
+ itemsRightWidth = this._internalVars.carouselIconWidth * this._internalVars.carouselUpsellNumber - itemsLeftWidthVal - this._internalVars.carouselIconWidth * this._internalVars.carouselIconNumber;
103
+ var operand = null;
104
+ var totalScrollValue = null;
105
+ var movementValue = null;
106
+ if (e.querySelector("span").classList.contains("icon-chevron-right")) {
107
+ operand = "-";
108
+ totalScrollValue = itemsRightWidth;
109
+ } else {
110
+ operand = "+";
111
+ totalScrollValue = itemsLeftWidthVal;
112
+ }
113
+ if (this._internalVars.carouselIconWidth * this._internalVars.carouselIconNumber > totalScrollValue) {
114
+ movementValue = totalScrollValue;
115
+ } else {
116
+ movementValue = this._internalVars.carouselIconWidth * this._internalVars.carouselIconNumber;
117
+ }
118
+ if (operand === "+") {
119
+ this._internalVars.carouselObject.querySelector(this._internalVars.carouselIconWrapperClass).style.left = Number(itemsLeftWidthValue) + movementValue + 'px';
120
+ } else {
121
+ this._internalVars.carouselObject.querySelector(this._internalVars.carouselIconWrapperClass).style.left = Number(itemsLeftWidthValue) - movementValue + 'px';
122
+ }
123
+ chevronState.call(this);
124
+ }
125
+ }
126
+ function chevronState() {
127
+ var itemsLeftWidth = document.querySelector(this._internalVars.carouselIconWrapperClass).style.getPropertyValue("left"),
128
+ itemsLeftWidthValue = itemsLeftWidth.slice(0, -2),
129
+ itemsLeftWidthVal = Number(itemsLeftWidthValue.replace(/^-/, "")),
130
+ itemsRightWidth = this._internalVars.carouselIconWidth * this._internalVars.carouselUpsellNumber - itemsLeftWidthVal - this._internalVars.carouselIconWidth * this._internalVars.carouselIconNumber;
131
+ if (itemsLeftWidthVal === 0) {
132
+ this._internalVars.carouselChevronBtn[0].classList.add("disabled");
133
+ this._internalVars.carouselChevronBtn[0].children[0].setAttribute("disabled", "disabled");
134
+ } else {
135
+ this._internalVars.carouselChevronBtn[0].classList.remove("disabled");
136
+ this._internalVars.carouselChevronBtn[0].children[0].removeAttribute("disabled");
137
+ }
138
+ if (itemsRightWidth === 0) {
139
+ this._internalVars.carouselChevronBtn[1].classList.add("disabled");
140
+ this._internalVars.carouselChevronBtn[1].children[0].setAttribute("disabled", "disabled");
141
+ } else {
142
+ this._internalVars.carouselChevronBtn[1].classList.remove("disabled");
143
+ this._internalVars.carouselChevronBtn[1].children[0].removeAttribute("disabled");
144
+ }
145
+ }
146
+
147
+ /**
148
+ * setLocalVars()
149
+ * set local vars to the ones passed in options
150
+ */
151
+ function setLocalVars() {
152
+ if (this._internalVars.contentType === 'string') {
153
+ this._internalVars.node = document.querySelector(this._options.content);
154
+ } else if (this._internalVars.contentType === 'domNode') {
155
+ this._internalVars.node = this._options.content;
156
+ }
157
+ this._internalVars.carouselIconDisplay = 645;
158
+ this._internalVars.carouselIconSmallDisplay = 440;
159
+ this._internalVars.carouselIconNumber = 0;
160
+ this._internalVars.carouselIconClass = '.carousel-upsell-product';
161
+ this._internalVars.carouselWrapperClass = '.icon-carousel';
162
+ this._internalVars.carouselIconWrapperClass = '.icon-carousel-display';
163
+ this._internalVars.carouselIconChevronClass = '.carousel-upsell-chevron';
164
+ this._internalVars.carouselObject = this._internalVars.node;
165
+ this._internalVars.carouselUpsellNumber = this._internalVars.carouselObject.querySelectorAll(this._internalVars.carouselIconClass).length;
166
+ this._internalVars.carouselChevronBtn = this._internalVars.carouselObject.querySelectorAll(this._internalVars.carouselIconChevronClass);
167
+ }
168
+ var _default = exports["default"] = UpsellCarousel;