Skip to content

Commit 7e1f99b

Browse files
authored
Merge pull request #5 from Menesetsu/DXTF-4799
Added destroy() and removeListeners() methods.
2 parents d75c55f + 0f32b46 commit 7e1f99b

File tree

3 files changed

+63
-4
lines changed

3 files changed

+63
-4
lines changed

bower.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,6 @@
1414
],
1515
"dependencies": {
1616
"dxjs": "devex-web-frontend/dxjs#^2.0.3",
17-
"dropdown": "devex-web-frontend/dropdown#^2.5.0"
17+
"dropdown": "devex-web-frontend/dropdown#^2.9.0"
1818
}
1919
}

src/js/colorpicker.js

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -134,6 +134,33 @@ var Colorpicker = (function(DX) {
134134
block.appendChild(input);
135135
}
136136

137+
function removeAppearence() {
138+
var parent = DX.Dom.getParent(block);
139+
parent.insertBefore(input, block);
140+
block.remove();
141+
}
142+
143+
144+
function destroy() {
145+
removeListeners();
146+
DX.Event.trigger(input, Colorpicker.E_DESTROYED);
147+
removeAppearence();
148+
dropDown.destroy();
149+
}
150+
151+
function removeListeners() {
152+
var dropDownEventTarget = dropDown.getEventTarget();
153+
154+
block.removeEventListener(DX.Event.TOUCH_CLICK, toggleDropDown, true);
155+
156+
dropDownEventTarget.removeEventListener(DropDown.E_SHOWN, setOpenedState, true);
157+
dropDownEventTarget.removeEventListener(DropDown.E_HIDDEN, removeOpenedState, true);
158+
dropDownEventTarget.removeEventListener(DropDown.E_CHANGED, dropDownIndexChangeHandler, true);
159+
160+
input.removeEventListener(Colorpicker.E_SET_COLOR_LIST, setColorListHandler);
161+
input.removeEventListener(Colorpicker.E_SET_COLOR, setColorByInputValue);
162+
}
163+
137164

138165
function setColorListHandler() {
139166
colorList = input.colorList || colorList || Colorpicker.colorList;
@@ -327,6 +354,12 @@ var Colorpicker = (function(DX) {
327354
*/
328355
this.setDisabled = setDisabled;
329356

357+
/**
358+
* Destroying colorpicker component and its dropdown
359+
* @method destroy
360+
*/
361+
this.destroy = destroy;
362+
330363
/**
331364
* Enables ColorPicker
332365
* @method setEnabled
@@ -359,6 +392,12 @@ var Colorpicker = (function(DX) {
359392
* @memberof Colorpicker
360393
*/
361394
Colorpicker.E_CREATED = 'colorpicker:created';
395+
/** @constant
396+
* @type {string}
397+
* @default
398+
* @memberof Colorpicker
399+
*/
400+
Colorpicker.E_DESTROYED = 'colorpicker:destroyed';
362401
/** @constant
363402
* @type {string}
364403
* @default

test/html/default.case.html

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,8 @@
5454
var colorPickers = [];
5555
window.onload = function() {
5656
var inputColorPicker = document.getElementById('Input_ColorPicker');
57+
var buttonDestroyAll = document.getElementById('Button_DestroyAll');
58+
var buttonInitAll = document.getElementById('Button_InitAll');
5759
var inputColorPickerGroupWithoutTitle = document.getElementById('Input_ColorPicker_GroupWithoutTitle');
5860
inputColorPicker.colorList = [
5961
{
@@ -70,9 +72,22 @@
7072
]
7173
}
7274
];
73-
Array.prototype.forEach.call(document.querySelectorAll('[data-colorpicker]'), function(input) {
74-
colorPickers.push(new Colorpicker(input));
75-
})
75+
76+
buttonInitAll.addEventListener('click', function() {
77+
Array.prototype.forEach.call(document.querySelectorAll('[data-colorpicker]'), function(input) {
78+
console.log('input', input);
79+
colorPickers.push(new Colorpicker(input));
80+
})
81+
});
82+
83+
buttonDestroyAll.addEventListener('click', function() {
84+
colorPickers.forEach(function(colorpicker) {
85+
colorpicker.destroy();
86+
});
87+
colorPickers = [];
88+
});
89+
90+
7691
}
7792
</script>
7893
</head>
@@ -93,5 +108,10 @@
93108
<legend>Disabled</legend>
94109
<input data-ng-model="default" data-colorpicker type="text" value="" disabled />
95110
</fieldset>
111+
112+
<button id="Button_InitAll">Init All</button>
113+
<button id="Button_DestroyAll">Destroy All</button>
114+
115+
96116
</body>
97117
</html>

0 commit comments

Comments
 (0)