option-list.js 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. (function() {
  2. function showOptionsList(_input) {
  3. let ol = $(_input).next('.data-option-list');
  4. if(ol.length && !ol.is(':visible')) {
  5. ol.show();
  6. }
  7. }
  8. function hideOptionsList(_input) {
  9. let ol = $(_input).next('.data-option-list');
  10. if(ol.length && ol.is(':visible')) {
  11. ol.hide();
  12. }
  13. }
  14. function init() {
  15. $(document)
  16. .off('mousedown.option-list', '.data-option-list>div')
  17. .on('mousedown.option-list', '.data-option-list>div', function(_e) {
  18. _e.stopPropagation();
  19. _e.preventDefault();
  20. markEventAsConsumed(_e);
  21. $(this).parent().prev('input[data-option-list]').val('').focus();
  22. document.execCommand('insertText', false, $(this).text());
  23. $(this).closest('.data-option-list').hide();
  24. return false;
  25. });
  26. $(document)
  27. .off('click.trigger-option-list', 'input[data-option-list]')
  28. .on('click.trigger-option-list', 'input[data-option-list]', function() {
  29. showOptionsList(this);
  30. })
  31. .off('focus.trigger-option-list', 'input[data-option-list]')
  32. .on('focus.trigger-option-list', 'input[data-option-list]', function() {
  33. showOptionsList(this);
  34. })
  35. .off('blur.trigger-option-list', 'input[data-option-list]')
  36. .on('blur.trigger-option-list', 'input[data-option-list]', function() {
  37. hideOptionsList(this);
  38. });
  39. }
  40. addMCInitializer('option-list', init);
  41. })();