mirror of
https://github.com/fofolee/uTools-quickcommand.git
synced 2025-07-02 05:52:46 +08:00
由回调改为promise
This commit is contained in:
parent
c21fb57031
commit
427b396c84
293
src/preload.js
293
src/preload.js
@ -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())
|
|
||||||
})
|
|
||||||
},
|
},
|
||||||
|
|
||||||
// 关闭进程
|
// 关闭进程
|
||||||
|
Loading…
x
Reference in New Issue
Block a user