From b69f2a7a146ff0e45c43206ffba9fb604a144a91 Mon Sep 17 00:00:00 2001 From: salexdv Date: Thu, 13 May 2021 21:38:41 +0300 Subject: [PATCH] =?UTF-8?q?=D0=93=D0=B5=D0=BD=D0=B5=D1=80=D0=B0=D1=86?= =?UTF-8?q?=D0=B8=D1=8F=20=D1=81=D0=BE=D0=B1=D1=8B=D1=82=D0=B8=D1=8F=20?= =?UTF-8?q?=D0=BF=D1=80=D0=B8=20=D0=B2=D1=8B=D0=B7=D0=BE=D0=B2=D0=B5=20?= =?UTF-8?q?=D0=BF=D0=BE=D0=B4=D1=80=D0=BE=D0=B1=D0=BD=D0=BE=D0=B3=D0=BE=20?= =?UTF-8?q?=D0=BE=D0=BF=D0=B8=D1=81=D0=B0=D0=BD=D0=B8=D1=8F=20=D0=B0=D0=BA?= =?UTF-8?q?=D1=82=D0=B8=D0=B2=D0=BD=D0=BE=D0=B3=D0=BE=20=D0=BF=D1=83=D0=BD?= =?UTF-8?q?=D0=BA=D1=82=D0=B0=20=D0=BF=D0=BE=D0=B4=D1=81=D0=BA=D0=B0=D0=B7?= =?UTF-8?q?=D0=BE=D0=BA=20resolves=20#78?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 3 +++ docs/activation_event.md | 3 ++- src/editor.js | 37 +++++++++++++++++++++++++++++++++++++ 3 files changed, 42 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 92053bd..eff9b62 100644 --- a/README.md +++ b/README.md @@ -120,6 +120,8 @@ | `goNextBookmark` | Переход к следующей закладке | | `goPreviousBookmark` | Переход к предыдущей закладке | | `getBookmarks` | Возвращает массив с номерами строк, в которых установлены закладки | +| `setActiveSuggestLabel` | Устанавливает заголовок активного пункта списка подсказок | +| `setActiveSuggestDetail` | Устанавливает подробное описание активного пункта списка подсказок | ## События, генерируемые редактором для 1С:Предприятия | Событие | Описание | @@ -130,6 +132,7 @@ | `EVENT_GET_METADATA` | Генерируется при отсутствии метаданных. В параметрах передается имя запрашиваемых метаданных | | `EVENT_XXX` | При выборе пользовательского пункта меню. *addContextMenuItem('Мой пункт', 'EVENT_MY')* | | `EVENT_ON_ACTIVATE_SUGGEST_ROW`| При активации пункта в текущем списке подсказок [(подробнее)](docs/activation_event.md) | +| `EVENT_ON_DETAIL_SUGGEST_ROW` | При активации подробного описания пункта в текущем списке подсказок [(подробнее)](docs/activation_event.md) | | `EVENT_BEFORE_SHOW_SUGGEST` | Перед появлением списка подсказок [(подробнее)](docs/before_suggest_event.md) | | `EVENT_ON_SELECT_SUGGEST_ROW` | При выборе пункта из списка подсказок [(подробнее)](docs/select_suggest_event.md) | | `EVENT_BEFORE_HOVER` | Перед появлением всплывающей подсказки для слова [(подробнее)](docs/before_hover_event.md) | diff --git a/docs/activation_event.md b/docs/activation_event.md index 71631fc..ad99f44 100644 --- a/docs/activation_event.md +++ b/docs/activation_event.md @@ -1,6 +1,7 @@ # Функция *enableSuggestActivationEvent* ## Назначение функции -Функция включает/выключает генерацию события *EVENT_ON_ACTIVATE_SUGGEST_ROW*, которое возникает при активации пункта в текущем списке подсказок +Функция включает/выключает генерацию события *EVENT_ON_ACTIVATE_SUGGEST_ROW*, которое возникает при активации пункта в текущем списке подсказок. +При выводе подробного описания (CTRL+Space) пункта подсказки генерируется событие *EVENT_ON_DETAIL_SUGGEST_ROW* с аналогичными параметрами. ## Параметры функции * **enabled** - *boolean*, активность события diff --git a/src/editor.js b/src/editor.js index 86b0de2..fc4cd6d 100644 --- a/src/editor.js +++ b/src/editor.js @@ -830,6 +830,20 @@ define(['bslGlobals', 'bslMetadata', 'snippets', 'bsl_language', 'vs/editor/edit } } + else if (mutation.target.classList.contains('type')) { + + let element = document.querySelector('.monaco-list-rows .focused'); + + if (element) { + + if (hasParentWithClass(mutation.target, 'details') && hasParentWithClass(mutation.target, 'suggest-widget')) { + let rows = getSuggestWidgetRows(element); + genarateEventWithSuggestData('EVENT_ON_DETAIL_SUGGEST_ROW', rows, 'focus', element.getAttribute('aria-label')); + } + + } + + } }) @@ -1065,6 +1079,29 @@ define(['bslGlobals', 'bslMetadata', 'snippets', 'bsl_language', 'vs/editor/edit } + setActiveSuggestLabel = function (label) { + + let element = document.querySelector('.monaco-list-rows .focused .monaco-icon-name-container'); + + if (element) + element.innerText = label; + + } + + setActiveSuggestDetail = function (detail) { + + let element = document.querySelector('.monaco-list-rows .focused .details-label'); + + if (element) + element.innerText = detail; + + element = document.querySelector('.suggest-widget.docs-side .details .header'); + + if (element) + element.innerText = detail; + + } + editor = undefined; // Register languages