Skip to content

Commit 10c966a

Browse files
committed
#86c03paku fix x-editable issue in firefox
1 parent 97acecc commit 10c966a

1 file changed

Lines changed: 34 additions & 0 deletions

File tree

Resources/public/js/inline_table.js

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
$(document).editable({
22
selector: '.editable',
3+
onblur: 'ignore',
34
params: function (params) {
45
var $field = $(this);
56
var fieldName = $field.data('name');
@@ -9,6 +10,39 @@ $(document).editable({
910
}
1011
});
1112

13+
var hideEditableOnOutsideClickHandlers = [];
14+
var $editable = $('.editable');
15+
$editable.on('shown', function (e, editable) {
16+
function hideEditableOnOutsideClick(e) {
17+
// ignore click event on body
18+
if (e.target.tagName.toLowerCase() === "body") {
19+
return;
20+
}
21+
22+
// does editable popover contain the clicked element?
23+
var popover = editable.container.$form.parents('.editable-container');
24+
25+
// of not, hide the editable
26+
if (!$.contains(popover[0], e.target)) {
27+
editable.hide();
28+
}
29+
}
30+
31+
setTimeout(function () {
32+
document.addEventListener('click', hideEditableOnOutsideClick, true);
33+
hideEditableOnOutsideClickHandlers.push(hideEditableOnOutsideClick);
34+
}, 0);
35+
});
36+
37+
38+
$editable.on('hidden', function (e, editable) {
39+
hideEditableOnOutsideClickHandlers.forEach(function (handler) {
40+
document.removeEventListener('click', handler, true);
41+
});
42+
hideEditableOnOutsideClickHandlers = [];
43+
});
44+
45+
1246
//$(document).on('ready update', function (e) {
1347
// var $target = $(e.target);
1448
//});

0 commit comments

Comments
 (0)