binda 0.0.3 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (62) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +14 -29
  3. data/Rakefile +16 -10
  4. data/app/assets/javascripts/binda/components/form_item.js +12 -1
  5. data/app/assets/javascripts/binda/components/form_item_asset.js +1 -0
  6. data/app/assets/javascripts/binda/components/form_item_choice.js +58 -0
  7. data/app/assets/javascripts/binda/components/form_item_editor.js +39 -0
  8. data/app/assets/javascripts/binda/components/form_item_repeater.js +7 -0
  9. data/app/assets/javascripts/binda/components/sortable.js +0 -1
  10. data/app/assets/javascripts/binda/dist/binda.bundle.js +175 -8
  11. data/app/assets/javascripts/binda/index.js +4 -0
  12. data/app/assets/stylesheets/binda/components/form_item.scss +64 -2
  13. data/app/controllers/binda/application_controller.rb +2 -10
  14. data/app/controllers/binda/choices_controller.rb +19 -0
  15. data/app/controllers/binda/components_controller.rb +38 -134
  16. data/app/controllers/binda/field_groups_controller.rb +18 -30
  17. data/app/controllers/binda/structures_controller.rb +6 -6
  18. data/app/controllers/concerns/binda/component_controller_helper.rb +16 -0
  19. data/app/models/binda/checkbox.rb +7 -0
  20. data/app/models/binda/choice.rb +11 -0
  21. data/app/models/binda/component.rb +12 -136
  22. data/app/models/binda/field_group.rb +1 -1
  23. data/app/models/binda/field_setting.rb +40 -8
  24. data/app/models/binda/radio.rb +5 -0
  25. data/app/models/binda/repeater.rb +11 -79
  26. data/app/models/binda/select.rb +7 -0
  27. data/app/models/binda/structure.rb +13 -13
  28. data/app/models/concerns/binda/component_model_helper.rb +170 -0
  29. data/app/views/binda/components/_form_item_new_repeater.html.erb +3 -5
  30. data/app/views/binda/components/_form_item_selectable.html.erb +72 -0
  31. data/app/views/binda/components/_form_section.html.erb +7 -2
  32. data/app/views/binda/components/_form_section_repeater.html.erb +10 -0
  33. data/app/views/binda/field_groups/_form_item.html.erb +54 -26
  34. data/app/views/binda/field_groups/_form_item_choice.erb +96 -0
  35. data/app/views/binda/field_groups/_form_section.html.erb +2 -2
  36. data/app/views/binda/field_groups/_form_section_repeater.html.erb +2 -2
  37. data/config/locales/en.yml +7 -0
  38. data/config/routes.rb +2 -1
  39. data/db/migrate/1_create_binda_tables.rb +17 -0
  40. data/lib/binda/engine.rb +6 -0
  41. data/lib/binda/version.rb +1 -1
  42. data/lib/generators/binda/install/install_generator.rb +6 -8
  43. data/lib/generators/binda/setup/setup_generator.rb +8 -4
  44. metadata +66 -42
  45. data/app/controllers/binda/dates_controller.rb +0 -62
  46. data/app/controllers/binda/texts_controller.rb +0 -62
  47. data/app/views/binda/dates/_form.html.erb +0 -22
  48. data/app/views/binda/dates/edit.html.erb +0 -6
  49. data/app/views/binda/dates/index.html.erb +0 -27
  50. data/app/views/binda/dates/new.html.erb +0 -5
  51. data/app/views/binda/dates/show.html.erb +0 -9
  52. data/app/views/binda/repeaters/_form.html.erb +0 -27
  53. data/app/views/binda/repeaters/edit.html.erb +0 -6
  54. data/app/views/binda/repeaters/index.html.erb +0 -29
  55. data/app/views/binda/repeaters/new.html.erb +0 -5
  56. data/app/views/binda/repeaters/show.html.erb +0 -14
  57. data/app/views/binda/structures/add_child.html.erb +0 -0
  58. data/app/views/binda/texts/_form.html.erb +0 -22
  59. data/app/views/binda/texts/edit.html.erb +0 -6
  60. data/app/views/binda/texts/index.html.erb +0 -27
  61. data/app/views/binda/texts/new.html.erb +0 -5
  62. data/app/views/binda/texts/show.html.erb +0 -9
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: f1c058edd9f695ab246bb00bc9d47fd9eb8cf39f
4
- data.tar.gz: 0e3977f1353a7c6b06d54e3214bb7d4519df1933
3
+ metadata.gz: 8ed52b6a7c00c6370108c689ba3396a79f5e85b8
4
+ data.tar.gz: 72aaf34b07c36b78c832fe061c4beb35be278a9b
5
5
  SHA512:
6
- metadata.gz: d1a87a84ebc250b8539bdb05081ea1a970c7214219bbc8e3f61d9a73679b55d94c6ca5de393946fb8d2b5ee294b9da8c92d657ecbf5780dabd827ee1daf29199
7
- data.tar.gz: 200d0dff9eaf1202bee514fc0e983d44785761f7deda57e0351eb35894fb8280aa0816522e6e0bd93ff15599e45ec9529b5592df2b4386624816a80d0ae61fcc
6
+ metadata.gz: c2649f0eeeaa9265c349a303e981d44f459dad81d871cb730a8a5094224ab8212425659f31f80d56212d471cba466657d89fd361a6c793b30d44bc49f7a90e1e
7
+ data.tar.gz: 63e9fd484c883eac80fd00d3c8b5bff90222418df2290d55bc6bccec1a564371307441ae06827183b327a0f1eb85973a9e3132a62996f93f921afdf7233c8ab0
data/README.md CHANGED
@@ -10,53 +10,38 @@ A modular CMS for Ruby on Rails 5.
10
10
  Add this line to your application's Gemfile:
11
11
 
12
12
  ```ruby
13
- gem 'binda', github: 'lacolonia/binda'
13
+ gem 'binda', '~> 0.0.5'
14
14
  ```
15
15
 
16
- And then execute:
16
+ Then execute:
17
17
  ```bash
18
18
  $ bundle
19
19
  ```
20
20
 
21
- Or install it yourself as:
22
- ```bash
23
- $ gem install binda
24
- $ rails generate binda:install
21
+ To install Binda run the installer from terminal.
22
+ ``` bash
23
+ $ rails g binda:install
25
24
  ```
26
25
 
27
- ## Requirements
28
- Binda has some dependencies which you might need to update if you have a very specific environment.
26
+ Now you are good to go. Run `rails s` and check the administration panel at `http://localhost:3000/admin_panel`.
29
27
 
30
- If you are not going to use Rails default ORM please check [Carrierwave documentation](https://github.com/carrierwaveuploader/carrierwave#datamapper-mongoid-sequel) and [Devise documentation](https://github.com/plataformatec/devise#other-orms).
28
+ To get into details read [Binda Guidelines](https://github.com/lacolonia/binda/wiki).
31
29
 
32
- In order to use Carrierwave to process images you need to run MiniMagik. Please refer to [Carrierwave documentation](https://github.com/carrierwaveuploader/carrierwave#using-minimagick) to find more information.
30
+ **Warning: run the installer once.** Running the installer for each application environment will cause issues with users' passwords. Also remember that if you need to re-install Binda you need to drop all Binda database tables first. More details [here](https://github.com/lacolonia/binda/wiki/Installation)
33
31
 
34
32
  ## Bug reporting
35
33
  Please refer to this [guide](http://yourbugreportneedsmore.info).
34
+ If you need direct help you can join [Binda Slack Community](https://binda.herokuapp.com).
36
35
 
37
- ## Contributing
38
- In order to contribute you need to have NodeJs and NPM installed.
39
-
40
- If you are using NVM you can run the folloing command from the application root to detect the version specified on the repository.
41
-
42
- ```bash
43
- $ nvm use .
44
- ```
45
-
46
- If you are planning to work on the javascript files you need to open a terminal window and execute the following command. You need to keep that window open otherwise you will have to run the command every time you save a javascript file.
47
-
48
- ```bash
49
- $ npm install
50
- $ webpack
51
- ```
52
-
53
- The main entry point is the `index.js`. To know more about how Webpack works please head to the [official documentation](https://webpack.js.org/).
54
-
55
- Please comment your code as much as possible.
56
36
 
57
37
  ## License
58
38
  The gem is available as open source under the terms of the [GNU General Public License v3.0](https://github.com/a-barbieri/binda/blob/master/LICENSE).
59
39
 
40
+ ## Credits
41
+ Binda is inspired by [Spina CMS](https://github.com/denkGroot/Spina).
42
+
43
+ We give also credit to authors and contributors of the gems that Binda uses. Huge thank you to all of them.
44
+
60
45
  ## Who is Binda?
61
46
  Is [this guy here](https://en.wikipedia.org/wiki/Alfredo_Binda).
62
47
 
data/Rakefile CHANGED
@@ -14,24 +14,30 @@ RDoc::Task.new(:rdoc) do |rdoc|
14
14
  rdoc.rdoc_files.include('lib/**/*.rb')
15
15
  end
16
16
 
17
- APP_RAKEFILE = File.expand_path("../test/dummy/Rakefile", __FILE__)
17
+ APP_RAKEFILE = File.expand_path("../spec/dummy/Rakefile", __FILE__)
18
18
  load 'rails/tasks/engine.rake'
19
19
 
20
20
 
21
21
  load 'rails/tasks/statistics.rake'
22
22
 
23
23
 
24
-
25
24
  require 'bundler/gem_tasks'
26
25
 
27
- require 'rake/testtask'
28
26
 
29
- Rake::TestTask.new(:test) do |t|
30
- t.libs << 'lib'
31
- t.libs << 'test'
32
- t.pattern = 'test/**/*_test.rb'
33
- t.verbose = false
34
- end
35
27
 
28
+ # # I guess this generate test file every time you use `rails g` command
29
+ # require 'rake/testtask'
30
+ # Rake::TestTask.new(:test) do |t|
31
+ # t.libs << 'lib'
32
+ # t.libs << 'test'
33
+ # t.pattern = 'test/**/*_test.rb'
34
+ # t.verbose = false
35
+ # end
36
+ # task default: :test
36
37
 
37
- task default: :test
38
+ # This should ensure creation of spec instead of test (partially true)
39
+ # https://stackoverflow.com/a/4632188/1498118
40
+ require 'rspec/core/rake_task'
41
+ RSpec::Core::RakeTask.new('spec')
42
+ # If you want to make this the default task
43
+ task :default => :spec
@@ -2,6 +2,8 @@
2
2
  /// FORM ITEM
3
3
  ///- - - - - - - - - - - - - - - - - - - -
4
4
 
5
+ import { _FormItemEditor } from './form_item_editor'
6
+
5
7
  class FormItem {
6
8
 
7
9
  constructor()
@@ -28,7 +30,15 @@ class FormItem {
28
30
 
29
31
  $(document).on('click', '.form-item--open-button, .form-item--close-button', function()
30
32
  {
31
- $( this ).parent('.form-item').children('.form-item--editor').toggleClass('form-item--editor-close')
33
+ var formItemEditor = $( this ).parent('.form-item').children('.form-item--editor')
34
+
35
+ // Make sure form-item--editor max-height correspond to the actual height
36
+ // this is needed for the CSS transition which is trigger clicking open/close button
37
+ if ( !formItemEditor.hasClass('form-item--editor-close') )
38
+ { _FormItemEditor.resize() }
39
+
40
+ // Update classes
41
+ formItemEditor.toggleClass('form-item--editor-close')
32
42
  $( this ).parent('.form-item').children('.form-item--open-button, .form-item--close-button').toggle()
33
43
  })
34
44
  }
@@ -51,4 +61,5 @@ function addNewItem( event )
51
61
  // Clone child and remove id and styles from cloned child
52
62
  $newChild.clone().insertAfter( $newChild )
53
63
  $newChild.removeClass( 'form-item--new' ).removeAttr( 'id' )
64
+ _FormItemEditor.resize()
54
65
  }
@@ -18,6 +18,7 @@ class FormItemAsset
18
18
  setEvents()
19
19
  {
20
20
  // here code to setup assets via ajax
21
+ //
21
22
  }
22
23
  }
23
24
 
@@ -0,0 +1,58 @@
1
+ ///- - - - - - - - - - - - - - - - - - - -
2
+ /// FORM ITEM
3
+ ///- - - - - - - - - - - - - - - - - - - -
4
+
5
+ import { _FormItemEditor } from './form_item_editor'
6
+
7
+
8
+ class FormItemChoice {
9
+
10
+ constructor()
11
+ {
12
+ this.target = '.form-item--choice'
13
+ }
14
+
15
+ isSet()
16
+ {
17
+ if ( $( this.target ).length > 0 ) { return true }
18
+ else { return false }
19
+ }
20
+
21
+ setEvents()
22
+ {
23
+ $(document).on('click', '.form-item--add-choice', function( event )
24
+ {
25
+ event.preventDefault()
26
+ // Clone the new choice field
27
+ var choices = $( this ).parent('.form-item--choices')
28
+ var newchoice = choices.find('.form-item--new-choice')
29
+ var clone = newchoice.clone().removeClass('form-item--new-choice').toggle()
30
+ clone.find('.form-item--toggle-choice').toggle()
31
+ // Append the clone right after
32
+ choices.prepend( clone )
33
+ // Update form item editor size
34
+ _FormItemEditor.resize()
35
+ })
36
+
37
+ $(document).on('click', '.form-item--delete-choice', function( event )
38
+ {
39
+ event.preventDefault()
40
+
41
+ var choice = $( this ).parent('.form-item--choice')
42
+ var destination = $( this ).attr('href')
43
+
44
+ $.ajax({
45
+ url: destination,
46
+ type: 'DELETE',
47
+ success: function() { choice.remove() }
48
+ })
49
+ })
50
+ $(document).on('click', '.form-item--js-delete-choice', function( event )
51
+ {
52
+ event.preventDefault()
53
+ $( this ).parent('.form-item--choice').remove()
54
+ })
55
+ }
56
+ }
57
+
58
+ export let _FormItemChoice = new FormItemChoice()
@@ -0,0 +1,39 @@
1
+ ///- - - - - - - - - - - - - - - - - - - -
2
+ /// FORM ITEM
3
+ ///- - - - - - - - - - - - - - - - - - - -
4
+
5
+ class FormItemEditor {
6
+
7
+ constructor()
8
+ {
9
+ this.target = '.form-item--editor'
10
+ }
11
+
12
+ isSet()
13
+ {
14
+ if ( $( this.target ).length > 0 ) { return true }
15
+ else { return false }
16
+ }
17
+
18
+ setEvents()
19
+ {
20
+ // run resize to set initial size
21
+ this.resize()
22
+ // run resize on each of these events
23
+ $(window).resize( ()=>{ this.resize() } )
24
+ }
25
+
26
+ resize()
27
+ {
28
+ $( this.target ).each( function(){
29
+ // If the form item edito is closed don't go any further
30
+ if ( $(this).height() === 0 ) return
31
+ // otherwise update the max-height which is needed for the CSS transition
32
+ // NOTE you need to remove the max-height (inside 'style' attribute) to get the real height
33
+ $(this).css( "max-height", $(this).removeAttr('style').height() )
34
+ })
35
+ }
36
+
37
+ }
38
+
39
+ export let _FormItemEditor = new FormItemEditor()
@@ -2,6 +2,8 @@
2
2
  /// FORM ITEM
3
3
  ///- - - - - - - - - - - - - - - - - - - -
4
4
 
5
+ import { _FormItemEditor } from './form_item_editor'
6
+
5
7
  class FormItemRepeater {
6
8
 
7
9
  constructor()
@@ -18,12 +20,15 @@ class FormItemRepeater {
18
20
  setEvents()
19
21
  {
20
22
  $(document).on('click', this.target + '--add-new', addNewItem )
23
+
21
24
  $(document).on('click', '.form-item--remove-item-with-js', function( event )
22
25
  {
23
26
  // Stop default behaviour
24
27
  event.preventDefault()
25
28
  $( this ).parent( this.target ).remove()
29
+ _FormItemEditor.resize()
26
30
  })
31
+
27
32
  $(document).on('click', '.form-item--delete-repeater-item', function( event )
28
33
  {
29
34
  // Stop default behaviour
@@ -35,6 +40,7 @@ class FormItemRepeater {
35
40
  method: "DELETE"
36
41
  }).done( ()=>{
37
42
  $( this ).parent('li').remove()
43
+ _FormItemEditor.resize()
38
44
  })
39
45
  })
40
46
  }
@@ -62,5 +68,6 @@ function addNewItem( event )
62
68
  $list.append( newRepeater )
63
69
  var editor_id = $list.find('textarea').last('textarea').attr('id')
64
70
  tinyMCE.EditorManager.execCommand('mceAddEditor',true, editor_id);
71
+ _FormItemEditor.resize()
65
72
  })
66
73
  }
@@ -13,7 +13,6 @@ export default function()
13
13
  )
14
14
  }
15
15
  })
16
- .disableSelection()
17
16
 
18
17
  // Check if sortable item needs handles
19
18
  $('.sortable').each( function()
@@ -63,7 +63,7 @@
63
63
  /******/ __webpack_require__.p = "";
64
64
  /******/
65
65
  /******/ // Load entry module and return exports
66
- /******/ return __webpack_require__(__webpack_require__.s = 4);
66
+ /******/ return __webpack_require__(__webpack_require__.s = 5);
67
67
  /******/ })
68
68
  /************************************************************************/
69
69
  /******/ ([
@@ -71,6 +71,7 @@
71
71
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
72
72
 
73
73
  "use strict";
74
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__form_item_editor__ = __webpack_require__(6);
74
75
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return _FormItem; });
75
76
  var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
76
77
 
@@ -80,6 +81,8 @@ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Cons
80
81
  /// FORM ITEM
81
82
  ///- - - - - - - - - - - - - - - - - - - -
82
83
 
84
+
85
+
83
86
  var FormItem = function () {
84
87
  function FormItem() {
85
88
  _classCallCheck(this, FormItem);
@@ -108,7 +111,16 @@ var FormItem = function () {
108
111
  });
109
112
 
110
113
  $(document).on('click', '.form-item--open-button, .form-item--close-button', function () {
111
- $(this).parent('.form-item').children('.form-item--editor').toggleClass('form-item--editor-close');
114
+ var formItemEditor = $(this).parent('.form-item').children('.form-item--editor');
115
+
116
+ // Make sure form-item--editor max-height correspond to the actual height
117
+ // this is needed for the CSS transition which is trigger clicking open/close button
118
+ if (!formItemEditor.hasClass('form-item--editor-close')) {
119
+ __WEBPACK_IMPORTED_MODULE_0__form_item_editor__["a" /* _FormItemEditor */].resize();
120
+ }
121
+
122
+ // Update classes
123
+ formItemEditor.toggleClass('form-item--editor-close');
112
124
  $(this).parent('.form-item').children('.form-item--open-button, .form-item--close-button').toggle();
113
125
  });
114
126
  }
@@ -132,6 +144,7 @@ function addNewItem(event) {
132
144
  // Clone child and remove id and styles from cloned child
133
145
  $newChild.clone().insertAfter($newChild);
134
146
  $newChild.removeClass('form-item--new').removeAttr('id');
147
+ __WEBPACK_IMPORTED_MODULE_0__form_item_editor__["a" /* _FormItemEditor */].resize();
135
148
  }
136
149
 
137
150
  /***/ }),
@@ -168,6 +181,7 @@ var FormItemAsset = function () {
168
181
  key: 'setEvents',
169
182
  value: function setEvents() {
170
183
  // here code to setup assets via ajax
184
+ //
171
185
  }
172
186
  }]);
173
187
 
@@ -181,6 +195,82 @@ var _FormItemAsset = new FormItemAsset();
181
195
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
182
196
 
183
197
  "use strict";
198
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__form_item_editor__ = __webpack_require__(6);
199
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return _FormItemChoice; });
200
+ var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
201
+
202
+ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
203
+
204
+ ///- - - - - - - - - - - - - - - - - - - -
205
+ /// FORM ITEM
206
+ ///- - - - - - - - - - - - - - - - - - - -
207
+
208
+
209
+
210
+ var FormItemChoice = function () {
211
+ function FormItemChoice() {
212
+ _classCallCheck(this, FormItemChoice);
213
+
214
+ this.target = '.form-item--choice';
215
+ }
216
+
217
+ _createClass(FormItemChoice, [{
218
+ key: 'isSet',
219
+ value: function isSet() {
220
+ if ($(this.target).length > 0) {
221
+ return true;
222
+ } else {
223
+ return false;
224
+ }
225
+ }
226
+ }, {
227
+ key: 'setEvents',
228
+ value: function setEvents() {
229
+ $(document).on('click', '.form-item--add-choice', function (event) {
230
+ event.preventDefault();
231
+ // Clone the new choice field
232
+ var choices = $(this).parent('.form-item--choices');
233
+ var newchoice = choices.find('.form-item--new-choice');
234
+ var clone = newchoice.clone().removeClass('form-item--new-choice').toggle();
235
+ clone.find('.form-item--toggle-choice').toggle();
236
+ // Append the clone right after
237
+ choices.prepend(clone);
238
+ // Update form item editor size
239
+ __WEBPACK_IMPORTED_MODULE_0__form_item_editor__["a" /* _FormItemEditor */].resize();
240
+ });
241
+
242
+ $(document).on('click', '.form-item--delete-choice', function (event) {
243
+ event.preventDefault();
244
+
245
+ var choice = $(this).parent('.form-item--choice');
246
+ var destination = $(this).attr('href');
247
+
248
+ $.ajax({
249
+ url: destination,
250
+ type: 'DELETE',
251
+ success: function success() {
252
+ choice.remove();
253
+ }
254
+ });
255
+ });
256
+ $(document).on('click', '.form-item--js-delete-choice', function (event) {
257
+ event.preventDefault();
258
+ $(this).parent('.form-item--choice').remove();
259
+ });
260
+ }
261
+ }]);
262
+
263
+ return FormItemChoice;
264
+ }();
265
+
266
+ var _FormItemChoice = new FormItemChoice();
267
+
268
+ /***/ }),
269
+ /* 3 */
270
+ /***/ (function(module, __webpack_exports__, __webpack_require__) {
271
+
272
+ "use strict";
273
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__form_item_editor__ = __webpack_require__(6);
184
274
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return _FormItemRepeater; });
185
275
  var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
186
276
 
@@ -190,6 +280,8 @@ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Cons
190
280
  /// FORM ITEM
191
281
  ///- - - - - - - - - - - - - - - - - - - -
192
282
 
283
+
284
+
193
285
  var FormItemRepeater = function () {
194
286
  function FormItemRepeater() {
195
287
  _classCallCheck(this, FormItemRepeater);
@@ -210,11 +302,14 @@ var FormItemRepeater = function () {
210
302
  key: 'setEvents',
211
303
  value: function setEvents() {
212
304
  $(document).on('click', this.target + '--add-new', addNewItem);
305
+
213
306
  $(document).on('click', '.form-item--remove-item-with-js', function (event) {
214
307
  // Stop default behaviour
215
308
  event.preventDefault();
216
309
  $(this).parent(this.target).remove();
310
+ __WEBPACK_IMPORTED_MODULE_0__form_item_editor__["a" /* _FormItemEditor */].resize();
217
311
  });
312
+
218
313
  $(document).on('click', '.form-item--delete-repeater-item', function (event) {
219
314
  var _this = this;
220
315
 
@@ -227,6 +322,7 @@ var FormItemRepeater = function () {
227
322
  method: "DELETE"
228
323
  }).done(function () {
229
324
  $(_this).parent('li').remove();
325
+ __WEBPACK_IMPORTED_MODULE_0__form_item_editor__["a" /* _FormItemEditor */].resize();
230
326
  });
231
327
  });
232
328
  }
@@ -254,11 +350,12 @@ function addNewItem(event) {
254
350
  $list.append(newRepeater);
255
351
  var editor_id = $list.find('textarea').last('textarea').attr('id');
256
352
  tinyMCE.EditorManager.execCommand('mceAddEditor', true, editor_id);
353
+ __WEBPACK_IMPORTED_MODULE_0__form_item_editor__["a" /* _FormItemEditor */].resize();
257
354
  });
258
355
  }
259
356
 
260
357
  /***/ }),
261
- /* 3 */
358
+ /* 4 */
262
359
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
263
360
 
264
361
  "use strict";
@@ -270,7 +367,7 @@ function addNewItem(event) {
270
367
  update: function update() {
271
368
  $.post($(this).data('update-url'), $(this).sortable('serialize'));
272
369
  }
273
- }).disableSelection();
370
+ });
274
371
 
275
372
  // Check if sortable item needs handles
276
373
  $('.sortable').each(function () {
@@ -301,15 +398,17 @@ function addNewItem(event) {
301
398
  };
302
399
 
303
400
  /***/ }),
304
- /* 4 */
401
+ /* 5 */
305
402
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
306
403
 
307
404
  "use strict";
308
405
  Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
309
406
  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__components_form_item__ = __webpack_require__(0);
310
- /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__components_form_item_repeater__ = __webpack_require__(2);
407
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__components_form_item_repeater__ = __webpack_require__(3);
311
408
  /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__components_form_item_asset__ = __webpack_require__(1);
312
- /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__components_sortable__ = __webpack_require__(3);
409
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__components_form_item_choice__ = __webpack_require__(2);
410
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__components_form_item_editor__ = __webpack_require__(6);
411
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__components_sortable__ = __webpack_require__(4);
313
412
  ///- - - - - - - - - - - - - - - - - - - -
314
413
  /// INDEX OF BINDA'S SCRIPTS
315
414
  ///- - - - - - - - - - - - - - - - - - - -
@@ -319,6 +418,8 @@ Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
319
418
 
320
419
 
321
420
 
421
+
422
+
322
423
  $(document).ready(function () {
323
424
  if (__WEBPACK_IMPORTED_MODULE_0__components_form_item__["a" /* _FormItem */].isSet()) {
324
425
  __WEBPACK_IMPORTED_MODULE_0__components_form_item__["a" /* _FormItem */].setEvents();
@@ -329,8 +430,74 @@ $(document).ready(function () {
329
430
  if (__WEBPACK_IMPORTED_MODULE_2__components_form_item_asset__["a" /* _FormItemAsset */].isSet()) {
330
431
  __WEBPACK_IMPORTED_MODULE_2__components_form_item_asset__["a" /* _FormItemAsset */].setEvents();
331
432
  }
332
- __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__components_sortable__["a" /* default */])();
433
+ if (__WEBPACK_IMPORTED_MODULE_3__components_form_item_choice__["a" /* _FormItemChoice */].isSet()) {
434
+ __WEBPACK_IMPORTED_MODULE_3__components_form_item_choice__["a" /* _FormItemChoice */].setEvents();
435
+ }
436
+ if (__WEBPACK_IMPORTED_MODULE_4__components_form_item_editor__["a" /* _FormItemEditor */].isSet()) {
437
+ __WEBPACK_IMPORTED_MODULE_4__components_form_item_editor__["a" /* _FormItemEditor */].setEvents();
438
+ }
439
+ __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_5__components_sortable__["a" /* default */])();
333
440
  });
334
441
 
442
+ /***/ }),
443
+ /* 6 */
444
+ /***/ (function(module, __webpack_exports__, __webpack_require__) {
445
+
446
+ "use strict";
447
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return _FormItemEditor; });
448
+ var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
449
+
450
+ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
451
+
452
+ ///- - - - - - - - - - - - - - - - - - - -
453
+ /// FORM ITEM
454
+ ///- - - - - - - - - - - - - - - - - - - -
455
+
456
+ var FormItemEditor = function () {
457
+ function FormItemEditor() {
458
+ _classCallCheck(this, FormItemEditor);
459
+
460
+ this.target = '.form-item--editor';
461
+ }
462
+
463
+ _createClass(FormItemEditor, [{
464
+ key: 'isSet',
465
+ value: function isSet() {
466
+ if ($(this.target).length > 0) {
467
+ return true;
468
+ } else {
469
+ return false;
470
+ }
471
+ }
472
+ }, {
473
+ key: 'setEvents',
474
+ value: function setEvents() {
475
+ var _this = this;
476
+
477
+ // run resize to set initial size
478
+ this.resize();
479
+ // run resize on each of these events
480
+ $(window).resize(function () {
481
+ _this.resize();
482
+ });
483
+ }
484
+ }, {
485
+ key: 'resize',
486
+ value: function resize() {
487
+ $(this.target).each(function () {
488
+ // If the form item edito is closed don't go any further
489
+ if ($(this).height() === 0) return;
490
+ // otherwise update the max-height which is needed for the CSS transition
491
+ // NOTE you need to remove the max-height (inside 'style' attribute) to get the real height
492
+ $(this).css("max-height", $(this).removeAttr('style').height());
493
+ });
494
+ }
495
+ }]);
496
+
497
+ return FormItemEditor;
498
+ }();
499
+
500
+ var _FormItemEditor = new FormItemEditor();
501
+
335
502
  /***/ })
336
503
  /******/ ]);