From d71fefc12dba65f7bcfdb44b0567279e8729a808 Mon Sep 17 00:00:00 2001 From: qiang Date: Thu, 27 Aug 2020 16:23:10 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20App=E3=80=81H5=20=E7=AB=AF=E6=94=AF?= =?UTF-8?q?=E6=8C=81=20uni.getSelectedTextRange?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/apis.js | 9 +++--- .../api/keyboard/get-selected-text-range.js | 30 +++++++++++++++++++ .../service/api/{ui => keyboard}/keyboard.js | 0 src/core/view/mixins/base-input.js | 18 +++++++++++ src/platforms/app-plus/service/api/index.js | 2 +- .../service/api/{ui => keyboard}/keyboard.js | 0 .../hide-keyboard.js => keyboard/keyboard.js} | 0 7 files changed, 54 insertions(+), 5 deletions(-) create mode 100644 src/core/service/api/keyboard/get-selected-text-range.js rename src/core/service/api/{ui => keyboard}/keyboard.js (100%) rename src/platforms/app-plus/service/api/{ui => keyboard}/keyboard.js (100%) rename src/platforms/h5/service/api/{device/hide-keyboard.js => keyboard/keyboard.js} (100%) diff --git a/lib/apis.js b/lib/apis.js index 0ac63a6a10..2c22441e47 100644 --- a/lib/apis.js +++ b/lib/apis.js @@ -109,8 +109,8 @@ const device = [ 'getBLEDeviceServices', 'getBLEDeviceCharacteristics', 'createBLEConnection', - 'closeBLEConnection', - 'setBLEMTU', + 'closeBLEConnection', + 'setBLEMTU', 'getBLEDeviceRSSI', 'onBeaconServiceChange', 'onBeaconUpdate', @@ -119,14 +119,15 @@ const device = [ 'stopBeaconDiscovery', 'checkIsSupportSoterAuthentication', 'checkIsSoterEnrolledInDevice', - 'startSoterAuthentication', + 'startSoterAuthentication', 'onThemeChange', 'onUIStyleChange' ] const keyboard = [ 'hideKeyboard', - 'onKeyboardHeightChange' + 'onKeyboardHeightChange', + 'getSelectedTextRange' ] const ui = [ diff --git a/src/core/service/api/keyboard/get-selected-text-range.js b/src/core/service/api/keyboard/get-selected-text-range.js new file mode 100644 index 0000000000..363f3a40e8 --- /dev/null +++ b/src/core/service/api/keyboard/get-selected-text-range.js @@ -0,0 +1,30 @@ +import createCallbacks from 'uni-helpers/callbacks' +import { + getCurrentPageId +} from '../../platform' +import { + invoke +} from '../../bridge' + +const getSelectedTextRangeEventCallbacks = createCallbacks('getSelectedTextRangeEvent') + +UniServiceJSBridge.subscribe('onGetSelectedTextRange', ({ + callbackId, + data +}) => { + console.log('onGetSelectedTextRange') + const callback = getSelectedTextRangeEventCallbacks.pop(callbackId) + if (callback) { + callback(data) + } +}) + +export function getSelectedTextRange (_, callbackId) { + const pageId = getCurrentPageId() + UniServiceJSBridge.publishHandler('getSelectedTextRange', { + pageId, + callbackId: getSelectedTextRangeEventCallbacks.push(function (res) { + invoke(callbackId, res) + }) + }, pageId) +} diff --git a/src/core/service/api/ui/keyboard.js b/src/core/service/api/keyboard/keyboard.js similarity index 100% rename from src/core/service/api/ui/keyboard.js rename to src/core/service/api/keyboard/keyboard.js diff --git a/src/core/view/mixins/base-input.js b/src/core/view/mixins/base-input.js index d24b467839..08a6f7f151 100644 --- a/src/core/view/mixins/base-input.js +++ b/src/core/view/mixins/base-input.js @@ -5,6 +5,24 @@ import { import emitter from './emitter' import keyboard from './keyboard' +UniViewJSBridge.subscribe('getSelectedTextRange', function ({ pageId, callbackId }) { + const activeElement = document.activeElement + const tagName = activeElement.tagName.toLowerCase() + const tagNames = ['input', 'textarea'] + const data = {} + if (tagNames.includes(tagName)) { + data.errMsg = 'getSelectedTextRange:ok' + data.start = activeElement.selectionStart + data.end = activeElement.selectionEnd + } else { + data.errMsg = 'getSelectedTextRange:fail:no focused' + } + UniViewJSBridge.publishHandler('onGetSelectedTextRange', { + callbackId, + data + }, pageId) +}) + export default { name: 'BaseInput', mixins: [emitter, keyboard], diff --git a/src/platforms/app-plus/service/api/index.js b/src/platforms/app-plus/service/api/index.js index f487085764..85f31c1b9e 100644 --- a/src/platforms/app-plus/service/api/index.js +++ b/src/platforms/app-plus/service/api/index.js @@ -62,7 +62,7 @@ export * from './route/preload-page' export * from './storage/storage' -export * from './ui/keyboard' +export * from './keyboard/keyboard' export * from './ui/navigation-bar' export * from './ui/popup' diff --git a/src/platforms/app-plus/service/api/ui/keyboard.js b/src/platforms/app-plus/service/api/keyboard/keyboard.js similarity index 100% rename from src/platforms/app-plus/service/api/ui/keyboard.js rename to src/platforms/app-plus/service/api/keyboard/keyboard.js diff --git a/src/platforms/h5/service/api/device/hide-keyboard.js b/src/platforms/h5/service/api/keyboard/keyboard.js similarity index 100% rename from src/platforms/h5/service/api/device/hide-keyboard.js rename to src/platforms/h5/service/api/keyboard/keyboard.js -- GitLab