GithubHelp home page GithubHelp logo

stodolos / angular-auto-save-form Goto Github PK

View Code? Open in Web Editor NEW

This project forked from tiberiuzuld/angular-auto-save-form

0.0 2.0 0.0 1.55 MB

Angular auto save form changed inputs

Home Page: https://tiberiuzuld.github.io/angular-auto-save-form

License: MIT License

JavaScript 81.30% CSS 4.56% HTML 14.14%

angular-auto-save-form's Introduction

angular-auto-save-form

npm version dependencies Status devDependencies Status downloads

Description

Angular auto save form changed inputs.
The directive will call the callback function with a parameter object containing only the inputs that are $dirty.

Install with Bower

  bower install angular-auto-save-form --save

Install with npm

  npm install angular-auto-save-form --save

Then add a <script> to your index.html:

  <link rel="stylesheet" href="bower_components/angular-auto-save-form/dist/auto-save-form.css">
  <script src="bower_components/angular/angular.js"></script>
  <script src="bower_components/lodash/lodash.js"></script>
  <script src="bower_components/angular-auto-save-form/dist/auto-save-form.js"></script>

Include 'angular-auto-save-form' as a dependency of your module like this:

  var module = angular.module("example", ["angular-auto-save-form"]);

Usage

Default usage:

Directive requires that form and input elements to have [name] attribute

  <ng-form name="myForm" auto-save-form="callback(controls)"> 
    <input ng-model="user.name" name="name"/>
    <input ng-model="user.email" name="email"/>
  </ng-form>

Which expects a scope setup like the following:

  $scope.user = { name: "Jon Doe", email: "[email protected]" };
  
  //changing input user.name the callback function will be called with parameter object
  $scope.callback = function(controls){ // controls = {'name': 'Jon Doe'}
      return $http.post('saveDataUrl', controls);
  };

For radio inputs or if you want to group inputs on the same property use the [auto-save-form-property] attribute
on one of the inputs and prefix the input name with a group name

  <ng-form name="myForm" auto-save-form="callback(controls)"> 
    <input type="radio" ng-model="user.gender" name="inputGroupName.gender1" 
      auto-save-form-property="inputGroupName.gender" value="male"/>Male
    <input type="radio" ng-model="user.gender" name="inputGroupName.gender2" value="female"/>Female
  </ng-form>

The object will look like this:

  //{'gender': 'male'}

Optional attributes:

If you want to change locally debounce timer

  auto-save-form-debounce="number" default:500

If you want to change the debounce at input level use [ng-model-options] directive

Loading spinner in top right corner of the form enabled by default if callback promise returns a promise.

  auto-save-form-spinner="boolean"  default:true
  auto-save-form-spinner-position="string"  default:'top right'

Possible combinations: 'top right', 'top left', 'bottom left', 'bottom right'.
It is possible to add your own class without your desired position.
Example:

[auto-save-form] .spinner.my-class {
    top: 50%;
    left: 50%;
  }
  auto-save-form-spinner-position="my-class"
The directive supports nested objects like:
 user = {
  name: 'Jon Doe',
  country: {
    name: 'French',
    city: 'Paris'
  }
 }
  <input ng-model="user.country.name" name="country.name"/>
//callback object
 {
  country: {
    name: 'French'
  }
 }

Alternatively, disable auto save usage:

Warning: Mode false works only with form tag see this issue
  <form name="myForm" auto-save-form="callback(controls, $event)" auto-save-form-mode="boolean"> 
    <input ng-model="username" name="user"/>
  </form>

Which expects a scope setup like the following:

  $scope.username = "Jon Doe";
  
  $scope.callback = function(controls, $event){ // controls = {'user': 'Jon Doe'}, $event={formSubmitEvent}
      $http.post('saveDataUrl', controls);
  };

Optional attribute:

It is optional if the property is set to false globally

  auto-save-form-mode="boolean"

Trigger form submission, useful when the button is outside of the form

  $scope.autoSaveFormSubmit($event);

Global configuration

In config phase add autoSaveFormProvider

  autoSaveFormProvider.setDebounce(500); //change globaly default debounce timer
  autoSaveFormProvider.setAutoSaveMode(true); //change globaly default auto save mode
  autoSaveFormProvider.setSpinner(true); //change globaly default spinner
  autoSaveFormProvider.setSpinnerPosition('top right'); //change globaly default position of the spinner

License

The MIT License

Copyright (c) 2017 Tiberiu Zuld

angular-auto-save-form's People

Contributors

tiberiuzuld avatar stodolos 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.