diff --git a/lib/PropertiesPanel.js b/lib/PropertiesPanel.js
index b365f2d42..5800be3bf 100644
--- a/lib/PropertiesPanel.js
+++ b/lib/PropertiesPanel.js
@@ -549,6 +549,16 @@ PropertiesPanel.prototype._bindListeners = function(container) {
domDelegate.bind(container, 'input, textarea, [contenteditable]', 'input', debounce(handleChange, DEBOUNCE_DELAY));
domDelegate.bind(container, 'input, textarea, select, [contenteditable]', 'change', handleChange);
+ // handle key events
+ domDelegate.bind(container, 'select', 'keydown', function(e) {
+
+ // DEL
+ if (e.keyCode === 46) {
+ e.stopPropagation();
+ e.preventDefault();
+ }
+ });
+
domDelegate.bind(container, '[data-action]', 'click', function onClick(event) {
// triggers on all inputs
diff --git a/test/TestHelper.js b/test/TestHelper.js
index 21a462804..c29e2e772 100644
--- a/test/TestHelper.js
+++ b/test/TestHelper.js
@@ -124,6 +124,20 @@ var triggerInput = function(element, value) {
element.focus();
};
+var triggerKeyEvent = function(element, event, code) {
+ var e = document.createEvent('Events');
+
+ if (e.initEvent) {
+ e.initEvent(event, true, true);
+ }
+
+ e.keyCode = code;
+ e.which = code;
+
+ element.dispatchEvent(e);
+};
+
+
/**
* Select a form field with the specified index in the DOM
*
@@ -178,6 +192,7 @@ var selectedByIndex = function(element) {
module.exports.triggerEvent = triggerEvent;
module.exports.triggerValue = triggerValue;
module.exports.triggerInput = triggerInput;
+module.exports.triggerKeyEvent = triggerKeyEvent;
module.exports.triggerFormFieldSelection = triggerFormFieldSelection;
module.exports.selectedByOption = selectedByOption;
module.exports.selectedByIndex = selectedByIndex;
diff --git a/test/spec/PropertiesPanelSpec.js b/test/spec/PropertiesPanelSpec.js
index 05f832be4..2f508757d 100644
--- a/test/spec/PropertiesPanelSpec.js
+++ b/test/spec/PropertiesPanelSpec.js
@@ -430,4 +430,42 @@ describe('properties-panel', function() {
});
+ describe('listeners', function() {
+
+ function getSelect(container) {
+ return domQuery('select[name=select]', container);
+ }
+
+ var select, spy;
+
+ beforeEach(inject(function(propertiesPanel, elementRegistry, selection) {
+ propertiesPanel.attachTo(container);
+
+ var task2 = elementRegistry.get('Task_2');
+ selection.select(task2);
+
+ select = getSelect(propertiesPanel._container);
+
+ spy = sinon.spy();
+
+ document.addEventListener('keydown', spy);
+ }));
+
+ afterEach(function() {
+ document.removeEventListener('keydown', spy);
+ });
+
+
+ it('should stop propagation of DEL key events', function() {
+
+ // when
+ TestHelper.triggerKeyEvent(select, 'keydown', 46);
+
+ // then
+ expect(spy).to.not.have.been.called;
+ });
+
+ });
+
+
});
diff --git a/test/spec/properties/PropertiesProvider.js b/test/spec/properties/PropertiesProvider.js
index 770a1e2e8..c62abd129 100644
--- a/test/spec/properties/PropertiesProvider.js
+++ b/test/spec/properties/PropertiesProvider.js
@@ -228,6 +228,9 @@ function createGroups(element, bpmnFactory) {
a: !values.a && new Error('a must be checked')
};
}
+ }, {
+ id: 'select',
+ html: ''
}
]
}
diff --git a/test/spec/test.bpmn b/test/spec/test.bpmn
index 7029957a5..22a1fd354 100644
--- a/test/spec/test.bpmn
+++ b/test/spec/test.bpmn
@@ -1,10 +1,11 @@
-
+
FOO FOO BAR BAR
+
@@ -17,6 +18,9 @@
+
+
+