jsmenubuilder 0.2.3 → 0.2.4
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.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/lib/jsmenubuilder.rb +93 -7
- metadata +3 -3
- 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: 2b20f477b9bc4e3a1ec3a489988cb01c2dec96a3487e4e38dcbae5ce73aeedc8
|
4
|
+
data.tar.gz: 187797640e08f8ce47488a67b16310406886e3fc863d6a7a9da786bf71b45e23
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0ab2f13ac9f5d3126517bfe48d624910442ee0e578cbb3fbae93fa91ddb6d9ec3abea6382419d19c419615e92364080df45107345e4ffdd50db407aedab9cc4f
|
7
|
+
data.tar.gz: 5474a14409548fb0b9cd77eb4804547db0576f4358f0c36c689fe1ad60a9c5b7bcc9be6b039639881125e506aa7dd89425191b1e1d5ce06350ab90430e2d4577
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data.tar.gz.sig
CHANGED
Binary file
|
data/lib/jsmenubuilder.rb
CHANGED
@@ -113,6 +113,45 @@ button.active {
|
|
113
113
|
|
114
114
|
EOF
|
115
115
|
|
116
|
+
ACCORDION_CSS = %q(
|
117
|
+
.accordion {
|
118
|
+
background-color: #eee;
|
119
|
+
color: #444;
|
120
|
+
cursor: pointer;
|
121
|
+
padding: 18px;
|
122
|
+
width: 100%;
|
123
|
+
border: none;
|
124
|
+
text-align: left;
|
125
|
+
outline: none;
|
126
|
+
font-size: 15px;
|
127
|
+
transition: 0.4s;
|
128
|
+
}
|
129
|
+
|
130
|
+
.active, .accordion:hover {
|
131
|
+
background-color: #ccc;
|
132
|
+
}
|
133
|
+
|
134
|
+
.accordion:after {
|
135
|
+
content: '\002B';
|
136
|
+
color: #777;
|
137
|
+
font-weight: bold;
|
138
|
+
float: right;
|
139
|
+
margin-left: 5px;
|
140
|
+
}
|
141
|
+
|
142
|
+
.active:after {
|
143
|
+
content: "\2212";
|
144
|
+
}
|
145
|
+
|
146
|
+
.panel {
|
147
|
+
padding: 0 18px;
|
148
|
+
background-color: white;
|
149
|
+
max-height: 0;
|
150
|
+
overflow: hidden;
|
151
|
+
transition: max-height 0.2s ease-out;
|
152
|
+
}
|
153
|
+
)
|
154
|
+
|
116
155
|
FULL_PAGE_TABS_JS =<<EOF
|
117
156
|
function openPage(pageName,elmnt) {
|
118
157
|
var i, tabcontent;
|
@@ -136,6 +175,23 @@ function openPage(pageName,elmnt) {
|
|
136
175
|
document.getElementById("defaultOpen").click();
|
137
176
|
EOF
|
138
177
|
|
178
|
+
ACCORDION_JS =<<EOF
|
179
|
+
var acc = document.getElementsByClassName("accordion");
|
180
|
+
var i;
|
181
|
+
|
182
|
+
for (i = 0; i < acc.length; i++) {
|
183
|
+
acc[i].addEventListener("click", function() {
|
184
|
+
this.classList.toggle("active");
|
185
|
+
var panel = this.nextElementSibling;
|
186
|
+
if (panel.style.maxHeight){
|
187
|
+
panel.style.maxHeight = null;
|
188
|
+
} else {
|
189
|
+
panel.style.maxHeight = panel.scrollHeight + "px";
|
190
|
+
}
|
191
|
+
});
|
192
|
+
}
|
193
|
+
|
194
|
+
EOF
|
139
195
|
|
140
196
|
|
141
197
|
attr_reader :html, :css, :js
|
@@ -150,7 +206,7 @@ EOF
|
|
150
206
|
|
151
207
|
@debug = options[:debug]
|
152
208
|
|
153
|
-
@types = %i(tabs full_page_tabs)
|
209
|
+
@types = %i(tabs full_page_tabs accordion)
|
154
210
|
|
155
211
|
build(type, options) if type
|
156
212
|
|
@@ -243,6 +299,7 @@ EOF
|
|
243
299
|
return unless @types.include? type.to_sym
|
244
300
|
|
245
301
|
doc = method(type.to_sym).call(options)
|
302
|
+
puts 'doc: ' + doc.inspect if @debug
|
246
303
|
|
247
304
|
@html = doc.xml(pretty: true, declaration: false)\
|
248
305
|
.gsub(/<\/div>/,'\0' + "\n").strip.lines[1..-2]\
|
@@ -258,19 +315,26 @@ EOF
|
|
258
315
|
def build_xml(type, opt={})
|
259
316
|
|
260
317
|
puts 'inside build_xml'.info if @debug
|
318
|
+
puts 'type: ' + type.inspect if @debug
|
261
319
|
|
262
|
-
options =
|
320
|
+
options = if type.to_s =~ /tabs\b/ then
|
321
|
+
{active: '1'}.merge(opt)
|
322
|
+
else
|
323
|
+
opt
|
324
|
+
end
|
263
325
|
|
264
|
-
|
326
|
+
entries = if options[:headings] then
|
265
327
|
headings = options[:headings]
|
266
328
|
headings.zip(headings.map {|heading| ['h3', {}, heading]}).to_h
|
267
329
|
else
|
268
|
-
options[
|
330
|
+
options[type.to_sym]
|
269
331
|
end
|
332
|
+
|
333
|
+
puts 'entries: ' + entries.inspect if @debug
|
270
334
|
|
271
335
|
a = RexleBuilder.build do |xml|
|
272
336
|
xml.tags({mode: type}) do
|
273
|
-
|
337
|
+
entries.each do |heading, content|
|
274
338
|
xml.tag({title: heading}, content )
|
275
339
|
end
|
276
340
|
end
|
@@ -278,8 +342,10 @@ EOF
|
|
278
342
|
|
279
343
|
doc = Rexle.new(a)
|
280
344
|
|
281
|
-
|
282
|
-
|
345
|
+
if options[:active] then
|
346
|
+
e = doc.root.element("tag[#{options[:active]}]")
|
347
|
+
e.attributes[:mode] = 'active' if e
|
348
|
+
end
|
283
349
|
|
284
350
|
return doc.xml(pretty: true)
|
285
351
|
|
@@ -361,5 +427,25 @@ EOF
|
|
361
427
|
|
362
428
|
end
|
363
429
|
|
430
|
+
def accordion(opt={})
|
431
|
+
|
432
|
+
panels = opt[:accordion]
|
433
|
+
|
434
|
+
|
435
|
+
a = RexleBuilder.build do |xml|
|
436
|
+
xml.html do
|
437
|
+
|
438
|
+
panels.each do |heading, inner_html|
|
439
|
+
xml.button({class:'accordion'}, heading.to_s)
|
440
|
+
xml.div({class:'panel'}, inner_html)
|
441
|
+
end
|
442
|
+
|
443
|
+
end
|
444
|
+
end
|
445
|
+
|
446
|
+
return Rexle.new(a)
|
447
|
+
|
448
|
+
end
|
449
|
+
|
364
450
|
|
365
451
|
end
|
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.2.
|
4
|
+
version: 0.2.4
|
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-
|
38
|
+
date: 2019-09-22 00:00:00.000000000 Z
|
39
39
|
dependencies:
|
40
40
|
- !ruby/object:Gem::Dependency
|
41
41
|
name: rexle
|
@@ -83,7 +83,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
83
83
|
- !ruby/object:Gem::Version
|
84
84
|
version: '0'
|
85
85
|
requirements: []
|
86
|
-
rubygems_version: 3.0.
|
86
|
+
rubygems_version: 3.0.3
|
87
87
|
signing_key:
|
88
88
|
specification_version: 4
|
89
89
|
summary: Generates HTML based tabs using HTML, CSS, and JavaScript.
|
metadata.gz.sig
CHANGED
Binary file
|