materialize-sass 0.97.0 → 0.97.1

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.
Files changed (32) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/materialize-sprockets.js +4 -0
  3. data/app/assets/javascripts/materialize.js +242 -182
  4. data/app/assets/javascripts/materialize/cards.js +1 -1
  5. data/app/assets/javascripts/materialize/chips.js +9 -0
  6. data/app/assets/javascripts/materialize/dropdown.js +31 -9
  7. data/app/assets/javascripts/materialize/extras/nouislider.js +1666 -0
  8. data/app/assets/javascripts/materialize/extras/nouislider.min.js +6 -0
  9. data/app/assets/javascripts/materialize/forms.js +27 -19
  10. data/app/assets/javascripts/materialize/global.js +1 -1
  11. data/app/assets/javascripts/materialize/scrollFire.js +1 -1
  12. data/app/assets/javascripts/materialize/sideNav.js +17 -14
  13. data/app/assets/javascripts/materialize/tabs.js +2 -9
  14. data/app/assets/javascripts/materialize/toasts.js +13 -2
  15. data/app/assets/javascripts/materialize/tooltip.js +144 -133
  16. data/app/assets/stylesheets/materialize.scss +2 -1
  17. data/app/assets/stylesheets/materialize/components/_cards.scss +1 -0
  18. data/app/assets/stylesheets/materialize/components/_chips.scss +27 -0
  19. data/app/assets/stylesheets/materialize/components/_collapsible.scss +1 -1
  20. data/app/assets/stylesheets/materialize/components/_form.scss +4 -2
  21. data/app/assets/stylesheets/materialize/components/_global.scss +17 -6
  22. data/app/assets/stylesheets/materialize/components/_materialbox.scss +1 -0
  23. data/app/assets/stylesheets/materialize/components/_navbar.scss +11 -0
  24. data/app/assets/stylesheets/materialize/components/_preloader.scss +2 -0
  25. data/app/assets/stylesheets/materialize/components/_roboto.scss +8 -4
  26. data/app/assets/stylesheets/materialize/components/_tabs.scss +5 -0
  27. data/app/assets/stylesheets/materialize/components/_toast.scss +1 -1
  28. data/app/assets/stylesheets/materialize/components/_typography.scss +4 -1
  29. data/app/assets/stylesheets/materialize/components/_variables.scss +3 -0
  30. data/app/assets/stylesheets/materialize/extras/nouislider.css +258 -0
  31. data/lib/materialize-sass/version.rb +1 -1
  32. metadata +7 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 8d2be343bb8ecc3c36413b030483fd893f610b87
4
- data.tar.gz: e5add23bdbf6f99462df8de7ded467eede55ecac
3
+ metadata.gz: b9f90f51177003756a89e252c13a9c48f3b40375
4
+ data.tar.gz: 2da4265599a55f4fa778443876676d9d6085f7f6
5
5
  SHA512:
6
- metadata.gz: 9b437ad9e175bf09e309d8a61400c1ded72c9ff33a41a8feb411562dbd5e5fc44435f371fb8227b1528a4d083034679e848ec3a22ed5fe25ce4ac25c61ee96a1
7
- data.tar.gz: bfd59f152bcc95074c291ac6e3365a218ec014315f36d30ff9fa7fd7061730d3b3772325bb9693c8c1860c993d9d243688be7dc33dc98b9ff37029f92514de98
6
+ metadata.gz: 5e3eb171a15e757e91372ab9725a9359ea32e0e4eb07bf98918201fcba7ed2da89934cac2d82d8935f66a521f33df88f6d4c7606a7457974755c930a12ce9357
7
+ data.tar.gz: 2c96e799ad3f797578bbbbc8e755bd646403c8184d718fd0480d142b759925ff648d7a57084a8eff1d0e1dffd74e975ce053ae36adaa4bc2aceb624400916fc0
@@ -18,6 +18,7 @@
18
18
  //= require ./materialize/forms
19
19
  //= require ./materialize/slider
20
20
  //= require ./materialize/cards
21
+ //= require ./materialize/chips
21
22
  //= require ./materialize/pushpin
22
23
  //= require ./materialize/buttons
23
24
  //= require ./materialize/transitions
@@ -25,3 +26,6 @@
25
26
  //= require ./materialize/date_picker/picker
26
27
  //= require ./materialize/date_picker/picker.date
27
28
  //= require ./materialize/character_counter
29
+
30
+
31
+
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Materialize v0.97.0 (http://materializecss.com)
2
+ * Materialize v0.97.1 (http://materializecss.com)
3
3
  * Copyright 2014-2015 Materialize
4
4
  * MIT License (https://raw.githubusercontent.com/Dogfalo/materialize/master/LICENSE)
5
5
  */
@@ -252,7 +252,7 @@ jQuery.extend( jQuery.easing,
252
252
  };
253
253
  })(Hammer.Manager.prototype.emit);
254
254
  }));
255
- ;Materialize = {};
255
+ ;window.Materialize = {};
256
256
 
257
257
  // Unique ID
258
258
  Materialize.guid = (function() {
@@ -442,7 +442,8 @@ else {
442
442
  constrain_width: true, // Constrains width of dropdown to the activator
443
443
  hover: false,
444
444
  gutter: 0, // Spacing from edge
445
- belowOrigin: false
445
+ belowOrigin: false,
446
+ alignment: 'left'
446
447
  };
447
448
 
448
449
  this.each(function(){
@@ -465,6 +466,8 @@ else {
465
466
  options.gutter = origin.data('gutter');
466
467
  if (origin.data('beloworigin') !== undefined)
467
468
  options.belowOrigin = origin.data('beloworigin');
469
+ if (origin.data('alignment') !== undefined)
470
+ options.alignment = origin.data('alignment');
468
471
  }
469
472
 
470
473
  updateOptions();
@@ -487,27 +490,46 @@ else {
487
490
  if (options.constrain_width === true) {
488
491
  activates.css('width', origin.outerWidth());
489
492
  }
493
+ else {
494
+ activates.css('white-space', 'nowrap');
495
+ }
490
496
  var offset = 0;
491
497
  if (options.belowOrigin === true) {
492
498
  offset = origin.height();
493
499
  }
494
500
 
495
- // Handle edge alignment
501
+ // Offscreen detection
496
502
  var offsetLeft = origin.offset().left;
497
- var width_difference = 0;
498
- var gutter_spacing = options.gutter;
499
-
500
-
503
+ var activatesLeft, width_difference, gutter_spacing;
501
504
  if (offsetLeft + activates.innerWidth() > $(window).width()) {
502
- width_difference = origin.innerWidth() - activates.innerWidth();
503
- gutter_spacing = gutter_spacing * -1;
505
+ options.alignment = 'right';
504
506
  }
507
+ else if (offsetLeft - activates.innerWidth() + origin.innerWidth() < 0) {
508
+ options.alignment = 'left';
509
+ }
510
+
511
+ // Handle edge alignment
512
+ if (options.alignment === 'left') {
513
+ width_difference = 0;
514
+ gutter_spacing = options.gutter;
515
+ activatesLeft = origin.position().left + width_difference + gutter_spacing;
505
516
 
517
+ // Position dropdown
518
+ activates.css({ left: activatesLeft });
519
+ }
520
+ else if (options.alignment === 'right') {
521
+ var offsetRight = $(window).width() - offsetLeft - origin.innerWidth();
522
+ width_difference = 0;
523
+ gutter_spacing = options.gutter;
524
+ activatesLeft = ( $(window).width() - origin.position().left - origin.innerWidth() ) + gutter_spacing;
525
+
526
+ // Position dropdown
527
+ activates.css({ right: activatesLeft });
528
+ }
506
529
  // Position dropdown
507
530
  activates.css({
508
531
  position: 'absolute',
509
532
  top: origin.position().top + offset,
510
- left: origin.position().left + width_difference + gutter_spacing
511
533
  });
512
534
 
513
535
 
@@ -1100,11 +1122,6 @@ $(document).ready(function(){
1100
1122
  window_width = $(window).width();
1101
1123
 
1102
1124
  $this.width('100%');
1103
- // Set Tab Width for each tab
1104
- var $num_tabs = $(this).children('li').length;
1105
- $this.children('li').each(function() {
1106
- $(this).width((100/$num_tabs)+'%');
1107
- });
1108
1125
  var $active, $content, $links = $this.find('li.tab a'),
1109
1126
  $tabs_width = $this.width(),
1110
1127
  $tab_width = $this.find('li').first().outerWidth(),
@@ -1234,153 +1251,164 @@ $(document).ready(function(){
1234
1251
  var defaults = {
1235
1252
  delay: 350
1236
1253
  };
1254
+
1255
+ // Remove tooltip from the activator
1256
+ if (options === "remove") {
1257
+ this.each(function(){
1258
+ $('#' + $(this).attr('data-tooltip-id')).remove();
1259
+ });
1260
+ return false;
1261
+ }
1262
+
1237
1263
  options = $.extend(defaults, options);
1238
1264
 
1239
- //Remove previously created html
1240
- $('.material-tooltip').remove();
1241
1265
 
1242
1266
  return this.each(function(){
1267
+ var tooltipId = Materialize.guid();
1243
1268
  var origin = $(this);
1244
-
1245
- // Create Text span
1246
- var tooltip_text = $('<span></span>').text(origin.attr('data-tooltip'));
1247
-
1248
- // Create tooltip
1249
- var newTooltip = $('<div></div>');
1250
- newTooltip.addClass('material-tooltip').append(tooltip_text);
1251
- newTooltip.appendTo($('body'));
1252
-
1253
- var backdrop = $('<div></div>').addClass('backdrop');
1254
- backdrop.appendTo(newTooltip);
1255
- backdrop.css({ top: 0, left:0 });
1256
-
1257
-
1258
- //Destroy previously binded events
1259
- $(this).off('mouseenter mouseleave');
1260
- // Mouse In
1261
- $(this).on({
1262
- mouseenter: function(e) {
1263
- var tooltip_delay = origin.data("delay");
1264
- tooltip_delay = (tooltip_delay === undefined || tooltip_delay === '') ? options.delay : tooltip_delay;
1265
- counter = 0;
1266
- counterInterval = setInterval(function(){
1267
- counter += 10;
1268
- if (counter >= tooltip_delay && started === false) {
1269
- started = true;
1270
- newTooltip.css({ display: 'block', left: '0px', top: '0px' });
1271
-
1272
- // Set Tooltip text
1273
- newTooltip.children('span').text(origin.attr('data-tooltip'));
1274
-
1275
- // Tooltip positioning
1276
- var originWidth = origin.outerWidth();
1277
- var originHeight = origin.outerHeight();
1278
- var tooltipPosition = origin.attr('data-position');
1279
- var tooltipHeight = newTooltip.outerHeight();
1280
- var tooltipWidth = newTooltip.outerWidth();
1281
- var tooltipVerticalMovement = '0px';
1282
- var tooltipHorizontalMovement = '0px';
1283
- var scale_factor = 8;
1284
-
1285
- if (tooltipPosition === "top") {
1286
- // Top Position
1287
- newTooltip.css({
1288
- top: origin.offset().top - tooltipHeight - margin,
1289
- left: origin.offset().left + originWidth/2 - tooltipWidth/2
1290
- });
1291
- tooltipVerticalMovement = '-10px';
1292
- backdrop.css({
1293
- borderRadius: '14px 14px 0 0',
1294
- transformOrigin: '50% 90%',
1295
- marginTop: tooltipHeight,
1296
- marginLeft: (tooltipWidth/2) - (backdrop.width()/2)
1297
-
1298
- });
1299
- }
1300
- // Left Position
1301
- else if (tooltipPosition === "left") {
1269
+ origin.attr('data-tooltip-id', tooltipId);
1270
+
1271
+ // Create Text span
1272
+ var tooltip_text = $('<span></span>').text(origin.attr('data-tooltip'));
1273
+
1274
+ // Create tooltip
1275
+ var newTooltip = $('<div></div>');
1276
+ newTooltip.addClass('material-tooltip').append(tooltip_text)
1277
+ .appendTo($('body'))
1278
+ .attr('id', tooltipId);
1279
+
1280
+ var backdrop = $('<div></div>').addClass('backdrop');
1281
+ backdrop.appendTo(newTooltip);
1282
+ backdrop.css({ top: 0, left:0 });
1283
+
1284
+
1285
+ //Destroy previously binded events
1286
+ origin.off('mouseenter.tooltip mouseleave.tooltip');
1287
+ // Mouse In
1288
+ origin.on({
1289
+ 'mouseenter.tooltip': function(e) {
1290
+ var tooltip_delay = origin.data("delay");
1291
+ tooltip_delay = (tooltip_delay === undefined || tooltip_delay === '') ? options.delay : tooltip_delay;
1292
+ counter = 0;
1293
+ counterInterval = setInterval(function(){
1294
+ counter += 10;
1295
+ if (counter >= tooltip_delay && started === false) {
1296
+ started = true;
1297
+ newTooltip.css({ display: 'block', left: '0px', top: '0px' });
1298
+
1299
+ // Set Tooltip text
1300
+ newTooltip.children('span').text(origin.attr('data-tooltip'));
1301
+
1302
+ // Tooltip positioning
1303
+ var originWidth = origin.outerWidth();
1304
+ var originHeight = origin.outerHeight();
1305
+ var tooltipPosition = origin.attr('data-position');
1306
+ var tooltipHeight = newTooltip.outerHeight();
1307
+ var tooltipWidth = newTooltip.outerWidth();
1308
+ var tooltipVerticalMovement = '0px';
1309
+ var tooltipHorizontalMovement = '0px';
1310
+ var scale_factor = 8;
1311
+
1312
+ if (tooltipPosition === "top") {
1313
+ // Top Position
1302
1314
  newTooltip.css({
1303
- top: origin.offset().top + originHeight/2 - tooltipHeight/2,
1304
- left: origin.offset().left - tooltipWidth - margin
1305
- });
1306
- tooltipHorizontalMovement = '-10px';
1307
- backdrop.css({
1308
- width: '14px',
1309
- height: '14px',
1310
- borderRadius: '14px 0 0 14px',
1311
- transformOrigin: '95% 50%',
1312
- marginTop: tooltipHeight/2,
1313
- marginLeft: tooltipWidth
1314
- });
1315
- }
1316
- // Right Position
1317
- else if (tooltipPosition === "right") {
1318
- newTooltip.css({
1319
- top: origin.offset().top + originHeight/2 - tooltipHeight/2,
1320
- left: origin.offset().left + originWidth + margin
1321
- });
1322
- tooltipHorizontalMovement = '+10px';
1323
- backdrop.css({
1324
- width: '14px',
1325
- height: '14px',
1326
- borderRadius: '0 14px 14px 0',
1327
- transformOrigin: '5% 50%',
1328
- marginTop: tooltipHeight/2,
1329
- marginLeft: '0px'
1330
- });
1331
- }
1332
- else {
1333
- // Bottom Position
1334
- newTooltip.css({
1335
- top: origin.offset().top + origin.outerHeight() + margin,
1315
+ top: origin.offset().top - tooltipHeight - margin,
1336
1316
  left: origin.offset().left + originWidth/2 - tooltipWidth/2
1337
1317
  });
1338
- tooltipVerticalMovement = '+10px';
1318
+ tooltipVerticalMovement = '-10px';
1339
1319
  backdrop.css({
1320
+ borderRadius: '14px 14px 0 0',
1321
+ transformOrigin: '50% 90%',
1322
+ marginTop: tooltipHeight,
1340
1323
  marginLeft: (tooltipWidth/2) - (backdrop.width()/2)
1324
+
1341
1325
  });
1342
- }
1326
+ }
1327
+ // Left Position
1328
+ else if (tooltipPosition === "left") {
1329
+ newTooltip.css({
1330
+ top: origin.offset().top + originHeight/2 - tooltipHeight/2,
1331
+ left: origin.offset().left - tooltipWidth - margin
1332
+ });
1333
+ tooltipHorizontalMovement = '-10px';
1334
+ backdrop.css({
1335
+ width: '14px',
1336
+ height: '14px',
1337
+ borderRadius: '14px 0 0 14px',
1338
+ transformOrigin: '95% 50%',
1339
+ marginTop: tooltipHeight/2,
1340
+ marginLeft: tooltipWidth
1341
+ });
1342
+ }
1343
+ // Right Position
1344
+ else if (tooltipPosition === "right") {
1345
+ newTooltip.css({
1346
+ top: origin.offset().top + originHeight/2 - tooltipHeight/2,
1347
+ left: origin.offset().left + originWidth + margin
1348
+ });
1349
+ tooltipHorizontalMovement = '+10px';
1350
+ backdrop.css({
1351
+ width: '14px',
1352
+ height: '14px',
1353
+ borderRadius: '0 14px 14px 0',
1354
+ transformOrigin: '5% 50%',
1355
+ marginTop: tooltipHeight/2,
1356
+ marginLeft: '0px'
1357
+ });
1358
+ }
1359
+ else {
1360
+ // Bottom Position
1361
+ newTooltip.css({
1362
+ top: origin.offset().top + origin.outerHeight() + margin,
1363
+ left: origin.offset().left + originWidth/2 - tooltipWidth/2
1364
+ });
1365
+ tooltipVerticalMovement = '+10px';
1366
+ backdrop.css({
1367
+ marginLeft: (tooltipWidth/2) - (backdrop.width()/2)
1368
+ });
1369
+ }
1343
1370
 
1344
- // Calculate Scale to fill
1345
- scale_factor = tooltipWidth / 8;
1346
- if (scale_factor < 8) {
1347
- scale_factor = 8;
1348
- }
1349
- if (tooltipPosition === "right" || tooltipPosition === "left") {
1350
- scale_factor = tooltipWidth / 10;
1351
- if (scale_factor < 6)
1352
- scale_factor = 6;
1353
- }
1371
+ // Calculate Scale to fill
1372
+ scale_factor = tooltipWidth / 8;
1373
+ if (scale_factor < 8) {
1374
+ scale_factor = 8;
1375
+ }
1376
+ if (tooltipPosition === "right" || tooltipPosition === "left") {
1377
+ scale_factor = tooltipWidth / 10;
1378
+ if (scale_factor < 6)
1379
+ scale_factor = 6;
1380
+ }
1354
1381
 
1355
- newTooltip.velocity({ opacity: 1, marginTop: tooltipVerticalMovement, marginLeft: tooltipHorizontalMovement}, { duration: 350, queue: false });
1356
- backdrop.css({ display: 'block' })
1357
- .velocity({opacity:1},{duration: 55, delay: 0, queue: false})
1358
- .velocity({scale: scale_factor}, {duration: 300, delay: 0, queue: false, easing: 'easeInOutQuad'});
1382
+ newTooltip.velocity({ marginTop: tooltipVerticalMovement, marginLeft: tooltipHorizontalMovement}, { duration: 350, queue: false })
1383
+ .velocity({opacity: 1}, {duration: 300, delay: 50, queue: false});
1384
+ backdrop.css({ display: 'block' })
1385
+ .velocity({opacity:1},{duration: 55, delay: 0, queue: false})
1386
+ .velocity({scale: scale_factor}, {duration: 300, delay: 0, queue: false, easing: 'easeInOutQuad'});
1359
1387
 
1360
- }
1361
- }, 10); // End Interval
1388
+ }
1389
+ }, 10); // End Interval
1362
1390
 
1363
- // Mouse Out
1364
- },
1365
- mouseleave: function(){
1366
- // Reset State
1367
- clearInterval(counterInterval);
1368
- counter = 0;
1369
-
1370
- // Animate back
1371
- newTooltip.velocity({
1372
- opacity: 0, marginTop: 0, marginLeft: 0}, { duration: 225, queue: false, delay: 275 }
1373
- );
1374
- backdrop.velocity({opacity: 0, scale: 1}, {
1375
- duration:225,
1376
- delay: 275, queue: false,
1377
- complete: function(){
1378
- backdrop.css('display', 'none');
1379
- newTooltip.css('display', 'none');
1380
- started = false;}
1391
+ // Mouse Out
1392
+ },
1393
+ 'mouseleave.tooltip': function(){
1394
+ // Reset State
1395
+ clearInterval(counterInterval);
1396
+ counter = 0;
1397
+
1398
+ // Animate back
1399
+ newTooltip.velocity({
1400
+ opacity: 0, marginTop: 0, marginLeft: 0}, { duration: 225, queue: false, delay: 225 }
1401
+ );
1402
+ backdrop.velocity({opacity: 0, scale: 1}, {
1403
+ duration:225,
1404
+ delay: 275, queue: false,
1405
+ complete: function(){
1406
+ backdrop.css('display', 'none');
1407
+ newTooltip.css('display', 'none');
1408
+ started = false;}
1409
+ });
1410
+ }
1381
1411
  });
1382
- }
1383
- });
1384
1412
  });
1385
1413
  };
1386
1414
 
@@ -1799,8 +1827,19 @@ $(document).ready(function(){
1799
1827
  toast.classList.add(classes[i]);
1800
1828
  }
1801
1829
  }
1802
- toast.innerHTML = html;
1803
-
1830
+ // If type of parameter is HTML Element
1831
+ if ( typeof HTMLElement === "object" ? html instanceof HTMLElement : html && typeof html === "object" && html !== null && html.nodeType === 1 && typeof html.nodeName==="string"
1832
+ ) {
1833
+ toast.appendChild(html);
1834
+ }
1835
+ else if (html instanceof jQuery) {
1836
+ // Check if it is jQuery object
1837
+ toast.appendChild(html[0]);
1838
+ }
1839
+ else {
1840
+ // Insert as text;
1841
+ toast.innerHTML = html;
1842
+ }
1804
1843
  // Bind hammer
1805
1844
  var hammerHandler = new Hammer(toast, {prevent_default: false});
1806
1845
  hammerHandler.on('pan', function(e) {
@@ -1872,17 +1911,18 @@ $(document).ready(function(){
1872
1911
  }
1873
1912
 
1874
1913
  // Add Touch Area
1875
- $('body').append($('<div class="drag-target"></div>'));
1914
+ var dragTarget = $('<div class="drag-target"></div>');
1915
+ $('body').append(dragTarget);
1876
1916
 
1877
1917
  if (options.edge == 'left') {
1878
1918
  menu_id.css('left', -1 * (options.menuWidth + 10));
1879
- $('.drag-target').css({'left': 0}); // Add Touch Area
1919
+ dragTarget.css({'left': 0}); // Add Touch Area
1880
1920
  }
1881
1921
  else {
1882
1922
  menu_id.addClass('right-aligned') // Change text-alignment to right
1883
1923
  .css('right', -1 * (options.menuWidth + 10))
1884
1924
  .css('left', '');
1885
- $('.drag-target').css({'right': 0}); // Add Touch Area
1925
+ dragTarget.css({'right': 0}); // Add Touch Area
1886
1926
  }
1887
1927
 
1888
1928
  // If fixed sidenav, bring menu out
@@ -1935,7 +1975,7 @@ $(document).ready(function(){
1935
1975
  } });
1936
1976
  if (options.edge === 'left') {
1937
1977
  // Reset phantom div
1938
- $('.drag-target').css({width: '', right: '', left: '0'});
1978
+ dragTarget.css({width: '', right: '', left: '0'});
1939
1979
  menu_id.velocity(
1940
1980
  {left: -1 * (options.menuWidth + 10)},
1941
1981
  { duration: 200,
@@ -1953,7 +1993,7 @@ $(document).ready(function(){
1953
1993
  }
1954
1994
  else {
1955
1995
  // Reset phantom div
1956
- $('.drag-target').css({width: '', right: '0', left: ''});
1996
+ dragTarget.css({width: '', right: '0', left: ''});
1957
1997
  menu_id.velocity(
1958
1998
  {right: -1 * (options.menuWidth + 10)},
1959
1999
  { duration: 200,
@@ -1976,11 +2016,11 @@ $(document).ready(function(){
1976
2016
  var panning = false;
1977
2017
  var menuOut = false;
1978
2018
 
1979
- $('.drag-target').on('click', function(){
2019
+ dragTarget.on('click', function(){
1980
2020
  removeMenu();
1981
2021
  });
1982
2022
 
1983
- $('.drag-target').hammer({
2023
+ dragTarget.hammer({
1984
2024
  prevent_default: false
1985
2025
  }).bind('pan', function(e) {
1986
2026
 
@@ -2059,7 +2099,7 @@ $(document).ready(function(){
2059
2099
  if ((menuOut && velocityX <= 0.3) || velocityX < -0.5) {
2060
2100
  menu_id.velocity({left: 0}, {duration: 300, queue: false, easing: 'easeOutQuad'});
2061
2101
  $('#sidenav-overlay').velocity({opacity: 1 }, {duration: 50, queue: false, easing: 'easeOutQuad'});
2062
- $('.drag-target').css({width: '50%', right: 0, left: ''});
2102
+ dragTarget.css({width: '50%', right: 0, left: ''});
2063
2103
  }
2064
2104
  else if (!menuOut || velocityX > 0.3) {
2065
2105
  // Enable Scrolling
@@ -2070,14 +2110,14 @@ $(document).ready(function(){
2070
2110
  complete: function () {
2071
2111
  $(this).remove();
2072
2112
  }});
2073
- $('.drag-target').css({width: '10px', right: '', left: 0});
2113
+ dragTarget.css({width: '10px', right: '', left: 0});
2074
2114
  }
2075
2115
  }
2076
2116
  else {
2077
2117
  if ((menuOut && velocityX >= -0.3) || velocityX > 0.5) {
2078
2118
  menu_id.velocity({right: 0}, {duration: 300, queue: false, easing: 'easeOutQuad'});
2079
2119
  $('#sidenav-overlay').velocity({opacity: 1 }, {duration: 50, queue: false, easing: 'easeOutQuad'});
2080
- $('.drag-target').css({width: '50%', right: '', left: 0});
2120
+ dragTarget.css({width: '50%', right: '', left: 0});
2081
2121
  }
2082
2122
  else if (!menuOut || velocityX < -0.3) {
2083
2123
  // Enable Scrolling
@@ -2088,7 +2128,7 @@ $(document).ready(function(){
2088
2128
  complete: function () {
2089
2129
  $(this).remove();
2090
2130
  }});
2091
- $('.drag-target').css({width: '10px', right: 0, left: ''});
2131
+ dragTarget.css({width: '10px', right: 0, left: ''});
2092
2132
  }
2093
2133
  }
2094
2134
 
@@ -2105,13 +2145,15 @@ $(document).ready(function(){
2105
2145
 
2106
2146
  // Disable Scrolling
2107
2147
  $('body').css('overflow', 'hidden');
2108
-
2148
+ // Push current drag target on top of DOM tree
2149
+ $('body').append(dragTarget);
2150
+
2109
2151
  if (options.edge === 'left') {
2110
- $('.drag-target').css({width: '50%', right: 0, left: ''});
2152
+ dragTarget.css({width: '50%', right: 0, left: ''});
2111
2153
  menu_id.velocity({left: 0}, {duration: 300, queue: false, easing: 'easeOutQuad'});
2112
2154
  }
2113
2155
  else {
2114
- $('.drag-target').css({width: '50%', right: '', left: 0});
2156
+ dragTarget.css({width: '50%', right: '', left: 0});
2115
2157
  menu_id.velocity({right: 0}, {duration: 300, queue: false, easing: 'easeOutQuad'});
2116
2158
  menu_id.css('left','');
2117
2159
  }
@@ -2454,7 +2496,7 @@ $(document).ready(function(){
2454
2496
  var input_selector = 'input[type=text], input[type=password], input[type=email], input[type=url], input[type=tel], input[type=number], input[type=search], textarea';
2455
2497
  $(input_selector).each(function(index, element) {
2456
2498
  if ($(element).val().length > 0 || $(this).attr('placeholder') !== undefined || $(element)[0].validity.badInput === true) {
2457
- $(this).siblings('label, i').addClass('active');
2499
+ $(this).siblings('label').addClass('active');
2458
2500
  }
2459
2501
  else {
2460
2502
  $(this).siblings('label, i').removeClass('active');
@@ -2471,7 +2513,7 @@ $(document).ready(function(){
2471
2513
  // Add active if form auto complete
2472
2514
  $(document).on('change', input_selector, function () {
2473
2515
  if($(this).val().length !== 0 || $(this).attr('placeholder') !== undefined) {
2474
- $(this).siblings('label, i').addClass('active');
2516
+ $(this).siblings('label').addClass('active');
2475
2517
  }
2476
2518
  validate_field($(this));
2477
2519
  });
@@ -2510,10 +2552,14 @@ $(document).ready(function(){
2510
2552
  if ($inputElement.val().length === 0 && $inputElement[0].validity.badInput !== true && $inputElement.attr('placeholder') === undefined) {
2511
2553
  $inputElement.siblings('label, i').removeClass('active');
2512
2554
  }
2555
+
2556
+ if ($inputElement.val().length === 0 && $inputElement[0].validity.badInput !== true && $inputElement.attr('placeholder') !== undefined) {
2557
+ $inputElement.siblings('i').removeClass('active');
2558
+ }
2513
2559
  validate_field($inputElement);
2514
2560
  });
2515
2561
 
2516
- validate_field = function(object) {
2562
+ window.validate_field = function(object) {
2517
2563
  var hasLength = object.attr('length') !== undefined;
2518
2564
  var lenAttr = parseInt(object.attr('length'));
2519
2565
  var len = object.val().length;
@@ -2527,7 +2573,7 @@ $(document).ready(function(){
2527
2573
  else {
2528
2574
  if (object.hasClass('validate')) {
2529
2575
  // Check for character counter attributes
2530
- if ((object.is(':valid') && hasLength && (len < lenAttr)) || (object.is(':valid') && !hasLength)) {
2576
+ if ((object.is(':valid') && hasLength && (len <= lenAttr)) || (object.is(':valid') && !hasLength)) {
2531
2577
  object.removeClass('invalid');
2532
2578
  object.addClass('valid');
2533
2579
  }
@@ -2590,20 +2636,24 @@ $(document).ready(function(){
2590
2636
  }
2591
2637
  });
2592
2638
 
2593
- $('body').on('keyup keydown', text_area_selector, function () {
2639
+ $('body').on('keyup keydown autoresize', text_area_selector, function () {
2594
2640
  textareaAutoResize($(this));
2595
2641
  });
2596
2642
 
2597
2643
 
2598
2644
  // File Input Path
2599
- $('.file-field').each(function() {
2600
- var path_input = $(this).find('input.file-path');
2601
- $(this).find('input[type="file"]').change(function () {
2602
- path_input.val($(this)[0].files[0].name);
2603
- path_input.trigger('change');
2604
- });
2605
- });
2606
2645
 
2646
+ $(document).on('change', '.file-field input[type="file"]', function () {
2647
+ var file_field = $(this).closest('.file-field');
2648
+ var path_input = file_field.find('input.file-path');
2649
+ var files = $(this)[0].files;
2650
+ var file_names = [];
2651
+ for (var i = 0; i < files.length; i++) {
2652
+ file_names.push(files[i].name);
2653
+ }
2654
+ path_input.val(file_names.join(", "));
2655
+ path_input.trigger('change');
2656
+ });
2607
2657
 
2608
2658
 
2609
2659
  /****************
@@ -2625,7 +2675,7 @@ $(document).ready(function(){
2625
2675
  thumb.find('.value').html($(this).val());
2626
2676
  });
2627
2677
 
2628
- $(document).on('mousedown touchstart', range_type, function(e) {
2678
+ $(document).on('input mousedown touchstart', range_type, function(e) {
2629
2679
  var thumb = $(this).siblings('.thumb');
2630
2680
 
2631
2681
  // If thumb indicator does not exist yet, create it
@@ -2691,9 +2741,8 @@ $(document).ready(function(){
2691
2741
  left = width;
2692
2742
  }
2693
2743
  thumb.addClass('active').css('left', left);
2694
-
2744
+ thumb.find('.value').html(thumb.siblings(range_type).val());
2695
2745
  }
2696
-
2697
2746
  });
2698
2747
 
2699
2748
  $(document).on('mouseout touchleave', range_wrapper, function() {
@@ -2725,7 +2774,7 @@ $(document).ready(function(){
2725
2774
  // Tear down structure if Select needs to be rebuilt
2726
2775
  var lastID = $select.data('select-id');
2727
2776
  if (lastID) {
2728
- $select.parent().find('i').remove();
2777
+ $select.parent().find('span.caret').remove();
2729
2778
  $select.parent().find('input').remove();
2730
2779
 
2731
2780
  $select.unwrap();
@@ -2783,7 +2832,10 @@ $(document).ready(function(){
2783
2832
  if ( $select.is(':disabled') )
2784
2833
  dropdownIcon.addClass('disabled');
2785
2834
 
2786
- var $newSelect = $('<input type="text" class="select-dropdown" readonly="true" ' + (($select.is(':disabled')) ? 'disabled' : '') + ' data-activates="select-options-' + uniqueID +'" value="'+ label.html() +'"/>');
2835
+ // escape double quotes
2836
+ var sanitizedLabelHtml = label.html().replace(/"/g, '&quot;');
2837
+
2838
+ var $newSelect = $('<input type="text" class="select-dropdown" readonly="true" ' + (($select.is(':disabled')) ? 'disabled' : '') + ' data-activates="select-options-' + uniqueID +'" value="'+ sanitizedLabelHtml +'"/>');
2787
2839
  $select.before($newSelect);
2788
2840
  $newSelect.before(dropdownIcon);
2789
2841
 
@@ -3204,7 +3256,7 @@ $(document).ready(function(){
3204
3256
  $(document).ready(function() {
3205
3257
 
3206
3258
  $(document).on('click.card', '.card', function (e) {
3207
- if ($(this).find('.card-reveal').length) {
3259
+ if ($(this).find('> .card-reveal').length) {
3208
3260
  if ($(e.target).is($('.card-reveal .card-title')) || $(e.target).is($('.card-reveal .card-title i'))) {
3209
3261
  // Make Reveal animate down and display none
3210
3262
  $(this).find('.card-reveal').velocity(
@@ -3225,6 +3277,14 @@ $(document).ready(function(){
3225
3277
 
3226
3278
  });
3227
3279
 
3280
+ });
3281
+ }( jQuery ));;(function ($) {
3282
+ $(document).ready(function() {
3283
+
3284
+ $(document).on('click.chip', '.chip .material-icons', function (e) {
3285
+ $(this).parent().remove();
3286
+ });
3287
+
3228
3288
  });
3229
3289
  }( jQuery ));;(function ($) {
3230
3290
  $(document).ready(function() {
@@ -3530,7 +3590,7 @@ $(document).ready(function(){
3530
3590
 
3531
3591
  var currentElement = document.querySelector(selector);
3532
3592
  if ( currentElement !== null) {
3533
- var elementOffset = currentElement.getBoundingClientRect().top + document.body.scrollTop;
3593
+ var elementOffset = currentElement.getBoundingClientRect().top + window.pageYOffset;
3534
3594
 
3535
3595
  if (windowScroll > (elementOffset + offset)) {
3536
3596
  if (value.done !== true) {