dlegr250_material_design 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (72) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +9 -0
  3. data/.rspec +2 -0
  4. data/.travis.yml +4 -0
  5. data/Gemfile +4 -0
  6. data/README.md +66 -0
  7. data/Rakefile +6 -0
  8. data/app/controllers/styleguide_controller.rb +5 -0
  9. data/app/views/styleguide/_buttons.html.erb +79 -0
  10. data/app/views/styleguide/_menus.html.erb +189 -0
  11. data/app/views/styleguide/_navigation.html.erb +28 -0
  12. data/app/views/styleguide/index.html.erb +9 -0
  13. data/bin/console +14 -0
  14. data/bin/setup +7 -0
  15. data/dlegr250_material_design.gemspec +34 -0
  16. data/lib/dlegr250_material_design.rb +6 -0
  17. data/lib/dlegr250_material_design/version.rb +3 -0
  18. data/vendor/assets/javascripts/base/init.js.coffee +14 -0
  19. data/vendor/assets/javascripts/components/dialog.coffee +54 -0
  20. data/vendor/assets/javascripts/components/forms.coffee +17 -0
  21. data/vendor/assets/javascripts/components/layout.coffee +76 -0
  22. data/vendor/assets/javascripts/components/menus.coffee +87 -0
  23. data/vendor/assets/javascripts/components/snackbar_handler.coffee +8 -0
  24. data/vendor/assets/javascripts/components/tabs.coffee +18 -0
  25. data/vendor/assets/javascripts/components/utility.coffee +8 -0
  26. data/vendor/assets/javascripts/dlegr250_material_design.js +20 -0
  27. data/vendor/assets/javascripts/extensions/coffeescript.js.coffee +9 -0
  28. data/vendor/assets/javascripts/extensions/jquery.js.coffee +30 -0
  29. data/vendor/assets/javascripts/third_party/hammer.min.js +7 -0
  30. data/vendor/assets/javascripts/third_party/handlebars.latest.js +4454 -0
  31. data/vendor/assets/javascripts/third_party/jquery.hammer.js +33 -0
  32. data/vendor/assets/javascripts/third_party/snackbarlight.js +218 -0
  33. data/vendor/assets/stylesheets/base/base.scss +73 -0
  34. data/vendor/assets/stylesheets/base/global_classes.scss +261 -0
  35. data/vendor/assets/stylesheets/base/mixins.scss +202 -0
  36. data/vendor/assets/stylesheets/base/normalize.scss +229 -0
  37. data/vendor/assets/stylesheets/base/variables.scss +177 -0
  38. data/vendor/assets/stylesheets/components/badges.scss +28 -0
  39. data/vendor/assets/stylesheets/components/blank_slates.scss +58 -0
  40. data/vendor/assets/stylesheets/components/boxes.scss +34 -0
  41. data/vendor/assets/stylesheets/components/buttons.scss +225 -0
  42. data/vendor/assets/stylesheets/components/cards.scss +110 -0
  43. data/vendor/assets/stylesheets/components/code.scss +13 -0
  44. data/vendor/assets/stylesheets/components/dialogs.scss +57 -0
  45. data/vendor/assets/stylesheets/components/dividers.scss +35 -0
  46. data/vendor/assets/stylesheets/components/forms/error_messages.scss +27 -0
  47. data/vendor/assets/stylesheets/components/forms/fields.scss +56 -0
  48. data/vendor/assets/stylesheets/components/forms/labels.scss +17 -0
  49. data/vendor/assets/stylesheets/components/forms/radios.scss +90 -0
  50. data/vendor/assets/stylesheets/components/forms/selects.scss +15 -0
  51. data/vendor/assets/stylesheets/components/forms/text_fields.scss +38 -0
  52. data/vendor/assets/stylesheets/components/forms/toggles.scss +70 -0
  53. data/vendor/assets/stylesheets/components/lists.scss +242 -0
  54. data/vendor/assets/stylesheets/components/menus.scss +164 -0
  55. data/vendor/assets/stylesheets/components/overlay.scss +27 -0
  56. data/vendor/assets/stylesheets/components/snackbarlight.scss +77 -0
  57. data/vendor/assets/stylesheets/components/spinners.scss +67 -0
  58. data/vendor/assets/stylesheets/components/tabs.scss +62 -0
  59. data/vendor/assets/stylesheets/components/tooltips.scss +75 -0
  60. data/vendor/assets/stylesheets/dlegr250_material_design.scss +47 -0
  61. data/vendor/assets/stylesheets/fonts/material_design_iconic_font.scss +5168 -0
  62. data/vendor/assets/stylesheets/fonts/material_design_iconic_font/Material-Design-Iconic-Font.eot +0 -0
  63. data/vendor/assets/stylesheets/fonts/material_design_iconic_font/Material-Design-Iconic-Font.svg +787 -0
  64. data/vendor/assets/stylesheets/fonts/material_design_iconic_font/Material-Design-Iconic-Font.ttf +0 -0
  65. data/vendor/assets/stylesheets/fonts/material_design_iconic_font/Material-Design-Iconic-Font.woff +0 -0
  66. data/vendor/assets/stylesheets/fonts/material_design_iconic_font/Material-Design-Iconic-Font.woff2 +0 -0
  67. data/vendor/assets/stylesheets/layouts/application/appbar.scss +93 -0
  68. data/vendor/assets/stylesheets/layouts/application/base.scss +27 -0
  69. data/vendor/assets/stylesheets/layouts/application/main.scss +26 -0
  70. data/vendor/assets/stylesheets/layouts/application/sidebars.scss +85 -0
  71. data/vendor/assets/stylesheets/layouts/authentication/base.scss +53 -0
  72. metadata +155 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 6af852b75686863498ffbb7ffc138156cd05d67a
4
+ data.tar.gz: 790aeb973b5c6677ebf80347000c379a47e01895
5
+ SHA512:
6
+ metadata.gz: 04cac0c39ab283e9d16f5d45641eb33d2129b0ab8aa86621afca28133d3d9ab7e25c52112817d996d2020115b2a0e4dc12c36097fa6bcbe476a25d141aec89bb
7
+ data.tar.gz: 44a68e755a9449c2a405cd22d0857eac6aa4be2de0992962decb008cc3ddff36a54131f84210bc7f3ea070147c0e6791904ff943a66b726eaa44a74f8b82b0c7
data/.gitignore ADDED
@@ -0,0 +1,9 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /Gemfile.lock
4
+ /_yardoc/
5
+ /coverage/
6
+ /doc/
7
+ /pkg/
8
+ /spec/reports/
9
+ /tmp/
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --format documentation
2
+ --color
data/.travis.yml ADDED
@@ -0,0 +1,4 @@
1
+ language: ruby
2
+ rvm:
3
+ - 2.2.3
4
+ before_install: gem install bundler -v 1.10.6
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in dlegr250_material_design.gemspec
4
+ gemspec
data/README.md ADDED
@@ -0,0 +1,66 @@
1
+ # BIG WARNING: as of 2016-02-11 15:00
2
+
3
+ This is Alpha code that will change rapidly throughout 2016 as I work on it. Do not use this in a production system until it has reached a stable 1.0.0 version (sometime later in 2016).
4
+
5
+ # Dlegr250MaterialDesign
6
+
7
+ This is a custom implementation of the [Google Material Design Spec](http://www.google.com/design/spec/material-design/introduction.html).
8
+
9
+ It is built from the ground-up trying to use best practices but is still a work-in-progress. I extracted this code to a gem so I could use it in several projects simultaneously without updating code in each of them.
10
+
11
+ It is only engineered to support the latest browser versions that auto-update. Basically that means Internet Explorer 10+ and Edge, because all other major browsers already auto-update and usually follow the specs set forth for `CSS`.
12
+
13
+ ## Installation
14
+
15
+ Add this line to your application's `Gemfile`:
16
+
17
+ ```ruby
18
+ gem 'dlegr250_material_design'
19
+ ```
20
+
21
+ And then execute:
22
+
23
+ $ bundle
24
+
25
+ Or install it yourself as:
26
+
27
+ $ gem install dlegr250_material_design
28
+
29
+ ## Usage
30
+
31
+ Add this line to your application's `app/assets/javascripts/application.js`:
32
+
33
+ ```js
34
+ //= require dlegr250_material_design
35
+ ```
36
+
37
+ Add this line to your application's `app/assets/stylesheets/application.scss`:
38
+
39
+ ```css
40
+ @import "dlegr250_material_design";
41
+ ```
42
+
43
+ Note that this assumes you renamed the default `application.css` to `application.SCSS` to utilize SASS/SCSS.
44
+
45
+ Using the `.scss` extension lets you control the order in which files are loaded/imported, which is a very good thing. This lets you use variables later on that were defined once in a previous file.
46
+
47
+ If you aren't using `.scss` extensions on all your stylesheets, you're doing it wrong ;)p
48
+
49
+ ## Todo
50
+
51
+ * Finalize components that will be implemented
52
+ * Cleanup all stylesheets and remove unused styles
53
+ * Cleanup all JS/Coffee and use a global `App` object instead of `window`
54
+ * Implement simple way to config application-specific default values for styles
55
+ * Test in major browser versions and mobile devices
56
+ * Update JS/CoffeeScript to use ES6 when that becomes mainstream, and IF the Rails Core is going to adopt ES6 as a standard; this gem is more about building Rails applications than using a specific JavaScript implementation
57
+
58
+ ## Development
59
+
60
+ After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
61
+
62
+ To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
63
+
64
+ ## Contributing
65
+
66
+ Bug reports and pull requests are welcome on GitHub at https://github.com/dlegr250/dlegr250_material_design.
data/Rakefile ADDED
@@ -0,0 +1,6 @@
1
+ require "bundler/gem_tasks"
2
+ require "rspec/core/rake_task"
3
+
4
+ RSpec::Core::RakeTask.new(:spec)
5
+
6
+ task :default => :spec
@@ -0,0 +1,5 @@
1
+ class StyleguideController < ApplicationController
2
+ def index
3
+ # NOOP - page to demo interface
4
+ end
5
+ end
@@ -0,0 +1,79 @@
1
+ <div class="card full-width" id="buttons">
2
+ <header>
3
+ <div class="card-title">Buttons</div>
4
+ </header>
5
+ <div class="card-content">
6
+ All buttons use the base <code>.button</code> class.
7
+ It can be applied to any HTML element.
8
+ They can have various colors applied to them.
9
+
10
+ <hr class="spacer" />
11
+
12
+ <div class="card full-width" id="buttons-raised">
13
+ <header>
14
+ <div class="card-title">Raised</div>
15
+ <div class="card-subtitle">
16
+ <code>.button .button-raised-{COLOR} [.button-dense .button-large]</code>
17
+ </div>
18
+ </header>
19
+ <div class="card-content">
20
+ <div class="button button-raised-blue button-dense">Dense</div>
21
+ <div class="button button-raised-blue">Normal</div>
22
+ <div class="button button-raised-red button-large">Large</div>
23
+ </div>
24
+ </div>
25
+
26
+ <hr class="spacer" />
27
+
28
+ <div class="card full-width" id="buttons-flat">
29
+ <header>
30
+ <div class="card-title">Flat</div>
31
+ <div class="card-subtitle">
32
+ <code>.button .button-flat-{COLOR} [.button-dense .button-large]</code>
33
+ </div>
34
+ </header>
35
+ <div class="card-content">
36
+ <div class="button button-flat-blue button-dense">Dense</div>
37
+ <div class="button button-flat-blue">Normal</div>
38
+ <div class="button button-flat-red button-large">Large</div>
39
+ </div>
40
+ </div>
41
+
42
+ <hr class="spacer" />
43
+
44
+ <div class="card full-width" id="buttons-outline">
45
+ <header>
46
+ <div class="card-title">Outline</div>
47
+ <div class="card-subtitle">
48
+ <code>.button .button-outline-{COLOR} [.button-dense .button-large]</code>
49
+ </div>
50
+ </header>
51
+ <div class="card-content">
52
+ <div class="button button-outline-blue button-dense">Dense</div>
53
+ <div class="button button-outline-blue">Normal</div>
54
+ <div class="button button-outline-red button-large">Large</div>
55
+ </div>
56
+ </div>
57
+
58
+ <hr class="spacer" />
59
+
60
+ <div class="card full-width" id="buttons-icon">
61
+ <header>
62
+ <div class="card-title">Icon</div>
63
+ <div class="card-subtitle">
64
+ Does not support size classes yet.
65
+ Using without any color classes leaves a simple icon without a colored background
66
+ but the same dimensions and hover as colored icons.
67
+ </div>
68
+ <div class="card-subtitle">
69
+ <code>.button .button-icon [.button-icon-{COLOR}]</code>
70
+ </div>
71
+ </header>
72
+ <div class="card-content">
73
+ <div class="button button-icon"><i class="zmdi zmdi-settings"></i></div>
74
+ <div class="button button-icon button-icon-blue"><i class="zmdi zmdi-settings"></i></div>
75
+ <div class="button button-icon button-icon-red"><i class="zmdi zmdi-settings"></i></div>
76
+ </div>
77
+ </div>
78
+ </div>
79
+ </div>
@@ -0,0 +1,189 @@
1
+ <div class="card full-width" id="menus">
2
+ <header>
3
+ <div class="card-title">Menus</div>
4
+ </header>
5
+ <div class="card-content">
6
+ Menus consist of a <code>.menu-container</code> wrapper that includes
7
+ a trigger via <code>role="menu-trigger" data-menu-id="menu-id"</code> and an actual
8
+ <code>.menu#menu-id</code>.
9
+
10
+ <p>
11
+ They will also adjust their padding on various device sizes. Try resizing this
12
+ window and clicking a menu.
13
+ </p>
14
+
15
+ <hr class="spacer" />
16
+
17
+ <div class="card full-width" id="menus-position">
18
+ <header>
19
+ <div class="card-title">Position</div>
20
+ <div class="card-subtitle">
21
+ Use the <code>data-position="{TOP|BOTTOM}-{LEFT|RIGHT}"</code> class to specify
22
+ the start point of the menu.
23
+ If the menu would overflow the visible window, it's position will be
24
+ changed dynamically to fit inside the visible window.
25
+ </div>
26
+ </header>
27
+ <div class="card-content">
28
+ <span class="menu-container">
29
+ <div class="button button-raised-grey" role="menu-trigger" data-menu-id="menu-1">
30
+ Bottom-left
31
+ </div>
32
+ <div class="menu menu-width-4" id="menu-1" data-position="bottom-left">
33
+ <div class="menu-item">
34
+ <div class="menu-item-primary">Menu Item 1</div>
35
+ </div>
36
+ <div class="menu-item">
37
+ <div class="menu-item-primary">Menu Item 2</div>
38
+ </div>
39
+ <div class="menu-item">
40
+ <div class="menu-item-primary">Menu Item 3</div>
41
+ </div>
42
+ </div>
43
+ </span>
44
+
45
+ <span class="menu-container">
46
+ <div class="button button-raised-grey" role="menu-trigger" data-menu-id="menu-2">
47
+ Bottom-right
48
+ </div>
49
+ <div class="menu menu-width-4" id="menu-2" data-position="bottom-right">
50
+ <div class="menu-item">
51
+ <div class="menu-item-primary">Menu Item 1</div>
52
+ </div>
53
+ <div class="menu-item">
54
+ <div class="menu-item-primary">Menu Item 2</div>
55
+ </div>
56
+ <div class="menu-item">
57
+ <div class="menu-item-primary">Menu Item 3</div>
58
+ </div>
59
+ </div>
60
+ </span>
61
+ </div>
62
+ </div>
63
+
64
+ <hr class="spacer" />
65
+
66
+ <div class="card full-width" id="menus-widths">
67
+ <header>
68
+ <div class="card-title">Widths</div>
69
+ <div class="card-subtitle">
70
+ Menus use a multiple width: <code>.menu-width-[1,2,3,4,5,6,7]</code>.
71
+ </div>
72
+ </header>
73
+ <div class="card-content">
74
+ <span class="menu-container">
75
+ <div class="button button-icon" role="menu-trigger" data-menu-id="menu-4">
76
+ <i class="zmdi zmdi-settings"></i>
77
+ </div>
78
+ <div class="menu menu-width-1" id="menu-4" data-position="bottom-left">
79
+ <div class="menu-item">
80
+ <div class="menu-item-primary">Item</div>
81
+ </div>
82
+ <div class="menu-item">
83
+ <div class="menu-item-primary">Item</div>
84
+ </div>
85
+ <div class="menu-item">
86
+ <div class="menu-item-primary">Item</div>
87
+ </div>
88
+ </div>
89
+ </span>
90
+ <span class="menu-container">
91
+ <div class="button button-icon" role="menu-trigger" data-menu-id="menu-5">
92
+ <i class="zmdi zmdi-settings"></i>
93
+ </div>
94
+ <div class="menu menu-width-2" id="menu-5" data-position="bottom-left">
95
+ <div class="menu-item">
96
+ <div class="menu-item-primary">Item</div>
97
+ </div>
98
+ <div class="menu-item">
99
+ <div class="menu-item-primary">Item</div>
100
+ </div>
101
+ <div class="menu-item">
102
+ <div class="menu-item-primary">Item</div>
103
+ </div>
104
+ </div>
105
+ </span>
106
+ <span class="menu-container">
107
+ <div class="button button-icon" role="menu-trigger" data-menu-id="menu-6">
108
+ <i class="zmdi zmdi-settings"></i>
109
+ </div>
110
+ <div class="menu menu-width-3" id="menu-6" data-position="bottom-left">
111
+ <div class="menu-item">
112
+ <div class="menu-item-primary">Item</div>
113
+ </div>
114
+ <div class="menu-item">
115
+ <div class="menu-item-primary">Item</div>
116
+ </div>
117
+ <div class="menu-item">
118
+ <div class="menu-item-primary">Item</div>
119
+ </div>
120
+ </div>
121
+ </span>
122
+ <span class="menu-container">
123
+ <div class="button button-icon" role="menu-trigger" data-menu-id="menu-7">
124
+ <i class="zmdi zmdi-settings"></i>
125
+ </div>
126
+ <div class="menu menu-width-4" id="menu-7" data-position="bottom-left">
127
+ <div class="menu-item">
128
+ <div class="menu-item-primary">Item</div>
129
+ </div>
130
+ <div class="menu-item">
131
+ <div class="menu-item-primary">Item</div>
132
+ </div>
133
+ <div class="menu-item">
134
+ <div class="menu-item-primary">Item</div>
135
+ </div>
136
+ </div>
137
+ </span>
138
+ <span class="menu-container">
139
+ <div class="button button-icon" role="menu-trigger" data-menu-id="menu-8">
140
+ <i class="zmdi zmdi-settings"></i>
141
+ </div>
142
+ <div class="menu menu-width-5" id="menu-8" data-position="bottom-left">
143
+ <div class="menu-item">
144
+ <div class="menu-item-primary">Item</div>
145
+ </div>
146
+ <div class="menu-item">
147
+ <div class="menu-item-primary">Item</div>
148
+ </div>
149
+ <div class="menu-item">
150
+ <div class="menu-item-primary">Item</div>
151
+ </div>
152
+ </div>
153
+ </span>
154
+ <span class="menu-container">
155
+ <div class="button button-icon" role="menu-trigger" data-menu-id="menu-9">
156
+ <i class="zmdi zmdi-settings"></i>
157
+ </div>
158
+ <div class="menu menu-width-6" id="menu-9" data-position="bottom-left">
159
+ <div class="menu-item">
160
+ <div class="menu-item-primary">Item</div>
161
+ </div>
162
+ <div class="menu-item">
163
+ <div class="menu-item-primary">Item</div>
164
+ </div>
165
+ <div class="menu-item">
166
+ <div class="menu-item-primary">Item</div>
167
+ </div>
168
+ </div>
169
+ </span>
170
+ <span class="menu-container">
171
+ <div class="button button-icon" role="menu-trigger" data-menu-id="menu-10">
172
+ <i class="zmdi zmdi-settings"></i>
173
+ </div>
174
+ <div class="menu menu-width-7" id="menu-10" data-position="bottom-left">
175
+ <div class="menu-item">
176
+ <div class="menu-item-primary">Item</div>
177
+ </div>
178
+ <div class="menu-item">
179
+ <div class="menu-item-primary">Item</div>
180
+ </div>
181
+ <div class="menu-item">
182
+ <div class="menu-item-primary">Item</div>
183
+ </div>
184
+ </div>
185
+ </span>
186
+ </div>
187
+ </div>
188
+ </div>
189
+ </div>
@@ -0,0 +1,28 @@
1
+ <%= content_for(:left_sidebar) do %>
2
+ <div class="list list-hoverable" id="navigation">
3
+ <%= link_to "#buttons", class: "list-item" do %>
4
+ <div class="list-item-primary">Buttons</div>
5
+ <% end %>
6
+ <%= link_to "#buttons-raised", class: "list-item list-item-nested" do %>
7
+ <div class="list-item-primary">Raised</div>
8
+ <% end %>
9
+ <%= link_to "#buttons-flat", class: "list-item list-item-nested" do %>
10
+ <div class="list-item-primary">Flat</div>
11
+ <% end %>
12
+ <%= link_to "#buttons-outline", class: "list-item list-item-nested" do %>
13
+ <div class="list-item-primary">Outline</div>
14
+ <% end %>
15
+ <%= link_to "#buttons-icon", class: "list-item list-item-nested" do %>
16
+ <div class="list-item-primary">Icon</div>
17
+ <% end %>
18
+ <%= link_to "#menus", class: "list-item" do %>
19
+ <div class="list-item-primary">Menus</div>
20
+ <% end %>
21
+ <%= link_to "#menus-position", class: "list-item list-item-nested" do %>
22
+ <div class="list-item-primary">Position</div>
23
+ <% end %>
24
+ <%= link_to "#menus-widths", class: "list-item list-item-nested" do %>
25
+ <div class="list-item-primary">Widths</div>
26
+ <% end %>
27
+ </div>
28
+ <% end %>
@@ -0,0 +1,9 @@
1
+ <%= content_for(:title) { "Styleguide" } %>
2
+
3
+ <%= render "styleguide/navigation" %>
4
+
5
+ <div class="constrained constrained-large">
6
+ <%= render "styleguide/buttons" %>
7
+ <hr class="spacer" />
8
+ <%= render "styleguide/menus" %>
9
+ </div>
data/bin/console ADDED
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "bundler/setup"
4
+ require "dlegr250_material_design"
5
+
6
+ # You can add fixtures and/or initialization code here to make experimenting
7
+ # with your gem easier. You can also use a different console, if you like.
8
+
9
+ # (If you use this, don't forget to add pry to your Gemfile!)
10
+ # require "pry"
11
+ # Pry.start
12
+
13
+ require "irb"
14
+ IRB.start
data/bin/setup ADDED
@@ -0,0 +1,7 @@
1
+ #!/bin/bash
2
+ set -euo pipefail
3
+ IFS=$'\n\t'
4
+
5
+ bundle install
6
+
7
+ # Do any other automated setup that you need to do here