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.

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,203 @@
1
+ import baseComponent from '../../src/baseComponent';
2
+
3
+ const validateSettings = [{
4
+ setting: 'content',
5
+ isRequired: true,
6
+ validate: 'type',
7
+ possibleValues: ['string', 'object'],
8
+ errorMessage: ['GDK Alert : Content must be defined and set to a DOM selector or Node']
9
+ }];
10
+
11
+ class CoverageGraph {
12
+ /**
13
+ * These are settings for the instantiation. Refer to the design kit section of this component for JS setting examples.
14
+ * @param {string|Object} content
15
+ * A reference to the coverage graph node
16
+ */
17
+ constructor(options) {
18
+ this._internalVars = {
19
+ node: null, //used for current node
20
+ breakdownNode: null,
21
+ legendNode: null,
22
+ labelArray: null,
23
+ costArray: null,
24
+ percentArray: [],
25
+ totalSum: 0,
26
+ percentSum: 0,
27
+ centerCircle: null
28
+ };
29
+
30
+ //options with defaults set
31
+ this._defaults = {};
32
+
33
+ // Create options by extending defaults with the passed in arugments
34
+ if (options && typeof options === "object") {
35
+ this._options = baseComponent.extendDefaults(this._defaults, options);
36
+ }
37
+
38
+ //if the required options are valid set up the environment
39
+ if (baseComponent.validateSettings(this._options, validateSettings)) {
40
+ this._internalVars.contentType = baseComponent.getContentType(this);
41
+ setLocalVars.call(this);
42
+ setEvents.call(this);
43
+ appendCenterCost.call(this);
44
+ createSlices.call(this);
45
+ createLegend.call(this);
46
+ }
47
+ }
48
+
49
+
50
+ //Public Methods
51
+
52
+ /**
53
+ * destroy()
54
+ * removes the node from the dom and any events attached
55
+ */
56
+ destroy(){
57
+ $(this._internalVars.node).datepicker("destroy");
58
+ this._internalVars.node.parentNode.removeChild(this._internalVars.node);
59
+
60
+ //a little garbage collection
61
+ for (var variableKey in this){
62
+ if (this.hasOwnProperty(variableKey)){
63
+ delete this[variableKey];
64
+ }
65
+ }
66
+ }
67
+ }
68
+
69
+ // Private Methods
70
+ function setLocalVars() {
71
+ if(this._internalVars.contentType === 'string') {
72
+ this._internalVars.node = document.querySelector(this._options.content);
73
+ } else if (this._internalVars.contentType === 'domNode') {
74
+ this._internalVars.node = this._options.content;
75
+ }
76
+
77
+ this._internalVars.breakdownNode = this._internalVars.node.querySelector('.coverage-graph-breakdown');
78
+ if(this._internalVars.breakdownNode.dataset !== undefined){
79
+ this._internalVars.costArray = this._internalVars.breakdownNode.dataset.costbreakdown.split(" ");
80
+ this._internalVars.labelArray = this._internalVars.breakdownNode.dataset.labels.split(",");
81
+ }else{
82
+ this._internalVars.labelArray = this._internalVars.breakdownNode.getAttribute('data-labels').split(",");
83
+ this._internalVars.costArray = this._internalVars.breakdownNode.getAttribute('data-costbreakdown').split(" ");
84
+ }
85
+ this._internalVars.centerCircle = this._internalVars.breakdownNode.querySelector('.circle');
86
+ this._internalVars.legendNode = this._internalVars.node.querySelector('.legend');
87
+
88
+ }
89
+
90
+ /**
91
+ * setEvents()
92
+ * Sets all the events needed for the component
93
+ */
94
+ function setEvents() {
95
+
96
+ }
97
+
98
+ function appendCenterCost(){
99
+ var monetary = this._internalVars.centerCircle.querySelector('.monetary');
100
+ var sumText = getCostSum.call(this);
101
+ var costBreakdownArray = sumText.toString().split(".");
102
+ var textNodeSum = document.createTextNode(costBreakdownArray[0]);
103
+ monetary.appendChild(textNodeSum);
104
+ var supElement = document.createElement('SUP');
105
+ var textNodeSumDecimal = document.createTextNode("."+costBreakdownArray[1]);
106
+ supElement.appendChild(textNodeSumDecimal);
107
+ monetary.appendChild(supElement);
108
+ }
109
+
110
+ function createSlices(){
111
+ var percentarray = createPercentageArray.call(this);
112
+ var sheet = (function(){
113
+ var style = document.createElement('STYLE');
114
+ style.appendChild(document.createTextNode(""));
115
+ document.head.appendChild(style);
116
+ return style.sheet;
117
+ })();
118
+ for(var j=0; j<percentarray.length;j++){
119
+ var newDiv = document.createElement('DIV');
120
+ this._internalVars.breakdownNode.appendChild(newDiv);
121
+ if (percentarray[j]>=180) {
122
+ newDiv.setAttribute('class', 'pie big');
123
+ }
124
+ else{
125
+ newDiv.setAttribute('class', 'pie');}
126
+ newDiv.setAttribute('data-start', this._internalVars.percentSum.toFixed(1));
127
+ if (j!==0) {
128
+ setPrefixes(newDiv, "Transform", "rotate("+this._internalVars.percentSum+"deg)");
129
+ sheet.insertRule(insertDataStartCSS(this._internalVars.percentSum), 0);
130
+ }
131
+ this._internalVars.percentSum += parseFloat(percentarray[j]);
132
+ newDiv.setAttribute('data-value', percentarray[j]);
133
+ sheet.insertRule(insertDataValueCSS(percentarray[j], percentarray.length, j), 0);
134
+ }
135
+ }
136
+
137
+ function insertDataValueCSS(degree, length, index){
138
+ degree=parseFloat(degree);
139
+ var degree1 = degree;
140
+ if(index!=length-1){
141
+ degree1 = parseFloat(degree+1);
142
+ }
143
+ var cssString = ".pie[data-value='"+degree+"']:BEFORE { -moz-transform: rotate("+degree1+"deg); -ms-transform: rotate("+degree1+"deg); -webkit-transform: rotate("+degree1+"deg); -o-transform: rotate("+degree1+"deg); transform:rotate("+degree1+"deg);}";
144
+ return cssString;
145
+ }
146
+
147
+ function insertDataStartCSS(degree){
148
+ degree = parseFloat(degree).toFixed(1);
149
+ var cssString = ".pie[data-start='"+degree+"'] { -moz-transform: rotate("+degree+"deg); /* Firefox */ -ms-transform: rotate("+degree+"deg); /* IE */ -webkit-transform: rotate("+degree+"deg); /* Safari and Chrome */ -o-transform: rotate("+degree+"deg); /* Opera */transform:rotate("+degree+"deg);}";
150
+ return cssString;
151
+ }
152
+
153
+ function setPrefixes(element, property, value) {
154
+ element.style["webkit" + property] = value;
155
+ element.style["moz" + property] = value;
156
+ element.style["ms" + property] = value;
157
+ element.style["o" + property] = value;
158
+ }
159
+
160
+ function getCostSum(){
161
+ var costArray = this._internalVars.costArray;
162
+ var sum = this._internalVars.totalSum;
163
+ for(var i=0;i<costArray.length;i++){
164
+ sum += parseFloat(costArray[i]);
165
+ }
166
+ sum = sum.toFixed(2);
167
+ return sum;
168
+ }
169
+
170
+ function createLegend(){
171
+ var costArray = this._internalVars.costArray;
172
+ var labelArray = this._internalVars.labelArray;
173
+ for(var i=0;i<costArray.length;i++){
174
+ this._internalVars.legendNode.querySelector('ul').appendChild(createLi(labelArray[i], parseFloat(costArray[i])));
175
+ }
176
+ }
177
+
178
+ function createPercentageArray(){
179
+ var costArray = this._internalVars.costArray;
180
+ var costSum = getCostSum.call(this);
181
+ for(var j=0;j<costArray.length;j++){
182
+ this._internalVars.percentArray.push(costToPercentage(costArray[j], costSum));
183
+ }
184
+ return this._internalVars.percentArray;
185
+ }
186
+
187
+ function costToPercentage(cost, sum){
188
+ var percent = (((cost/sum))*360);
189
+ return percent;
190
+ }
191
+
192
+ function createLi(item, cost){
193
+ var liEl = document.createElement("LI");
194
+ var divEl = document.createElement("DIV");
195
+ divEl.setAttribute('class', 'legend-item');
196
+ liEl.appendChild(divEl);
197
+ var labelString = item + " ($" + cost.toFixed(2) + ")";
198
+ var hello = document.createTextNode(labelString);
199
+ liEl.appendChild(hello);
200
+ return liEl;
201
+ }
202
+
203
+ export default CoverageGraph;