activeadmin_dynamic_fields 0.2.1 → 0.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 1c9721fc5faeb42090d36f2f0200317ad41a4903
4
- data.tar.gz: c4b4e0049e7b20bf127b2559f641c4255b67cd2b
3
+ metadata.gz: a41854a61414d8eb8f8c35556fd0cbfdfa8364ed
4
+ data.tar.gz: 85340ca45697226edb75f74a5189c812400e19cd
5
5
  SHA512:
6
- metadata.gz: 21956e124e0fce3acd285680693af28885ed0c6bb8a5582a32401d27d4640d97e56c7ba66baed5dabe9ed18eec6b1c67e54a88d4c0e3d580bc4169591614345d
7
- data.tar.gz: ace8f765a7fa6d9c6717dc0c95365abb7ddf63a51f354fd967706e1ffc7a28b1f9384120c15b7235975de944cbfb35437ef0ace30375bb0f4b9db092329788e8
6
+ metadata.gz: 72f93305d28ba3134437e19d062cc03a654113776d8aecfceb78f06d0939caeb8a3e01e4bca0f273db11be3b4358d2a7d72a57fbd838248c4af6108c54a44d42
7
+ data.tar.gz: 45231b55baf2d328e05e83d843285858487067f7798859c8b0d5fbfee11663e282c9230a41a8a5efed1a71082f68e1892c31e06fbc09893f9d12f69f6986ddec
data/README.md CHANGED
@@ -27,6 +27,7 @@ Options are passed to fields using *input_html* parameter as *data* attributes:
27
27
  + **not_checked**: check if a checkbox is not checked
28
28
  + **blank**: check if a field is blank
29
29
  + **not_blank**: check if a field is not blank
30
+ + **changed**: check if the value of an input is changed (dirty)
30
31
  - **data-eq**: check if a field has a specific value
31
32
  - **data-not**: check if a field hasn't a specific value
32
33
  - **data-target**: target css selector (from parent fieldset, look for the closest match)
@@ -1,5 +1,5 @@
1
1
  // Evaluate a condition
2
- function dfEvalCondition( el, args ) {
2
+ function dfEvalCondition( el, args, on_change ) {
3
3
  if( args.fn ) {
4
4
  if( args.fn && window[args.fn] ) return !window[args.fn]( el );
5
5
  else console.log( 'Warning - activeadmin_dynamic_fields: ' + args.fn + '() not available [1]' );
@@ -16,6 +16,9 @@ function dfEvalCondition( el, args ) {
16
16
  else if( args.if == 'not_blank' ) {
17
17
  return el.val().length !== 0 && el.val().trim();
18
18
  }
19
+ else if( args.if == 'changed' ) {
20
+ return on_change;
21
+ }
19
22
  else if( args.eq ) {
20
23
  return el.val() == args.eq;
21
24
  }
@@ -36,59 +39,59 @@ function dfSetupField( el ) {
36
39
  if( el.data( 'target' ) ) target = el.closest( 'fieldset' ).find( el.data( 'target' ) ); // closest find for has many associations
37
40
  else if( el.data( 'gtarget' ) ) target = $( el.data( 'gtarget' ) );
38
41
  if( action == 'hide' ) {
39
- if( dfEvalCondition( el, args ) ) target.hide();
42
+ if( dfEvalCondition( el, args, false ) ) target.hide();
40
43
  else target.show();
41
44
  el.on( 'change', function( event ) {
42
- if( dfEvalCondition( $(this), args ) ) target.hide();
45
+ if( dfEvalCondition( $(this), args, true ) ) target.hide();
43
46
  else target.show();
44
47
  });
45
48
  }
46
49
  else if( action == 'slide' ) {
47
- if( dfEvalCondition( el, args ) ) target.slideDown();
50
+ if( dfEvalCondition( el, args, false ) ) target.slideDown();
48
51
  else target.slideUp();
49
52
  el.on( 'change', function( event ) {
50
- if( dfEvalCondition( $(this), args ) ) target.slideDown();
53
+ if( dfEvalCondition( $(this), args, true ) ) target.slideDown();
51
54
  else target.slideUp();
52
55
  });
53
56
  }
54
57
  else if( action == 'fade' ) {
55
- if( dfEvalCondition( el, args ) ) target.fadeIn();
58
+ if( dfEvalCondition( el, args, false ) ) target.fadeIn();
56
59
  else target.fadeOut();
57
60
  el.on( 'change', function( event ) {
58
- if( dfEvalCondition( $(this), args ) ) target.fadeIn();
61
+ if( dfEvalCondition( $(this), args, true ) ) target.fadeIn();
59
62
  else target.fadeOut();
60
63
  });
61
64
  }
62
65
  else if( action.substr( 0, 8 ) == 'setValue' ) {
63
66
  var val = action.substr( 8 ).trim();
64
- if( dfEvalCondition( el, args ) ) dfSetValue( target, val );
67
+ if( dfEvalCondition( el, args, false ) ) dfSetValue( target, val );
65
68
  el.on( 'change', function( event ) {
66
- if( dfEvalCondition( $(this), args ) ) dfSetValue( target, val );
69
+ if( dfEvalCondition( $(this), args, true ) ) dfSetValue( target, val );
67
70
  });
68
71
  }
69
72
  else if( action.substr( 0, 8 ) == 'callback' ) {
70
73
  var cb = action.substr( 8 ).trim();
71
74
  if( cb && window[cb] ) {
72
- if( dfEvalCondition( el, args ) ) window[cb]( el.data( 'args' ) );
75
+ if( dfEvalCondition( el, args, false ) ) window[cb]( el.data( 'args' ) );
73
76
  el.on( 'change', function( event ) {
74
- if( dfEvalCondition( $(this), args ) ) window[cb]( el.data( 'args' ) );
77
+ if( dfEvalCondition( $(this), args, true ) ) window[cb]( el.data( 'args' ) );
75
78
  });
76
79
  }
77
80
  else console.log( 'Warning - activeadmin_dynamic_fields: ' + cb + '() not available [2]' );
78
81
  }
79
82
  else if( action.substr( 0, 8 ) == 'addClass' ) {
80
83
  var classes = action.substr( 8 ).trim();
81
- if( dfEvalCondition( el, args ) ) target.removeClass( classes );
84
+ if( dfEvalCondition( el, args, false ) ) target.removeClass( classes );
82
85
  else target.addClass( classes );
83
86
  el.on( 'change', function( event ) {
84
- if( dfEvalCondition( $(this), args ) ) target.removeClass( classes );
87
+ if( dfEvalCondition( $(this), args, true ) ) target.removeClass( classes );
85
88
  else target.addClass( classes );
86
89
  });
87
90
  }
88
91
  else if( args.fn ) { // function without action
89
- dfEvalCondition( el, args );
92
+ dfEvalCondition( el, args, false );
90
93
  el.on( 'change', function( event ) {
91
- dfEvalCondition( el, args );
94
+ dfEvalCondition( el, args, true );
92
95
  });
93
96
  }
94
97
  }
@@ -1,5 +1,5 @@
1
1
  module ActiveAdmin
2
2
  module DynamicFields
3
- VERSION = '0.2.1'
3
+ VERSION = '0.2.2'
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: activeadmin_dynamic_fields
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mattia Roccoberton