jsmenubuilder 0.1.1 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data/lib/jsmenubuilder.rb +113 -9
- data.tar.gz.sig +0 -0
- metadata +2 -2
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 90c199cc14c95c758c56e60926884e0728750da3dfe2c75ba1a35fd8ac001d64
|
4
|
+
data.tar.gz: a4f64e2a769dd9a159011394a420404d746897621fd274f69b689fa6ba6f815e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d2df2af5486c48a9c21df9b3211f0a763bb2f2c893c2ba770c3e296a705e009690e8233852b136ba65903ff8471adcfca4576b22c2fb22680a8cf5d4ccccf9a2
|
7
|
+
data.tar.gz: 349510de80b99681503a3f476f4a2c45e2fccf706d484771f5cd41cd0eb9877f10069aa2015dd4f9772418f46523050ae3779ed6647fc603a68ca64d6ca13d83
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data/lib/jsmenubuilder.rb
CHANGED
@@ -67,6 +67,70 @@ function openTab(evt, tabName) {
|
|
67
67
|
evt.currentTarget.className += " active";
|
68
68
|
}
|
69
69
|
|
70
|
+
// Get the element with id="defaultOpen" and click on it
|
71
|
+
document.getElementById("defaultOpen").click();
|
72
|
+
EOF
|
73
|
+
|
74
|
+
FULL_PAGE_TABS_CSS =<<EOF
|
75
|
+
/* Set height of body and the document to 100% to enable "full page tabs" */
|
76
|
+
body, html {
|
77
|
+
height: 100%;
|
78
|
+
margin: 0;
|
79
|
+
font-family: Arial;
|
80
|
+
}
|
81
|
+
|
82
|
+
/* Style tab links */
|
83
|
+
.tablink {
|
84
|
+
background-color: #555;
|
85
|
+
color: white;
|
86
|
+
float: left;
|
87
|
+
border: none;
|
88
|
+
outline: none;
|
89
|
+
cursor: pointer;
|
90
|
+
padding: 14px 16px;
|
91
|
+
font-size: 17px;
|
92
|
+
width: 25%;
|
93
|
+
}
|
94
|
+
|
95
|
+
button.active {
|
96
|
+
background-color: #c55;
|
97
|
+
}
|
98
|
+
|
99
|
+
.tablink:hover {
|
100
|
+
background-color: #777;
|
101
|
+
}
|
102
|
+
|
103
|
+
|
104
|
+
|
105
|
+
/* Style the tab content (and add height:100% for full page content) */
|
106
|
+
.tabcontent {
|
107
|
+
color: #000;
|
108
|
+
display: none;
|
109
|
+
padding: 100px 20px;
|
110
|
+
height: 100%;
|
111
|
+
}
|
112
|
+
|
113
|
+
EOF
|
114
|
+
|
115
|
+
FULL_PAGE_TABS_JS =<<EOF
|
116
|
+
function openPage(pageName,elmnt) {
|
117
|
+
var i, tabcontent;
|
118
|
+
tabcontent = document.getElementsByClassName("tabcontent");
|
119
|
+
for (i = 0; i < tabcontent.length; i++) {
|
120
|
+
tabcontent[i].style.display = "none";
|
121
|
+
}
|
122
|
+
|
123
|
+
// Get all elements with class="tablink" and remove the class "active"
|
124
|
+
tablink = document.getElementsByClassName("tablink");
|
125
|
+
for (i = 0; i < tablink.length; i++) {
|
126
|
+
tablink[i].className = tablink[i].className.replace(" active", "");
|
127
|
+
}
|
128
|
+
|
129
|
+
|
130
|
+
document.getElementById(pageName).style.display = "block";
|
131
|
+
elmnt.className += " active";
|
132
|
+
}
|
133
|
+
|
70
134
|
// Get the element with id="defaultOpen" and click on it
|
71
135
|
document.getElementById("defaultOpen").click();
|
72
136
|
EOF
|
@@ -78,8 +142,14 @@ EOF
|
|
78
142
|
def initialize(type, options={})
|
79
143
|
|
80
144
|
@type = type
|
81
|
-
types = %i(tabs)
|
82
|
-
method(type.to_sym).call(options) if types.include? type
|
145
|
+
types = %i(tabs full_page_tabs)
|
146
|
+
doc = method(type.to_sym).call(options) if types.include? type
|
147
|
+
@html = doc.xml(pretty: true, declaration: false)\
|
148
|
+
.gsub(/<\/div>/,'\0' + "\n").strip.lines[1..-2]\
|
149
|
+
.map {|x| x.sub(/^ /,'') }.join
|
150
|
+
|
151
|
+
@css = Object.const_get 'JsMenuBuilder::' + @type.to_s.upcase + '_CSS'
|
152
|
+
@js = Object.const_get 'JsMenuBuilder::' + @type.to_s.upcase + '_JS'
|
83
153
|
|
84
154
|
end
|
85
155
|
|
@@ -163,13 +233,47 @@ EOF
|
|
163
233
|
e = doc.root.element("div/button[#{options[:active]}]")
|
164
234
|
e.attributes[:id] = 'defaultOpen' if e
|
165
235
|
|
166
|
-
|
167
|
-
|
168
|
-
.map {|x| x.sub(/^ /,'') }.join
|
169
|
-
|
170
|
-
@css = Object.const_get 'JsMenuBuilder::' + @type.to_s.upcase + '_CSS'
|
171
|
-
@js = Object.const_get 'JsMenuBuilder::' + @type.to_s.upcase + '_JS'
|
172
|
-
|
236
|
+
return doc
|
237
|
+
|
173
238
|
end
|
239
|
+
|
240
|
+
def full_page_tabs(opt={})
|
241
|
+
|
242
|
+
options = {active: '1'}.merge(opt)
|
243
|
+
|
244
|
+
tabs = if options[:headings] then
|
245
|
+
headings = options[:headings]
|
246
|
+
headings.zip(headings.map {|heading| ['h3', {}, heading]}).to_h
|
247
|
+
else
|
248
|
+
options[:tabs]
|
249
|
+
end
|
250
|
+
|
251
|
+
|
252
|
+
## build the HTML
|
174
253
|
|
254
|
+
a = RexleBuilder.build do |xml|
|
255
|
+
xml.html do
|
256
|
+
|
257
|
+
tabs.keys.each do |heading|
|
258
|
+
xml.button({class:'tablink',
|
259
|
+
onclick: %Q(openPage("#{heading}", this))}, heading)
|
260
|
+
end
|
261
|
+
|
262
|
+
tabs.each do |heading, content|
|
263
|
+
puts 'content: ' + content.inspect
|
264
|
+
xml.div({id: heading, class: 'tabcontent'}, content )
|
265
|
+
end
|
266
|
+
end
|
267
|
+
end
|
268
|
+
|
269
|
+
doc = Rexle.new(a)
|
270
|
+
|
271
|
+
e = doc.root.element("button[#{options[:active]}]")
|
272
|
+
e.attributes[:id] = 'defaultOpen' if e
|
273
|
+
|
274
|
+
return doc
|
275
|
+
|
276
|
+
|
277
|
+
end
|
278
|
+
|
175
279
|
end
|
data.tar.gz.sig
CHANGED
Binary file
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jsmenubuilder
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- James Robertson
|
@@ -35,7 +35,7 @@ cert_chain:
|
|
35
35
|
haYJPATx3zs+9jtQoiFg+keM0CPYk/5LgCv9jxxzQcSS20C8O9MWRVvYfIr47ak7
|
36
36
|
yXrDPmRvbJLTNjDv6Tkg3vU6
|
37
37
|
-----END CERTIFICATE-----
|
38
|
-
date: 2019-07-
|
38
|
+
date: 2019-07-13 00:00:00.000000000 Z
|
39
39
|
dependencies:
|
40
40
|
- !ruby/object:Gem::Dependency
|
41
41
|
name: rexle
|
metadata.gz.sig
CHANGED
Binary file
|