init
This commit is contained in:
@@ -0,0 +1,42 @@
|
||||
import $ from 'jquery';
|
||||
import Selectize from 'selectize';
|
||||
|
||||
Selectize.define('option_click', function(options) {
|
||||
const self = this;
|
||||
const setup = self.setup;
|
||||
this.setup = function() {
|
||||
setup.apply(self, arguments);
|
||||
let clicking = false;
|
||||
|
||||
// Detect click on a .clickable
|
||||
self.$dropdown_content.on('mousedown click', function(e) {
|
||||
const target = $(e.target);
|
||||
if (target.hasClass('clickable') || target.closest('.clickable').length) {
|
||||
if (e.type === 'mousedown') {
|
||||
clicking = true;
|
||||
self.isFocused = false; // awful hack to defuse the document mousedown listener
|
||||
} else {
|
||||
self.isFocused = true;
|
||||
setTimeout(function() {
|
||||
clicking = false; // wait until blur has been preempted
|
||||
});
|
||||
}
|
||||
} else { // cleanup in case user right-clicked or dragged off the element
|
||||
clicking = false;
|
||||
self.isFocused = true;
|
||||
}
|
||||
});
|
||||
|
||||
// Intercept default handlers
|
||||
self.$dropdown.off('mousedown click', '[data-selectable]').on('mousedown click', '[data-selectable]', function() {
|
||||
if (!clicking) {
|
||||
return self.onOptionSelect.apply(self, arguments);
|
||||
}
|
||||
});
|
||||
self.$control_input.off('blur').on('blur', function() {
|
||||
if (!clicking) {
|
||||
return self.onBlur.apply(self, arguments);
|
||||
}
|
||||
});
|
||||
};
|
||||
});
|
||||
Reference in New Issue
Block a user