material-sass 4.0.0.alpha6 → 4.0.0.beta

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 (119) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/README.md +36 -8
  4. data/Rakefile +16 -3
  5. data/app/assets/javascripts/material-sprockets.js +6 -1
  6. data/app/assets/javascripts/material.js +654 -417
  7. data/app/assets/javascripts/material.min.js +1 -0
  8. data/app/assets/javascripts/material/addons/picker.date.js +234 -0
  9. data/app/assets/javascripts/material/addons/picker.js +172 -0
  10. data/app/assets/javascripts/material/addons/textarea-autosize.js +20 -2
  11. data/app/assets/javascripts/material/addons/waves.js +127 -0
  12. data/app/assets/javascripts/material/components/floating-label.js +92 -0
  13. data/app/assets/javascripts/material/components/navdrawer.js +353 -0
  14. data/app/assets/javascripts/material/components/selection-control-focus.js +47 -0
  15. data/app/assets/javascripts/material/components/tab-switch.js +148 -0
  16. data/app/assets/javascripts/material/components/util.js +133 -0
  17. data/app/assets/javascripts/material/initializers/picker.js +171 -0
  18. data/app/assets/javascripts/material/initializers/textarea-autosize.js +10 -0
  19. data/app/assets/javascripts/material/initializers/waves.js +13 -0
  20. data/app/assets/stylesheets/material/_colours.scss +324 -0
  21. data/app/assets/stylesheets/material/_functions.scss +65 -0
  22. data/app/assets/stylesheets/material/_mixins.scss +23 -23
  23. data/app/assets/stylesheets/material/_print.scss +102 -0
  24. data/app/assets/stylesheets/material/_utilities.scss +21 -17
  25. data/app/assets/stylesheets/material/_variables.scss +13 -42
  26. data/app/assets/stylesheets/material/base/_base.scss +420 -5
  27. data/app/assets/stylesheets/material/base/_grid.scss +34 -33
  28. data/app/assets/stylesheets/material/base/_typography.scss +165 -174
  29. data/app/assets/stylesheets/material/bootstrap/_alert.scss +32 -39
  30. data/app/assets/stylesheets/material/bootstrap/_badge.scss +34 -0
  31. data/app/assets/stylesheets/material/bootstrap/_breadcrumb.scss +18 -18
  32. data/app/assets/stylesheets/material/bootstrap/_carousel.scss +127 -142
  33. data/app/assets/stylesheets/material/bootstrap/_close.scss +18 -19
  34. data/app/assets/stylesheets/material/bootstrap/_code.scss +10 -7
  35. data/app/assets/stylesheets/material/bootstrap/_custom-form.scss +50 -56
  36. data/app/assets/stylesheets/material/bootstrap/_form.scss +159 -129
  37. data/app/assets/stylesheets/material/bootstrap/_image.scss +19 -16
  38. data/app/assets/stylesheets/material/bootstrap/_jumbotron.scss +10 -7
  39. data/app/assets/stylesheets/material/bootstrap/_nav.scss +71 -69
  40. data/app/assets/stylesheets/material/bootstrap/_pagination.scss +34 -26
  41. data/app/assets/stylesheets/material/bootstrap/_popover.scss +26 -59
  42. data/app/assets/stylesheets/material/bootstrap/_responsive-embed.scss +4 -4
  43. data/app/assets/stylesheets/material/bootstrap/_transition.scss +10 -8
  44. data/app/assets/stylesheets/material/material.scss +75 -62
  45. data/app/assets/stylesheets/material/material/_button-flat.scss +26 -39
  46. data/app/assets/stylesheets/material/material/_button-float.scss +10 -14
  47. data/app/assets/stylesheets/material/material/_button-group.scss +268 -0
  48. data/app/assets/stylesheets/material/material/_button.scss +133 -189
  49. data/app/assets/stylesheets/material/material/_card.scss +300 -248
  50. data/app/assets/stylesheets/material/material/_chip.scss +65 -64
  51. data/app/assets/stylesheets/material/material/_data-table.scss +135 -45
  52. data/app/assets/stylesheets/material/material/_dialog.scss +141 -110
  53. data/app/assets/stylesheets/material/material/_expansion-panel.scss +86 -119
  54. data/app/assets/stylesheets/material/material/_menu.scss +308 -228
  55. data/app/assets/stylesheets/material/material/_navdrawer.scss +239 -234
  56. data/app/assets/stylesheets/material/material/_picker.scss +157 -155
  57. data/app/assets/stylesheets/material/material/_progress-circular.scss +80 -80
  58. data/app/assets/stylesheets/material/material/_progress.scss +180 -115
  59. data/app/assets/stylesheets/material/material/_selection-control.scss +132 -139
  60. data/app/assets/stylesheets/material/material/_stepper.scss +94 -93
  61. data/app/assets/stylesheets/material/material/_tab.scss +74 -93
  62. data/app/assets/stylesheets/material/material/_text-field-floating-label.scss +29 -20
  63. data/app/assets/stylesheets/material/material/_text-field-input-group.scss +94 -24
  64. data/app/assets/stylesheets/material/material/_text-field-textarea.scss +13 -26
  65. data/app/assets/stylesheets/material/material/_text-field.scss +127 -118
  66. data/app/assets/stylesheets/material/material/_toolbar.scss +308 -313
  67. data/app/assets/stylesheets/material/material/_tooltip.scss +23 -62
  68. data/app/assets/stylesheets/material/mixins/_background-variant.scss +6 -6
  69. data/app/assets/stylesheets/material/mixins/_border-radius.scss +17 -17
  70. data/app/assets/stylesheets/material/mixins/_breakpoint.scss +32 -2
  71. data/app/assets/stylesheets/material/mixins/_clearfix.scss +1 -1
  72. data/app/assets/stylesheets/material/mixins/_form.scss +62 -25
  73. data/app/assets/stylesheets/material/mixins/_grid-framework.scss +8 -16
  74. data/app/assets/stylesheets/material/mixins/_grid.scss +40 -64
  75. data/app/assets/stylesheets/material/mixins/_material-icons.scss +36 -0
  76. data/app/assets/stylesheets/material/mixins/_nav-divider.scss +1 -1
  77. data/app/assets/stylesheets/material/mixins/_reset-text.scss +2 -21
  78. data/app/assets/stylesheets/material/mixins/_screenreader.scss +14 -12
  79. data/app/assets/stylesheets/material/mixins/_text-alignment.scss +23 -0
  80. data/app/assets/stylesheets/material/mixins/_text-emphasis.scss +6 -6
  81. data/app/assets/stylesheets/material/mixins/_transition.scss +42 -10
  82. data/app/assets/stylesheets/material/utilities/_background.scss +18 -18
  83. data/app/assets/stylesheets/material/utilities/_border.scss +88 -41
  84. data/app/assets/stylesheets/material/utilities/_display.scss +63 -30
  85. data/app/assets/stylesheets/material/utilities/_flex.scss +139 -134
  86. data/app/assets/stylesheets/material/utilities/_material-icons.scss +3 -5
  87. data/app/assets/stylesheets/material/utilities/_position.scss +19 -22
  88. data/app/assets/stylesheets/material/utilities/_sizing.scss +11 -12
  89. data/app/assets/stylesheets/material/utilities/_spacing.scss +51 -56
  90. data/app/assets/stylesheets/material/utilities/_text.scss +80 -75
  91. data/app/assets/stylesheets/material/utilities/_visibility.scss +5 -46
  92. data/app/assets/stylesheets/material/utilities/_waves.scss +11 -18
  93. data/app/assets/stylesheets/material/variables/_elevation-shadow.scss +89 -82
  94. data/app/assets/stylesheets/material/variables/_grid.scss +29 -26
  95. data/app/assets/stylesheets/material/variables/_palette.scss +45 -0
  96. data/app/assets/stylesheets/material/variables/_spacer.scss +34 -88
  97. data/app/assets/stylesheets/material/variables/_transition.scss +29 -0
  98. data/app/assets/stylesheets/material/variables/_typography.scss +88 -74
  99. data/app/assets/stylesheets/material/variables/_variable-bootstrap.scss +196 -133
  100. data/app/assets/stylesheets/material/variables/_variable-material.scss +481 -429
  101. data/lib/material-sass/version.rb +1 -1
  102. data/material-sass.gemspec +3 -3
  103. metadata +26 -21
  104. data/app/assets/javascripts/material/addons-materialise/pickadate.js +0 -139
  105. data/app/assets/javascripts/material/addons-materialise/textarea-autosize.js +0 -11
  106. data/app/assets/javascripts/material/addons-materialise/wave.js +0 -15
  107. data/app/assets/javascripts/material/addons/pickadate.js +0 -7
  108. data/app/assets/javascripts/material/addons/wave.js +0 -5
  109. data/app/assets/javascripts/material/src/floating-label.js +0 -91
  110. data/app/assets/javascripts/material/src/navdrawer.js +0 -352
  111. data/app/assets/javascripts/material/src/tab-switch.js +0 -133
  112. data/app/assets/javascripts/material/src/util.js +0 -138
  113. data/app/assets/stylesheets/material/base/_normalize.scss +0 -253
  114. data/app/assets/stylesheets/material/base/_reboot.scss +0 -239
  115. data/app/assets/stylesheets/material/bootstrap/_button-group.scss +0 -134
  116. data/app/assets/stylesheets/material/mixins/_tab-focus.scss +0 -5
  117. data/app/assets/stylesheets/material/mixins/_transform.scss +0 -9
  118. data/app/assets/stylesheets/material/variables/_animation.scss +0 -22
  119. data/app/assets/stylesheets/material/variables/_colour.scss +0 -389
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d483594d537c65aeea1110897d892f0981aef89d
4
- data.tar.gz: aab7bcb622b9da788abc30d3c30f2f3fd6e57484
3
+ metadata.gz: 61c44b7409742cf924a6feb886149430c7b52c2f
4
+ data.tar.gz: 9ba84b87234c61fdc147ba388c7f26ef5b5fb72d
5
5
  SHA512:
6
- metadata.gz: 3ebdfba8dc36d70472d7a866846292b8166fb9801786caec13d67fbe2a76428688bc96ed2ce367d2f93eb1d827cc1aad34aeb2f97fbb0a1772ba808566b74d31
7
- data.tar.gz: 2cef81b3b926fb783a3bf0a64cf8b664a436c6b83e3a3b1d0f10fc7670217e0496a31c84c71f9ddc338bec89eca8bcc77988bb23ff106ab98ba982adce666bb0
6
+ metadata.gz: e76230785b16a2e96f3156316659e35bd19b8e9b4538fd42bf33a20fda76f42d6d1e2c7a3970c32d8dfb1773f1b87b0e8ec42c10b444b80d020b27f9b12ec8e4
7
+ data.tar.gz: fc7dfb3f3abe74d205fa5cd4d221bbbec4fd3f4edde723a20acbeddf1bf8abee540c0c2de96ca0a700555f76032fa7e8c00eb8a61f9864df4bf7c0a1ee834370
data/.gitignore CHANGED
@@ -21,3 +21,4 @@ tmp
21
21
  *.a
22
22
  mkmf.log
23
23
  material-src/
24
+ .scss-lint.yml
data/README.md CHANGED
@@ -1,19 +1,30 @@
1
- # Material-sass
1
+ # Material-sass [![Gem Version](https://badge.fury.io/rb/material-sass.svg)](http://badge.fury.io/rb/material-sass)
2
+
3
+ `material-sass` is a rubygems version of Material Design for Bootstrap 4
4
+
5
+ Offical repo [github.com/Daemonite/material](https://github.com/Daemonite/material)
6
+
7
+ Documentation [daemonite.github.io/material](http://daemonite.github.io/material)
8
+
9
+
10
+ ## Dependencies
11
+
12
+ **Rails 5.1+**
13
+ The Rails JavaScript helpers has been rewritten in a new gem called rails-ujs and they use vanilla JavaScript, so jQuery is not a dependency of Rails anymore.
14
+ Since bootstrap relies on it, install it with ```bin/yarn add jquery``` or via ```gem 'jquery-rails'``` and add ```//= require jquery``` to ```application.js```.
15
+
16
+ **NOTE:** Ensure that the `sass-rails` gem is presented in your Gemfile.
2
17
 
3
- [![Join the chat at https://gitter.im/mkhairi/material-sass](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/mkhairi/material-sass?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
4
18
 
5
- `material-sass` is a Sass rubygems version of Material, a HTML5 UI design based on Google Material. Offical repo [github.com/Daemonite/material](https://github.com/Daemonite/material)
6
19
 
7
20
  ## Installation
8
21
 
9
22
  Add this line to your application's Gemfile:
10
23
 
11
24
  ```ruby
25
+ gem 'bootstrap'
12
26
  gem 'material-sass'
13
27
  ```
14
-
15
- **NOTE:** Ensure that the `sass-rails` gem is presented in your Gemfile.
16
-
17
28
  And then run the bundler and restart your server to make the files available through the pipeline:
18
29
 
19
30
  ```console
@@ -48,13 +59,30 @@ Require Material javascripts in `app/assets/javascripts/application.js`:
48
59
 
49
60
  ```js
50
61
  //= require jquery
51
- //= require material-sprockets
62
+ //= require bootstrap
63
+ //= require material
52
64
  ```
53
65
 
66
+ ### c. Icons
67
+
68
+ Include this line in the <head>portion of your HTML code
69
+
70
+ ``` <link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet"> ```
71
+
72
+ or import this line in your application.scss
73
+
74
+ ``` @import "https://fonts.googleapis.com/icon?family=Material+Icons"; ```
75
+
76
+ or install this gem for offline icons
77
+
78
+ ``` gem 'material_icons' ```
79
+
80
+ see [docs](https://github.com/Angelmmiguel/material_icons)
54
81
 
55
82
  ## Contributing
83
+ note: Any changes or Pull Request regarding material assets should be made in official [material](https://github.com/Daemonite/material) repo.
56
84
 
57
- 1. Fork it ( https://github.com/[my-github-username]/material-sass/fork )
85
+ 1. Fork it ( https://github.com/mkhairi/material-sass/fork )
58
86
  2. Create your feature branch (`git checkout -b my-new-feature`)
59
87
  3. Commit your changes (`git commit -am 'Add some feature'`)
60
88
  4. Push to the branch (`git push origin my-new-feature`)
data/Rakefile CHANGED
@@ -9,13 +9,26 @@ namespace :javascripts do
9
9
  rm_rf "app/assets/javascripts/material"
10
10
  end
11
11
 
12
- desc "Copy #{source_dir}/assets/js/"
12
+ desc "Copy #{source_dir}/assets/js/src"
13
13
  task :copy do
14
- src_dir = "#{source_dir}/assets/js/."
14
+ src_dir = "#{source_dir}/dist/assets/js/src/."
15
+ tgt_dir = "app/assets/javascripts/material/components"
16
+ mkdir_p tgt_dir
17
+ cp_r src_dir, tgt_dir
18
+ cp "#{source_dir}/js/material.js", "app/assets/javascripts/material.js"
19
+ cp "#{source_dir}/js/material.min.js", "app/assets/javascripts/material.min.js"
20
+
21
+
22
+ src_dir = "#{source_dir}/dist/assets/js/addons"
15
23
  tgt_dir = "app/assets/javascripts/material/"
16
24
  mkdir_p tgt_dir
17
25
  cp_r src_dir, tgt_dir
18
- mv (tgt_dir+"src.js"), "app/assets/javascripts/material.js"
26
+
27
+ src_dir = "#{source_dir}/dist/assets/js/addons-materialise/."
28
+ tgt_dir = "app/assets/javascripts/material/initializers"
29
+ mkdir_p tgt_dir
30
+ cp_r src_dir, tgt_dir
31
+
19
32
  end
20
33
 
21
34
 
@@ -1 +1,6 @@
1
- //= require_tree ./material
1
+ //= require_tree ./material/components
2
+ //= require ./material/addons/picker
3
+ //= require ./material/addons/picker.date
4
+ //= require ./material/addons/textarea-autosize
5
+ //= require ./material/addons/waves
6
+ //= require_tree ./material/initializers
@@ -1,88 +1,281 @@
1
1
  /*!
2
- * Material
2
+ * Material v4.0.0-beta (http://daemonite.github.io/material/)
3
+ * Copyright 2017 Daemon Pty Ltd
4
+ * Licensed under MIT (https://github.com/Daemonite/material/blob/master/LICENSE)
3
5
  */
6
+
4
7
  if (typeof jQuery === 'undefined') {
5
8
  throw new Error('Material\'s JavaScript requires jQuery')
6
9
  }
7
10
 
8
11
  +function ($) {
9
12
  var version = $.fn.jquery.split(' ')[0].split('.')
10
- if ((version[0] < 2 && version[1] < 9) || (version[0] == 1 && version[1] == 9 && version[2] < 1) || (version[0] >= 4)) {
11
- throw new Error('Material\'s JavaScript requires at least jQuery v1.9.1 but less than v4.0.0')
13
+ if (version[0] < 3 || version[0] >= 4) {
14
+ throw new Error('Material\'s JavaScript requires at least jQuery v3.0.0 but less than v4.0.0')
12
15
  }
13
16
  }(jQuery);
14
17
 
18
+ !function(a){this.Picker=a(jQuery)}(function(a){function b(f,g,i,m){function n(){return b._.node("div",b._.node("div",b._.node("div",b._.node("div",B.component.nodes(w.open),y.box),y.wrap),y.frame),y.holder,'tabindex="-1"')}function o(){z.data(g,B).addClass(y.input).val(z.data("value")?B.get("select",x.format):f.value),x.editable||z.on("focus."+w.id+" click."+w.id,function(a){a.preventDefault(),B.open()}).on("keydown."+w.id,u),e(f,{haspopup:!0,expanded:!1,readonly:!1,owns:f.id+"_root"})}function p(){e(B.$root[0],"hidden",!0)}function q(){B.$holder.on({keydown:u,"focus.toOpen":t,blur:function(){z.removeClass(y.target)},focusin:function(a){B.$root.removeClass(y.focused),a.stopPropagation()},"mousedown click":function(b){var c=b.target;c!=B.$holder[0]&&(b.stopPropagation(),"mousedown"!=b.type||a(c).is("input, select, textarea, button, option")||(b.preventDefault(),B.$holder[0].focus()))}}).on("click","[data-pick], [data-nav], [data-clear], [data-close]",function(){var b=a(this),c=b.data(),d=b.hasClass(y.navDisabled)||b.hasClass(y.disabled),e=h();e=e&&(e.type||e.href),(d||e&&!a.contains(B.$root[0],e))&&B.$holder[0].focus(),!d&&c.nav?B.set("highlight",B.component.item.highlight,{nav:c.nav}):!d&&"pick"in c?(B.set("select",c.pick),x.closeOnSelect&&B.close(!0)):c.clear?(B.clear(),x.closeOnClear&&B.close(!0)):c.close&&B.close(!0)})}function r(){var b;x.hiddenName===!0?(b=f.name,f.name=""):(b=["string"==typeof x.hiddenPrefix?x.hiddenPrefix:"","string"==typeof x.hiddenSuffix?x.hiddenSuffix:"_submit"],b=b[0]+f.name+b[1]),B._hidden=a('<input type=hidden name="'+b+'"'+(z.data("value")||f.value?' value="'+B.get("select",x.formatSubmit)+'"':"")+">")[0],z.on("change."+w.id,function(){B._hidden.value=f.value?B.get("select",x.formatSubmit):""})}function s(){v&&l?B.$holder.find("."+y.frame).one("transitionend",function(){B.$holder[0].focus()}):B.$holder[0].focus()}function t(a){a.stopPropagation(),z.addClass(y.target),B.$root.addClass(y.focused),B.open()}function u(a){var b=a.keyCode,c=/^(8|46)$/.test(b);return 27==b?(B.close(!0),!1):void((32==b||c||!w.open&&B.component.key[b])&&(a.preventDefault(),a.stopPropagation(),c?B.clear().close():B.open()))}if(!f)return b;var v=!1,w={id:f.id||"P"+Math.abs(~~(Math.random()*new Date))},x=i?a.extend(!0,{},i.defaults,m):m||{},y=a.extend({},b.klasses(),x.klass),z=a(f),A=function(){return this.start()},B=A.prototype={constructor:A,$node:z,start:function(){return w&&w.start?B:(w.methods={},w.start=!0,w.open=!1,w.type=f.type,f.autofocus=f==h(),f.readOnly=!x.editable,f.id=f.id||w.id,"text"!=f.type&&(f.type="text"),B.component=new i(B,x),B.$root=a('<div class="'+y.picker+'" id="'+f.id+'_root" />'),p(),B.$holder=a(n()).appendTo(B.$root),q(),x.formatSubmit&&r(),o(),x.containerHidden?a(x.containerHidden).append(B._hidden):z.after(B._hidden),x.container?a(x.container).append(B.$root):z.after(B.$root),B.on({start:B.component.onStart,render:B.component.onRender,stop:B.component.onStop,open:B.component.onOpen,close:B.component.onClose,set:B.component.onSet}).on({start:x.onStart,render:x.onRender,stop:x.onStop,open:x.onOpen,close:x.onClose,set:x.onSet}),v=c(B.$holder[0]),f.autofocus&&B.open(),B.trigger("start").trigger("render"))},render:function(b){return b?(B.$holder=a(n()),q(),B.$root.html(B.$holder)):B.$root.find("."+y.box).html(B.component.nodes(w.open)),B.trigger("render")},stop:function(){return w.start?(B.close(),B._hidden&&B._hidden.parentNode.removeChild(B._hidden),B.$root.remove(),z.removeClass(y.input).removeData(g),setTimeout(function(){z.off("."+w.id)},0),f.type=w.type,f.readOnly=!1,B.trigger("stop"),w.methods={},w.start=!1,B):B},open:function(c){return w.open?B:(z.addClass(y.active),e(f,"expanded",!0),setTimeout(function(){B.$root.addClass(y.opened),e(B.$root[0],"hidden",!1)},0),c!==!1&&(w.open=!0,v&&k.css("overflow","hidden").css("padding-right","+="+d()),s(),j.on("click."+w.id+" focusin."+w.id,function(a){var b=a.target;b!=f&&b!=document&&3!=a.which&&B.close(b===B.$holder[0])}).on("keydown."+w.id,function(c){var d=c.keyCode,e=B.component.key[d],f=c.target;27==d?B.close(!0):f!=B.$holder[0]||!e&&13!=d?a.contains(B.$root[0],f)&&13==d&&(c.preventDefault(),f.click()):(c.preventDefault(),e?b._.trigger(B.component.key.go,B,[b._.trigger(e)]):B.$root.find("."+y.highlighted).hasClass(y.disabled)||(B.set("select",B.component.item.highlight),x.closeOnSelect&&B.close(!0)))})),B.trigger("open"))},close:function(a){return a&&(x.editable?f.focus():(B.$holder.off("focus.toOpen").focus(),setTimeout(function(){B.$holder.on("focus.toOpen",t)},0))),z.removeClass(y.active),e(f,"expanded",!1),setTimeout(function(){B.$root.removeClass(y.opened+" "+y.focused),e(B.$root[0],"hidden",!0)},0),w.open?(w.open=!1,v&&k.css("overflow","").css("padding-right","-="+d()),j.off("."+w.id),B.trigger("close")):B},clear:function(a){return B.set("clear",null,a)},set:function(b,c,d){var e,f,g=a.isPlainObject(b),h=g?b:{};if(d=g&&a.isPlainObject(c)?c:d||{},b){g||(h[b]=c);for(e in h)f=h[e],e in B.component.item&&(void 0===f&&(f=null),B.component.set(e,f,d)),("select"==e||"clear"==e)&&z.val("clear"==e?"":B.get(e,x.format)).trigger("change");B.render()}return d.muted?B:B.trigger("set",h)},get:function(a,c){if(a=a||"value",null!=w[a])return w[a];if("valueSubmit"==a){if(B._hidden)return B._hidden.value;a="value"}if("value"==a)return f.value;if(a in B.component.item){if("string"==typeof c){var d=B.component.get(a);return d?b._.trigger(B.component.formats.toString,B.component,[c,d]):""}return B.component.get(a)}},on:function(b,c,d){var e,f,g=a.isPlainObject(b),h=g?b:{};if(b){g||(h[b]=c);for(e in h)f=h[e],d&&(e="_"+e),w.methods[e]=w.methods[e]||[],w.methods[e].push(f)}return B},off:function(){var a,b,c=arguments;for(a=0,namesCount=c.length;a<namesCount;a+=1)b=c[a],b in w.methods&&delete w.methods[b];return B},trigger:function(a,c){var d=function(a){var d=w.methods[a];d&&d.map(function(a){b._.trigger(a,B,[c])})};return d("_"+a),d(a),B}};return new A}function c(a){var b,c="position";return a.currentStyle?b=a.currentStyle[c]:window.getComputedStyle&&(b=getComputedStyle(a)[c]),"fixed"==b}function d(){if(k.height()<=i.height())return 0;var b=a('<div style="visibility:hidden;width:100px" />').appendTo("body"),c=b[0].offsetWidth;b.css("overflow","scroll");var d=a('<div style="width:100%" />').appendTo(b),e=d[0].offsetWidth;return b.remove(),c-e}function e(b,c,d){if(a.isPlainObject(c))for(var e in c)f(b,e,c[e]);else f(b,c,d)}function f(a,b,c){a.setAttribute(("role"==b?"":"aria-")+b,c)}function g(b,c){a.isPlainObject(b)||(b={attribute:c}),c="";for(var d in b){var e=("role"==d?"":"aria-")+d,f=b[d];c+=null==f?"":e+'="'+b[d]+'"'}return c}function h(){try{return document.activeElement}catch(a){}}var i=a(window),j=a(document),k=a(document.documentElement),l=null!=document.documentElement.style.transition;return b.klasses=function(a){return a=a||"picker",{picker:a,opened:a+"--opened",focused:a+"--focused",input:a+"__input",active:a+"__input--active",target:a+"__input--target",holder:a+"__holder",frame:a+"__frame",wrap:a+"__wrap",box:a+"__box"}},b._={group:function(a){for(var c,d="",e=b._.trigger(a.min,a);e<=b._.trigger(a.max,a,[e]);e+=a.i)c=b._.trigger(a.item,a,[e]),d+=b._.node(a.node,c[0],c[1],c[2]);return d},node:function(b,c,d,e){return c?(c=a.isArray(c)?c.join(""):c,d=d?' class="'+d+'"':"",e=e?" "+e:"","<"+b+d+e+">"+c+"</"+b+">"):""},lead:function(a){return(10>a?"0":"")+a},trigger:function(a,b,c){return"function"==typeof a?a.apply(b,c||[]):a},digits:function(a){return/\d/.test(a[1])?2:1},isDate:function(a){return{}.toString.call(a).indexOf("Date")>-1&&this.isInteger(a.getDate())},isInteger:function(a){return{}.toString.call(a).indexOf("Number")>-1&&a%1===0},ariaAttr:g},b.extend=function(c,d){a.fn[c]=function(e,f){var g=this.data(c);return"picker"==e?g:g&&"string"==typeof e?b._.trigger(g[e],g,[f]):this.each(function(){var f=a(this);f.data(c)||new b(this,c,d,e)})},a.fn[c].defaults=d.defaults},b});
19
+ !function(a){a(Picker,jQuery)}(function(a,b){function c(a,b){var c=this,d=a.$node[0],e=d.value,f=a.$node.data("value"),g=f||e,h=f?b.formatSubmit:b.format,i=function(){return d.currentStyle?"rtl"==d.currentStyle.direction:"rtl"==getComputedStyle(a.$root[0]).direction};c.settings=b,c.$node=a.$node,c.queue={min:"measure create",max:"measure create",now:"now create",select:"parse create validate",highlight:"parse navigate create validate",view:"parse create validate viewset",disable:"deactivate",enable:"activate"},c.item={},c.item.clear=null,c.item.disable=(b.disable||[]).slice(0),c.item.enable=-function(a){return a[0]===!0?a.shift():-1}(c.item.disable),c.set("min",b.min).set("max",b.max).set("now"),g?c.set("select",g,{format:h,defaultValue:!0}):c.set("select",null).set("highlight",c.item.now),c.key={40:7,38:-7,39:function(){return i()?-1:1},37:function(){return i()?1:-1},go:function(a){var b=c.item.highlight,d=new Date(b.year,b.month,b.date+a);c.set("highlight",d,{interval:a}),this.render()}},a.on("render",function(){a.$root.find("."+b.klass.selectMonth).on("change",function(){var c=this.value;c&&(a.set("highlight",[a.get("view").year,c,a.get("highlight").date]),a.$root.find("."+b.klass.selectMonth).trigger("focus"))}),a.$root.find("."+b.klass.selectYear).on("change",function(){var c=this.value;c&&(a.set("highlight",[c,a.get("view").month,a.get("highlight").date]),a.$root.find("."+b.klass.selectYear).trigger("focus"))})},1).on("open",function(){var d="";c.disabled(c.get("now"))&&(d=":not(."+b.klass.buttonToday+")"),a.$root.find("button"+d+", select").attr("disabled",!1)},1).on("close",function(){a.$root.find("button, select").attr("disabled",!0)},1)}var d=7,e=6,f=a._;c.prototype.set=function(a,b,c){var d=this,e=d.item;return null===b?("clear"==a&&(a="select"),e[a]=b,d):(e["enable"==a?"disable":"flip"==a?"enable":a]=d.queue[a].split(" ").map(function(e){return b=d[e](a,b,c)}).pop(),"select"==a?d.set("highlight",e.select,c):"highlight"==a?d.set("view",e.highlight,c):a.match(/^(flip|min|max|disable|enable)$/)&&(e.select&&d.disabled(e.select)&&d.set("select",e.select,c),e.highlight&&d.disabled(e.highlight)&&d.set("highlight",e.highlight,c)),d)},c.prototype.get=function(a){return this.item[a]},c.prototype.create=function(a,c,d){var e,g=this;return c=void 0===c?a:c,c==-(1/0)||c==1/0?e=c:b.isPlainObject(c)&&f.isInteger(c.pick)?c=c.obj:b.isArray(c)?(c=new Date(c[0],c[1],c[2]),c=f.isDate(c)?c:g.create().obj):c=f.isInteger(c)||f.isDate(c)?g.normalize(new Date(c),d):g.now(a,c,d),{year:e||c.getFullYear(),month:e||c.getMonth(),date:e||c.getDate(),day:e||c.getDay(),obj:e||c,pick:e||c.getTime()}},c.prototype.createRange=function(a,c){var d=this,e=function(a){return a===!0||b.isArray(a)||f.isDate(a)?d.create(a):a};return f.isInteger(a)||(a=e(a)),f.isInteger(c)||(c=e(c)),f.isInteger(a)&&b.isPlainObject(c)?a=[c.year,c.month,c.date+a]:f.isInteger(c)&&b.isPlainObject(a)&&(c=[a.year,a.month,a.date+c]),{from:e(a),to:e(c)}},c.prototype.withinRange=function(a,b){return a=this.createRange(a.from,a.to),b.pick>=a.from.pick&&b.pick<=a.to.pick},c.prototype.overlapRanges=function(a,b){var c=this;return a=c.createRange(a.from,a.to),b=c.createRange(b.from,b.to),c.withinRange(a,b.from)||c.withinRange(a,b.to)||c.withinRange(b,a.from)||c.withinRange(b,a.to)},c.prototype.now=function(a,b,c){return b=new Date,c&&c.rel&&b.setDate(b.getDate()+c.rel),this.normalize(b,c)},c.prototype.navigate=function(a,c,d){var e,f,g,h,i=b.isArray(c),j=b.isPlainObject(c),k=this.item.view;if(i||j){for(j?(f=c.year,g=c.month,h=c.date):(f=+c[0],g=+c[1],h=+c[2]),d&&d.nav&&k&&k.month!==g&&(f=k.year,g=k.month),e=new Date(f,g+(d&&d.nav?d.nav:0),1),f=e.getFullYear(),g=e.getMonth();new Date(f,g,h).getMonth()!==g;)h-=1;c=[f,g,h]}return c},c.prototype.normalize=function(a){return a.setHours(0,0,0,0),a},c.prototype.measure=function(a,b){var c=this;return b?"string"==typeof b?b=c.parse(a,b):f.isInteger(b)&&(b=c.now(a,b,{rel:b})):b="min"==a?-(1/0):1/0,b},c.prototype.viewset=function(a,b){return this.create([b.year,b.month,1])},c.prototype.validate=function(a,c,d){var e,g,h,i,j=this,k=c,l=d&&d.interval?d.interval:1,m=-1===j.item.enable,n=j.item.min,o=j.item.max,p=m&&j.item.disable.filter(function(a){if(b.isArray(a)){var d=j.create(a).pick;d<c.pick?e=!0:d>c.pick&&(g=!0)}return f.isInteger(a)}).length;if((!d||!d.nav&&!d.defaultValue)&&(!m&&j.disabled(c)||m&&j.disabled(c)&&(p||e||g)||!m&&(c.pick<=n.pick||c.pick>=o.pick)))for(m&&!p&&(!g&&l>0||!e&&0>l)&&(l*=-1);j.disabled(c)&&(Math.abs(l)>1&&(c.month<k.month||c.month>k.month)&&(c=k,l=l>0?1:-1),c.pick<=n.pick?(h=!0,l=1,c=j.create([n.year,n.month,n.date+(c.pick===n.pick?0:-1)])):c.pick>=o.pick&&(i=!0,l=-1,c=j.create([o.year,o.month,o.date+(c.pick===o.pick?0:1)])),!h||!i);)c=j.create([c.year,c.month,c.date+l]);return c},c.prototype.disabled=function(a){var c=this,d=c.item.disable.filter(function(d){return f.isInteger(d)?a.day===(c.settings.firstDay?d:d-1)%7:b.isArray(d)||f.isDate(d)?a.pick===c.create(d).pick:b.isPlainObject(d)?c.withinRange(d,a):void 0});return d=d.length&&!d.filter(function(a){return b.isArray(a)&&"inverted"==a[3]||b.isPlainObject(a)&&a.inverted}).length,-1===c.item.enable?!d:d||a.pick<c.item.min.pick||a.pick>c.item.max.pick},c.prototype.parse=function(a,b,c){var d=this,e={};return b&&"string"==typeof b?(c&&c.format||(c=c||{},c.format=d.settings.format),d.formats.toArray(c.format).map(function(a){var c=d.formats[a],g=c?f.trigger(c,d,[b,e]):a.replace(/^!/,"").length;c&&(e[a]=b.substr(0,g)),b=b.substr(g)}),[e.yyyy||e.yy,+(e.mm||e.m)-1,e.dd||e.d]):b},c.prototype.formats=function(){function a(a,b,c){var d=a.match(/[^\x00-\x7F]+|\w+/)[0];return c.mm||c.m||(c.m=b.indexOf(d)+1),d.length}function b(a){return a.match(/\w+/)[0].length}return{d:function(a,b){return a?f.digits(a):b.date},dd:function(a,b){return a?2:f.lead(b.date)},ddd:function(a,c){return a?b(a):this.settings.weekdaysShort[c.day]},dddd:function(a,c){return a?b(a):this.settings.weekdaysFull[c.day]},m:function(a,b){return a?f.digits(a):b.month+1},mm:function(a,b){return a?2:f.lead(b.month+1)},mmm:function(b,c){var d=this.settings.monthsShort;return b?a(b,d,c):d[c.month]},mmmm:function(b,c){var d=this.settings.monthsFull;return b?a(b,d,c):d[c.month]},yy:function(a,b){return a?2:(""+b.year).slice(2)},yyyy:function(a,b){return a?4:b.year},toArray:function(a){return a.split(/(d{1,4}|m{1,4}|y{4}|yy|!.)/g)},toString:function(a,b){var c=this;return c.formats.toArray(a).map(function(a){return f.trigger(c.formats[a],c,[0,b])||a.replace(/^!/,"")}).join("")}}}(),c.prototype.isDateExact=function(a,c){var d=this;return f.isInteger(a)&&f.isInteger(c)||"boolean"==typeof a&&"boolean"==typeof c?a===c:(f.isDate(a)||b.isArray(a))&&(f.isDate(c)||b.isArray(c))?d.create(a).pick===d.create(c).pick:b.isPlainObject(a)&&b.isPlainObject(c)?d.isDateExact(a.from,c.from)&&d.isDateExact(a.to,c.to):!1},c.prototype.isDateOverlap=function(a,c){var d=this,e=d.settings.firstDay?1:0;return f.isInteger(a)&&(f.isDate(c)||b.isArray(c))?(a=a%7+e,a===d.create(c).day+1):f.isInteger(c)&&(f.isDate(a)||b.isArray(a))?(c=c%7+e,c===d.create(a).day+1):b.isPlainObject(a)&&b.isPlainObject(c)?d.overlapRanges(a,c):!1},c.prototype.flipEnable=function(a){var b=this.item;b.enable=a||(-1==b.enable?1:-1)},c.prototype.deactivate=function(a,c){var d=this,e=d.item.disable.slice(0);return"flip"==c?d.flipEnable():c===!1?(d.flipEnable(1),e=[]):c===!0?(d.flipEnable(-1),e=[]):c.map(function(a){for(var c,g=0;g<e.length;g+=1)if(d.isDateExact(a,e[g])){c=!0;break}c||(f.isInteger(a)||f.isDate(a)||b.isArray(a)||b.isPlainObject(a)&&a.from&&a.to)&&e.push(a)}),e},c.prototype.activate=function(a,c){var d=this,e=d.item.disable,g=e.length;return"flip"==c?d.flipEnable():c===!0?(d.flipEnable(1),e=[]):c===!1?(d.flipEnable(-1),e=[]):c.map(function(a){var c,h,i,j;for(i=0;g>i;i+=1){if(h=e[i],d.isDateExact(h,a)){c=e[i]=null,j=!0;break}if(d.isDateOverlap(h,a)){b.isPlainObject(a)?(a.inverted=!0,c=a):b.isArray(a)?(c=a,c[3]||c.push("inverted")):f.isDate(a)&&(c=[a.getFullYear(),a.getMonth(),a.getDate(),"inverted"]);break}}if(c)for(i=0;g>i;i+=1)if(d.isDateExact(e[i],a)){e[i]=null;break}if(j)for(i=0;g>i;i+=1)if(d.isDateOverlap(e[i],a)){e[i]=null;break}c&&e.push(c)}),e.filter(function(a){return null!=a})},c.prototype.nodes=function(a){var b=this,c=b.settings,g=b.item,h=g.now,i=g.select,j=g.highlight,k=g.view,l=g.disable,m=g.min,n=g.max,o=function(a,b){return c.firstDay&&(a.push(a.shift()),b.push(b.shift())),f.node("thead",f.node("tr",f.group({min:0,max:d-1,i:1,node:"th",item:function(d){return[a[d],c.klass.weekdays,'scope=col title="'+b[d]+'"']}})))}((c.showWeekdaysFull?c.weekdaysFull:c.weekdaysShort).slice(0),c.weekdaysFull.slice(0)),p=function(a){return f.node("div"," ",c.klass["nav"+(a?"Next":"Prev")]+(a&&k.year>=n.year&&k.month>=n.month||!a&&k.year<=m.year&&k.month<=m.month?" "+c.klass.navDisabled:""),"data-nav="+(a||-1)+" "+f.ariaAttr({role:"button",controls:b.$node[0].id+"_table"})+' title="'+(a?c.labelMonthNext:c.labelMonthPrev)+'"')},q=function(){var d=c.showMonthsShort?c.monthsShort:c.monthsFull;return c.selectMonths?f.node("select",f.group({min:0,max:11,i:1,node:"option",item:function(a){return[d[a],0,"value="+a+(k.month==a?" selected":"")+(k.year==m.year&&a<m.month||k.year==n.year&&a>n.month?" disabled":"")]}}),c.klass.selectMonth,(a?"":"disabled")+" "+f.ariaAttr({controls:b.$node[0].id+"_table"})+' title="'+c.labelMonthSelect+'"'):f.node("div",d[k.month],c.klass.month)},r=function(){var d=k.year,e=c.selectYears===!0?5:~~(c.selectYears/2);if(e){var g=m.year,h=n.year,i=d-e,j=d+e;if(g>i&&(j+=g-i,i=g),j>h){var l=i-g,o=j-h;i-=l>o?o:l,j=h}return f.node("select",f.group({min:i,max:j,i:1,node:"option",item:function(a){return[a,0,"value="+a+(d==a?" selected":"")]}}),c.klass.selectYear,(a?"":"disabled")+" "+f.ariaAttr({controls:b.$node[0].id+"_table"})+' title="'+c.labelYearSelect+'"')}return f.node("div",d,c.klass.year)};return f.node("div",(c.selectYears?r()+q():q()+r())+p()+p(1),c.klass.header)+f.node("table",o+f.node("tbody",f.group({min:0,max:e-1,i:1,node:"tr",item:function(a){var e=c.firstDay&&0===b.create([k.year,k.month,1]).day?-7:0;return[f.group({min:d*a-k.day+e+1,max:function(){return this.min+d-1},i:1,node:"td",item:function(a){a=b.create([k.year,k.month,a+(c.firstDay?1:0)]);var d=i&&i.pick==a.pick,e=j&&j.pick==a.pick,g=l&&b.disabled(a)||a.pick<m.pick||a.pick>n.pick,o=f.trigger(b.formats.toString,b,[c.format,a]);return[f.node("div",a.date,function(b){return b.push(k.month==a.month?c.klass.infocus:c.klass.outfocus),h.pick==a.pick&&b.push(c.klass.now),d&&b.push(c.klass.selected),e&&b.push(c.klass.highlighted),g&&b.push(c.klass.disabled),b.join(" ")}([c.klass.day]),"data-pick="+a.pick+" "+f.ariaAttr({role:"gridcell",label:o,selected:d&&b.$node.val()===o?!0:null,activedescendant:e?!0:null,disabled:g?!0:null})),"",f.ariaAttr({role:"presentation"})]}})]}})),c.klass.table,'id="'+b.$node[0].id+'_table" '+f.ariaAttr({role:"grid",controls:b.$node[0].id,readonly:!0}))+f.node("div",f.node("button",c.today,c.klass.buttonToday,"type=button data-pick="+h.pick+(a&&!b.disabled(h)?"":" disabled")+" "+f.ariaAttr({controls:b.$node[0].id}))+f.node("button",c.clear,c.klass.buttonClear,"type=button data-clear=1"+(a?"":" disabled")+" "+f.ariaAttr({controls:b.$node[0].id}))+f.node("button",c.close,c.klass.buttonClose,"type=button data-close=true "+(a?"":" disabled")+" "+f.ariaAttr({controls:b.$node[0].id})),c.klass.footer)},c.defaults=function(a){return{labelMonthNext:"Next month",labelMonthPrev:"Previous month",labelMonthSelect:"Select a month",labelYearSelect:"Select a year",monthsFull:["January","February","March","April","May","June","July","August","September","October","November","December"],monthsShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],weekdaysFull:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],weekdaysShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],today:"Today",clear:"Clear",close:"Close",closeOnSelect:!0,closeOnClear:!0,format:"d mmmm, yyyy",klass:{table:a+"table",header:a+"header",navPrev:a+"nav--prev",navNext:a+"nav--next",navDisabled:a+"nav--disabled",month:a+"month",year:a+"year",selectMonth:a+"select--month",selectYear:a+"select--year",weekdays:a+"weekday",day:a+"day",disabled:a+"day--disabled",selected:a+"day--selected",highlighted:a+"day--highlighted",now:a+"day--today",infocus:a+"day--infocus",outfocus:a+"day--outfocus",footer:a+"footer",buttonClear:a+"button--clear",buttonToday:a+"button--today",buttonClose:a+"button--close"}}}(a.klasses().picker+"__"),a.extend("pickadate",c)});
20
+ !function(a,b,c,d){function h(b,c){this.element=b,this.$element=a(b),this.init()}var e="textareaAutoSize",f="plugin_"+e,g=function(a){return a.replace(/\s/g,"").length>0};h.prototype={init:function(){var c=parseInt(this.$element.css("paddingBottom"))+parseInt(this.$element.css("paddingTop"))+parseInt(this.$element.css("borderTopWidth"))+parseInt(this.$element.css("borderBottomWidth"))||0;g(this.element.value)&&this.$element.height(this.element.scrollHeight-c),this.$element.on("input keyup",function(d){var e=a(b),f=e.scrollTop();a(this).height(0).height(this.scrollHeight-c),e.scrollTop(f)})}},a.fn[e]=function(b){return this.each(function(){a.data(this,f)||a.data(this,f,new h(this,b))}),this}}(jQuery,window,document);
21
+
22
+ !function(a,b){"use strict";"function"==typeof define&&define.amd?define([],function(){return b.apply(a)}):"object"==typeof exports?module.exports=b.call(a):a.Waves=b.call(a)}("object"==typeof global?global:this,function(){"use strict";function e(a){return null!==a&&a===a.window}function f(a){return e(a)?a:9===a.nodeType&&a.defaultView}function g(a){var b=typeof a;return"function"===b||"object"===b&&!!a}function h(a){return g(a)&&a.nodeType>0}function i(a){var d=c.call(a);return"[object String]"===d?b(a):g(a)&&/^\[object (HTMLCollection|NodeList|Object)\]$/.test(d)&&a.hasOwnProperty("length")?a:h(a)?[a]:[]}function j(a){var b,c,d={top:0,left:0},e=a&&a.ownerDocument;return b=e.documentElement,"undefined"!=typeof a.getBoundingClientRect&&(d=a.getBoundingClientRect()),c=f(e),{top:d.top+c.pageYOffset-b.clientTop,left:d.left+c.pageXOffset-b.clientLeft}}function k(a){var b="";for(var c in a)a.hasOwnProperty(c)&&(b+=c+":"+a[c]+";");return b}function n(a,b,c,d){if(c){d.classList.remove("waves-wrapping"),c.classList.remove("waves-rippling");var e=c.getAttribute("data-x"),f=c.getAttribute("data-y"),g=c.getAttribute("data-scale"),h=c.getAttribute("data-translate"),i=Date.now()-Number(c.getAttribute("data-hold")),j=350-i;0>j&&(j=0),"mousemove"===a.type&&(j=150);var m="mousemove"===a.type?2500:l.duration;setTimeout(function(){var a={top:f+"px",left:e+"px",opacity:"0","-webkit-transition-duration":m+"ms","-moz-transition-duration":m+"ms","-o-transition-duration":m+"ms","transition-duration":m+"ms","-webkit-transform":g+" "+h,"-moz-transform":g+" "+h,"-ms-transform":g+" "+h,"-o-transform":g+" "+h,transform:g+" "+h};c.setAttribute("style",k(a)),setTimeout(function(){try{d.removeChild(c),b.removeChild(d)}catch(a){return!1}},m)},j)}}function p(a){if(o.allowEvent(a)===!1)return null;for(var b=null,c=a.target||a.srcElement;null!==c.parentElement;){if(c.classList.contains("waves-effect")&&!(c instanceof SVGElement)){b=c;break}c=c.parentElement}return b}function q(a){var b=p(a);if(null!==b){if(b.disabled||b.getAttribute("disabled")||b.classList.contains("disabled"))return;if(o.registerEvent(a),"touchstart"===a.type&&l.delay){var c=!1,e=setTimeout(function(){e=null,l.show(a,b)},l.delay),f=function(d){e&&(clearTimeout(e),e=null,l.show(a,b)),c||(c=!0,l.hide(d,b))},g=function(a){e&&(clearTimeout(e),e=null),f(a)};b.addEventListener("touchmove",g,!1),b.addEventListener("touchend",f,!1),b.addEventListener("touchcancel",f,!1)}else l.show(a,b),d&&(b.addEventListener("touchend",l.hide,!1),b.addEventListener("touchcancel",l.hide,!1)),b.addEventListener("mouseup",l.hide,!1),b.addEventListener("mouseleave",l.hide,!1)}}var a=a||{},b=document.querySelectorAll.bind(document),c=Object.prototype.toString,d="ontouchstart"in window,l={duration:750,delay:200,show:function(a,b,c){if(2===a.button)return!1;b=b||this;var d=document.createElement("div");d.className="waves-wrap waves-wrapping",b.appendChild(d);var e=document.createElement("div");e.className="waves-ripple waves-rippling",d.appendChild(e);var f=j(b),g=0,h=0;"touches"in a&&a.touches.length?(g=a.touches[0].pageY-f.top,h=a.touches[0].pageX-f.left):(g=a.pageY-f.top,h=a.pageX-f.left),h=h>=0?h:0,g=g>=0?g:0;var i="scale("+b.clientWidth/100*3+")",m="translate(0,0)";c&&(m="translate("+c.x+"px, "+c.y+"px)"),e.setAttribute("data-hold",Date.now()),e.setAttribute("data-x",h),e.setAttribute("data-y",g),e.setAttribute("data-scale",i),e.setAttribute("data-translate",m);var n={top:g+"px",left:h+"px"};e.classList.add("waves-notransition"),e.setAttribute("style",k(n)),e.classList.remove("waves-notransition"),n["-webkit-transform"]=i+" "+m,n["-moz-transform"]=i+" "+m,n["-ms-transform"]=i+" "+m,n["-o-transform"]=i+" "+m,n.transform=i+" "+m,n.opacity="1";var o="mousemove"===a.type?2500:l.duration;n["-webkit-transition-duration"]=o+"ms",n["-moz-transition-duration"]=o+"ms",n["-o-transition-duration"]=o+"ms",n["transition-duration"]=o+"ms",e.setAttribute("style",k(n))},hide:function(a,b){b=b||this;for(var c=b.getElementsByClassName("waves-wrapping"),d=b.getElementsByClassName("waves-rippling"),e=0,f=d.length;f>e;e++)n(a,b,d[e],c[e])}},m={input:function(a){var b=a.parentNode;if("i"!==b.tagName.toLowerCase()||!b.classList.contains("waves-effect")){var c=document.createElement("i");c.className=a.className+" waves-input-wrapper",a.className="waves-button-input",b.replaceChild(c,a),c.appendChild(a);var d=window.getComputedStyle(a,null),e=d.color,f=d.backgroundColor;c.setAttribute("style","color:"+e+";background:"+f),a.setAttribute("style","background-color:rgba(0,0,0,0);")}},img:function(a){var b=a.parentNode;if("i"!==b.tagName.toLowerCase()||!b.classList.contains("waves-effect")){var c=document.createElement("i");b.replaceChild(c,a),c.appendChild(a)}}},o={touches:0,allowEvent:function(a){var b=!0;return/^(mousedown|mousemove)$/.test(a.type)&&o.touches&&(b=!1),b},registerEvent:function(a){var b=a.type;"touchstart"===b?o.touches+=1:/^(touchend|touchcancel)$/.test(b)&&setTimeout(function(){o.touches&&(o.touches-=1)},500)}};return a.init=function(a){var b=document.body;a=a||{},"duration"in a&&(l.duration=a.duration),"delay"in a&&(l.delay=a.delay),d&&(b.addEventListener("touchstart",q,!1),b.addEventListener("touchcancel",o.registerEvent,!1),b.addEventListener("touchend",o.registerEvent,!1)),b.addEventListener("mousedown",q,!1)},a.attach=function(a,b){a=i(a),"[object Array]"===c.call(b)&&(b=b.join(" ")),b=b?" "+b:"";for(var d,e,f=0,g=a.length;g>f;f++)d=a[f],e=d.tagName.toLowerCase(),-1!==["input","img"].indexOf(e)&&(m[e](d),d=d.parentElement),-1===d.className.indexOf("waves-effect")&&(d.className+=" waves-effect"+b)},a.ripple=function(a,b){a=i(a);var c=a.length;if(b=b||{},b.wait=b.wait||0,b.position=b.position||null,c)for(var d,e,f,g={},h=0,k={type:"mousedown",button:1},m=function(a,b){return function(){l.hide(a,b)}};c>h;h++)if(d=a[h],e=b.position||{x:d.clientWidth/2,y:d.clientHeight/2},f=j(d),g.x=f.left+e.x,g.y=f.top+e.y,k.pageX=g.x,k.pageY=g.y,l.show(k,d),b.wait>=0&&null!==b.wait){var n={type:"mouseup",button:1};setTimeout(m(n,d),b.wait)}},a.calm=function(a){a=i(a);for(var b={type:"mouseup",button:1},c=0,d=a.length;d>c;c++)l.hide(b,a[c])},a.displayEffect=function(b){console.error("Waves.displayEffect() has been deprecated and will be removed in future version. Please use Waves.init() to initialize Waves effect"),a.init(b)},a});
23
+
15
24
  +function ($) {
16
- 'use strict';
17
25
 
18
- var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol ? "symbol" : typeof obj; };
26
+ 'use strict'
27
+
28
+ var Datepicker = function (element, options) {
29
+ this._element = element
30
+ this._options = options
31
+ }
32
+
33
+ if (typeof $.fn.pickadate === 'undefined') {
34
+ throw new Error('Material\'s JavaScript requires pickadate.js')
35
+ }
36
+
37
+ Datepicker.DEFAULTS = {
38
+ cancel : 'Cancel',
39
+ closeOnCancel : true,
40
+ closeOnSelect : false,
41
+ container : 'body',
42
+ disable : [],
43
+ firstDay : 0,
44
+ format : 'd/m/yyyy',
45
+ formatSubmit : '',
46
+ klass : {
47
+ // button
48
+ buttonClear : 'btn btn-outline-primary picker-button-clear',
49
+ buttonClose : 'btn btn-outline-primary picker-button-close',
50
+ buttonToday : 'btn btn-outline-primary picker-button-today',
51
+
52
+ // day
53
+ day : 'picker-day',
54
+ disabled : 'picker-day-disabled',
55
+ highlighted : 'picker-day-highlighted',
56
+ infocus : 'picker-day-infocus',
57
+ now : 'picker-day-today',
58
+ outfocus : 'picker-day-outfocus',
59
+ selected : 'picker-day-selected',
60
+ weekdays : 'picker-weekday',
61
+
62
+ // element
63
+ box : 'picker-box',
64
+ footer : 'picker-footer',
65
+ frame : 'picker-frame',
66
+ header : 'picker-header',
67
+ holder : 'picker-holder',
68
+ table : 'picker-table',
69
+ wrap : 'picker-wrap',
70
+
71
+ // input element
72
+ active : 'picker-input-active',
73
+ input : 'picker-input',
74
+
75
+ // month and year nav
76
+ month : 'picker-month',
77
+ navDisabled : 'picker-nav-disabled',
78
+ navNext : 'material-icons picker-nav-next',
79
+ navPrev : 'material-icons picker-nav-prev',
80
+ selectMonth : 'picker-select-month',
81
+ selectYear : 'picker-select-year',
82
+ year : 'picker-year',
83
+
84
+ // root picker
85
+ focused : 'picker-focused',
86
+ opened : 'picker-opened',
87
+ picker : 'picker'
88
+ },
89
+ max : false,
90
+ min : false,
91
+ monthsFull : ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],
92
+ monthsShort : ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],
93
+ ok : 'OK',
94
+ onClose : false,
95
+ onOpen : false,
96
+ onRender : false,
97
+ onSet : false,
98
+ onStart : false,
99
+ onStop : false,
100
+ selectMonths : false,
101
+ selectYears : false,
102
+ today : '',
103
+ weekdaysFull : ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],
104
+ weekdaysShort : ['S', 'M', 'T', 'W', 'T', 'F', 'S']
105
+ }
106
+
107
+ Datepicker.prototype.display = function (datepickerApi, datepickerRoot, datepickerValue) {
108
+ $('.picker-date-display', datepickerRoot).remove()
109
+
110
+ $('.picker-wrap', datepickerRoot).prepend('<div class="picker-date-display">' +
111
+ '<div class="picker-date-display-top">' +
112
+ '<span class="picker-year-display">' + datepickerApi.get(datepickerValue, 'yyyy') + '</span>' +
113
+ '</div>' +
114
+ '<div class="picker-date-display-bottom">' +
115
+ '<span class="picker-weekday-display">' + datepickerApi.get(datepickerValue, 'dddd') + '</span>' +
116
+ '<span class="picker-day-display">' + datepickerApi.get(datepickerValue, 'd') + '</span>' +
117
+ '<span class="picker-month-display">' + datepickerApi.get(datepickerValue, 'mmm') + '</span>' +
118
+ '</div>' +
119
+ '</div>')
120
+ }
121
+
122
+ Datepicker.prototype.show = function () {
123
+ var that = this
124
+
125
+ $(this._element).pickadate({
126
+ clear : that._options.cancel,
127
+ close : that._options.ok,
128
+ closeOnClear : that._options.closeOnCancel,
129
+ closeOnSelect : that._options.closeOnSelect,
130
+ container : that._options.container,
131
+ disable : that._options.disable,
132
+ firstDay : that._options.firstDay,
133
+ format : that._options.format,
134
+ formatSubmit : that._options.formatSubmit,
135
+ klass : that._options.klass,
136
+ max : that._options.max,
137
+ min : that._options.min,
138
+ monthsFull : that._options.monthsFull,
139
+ monthsShort : that._options.monthsShort,
140
+ onClose : that._options.onClose,
141
+ onOpen : that._options.onOpen,
142
+ onRender : that._options.onRender,
143
+ onSet : that._options.onSet,
144
+ onStart : that._options.onStart,
145
+ onStop : that._options.onStop,
146
+ selectMonths : that._options.selectMonths,
147
+ selectYears : that._options.selectYears,
148
+ today : that._options.today,
149
+ weekdaysFull : that._options.weekdaysFull,
150
+ weekdaysShort : that._options.weekdaysShort
151
+ })
152
+
153
+ var datepickerApi = $(this._element).pickadate('picker'),
154
+ datepickerNode = datepickerApi.$node,
155
+ datepickerRoot = datepickerApi.$root
156
+
157
+ datepickerApi.on({
158
+ close: function () {
159
+ $(document.activeElement).blur()
160
+ },
161
+ open: function () {
162
+ if (!$('.picker__date-display', datepickerRoot).length) {
163
+ that.display(datepickerApi, datepickerRoot, 'highlight')
164
+ }
165
+ },
166
+ set: function () {
167
+ if (datepickerApi.get('select') !== null) {
168
+ that.display(datepickerApi, datepickerRoot, 'select')
169
+ }
170
+ }
171
+ })
172
+ }
173
+
174
+ function Plugin (option) {
175
+ return this.each(function () {
176
+ var data = $(this).data('bs.pickdate')
177
+ var options = $.extend({}, Datepicker.DEFAULTS, $(this).data(), typeof option == 'object' && option)
178
+
179
+ if (!data) {
180
+ $(this).data('bs.pickdate', (data = new Datepicker(this, options)))
181
+ }
182
+
183
+ data.show()
184
+ })
185
+ }
186
+
187
+ var old = $.fn.pickdate
188
+
189
+ $.fn.pickdate = Plugin
190
+ $.fn.pickdate.Constructor = Datepicker
191
+
192
+ $.fn.pickdate.noConflict = function () {
193
+ $.fn.pickdate = old
194
+ return this
195
+ }
196
+
197
+ }(jQuery)
198
+
199
+ $(function () {
200
+ if ($('.textarea-autosize').length && (typeof $.fn.textareaAutoSize !== 'undefined')) {
201
+ $('.textarea-autosize').textareaAutoSize()
202
+ }
203
+ })
204
+
205
+ $(function () {
206
+ if ($('.waves-attach').length && (typeof Waves !== 'undefined')) {
207
+ Waves.attach('.waves-attach')
208
+ Waves.init({
209
+ duration: 300
210
+ })
211
+ }
212
+ })
213
+
214
+ 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; };
19
215
 
20
216
  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; }; }();
21
217
 
22
218
  function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
23
219
 
24
- /*!
25
- * floating label:
26
- * when a user engages with the text input field,
27
- * the floating inline labels move to float above the field
28
- */
29
- var FloatingLabel = function ($) {
30
- // constants >>>
31
- var DATA_API_KEY = '.data-api';
32
- var DATA_KEY = 'md.floatinglabel';
33
- var EVENT_KEY = '.' + DATA_KEY;
34
- var NAME = 'floatinglabel';
35
- var NO_CONFLICT = $.fn[NAME];
36
-
37
- var ClassName = {
38
- IS_FOCUSED: 'is-focused',
39
- HAS_VALUE: 'has-value'
40
- };
41
-
42
- var Event = {
43
- CHANGE: 'change' + EVENT_KEY,
44
- FOCUSIN: 'focusin' + EVENT_KEY,
45
- FOCUSOUT: 'focusout' + EVENT_KEY
46
- };
47
-
48
- var Selector = {
49
- DATA_PARENT: '.floating-label',
50
- DATA_TOGGLE: '.floating-label .form-control'
51
- };
52
- // <<< constants
53
-
54
- var FloatingLabel = function () {
55
- function FloatingLabel(element) {
56
- _classCallCheck(this, FloatingLabel);
57
-
58
- this._element = element;
59
- }
220
+ +function () {
221
+ /*
222
+ * floating label:
223
+ * when a user engages with the text input field,
224
+ * the floating inline labels move to float above the field
225
+ */
226
+
227
+ var FloatingLabel = function ($) {
228
+
229
+ // constants >>>
230
+ var DATA_KEY = 'md.floatinglabel';
231
+ var EVENT_KEY = '.' + DATA_KEY;
232
+ var NAME = 'floatinglabel';
233
+ var NO_CONFLICT = $.fn[NAME];
234
+
235
+ var ClassName = {
236
+ IS_FOCUSED: 'is-focused',
237
+ HAS_VALUE: 'has-value'
238
+ };
239
+
240
+ var Event = {
241
+ CHANGE: 'change' + EVENT_KEY,
242
+ FOCUSIN: 'focusin' + EVENT_KEY,
243
+ FOCUSOUT: 'focusout' + EVENT_KEY
244
+ };
245
+
246
+ var Selector = {
247
+ DATA_PARENT: '.floating-label',
248
+ DATA_TOGGLE: '.floating-label .form-control'
249
+ };
250
+ // <<< constants
251
+
252
+ var FloatingLabel = function () {
253
+ function FloatingLabel(element) {
254
+ _classCallCheck(this, FloatingLabel);
255
+
256
+ this._element = element;
257
+ }
60
258
 
61
- _createClass(FloatingLabel, [{
62
- key: 'change',
63
- value: function change(relatedTarget) {
259
+ FloatingLabel.prototype.change = function change(relatedTarget) {
64
260
  if ($(this._element).val() || $(this._element).is('select') && $('option:first-child', $(this._element)).html().replace(' ', '') !== '') {
65
261
  $(relatedTarget).addClass(ClassName.HAS_VALUE);
66
262
  } else {
67
263
  $(relatedTarget).removeClass(ClassName.HAS_VALUE);
68
264
  }
69
- }
70
- }, {
71
- key: 'focusin',
72
- value: function focusin(relatedTarget) {
265
+ };
266
+
267
+ FloatingLabel.prototype.focusin = function focusin(relatedTarget) {
73
268
  $(relatedTarget).addClass(ClassName.IS_FOCUSED);
74
- }
75
- }, {
76
- key: 'focusout',
77
- value: function focusout(relatedTarget) {
269
+ };
270
+
271
+ FloatingLabel.prototype.focusout = function focusout(relatedTarget) {
78
272
  $(relatedTarget).removeClass(ClassName.IS_FOCUSED);
79
- }
80
- }], [{
81
- key: '_jQueryInterface',
82
- value: function _jQueryInterface(event) {
273
+ };
274
+
275
+ FloatingLabel._jQueryInterface = function _jQueryInterface(event) {
83
276
  return this.each(function () {
84
- var data = $(this).data(DATA_KEY);
85
277
  var _event = event ? event : 'change';
278
+ var data = $(this).data(DATA_KEY);
86
279
 
87
280
  if (!data) {
88
281
  data = new FloatingLabel(this);
@@ -97,96 +290,94 @@ var FloatingLabel = function ($) {
97
290
  data[_event]($(this).closest(Selector.DATA_PARENT));
98
291
  }
99
292
  });
100
- }
101
- }]);
293
+ };
294
+
295
+ return FloatingLabel;
296
+ }();
297
+
298
+ $(document).on(Event.CHANGE + ' ' + Event.FOCUSIN + ' ' + Event.FOCUSOUT, Selector.DATA_TOGGLE, function (event) {
299
+ FloatingLabel._jQueryInterface.call($(this), event.type);
300
+ });
301
+
302
+ $.fn[NAME] = FloatingLabel._jQueryInterface;
303
+ $.fn[NAME].Constructor = FloatingLabel;
304
+ $.fn[NAME].noConflict = function () {
305
+ $.fn[NAME] = NO_CONFLICT;
306
+ return FloatingLabel._jQueryInterface;
307
+ };
102
308
 
103
309
  return FloatingLabel;
104
- }();
310
+ }(jQuery);
311
+
312
+ /*
313
+ * navigation drawer
314
+ * based on bootstrap's (v4.0.0-beta) modal.js
315
+ */
316
+
317
+ var NavDrawer = function ($) {
318
+
319
+ // constants >>>
320
+ var DATA_API_KEY = '.data-api';
321
+ var DATA_KEY = 'md.navdrawer';
322
+ var ESCAPE_KEYCODE = 27;
323
+ var EVENT_KEY = '.' + DATA_KEY;
324
+ var NAME = 'navdrawer';
325
+ var NO_CONFLICT = $.fn[NAME];
326
+ var TRANSITION_DURATION = 292.5;
327
+ var TRANSITION_DURATION_BACKDROP = 487.5;
328
+
329
+ var ClassName = {
330
+ BACKDROP: 'navdrawer-backdrop',
331
+ OPEN: 'navdrawer-open',
332
+ SHOW: 'show'
333
+ };
105
334
 
106
- $(document).on(Event.CHANGE + ' ' + Event.FOCUSIN + ' ' + Event.FOCUSOUT, Selector.DATA_TOGGLE, function (event) {
107
- var data = $(this).data(DATA_KEY);
335
+ var Default = {
336
+ breakpoint: 1280,
337
+ keyboard: true,
338
+ show: true,
339
+ type: 'default'
340
+ };
108
341
 
109
- FloatingLabel._jQueryInterface.call($(this), event.type);
110
- });
342
+ var DefaultType = {
343
+ keyboard: 'boolean',
344
+ show: 'boolean',
345
+ type: 'string'
346
+ };
111
347
 
112
- $.fn[NAME] = FloatingLabel._jQueryInterface;
113
- $.fn[NAME].Constructor = FloatingLabel;
114
- $.fn[NAME].noConflict = function () {
115
- $.fn[NAME] = NO_CONFLICT;
116
- return FloatingLabel._jQueryInterface;
117
- };
348
+ var Event = {
349
+ CLICK_DATA_API: 'click' + EVENT_KEY + DATA_API_KEY,
350
+ CLICK_DISMISS: 'click.dismiss' + EVENT_KEY,
351
+ FOCUSIN: 'focusin' + EVENT_KEY,
352
+ HIDDEN: 'hidden' + EVENT_KEY,
353
+ HIDE: 'hide' + EVENT_KEY,
354
+ KEYDOWN_DISMISS: 'keydown.dismiss' + EVENT_KEY,
355
+ MOUSEDOWN_DISMISS: 'mousedown.dismiss' + EVENT_KEY,
356
+ MOUSEUP_DISMISS: 'mouseup.dismiss' + EVENT_KEY,
357
+ SHOW: 'show' + EVENT_KEY,
358
+ SHOWN: 'shown' + EVENT_KEY
359
+ };
118
360
 
119
- return FloatingLabel;
120
- }(jQuery);
361
+ var Selector = {
362
+ CONTENT: '.navdrawer-content',
363
+ DATA_DISMISS: '[data-dismiss="navdrawer"]',
364
+ DATA_TOGGLE: '[data-toggle="navdrawer"]'
365
+ };
366
+ // <<< constants
121
367
 
122
- /*!
123
- * navigation drawer
124
- * based on bootstrap's (v4.0.0-alpha.6) modal.js
125
- */
126
- var NavDrawer = function ($) {
127
- // constants >>>
128
- var DATA_API_KEY = '.data-api';
129
- var DATA_KEY = 'md.navdrawer';
130
- var EVENT_KEY = '.' + DATA_KEY;
131
- var NAME = 'navdrawer';
132
- var NO_CONFLICT = $.fn[NAME];
133
- var TRANSITION_DURATION = 375;
134
- var TRANSITION_DURATION_BACKDROP = 225;
135
-
136
- var ClassName = {
137
- BACKDROP: 'navdrawer-backdrop',
138
- OPEN: 'navdrawer-open',
139
- SHOW: 'show'
140
- };
141
-
142
- var Default = {
143
- breakpoint: 1280,
144
- keyboard: true,
145
- show: true,
146
- type: 'default'
147
- };
148
-
149
- var DefaultType = {
150
- keyboard: 'boolean',
151
- show: 'boolean',
152
- type: 'string'
153
- };
154
-
155
- var Event = {
156
- CLICK_DATA_API: 'click' + EVENT_KEY + DATA_API_KEY,
157
- CLICK_DISMISS: 'click.dismiss' + EVENT_KEY,
158
- FOCUSIN: 'focusin' + EVENT_KEY,
159
- HIDDEN: 'hidden' + EVENT_KEY,
160
- HIDE: 'hide' + EVENT_KEY,
161
- KEYDOWN_DISMISS: 'keydown.dismiss' + EVENT_KEY,
162
- MOUSEDOWN_DISMISS: 'mousedown.dismiss' + EVENT_KEY,
163
- MOUSEUP_DISMISS: 'mouseup.dismiss' + EVENT_KEY,
164
- SHOW: 'show' + EVENT_KEY,
165
- SHOWN: 'shown' + EVENT_KEY
166
- };
167
-
168
- var Selector = {
169
- CONTENT: '.navdrawer-content',
170
- DATA_DISMISS: '[data-dismiss="navdrawer"]',
171
- DATA_TOGGLE: '[data-toggle="navdrawer"]'
172
- };
173
- // <<< constants
174
-
175
- var NavDrawer = function () {
176
- function NavDrawer(element, config) {
177
- _classCallCheck(this, NavDrawer);
178
-
179
- this._backdrop = null;
180
- this._config = this._getConfig(config);
181
- this._content = $(element).find(Selector.CONTENT)[0];
182
- this._element = element;
183
- this._ignoreBackdropClick = false;
184
- this._isShown = false;
185
- }
368
+ var NavDrawer = function () {
369
+ function NavDrawer(element, config) {
370
+ _classCallCheck(this, NavDrawer);
371
+
372
+ this._backdrop = null;
373
+ this._config = this._getConfig(config);
374
+ this._content = $(element).find(Selector.CONTENT)[0];
375
+ this._element = element;
376
+ this._ignoreBackdropClick = false;
377
+ this._isShown = false;
378
+ }
186
379
 
187
- _createClass(NavDrawer, [{
188
- key: 'hide',
189
- value: function hide(event) {
380
+ NavDrawer.prototype.hide = function hide(event) {
190
381
  if (event) {
191
382
  event.preventDefault();
192
383
  }
@@ -207,15 +398,10 @@ var NavDrawer = function ($) {
207
398
 
208
399
  $(this._element).off(Event.CLICK_DISMISS).removeClass(ClassName.SHOW);
209
400
 
210
- if (Util.supportsTransitionEnd()) {
211
- $(this._element).one(Util.TRANSITION_END, $.proxy(this._hideNavdrawer, this, hideClassName)).emulateTransitionEnd(TRANSITION_DURATION);
212
- } else {
213
- this._hideNavdrawer();
214
- }
215
- }
216
- }, {
217
- key: 'show',
218
- value: function show(relatedTarget) {
401
+ this._hideNavdrawer(hideClassName);
402
+ };
403
+
404
+ NavDrawer.prototype.show = function show(relatedTarget) {
219
405
  var _this = this;
220
406
 
221
407
  var showEvent = $.Event(Event.SHOW, {
@@ -242,16 +428,15 @@ var NavDrawer = function ($) {
242
428
  });
243
429
  });
244
430
 
245
- this._showBackdrop($.proxy(this._showElement, this, relatedTarget));
246
- }
247
- }, {
248
- key: 'toggle',
249
- value: function toggle(relatedTarget) {
431
+ this._showBackdrop();
432
+ this._showElement(relatedTarget);
433
+ };
434
+
435
+ NavDrawer.prototype.toggle = function toggle(relatedTarget) {
250
436
  return this._isShown ? this.hide() : this.show(relatedTarget);
251
- }
252
- }, {
253
- key: '_enforceFocus',
254
- value: function _enforceFocus() {
437
+ };
438
+
439
+ NavDrawer.prototype._enforceFocus = function _enforceFocus() {
255
440
  var _this2 = this;
256
441
 
257
442
  $(document).off(Event.FOCUSIN).on(Event.FOCUSIN, function (event) {
@@ -261,52 +446,49 @@ var NavDrawer = function ($) {
261
446
  }
262
447
  }
263
448
  });
264
- }
265
- }, {
266
- key: '_getConfig',
267
- value: function _getConfig(config) {
449
+ };
450
+
451
+ NavDrawer.prototype._getConfig = function _getConfig(config) {
268
452
  config = $.extend({}, Default, config);
269
453
  Util.typeCheckConfig(NAME, config, DefaultType);
270
454
  return config;
271
- }
272
- }, {
273
- key: '_hideNavdrawer',
274
- value: function _hideNavdrawer(className) {
275
- var _this3 = this;
455
+ };
276
456
 
277
- this._element.style.display = 'none';
457
+ NavDrawer.prototype._hideNavdrawer = function _hideNavdrawer(className) {
458
+ var _this3 = this;
278
459
 
279
460
  this._showBackdrop(function () {
280
461
  $(document.body).removeClass(className);
462
+
463
+ _this3._element.setAttribute('aria-hidden', 'true');
464
+ _this3._element.style.display = 'none';
465
+
281
466
  $(_this3._element).trigger(Event.HIDDEN);
282
467
  });
283
- }
284
- }, {
285
- key: '_removeBackdrop',
286
- value: function _removeBackdrop() {
468
+ };
469
+
470
+ NavDrawer.prototype._removeBackdrop = function _removeBackdrop() {
287
471
  if (this._backdrop) {
288
472
  $(this._backdrop).remove();
289
473
  this._backdrop = null;
290
474
  }
291
- }
292
- }, {
293
- key: '_setEscapeEvent',
294
- value: function _setEscapeEvent() {
475
+ };
476
+
477
+ NavDrawer.prototype._setEscapeEvent = function _setEscapeEvent() {
295
478
  var _this4 = this;
296
479
 
297
480
  if (this._isShown && this._config.keyboard) {
298
481
  $(this._element).on(Event.KEYDOWN_DISMISS, function (event) {
299
- if (event.which === 27) {
482
+ if (event.which === ESCAPE_KEYCODE) {
300
483
  _this4.hide();
301
484
  }
302
485
  });
303
486
  } else if (!this._isShown) {
304
487
  $(this._element).off(Event.KEYDOWN_DISMISS);
305
488
  }
306
- }
307
- }, {
308
- key: '_showBackdrop',
309
- value: function _showBackdrop(callback) {
489
+ };
490
+
491
+ NavDrawer.prototype._showBackdrop = function _showBackdrop(callback) {
310
492
  var _this5 = this;
311
493
 
312
494
  var supportsTransition = Util.supportsTransitionEnd();
@@ -364,10 +546,9 @@ var NavDrawer = function ($) {
364
546
  } else if (callback) {
365
547
  callback();
366
548
  }
367
- }
368
- }, {
369
- key: '_showElement',
370
- value: function _showElement(relatedTarget) {
549
+ };
550
+
551
+ NavDrawer.prototype._showElement = function _showElement(relatedTarget) {
371
552
  var _this6 = this;
372
553
 
373
554
  var supportsTransition = Util.supportsTransitionEnd();
@@ -376,6 +557,7 @@ var NavDrawer = function ($) {
376
557
  document.body.appendChild(this._element);
377
558
  }
378
559
 
560
+ this._element.removeAttribute('aria-hidden');
379
561
  this._element.style.display = 'block';
380
562
 
381
563
  if (supportsTransition) {
@@ -399,14 +581,14 @@ var NavDrawer = function ($) {
399
581
  } else {
400
582
  transitionComplete();
401
583
  }
402
- }
403
- }], [{
404
- key: '_jQueryInterface',
405
- value: function _jQueryInterface(config, relatedTarget) {
584
+ };
585
+
586
+ NavDrawer._jQueryInterface = function _jQueryInterface(config, relatedTarget) {
406
587
  return this.each(function () {
407
- var data = $(this).data(DATA_KEY);
408
588
  var _config = $.extend({}, NavDrawer.Default, $(this).data(), (typeof config === 'undefined' ? 'undefined' : _typeof(config)) === 'object' && config);
409
589
 
590
+ var data = $(this).data(DATA_KEY);
591
+
410
592
  if (!data) {
411
593
  data = new NavDrawer(this, _config);
412
594
  $(this).data(DATA_KEY, data);
@@ -422,132 +604,176 @@ var NavDrawer = function ($) {
422
604
  data.show(relatedTarget);
423
605
  }
424
606
  });
425
- }
426
- }, {
427
- key: 'Default',
428
- get: function get() {
429
- return Default;
430
- }
431
- }]);
607
+ };
432
608
 
433
- return NavDrawer;
434
- }();
609
+ _createClass(NavDrawer, null, [{
610
+ key: 'Default',
611
+ get: function get() {
612
+ return Default;
613
+ }
614
+ }]);
435
615
 
436
- $(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) {
437
- var _this7 = this;
616
+ return NavDrawer;
617
+ }();
438
618
 
439
- var selector = Util.getSelectorFromElement(this);
440
- var target = void 0;
619
+ $(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) {
620
+ var _this7 = this;
441
621
 
442
- if (selector) {
443
- target = $(selector)[0];
444
- }
622
+ var selector = Util.getSelectorFromElement(this);
623
+ var target = void 0;
445
624
 
446
- var config = $(target).data(DATA_KEY) ? 'toggle' : $.extend({}, $(target).data(), $(this).data());
625
+ if (selector) {
626
+ target = $(selector)[0];
627
+ }
447
628
 
448
- if (this.tagName === 'A') {
449
- event.preventDefault();
450
- }
629
+ var config = $(target).data(DATA_KEY) ? 'toggle' : $.extend({}, $(target).data(), $(this).data());
451
630
 
452
- var $target = $(target).one(Event.SHOW, function (showEvent) {
453
- if (showEvent.isDefaultPrevented()) {
454
- return;
631
+ if (this.tagName === 'A') {
632
+ event.preventDefault();
455
633
  }
456
634
 
457
- $target.one(Event.HIDDEN, function () {
458
- if ($(_this7).is(':visible')) {
459
- _this7.focus();
635
+ var $target = $(target).one(Event.SHOW, function (showEvent) {
636
+ if (showEvent.isDefaultPrevented()) {
637
+ return;
460
638
  }
639
+
640
+ $target.one(Event.HIDDEN, function () {
641
+ if ($(_this7).is(':visible')) {
642
+ _this7.focus();
643
+ }
644
+ });
461
645
  });
646
+
647
+ NavDrawer._jQueryInterface.call($(target), config, this);
462
648
  });
463
649
 
464
- NavDrawer._jQueryInterface.call($(target), config, this);
465
- });
650
+ $.fn[NAME] = NavDrawer._jQueryInterface;
651
+ $.fn[NAME].Constructor = NavDrawer;
652
+ $.fn[NAME].noConflict = function () {
653
+ $.fn[NAME] = NO_CONFLICT;
654
+ return NavDrawer._jQueryInterface;
655
+ };
466
656
 
467
- $.fn[NAME] = NavDrawer._jQueryInterface;
468
- $.fn[NAME].Constructor = NavDrawer;
469
- $.fn[NAME].noConflict = function () {
470
- $.fn[NAME] = NO_CONFLICT;
471
- return NavDrawer._jQueryInterface;
472
- };
657
+ return NavDrawer;
658
+ }(jQuery);
473
659
 
474
- return NavDrawer;
475
- }(jQuery);
660
+ /*
661
+ * selection control focus:
662
+ * chrome persists the focus style on checkboxes/radio buttons
663
+ * after clicking with the mouse
664
+ */
476
665
 
477
- /*!
478
- * tab indicator animation
479
- * requires bootstrap's (v4.0.0-alpha.6) tab.js
480
- */
481
- var TabSwitch = function ($) {
482
- // constants >>>
483
- var DATA_KEY = 'md.tabswitch';
484
- var NAME = 'tabswitch';
485
- var NO_CONFLICT = $.fn[NAME];
486
- var TRANSITION_DURATION = 300;
487
-
488
- var ClassName = {
489
- ANIMATE: 'animate',
490
- INDICATOR: 'nav-tabs-indicator',
491
- MATERIAL: 'nav-tabs-material',
492
- SCROLLABLE: 'nav-tabs-scrollable',
493
- SHOW: 'show'
494
- };
495
-
496
- var Event = {
497
- SHOW_BS_TAB: 'show.bs.tab'
498
- };
499
-
500
- var Selector = {
501
- DATA_TOGGLE: '.nav-tabs [data-toggle="tab"]',
502
- NAV: '.nav-tabs',
503
- NAV_ITEM: '.nav-item'
504
- };
505
- // <<< constants
506
-
507
- var TabSwitch = function () {
508
- function TabSwitch(nav) {
509
- _classCallCheck(this, TabSwitch);
510
-
511
- if (typeof $.fn.tab === 'undefined') {
512
- throw new Error('Material\'s JavaScript requires Bootstrap\'s tab.js');
513
- };
666
+ var ControlFocus = function ($) {
514
667
 
515
- this._nav = nav;
516
- this._navindicator = null;
517
- }
668
+ // constants >>>
669
+ var DATA_KEY = 'md.controlfocus';
670
+ var EVENT_KEY = '.' + DATA_KEY;
518
671
 
519
- _createClass(TabSwitch, [{
520
- key: 'switch',
521
- value: function _switch(element, relatedTarget) {
522
- var _this8 = this;
672
+ var ClassName = {
673
+ FOCUS: 'focus'
674
+ };
523
675
 
524
- var supportsTransition = Util.supportsTransitionEnd();
676
+ var LastInteraction = {
677
+ IS_MOUSEDOWN: false
678
+ };
525
679
 
526
- if (!this._navindicator) {
527
- this._createIndicator();
680
+ var Event = {
681
+ BLUR: 'blur' + EVENT_KEY,
682
+ FOCUS: 'focus' + EVENT_KEY,
683
+ MOUSEDOWN: 'mousedown' + EVENT_KEY,
684
+ MOUSEUP: 'mouseup' + EVENT_KEY
685
+ };
686
+
687
+ var Selector = {
688
+ CONTROL: '.custom-control',
689
+ INPUT: '.custom-control-input'
690
+ };
691
+ // <<< constants
692
+
693
+ $(document).on('' + Event.BLUR, Selector.INPUT, function (event) {
694
+ $(event.target).removeClass(ClassName.FOCUS);
695
+ }).on('' + Event.FOCUS, Selector.INPUT, function (event) {
696
+ if (LastInteraction.IS_MOUSEDOWN === false) {
697
+ $(event.target).addClass(ClassName.FOCUS);
698
+ }
699
+ }).on('' + Event.MOUSEDOWN, Selector.CONTROL, function () {
700
+ LastInteraction.IS_MOUSEDOWN = true;
701
+ }).on('' + Event.MOUSEUP, Selector.CONTROL, function () {
702
+ setTimeout(function () {
703
+ LastInteraction.IS_MOUSEDOWN = false;
704
+ }, 1);
705
+ });
706
+ }(jQuery);
707
+
708
+ /*
709
+ * tab indicator animation
710
+ * requires bootstrap's (v4.0.0-beta) tab.js
711
+ */
712
+
713
+ var TabSwitch = function ($) {
714
+
715
+ // constants >>>
716
+ var DATA_KEY = 'md.tabswitch';
717
+ var NAME = 'tabswitch';
718
+ var NO_CONFLICT = $.fn[NAME];
719
+ var TRANSITION_DURATION = 390;
720
+
721
+ var ClassName = {
722
+ ANIMATE: 'animate',
723
+ DROPDOWN_ITEM: 'dropdown-item',
724
+ INDICATOR: 'nav-tabs-indicator',
725
+ MATERIAL: 'nav-tabs-material',
726
+ SCROLLABLE: 'nav-tabs-scrollable',
727
+ SHOW: 'show'
728
+ };
729
+
730
+ var Event = {
731
+ SHOW_BS_TAB: 'show.bs.tab'
732
+ };
733
+
734
+ var Selector = {
735
+ DATA_TOGGLE: '.nav-tabs [data-toggle="tab"]',
736
+ DROPDOWN: '.dropdown',
737
+ NAV: '.nav-tabs'
738
+ };
739
+ // <<< constants
740
+
741
+ var TabSwitch = function () {
742
+ function TabSwitch(nav) {
743
+ _classCallCheck(this, TabSwitch);
744
+
745
+ if (typeof $.fn.tab === 'undefined') {
746
+ throw new Error('Material\'s JavaScript requires Bootstrap\'s tab.js');
528
747
  }
529
748
 
530
- var elLeft = $(element).closest(Selector.NAV_ITEM).offset().left;
531
- var elWidth = $(element).closest(Selector.NAV_ITEM).outerWidth();
749
+ this._nav = nav;
750
+ this._navindicator = null;
751
+ }
752
+
753
+ TabSwitch.prototype.switch = function _switch(element, relatedTarget) {
754
+ var _this8 = this;
755
+
532
756
  var navLeft = $(this._nav).offset().left;
533
757
  var navScrollLeft = $(this._nav).scrollLeft();
534
758
  var navWidth = $(this._nav).outerWidth();
759
+ var supportsTransition = Util.supportsTransitionEnd();
535
760
 
536
- if (relatedTarget !== undefined) {
537
- var relatedLeft = $(relatedTarget).closest(Selector.NAV_ITEM).offset().left;
538
- var relatedWidth = $(relatedTarget).closest(Selector.NAV_ITEM).outerWidth();
761
+ if (!this._navindicator) {
762
+ this._createIndicator(navLeft, navScrollLeft, navWidth, relatedTarget);
763
+ }
539
764
 
540
- $(this._navindicator).css({
541
- left: relatedLeft + navScrollLeft - navLeft,
542
- right: navWidth - (relatedLeft + navScrollLeft - navLeft + relatedWidth)
543
- });
765
+ if ($(element).hasClass(ClassName.DROPDOWN_ITEM)) {
766
+ element = $(element).closest(Selector.DROPDOWN);
767
+ }
544
768
 
545
- $(this._navindicator).addClass(ClassName.SHOW);
546
- Util.reflow(this._navindicator);
769
+ var elLeft = $(element).offset().left;
770
+ var elWidth = $(element).outerWidth();
547
771
 
548
- if (supportsTransition) {
549
- $(this._nav).addClass(ClassName.ANIMATE);
550
- }
772
+ $(this._navindicator).addClass(ClassName.SHOW);
773
+ Util.reflow(this._navindicator);
774
+
775
+ if (supportsTransition) {
776
+ $(this._nav).addClass(ClassName.ANIMATE);
551
777
  }
552
778
 
553
779
  $(this._navindicator).css({
@@ -566,19 +792,31 @@ var TabSwitch = function ($) {
566
792
  }
567
793
 
568
794
  $(this._navindicator).one(Util.TRANSITION_END, complete).emulateTransitionEnd(TRANSITION_DURATION);
569
- }
570
- }, {
571
- key: '_createIndicator',
572
- value: function _createIndicator() {
795
+ };
796
+
797
+ TabSwitch.prototype._createIndicator = function _createIndicator(navLeft, navScrollLeft, navWidth, relatedTarget) {
573
798
  this._navindicator = document.createElement('div');
574
799
 
575
800
  $(this._navindicator).addClass(ClassName.INDICATOR).appendTo(this._nav);
576
801
 
802
+ if (relatedTarget !== undefined) {
803
+ if ($(relatedTarget).hasClass(ClassName.DROPDOWN_ITEM)) {
804
+ relatedTarget = $(relatedTarget).closest(Selector.DROPDOWN);
805
+ }
806
+
807
+ var relatedLeft = $(relatedTarget).offset().left;
808
+ var relatedWidth = $(relatedTarget).outerWidth();
809
+
810
+ $(this._navindicator).css({
811
+ left: relatedLeft + navScrollLeft - navLeft,
812
+ right: navWidth - (relatedLeft + navScrollLeft - navLeft + relatedWidth)
813
+ });
814
+ }
815
+
577
816
  $(this._nav).addClass(ClassName.MATERIAL);
578
- }
579
- }], [{
580
- key: '_jQueryInterface',
581
- value: function _jQueryInterface(relatedTarget) {
817
+ };
818
+
819
+ TabSwitch._jQueryInterface = function _jQueryInterface(relatedTarget) {
582
820
  return this.each(function () {
583
821
  var nav = $(this).closest(Selector.NAV)[0];
584
822
 
@@ -595,157 +833,156 @@ var TabSwitch = function ($) {
595
833
 
596
834
  data.switch(this, relatedTarget);
597
835
  });
598
- }
599
- }]);
836
+ };
600
837
 
601
- return TabSwitch;
602
- }();
838
+ return TabSwitch;
839
+ }();
603
840
 
604
- $(document).on(Event.SHOW_BS_TAB, Selector.DATA_TOGGLE, function (event) {
605
- TabSwitch._jQueryInterface.call($(event.target), event.relatedTarget);
606
- });
841
+ $(document).on(Event.SHOW_BS_TAB, Selector.DATA_TOGGLE, function (event) {
842
+ TabSwitch._jQueryInterface.call($(event.target), event.relatedTarget);
843
+ });
607
844
 
608
- $.fn[NAME] = TabSwitch._jQueryInterface;
609
- $.fn[NAME].Constructor = TabSwitch;
610
- $.fn[NAME].noConflict = function () {
611
- $.fn[NAME] = NO_CONFLICT;
612
- return TabSwitch._jQueryInterface;
613
- };
845
+ $.fn[NAME] = TabSwitch._jQueryInterface;
846
+ $.fn[NAME].Constructor = TabSwitch;
847
+ $.fn[NAME].noConflict = function () {
848
+ $.fn[NAME] = NO_CONFLICT;
849
+ return TabSwitch._jQueryInterface;
850
+ };
614
851
 
615
- return TabSwitch;
616
- }(jQuery);
852
+ return TabSwitch;
853
+ }(jQuery);
617
854
 
618
- /*!
619
- * global util js
620
- * based on bootstrap's (v4.0.0-alpha.6) util.js
621
- */
622
- var Util = function ($) {
623
- var transition = false;
624
-
625
- var TransitionEndEvent = {
626
- WebkitTransition: 'webkitTransitionEnd',
627
- MozTransition: 'transitionend',
628
- OTransition: 'oTransitionEnd otransitionend',
629
- transition: 'transitionend'
630
- };
631
-
632
- function getSpecialTransitionEndEvent() {
633
- return {
634
- bindType: transition.end,
635
- delegateType: transition.end,
636
- handle: function handle(event) {
637
- if ($(event.target).is(this)) {
638
- return event.handleObj.handler.apply(this, arguments);
639
- }
640
- return undefined;
641
- }
642
- };
643
- }
855
+ /*
856
+ * global util js
857
+ * based on bootstrap's (v4.0.0-beta) util.js
858
+ */
644
859
 
645
- function isElement(obj) {
646
- return (obj[0] || obj).nodeType;
647
- }
860
+ var Util = function ($) {
648
861
 
649
- function setTransitionEndSupport() {
650
- transition = transitionEndTest();
862
+ var MAX_UID = 1000000;
863
+ var transition = false;
651
864
 
652
- $.fn.emulateTransitionEnd = transitionEndEmulator;
865
+ var TransitionEndEvent = {
866
+ WebkitTransition: 'webkitTransitionEnd',
867
+ MozTransition: 'transitionend',
868
+ OTransition: 'oTransitionEnd otransitionend',
869
+ transition: 'transitionend'
870
+ };
653
871
 
654
- if (Util.supportsTransitionEnd()) {
655
- $.event.special[Util.TRANSITION_END] = getSpecialTransitionEndEvent();
872
+ function getSpecialTransitionEndEvent() {
873
+ return {
874
+ bindType: transition.end,
875
+ delegateType: transition.end,
876
+ handle: function handle(event) {
877
+ if ($(event.target).is(this)) {
878
+ // eslint-disable-next-line prefer-rest-params
879
+ return event.handleObj.handler.apply(this, arguments);
880
+ }
881
+ return undefined;
882
+ }
883
+ };
656
884
  }
657
- }
658
885
 
659
- function toType(obj) {
660
- return {}.toString.call(obj).match(/\s([a-zA-Z]+)/)[1].toLowerCase();
661
- }
662
-
663
- function transitionEndEmulator(duration) {
664
- var _this9 = this;
886
+ function isElement(obj) {
887
+ return (obj[0] || obj).nodeType;
888
+ }
665
889
 
666
- var called = false;
890
+ function setTransitionEndSupport() {
891
+ transition = transitionEndTest();
667
892
 
668
- $(this).one(Util.TRANSITION_END, function () {
669
- called = true;
670
- });
893
+ $.fn.emulateTransitionEnd = transitionEndEmulator;
671
894
 
672
- setTimeout(function () {
673
- if (!called) {
674
- Util.triggerTransitionEnd(_this9);
895
+ if (Util.supportsTransitionEnd()) {
896
+ $.event.special[Util.TRANSITION_END] = getSpecialTransitionEndEvent();
675
897
  }
676
- }, duration);
677
-
678
- return this;
679
- }
898
+ }
680
899
 
681
- function transitionEndTest() {
682
- if (window.QUnit) {
683
- return false;
900
+ function toType(obj) {
901
+ return {}.toString.call(obj).match(/\s([a-zA-Z]+)/)[1].toLowerCase();
684
902
  }
685
903
 
686
- var el = document.createElement('material');
904
+ function transitionEndEmulator(duration) {
905
+ var _this9 = this;
687
906
 
688
- for (var name in TransitionEndEvent) {
689
- if (el.style[name] !== undefined) {
690
- return { end: TransitionEndEvent[name] };
691
- }
692
- };
907
+ var called = false;
693
908
 
694
- return false;
695
- }
909
+ $(this).one(Util.TRANSITION_END, function () {
910
+ called = true;
911
+ });
696
912
 
697
- var Util = {
698
- TRANSITION_END: 'mdTransitionEnd',
913
+ setTimeout(function () {
914
+ if (!called) {
915
+ Util.triggerTransitionEnd(_this9);
916
+ }
917
+ }, duration);
699
918
 
700
- getSelectorFromElement: function getSelectorFromElement(element) {
701
- var selector = element.getAttribute('data-target');
919
+ return this;
920
+ }
702
921
 
703
- if (!selector) {
704
- selector = element.getAttribute('href') || '';
705
- selector = /^#[a-z]/i.test(selector) ? selector : null;
922
+ function transitionEndTest() {
923
+ if (window.QUnit) {
924
+ return false;
706
925
  }
707
926
 
708
- return selector;
709
- },
710
- getUID: function getUID(prefix) {
711
- do {
712
- prefix += ~ ~(Math.random() * 1000000);
713
- } while (document.getElementById(prefix));
714
- return prefix;
715
- },
716
- reflow: function reflow(element) {
717
- new Function('md', 'return md')(element.offsetHeight);
718
- },
719
- supportsTransitionEnd: function supportsTransitionEnd() {
720
- return Boolean(transition);
721
- },
722
- triggerTransitionEnd: function triggerTransitionEnd(element) {
723
- $(element).trigger(transition.end);
724
- },
725
- typeCheckConfig: function typeCheckConfig(componentName, config, configTypes) {
726
- for (var property in configTypes) {
727
- if (configTypes.hasOwnProperty(property)) {
728
- var expectedTypes = configTypes[property];
729
- var value = config[property];
730
- var valueType = void 0;
731
-
732
- if (value && isElement(value)) {
733
- valueType = 'element';
734
- } else {
735
- valueType = toType(value);
736
- }
927
+ var el = document.createElement('material');
737
928
 
738
- if (!new RegExp(expectedTypes).test(valueType)) {
739
- throw new Error(componentName.toUpperCase() + ': ' + ('Option "' + property + '" provided type "' + valueType + '" ') + ('but expected type "' + expectedTypes + '".'));
740
- }
929
+ for (var name in TransitionEndEvent) {
930
+ if (el.style[name] !== undefined) {
931
+ return {
932
+ end: TransitionEndEvent[name]
933
+ };
741
934
  }
742
- };
935
+ }
936
+
937
+ return false;
743
938
  }
744
- };
745
939
 
746
- setTransitionEndSupport();
940
+ var Util = {
941
+ TRANSITION_END: 'mdTransitionEnd',
747
942
 
748
- return Util;
749
- }(jQuery);
943
+ getSelectorFromElement: function getSelectorFromElement(element) {
944
+ var selector = element.getAttribute('data-target');
945
+
946
+ if (!selector) {
947
+ selector = element.getAttribute('href') || '';
948
+ selector = /^#[a-z]/i.test(selector) ? selector : null;
949
+ }
950
+
951
+ return selector;
952
+ },
953
+ getUID: function getUID(prefix) {
954
+ do {
955
+ // eslint-disable-next-line no-bitwise
956
+ prefix += ~~(Math.random() * MAX_UID);
957
+ } while (document.getElementById(prefix));
958
+ return prefix;
959
+ },
960
+ reflow: function reflow(element) {
961
+ new Function('md', 'return md')(element.offsetHeight);
962
+ },
963
+ supportsTransitionEnd: function supportsTransitionEnd() {
964
+ return Boolean(transition);
965
+ },
966
+ triggerTransitionEnd: function triggerTransitionEnd(element) {
967
+ $(element).trigger(transition.end);
968
+ },
969
+ typeCheckConfig: function typeCheckConfig(componentName, config, configTypes) {
970
+ for (var property in configTypes) {
971
+ if (configTypes.hasOwnProperty(property)) {
972
+ var expectedTypes = configTypes[property];
973
+ var value = config[property];
974
+ var valueType = value && isElement(value) ? 'element' : toType(value);
975
+
976
+ if (!new RegExp(expectedTypes).test(valueType)) {
977
+ throw new Error(componentName.toUpperCase() + ': ' + ('Option "' + property + '" provided type "' + valueType + '" ') + ('but expected type "' + expectedTypes + '".'));
978
+ }
979
+ }
980
+ }
981
+ }
982
+ };
983
+
984
+ setTransitionEndSupport();
750
985
 
751
- }(jQuery);
986
+ return Util;
987
+ }(jQuery);
988
+ }();