myg 2.4.0 → 2.5.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +6 -0
- data/README.md +2 -0
- data/app/views/mozaic/myg/_switch.html.erb +4 -1
- data/app/views/mozaic/myg/_tabs.html.erb +45 -0
- data/app/views/mozaic/myg/_toast.html.erb +1 -1
- data/lib/generators/myg/tabs_generator.rb +23 -0
- data/lib/generators/templates/tabs/_tab.html.erb +1 -0
- data/lib/generators/templates/tabs/_tabs.html.erb +3 -0
- data/lib/generators/templates/tabs/tab.html.erb +1 -0
- data/lib/myg/railtie.rb +1 -0
- data/lib/myg/version.rb +1 -1
- metadata +7 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8c29952c97ba88bea732f66414be85f5444e5754bf338c28cd2ecdb7a706eabb
|
4
|
+
data.tar.gz: 1df6280cae3bf39d6746452c3fbedb897aee28c8bdb5d86161273960c50ac689
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8b8d1112614a403feb425d508aa5021932a813501f03fe04907ee1aa5108d0eca188fecd15a235a351fab59bcacd95e1a8eb343120ef202d53a4cf7a1a4c5ea1
|
7
|
+
data.tar.gz: c3b91b66ee1b6c44d3d5b1f75db29ca767c7f5ca286da4a0713d9cfbbfbb18ac2da960d023db64f0755a0050a5b4b9e150aba63b89dc6f40824c74b2279e0bab
|
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
@@ -82,6 +82,8 @@ These are the components currently supported by Myg on Rails:
|
|
82
82
|
* [`radio`](components/myg/radio.md)
|
83
83
|
* [`slider`](components/myg/slider.md)
|
84
84
|
* [`switch`](components/myg/switch.md)
|
85
|
+
* [`tabs`](components/myg/tabs.md)
|
86
|
+
* [`toast`](components/myg/toast.md)
|
85
87
|
* [`toolbar`](components/myg/toolbar.md)
|
86
88
|
|
87
89
|
You feel a component is missing? Create an issue to make us aware, or implement it yourself. Pull requests are welcome.
|
@@ -1,5 +1,6 @@
|
|
1
1
|
<% class_name = options.delete :class_name %>
|
2
2
|
<% attribute = options.delete :attribute %>
|
3
|
+
<% values = options.delete(:values) || [0, 1] %>
|
3
4
|
<% name = class_name ? "#{class_name.to_s.downcase}[#{attribute}]" : "#{attribute}" %>
|
4
5
|
<% id = class_name ? "#{class_name.to_s.downcase}_#{attribute}" : "#{attribute}" %>
|
5
6
|
<% wrapper_html = {
|
@@ -9,10 +10,12 @@
|
|
9
10
|
type: 'checkbox',
|
10
11
|
class: ['mdc-switch__native-control', options.dig(:input_html, :class)].join(' '),
|
11
12
|
name: name,
|
12
|
-
id: id
|
13
|
+
id: id,
|
14
|
+
value: values.last
|
13
15
|
} %>
|
14
16
|
|
15
17
|
<%= content_tag 'div', (options[:wrapper_html] || {}).merge(wrapper_html) do %>
|
18
|
+
<input value="<%= values.first %>" type="hidden" name="<%= name %>" />
|
16
19
|
<%= tag 'input', (options[:input_html] || {}).merge(input_html) %>
|
17
20
|
<div class="mdc-switch__background">
|
18
21
|
<div class="mdc-switch__knob"></div>
|
@@ -0,0 +1,45 @@
|
|
1
|
+
<% nav_html = {
|
2
|
+
class: ['myg-tabs mdc-tab-bar', options.dig(:nav_html, :class)].join(' '),
|
3
|
+
update: {
|
4
|
+
history: options[:update_history]
|
5
|
+
}
|
6
|
+
} %>
|
7
|
+
<% wrapper_html = {
|
8
|
+
class: ['myg-tabs--panels', options.dig(:wrapper_html, :class)].join(' ')
|
9
|
+
} %>
|
10
|
+
|
11
|
+
<%= content_tag 'nav', (options[:nav_html] || {}).merge(nav_html) do %>
|
12
|
+
<% options[:tabs]&.each do |tab| %>
|
13
|
+
<% tab_html = {
|
14
|
+
class: ['mdc-tab', options.dig(:tab_html, :class), ('mdc-tab--active' if tab[:active])].join(' '),
|
15
|
+
aria: {
|
16
|
+
controls: tab[:id]
|
17
|
+
},
|
18
|
+
role: 'tab'
|
19
|
+
} %>
|
20
|
+
<%= link_to tab[:name], tab[:href] || "##{tab[:id]}", (options[:tab_html] || {}).merge(tab_html) %>
|
21
|
+
<% end %>
|
22
|
+
<span class="mdc-tab-bar__indicator"></span>
|
23
|
+
<% end %>
|
24
|
+
<%= content_tag 'div', (options[:wrapper_html] || {}).merge(wrapper_html) do %>
|
25
|
+
<% if options[:async] %>
|
26
|
+
<div class="myg-tabs--loader">
|
27
|
+
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="24px" height="24px" viewBox="0 0 24 24"><g transform="translate(0, 0)"><g class="nc-loop_bars-rotate-24" transform="rotate(270 12 12)"> <rect x="11" fill="#444444" width="2" height="6"></rect> <rect x="17.3639603" y="2.636039" transform="matrix(0.7071068 0.7071068 -0.7071068 0.7071068 9.3639612 -11.3345242)" fill="#444444" width="2" height="6" style="opacity: 0.4;"></rect> <rect x="18" y="11" fill="#444444" width="6" height="2" style="opacity: 0.4;"></rect> <rect x="17.3639603" y="15.3639612" transform="matrix(-0.7071068 0.7071068 -0.7071068 -0.7071068 44.3345222 18.3639603)" fill="#444444" width="2" height="6" style="opacity: 0.4;"></rect> <rect x="11" y="18" fill="#444444" width="2" height="6" style="opacity: 0.4;"></rect> <rect x="4.6360388" y="15.3639612" transform="matrix(-0.7071068 -0.7071068 0.7071068 -0.7071068 -3.363961 35.3345222)" fill="#444444" width="2" height="6" style="opacity: 0.4;"></rect> <rect x="0" y="11" fill="#444444" width="6" height="2" style="opacity: 0.5;"></rect> <rect x="4.6360388" y="2.636039" transform="matrix(0.7071068 -0.7071068 0.7071068 0.7071068 -2.3345237 5.6360388)" fill="#444444" width="2" height="6" style="opacity: 0.8;"></rect> </g> <script>!function(){function t(t){this.element=t,this.animationId,this.start=null,this.init()}if(!window.requestAnimationFrame){var i=null;window.requestAnimationFrame=function(t,n){var e=(new Date).getTime();i||(i=e);var a=Math.max(0,16-(e-i)),o=window.setTimeout(function(){t(e+a)},a);return i=e+a,o}}t.prototype.init=function(){var t=this;this.animationId=window.requestAnimationFrame(t.triggerAnimation.bind(t))},t.prototype.reset=function(){var t=this;window.cancelAnimationFrame(t.animationId)},t.prototype.triggerAnimation=function(t){var i=this;this.start||(this.start=t);var n=t-this.start;800>n||(this.start=this.start+800),this.element.setAttribute("transform","rotate("+parseInt(Math.min(n/100,8))%8*45+" 12 12)");if(document.documentElement.contains(this.element))window.requestAnimationFrame(i.triggerAnimation.bind(i))};var n=document.getElementsByClassName("nc-loop_bars-rotate-24"),e=[];if(n)for(var a=0;n.length>a;a++)!function(i){e.push(new t(n[i]))}(a);document.addEventListener("visibilitychange",function(){"hidden"==document.visibilityState?e.forEach(function(t){t.reset()}):e.forEach(function(t){t.init()})})}();</script></g></svg>
|
28
|
+
</div>
|
29
|
+
<div class="myg-tabs--panel" id="myg-tabs--panel-success" role="tabpanel" aria-hidden="true"></div>
|
30
|
+
<div class="myg-tabs--panel" id="myg-tabs--panel-error" role="tabpanel" aria-hidden="true"></div>
|
31
|
+
<% end %>
|
32
|
+
<% options[:tabs]&.each do |tab| %>
|
33
|
+
<% panel_html = {
|
34
|
+
class: ['myg-tabs--panel', options.dig(:panel_html, :class), ('myg-tabs--shown' if tab[:active])].join(' '),
|
35
|
+
id: tab[:id],
|
36
|
+
role: 'tabpanel',
|
37
|
+
aria: {
|
38
|
+
hidden: (tab[:active] ? false : true)
|
39
|
+
}
|
40
|
+
} %>
|
41
|
+
<%= content_tag 'div', (options[:panel_html] || {}).merge(panel_html) do %>
|
42
|
+
<%= tab[:content] || render(partial: tab[:partial], locals: tab[:partial_locales]) %>
|
43
|
+
<% end %>
|
44
|
+
<% end %>
|
45
|
+
<% end %>
|
@@ -0,0 +1,23 @@
|
|
1
|
+
require 'rails/generators'
|
2
|
+
require 'rails/generators/migration'
|
3
|
+
|
4
|
+
class Myg::TabsGenerator < Rails::Generators::Base
|
5
|
+
|
6
|
+
include Rails::Generators::Migration
|
7
|
+
|
8
|
+
source_root File.join File.dirname(__FILE__), '../templates/tabs'
|
9
|
+
desc 'Generate a Myg tabs template'
|
10
|
+
|
11
|
+
class_option :controller, desc: 'Tabs controller', type: :string, aliases: '-c'
|
12
|
+
class_option :method_names, desc: 'Tab method names', type: :array, aliases: '-m'
|
13
|
+
|
14
|
+
def create_templates
|
15
|
+
template '_tabs.html.erb', "app/views/#{options[:controller]}/_tabs.html.erb"
|
16
|
+
options[:method_names]&.each do |name|
|
17
|
+
@name = name
|
18
|
+
template 'tab.html.erb', "app/views/#{options[:controller]}/_#{name}.html.erb"
|
19
|
+
template '_tab.html.erb', "app/views/#{options[:controller]}/#{name}.html.erb"
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
<h1><%= @name.titleize %></h1>
|
@@ -0,0 +1 @@
|
|
1
|
+
<%%= render 'tabs' %>
|
data/lib/myg/railtie.rb
CHANGED
@@ -14,6 +14,7 @@ module Myg
|
|
14
14
|
config.define_component 'myg/radio'
|
15
15
|
config.define_component 'myg/slider', discrete: false, disabled: false, value: 0, min: 0, max: 50, label: 'Select value'
|
16
16
|
config.define_component 'myg/switch'
|
17
|
+
config.define_component 'myg/tabs', async: false, update_history: false
|
17
18
|
config.define_component 'myg/toast'
|
18
19
|
config.define_component 'myg/toolbar'
|
19
20
|
end
|
data/lib/myg/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: myg
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jonas Hübotter
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-03-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: railties
|
@@ -114,9 +114,11 @@ files:
|
|
114
114
|
- app/views/mozaic/myg/_radio.html.erb
|
115
115
|
- app/views/mozaic/myg/_slider.html.erb
|
116
116
|
- app/views/mozaic/myg/_switch.html.erb
|
117
|
+
- app/views/mozaic/myg/_tabs.html.erb
|
117
118
|
- app/views/mozaic/myg/_toast.html.erb
|
118
119
|
- app/views/mozaic/myg/_toolbar.html.erb
|
119
120
|
- lib/generators/myg/install_generator.rb
|
121
|
+
- lib/generators/myg/tabs_generator.rb
|
120
122
|
- lib/generators/myg/theme_generator.rb
|
121
123
|
- lib/generators/templates/install/initializer.rb
|
122
124
|
- lib/generators/templates/install/javascripts/action-button.js
|
@@ -162,6 +164,9 @@ files:
|
|
162
164
|
- lib/generators/templates/install/stylesheets/variables/_spacing.scss
|
163
165
|
- lib/generators/templates/install/stylesheets/variables/_text.scss
|
164
166
|
- lib/generators/templates/install/stylesheets/variables/_theme.scss
|
167
|
+
- lib/generators/templates/tabs/_tab.html.erb
|
168
|
+
- lib/generators/templates/tabs/_tabs.html.erb
|
169
|
+
- lib/generators/templates/tabs/tab.html.erb
|
165
170
|
- lib/generators/templates/theme/stylesheets/_theme.scss.erb
|
166
171
|
- lib/myg.rb
|
167
172
|
- lib/myg/configuration.rb
|