vue-cli-plugin-apicloud
Version:
vue-cli 3 plugin to add apicloud
590 lines (583 loc) • 15.2 kB
JavaScript
/*
* APICloud JavaScript Library
* Copyright (c) 2014 apicloud.com
*/
(function (window) {
var u = {}
var isAndroid = (/android/gi).test(navigator.appVersion)
var uzStorage = function () {
var ls = window.localStorage
if (isAndroid) {
ls = os.localStorage()
}
return ls
}
function parseArguments (url, data, fnSuc, dataType) {
if (typeof (data) === 'function') {
dataType = fnSuc
fnSuc = data
data = undefined
}
if (typeof (fnSuc) !== 'function') {
dataType = fnSuc
fnSuc = undefined
}
return {
url: url,
data: data,
fnSuc: fnSuc,
dataType: dataType
}
}
u.trim = function (str) {
if (String.prototype.trim) {
return str == null ? '' : String.prototype.trim.call(str)
} else {
return str.replace(/(^\s*)|(\s*$)/g, '')
}
}
u.trimAll = function (str) {
return str.replace(/\s*/g, '')
}
u.isElement = function (obj) {
return !!(obj && obj.nodeType == 1)
}
u.isArray = function (obj) {
if (Array.isArray) {
return Array.isArray(obj)
} else {
return obj instanceof Array
}
}
u.isEmptyObject = function (obj) {
if (JSON.stringify(obj) === '{}') {
return true
}
return false
}
u.addEvt = function (el, name, fn, useCapture) {
if (!u.isElement(el)) {
console.warn('$api.addEvt Function need el param, el param must be DOM Element')
return
}
useCapture = useCapture || false
if (el.addEventListener) {
el.addEventListener(name, fn, useCapture)
}
}
u.rmEvt = function (el, name, fn, useCapture) {
if (!u.isElement(el)) {
console.warn('$api.rmEvt Function need el param, el param must be DOM Element')
return
}
useCapture = useCapture || false
if (el.removeEventListener) {
el.removeEventListener(name, fn, useCapture)
}
}
u.one = function (el, name, fn, useCapture) {
if (!u.isElement(el)) {
console.warn('$api.one Function need el param, el param must be DOM Element')
return
}
useCapture = useCapture || false
var that = this
var cb = function () {
fn && fn()
that.rmEvt(el, name, cb, useCapture)
}
that.addEvt(el, name, cb, useCapture)
}
u.dom = function (el, selector) {
if (arguments.length === 1 && typeof arguments[0] === 'string') {
if (document.querySelector) {
return document.querySelector(arguments[0])
}
} else if (arguments.length === 2) {
if (el.querySelector) {
return el.querySelector(selector)
}
}
}
u.domAll = function (el, selector) {
if (arguments.length === 1 && typeof arguments[0] === 'string') {
if (document.querySelectorAll) {
return document.querySelectorAll(arguments[0])
}
} else if (arguments.length === 2) {
if (el.querySelectorAll) {
return el.querySelectorAll(selector)
}
}
}
u.byId = function (id) {
return document.getElementById(id)
}
u.first = function (el, selector) {
if (arguments.length === 1) {
if (!u.isElement(el)) {
console.warn('$api.first Function need el param, el param must be DOM Element')
return
}
return el.children[0]
}
if (arguments.length === 2) {
return this.dom(el, selector + ':first-child')
}
}
u.last = function (el, selector) {
if (arguments.length === 1) {
if (!u.isElement(el)) {
console.warn('$api.last Function need el param, el param must be DOM Element')
return
}
var children = el.children
return children[children.length - 1]
}
if (arguments.length === 2) {
return this.dom(el, selector + ':last-child')
}
}
u.eq = function (el, index) {
return this.dom(el, ':nth-child(' + index + ')')
}
u.not = function (el, selector) {
return this.domAll(el, ':not(' + selector + ')')
}
u.prev = function (el) {
if (!u.isElement(el)) {
console.warn('$api.prev Function need el param, el param must be DOM Element')
return
}
var node = el.previousSibling
if (node.nodeType && node.nodeType === 3) {
node = node.previousSibling
return node
}
}
u.next = function (el) {
if (!u.isElement(el)) {
console.warn('$api.next Function need el param, el param must be DOM Element')
return
}
var node = el.nextSibling
if (node.nodeType && node.nodeType === 3) {
node = node.nextSibling
return node
}
}
u.closest = function (el, selector) {
if (!u.isElement(el)) {
console.warn('$api.closest Function need el param, el param must be DOM Element')
return
}
var doms, targetDom
var isSame = function (doms, el) {
var i = 0; var len = doms.length
for (i; i < len; i++) {
if (doms[i].isSameNode(el)) {
return doms[i]
}
}
return false
}
var traversal = function (el, selector) {
doms = u.domAll(el.parentNode, selector)
targetDom = isSame(doms, el)
while (!targetDom) {
el = el.parentNode
if (el != null && el.nodeType == el.DOCUMENT_NODE) {
return false
}
traversal(el, selector)
}
return targetDom
}
return traversal(el, selector)
}
u.contains = function (parent, el) {
var mark = false
if (el === parent) {
mark = true
return mark
} else {
do {
el = el.parentNode
if (el === parent) {
mark = true
return mark
}
} while (el === document.body || el === document.documentElement)
return mark
}
}
u.remove = function (el) {
if (el && el.parentNode) {
el.parentNode.removeChild(el)
}
}
u.attr = function (el, name, value) {
if (!u.isElement(el)) {
console.warn('$api.attr Function need el param, el param must be DOM Element')
return
}
if (arguments.length == 2) {
return el.getAttribute(name)
} else if (arguments.length == 3) {
el.setAttribute(name, value)
return el
}
}
u.removeAttr = function (el, name) {
if (!u.isElement(el)) {
console.warn('$api.removeAttr Function need el param, el param must be DOM Element')
return
}
if (arguments.length === 2) {
el.removeAttribute(name)
}
}
u.hasCls = function (el, cls) {
if (!u.isElement(el)) {
console.warn('$api.hasCls Function need el param, el param must be DOM Element')
return
}
if (el.className.indexOf(cls) > -1) {
return true
} else {
return false
}
}
u.addCls = function (el, cls) {
if (!u.isElement(el)) {
console.warn('$api.addCls Function need el param, el param must be DOM Element')
return
}
if ('classList' in el) {
el.classList.add(cls)
} else {
var preCls = el.className
var newCls = preCls + ' ' + cls
el.className = newCls
}
return el
}
u.removeCls = function (el, cls) {
if (!u.isElement(el)) {
console.warn('$api.removeCls Function need el param, el param must be DOM Element')
return
}
if ('classList' in el) {
el.classList.remove(cls)
} else {
var preCls = el.className
var newCls = preCls.replace(cls, '')
el.className = newCls
}
return el
}
u.toggleCls = function (el, cls) {
if (!u.isElement(el)) {
console.warn('$api.toggleCls Function need el param, el param must be DOM Element')
return
}
if ('classList' in el) {
el.classList.toggle(cls)
} else {
if (u.hasCls(el, cls)) {
u.removeCls(el, cls)
} else {
u.addCls(el, cls)
}
}
return el
}
u.val = function (el, val) {
if (!u.isElement(el)) {
console.warn('$api.val Function need el param, el param must be DOM Element')
return
}
if (arguments.length === 1) {
switch (el.tagName) {
case 'SELECT':
var value = el.options[el.selectedIndex].value
return value
break
case 'INPUT':
return el.value
break
case 'TEXTAREA':
return el.value
break
}
}
if (arguments.length === 2) {
switch (el.tagName) {
case 'SELECT':
el.options[el.selectedIndex].value = val
return el
break
case 'INPUT':
el.value = val
return el
break
case 'TEXTAREA':
el.value = val
return el
break
}
}
}
u.prepend = function (el, html) {
if (!u.isElement(el)) {
console.warn('$api.prepend Function need el param, el param must be DOM Element')
return
}
el.insertAdjacentHTML('afterbegin', html)
return el
}
u.append = function (el, html) {
if (!u.isElement(el)) {
console.warn('$api.append Function need el param, el param must be DOM Element')
return
}
el.insertAdjacentHTML('beforeend', html)
return el
}
u.before = function (el, html) {
if (!u.isElement(el)) {
console.warn('$api.before Function need el param, el param must be DOM Element')
return
}
el.insertAdjacentHTML('beforebegin', html)
return el
}
u.after = function (el, html) {
if (!u.isElement(el)) {
console.warn('$api.after Function need el param, el param must be DOM Element')
return
}
el.insertAdjacentHTML('afterend', html)
return el
}
u.html = function (el, html) {
if (!u.isElement(el)) {
console.warn('$api.html Function need el param, el param must be DOM Element')
return
}
if (arguments.length === 1) {
return el.innerHTML
} else if (arguments.length === 2) {
el.innerHTML = html
return el
}
}
u.text = function (el, txt) {
if (!u.isElement(el)) {
console.warn('$api.text Function need el param, el param must be DOM Element')
return
}
if (arguments.length === 1) {
return el.textContent
} else if (arguments.length === 2) {
el.textContent = txt
return el
}
}
u.offset = function (el) {
if (!u.isElement(el)) {
console.warn('$api.offset Function need el param, el param must be DOM Element')
return
}
var sl = Math.max(document.documentElement.scrollLeft, document.body.scrollLeft)
var st = Math.max(document.documentElement.scrollTop, document.body.scrollTop)
var rect = el.getBoundingClientRect()
return {
l: rect.left + sl,
t: rect.top + st,
w: el.offsetWidth,
h: el.offsetHeight
}
}
u.css = function (el, css) {
if (!u.isElement(el)) {
console.warn('$api.css Function need el param, el param must be DOM Element')
return
}
if (typeof css === 'string' && css.indexOf(':') > 0) {
el.style && (el.style.cssText += ';' + css)
}
}
u.cssVal = function (el, prop) {
if (!u.isElement(el)) {
console.warn('$api.cssVal Function need el param, el param must be DOM Element')
return
}
if (arguments.length === 2) {
var computedStyle = window.getComputedStyle(el, null)
return computedStyle.getPropertyValue(prop)
}
}
u.jsonToStr = function (json) {
if (typeof json === 'object') {
return JSON && JSON.stringify(json)
}
}
u.strToJson = function (str) {
if (typeof str === 'string') {
return JSON && JSON.parse(str)
}
}
u.setStorage = function (key, value) {
if (arguments.length === 2) {
var v = value
if (typeof v === 'object') {
v = JSON.stringify(v)
v = 'obj-' + v
} else {
v = 'str-' + v
}
var ls = uzStorage()
if (ls) {
ls.setItem(key, v)
}
}
}
u.getStorage = function (key) {
var ls = uzStorage()
if (ls) {
var v = ls.getItem(key)
if (!v) { return }
if (v.indexOf('obj-') === 0) {
v = v.slice(4)
return JSON.parse(v)
} else if (v.indexOf('str-') === 0) {
return v.slice(4)
}
}
}
u.rmStorage = function (key) {
var ls = uzStorage()
if (ls && key) {
ls.removeItem(key)
}
}
u.clearStorage = function () {
var ls = uzStorage()
if (ls) {
ls.clear()
}
}
u.fixIos7Bar = function (el) {
return u.fixStatusBar(el)
}
u.fixStatusBar = function (el) {
if (!u.isElement(el)) {
console.warn('$api.fixStatusBar Function need el param, el param must be DOM Element')
return 0
}
if (api.safeArea) {
el.style.paddingTop = api.safeArea.top + 'px'
}
return el.offsetHeight
}
u.fixTabBar = function (el) {
if (!u.isElement(el)) {
console.warn('$api.fixTabBar Function need el param, el param must be DOM Element')
return 0
}
if (api.safeArea) {
el.style.paddingBottom = api.safeArea.bottom + 'px'
}
return el.offsetHeight
}
u.toast = function (title, text, time) {
var opts = {}
var show = function (opts, time) {
api.showProgress(opts)
setTimeout(function () {
api.hideProgress()
}, time)
}
if (arguments.length === 1) {
var time = time || 500
if (typeof title === 'number') {
time = title
} else {
opts.title = title + ''
}
show(opts, time)
} else if (arguments.length === 2) {
var time = time || 500
var text = text
if (typeof text === 'number') {
var tmp = text
time = tmp
text = null
}
if (title) {
opts.title = title
}
if (text) {
opts.text = text
}
show(opts, time)
}
if (title) {
opts.title = title
}
if (text) {
opts.text = text
}
time = time || 500
show(opts, time)
}
u.post = function (/* url,data,fnSuc,dataType */) {
var argsToJson = parseArguments.apply(null, arguments)
var json = {}
var fnSuc = argsToJson.fnSuc
argsToJson.url && (json.url = argsToJson.url)
argsToJson.data && (json.data = argsToJson.data)
if (argsToJson.dataType) {
var type = argsToJson.dataType.toLowerCase()
if (type == 'text' || type == 'json') {
json.dataType = type
}
} else {
json.dataType = 'json'
}
json.method = 'post'
api.ajax(json,
function (ret, err) {
if (ret) {
fnSuc && fnSuc(ret)
}
}
)
}
u.get = function (/* url,fnSuc,dataType */) {
var argsToJson = parseArguments.apply(null, arguments)
var json = {}
var fnSuc = argsToJson.fnSuc
argsToJson.url && (json.url = argsToJson.url)
// argsToJson.data && (json.data = argsToJson.data);
if (argsToJson.dataType) {
var type = argsToJson.dataType.toLowerCase()
if (type == 'text' || type == 'json') {
json.dataType = type
}
} else {
json.dataType = 'text'
}
json.method = 'get'
api.ajax(json,
function (ret, err) {
if (ret) {
fnSuc && fnSuc(ret)
}
}
)
}
/* end */
window.$api = u
})(window)