From 65ec41b8f4dc3700eb3de18fb40697ab69d86dcb Mon Sep 17 00:00:00 2001 From: Aziz Khoury Date: Thu, 17 Oct 2019 18:26:27 +0300 Subject: [PATCH 1/4] placement:auto and tags no longer need to use jquery-ui.autocomplete --- package-lock.json | 18 ++++++++++++++++++ static/lib/composer/autocomplete.js | 15 +-------------- static/lib/composer/tags.js | 28 ++-------------------------- 3 files changed, 21 insertions(+), 40 deletions(-) create mode 100644 package-lock.json diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 00000000..1b97dc75 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,18 @@ +{ + "name": "nodebb-plugin-composer-default", + "version": "6.2.12", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "screenfull": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/screenfull/-/screenfull-4.2.0.tgz", + "integrity": "sha512-qpyI9XbwuMJElWRP5vTgxkFAl4k7HpyhIqBFOZEwX9QBXn0MAuRSpn7LOc6/4CeSwoz61oBu1VPV+2fbIWC+5Q==" + }, + "validator": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/validator/-/validator-10.4.0.tgz", + "integrity": "sha512-Q/wBy3LB1uOyssgNlXSRmaf22NxjvDNZM2MtIQ4jaEOAB61xsh1TQxsq1CgzUMBV1lDrVMogIh8GjG1DYW0zLg==" + } + } +} diff --git a/static/lib/composer/autocomplete.js b/static/lib/composer/autocomplete.js index 654d0de1..8ebbce66 100644 --- a/static/lib/composer/autocomplete.js +++ b/static/lib/composer/autocomplete.js @@ -18,7 +18,6 @@ define('composer/autocomplete', ['composer/preview'], function(preview) { autocomplete.init = function(postContainer, post_uuid) { var element = postContainer.find('.write'); var dropdownClass = 'composer-autocomplete-dropdown-' + post_uuid; - var timer; if (!element.length) { /** @@ -34,6 +33,7 @@ define('composer/autocomplete', ['composer/preview'], function(preview) { element: element, strategies: [], options: { + placement: 'auto', style: { 'z-index': 20000, }, @@ -41,19 +41,6 @@ define('composer/autocomplete', ['composer/preview'], function(preview) { } }; - element.on('keyup', function () { - clearTimeout(timer); - timer = setTimeout(function () { - var dropdown = document.querySelector('.' + dropdownClass); - var pos = dropdown.getBoundingClientRect(); - - var margin = parseFloat(dropdown.style.marginTop, 10) || 0; - - var offset = window.innerHeight + margin - 10 - pos.bottom; - dropdown.style.marginTop = Math.min(offset, 0) + 'px'; - }, 0); - }); - $(window).trigger('composer:autocomplete:init', data); autocomplete._active[post_uuid] = autocomplete.setup(data); diff --git a/static/lib/composer/tags.js b/static/lib/composer/tags.js index ba743b2a..f9f8cab7 100644 --- a/static/lib/composer/tags.js +++ b/static/lib/composer/tags.js @@ -3,7 +3,7 @@ /*globals ajaxify, define, config, socket, app, utils*/ -define('composer/tags', function() { +define('composer/tags', [ 'autocomplete' ], function(autocomplete) { var tags = {}; tags.init = function(postContainer, postData) { @@ -51,31 +51,7 @@ define('composer/tags', function() { var input = postContainer.find('.bootstrap-tagsinput input'); toggleTagInput(postContainer, postData, ajaxify.data); - app.loadJQueryUI(function() { - input.autocomplete({ - delay: 100, - position: { my: "left bottom", at: "left top", collision: "flip" }, - appendTo: postContainer.find('.bootstrap-tagsinput'), - open: function() { - $(this).autocomplete('widget').css('z-index', 20000); - }, - source: function(request, response) { - socket.emit('topics.autocompleteTags', {query: request.term, cid: postData.cid}, function(err, tags) { - if (err) { - return app.alertError(err.message); - } - if (tags) { - response(tags); - } - $('.ui-autocomplete a').attr('data-ajaxify', 'false'); - }); - }, - select: function(event, ui) { - // when autocomplete is selected from the dropdown simulate a enter key down to turn it into a tag - triggerEnter(input); - } - }); - }); + autocomplete.tag(input); input.attr('tabIndex', tagEl.attr('tabIndex')); input.on('blur', function() { From a20eea5644404aa7a18fa62e43d922639e059753 Mon Sep 17 00:00:00 2001 From: Aziz Khoury Date: Fri, 18 Oct 2019 12:08:25 +0300 Subject: [PATCH 2/4] overriding editor.getCursorOffset()'s clientTop value to top value, see https://github.com/yuku/textcomplete/issues/166 --- static/lib/composer/autocomplete.js | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/static/lib/composer/autocomplete.js b/static/lib/composer/autocomplete.js index 8ebbce66..e30254b9 100644 --- a/static/lib/composer/autocomplete.js +++ b/static/lib/composer/autocomplete.js @@ -71,6 +71,14 @@ define('composer/autocomplete', ['composer/preview'], function(preview) { var textcomplete = new window.Textcomplete(editor, { dropdown: data.options, }); + + var _getCursorOffset = editor.getCursorOffset; + editor.getCursorOffset = function () { + var offset = _getCursorOffset.apply(editor, arguments); + offset.clientTop = offset.top; + return offset; + }; + textcomplete.register(data.strategies); textcomplete.on('rendered', function () { if (textcomplete.dropdown.items.length) { From 0e970c618f8d8dbdda6d4023db485e945e23c29d Mon Sep 17 00:00:00 2001 From: Aziz Khoury Date: Fri, 18 Oct 2019 12:10:31 +0300 Subject: [PATCH 3/4] adding issue comment --- static/lib/composer/autocomplete.js | 1 + 1 file changed, 1 insertion(+) diff --git a/static/lib/composer/autocomplete.js b/static/lib/composer/autocomplete.js index e30254b9..c9c396f2 100644 --- a/static/lib/composer/autocomplete.js +++ b/static/lib/composer/autocomplete.js @@ -72,6 +72,7 @@ define('composer/autocomplete', ['composer/preview'], function(preview) { dropdown: data.options, }); + // hack till https://github.com/yuku/textcomplete/issues/166 var _getCursorOffset = editor.getCursorOffset; editor.getCursorOffset = function () { var offset = _getCursorOffset.apply(editor, arguments); From dda560807e1c8cfb4c446b294a10b22b789776a6 Mon Sep 17 00:00:00 2001 From: Aziz Khoury Date: Fri, 18 Oct 2019 12:14:53 +0300 Subject: [PATCH 4/4] rm package-lock.json --- package-lock.json | 18 ------------------ 1 file changed, 18 deletions(-) delete mode 100644 package-lock.json diff --git a/package-lock.json b/package-lock.json deleted file mode 100644 index 1b97dc75..00000000 --- a/package-lock.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "name": "nodebb-plugin-composer-default", - "version": "6.2.12", - "lockfileVersion": 1, - "requires": true, - "dependencies": { - "screenfull": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/screenfull/-/screenfull-4.2.0.tgz", - "integrity": "sha512-qpyI9XbwuMJElWRP5vTgxkFAl4k7HpyhIqBFOZEwX9QBXn0MAuRSpn7LOc6/4CeSwoz61oBu1VPV+2fbIWC+5Q==" - }, - "validator": { - "version": "10.4.0", - "resolved": "https://registry.npmjs.org/validator/-/validator-10.4.0.tgz", - "integrity": "sha512-Q/wBy3LB1uOyssgNlXSRmaf22NxjvDNZM2MtIQ4jaEOAB61xsh1TQxsq1CgzUMBV1lDrVMogIh8GjG1DYW0zLg==" - } - } -}