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,206 @@
|
|
|
1
|
+
import baseComponent from '../../src/baseComponent';
|
|
2
|
+
import UserAgentService from '../../src/services/UserAgentService';
|
|
3
|
+
|
|
4
|
+
const validateSettings = [
|
|
5
|
+
{
|
|
6
|
+
setting : "content",
|
|
7
|
+
isRequired : true,
|
|
8
|
+
validate : "type",
|
|
9
|
+
possibleValues : ["string","object"],
|
|
10
|
+
errorMessage : ["GDK DotNavigation : Content must be defined and set to a DOM selector or Node"]
|
|
11
|
+
},
|
|
12
|
+
{
|
|
13
|
+
setting : "onClicked",
|
|
14
|
+
isRequired : false,
|
|
15
|
+
validate : "type",
|
|
16
|
+
possibleValues : ["function"],
|
|
17
|
+
errorMessage : ["GDK DotNavigation : onClicked must be a function"]
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
setting : "startingPos",
|
|
21
|
+
isRequired : false,
|
|
22
|
+
validate : "type",
|
|
23
|
+
possibleValues : ["number"],
|
|
24
|
+
errorMessage : ["GDK DotNavigation : startingPos must be set to a number"]
|
|
25
|
+
}
|
|
26
|
+
];
|
|
27
|
+
|
|
28
|
+
class DotNavigation{
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* These are settings for the instantiation. Refer to the design kit section of this component for JS setting examples.
|
|
32
|
+
* @param {string|Object} content
|
|
33
|
+
* A reference to the html Dot Navigation node
|
|
34
|
+
*
|
|
35
|
+
* @param {function} [onClicked]
|
|
36
|
+
* Callback function fired once a item is clicked
|
|
37
|
+
*
|
|
38
|
+
* @param {number} [startingPos=1]
|
|
39
|
+
* The number of the navigation item to display on initialization
|
|
40
|
+
*/
|
|
41
|
+
constructor(options) {
|
|
42
|
+
|
|
43
|
+
console.log("Initialized Dot Navigation");
|
|
44
|
+
|
|
45
|
+
this._internalVars = {
|
|
46
|
+
node: null,//used for content item
|
|
47
|
+
navItem: null,
|
|
48
|
+
svg: `<svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="14px" height="14px" viewBox="0 0 16 16"preserveAspectRatio="none"><circle cx="8" cy="8" r="6.215"/></svg>`
|
|
49
|
+
};
|
|
50
|
+
|
|
51
|
+
//options with defaults set
|
|
52
|
+
this._defaults = {
|
|
53
|
+
startingPos: 1
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
// Create options by extending defaults with the passed in arugments
|
|
57
|
+
if (options && typeof options === "object") {
|
|
58
|
+
this._options = baseComponent.extendDefaults(this._defaults, options);
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
//if the required options are valid set up the environment
|
|
62
|
+
if( baseComponent.validateSettings(this._options, validateSettings) ){
|
|
63
|
+
this._internalVars.contentType = baseComponent.getContentType(this);
|
|
64
|
+
setLocalVars.call(this);
|
|
65
|
+
setEvents.call(this);
|
|
66
|
+
setStartPosition.call(this);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
//Public Methods
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
* @param {number} newIndex
|
|
75
|
+
* newIndex is the number of the navigation item to display first on initialization
|
|
76
|
+
*/
|
|
77
|
+
goTo(newIndex){
|
|
78
|
+
|
|
79
|
+
let index = newIndex - 1;
|
|
80
|
+
|
|
81
|
+
Array.prototype.map.call(this._internalVars.navItem, (e, rank)=> {
|
|
82
|
+
if(rank===index){
|
|
83
|
+
e.parentNode.classList.add("dot-navigation-active");
|
|
84
|
+
} else {
|
|
85
|
+
e.parentNode.classList.remove("dot-navigation-active");
|
|
86
|
+
}
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
/**
|
|
91
|
+
* destroy()
|
|
92
|
+
* removes the node from the dom and any events attached
|
|
93
|
+
*/
|
|
94
|
+
destroy(){
|
|
95
|
+
removeEvents.call(this);
|
|
96
|
+
this._internalVars.node.parentNode.removeChild(this._internalVars.node);
|
|
97
|
+
|
|
98
|
+
//a little garbage collection
|
|
99
|
+
for (var variableKey in this){
|
|
100
|
+
if (this.hasOwnProperty(variableKey)){
|
|
101
|
+
delete this[variableKey];
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
// Private Methods
|
|
109
|
+
|
|
110
|
+
/**
|
|
111
|
+
* setLocalVars()
|
|
112
|
+
* set all the local vars to passed in options
|
|
113
|
+
*/
|
|
114
|
+
function setLocalVars() {
|
|
115
|
+
//determine the type of content passed in
|
|
116
|
+
if(this._internalVars.contentType === 'string'){
|
|
117
|
+
this._internalVars.node = document.querySelector(this._options.content);
|
|
118
|
+
}else if(this._internalVars.contentType === 'domNode'){
|
|
119
|
+
this._internalVars.node = this._options.content;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
this._internalVars.navItem = this._internalVars.node.querySelectorAll("li a");
|
|
123
|
+
|
|
124
|
+
//set click events
|
|
125
|
+
Array.prototype.forEach.call(this._internalVars.navItem, (el, i)=>{
|
|
126
|
+
el.insertAdjacentHTML('beforeend', this._internalVars.svg);
|
|
127
|
+
});
|
|
128
|
+
|
|
129
|
+
this._internalVars.handler = dotNavigationClickHandler.bind(this);
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
|
|
133
|
+
/**
|
|
134
|
+
* setEvents()
|
|
135
|
+
* Sets all the events needed for the component
|
|
136
|
+
*/
|
|
137
|
+
function setEvents() {
|
|
138
|
+
|
|
139
|
+
const eventName = UserAgentService._clickEventName();
|
|
140
|
+
|
|
141
|
+
//set click events
|
|
142
|
+
Array.prototype.forEach.call(this._internalVars.navItem, (el, i)=>{
|
|
143
|
+
el.addEventListener(eventName,this._internalVars.handler);
|
|
144
|
+
});
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
|
|
148
|
+
/**
|
|
149
|
+
* removeEvents()
|
|
150
|
+
* removes all events from the component
|
|
151
|
+
*/
|
|
152
|
+
function removeEvents() {
|
|
153
|
+
|
|
154
|
+
const eventName = UserAgentService._clickEventName();
|
|
155
|
+
|
|
156
|
+
//remove click events
|
|
157
|
+
Array.prototype.forEach.call(this._internalVars.navItem, (el, i)=>{
|
|
158
|
+
el.removeEventListener(eventName,this._internalVars.handler);
|
|
159
|
+
});
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
|
|
163
|
+
/**
|
|
164
|
+
* dotNavigationClickHandler()
|
|
165
|
+
* Gets fired when you click on a navigation item
|
|
166
|
+
*/
|
|
167
|
+
function dotNavigationClickHandler(el){
|
|
168
|
+
el.preventDefault();
|
|
169
|
+
let currentNode = el.currentTarget;
|
|
170
|
+
let currentIndex;
|
|
171
|
+
// add selected class
|
|
172
|
+
Array.prototype.map.call(this._internalVars.navItem, (e, rank)=> {
|
|
173
|
+
if(e===currentNode){
|
|
174
|
+
e.parentNode.classList.add("dot-navigation-active");
|
|
175
|
+
currentIndex = rank;
|
|
176
|
+
} else {
|
|
177
|
+
e.parentNode.classList.remove("dot-navigation-active");
|
|
178
|
+
}
|
|
179
|
+
});
|
|
180
|
+
|
|
181
|
+
// fire onClicked Callback if there is one
|
|
182
|
+
setTimeout( ()=> {
|
|
183
|
+
if(this._options.onClicked)
|
|
184
|
+
this._options.onClicked(currentIndex + 1);
|
|
185
|
+
}, 10);
|
|
186
|
+
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
/**
|
|
190
|
+
* setStartPosition()
|
|
191
|
+
* Set starting link
|
|
192
|
+
*/
|
|
193
|
+
function setStartPosition() {
|
|
194
|
+
|
|
195
|
+
let linkIndex = this._options.startingPos - 1;
|
|
196
|
+
|
|
197
|
+
Array.prototype.map.call(this._internalVars.navItem, (e, rank)=> {
|
|
198
|
+
if(rank===linkIndex){
|
|
199
|
+
e.parentNode.classList.add("dot-navigation-active");
|
|
200
|
+
}
|
|
201
|
+
});
|
|
202
|
+
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
|
|
206
|
+
export default DotNavigation;
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
import appState from '../../src/appState';
|
|
2
|
+
|
|
3
|
+
import baseComponent from '../../src/baseComponent';
|
|
4
|
+
|
|
5
|
+
const validateSettings = [
|
|
6
|
+
{
|
|
7
|
+
setting : "content",
|
|
8
|
+
isRequired : true,
|
|
9
|
+
validate : "type",
|
|
10
|
+
possibleValues : ["string","object"],
|
|
11
|
+
errorMessage : ["GDK Tabs : Content must be defined and set to a DOM selector or Node"]
|
|
12
|
+
}
|
|
13
|
+
];
|
|
14
|
+
|
|
15
|
+
class EditComponent {
|
|
16
|
+
/**
|
|
17
|
+
* These are settings for the instantiation. Refer to the design kit section of this component for JS setting examples.
|
|
18
|
+
* @param {string|Object} content
|
|
19
|
+
* A reference to the edit component node
|
|
20
|
+
*/
|
|
21
|
+
constructor(options) {
|
|
22
|
+
|
|
23
|
+
this._internalVars = {};
|
|
24
|
+
|
|
25
|
+
//options with defaults set
|
|
26
|
+
this._defaults = {
|
|
27
|
+
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
// Create options by extending defaults with the passed in arugments
|
|
31
|
+
if (options && typeof options === "object") {
|
|
32
|
+
this._options = baseComponent.extendDefaults(this._defaults, options);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
//if the required options are valid set up the environment
|
|
36
|
+
if( baseComponent.validateSettings(this._options, validateSettings) ){
|
|
37
|
+
this._internalVars.contentType = baseComponent.getContentType(this);
|
|
38
|
+
setLocalVars.call(this);
|
|
39
|
+
|
|
40
|
+
setEvents.call(this);
|
|
41
|
+
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
//Public Methods
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* removes the node from the dom and any events attached
|
|
49
|
+
*/
|
|
50
|
+
destroy(){
|
|
51
|
+
removeEvents.call(this);
|
|
52
|
+
this._internalVars.node.parentNode.removeChild(this._internalVars.node);
|
|
53
|
+
|
|
54
|
+
//a little garbage collection
|
|
55
|
+
for (var variableKey in this){
|
|
56
|
+
if (this.hasOwnProperty(variableKey)){
|
|
57
|
+
delete this[variableKey];
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
function setLocalVars() {
|
|
64
|
+
//determine the type of content passed in
|
|
65
|
+
if(this._internalVars.contentType === 'string'){
|
|
66
|
+
this._internalVars.node = document.querySelector(this._options.content);
|
|
67
|
+
}else if(this._internalVars.contentType === 'domNode'){
|
|
68
|
+
this._internalVars.node = this._options.content;
|
|
69
|
+
}
|
|
70
|
+
this._internalVars.editFormPlaceholder = this._internalVars.node.querySelector('.edit-form-placeholder');
|
|
71
|
+
this._internalVars.editForm = this._internalVars.editFormPlaceholder.querySelector('form');
|
|
72
|
+
this._internalVars.editBtn = this._internalVars.node.querySelector('.btn--edit-list');
|
|
73
|
+
this._internalVars.cancelBtn = this._internalVars.editForm.querySelector('.btn-cancel');
|
|
74
|
+
this._internalVars.submitBtn = this._internalVars.editForm.querySelector('.btn-submit');
|
|
75
|
+
|
|
76
|
+
this._internalVars.editHandler = expandEditForm.bind(this);
|
|
77
|
+
this._internalVars.cancelHandler = collapseEditForm.bind(this);
|
|
78
|
+
this._internalVars.submitHandler = handleFormSubmission.bind(this);
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
function init() {
|
|
82
|
+
this._internalVars.editFormPlaceholder.style.maxHeight = 0 + "px";
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
function setEvents() {
|
|
86
|
+
let eventName = 'click';
|
|
87
|
+
this._internalVars.editBtn.addEventListener(eventName, this._internalVars.editHandler);
|
|
88
|
+
// Form Controls
|
|
89
|
+
this._internalVars.cancelBtn.addEventListener(eventName, this._internalVars.cancelHandler);
|
|
90
|
+
this._internalVars.submitBtn.addEventListener(eventName, this._internalVars.submitHandler);
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
function removeEvents(){
|
|
94
|
+
let eventName = 'click';
|
|
95
|
+
this._internalVars.editBtn.addEventListener(eventName, this._internalVars.editHandler);
|
|
96
|
+
// Form Controls
|
|
97
|
+
this._internalVars.cancelBtn.addEventListener(eventName, this._internalVars.cancelHandler);
|
|
98
|
+
this._internalVars.submitBtn.addEventListener(eventName, this._internalVars.submitHandler);
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
function expandEditForm(event) {
|
|
102
|
+
|
|
103
|
+
let editContent = this._internalVars.editFormPlaceholder.querySelector(".edit-content");
|
|
104
|
+
let editPlaceholder = this._internalVars.editFormPlaceholder;
|
|
105
|
+
|
|
106
|
+
$(editPlaceholder).slideDown();
|
|
107
|
+
|
|
108
|
+
let editButton = event.currentTarget;
|
|
109
|
+
if(!editButton.classList.contains('hidden')) {
|
|
110
|
+
editButton.classList.add("hidden");
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
function collapseEditForm(event) {
|
|
114
|
+
event.preventDefault();
|
|
115
|
+
let editPlaceholder = this._internalVars.editFormPlaceholder;
|
|
116
|
+
$(editPlaceholder).slideUp();
|
|
117
|
+
let editButton = this._internalVars.editBtn;
|
|
118
|
+
if(editButton.classList.contains('hidden')) {
|
|
119
|
+
editButton.classList.remove("hidden");
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
function handleFormSubmission(event) {
|
|
123
|
+
event.preventDefault();
|
|
124
|
+
collapseEditForm.bind(this, event);
|
|
125
|
+
setTimeout(()=>{
|
|
126
|
+
this._internalVars.editForm.submit();
|
|
127
|
+
}, 700);
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
export default EditComponent;
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import baseComponent from '../../src/baseComponent';
|
|
2
|
+
import UserAgentService from '../../src/services/UserAgentService';
|
|
3
|
+
|
|
4
|
+
const validateSettings = [{
|
|
5
|
+
setting: 'content',
|
|
6
|
+
isRequired: true,
|
|
7
|
+
validate: 'type',
|
|
8
|
+
possibleValues: ['string', 'object'],
|
|
9
|
+
errorMessage: ['GDK EditableTableDeprecated : Content must be defined and set to a DOM selector or Node']
|
|
10
|
+
}];
|
|
11
|
+
|
|
12
|
+
class EditableTable {
|
|
13
|
+
/**
|
|
14
|
+
* These are settings for the instantiation. Refer to the design kit section of this component for JS setting examples.
|
|
15
|
+
* @param {string|Object} content
|
|
16
|
+
* A reference to the editable table with edit buttons and fields node
|
|
17
|
+
*/
|
|
18
|
+
constructor(options) {
|
|
19
|
+
this._internalVars = {
|
|
20
|
+
node: null, //used for current node
|
|
21
|
+
editBtn: null
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
//options with defaults set
|
|
25
|
+
this._defaults = {};
|
|
26
|
+
|
|
27
|
+
// Create options by extending defaults with the passed in arugments
|
|
28
|
+
if (options && typeof options === "object") {
|
|
29
|
+
this._options = baseComponent.extendDefaults(this._defaults, options);
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
//if the required options are valid set up the environment
|
|
33
|
+
if (baseComponent.validateSettings(this._options, validateSettings)) {
|
|
34
|
+
this._internalVars.contentType = baseComponent.getContentType(this);
|
|
35
|
+
setLocalVars.call(this);
|
|
36
|
+
setEvents.call(this);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
//Public Methods
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* destroy()
|
|
44
|
+
* removes the node from the dom and any events attached
|
|
45
|
+
*/
|
|
46
|
+
destroy(){
|
|
47
|
+
removeEvents.call(this);
|
|
48
|
+
this._internalVars.node.parentNode.removeChild(this._internalVars.node);
|
|
49
|
+
|
|
50
|
+
//a little garbage collection
|
|
51
|
+
for (var variableKey in this){
|
|
52
|
+
if (this.hasOwnProperty(variableKey)){
|
|
53
|
+
delete this[variableKey];
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
// Private Methods
|
|
60
|
+
function setLocalVars() {
|
|
61
|
+
if(this._internalVars.contentType === 'string') {
|
|
62
|
+
this._internalVars.node = document.querySelector(this._options.content);
|
|
63
|
+
} else if (this._internalVars.contentType === 'domNode') {
|
|
64
|
+
this._internalVars.node = this._options.content;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
this._internalVars.editBtn = this._internalVars.node.querySelectorAll('.table--editable-non-sortable .btn');
|
|
68
|
+
|
|
69
|
+
this._internalVars.handler = toggleEdit.bind(this);
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
* setEvents()
|
|
74
|
+
* Sets all the events needed for the component
|
|
75
|
+
*/
|
|
76
|
+
function setEvents() {
|
|
77
|
+
const eventName = UserAgentService._clickEventName();
|
|
78
|
+
|
|
79
|
+
for(let i=0;i<this._internalVars.editBtn.length;i++){
|
|
80
|
+
this._internalVars.editBtn[i].addEventListener(eventName, this._internalVars.handler);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
/**
|
|
85
|
+
* removeEvents()
|
|
86
|
+
* removes all events from the component
|
|
87
|
+
*/
|
|
88
|
+
function removeEvents() {
|
|
89
|
+
const eventName = UserAgentService._clickEventName();
|
|
90
|
+
|
|
91
|
+
for(let i=0;i<this._internalVars.editBtn.length;i++){
|
|
92
|
+
this._internalVars.editBtn[i].removeEventListener("click", this._internalVars.handler);
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
function toggleEdit(e){
|
|
98
|
+
var currentEditBtn = e.target;
|
|
99
|
+
var parentTR = currentEditBtn.parentNode.parentNode;
|
|
100
|
+
var childrenTD = parentTR.querySelectorAll('td');
|
|
101
|
+
for(let i=0;i<childrenTD.length;i++){
|
|
102
|
+
childrenTD[i].classList.toggle("td-edit-fields");
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
export default EditableTable;
|