由回调改为promise

This commit is contained in:
fofolee 2020-07-12 16:16:17 +08:00
parent c21fb57031
commit 427b396c84

View File

@ -82,69 +82,61 @@ quickcommand = {
}, },
// 显示输入框 // 显示输入框
showInputBox: function (callback, placeHolders) { showInputBox: function (placeHolders) {
let helps = `正确用法: return new Promise((reslove, reject) => {
quickcommand.showInputBox(yourinput => { placeHolders || (placeHolders = [""])
//do something... if (!(placeHolders instanceof Array)) reject("参数类型错误:应为数组")
}, [placeholder of input1, placeholder of input2...])` utools.setExpendHeight(600)
if (!(callback instanceof Function)) throw helps var html = ""
placeHolders || (placeHolders = [""]) var inputBoxNumbers = placeHolders.length
if (!(placeHolders instanceof Array)) throw helps for (let i = 0; i < inputBoxNumbers; i++) {
utools.setExpendHeight(600) html += `<input class="swal2-input" id="inputBox${i}" placeholder="${placeHolders[i]}">`
var html = ""
var inputBoxNumbers = placeHolders.length
for (let i = 0; i < inputBoxNumbers; i++) {
html += `<input class="swal2-input" id="inputBox${i}" placeholder="${placeHolders[i]}">`
}
var result = []
var options = {
onBeforeOpen: () => {
document.getElementById(`inputBox0`).focus()
$(".output").is(":parent") && utools.setExpendHeight(600) || modWindowHeight($('.swal2-popup').outerHeight() + 20)
},
html: html,
focusConfirm: false,
showCancelButton: true,
backdrop: utools.isDarkColors() ? '#fff0' : '#bbb',
preConfirm: () => {
for (let i = 0; i < inputBoxNumbers; i++) {
result.push(document.getElementById(`inputBox${i}`).value)
}
callback(result)
} }
} var result = []
swalOneByOne(options) var options = {
onBeforeOpen: () => {
document.getElementById(`inputBox0`).focus()
$(".output").is(":parent") && utools.setExpendHeight(600) || modWindowHeight($('.swal2-popup').outerHeight() + 20)
},
html: html,
focusConfirm: false,
showCancelButton: true,
backdrop: utools.isDarkColors() ? '#fff0' : '#bbb',
preConfirm: () => {
for (let i = 0; i < inputBoxNumbers; i++) {
result.push(document.getElementById(`inputBox${i}`).value)
}
reslove(result)
}
}
swalOneByOne(options)
});
}, },
// 显示选项按钮 // 显示选项按钮
showButtonBox: function (callback, buttons) { showButtonBox: function (buttons) {
let helps = `正确用法: return new Promise((reslove, reject) => {
quickcommand.showButtonBox(yourchoise => { if (!(buttons instanceof Array)) reject("参数类型错误:应为数组")
var index = choise.index utools.setExpendHeight(600)
var text = choise.text var html = ``
//do something... var buttonBoxNumbers = buttons.length
}, [button1, button2...])` for (let i = 0; i < buttonBoxNumbers; i++) {
if (!(callback instanceof Function)) throw helps html += `<button class="swal2-confirm swal2-styled" style="width: 80%" onclick="clickButton(${i})">${buttons[i]}</button>`
if (!(buttons instanceof Array)) throw helps }
utools.setExpendHeight(600) var options = {
var html = `` onBeforeOpen: () => {
var buttonBoxNumbers = buttons.length clickButton = i => {
for (let i = 0; i < buttonBoxNumbers; i++) { setTimeout(() => { swal.clickConfirm() }, 50);
html += `<button class="swal2-confirm swal2-styled" style="width: 80%" onclick="clickButton(${i})">${buttons[i]}</button>` reslove({ id: i, text: buttons[i] })
} }
var options = { $(".output").is(":parent") && utools.setExpendHeight(600) || modWindowHeight($('.swal2-popup').outerHeight() + 20)
onBeforeOpen: () => { },
clickButton = i => { html: html,
callback({ index: i, text: buttons[i] }) backdrop: utools.isDarkColors() ? '#fff0' : '#bbb',
swal.clickConfirm() showConfirmButton: false
} }
$(".output").is(":parent") && utools.setExpendHeight(600) || modWindowHeight($('.swal2-popup').outerHeight() + 20) swalOneByOne(options)
}, });
html: html,
backdrop: utools.isDarkColors() ? '#fff0' : '#bbb',
showConfirmButton: false
}
swalOneByOne(options)
}, },
// 显示自动消失的提示框 // 显示自动消失的提示框
@ -166,84 +158,80 @@ quickcommand = {
}, },
// 显示选项列表 // 显示选项列表
showSelectList: function (callback, selects, opt = {}) { showSelectList: function (selects, opt = {}) {
let helps = `正确用法: return new Promise((reslove, reject) => {
quickcommand.showSelectList(choise => { if (!(selects instanceof Array)) reject("参数类型错误:应为数组")
var index = choise.index opt.optionType || (opt.optionType = 'plaintext')
var text = choise.text typeof opt.placeholder == 'undefined' && (opt.placeholder = "搜索,支持拼音")
//do something... typeof opt.enableSearch == 'undefined' && (opt.enableSearch = true)
}, [option1, option2...], { placeholder, optionType, enableSearch, closeOnSelect })` typeof opt.closeOnSelect == 'undefined' && (opt.closeOnSelect = true)
if (!(callback instanceof Function)) throw helps if ($('#quickselect').length) $('#quickselect').remove()
if (!(selects instanceof Array)) throw helps $("body").append(`<div id="quickselect"><select id="selectBox"></select></div>`)
opt.optionType || (opt.optionType = 'plaintext') let item, data = []
typeof opt.placeholder == 'undefined' && (opt.placeholder = "搜索,支持拼音") selects.forEach((s, i) => {
typeof opt.enableSearch == 'undefined' && (opt.enableSearch = true) item = {id: i}
typeof opt.closeOnSelect == 'undefined' && (opt.closeOnSelect = true) if (opt.optionType == 'json') {
if ($('#quickselect').length) $('#quickselect').remove() item.text = ''
$("body").append(`<div id="quickselect"><select id="selectBox"></select></div>`) Object.keys(s).forEach(k => item[k] = s[k])
let item, data = [] s.icon && (item.text += `<div class="icon"><img src="${s.icon}"></div>`)
selects.forEach((s, i) => { s.title && (item.text += `<div class="title">${s.title}</div>`)
item = {id: i} s.description && (item.text += `<div class="description">${s.description}</div>`)
if (opt.optionType == 'json') { } else {
item.text = '' item.text = s
Object.keys(s).forEach(k => item[k] = s[k])
s.icon && (item.text += `<div class="icon"><img src="${s.icon}"></div>`)
s.title && (item.text += `<div class="title">${s.title}</div>`)
s.description && (item.text += `<div class="description">${s.description}</div>`)
} else {
item.text = s
}
data.push(item)
})
$('#selectBox').data('options', data)
$('#selectBox').data('type', opt.optionType)
var prefer = {
// data: data,
width: "100%",
dropdownParent: $("#quickselect"),
closeOnSelect: opt.closeOnSelect,
// 支持无限滚动
ajax: {
transport: (params, success, failure) => {
let cont, pageSize = 50
let term = (params.data.term || '').toLowerCase()
let page = (params.data.page || 1)
let items = $('#selectBox').data('options')
let results = items.filter(x => {
if (opt.optionType == 'json') cont = x.title
else if (opt.optionType == 'html') cont = x.text.replace(/<[^<>]+>/g, '')
else cont = x.text
return cont.toLowerCase().includes(term) || PinyinMatch.match(cont, term)
})
let paged = results.slice((page - 1) * pageSize, page * pageSize)
let options = { results: paged, pagination: { more: results.length >= page * pageSize } }
success(options)
} }
}, data.push(item)
} })
// 显示html时不转义标签 $('#selectBox').data('options', data)
if (opt.optionType != 'plaintext') prefer.escapeMarkup = markup => markup $('#selectBox').data('type', opt.optionType)
$('#selectBox').select2(prefer) var prefer = {
$('#selectBox').val(null).trigger('change') // data: data,
$('#selectBox').select2('open') width: "100%",
$("#quickselect .select2-search__field").focus() dropdownParent: $("#quickselect"),
$('#quickselect .select2').hide() closeOnSelect: opt.closeOnSelect,
opt.optionType == 'plaintext' && $('.select2-results').css({'line-height': '40px'}) // 支持无限滚动
modWindowHeight($('.select2-results').outerHeight()) ajax: {
opt.enableSearch && utools.setSubInput(({text})=>{ transport: (params, success, failure) => {
$("#quickselect .select2-search__field").val(text).trigger('input') let cont, pageSize = 50
modWindowHeight($('.select2-results').outerHeight()) let term = (params.data.term || '').toLowerCase()
}, opt.placeholder) let page = (params.data.page || 1)
$('#selectBox').on('select2:select', function (e) { let items = $('#selectBox').data('options')
let result = $('#selectBox').data('options')[$(this).val()] let results = items.filter(x => {
delete result.selected if (opt.optionType == 'json') cont = x.title
callback(result) else if (opt.optionType == 'html') cont = x.text.replace(/<[^<>]+>/g, '')
if (opt.closeOnSelect) { else cont = x.text
$('#selectBox').off('select2:select') return cont.toLowerCase().includes(term) || PinyinMatch.match(cont, term)
utools.removeSubInput() })
$("#quickselect").remove() let paged = results.slice((page - 1) * pageSize, page * pageSize)
let options = { results: paged, pagination: { more: results.length >= page * pageSize } }
success(options)
}
},
} }
}) // 显示html时不转义标签
if (opt.optionType != 'plaintext') prefer.escapeMarkup = markup => markup
$('#selectBox').select2(prefer)
$('#selectBox').val(null).trigger('change')
$('#selectBox').select2('open')
$("#quickselect .select2-search__field").focus()
$('#quickselect .select2').hide()
opt.optionType == 'plaintext' && $('.select2-results').css({'line-height': '40px'})
modWindowHeight($('.select2-results').outerHeight())
opt.enableSearch && utools.setSubInput(({text})=>{
$("#quickselect .select2-search__field").val(text).trigger('input')
modWindowHeight($('.select2-results').outerHeight())
}, opt.placeholder)
$('#selectBox').on('select2:select', function (e) {
let result = $('#selectBox').data('options')[$(this).val()]
delete result.selected
reslove(result)
if (opt.closeOnSelect) {
$('#selectBox').off('select2:select')
utools.removeSubInput()
$("#quickselect").remove()
}
})
});
}, },
// 更新选项列表 // 更新选项列表
@ -273,25 +261,22 @@ quickcommand = {
}, },
// 显示文本输入框 // 显示文本输入框
showTextAera: function (callback, placeholder = "") { showTextAera: function (placeholder = "") {
let helps = `正确用法: return new Promise((reslove, reject) => {
quickcommand.showTextAera(text => { utools.setExpendHeight(600)
//do something... var html = `
}, placeholder)` <div id="quicktextarea">
if (!(callback instanceof Function)) throw helps <textarea placeholder="${placeholder}"></textarea>
utools.setExpendHeight(600) <button></button>
var html = ` </div>`
<div id="quicktextarea"> $("body").append(html)
<textarea placeholder="${placeholder}"></textarea> $("#quicktextarea").addClass("fadeInUpWindow")
<button></button> $("#quicktextarea > button").click(function () {
</div>` $("#quicktextarea").addClass("fadeOutDownWindow")
$("body").append(html) setTimeout(() => { $("#quicktextarea").remove() }, 300);
$("#quicktextarea").addClass("fadeInUpWindow") reslove($("#quicktextarea > textarea").val())
$("#quicktextarea > button").click(function () { })
$("#quicktextarea").addClass("fadeOutDownWindow") });
setTimeout(() => { $("#quicktextarea").remove() }, 300);
callback($("#quicktextarea > textarea").val())
})
}, },
// 关闭进程 // 关闭进程