123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- (function() {
- function showOptionsList(_input) {
- let ol = $(_input).next('.data-option-list');
- if(ol.length && !ol.is(':visible')) {
- ol.show();
- return true;
- }
- return false;
- }
- function hideOptionsList(_input) {
- let ol = $(_input).next('.data-option-list');
- if(ol.length && ol.is(':visible')) {
- ol.hide();
- return true;
- }
- return false;
- }
- function init() {
- $(document)
- .off('mousedown.option-list', '.data-option-list>div')
- .on('mousedown.option-list', '.data-option-list>div', function(_e) {
- _e.stopPropagation();
- _e.preventDefault();
- markEventAsConsumed(_e);
- let elem = $(this).parent().prev('input[data-option-list]'),
- text = $(this).text();
- if(!elem.is('[multi-option-list]')) {
- elem.val('');
- }
- else {
- elem.val($.trim(elem.val()));
- elem[0].selectionStart = elem[0].selectionEnd = elem.val().length;
- if(elem.val() !== '') text = ', ' + text;
- }
- elem.focus();
- document.execCommand('insertText', false, text);
- if(!elem.is('[sticky-option-list]')) {
- $(this).closest('.data-option-list').hide();
- }
- return false;
- });
- $(document)
- .off('click.trigger-option-list', 'input[data-option-list]')
- .on('click.trigger-option-list', 'input[data-option-list]', function() {
- showOptionsList(this);
- })
- .off('focus.trigger-option-list', 'input[data-option-list]')
- .on('focus.trigger-option-list', 'input[data-option-list]', function() {
- showOptionsList(this);
- })
- .off('blur.trigger-option-list', 'input[data-option-list]')
- .on('blur.trigger-option-list', 'input[data-option-list]', function() {
- hideOptionsList(this);
- })
- .off('keydown.discard-option-list', 'input[data-option-list]')
- .on('keydown.discard-option-list', 'input[data-option-list]', function(_e) {
- if(_e.which === 27) {
- if(hideOptionsList(this)) {
- markEventAsConsumed(_e);
- return false;
- }
- }
- })
- }
- addMCInitializer('option-list', init);
- })();
|