66 lines
1.7 KiB
JavaScript
66 lines
1.7 KiB
JavaScript
!function ($, doc) {
|
|
|
|
var each = function (arr, fn) {
|
|
for (let i = 0; i < arr.length; i++) {
|
|
fn(arr[i], i)
|
|
}
|
|
}
|
|
|
|
var amSwitch = {}
|
|
|
|
var _toggleCallback
|
|
|
|
var toggle = function (elm) {
|
|
var isActive = elm.classList.contains('am-active')
|
|
if (isActive) {
|
|
elm.classList.remove('am-active')
|
|
} else {
|
|
elm.classList.add('am-active')
|
|
}
|
|
return {
|
|
id: elm.dataset['switch'],
|
|
isActive: elm.classList.contains('am-active')
|
|
}
|
|
}
|
|
|
|
var handleEvent = function (e) {
|
|
var disabled = this.classList.contains('am-disabled')
|
|
if (disabled)
|
|
return
|
|
switch (e.type) {
|
|
case 'click':
|
|
var event = toggle(this)
|
|
_toggleCallback && _toggleCallback.bind(this)(event)
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
var _init = function () {
|
|
var switches = doc.querySelectorAll('.am-switch')
|
|
each(switches, function (elm, i) {
|
|
if (!elm.dataset['switch']) {
|
|
elm.dataset['switch'] = i
|
|
}
|
|
elm.addEventListener('click', handleEvent)
|
|
elm.handle = elm.querySelector('.am-switch-handle')
|
|
})
|
|
}
|
|
|
|
_init()
|
|
|
|
amSwitch.toggle = function (toggleFn) {
|
|
_toggleCallback = toggleFn
|
|
}
|
|
|
|
amSwitch.val = function (id) {
|
|
var elms = doc.querySelectorAll('.am-switch[data-switch="' + id + '"]')
|
|
if (elms && elms.length > 0) {
|
|
return elms[0].classList.contains('am-active')
|
|
} else {
|
|
return false
|
|
}
|
|
}
|
|
$.amSwitch = amSwitch
|
|
}(window, document) |