added copy and paste support for tags input

This commit is contained in:
DESKTOP-GENO133\IvanPlex
2024-02-24 11:41:16 -07:00
parent 80fd9e136a
commit 0dbaa68fc0

View File

@@ -299,8 +299,7 @@
if (self.$element.attr('disabled')) { if (self.$element.attr('disabled')) {
self.$input.attr('disabled', 'disabled'); self.$input.attr('disabled', 'disabled');
return; return;
} }
switch (event.which) { switch (event.which) {
// BACKSPACE // BACKSPACE
case 8: case 8:
@@ -339,7 +338,31 @@
$nextTag.after($inputWrapper); $nextTag.after($inputWrapper);
$input.focus(); $input.focus();
} }
break; break;
//COPY EVENT
case 67:
if (event.ctrlKey) {
event.preventDefault();
navigator.clipboard.writeText(self.itemsArray.join(" "));
}
break;
//PASTE EVENT
case 86:
if (event.ctrlKey) {
setTimeout(function () {
var pastedString = $input.val();
//clear pasted string.
$input.val('');
//process input one by one.
if (pastedString.length > 0) {
var tagsToAdd = pastedString.split(" ");
tagsToAdd.forEach(x => {
self.add(x);
})
}
}, 250);
}
break;
default: default:
// ignore // ignore
} }
@@ -358,17 +381,13 @@
maxLengthReached = self.options.maxChars && text.length >= self.options.maxChars; maxLengthReached = self.options.maxChars && text.length >= self.options.maxChars;
if (self.options.freeInput && (keyCombinationInList(event, self.options.confirmKeys) || maxLengthReached)) { if (self.options.freeInput && (keyCombinationInList(event, self.options.confirmKeys) || maxLengthReached)) {
//check if confirm keys are in input and then replace them. //check if confirm keys are in input and then replace them.
event.preventDefault();
text = text.replace(String.fromCharCode(event.which), "") text = text.replace(String.fromCharCode(event.which), "")
// Only attempt to add a tag if there is data in the field // Only attempt to add a tag if there is data in the field
if (text.length !== 0) { if (text.length !== 0) {
self.add(maxLengthReached ? text.substr(0, self.options.maxChars) : text); self.add(maxLengthReached ? text.substr(0, self.options.maxChars) : text);
$input.val(''); $input.val('');
} }
// If the field is empty, let the event triggered fire as usual
if (self.options.cancelConfirmKeysOnEmpty === false) {
event.preventDefault();
}
} }
var textLength = $input.val().length, var textLength = $input.val().length,
wordSpace = Math.ceil(textLength / 5), wordSpace = Math.ceil(textLength / 5),
@@ -388,17 +407,13 @@
maxLengthReached = self.options.maxChars && text.length >= self.options.maxChars; maxLengthReached = self.options.maxChars && text.length >= self.options.maxChars;
if (self.options.freeInput && (keyCombinationInList(event, self.options.confirmKeys) || maxLengthReached)) { if (self.options.freeInput && (keyCombinationInList(event, self.options.confirmKeys) || maxLengthReached)) {
//check if confirm keys are in input and then replace them. //check if confirm keys are in input and then replace them.
text = text.replace(String.fromCharCode(event.which), "") event.preventDefault();
text = text.replace(String.fromCharCode(event.which), "");
// Only attempt to add a tag if there is data in the field // Only attempt to add a tag if there is data in the field
if (text.length !== 0) { if (text.length !== 0) {
self.add(maxLengthReached ? text.substr(0, self.options.maxChars) : text); self.add(maxLengthReached ? text.substr(0, self.options.maxChars) : text);
$input.val(''); $input.val('');
} }
// If the field is empty, let the event triggered fire as usual
if (self.options.cancelConfirmKeysOnEmpty === false) {
event.preventDefault();
}
} }
// Reset internal input's size // Reset internal input's size