From 0c71826afa23ceaf18b4eb08812dee35aa922509 Mon Sep 17 00:00:00 2001 From: oblomov <102328295+oblomov-dev@users.noreply.github.com> Date: Tue, 21 Nov 2023 20:58:32 +0100 Subject: [PATCH] Focus functionality (#662) * focus functionality * focus --- src/03/z2ui5_cl_cc_factory.clas.abap | 18 ++++- src/03/z2ui5_cl_cc_focus.clas.abap | 107 +++++++++++++++++++++++++++ src/03/z2ui5_cl_cc_focus.clas.xml | 16 ++++ 3 files changed, 137 insertions(+), 4 deletions(-) create mode 100644 src/03/z2ui5_cl_cc_focus.clas.abap create mode 100644 src/03/z2ui5_cl_cc_focus.clas.xml diff --git a/src/03/z2ui5_cl_cc_factory.clas.abap b/src/03/z2ui5_cl_cc_factory.clas.abap index 4f41b17c..b459974b 100644 --- a/src/03/z2ui5_cl_cc_factory.clas.abap +++ b/src/03/z2ui5_cl_cc_factory.clas.abap @@ -41,6 +41,10 @@ CLASS z2ui5_cl_cc_factory DEFINITION RETURNING VALUE(result) TYPE REF TO z2ui5_cl_cc_title. + METHODS focus + RETURNING + VALUE(result) TYPE REF TO z2ui5_cl_cc_focus. + METHODS info RETURNING VALUE(result) TYPE REF TO z2ui5_cl_cc_info. @@ -57,9 +61,15 @@ ENDCLASS. -CLASS Z2UI5_CL_CC_FACTORY IMPLEMENTATION. +CLASS z2ui5_cl_cc_factory IMPLEMENTATION. - METHOD info. + METHOD focus. + + result = NEW #( mo_view ). + + ENDMETHOD. + + METHOD info. result = NEW #( mo_view ). @@ -125,9 +135,9 @@ CLASS Z2UI5_CL_CC_FACTORY IMPLEMENTATION. ENDMETHOD. - METHOD GEOLOCATION. + METHOD geolocation. -result = NEW #( mo_view ). + result = NEW #( mo_view ). ENDMETHOD. diff --git a/src/03/z2ui5_cl_cc_focus.clas.abap b/src/03/z2ui5_cl_cc_focus.clas.abap new file mode 100644 index 00000000..aae96b29 --- /dev/null +++ b/src/03/z2ui5_cl_cc_focus.clas.abap @@ -0,0 +1,107 @@ +CLASS z2ui5_cl_cc_focus DEFINITION + PUBLIC + FINAL + CREATE PUBLIC . + + PUBLIC SECTION. + + METHODS constructor + IMPORTING + view TYPE REF TO z2ui5_cl_xml_view. + + METHODS control + IMPORTING + focusId TYPE clike OPTIONAL + selectionStart TYPE clike OPTIONAL + selectionEnd TYPE clike OPTIONAL + setUpdate TYPE clike OPTIONAL + RETURNING + VALUE(result) TYPE REF TO z2ui5_cl_xml_view. + + METHODS load_cc + RETURNING + VALUE(result) TYPE REF TO z2ui5_cl_xml_view. + + CLASS-METHODS get_js + RETURNING + VALUE(result) TYPE string. + + PROTECTED SECTION. + DATA mo_view TYPE REF TO z2ui5_cl_xml_view. + + PRIVATE SECTION. +ENDCLASS. + + + +CLASS z2ui5_cl_cc_focus IMPLEMENTATION. + + METHOD constructor. + + me->mo_view = view. + + ENDMETHOD. + + METHOD control. + + result = mo_view. + mo_view->_generic( name = `Focus` + ns = `z2ui5` + t_prop = VALUE #( + ( n = `setUpdate` v = setUpdate ) + ( n = `selectionStart` v = selectionStart ) + ( n = `selectionEnd` v = selectionEnd ) + ( n = `focusId` v = focusId ) + ) ). + + ENDMETHOD. + + METHOD load_cc. + + result = mo_view->_generic( ns = `html` name = `script` )->_cc_plain_xml( get_js( ) )->get_parent( ). + + ENDMETHOD. + + METHOD get_js. + + result = `debugger; jQuery.sap.declare("z2ui5.Focus");` && |\n| && + `sap.ui.require([` && |\n| && + ` "sap/ui/core/Control",` && |\n| && + `], (Control) => {` && |\n| && + ` "use strict";` && |\n| && + |\n| && + ` return Control.extend("z2ui5.Focus", {` && |\n| && + ` metadata: {` && |\n| && + ` properties: {` && |\n| && + ` setUpdate : { type: "boolean", defaultValue: true },` && |\n| && + ` focusId: { type: "string" },` && |\n| && + ` selectionStart: { type: "string", defaultValue: "0" },` && |\n| && + ` selectionEnd: { type: "string", defaultValue: "0" },` && |\n| && + ` }` && |\n| && + ` },` && |\n| && + |\n| && + ` init() {` && |\n| && + ` },` && |\n| && + |\n| && + ` renderer(oRm, oControl) {` && |\n| && + |\n| && + ` debugger; if (!oControl.getProperty("setUpdate")){ return; }` && |\n| && + ` oControl.setProperty("setUpdate", false);` && |\n| && + |\n| && + ` setTimeout((oControl) => {` && |\n| && + |\n| && + ` debugger; var oElement = sap.z2ui5.oView.byId(oControl.getProperty("focusId"));` && |\n| && + ` var oFocus = oElement.getFocusInfo();` && |\n| && + ` oFocus.selectionStart = parseInt(oControl.getProperty("selectionStart"));` && |\n| && + ` oFocus.selectionEnd = parseInt(oControl.getProperty("selectionEnd"));` && |\n| && + ` oElement.applyFocusInfo(oFocus);` && |\n| && + |\n| && + ` }, 10, oControl);` && |\n| && + |\n| && + ` }` && |\n| && + ` });` && |\n| && + `});`. + + ENDMETHOD. + +ENDCLASS. diff --git a/src/03/z2ui5_cl_cc_focus.clas.xml b/src/03/z2ui5_cl_cc_focus.clas.xml new file mode 100644 index 00000000..06c66d6b --- /dev/null +++ b/src/03/z2ui5_cl_cc_focus.clas.xml @@ -0,0 +1,16 @@ + + + + + + Z2UI5_CL_CC_FOCUS + E + cc - set focus and cursor + 1 + X + X + X + + + +