From 786b48de7d1676a453de5ac6046d022abbfb4df5 Mon Sep 17 00:00:00 2001 From: bartonstee <66774568+bartonstee@users.noreply.github.com> Date: Thu, 1 Oct 2020 10:30:49 +0200 Subject: [PATCH] Changed boolean to event, to execute in Mendix --- README.md | 24 ++++++------------ dist/1.0.0/incentro.Backhandler.mpk | Bin 4783 -> 4843 bytes dist/tmp/widgets/Backhandler.xml | 13 ++++------ .../incentro/backhandler/Backhandler.js | 6 ++--- .../incentro/backhandler/Backhandler.js.map | 2 +- src/Backhandler.tsx | 6 ++--- src/Backhandler.xml | 13 ++++------ typings/BackhandlerProps.d.ts | 6 ++--- 8 files changed, 28 insertions(+), 42 deletions(-) diff --git a/README.md b/README.md index 137c4ed..f313ac6 100644 --- a/README.md +++ b/README.md @@ -1,25 +1,17 @@ ## Backhandler -Widget to disregard back events on page when using Mendix Native. +[Disregard back events on page] + +## Features +[feature highlights] ## Usage -For development: - -Create customwidgets folder in root of project directory -Git clone this repo into customwidgets folder -Open command prompt in cloned folder -npm i -npm run dev / npm run build -Widget can now be used inside Mendix. - -For plain usage: - -Copy MPK file in releases to widgets directory. +[step by step instructions] ## Demo project -Not available yet. +[link to sandbox] ## Issues, suggestions and feature requests -https://github.com/IncentroBA/backhandler/issues +[link to GitHub issues] ## Development and contribution -N/A +[specify contribute] diff --git a/dist/1.0.0/incentro.Backhandler.mpk b/dist/1.0.0/incentro.Backhandler.mpk index e755c037616126d5cd132aa19984c59d96ffb8bf..8d8d5866037adb56b436f0ad65367c5cebeb80f0 100644 GIT binary patch delta 4348 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 delta 4239 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 back events on page - - - Disable - Boolean for enabling/disabling backhandler - - - + + + On backpress + Flow to call when hardware backbutton is used. - + diff --git a/dist/tmp/widgets/incentro/backhandler/Backhandler.js b/dist/tmp/widgets/incentro/backhandler/Backhandler.js index efb6b77..2584a83 100644 --- a/dist/tmp/widgets/incentro/backhandler/Backhandler.js +++ b/dist/tmp/widgets/incentro/backhandler/Backhandler.js @@ -112,14 +112,14 @@ class Backhandler extends react__WEBPACK_IMPORTED_MODULE_0__["Component"] { return (Object(react__WEBPACK_IMPORTED_MODULE_0__["createElement"])(react_native__WEBPACK_IMPORTED_MODULE_1__["View"], null)); } componentWillMount() { - if (this.props.disableBack) { - react_native__WEBPACK_IMPORTED_MODULE_1__["BackHandler"].addEventListener('hardwareBackPress', this.handleBackButtonClick); - } + react_native__WEBPACK_IMPORTED_MODULE_1__["BackHandler"].addEventListener('hardwareBackPress', this.handleBackButtonClick); } componentWillUnmount() { react_native__WEBPACK_IMPORTED_MODULE_1__["BackHandler"].removeEventListener('hardwareBackPress', this.handleBackButtonClick); } handleBackButtonClick() { + var _a; + (_a = this.props.onBack) === null || _a === void 0 ? void 0 : _a.execute(); return true; } } diff --git a/dist/tmp/widgets/incentro/backhandler/Backhandler.js.map b/dist/tmp/widgets/incentro/backhandler/Backhandler.js.map index 2029968..c738375 100644 --- a/dist/tmp/widgets/incentro/backhandler/Backhandler.js.map +++ b/dist/tmp/widgets/incentro/backhandler/Backhandler.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/Backhandler.tsx","webpack:///external \"react\"","webpack:///external \"react-native\""],"names":[],"mappings":";;QAAA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;;;QAGA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA,0CAA0C,gCAAgC;QAC1E;QACA;;QAEA;QACA;QACA;QACA,wDAAwD,kBAAkB;QAC1E;QACA,iDAAiD,cAAc;QAC/D;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA,yCAAyC,iCAAiC;QAC1E,gHAAgH,mBAAmB,EAAE;QACrI;QACA;;QAEA;QACA;QACA;QACA,2BAA2B,0BAA0B,EAAE;QACvD,iCAAiC,eAAe;QAChD;QACA;QACA;;QAEA;QACA,sDAAsD,+DAA+D;;QAErH;QACA;;;QAGA;QACA;;;;;;;;;;;;;AClFA;AAAA;AAAA;AAAA;AAAA;AAAA;AAA4D;AACW;AAWhE,MAAM,WAAY,SAAQ,+CAAwC;IACrE,YAAY,KAAoC;QAC5C,KAAK,CAAC,KAAK,CAAC;QACZ,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACvE,CAAC;IAED,MAAM;QACF,OAAO,CACP,4DAAC,iDAAI,OAAQ,CACZ;IACL,CAAC;IAED,kBAAkB;QACd,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE;YACxB,wDAAW,CAAC,gBAAgB,CAAC,mBAAmB,EAAE,IAAI,CAAC,qBAAqB,CAAC,CAAC;SACjF;IACL,CAAC;IAED,oBAAoB;QAChB,wDAAW,CAAC,mBAAmB,CAAC,mBAAmB,EAAE,IAAI,CAAC,qBAAqB,CAAC,CAAC;IACrF,CAAC;IAED,qBAAqB;QACjB,OAAO,IAAI,CAAC;IAChB,CAAC;CACJ;;;;;;;;;;;;ACrCD,kC;;;;;;;;;;;ACAA,yC","file":"widgets/incentro/backhandler/Backhandler.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"./src/Backhandler.tsx\");\n","import { Component, ReactNode, createElement } from \"react\";\nimport { TextStyle, ViewStyle, BackHandler, View } from \"react-native\";\n\nimport { Style } from \"@mendix/pluggable-widgets-tools\";\n\nimport { BackhandlerProps } from \"../typings/BackhandlerProps\";\n\nexport interface CustomStyle extends Style {\n container: ViewStyle;\n label: TextStyle;\n}\n\nexport class Backhandler extends Component> {\n constructor(props: BackhandlerProps){\n super(props)\n this.handleBackButtonClick = this.handleBackButtonClick.bind(this);\n }\n\n render(): ReactNode {\n return (\n \n )\n }\n\n componentWillMount() {\n if (this.props.disableBack) {\n BackHandler.addEventListener('hardwareBackPress', this.handleBackButtonClick);\n } \n }\n \n componentWillUnmount() {\n BackHandler.removeEventListener('hardwareBackPress', this.handleBackButtonClick);\n }\n \n handleBackButtonClick() {\n return true;\n }\n}\n\n","module.exports = require(\"react\");","module.exports = require(\"react-native\");"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/Backhandler.tsx","webpack:///external \"react\"","webpack:///external \"react-native\""],"names":[],"mappings":";;QAAA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;;;QAGA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA,0CAA0C,gCAAgC;QAC1E;QACA;;QAEA;QACA;QACA;QACA,wDAAwD,kBAAkB;QAC1E;QACA,iDAAiD,cAAc;QAC/D;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA,yCAAyC,iCAAiC;QAC1E,gHAAgH,mBAAmB,EAAE;QACrI;QACA;;QAEA;QACA;QACA;QACA,2BAA2B,0BAA0B,EAAE;QACvD,iCAAiC,eAAe;QAChD;QACA;QACA;;QAEA;QACA,sDAAsD,+DAA+D;;QAErH;QACA;;;QAGA;QACA;;;;;;;;;;;;;AClFA;AAAA;AAAA;AAAA;AAAA;AAAA;AAA4D;AACW;AAWhE,MAAM,WAAY,SAAQ,+CAAwC;IACrE,YAAY,KAAoC;QAC5C,KAAK,CAAC,KAAK,CAAC;QACZ,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACvE,CAAC;IAGD,MAAM;QACF,OAAO,CACP,4DAAC,iDAAI,OAAQ,CACZ;IACL,CAAC;IAED,kBAAkB;QACd,wDAAW,CAAC,gBAAgB,CAAC,mBAAmB,EAAE,IAAI,CAAC,qBAAqB,CAAC,CAAC;IAClF,CAAC;IAED,oBAAoB;QAChB,wDAAW,CAAC,mBAAmB,CAAC,mBAAmB,EAAE,IAAI,CAAC,qBAAqB,CAAC,CAAC;IACrF,CAAC;IAED,qBAAqB;;QACjB,UAAI,CAAC,KAAK,CAAC,MAAM,0CAAE,OAAO,GAAG;QAC7B,OAAO,IAAI,CAAC;IAChB,CAAC;CACJ;;;;;;;;;;;;ACrCD,kC;;;;;;;;;;;ACAA,yC","file":"widgets/incentro/backhandler/Backhandler.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"./src/Backhandler.tsx\");\n","import { Component, ReactNode, createElement } from \"react\";\nimport { TextStyle, ViewStyle, BackHandler, View } from \"react-native\";\n\nimport { Style } from \"@mendix/pluggable-widgets-tools\";\n\nimport { BackhandlerProps } from \"../typings/BackhandlerProps\";\n\nexport interface CustomStyle extends Style {\n container: ViewStyle;\n label: TextStyle;\n}\n\nexport class Backhandler extends Component> {\n constructor(props: BackhandlerProps){\n super(props)\n this.handleBackButtonClick = this.handleBackButtonClick.bind(this);\n }\n\n //We have to have a render block, or else Mendix Native will crash. Render block is expected.\n render(): ReactNode {\n return (\n \n )\n }\n\n componentWillMount() {\n BackHandler.addEventListener('hardwareBackPress', this.handleBackButtonClick);\n }\n \n componentWillUnmount() {\n BackHandler.removeEventListener('hardwareBackPress', this.handleBackButtonClick);\n }\n \n handleBackButtonClick() {\n this.props.onBack?.execute();\n return true;\n }\n}\n\n","module.exports = require(\"react\");","module.exports = require(\"react-native\");"],"sourceRoot":""} \ No newline at end of file diff --git a/src/Backhandler.tsx b/src/Backhandler.tsx index f264961..311dc2b 100644 --- a/src/Backhandler.tsx +++ b/src/Backhandler.tsx @@ -16,6 +16,7 @@ export class Backhandler extends Component> { this.handleBackButtonClick = this.handleBackButtonClick.bind(this); } + //We have to have a render block, or else Mendix Native will crash. Render block is expected. render(): ReactNode { return ( @@ -23,9 +24,7 @@ export class Backhandler extends Component> { } componentWillMount() { - if (this.props.disableBack) { - BackHandler.addEventListener('hardwareBackPress', this.handleBackButtonClick); - } + BackHandler.addEventListener('hardwareBackPress', this.handleBackButtonClick); } componentWillUnmount() { @@ -33,6 +32,7 @@ export class Backhandler extends Component> { } handleBackButtonClick() { + this.props.onBack?.execute(); return true; } } diff --git a/src/Backhandler.xml b/src/Backhandler.xml index ed70a78..7d0de4e 100644 --- a/src/Backhandler.xml +++ b/src/Backhandler.xml @@ -7,14 +7,11 @@ Disregard back events on page - - - Disable - Boolean for enabling/disabling backhandler - - - + + + On backpress + Flow to call when hardware backbutton is used. - + diff --git a/typings/BackhandlerProps.d.ts b/typings/BackhandlerProps.d.ts index ad4c08c..02e3c50 100644 --- a/typings/BackhandlerProps.d.ts +++ b/typings/BackhandlerProps.d.ts @@ -3,16 +3,16 @@ * WARNING: All changes made to this file will be overwritten * @author Mendix UI Content Team */ -import { EditableValue } from "mendix"; +import { ActionValue } from "mendix"; export interface BackhandlerProps