bootstrap-filestyle-rails 1.0.4 → 1.0.5

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: 8272bbe767f69ec581b8c78426e8f2fa3ce6129d
4
- data.tar.gz: 43bbd4b51edf6ce7551858de183abc3ac27c3920
3
+ metadata.gz: 7deb2e392fe88fb72770777d196ea992176e89ef
4
+ data.tar.gz: b06f07c017e17360236d3e37bc29e484aa1adce0
5
5
  SHA512:
6
- metadata.gz: 2a28d7052f8c7038ee7a0230836601736e2643ed9602a995452e747949f1d1ead58ba2b83f24a27f394ac107d1804d81cffb3e2444f318b91dfd6aa599f253b2
7
- data.tar.gz: 41adb3298eb28106f5d9660fbfb3325d0f1730a640406397a3768e2c4a157ef052d27aaf7102f397cc1245c14e1af4ecdd737ed369b4dba70fb53fbe723da853
6
+ metadata.gz: b2d9559f22ad91a0b7a267b462ee21f67120b4d724dc2f30aa60c7f1b0359967250cbcad351b81e2119f9d2316752420726ce3a95274079f8086ab1bf8605db2
7
+ data.tar.gz: 0c5ee89516713146d799519e3c48648a68b2cec3f6fd2d3f71ef6f720277bd904c6678b2f30c443618df425c5d84ea831f8630b8c519b3264666d80349511882
@@ -1,3 +1,3 @@
1
1
  module BootstrapFilestyleRails
2
- VERSION = "1.0.4"
2
+ VERSION = "1.0.5"
3
3
  end
@@ -2,8 +2,8 @@
2
2
  * bootstrap-filestyle
3
3
  * http://dev.tudosobreweb.com.br/bootstrap-filestyle/
4
4
  *
5
- * Copyright (c) 2013 Markus Vinicius da Silva Lima
6
- * Version 1.0.4
5
+ * Copyright (c) 2014 Markus Vinicius da Silva Lima
6
+ * Version 1.0.5
7
7
  * Licensed under the MIT license.
8
8
  */
9
9
  (function ($) {
@@ -29,6 +29,50 @@
29
29
  this.$elementFilestyle.remove();
30
30
  },
31
31
 
32
+ disabled: function (value) {
33
+ if (value === true) {
34
+ if (!this.options.disabled) {
35
+ this.$element
36
+ .attr('disabled', 'true');
37
+ this.$elementFilestyle.find('label').attr('disabled', 'true');
38
+ this.options.disabled = true;
39
+ }
40
+ } else if (value === false) {
41
+ if (this.options.disabled) {
42
+ this.$element
43
+ .removeAttr('disabled');
44
+ this.$elementFilestyle.find('label').removeAttr('disabled');
45
+ this.options.disabled = false;
46
+ }
47
+ } else {
48
+ return this.options.disabled;
49
+ }
50
+ },
51
+
52
+ buttonBefore: function (value) {
53
+ if (value === true) {
54
+ if (!this.options.buttonBefore) {
55
+ this.options.buttonBefore = true;
56
+ if (this.options.input) {
57
+ this.$elementFilestyle.remove();
58
+ this.constructor();
59
+ this.pushNameFiles();
60
+ }
61
+ }
62
+ } else if (value === false) {
63
+ if (this.options.buttonBefore) {
64
+ this.options.buttonBefore = false;
65
+ if (this.options.input) {
66
+ this.$elementFilestyle.remove();
67
+ this.constructor();
68
+ this.pushNameFiles();
69
+ }
70
+ }
71
+ } else {
72
+ return this.options.buttonBefore;
73
+ }
74
+ },
75
+
32
76
  icon: function (value) {
33
77
  if (value === true) {
34
78
  if (!this.options.icon) {
@@ -49,7 +93,14 @@
49
93
  if (value === true) {
50
94
  if (!this.options.input) {
51
95
  this.options.input = true;
52
- this.$elementFilestyle.prepend(this.htmlInput());
96
+
97
+ if (this.options.buttonBefore) {
98
+ this.$elementFilestyle.append(this.htmlInput());
99
+ } else {
100
+ this.$elementFilestyle.prepend(this.htmlInput());
101
+ }
102
+
103
+ this.$elementFilestyle.find('.quant-files-filestyle').remove();
53
104
 
54
105
  var content = '',
55
106
  files = [];
@@ -70,6 +121,21 @@
70
121
  if (this.options.input) {
71
122
  this.options.input = false;
72
123
  this.$elementFilestyle.find(':text').remove();
124
+ var files = [];
125
+ if (this.$element[0].files === undefined) {
126
+ files[0] = {'name': this.$element[0].value};
127
+ } else {
128
+ files = this.$element[0].files;
129
+ }
130
+ if (files.length > 0) {
131
+ var style;
132
+ if (this.options.classButton.search(/btn-inverse|btn-primary|btn-danger|btn-warning|btn-success/i) !== -1) {
133
+ style = 'style="background-color: #fff !important; color: 000;"';
134
+ } else {
135
+ style = 'style="background-color: #000 !important; color: fff;"';
136
+ }
137
+ this.$elementFilestyle.find('label').append(' <span '+style+' class="quant-files-filestyle badge">'+files.length+'</span>');
138
+ }
73
139
  }
74
140
  } else {
75
141
  return this.options.input;
@@ -142,6 +208,27 @@
142
208
  }
143
209
  },
144
210
 
211
+ // puts the name of the input files
212
+ pushNameFiles: function () {
213
+ var content = '',
214
+ files = [];
215
+ if (this.$element[0].files === undefined) {
216
+ files[0] = {'name': this.$element.value};
217
+ } else {
218
+ files = this.$element[0].files;
219
+ }
220
+
221
+ for (var i = 0; i < files.length; i++) {
222
+ content += files[i].name.split("\\").pop() + ', ';
223
+ }
224
+
225
+ if (content !== '') {
226
+ this.$elementFilestyle.find(':text').val(content.replace(/\, $/g, ''));
227
+ } else {
228
+ this.$elementFilestyle.find(':text').val('');
229
+ }
230
+ },
231
+
145
232
  constructor: function () {
146
233
  var _self = this,
147
234
  html = '',
@@ -153,38 +240,21 @@
153
240
  this.$element.attr({'id': id});
154
241
  }
155
242
 
156
- var inputContainerOpen = (this.options.classInputContainerClass != '') ? '<div class="'+this.options.classInputContainerClass+'">' : '';
157
- var inputContainerClose = (inputContainerOpen != '') ? '</div>' : '';
158
-
159
- var buttonContainerOpen = (this.options.classButtonContainerClass != '') ? '<div class="'+this.options.classButtonContainerClass+'">' : '';
160
- var buttonContainerClose = (buttonContainerOpen != '') ? '</div>' : '';
161
-
162
- if(this.options.buttonBefore)
163
- {
164
- html =
165
- buttonContainerOpen+
166
- '<label for="'+id+'" class="'+this.options.classButton+'">'+
167
- this.htmlIcon()+
168
- '<span>'+this.options.buttonText+'</span>'+
169
- '</label>'+
170
- buttonContainerClose+
171
- inputContainerOpen+
172
- this.htmlInput()+
173
- inputContainerClose;
243
+ if(this.options.buttonBefore) {
244
+ html = '<label for="'+id+'" style="margin-right: 4px;" class="'+this.options.classButton+'" '+(this.options.disabled?'disabled="true"':'')+'>'+
245
+ this.htmlIcon()+
246
+ '<span>'+this.options.buttonText+'</span>'+
247
+ '</label>'+
248
+ this.htmlInput();
174
249
  } else {
175
- html =
176
- inputContainerOpen+
177
- this.htmlInput()+
178
- inputContainerClose+
179
- buttonContainerOpen+
180
- '<label for="'+id+'" class="'+this.options.classButton+'">'+
181
- this.htmlIcon()+
182
- '<span>'+this.options.buttonText+'</span>'+
183
- '</label>'+
184
- buttonContainerClose;
250
+ html = this.htmlInput()+
251
+ '<label for="'+id+'" class="'+this.options.classButton+'" '+(this.options.disabled?'disabled="true"':'')+'> '+
252
+ this.htmlIcon()+
253
+ '<span>'+this.options.buttonText+'</span>'+
254
+ '</label>';
185
255
  }
186
256
 
187
- this.$elementFilestyle = $('<div class="'+this.options.containerClass+' bootstrap-filestyle">'+html+'</div>');
257
+ this.$elementFilestyle = $('<div class="bootstrap-filestyle" style="display: inline-block;">'+html+'</div>');
188
258
 
189
259
  var $label = this.$elementFilestyle.find('label');
190
260
  var $labelFocusableContainer = $label.parent();
@@ -203,6 +273,10 @@
203
273
  .attr('tabindex', "-1")
204
274
  .after(this.$elementFilestyle);
205
275
 
276
+ if (this.options.disabled) {
277
+ this.$element.attr('disabled', 'true');
278
+ }
279
+
206
280
  // Getting input file value
207
281
  this.$element.change(function () {
208
282
  var content = '';
@@ -219,7 +293,25 @@
219
293
  if (content !== '') {
220
294
  _self.$elementFilestyle.find(':text').val(content.replace(/\, $/g, ''));
221
295
  } else {
222
- _self.$elementFilestyle.find(':text').val('');
296
+ _self.$elementFilestyle.find(':text').val('');
297
+ }
298
+
299
+ if (_self.options.input == false) {
300
+ var style;
301
+ if (_self.options.classButton.search(/btn-inverse|btn-primary|btn-danger|btn-warning|btn-success/i) !== -1) {
302
+ style = 'style="background-color: #fff !important; color: #000;"';
303
+ } else {
304
+ style = 'style="background-color: #000 !important; color: #fff;"';
305
+ }
306
+ if (_self.$elementFilestyle.find('.quant-files-filestyle').length == 0) {
307
+ _self.$elementFilestyle.find('label').append(' <span '+style+' class="quant-files-filestyle badge">'+files.length+'</span>');
308
+ } else if (files.length == 0) {
309
+ _self.$elementFilestyle.find('.quant-files-filestyle').remove();
310
+ } else {
311
+ _self.$elementFilestyle.find('.quant-files-filestyle').html(files.length);
312
+ }
313
+ } else {
314
+ _self.$elementFilestyle.find('.quant-files-filestyle').remove();
223
315
  }
224
316
  });
225
317
 
@@ -267,13 +359,11 @@
267
359
  'input': true,
268
360
  'icon': true,
269
361
  'buttonBefore': false,
362
+ 'disabled': false,
270
363
 
271
- 'containerClass': 'form-group', // bootstrap-filestyle
272
- 'classButtonContainerClass': '',
273
364
  'classButton': 'btn btn-default',
274
- 'classInputContainerClass': '',
275
- 'classInput': 'form-control',
276
- 'classIcon': 'glyphicon glyphicon-folder-open'
365
+ 'classInput': 'input-large',
366
+ 'classIcon': 'icon-folder-open'
277
367
  };
278
368
 
279
369
  $.fn.filestyle.noConflict = function () {
@@ -286,14 +376,19 @@
286
376
  $('.filestyle').each(function () {
287
377
  var $this = $(this),
288
378
  options = {
289
- 'buttonText': $this.attr('data-buttonText'),
379
+
290
380
  'input': $this.attr('data-input') === 'false' ? false : true,
291
381
  'icon': $this.attr('data-icon') === 'false' ? false : true,
382
+ 'buttonBefore': $this.attr('data-buttonBefore') === 'true' ? true : false,
383
+ 'disabled': $this.attr('data-disabled') === 'true' ? true : false,
384
+
385
+ 'buttonText': $this.attr('data-buttonText'),
292
386
  'classButton': $this.attr('data-classButton'),
293
387
  'classInput': $this.attr('data-classInput'),
294
- 'classIcon': $this.attr('data-classIcon')
388
+ 'classIcon': $this.attr('data-classIcon'),
389
+ 'disabled': $this.attr('data-disabled') === 'true' ? true : false,
295
390
  };
296
-
391
+
297
392
  $this.filestyle(options);
298
393
  });
299
394
  });
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bootstrap-filestyle-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.4
4
+ version: 1.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mauricio Pasquier Juan
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-04-24 00:00:00.000000000 Z
11
+ date: 2014-04-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler