From 1bd607daa5cb2a8edaa93b5fea87d10b09482437 Mon Sep 17 00:00:00 2001 From: kulikov-a <36099472+kulikov-a@users.noreply.github.com> Date: Wed, 10 Mar 2021 12:43:37 +0300 Subject: [PATCH] opnsense_ui.js: add copy\paste --- src/opnsense/www/js/opnsense_ui.js | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/src/opnsense/www/js/opnsense_ui.js b/src/opnsense/www/js/opnsense_ui.js index 881de6646..620e06ae5 100644 --- a/src/opnsense/www/js/opnsense_ui.js +++ b/src/opnsense/www/js/opnsense_ui.js @@ -296,6 +296,10 @@ function formatTokenizersUI() { * clear multiselect boxes on click event, works on standard and tokenized versions */ function addMultiSelectClearUI() { + //enable Paste if supported + if (typeof navigator.clipboard.readText === 'function') { + $('.fa-paste').parent().show(); + } $('[id*="clear-options"]').each(function() { $(this).click(function() { const id = $(this).attr("id").replace(/_*clear-options_*/, ''); @@ -356,7 +360,22 @@ function addMultiSelectClearUI() { console.log("done"); }); }); - + $('[id*="paste-options"]').each(function() { + $(this).click(function(e) { + e.preventDefault(); + const id = $(this).attr("id").replace(/_*paste-options_*/, ''); + navigator.clipboard.readText() + .then(cbtext => { + let values = $.trim(cbtext).replace(/\n|\r/g, ",").split(","); + $.each(values, function( index, value ) { + $('select[id="' + id + '"]').tokenize2().trigger('tokenize:tokens:add', [value, value, true]); + }); + }) + .catch(err => { + console.error('Failed to read clipboard contents: ', err); + }); + }); + }); }