Coder Social home page Coder Social logo

rexhxiao / angular-dirtyform-check Goto Github PK

View Code? Open in Web Editor NEW

This project forked from jonaszuberbuehler/angular-dirtyform-check

0.0 2.0 0.0 1.33 MB

Dirty form (i.e., unsaved changes) checker for AngularJS

License: MIT License

JavaScript 100.00%

angular-dirtyform-check's Introduction

angular-dirtyform-check

Prompt user on navigation if there are unsaved form changes. Works with ngRoute and ui-router.

See it

Here

Get it

from npm

npm install --save angular-dirtyform-check

from bower

bower install --save angular-dirtyform-check

and add it to your html file

<script src="/dist/angular-dirtyform-check.js"></script>

Use it

Add angular-dirtyform-check as dependency

var module = angular.module('yourApp', [
    'angularDirtyformCheck'
]);

and make any <form> being watched for unsaved changes on navigation by adding the dirty-check directive

<form dirty-check class="well">
    <div class="form-group">
        <label for="magicnumber">Magic number</label>
        <input type="number" class="form-control" id="magicnumber" placeholder="Magic number" ng-model="model.magicnumber">
    </div>
    <a class="btn btn-default" href="#form1/testParam">Go to form 1 with params</a>
</form>

Customize it

By default a simple confirm(dirtyMsg) is shown to the user asking Changes you made may not be saved. Leave anyway?.

You can change the message with dirtyCheckServiceProvider.setDirtyMessage() like

 module.config(config);

config.$inject = ['dirtyCheckServiceProvider'];
function config(dirtyCheckServiceProvider) {
    dirtyCheckServiceProvider.setDirtyMessage('Wanna leave?');
}

or change the entire dialog being shown providing your own dirtyCheckDialog service that offers a show() function returning a thenable object. If the promise is fulfilled the navigation is executed, otherwise it's not and the user stays where he is.

Example using ngDialog (openConfirm() returns a promise)

var module = angular.module('yourApp', [
    'angularDirtyformCheck',
    'ngDialog'
]);

module.service('dirtyCheckDialog', dirtyCheckDialog);

dirtyCheckDialog.$inject = ['ngDialog'];
function dirtyCheckDialog(ngDialog) {
    return {
        show: function () {
            return ngDialog.openConfirm({
                template: 'dialog.tpl.html'
            });
        }
    };
}

or $mdDialog from Angular Material ($mdDialog.show() returns a promise)

var module = angular.module('yourApp', [
    'angularDirtyformCheck',
    'ngMaterial'
]);

module.service('dirtyCheckDialog', dirtyCheckDialog);

dirtyCheckDialog.$inject = ['$mdDialog'];
function dirtyCheckDialog($mdDialog) {
    return {
        show: function () {
            return $mdDialog.show({
                   templateUrl: 'dialog.tpl.html',
                   controller: ['$scope', '$mdDialog', function($scope, $mdDialog) {
                       $scope.stay = function () {
                           $mdDialog.cancel();
                       };
                       $scope.leave = function () {
                           $mdDialog.hide();
                       };
                   }]
            });
        }
    };
}

Build it

Get a clone and run

npm install
gulp build

The built file is located under ./dist.

To run the demo locally run

gulp demo

and navigate your browser to http://localhost:8080/dev_index.html. Source changes will trigger a refresh.

angular-dirtyform-check's People

Contributors

jonaszuberbuehler avatar rexhxiao avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.