UNPKG

react-router-guard-dirty-state

Version:

Guard unsaved / dirty componets (usually containing forms) by alets when leaving both by onbeforeunload and react-roter routes.

1 lines 6 kB
!function(root,factory){if("object"==typeof exports&&"object"==typeof module)module.exports=factory(require("react"));else if("function"==typeof define&&define.amd)define(["react"],factory);else{var a=factory("object"==typeof exports?require("react"):root.React);for(var i in a)("object"==typeof exports?exports:root)[i]=a[i]}}(this,function(__WEBPACK_EXTERNAL_MODULE_0__){return function(modules){function __webpack_require__(moduleId){if(installedModules[moduleId])return installedModules[moduleId].exports;var module=installedModules[moduleId]={i:moduleId,l:!1,exports:{}};return modules[moduleId].call(module.exports,module,module.exports,__webpack_require__),module.l=!0,module.exports}var installedModules={};return __webpack_require__.m=modules,__webpack_require__.c=installedModules,__webpack_require__.i=function(value){return value},__webpack_require__.d=function(exports,name,getter){__webpack_require__.o(exports,name)||Object.defineProperty(exports,name,{configurable:!1,enumerable:!0,get:getter})},__webpack_require__.n=function(module){var getter=module&&module.__esModule?function(){return module.default}:function(){return module};return __webpack_require__.d(getter,"a",getter),getter},__webpack_require__.o=function(object,property){return Object.prototype.hasOwnProperty.call(object,property)},__webpack_require__.p="",__webpack_require__(__webpack_require__.s=1)}([function(module,exports){module.exports=__WEBPACK_EXTERNAL_MODULE_0__},function(module,__webpack_exports__,__webpack_require__){"use strict";function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor))throw new TypeError("Cannot call a class as a function")}function _possibleConstructorReturn(self,call){if(!self)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!call||"object"!=typeof call&&"function"!=typeof call?self:call}function _inherits(subClass,superClass){if("function"!=typeof superClass&&null!==superClass)throw new TypeError("Super expression must either be null or a function, not "+typeof superClass);subClass.prototype=Object.create(superClass&&superClass.prototype,{constructor:{value:subClass,enumerable:!1,writable:!0,configurable:!0}}),superClass&&(Object.setPrototypeOf?Object.setPrototypeOf(subClass,superClass):subClass.__proto__=superClass)}Object.defineProperty(__webpack_exports__,"__esModule",{value:!0});var __WEBPACK_IMPORTED_MODULE_0_react__=__webpack_require__(0),__WEBPACK_IMPORTED_MODULE_0_react___default=__webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_react__),_extends=Object.assign||function(target){for(var i=1;i<arguments.length;i++){var source=arguments[i];for(var key in source)Object.prototype.hasOwnProperty.call(source,key)&&(target[key]=source[key])}return target},_createClass=function(){function defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||!1,descriptor.configurable=!0,"value"in descriptor&&(descriptor.writable=!0),Object.defineProperty(target,descriptor.key,descriptor)}}return function(Constructor,protoProps,staticProps){return protoProps&&defineProperties(Constructor.prototype,protoProps),staticProps&&defineProperties(Constructor,staticProps),Constructor}}(),PASS_PROP_AUTO=!0,guardHoc=function(UnsavedComponent){var SaveGuardedComponent=function(_Component){function SaveGuardedComponent(props){_classCallCheck(this,SaveGuardedComponent);var _this=_possibleConstructorReturn(this,(SaveGuardedComponent.__proto__||Object.getPrototypeOf(SaveGuardedComponent)).call(this,props));return _this.state={guardIsActive:!1},_this.instance={guardIsActive:!1},_this.onBeforeUnload=_this.onBeforeUnload.bind(_this),_this.handleGuardSetActive=_this.handleGuardSetActive.bind(_this),_this}return _inherits(SaveGuardedComponent,_Component),_createClass(SaveGuardedComponent,[{key:"componentWillUnmount",value:function(){window.removeEventListener("beforeunload",this.onBeforeUnload)}},{key:"onBeforeUnload",value:function(ev){var dialogText="Changes you made are not saved. Are you sure you want to leave this page?";return ev.returnValue=dialogText,dialogText}},{key:"handleGuardSetActive",value:function(){var guardIsActive=arguments.length>0&&void 0!==arguments[0]&&arguments[0];PASS_PROP_AUTO?this.handleGuardSetActiveStateful(guardIsActive):this.handleGuardSetActiveStateless(guardIsActive)}},{key:"handleGuardSetActiveStateful",value:function(){var guardIsActive=arguments.length>0&&void 0!==arguments[0]&&arguments[0];this.state.guardIsActive!==guardIsActive&&(guardIsActive?window.addEventListener("beforeunload",this.onBeforeUnload):window.removeEventListener("beforeunload",this.onBeforeUnload),this.setState({guardIsActive:guardIsActive}))}},{key:"handleGuardSetActiveStateless",value:function(){var guardIsActive=arguments.length>0&&void 0!==arguments[0]&&arguments[0];this.instance.guardIsActive!==guardIsActive&&(guardIsActive?window.addEventListener("beforeunload",this.onBeforeUnload):window.removeEventListener("beforeunload",this.onBeforeUnload),this.instance.guardIsActive=guardIsActive)}},{key:"render",value:function(){return PASS_PROP_AUTO?__WEBPACK_IMPORTED_MODULE_0_react___default.a.createElement(UnsavedComponent,_extends({},this.props,{guardDirtySetActive:this.handleGuardSetActive,guardDirtyIsActive:this.state.guardIsActive})):__WEBPACK_IMPORTED_MODULE_0_react___default.a.createElement(UnsavedComponent,_extends({},this.props,{guardDirtySetActive:this.handleGuardSetActive}))}}]),SaveGuardedComponent}(__WEBPACK_IMPORTED_MODULE_0_react__.Component);return SaveGuardedComponent.displayName="GuardUnsavedComponent("+function(UnsavedComponent){return UnsavedComponent.displayName||UnsavedComponent.name||"UnsavedComponent"}(UnsavedComponent)+")",SaveGuardedComponent},guardDirtySate=function(){var supplyGuardDirtyIsActive=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];return PASS_PROP_AUTO=supplyGuardDirtyIsActive,guardHoc};__webpack_exports__.default=guardDirtySate}])});