megatron 0.1.26 → 0.1.27
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Rakefile +55 -48
- data/app/assets/javascripts/megatron/form.js +4 -4
- data/app/assets/javascripts/megatron/link.js +2 -2
- data/app/assets/javascripts/megatron/utils/auto-navigate.js +2 -2
- data/app/assets/javascripts/megatron/utils/form-notify.js +3 -3
- data/app/assets/javascripts/megatron/utils/messages.js +8 -8
- data/app/assets/javascripts/megatron/utils/time/date-to-html.js +2 -2
- data/app/assets/javascripts/megatron/utils/time/time-switch.js +5 -5
- data/app/assets/javascripts/megatron/utils/time/timeago.js +3 -3
- data/app/assets/javascripts/megatron/utils/toggler.js +53 -19
- data/lib/megatron/version.rb +1 -1
- data/public/assets/megatron/{megatron-0.1.26.css → megatron-0.1.27.css} +1 -1
- data/public/assets/megatron/{megatron-0.1.26.css.map → megatron-0.1.27.css.map} +1 -1
- data/public/assets/megatron/{megatron-0.1.26.js → megatron-0.1.27.js} +3 -3
- data/public/assets/megatron/megatron-0.1.27.map.json +1 -0
- metadata +6 -6
- data/public/assets/megatron/megatron-0.1.26.map.json +0 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2cd450213b9cd53cbdffd9b8b7c0b153f4fecab3
|
4
|
+
data.tar.gz: 5d9d2df16b081a5305690561d8094d8961f78a5f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 86485b8fbcdbd10e16025c3c39621971a0d8ac2b42a6b43c36aaf120a68ed7a9e4d53748e6065e50a976ac599dc0bd5635580bc447156bff8def0cdcdc666f78
|
7
|
+
data.tar.gz: a1da662b73b82b8daf49c80b0e84501f27d2d49b9321cf4ac1364137d8f0eaf807a309127c2e8d54e11fdfd16dc757e0cff7777e35fc598680a8fcccc56c89b5
|
data/Rakefile
CHANGED
@@ -14,58 +14,11 @@ RDoc::Task.new(:rdoc) do |rdoc|
|
|
14
14
|
rdoc.rdoc_files.include('lib/**/*.rb')
|
15
15
|
end
|
16
16
|
|
17
|
-
load 'rails/tasks/statistics.rake'
|
18
|
-
|
19
17
|
Bundler::GemHelper.install_tasks
|
20
18
|
|
21
|
-
desc "Pick a random user as the winner"
|
22
|
-
task :sass_watch do
|
23
|
-
require 'listen'
|
24
|
-
listen
|
25
|
-
end
|
26
|
-
|
27
|
-
def listen
|
28
|
-
listener = Listen.to('app/assets/stylesheets/megatron/', only: /\.scss$/) do |modified, added, removed|
|
29
|
-
output_paths("Changes detected to", modified)
|
30
|
-
output_paths("Added", added)
|
31
|
-
output_paths("Removed", removed)
|
32
|
-
|
33
|
-
build
|
34
|
-
end
|
35
|
-
|
36
|
-
build
|
37
|
-
|
38
|
-
listener.start # not blocking
|
39
|
-
sleep
|
40
|
-
end
|
41
|
-
|
42
|
-
def output_paths(prefix, paths)
|
43
|
-
unless paths.empty?
|
44
|
-
paths.map! { |p| localize_path(p) }
|
45
|
-
puts "#{prefix}: #{paths.join("\n")}"
|
46
|
-
end
|
47
|
-
end
|
48
|
-
|
49
|
-
def localize_path(path)
|
50
|
-
path.sub(/#{Dir.pwd}\//, '')
|
51
|
-
end
|
52
|
-
|
53
|
-
def destination
|
54
|
-
"public/assets/megatron/megatron-#{version}.css"
|
55
|
-
end
|
56
|
-
|
57
|
-
def build
|
58
|
-
system "sass app/assets/stylesheets/megatron/megatron.scss:#{destination}"
|
59
|
-
system "./node_modules/postcss-cli/bin/postcss --use autoprefixer #{destination} -o #{destination}"
|
60
|
-
puts "Built: #{destination}"
|
61
|
-
end
|
62
|
-
|
63
|
-
def version
|
64
|
-
Gem.loaded_specs["megatron"].version
|
65
|
-
end
|
66
|
-
|
67
19
|
namespace :megatron do
|
68
20
|
|
21
|
+
require 'megatron'
|
69
22
|
require 's3'
|
70
23
|
|
71
24
|
task :upload do
|
@@ -104,4 +57,58 @@ namespace :megatron do
|
|
104
57
|
|
105
58
|
end
|
106
59
|
|
60
|
+
namespace :css do
|
61
|
+
|
62
|
+
task :watch do
|
63
|
+
|
64
|
+
require 'listen'
|
65
|
+
|
66
|
+
listener = Listen.to('app/assets/stylesheets/megatron/', only: /\.scss$/) do |modified, added, removed|
|
67
|
+
build_css
|
68
|
+
end
|
69
|
+
|
70
|
+
build_css
|
71
|
+
|
72
|
+
puts "Initial CSS build, done. Listening for changes..."
|
73
|
+
|
74
|
+
listener.start # not blocking
|
75
|
+
sleep
|
76
|
+
|
77
|
+
end
|
78
|
+
|
79
|
+
end
|
80
|
+
|
81
|
+
namespace :svg do
|
82
|
+
|
83
|
+
task :watch do
|
84
|
+
require 'listen'
|
85
|
+
require 'esvg'
|
86
|
+
|
87
|
+
listener = Listen.to('app/assets/esvg/megatron/', only: /\.svg$/) do |modified, added, removed|
|
88
|
+
build_svg
|
89
|
+
end
|
90
|
+
|
91
|
+
build_svg
|
92
|
+
|
93
|
+
puts "Initial SVG build, done. Listening for changes..."
|
94
|
+
|
95
|
+
listener.start # not blocking
|
96
|
+
sleep
|
97
|
+
|
98
|
+
end
|
99
|
+
|
100
|
+
end
|
101
|
+
|
102
|
+
end
|
103
|
+
|
104
|
+
def build_css
|
105
|
+
destination = "public/assets/megatron/megatron-#{Megatron::VERSION}.css"
|
106
|
+
system "sass app/assets/stylesheets/megatron/megatron.scss:#{destination}"
|
107
|
+
system "./node_modules/postcss-cli/bin/postcss --use autoprefixer #{destination} -o #{destination}"
|
108
|
+
puts "Built: #{destination}"
|
109
|
+
end
|
110
|
+
|
111
|
+
def build_svg
|
112
|
+
puts "building svg..."
|
113
|
+
Esvg::SVG.new(path: 'app/assets/esvg/megatron', output_path: 'app/assets/javascripts/megatron').write
|
107
114
|
end
|
@@ -10,7 +10,7 @@ var MegatronForm = module.exports = RemoteForm.extend({
|
|
10
10
|
error: 'Something went wrong.'
|
11
11
|
},
|
12
12
|
|
13
|
-
messageFor: function(type){
|
13
|
+
messageFor: function formMessageFor(type){
|
14
14
|
if (this.el.dataset[type])
|
15
15
|
return this.el.dataset[type]
|
16
16
|
else {
|
@@ -22,15 +22,15 @@ var MegatronForm = module.exports = RemoteForm.extend({
|
|
22
22
|
}
|
23
23
|
},
|
24
24
|
|
25
|
-
beforeSend: function(req){
|
25
|
+
beforeSend: function formBeforeSend(req){
|
26
26
|
notify.progress(this.messageFor('beforeSend'))
|
27
27
|
},
|
28
28
|
|
29
|
-
success: function(body, status, xhr){
|
29
|
+
success: function formSuccessHandler(body, status, xhr){
|
30
30
|
notify.success(this.messageFor('success'))
|
31
31
|
},
|
32
32
|
|
33
|
-
error: function(xhr, error){
|
33
|
+
error: function formErrorHandler(xhr, error){
|
34
34
|
notify.error(this.messageFor('error'))
|
35
35
|
}
|
36
36
|
})
|
@@ -9,7 +9,7 @@ var DEFAULT_CONTINUE_BUTTON = 'Yes'
|
|
9
9
|
|
10
10
|
function Link(){}
|
11
11
|
|
12
|
-
Link.click = function(event){
|
12
|
+
Link.click = function linkClick(event){
|
13
13
|
event.preventDefault()
|
14
14
|
var el = event.currentTarget
|
15
15
|
var form = null
|
@@ -42,7 +42,7 @@ Link.click = function(event){
|
|
42
42
|
}
|
43
43
|
}
|
44
44
|
|
45
|
-
Link.buildForm = function(el){
|
45
|
+
Link.buildForm = function buildForm(el){
|
46
46
|
var method = el.dataset.method || 'post'
|
47
47
|
var csrfToken = document.querySelector('meta[name=csrf-token]')
|
48
48
|
var csrfParam = document.querySelector('meta[name=csrf-param]')
|
@@ -4,11 +4,11 @@ var classie = require('classie')
|
|
4
4
|
require('compose-tap-event')
|
5
5
|
|
6
6
|
var AutoNavigate = {
|
7
|
-
listen: function(){
|
7
|
+
listen: function autoNavigateListen(){
|
8
8
|
bean.on(document, "click", ".auto-navigate", AutoNavigate.trigger)
|
9
9
|
},
|
10
10
|
|
11
|
-
trigger: function(event) {
|
11
|
+
trigger: function autoNavigateTrigger(event) {
|
12
12
|
var target = event.target
|
13
13
|
if (target.tagName.toLowerCase() != 'a') {
|
14
14
|
var link = event.currentTarget.querySelector('a.navigate')
|
@@ -2,7 +2,7 @@ var bean = require('bean')
|
|
2
2
|
var notify = require('notify')
|
3
3
|
|
4
4
|
module.exports = {
|
5
|
-
notify: function(el, type){
|
5
|
+
notify: function formNotify(el, type){
|
6
6
|
if(type == 'success')
|
7
7
|
notify.success(this.getMessage(el, 'success'))
|
8
8
|
else if(type == 'error')
|
@@ -11,7 +11,7 @@ module.exports = {
|
|
11
11
|
notify.progress(this.getMessage(el, 'beforeSend'))
|
12
12
|
},
|
13
13
|
|
14
|
-
getMessage: function(el, type){
|
14
|
+
getMessage: function formGetMessage(el, type){
|
15
15
|
if (el.dataset[type])
|
16
16
|
return el.dataset[type]
|
17
17
|
else {
|
@@ -27,7 +27,7 @@ module.exports = {
|
|
27
27
|
}
|
28
28
|
},
|
29
29
|
|
30
|
-
listen: function() {
|
30
|
+
listen: function formListen() {
|
31
31
|
bean.on(document.querySelector('body'), 'submit', 'form', function(event){
|
32
32
|
if(!event.target.dataset['remote']) {
|
33
33
|
event.preventDefault()
|
@@ -2,15 +2,15 @@ var request = require('superagent')
|
|
2
2
|
var bean = require('bean')
|
3
3
|
|
4
4
|
var Messages = {
|
5
|
-
el: function(){
|
5
|
+
el: function messagesEl(){
|
6
6
|
return document.querySelector('.pop-message')
|
7
7
|
},
|
8
8
|
|
9
|
-
fetch: function(){
|
9
|
+
fetch: function messagesFetch(){
|
10
10
|
request.get('/messages.json').end(this.end.bind(this));
|
11
11
|
},
|
12
12
|
|
13
|
-
dismiss: function(event){
|
13
|
+
dismiss: function messagesDismiss(event){
|
14
14
|
self = this
|
15
15
|
event.preventDefault()
|
16
16
|
event.stopPropagation()
|
@@ -27,7 +27,7 @@ var Messages = {
|
|
27
27
|
|
28
28
|
},
|
29
29
|
|
30
|
-
end: function(error, response) {
|
30
|
+
end: function messagesEnd(error, response) {
|
31
31
|
if (error || response.serverError) {
|
32
32
|
return
|
33
33
|
} else {
|
@@ -41,7 +41,7 @@ var Messages = {
|
|
41
41
|
}
|
42
42
|
},
|
43
43
|
|
44
|
-
messageHTML: function(options){
|
44
|
+
messageHTML: function messagesMessageHTML(options){
|
45
45
|
options.style = options.style || ''
|
46
46
|
var classnames = "message-content "
|
47
47
|
if (options.style)
|
@@ -65,11 +65,11 @@ var Messages = {
|
|
65
65
|
return html
|
66
66
|
},
|
67
67
|
|
68
|
-
saveMessage: function(content){
|
68
|
+
saveMessage: function messagesSaveMessage(content){
|
69
69
|
window.Megatron.accountMessage = content
|
70
70
|
},
|
71
71
|
|
72
|
-
showMessage: function(content) {
|
72
|
+
showMessage: function messagesShowMessage(content) {
|
73
73
|
if(this.el()) {
|
74
74
|
this.el().innerHTML = content
|
75
75
|
} else {
|
@@ -82,7 +82,7 @@ var Messages = {
|
|
82
82
|
}
|
83
83
|
},
|
84
84
|
|
85
|
-
load: function(){
|
85
|
+
load: function messagesLoad(){
|
86
86
|
if(window.location.hostname.match(/app\.compose\.(io|dev)/)){
|
87
87
|
var message = window.Megatron.accountMessage
|
88
88
|
if(!message) {
|
@@ -7,7 +7,7 @@
|
|
7
7
|
// Returns: HTML which is "2014-01-28 18:00:00 CST", separated and wrapped with spans
|
8
8
|
// with classnames: date, time and timezone
|
9
9
|
//
|
10
|
-
var dateToHtml = function (dateString, zone) {
|
10
|
+
var dateToHtml = function dateToHtml(dateString, zone) {
|
11
11
|
|
12
12
|
if(isNaN(new Date("2014-01-29T18:14:29+00:00").getDate())) {
|
13
13
|
return false
|
@@ -48,7 +48,7 @@ var dateToHtml = function (dateString, zone) {
|
|
48
48
|
return str
|
49
49
|
}
|
50
50
|
|
51
|
-
var pad = function(num, pad){
|
51
|
+
var pad = function datePad(num, pad){
|
52
52
|
pad = pad || 2
|
53
53
|
while(String(num).length < pad) {
|
54
54
|
num = '0' + num
|
@@ -8,7 +8,7 @@ require('compose-dataset-shim')
|
|
8
8
|
var TimeSwitch = {
|
9
9
|
|
10
10
|
// Attach listeners, setup HTML templates
|
11
|
-
setup: function() {
|
11
|
+
setup: function timeSwitchSetup() {
|
12
12
|
if(!timeago.browserSupport()) return false
|
13
13
|
if(!this.listening) this.listen()
|
14
14
|
|
@@ -25,13 +25,13 @@ var TimeSwitch = {
|
|
25
25
|
},
|
26
26
|
|
27
27
|
// Attach listeners to toggle time zones whine clicked
|
28
|
-
listen: function() {
|
28
|
+
listen: function timeSwitchListen() {
|
29
29
|
bean.on(document, "click", ".time-switch", TimeSwitch.toggle)
|
30
30
|
this.listening = true
|
31
31
|
},
|
32
32
|
|
33
33
|
// Switch between UTC and local time
|
34
|
-
toggle: function(event) {
|
34
|
+
toggle: function timeSwitchToggle(event) {
|
35
35
|
var timeEls = document.querySelectorAll('.time-switch')
|
36
36
|
|
37
37
|
Array.prototype.forEach.call(timeEls, function(el) {
|
@@ -45,7 +45,7 @@ var TimeSwitch = {
|
|
45
45
|
// - date (a date object)
|
46
46
|
// - timeagoPosition, String, either 'before' or 'after'
|
47
47
|
//
|
48
|
-
template: function(date, timeagoPosition, timeagoStyle) {
|
48
|
+
template: function timeSwitchTemplate(date, timeagoPosition, timeagoStyle) {
|
49
49
|
var utc = dateToHtml(date, 'UTC')
|
50
50
|
var local = dateToHtml(date)
|
51
51
|
var t = '';
|
@@ -67,7 +67,7 @@ var TimeSwitch = {
|
|
67
67
|
},
|
68
68
|
|
69
69
|
// Converts a date to relative time string wrapped in a span
|
70
|
-
timeagoTemplate: function(date, position, style) {
|
70
|
+
timeagoTemplate: function timeSwitchTimeagoTemplate(date, position, style) {
|
71
71
|
var relative = timeago.parse(date, style)
|
72
72
|
var dash = "<span class='dash'> - </span>"
|
73
73
|
var html = ''
|
@@ -3,7 +3,7 @@
|
|
3
3
|
|
4
4
|
let Timeago = {
|
5
5
|
// setup HTML templates
|
6
|
-
setup: function() {
|
6
|
+
setup: function timeagoSetup() {
|
7
7
|
|
8
8
|
var timeEls = document.querySelectorAll('.timeago[datetime]')
|
9
9
|
|
@@ -15,11 +15,11 @@ let Timeago = {
|
|
15
15
|
},
|
16
16
|
|
17
17
|
// If a browser can't handle dates, bail.
|
18
|
-
browserSupport: function() {
|
18
|
+
browserSupport: function timeagoBrowserSupport() {
|
19
19
|
return !isNaN(new Date("2014-01-29T18:14:29+00:00").getDate())
|
20
20
|
},
|
21
21
|
|
22
|
-
parse: function(time, style) {
|
22
|
+
parse: function timeagoParse(time, style) {
|
23
23
|
|
24
24
|
style = style || "normal"
|
25
25
|
if (typeof(time) == 'string') {
|
@@ -6,19 +6,18 @@ require('compose-tap-event')
|
|
6
6
|
require('compose-dataset-shim')
|
7
7
|
|
8
8
|
var Toggler = {
|
9
|
-
listen: function(){
|
10
|
-
bean.on(document, "click", "[data-toggle], [data-show], [data-hide]", Toggler.trigger)
|
9
|
+
listen: function togglerListen(){
|
10
|
+
bean.on(document, "click", "[data-toggle], [data-show], [data-hide], [data-toggle-class], [data-add-class], [data-remove-class]", Toggler.trigger)
|
11
11
|
bean.on(document, "change", ".select-toggler", Toggler.trigger)
|
12
12
|
},
|
13
13
|
|
14
|
-
refresh: function(){
|
14
|
+
refresh: function togglerRefresh(){
|
15
15
|
Toggler.toggleRadios()
|
16
16
|
Toggler.toggleCheckboxes()
|
17
17
|
Toggler.setupSelects()
|
18
18
|
},
|
19
19
|
|
20
|
-
trigger: function(event) {
|
21
|
-
|
20
|
+
trigger: function togglerTrigger(event) {
|
22
21
|
var target = event.currentTarget
|
23
22
|
|
24
23
|
if (target.tagName.toLowerCase() == 'a' && target.getAttribute('href') == "#") {
|
@@ -36,16 +35,51 @@ var Toggler = {
|
|
36
35
|
Toggler.dispatch(target, 'hide')
|
37
36
|
Toggler.dispatch(target, 'toggle')
|
38
37
|
Toggler.dispatch(target, 'show')
|
38
|
+
Toggler.dispatch(target, 'addClass')
|
39
|
+
Toggler.dispatch(target, 'removeClass')
|
40
|
+
Toggler.dispatch(target, 'toggleClass')
|
39
41
|
}
|
40
42
|
},
|
41
43
|
|
42
|
-
dispatch: function(el, type, force) {
|
44
|
+
dispatch: function togglerDispatch(el, type, force) {
|
43
45
|
if (el.dataset[type]){
|
44
|
-
|
46
|
+
if (type.match(/class/i)){
|
47
|
+
Toggler.setClass(el, type)
|
48
|
+
} else {
|
49
|
+
Toggler.setState(el.dataset[type], type)
|
50
|
+
}
|
51
|
+
}
|
52
|
+
},
|
53
|
+
|
54
|
+
// Add, remove, or toggle classnames, triggered by elements with:
|
55
|
+
// data-hide-class, data-show-class, and data-toggle-class values
|
56
|
+
//
|
57
|
+
// Data value examples:
|
58
|
+
// - "classname" - add/remove/toggle classname on current element
|
59
|
+
// - "foo bar" - multiple classnames, separated by spaces (like html class property)
|
60
|
+
// - "foo bar; selector" - change classnames on elements matched by selector
|
61
|
+
// - "foo bar; selector, selector" - match multiple selectors
|
62
|
+
setClass: function (el, action){
|
63
|
+
// Get selector and classnames, format: "classname classname; selector,selector"
|
64
|
+
var settings = el.dataset[action].split(';')
|
65
|
+
var classnames = settings[0].trim()
|
66
|
+
|
67
|
+
// If no slectors are present, use the current el for classnames
|
68
|
+
var matches = document.querySelectorAll(settings[1])
|
69
|
+
if (matches.length == 0) matches = [el]
|
70
|
+
|
71
|
+
if (typeof(action) == 'boolean') {
|
72
|
+
action = (action ? 'addClass' : 'removeClass')
|
45
73
|
}
|
74
|
+
|
75
|
+
Array.prototype.forEach.call(matches, function(match){
|
76
|
+
Array.prototype.forEach.call(classnames.split(' '), function(classname) {
|
77
|
+
classie[action](match, classname)
|
78
|
+
})
|
79
|
+
})
|
46
80
|
},
|
47
81
|
|
48
|
-
setState: function(selectors, state) {
|
82
|
+
setState: function toggletSetState(selectors, state) {
|
49
83
|
var matches = document.querySelectorAll(selectors)
|
50
84
|
if (typeof(state) == 'boolean') {
|
51
85
|
state = (state ? 'show' : 'hide')
|
@@ -56,7 +90,7 @@ var Toggler = {
|
|
56
90
|
})
|
57
91
|
},
|
58
92
|
|
59
|
-
toggle: function(el) {
|
93
|
+
toggle: function togglerToggle(el) {
|
60
94
|
|
61
95
|
if (el.offsetParent === null) {
|
62
96
|
Toggler.show(el)
|
@@ -66,7 +100,7 @@ var Toggler = {
|
|
66
100
|
|
67
101
|
},
|
68
102
|
|
69
|
-
show: function(el) {
|
103
|
+
show: function togglerShow(el) {
|
70
104
|
classie.remove(el, 'hidden')
|
71
105
|
classie.add(el, 'visible')
|
72
106
|
var focusEl = el.querySelector('[data-focus]')
|
@@ -76,12 +110,12 @@ var Toggler = {
|
|
76
110
|
}
|
77
111
|
},
|
78
112
|
|
79
|
-
hide: function(el) {
|
113
|
+
hide: function togglerHide(el) {
|
80
114
|
classie.remove(el, 'visible')
|
81
115
|
classie.add(el, 'hidden')
|
82
116
|
},
|
83
117
|
|
84
|
-
toggleRadios: function(radios) {
|
118
|
+
toggleRadios: function togglerToggleRadio(radios) {
|
85
119
|
var radios = radios || 'input[type=radio][data-show]'
|
86
120
|
|
87
121
|
Array.prototype.forEach.call(document.querySelectorAll(radios), function(radio) {
|
@@ -89,19 +123,19 @@ var Toggler = {
|
|
89
123
|
})
|
90
124
|
},
|
91
125
|
|
92
|
-
toggleCheckbox: function(checkbox) {
|
126
|
+
toggleCheckbox: function togglerToggeCheckbox(checkbox) {
|
93
127
|
Toggler.setState(checkbox.dataset.hide, !checkbox.checked)
|
94
128
|
Toggler.setState(checkbox.dataset.toggle, 'toggle')
|
95
129
|
Toggler.setState(checkbox.dataset.show, checkbox.checked)
|
96
130
|
},
|
97
131
|
|
98
|
-
toggleSelect: function(select) {
|
132
|
+
toggleSelect: function togglerToggleSelect(select) {
|
99
133
|
var option = select.selectedOptions[0]
|
100
134
|
Toggler.dispatch(option, 'hide')
|
101
135
|
Toggler.dispatch(option, 'show')
|
102
136
|
},
|
103
137
|
|
104
|
-
toggleCheckboxes: function() {
|
138
|
+
toggleCheckboxes: function togglerToggleCheckboxes() {
|
105
139
|
var checkboxes = 'input[type=checkbox][data-toggle]'
|
106
140
|
Array.prototype.forEach.call(document.querySelectorAll(checkboxes), Toggler.toggleCheckbox)
|
107
141
|
},
|
@@ -109,7 +143,7 @@ var Toggler = {
|
|
109
143
|
// Add data-hide to each <option> containing the selectors from other
|
110
144
|
// option's data-show. This makes the toggling of elements exclusive.
|
111
145
|
//
|
112
|
-
setupSelects: function(select){
|
146
|
+
setupSelects: function togglerSetupSelects(select){
|
113
147
|
Array.prototype.forEach.call(document.querySelectorAll('option[data-show]'), function(option){
|
114
148
|
if (!option.dataset.hide) {
|
115
149
|
|
@@ -133,7 +167,7 @@ var Toggler = {
|
|
133
167
|
|
134
168
|
// Find parent <select> for an option (accounts for option groups)
|
135
169
|
//
|
136
|
-
getSelectFromOption: function(el) {
|
170
|
+
getSelectFromOption: function togglerGetSelectFromOption(el) {
|
137
171
|
var p = el.parentElement
|
138
172
|
|
139
173
|
if (p.tagName.toLowerCase() == 'select') {
|
@@ -145,13 +179,13 @@ var Toggler = {
|
|
145
179
|
|
146
180
|
// Return an array of all data-show values from elements
|
147
181
|
//
|
148
|
-
showAttributes: function(elements) {
|
182
|
+
showAttributes: function togglerShowAttributes(elements) {
|
149
183
|
return Array.prototype.map.call(elements, function(el) {
|
150
184
|
return el.dataset.show
|
151
185
|
})
|
152
186
|
},
|
153
187
|
|
154
|
-
toggleSelects: function(selects) {
|
188
|
+
toggleSelects: function togglerToggleSelects(selects) {
|
155
189
|
var selects = selects || 'option[data-show]'
|
156
190
|
|
157
191
|
Array.prototype.forEach.call(document.querySelectorAll(radios), function(radio) {
|