binda 0.1.2 → 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 8a14502da9b61e81895cb12acda199217a9f8e17
4
- data.tar.gz: d66be0ef4a7bb1546e2ec9490bf567692e297a66
3
+ metadata.gz: 5694e1440f4d1444a866b3585c015a505b1916c9
4
+ data.tar.gz: fbb826b32c32544817670db8c40b2c17b4e0fa0d
5
5
  SHA512:
6
- metadata.gz: 63b76465c699918032cacfccc5a0dddd95ccfb3052528580747948bf47d84f3ac13ec0eda43a23bdc307936ab776670027e666150b07ab03759d7de0a3c8f50d
7
- data.tar.gz: c074e52665ecb324967767c34def618217b978e66199cbcf9a64e71b9151212665d8a1f796c6a414a9ad454d0386c40a8a98417715bae884e65a2e2566b61f1c
6
+ metadata.gz: 8e6fad4efa8654fd96281eba1cc2d952b06ab2c295e8c5647578dcf9fca72a9c56ac2815531f7a3a63bec2691e771181084b8f0bf5891f5cbfd5e6f470b0038e
7
+ data.tar.gz: 8e0b3daf423b42e5a0b381678ddd41f62d79dc54c99f359fdf5dbad30958c6f31c38a0d005717b18c77c8279e989f481d532c6e61610334440dc4883814a151f
@@ -78,6 +78,7 @@ function handle_file(event)
78
78
  // formData.append('authenticity_token', token)
79
79
 
80
80
  // Display loader
81
+ $('.popup-warning--message').text( $parent.data('message') )
81
82
  $('.popup-warning').removeClass('popup-warning--hidden')
82
83
 
83
84
  // Once form data are gathered make the request
@@ -109,19 +110,17 @@ function makeRequest(event, formData )
109
110
  // Display details and buttons
110
111
  $parent.find('.fileupload--details').removeClass('fileupload--details--hidden')
111
112
  $parent.find('.fileupload--remove-image-btn').removeClass('fileupload--remove-image-btn--hidden')
112
- }).fail( function()
113
+ }).fail( function(dataFail)
113
114
  {
115
+ console.error("Error:", dataFail.responseJSON)
114
116
  // Hide loaded
115
117
  $('.popup-warning').addClass('popup-warning--hidden')
116
- alert('Something went wrong. Upload process failed.')
118
+ alert($parent.data('error'))
117
119
  })
118
120
  }
119
121
 
120
-
121
- function reset_file(event)
122
- {
123
- let input = event.target
124
-
122
+ function reset_file(input)
123
+ {
125
124
  input.value = ''
126
125
 
127
126
  if(!/safari/i.test(navigator.userAgent)){
@@ -137,7 +136,10 @@ function remove_preview(event)
137
136
 
138
137
  // Reset previews (either image or video)
139
138
  $parent.find('.fileupload--preview').css('background-image','').removeClass('fileupload--preview--uploaded')
140
- $parent.find('video source').attr('src', '')
139
+ $parent.find('video source').removeAttr('src')
140
+
141
+ // Clear input field
142
+ reset_file( $parent.find('input[type=file]').get(0) )
141
143
 
142
144
  // Reset buttons to initial state
143
145
  $parent.find('.fileupload--remove-image-btn').addClass('fileupload--remove-image-btn--hidden')
@@ -176,7 +178,7 @@ function setup_video_preview(data, id)
176
178
  .attr('type', 'video/' + data.ext)
177
179
 
178
180
  // If video source isn't blank load it (consider that a video tag is always present)
179
- if ( $preview.find('video source').attr('src').length > 0 )
181
+ if ( typeof $preview.find('video source').attr('src') != undefined )
180
182
  {
181
183
  $preview.find('video').get(0).load()
182
184
  }
@@ -188,4 +190,5 @@ function setup_video_preview(data, id)
188
190
  // Update details
189
191
  $parent.find('.fileupload--filesize').text(data.size)
190
192
  $parent.find('.fileupload--filename').text(data.name)
193
+ $parent.find('.fileupload--videolink a').attr('href', data.url)
191
194
  }
@@ -4,25 +4,9 @@
4
4
 
5
5
 
6
6
  var sortableOptions = {
7
- stop: function(event, ui)
8
- {
9
- ui.item.css('z-index', 0)
10
- },
7
+ stop: function(event, ui){ ui.item.css('z-index', 0) },
11
8
  placeholder: "ui-state-highlight",
12
- update: function ()
13
- {
14
- if ( $('.popup-warning').length > 0 )
15
- {
16
- $('.sortable').addClass('sortable--disabled')
17
- $('.popup-warning').removeClass('popup-warning--hidden')
18
- $(this).sortable('option','disabled', true)
19
- }
20
- let url = $(this).data('update-url')
21
- let data = $(this).sortable('serialize')
22
- // If there is a pagination update accordingly
23
- data = data.concat(`&id=${$(this).attr('id')}`)
24
- $.post( url, data )
25
- }
9
+ update: updateSortable
26
10
  }
27
11
 
28
12
  export default function()
@@ -92,4 +76,28 @@ function toggleSortable(event)
92
76
  $( id ).toggleClass('sortable--disabled')
93
77
  $( id ).toggleClass('sortable--enabled')
94
78
  $( this ).children('.sortable--toggle-text').toggle()
79
+ }
80
+
81
+ function updateSortable()
82
+ {
83
+ if ( $('.popup-warning').length > 0 )
84
+ {
85
+ $(this).addClass('sortable--disabled')
86
+ $('.popup-warning--message').text( $(this).data('message') )
87
+ $('.popup-warning').removeClass('popup-warning--hidden')
88
+ $(this).sortable('option','disabled', true)
89
+ }
90
+ let url = $(this).data('update-url')
91
+ let data = $(this).sortable('serialize')
92
+ // If there is a pagination update accordingly
93
+ data = data.concat(`&id=${$(this).attr('id')}`)
94
+ $.post( url, data ).done( function(doneData)
95
+ {
96
+ $(doneData.id).sortable('option', 'disabled', false)
97
+ $('.popup-warning').addClass('popup-warning--hidden')
98
+ $(doneData.id).removeClass('sortable--disabled')
99
+ }).fail(function(failData){
100
+ $('.popup-warning').addClass('popup-warning--hidden')
101
+ alert('Error: ' + failData.message)
102
+ })
95
103
  }
@@ -286,6 +286,8 @@ function deleteChoice(event) {
286
286
 
287
287
  "use strict";
288
288
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return _FileUpload; });
289
+ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
290
+
289
291
  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; }; }();
290
292
 
291
293
  function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
@@ -374,6 +376,7 @@ function handle_file(event) {
374
376
  // formData.append('authenticity_token', token)
375
377
 
376
378
  // Display loader
379
+ $('.popup-warning--message').text($parent.data('message'));
377
380
  $('.popup-warning').removeClass('popup-warning--hidden');
378
381
 
379
382
  // Once form data are gathered make the request
@@ -405,16 +408,15 @@ function makeRequest(event, formData) {
405
408
  // Display details and buttons
406
409
  $parent.find('.fileupload--details').removeClass('fileupload--details--hidden');
407
410
  $parent.find('.fileupload--remove-image-btn').removeClass('fileupload--remove-image-btn--hidden');
408
- }).fail(function () {
411
+ }).fail(function (dataFail) {
412
+ console.error("Error:", dataFail.responseJSON);
409
413
  // Hide loaded
410
414
  $('.popup-warning').addClass('popup-warning--hidden');
411
- alert('Something went wrong. Upload process failed.');
415
+ alert($parent.data('error'));
412
416
  });
413
417
  }
414
418
 
415
- function reset_file(event) {
416
- var input = event.target;
417
-
419
+ function reset_file(input) {
418
420
  input.value = '';
419
421
 
420
422
  if (!/safari/i.test(navigator.userAgent)) {
@@ -429,7 +431,10 @@ function remove_preview(event) {
429
431
 
430
432
  // Reset previews (either image or video)
431
433
  $parent.find('.fileupload--preview').css('background-image', '').removeClass('fileupload--preview--uploaded');
432
- $parent.find('video source').attr('src', '');
434
+ $parent.find('video source').removeAttr('src');
435
+
436
+ // Clear input field
437
+ reset_file($parent.find('input[type=file]').get(0));
433
438
 
434
439
  // Reset buttons to initial state
435
440
  $parent.find('.fileupload--remove-image-btn').addClass('fileupload--remove-image-btn--hidden');
@@ -461,7 +466,7 @@ function setup_video_preview(data, id) {
461
466
  $preview.removeClass('fileupload--preview--uploaded').find('video').attr('id', 'video-' + id).find('source').attr('src', data.url).attr('type', 'video/' + data.ext);
462
467
 
463
468
  // If video source isn't blank load it (consider that a video tag is always present)
464
- if ($preview.find('video source').attr('src').length > 0) {
469
+ if (_typeof($preview.find('video source').attr('src')) != undefined) {
465
470
  $preview.find('video').get(0).load();
466
471
  }
467
472
 
@@ -472,6 +477,7 @@ function setup_video_preview(data, id) {
472
477
  // Update details
473
478
  $parent.find('.fileupload--filesize').text(data.size);
474
479
  $parent.find('.fileupload--filename').text(data.name);
480
+ $parent.find('.fileupload--videolink a').attr('href', data.url);
475
481
  }
476
482
 
477
483
  /***/ }),
@@ -1164,18 +1170,7 @@ var sortableOptions = {
1164
1170
  ui.item.css('z-index', 0);
1165
1171
  },
1166
1172
  placeholder: "ui-state-highlight",
1167
- update: function update() {
1168
- if ($('.popup-warning').length > 0) {
1169
- $('.sortable').addClass('sortable--disabled');
1170
- $('.popup-warning').removeClass('popup-warning--hidden');
1171
- $(this).sortable('option', 'disabled', true);
1172
- }
1173
- var url = $(this).data('update-url');
1174
- var data = $(this).sortable('serialize');
1175
- // If there is a pagination update accordingly
1176
- data = data.concat('&id=' + $(this).attr('id'));
1177
- $.post(url, data);
1178
- }
1173
+ update: updateSortable
1179
1174
  };
1180
1175
 
1181
1176
  /* harmony default export */ __webpack_exports__["a"] = (function () {
@@ -1238,6 +1233,27 @@ function toggleSortable(event) {
1238
1233
  $(this).children('.sortable--toggle-text').toggle();
1239
1234
  }
1240
1235
 
1236
+ function updateSortable() {
1237
+ if ($('.popup-warning').length > 0) {
1238
+ $(this).addClass('sortable--disabled');
1239
+ $('.popup-warning--message').text($(this).data('message'));
1240
+ $('.popup-warning').removeClass('popup-warning--hidden');
1241
+ $(this).sortable('option', 'disabled', true);
1242
+ }
1243
+ var url = $(this).data('update-url');
1244
+ var data = $(this).sortable('serialize');
1245
+ // If there is a pagination update accordingly
1246
+ data = data.concat('&id=' + $(this).attr('id'));
1247
+ $.post(url, data).done(function (doneData) {
1248
+ $(doneData.id).sortable('option', 'disabled', false);
1249
+ $('.popup-warning').addClass('popup-warning--hidden');
1250
+ $(doneData.id).removeClass('sortable--disabled');
1251
+ }).fail(function (failData) {
1252
+ $('.popup-warning').addClass('popup-warning--hidden');
1253
+ alert('Error: ' + failData.message);
1254
+ });
1255
+ }
1256
+
1241
1257
  /***/ }),
1242
1258
  /* 13 */
1243
1259
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
@@ -131,4 +131,8 @@
131
131
 
132
132
  .standard-form--video .fileupload--dimension {
133
133
  display: none;
134
+ }
135
+
136
+ .standard-form--image .fileupload--videolink {
137
+ display: none;
134
138
  }
@@ -12,6 +12,10 @@
12
12
  padding: 6px 12px;
13
13
  }
14
14
 
15
+ th:last-child {
16
+ text-align: right;
17
+ }
18
+
15
19
  td
16
20
  {
17
21
  padding: 12px;
@@ -64,15 +64,14 @@ module Binda
64
64
  params[:repeater].each_with_index do |id, i|
65
65
  Repeater.find( id ).update({ position: i + 1 })
66
66
  end
67
- render js: "$('.popup-warning').addClass('popup-warning--hidden');"
68
- head :ok
67
+ render json: { id: "##{params[:id]}" }, status: 200
69
68
  end
70
69
 
71
70
  def sort
72
71
  params[:component].each_with_index do |id, i|
73
72
  Component.find( id ).update_column('position', i + 1) # use update_column to skip callbacks (which leads to huge useless memory consumption)
74
73
  end
75
- render js: "$('##{params[:id]}').sortable('option', 'disabled', false); $('.popup-warning').addClass('popup-warning--hidden'); $('.sortable').removeClass('sortable--disabled')"
74
+ render json: { id: "##{params[:id]}" }, status: 200
76
75
  end
77
76
 
78
77
  def sort_index
@@ -82,12 +81,9 @@ module Binda
82
81
 
83
82
  def upload
84
83
  if @component.update( upload_params(:component) )
85
- respond_to do |format|
86
- format.json { render json: upload_details }
87
- end
84
+ render json: upload_details, status: 200
88
85
  else
89
- logger.debug("The upload process has failed. #{ @component.errors.full_messages }")
90
- head :bad_request
86
+ render json: @component.errors.full_messages, status: 400
91
87
  end
92
88
  end
93
89
 
@@ -50,8 +50,11 @@ module Binda
50
50
 
51
51
  def remove_image
52
52
  @image.remove_image!
53
- @image.save!
54
- head :ok
53
+ if @image.save
54
+ head :ok
55
+ else
56
+ render json: @image.errors.full_messages, status: 400
57
+ end
55
58
  end
56
59
 
57
60
  private
@@ -50,8 +50,11 @@ module Binda
50
50
 
51
51
  def remove_video
52
52
  @video.remove_video!
53
- @video.save!
54
- render js: "$('#video-#{@video.id}').remove();"
53
+ if @video.save
54
+ head :ok
55
+ else
56
+ render json: @video.errors.full_messages, status: 400
57
+ end
55
58
  end
56
59
 
57
60
  private
@@ -8,15 +8,8 @@
8
8
  <% end %>
9
9
 
10
10
  <% content_for :content do %>
11
- <div class="popup-warning popup-warning--hidden">
12
- <div class="popup-warning--loader">
13
- <span></span>
14
- <span></span>
15
- <span></span>
16
- <span></span>
17
- </div>
18
- <p><%= t 'binda.sort_items_loader', { arg1: t('binda.components').downcase } %></p>
19
- </div>
11
+
12
+ <%= render 'layouts/binda/popup_warning' %>
20
13
 
21
14
  <div class="main-sortable-table">
22
15
 
@@ -25,7 +18,7 @@
25
18
  <div class="main-sortable-table--header-title"><p>Publish State</p></div>
26
19
  </div>
27
20
 
28
- <div id="<%= @structure.slug %>-components--sort-index" class="sortable" data-update-url="<%= structure_components_sort_path( @structure.slug ) %>">
21
+ <div id="<%= @structure.slug %>-components--sort-index" class="sortable" data-update-url="<%= structure_components_sort_path( @structure.slug ) %>" data-message="<%= t 'binda.sort_items_loader', { arg1: t('binda.components').downcase } %>">
29
22
  <% @components.order( :position, :name ).each do |component| %>
30
23
  <div class="main-sortable-table--row ui-sortable-handle" id="component_<%= component.id %>">
31
24
  <div class="main-sortable-table--row-cell"><%= link_to component.name, structure_component_path( @structure.slug, component ) %></div>
@@ -1,3 +1,5 @@
1
+ <%= render 'layouts/binda/popup_warning' %>
2
+
1
3
  <div class="standard-form">
2
4
 
3
5
  <%= simple_form_for @field_group, url: get_form_field_group_url, html: { class: 'form-body' } do |f| %>
@@ -1,12 +1,4 @@
1
- <div class="popup-warning popup-warning--hidden">
2
- <div class="popup-warning--loader">
3
- <span></span>
4
- <span></span>
5
- <span></span>
6
- <span></span>
7
- </div>
8
- <p><%= t 'binda.upload_loading_message' %></p>
9
- </div>
1
+ <%= render 'layouts/binda/popup_warning' %>
10
2
 
11
3
  <%= simple_form_for [ @instance.structure, @instance ], html: { class: 'form-body', multipart: true } do |f| %>
12
4
 
@@ -1,6 +1,8 @@
1
1
  <div id="standard-form--image-<%= field_setting.id %>" class="standard-form--image form-item">
2
2
  <div id="fileupload-<%= ff.object.id %>"
3
- class="fileupload form-group">
3
+ class="fileupload form-group"
4
+ data-message="<%= t('binda.upload_loading_message') %>"
5
+ data-error="<%= t('binda.upload_error_message')%>">
4
6
 
5
7
  <p class="control-label"><%= field_setting.name.capitalize %></p>
6
8
 
@@ -19,7 +21,7 @@
19
21
  @instance,
20
22
  action: :upload,
21
23
  repeater: { id: "#{field_setting.parent_id}" }]),
22
- 'data-id': ff.object.id
24
+ 'data-id': ff.object.id
23
25
  } %>
24
26
 
25
27
  </div>
@@ -23,7 +23,7 @@
23
23
 
24
24
  </div>
25
25
 
26
- <ul id="form-item--repeater-setting-<%= repeater_setting.id %>" class="sortable sortable--disabled" data-update-url="<%= url_for([@structure, @instance, :sort_repeaters]) %>">
26
+ <ul id="form-item--repeater-setting-<%= repeater_setting.id %>" class="sortable sortable--disabled" data-update-url="<%= url_for([@structure, @instance, :sort_repeaters]) %>" data-message="<%= t 'binda.sort_items_loader', { arg1: t('binda.components').downcase } %>">
27
27
 
28
28
  <% if repeaters.size == 0 %>
29
29
 
@@ -1,6 +1,8 @@
1
1
  <div id="standard-form--video-<%= field_setting.id %>" class="standard-form--video form-item">
2
2
  <div id="fileupload-<%= ff.object.id %>"
3
- class="fileupload form-group">
3
+ class="fileupload form-group"
4
+ data-message="<%= t('binda.upload_loading_message') %>"
5
+ data-error="<%= t('binda.upload_error_message')%>">
4
6
 
5
7
  <p class="control-label"><%= field_setting.name.capitalize %></p>
6
8
 
@@ -15,7 +17,7 @@
15
17
  input_html: {
16
18
  class: 'form-item--video--uploader',
17
19
  'data-url': url_for([@instance.structure, @instance, action: :upload]),
18
- 'data-id': ff.object.id
20
+ 'data-id': ff.object.id,
19
21
  } %>
20
22
 
21
23
 
@@ -6,15 +6,8 @@
6
6
  <% end %>
7
7
 
8
8
  <% content_for :content do %>
9
- <div class="popup-warning popup-warning--hidden">
10
- <div class="popup-warning--loader">
11
- <span></span>
12
- <span></span>
13
- <span></span>
14
- <span></span>
15
- </div>
16
- <p><%= t 'binda.sort_items_loader', { arg1: t('binda.structures').downcase } %></p>
17
- </div>
9
+
10
+ <%= render 'layouts/binda/popup_warning' %>
18
11
 
19
12
  <div class="main-table--container">
20
13
  <h5 class="text-muted"><%= t('binda.sort_index_hint', { arg1: t('binda.structures').downcase }).html_safe %></h5>
@@ -25,7 +18,7 @@
25
18
  <p>Structures</p>
26
19
  </div>
27
20
  </div>
28
- <div id="structures--sort-index" class="sortable" data-update-url="<%= structures_sort_path() %>">
21
+ <div id="structures--sort-index" class="sortable" data-update-url="<%= structures_sort_path() %>" data-message="<%= t 'binda.sort_items_loader', { arg1: t('binda.components').downcase } %>">
29
22
  <% @structures.order( :name ).each do |structure| %>
30
23
  <div id="structure_<%= structure.id %>" class="main-sortable-table--row ui-sortable-handle">
31
24
  <div class="main-sortable-table--row-cell">
@@ -0,0 +1,9 @@
1
+ <div class="popup-warning popup-warning--hidden">
2
+ <div class="popup-warning--loader">
3
+ <span></span>
4
+ <span></span>
5
+ <span></span>
6
+ <span></span>
7
+ </div>
8
+ <p class="popup-warning--message"></p>
9
+ </div>
@@ -54,7 +54,8 @@ module SimpleForm
54
54
  html << '" data-id="'
55
55
  html << obj.id.to_s
56
56
  html << '">'
57
- html << '<i class="fa fa-trash-alt" aria-hidden="true"></i> Delete image'
57
+ html << '<i class="fa fa-trash-alt" aria-hidden="true"></i>'
58
+ html << t('binda.delete')
58
59
  html << '</a>'
59
60
  html << '<div class="clearfix"></div>'
60
61
  end
@@ -100,6 +101,12 @@ module SimpleForm
100
101
  html << '</span> x <span class="fileupload--height">'
101
102
  html << image[:height].to_s unless image.nil?
102
103
  html << '</span> px</p>'
104
+ html << '<p class="fileupload--videolink"><a href="'
105
+ html << obj.video.url if obj.video.present?
106
+ html << '" target="_blank"><i class="fas fa-external-link-alt"></i> <strong>'
107
+ html << t('binda.filevideolink')
108
+ html << '</strong></a></p>'
109
+
103
110
  html << '</div>'
104
111
  end
105
112
  end
@@ -50,12 +50,14 @@ en:
50
50
  confirm_delete: Do you really want to remove it?
51
51
  upload_button: Upload
52
52
  upload_loading_message: Uploading file...
53
+ upload_error_message: Ops! Something went wrong. Make sure the file you are uploading is correct.
53
54
  choose_file_button: Choose a file
54
55
  preview: Preview
55
56
  no_preview: No file selected
56
57
  filename: Name
57
58
  filesize: Size
58
59
  filedimension: Dimension
60
+ filevideolink: Preview video
59
61
  select_placeholder: Select a option
60
62
  new_item_in_repeater: New %{arg1} item
61
63
  null_is_not_allowed: You need to select at least one choice
@@ -103,6 +105,6 @@ en:
103
105
  login_credit: Built with Binda %{arg1}
104
106
  choice_label: label
105
107
  choice_value: value
106
- allow_null: Choice method
107
- allow_null_true: Allow to not choose any of the choices
108
- allow_null_false: Force to make a choice among the available choices
108
+ allow_null: Require a choice
109
+ allow_null_true: Choosing is not required
110
+ allow_null_false: Require to choose among the available choices
@@ -1,3 +1,3 @@
1
1
  module Binda
2
- VERSION = '0.1.2'.freeze
2
+ VERSION = '0.1.3'.freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: binda
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alessandro Barbieri
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-01-10 00:00:00.000000000 Z
11
+ date: 2018-01-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -764,6 +764,7 @@ files:
764
764
  - app/views/kaminari/_prev_page.html.erb
765
765
  - app/views/layouts/binda/_flash.html.erb
766
766
  - app/views/layouts/binda/_header.html.erb
767
+ - app/views/layouts/binda/_popup_warning.html.erb
767
768
  - app/views/layouts/binda/_sidebar.html.erb
768
769
  - app/views/layouts/binda/application.html.erb
769
770
  - config/autoprefixer.yml