diff --git a/packages/node_modules/@node-red/editor-client/src/js/keymap.json b/packages/node_modules/@node-red/editor-client/src/js/keymap.json index 1bedab6e8..4cf28d227 100644 --- a/packages/node_modules/@node-red/editor-client/src/js/keymap.json +++ b/packages/node_modules/@node-red/editor-client/src/js/keymap.json @@ -92,7 +92,6 @@ "ctrl-+": "core:zoom-in", "ctrl--": "core:zoom-out", "ctrl-0": "core:zoom-reset" - }, "red-ui-editor-stack": { "ctrl-enter": "core:confirm-edit-tray", diff --git a/packages/node_modules/@node-red/editor-client/src/js/nodes.js b/packages/node_modules/@node-red/editor-client/src/js/nodes.js index 2a7b440f2..f569b6d5a 100644 --- a/packages/node_modules/@node-red/editor-client/src/js/nodes.js +++ b/packages/node_modules/@node-red/editor-client/src/js/nodes.js @@ -3013,7 +3013,12 @@ RED.nodes = (function() { }); RED.events.on('deploy', function () { allNodes.clearState() - }) + }); + RED.actions.add("core:trigger-selected-nodes-action", function () { + const selectedNodes = RED.view.selection().nodes || []; + // Triggers the button action of the selected nodes + selectedNodes.forEach((node) => RED.view.clickNodeButton(node)); + }); }, registry:registry, setNodeList: registry.setNodeList, diff --git a/packages/node_modules/@node-red/editor-client/src/js/ui/palette-editor.js b/packages/node_modules/@node-red/editor-client/src/js/ui/palette-editor.js index dbf294644..c65601ef2 100644 --- a/packages/node_modules/@node-red/editor-client/src/js/ui/palette-editor.js +++ b/packages/node_modules/@node-red/editor-client/src/js/ui/palette-editor.js @@ -15,26 +15,35 @@ **/ RED.palette.editor = (function() { - var disabled = false; let catalogues = [] const loadedCatalogs = [] - var editorTabs; - let filterInput; - let searchInput; - let nodeList; - let packageList; - let fullList = [] + + // Loaded modules let loadedList = []; - let filteredList = []; let loadedIndex = {}; - var typesInUse = {}; - var nodeEntries = {}; - var eventTimers = {}; - var activeFilter = ""; + // Module list + let fullList = []; + let filteredList = []; - var semverre = /^(\d+)(\.(\d+))?(\.(\d+))?(-([0-9A-Za-z-]+))?(\.([0-9A-Za-z-.]+))?$/; - var NUMBERS_ONLY = /^\d+$/; + // Modules installed + let nodeEntries = {}; + + // EditableList + let nodeList; + let packageList; + + // Nodes tab - filter + let activeFilter = ""; + // Nodes tab - search input + let filterInput; + // Install tab - search input + let searchInput; + + const typesInUse = {}; + + const semverre = /^(\d+)(\.(\d+))?(\.(\d+))?(-([0-9A-Za-z-]+))?(\.([0-9A-Za-z-.]+))?$/; + const NUMBERS_ONLY = /^\d+$/; function SemVerPart(part) { this.number = 0; @@ -196,6 +205,7 @@ RED.palette.editor = (function() { } } + const eventTimers = {}; function refreshNodeModule(module) { if (!eventTimers.hasOwnProperty(module)) { eventTimers[module] = setTimeout(function() { @@ -272,7 +282,6 @@ RED.palette.editor = (function() { } } - function _refreshNodeModule(module) { if (!nodeEntries.hasOwnProperty(module)) { nodeEntries[module] = {info:RED.nodes.registry.getModule(module)}; @@ -422,16 +431,10 @@ RED.palette.editor = (function() { } } - - var catalogueCount; - var catalogueLoadStatus = []; - var catalogueLoadStart; - - var activeSort = sortModulesRelevance; + let activeSort = sortModulesRelevance; function refreshCatalogues (done) { - catalogueLoadStatus = []; - catalogueCount = catalogues.length; + const catalogueCount = catalogues.length; loadedList = [] loadedIndex = {} loadedCatalogs.length = 0 @@ -441,7 +444,7 @@ RED.palette.editor = (function() { $.getJSON(url, {_: new Date().getTime()},function(v) { loadedCatalogs.push({ index: index, url: url, name: v.name, updated_at: v.updated_at, modules_count: (v.modules || []).length }) handleCatalogResponse({ url: url, name: v.name},index,v); - }).fail(function(jqxhr, textStatus, error) { + }).fail(function(_jqxhr, _textStatus, error) { console.warn("Error loading catalog",url,":",error); }).always(function() { handled++; @@ -494,7 +497,7 @@ RED.palette.editor = (function() { $(".red-ui-palette-module-shade-status").text(RED._('palette.editor.loading')); $("#red-ui-palette-module-install-shade").show(); - catalogueLoadStart = Date.now() + const catalogueLoadStart = Date.now() refreshCatalogues(function () { refreshNodeModuleList(); updateCatalogFilter(loadedCatalogs) @@ -609,39 +612,44 @@ RED.palette.editor = (function() { return -1 * (A.info.timestamp-B.info.timestamp); } - var installAllowList = ['*']; - var installDenyList = []; - var updateAllowed = true; - var updateAllowList = ['*']; - var updateDenyList = []; + let installAllowList = ['*']; + let installDenyList = []; + let updateAllowed = true; + let updateAllowList = ['*']; + let updateDenyList = []; - var settingsPane; + let editorTabs; + let settingsPane; function init() { - catalogues = RED.settings.theme('palette.catalogues')||['https://catalogue.nodered.org/catalogue.json'] if (RED.settings.get('externalModules.palette.allowInstall', true) === false) { return; } - var settingsAllowList = RED.settings.get("externalModules.palette.allowList") - var settingsDenyList = RED.settings.get("externalModules.palette.denyList") + + const settingsAllowList = RED.settings.get("externalModules.palette.allowList") + const settingsDenyList = RED.settings.get("externalModules.palette.denyList") + const settingsUpdateAllowList = RED.settings.get("externalModules.palette.allowUpdateList") + const settingsUpdateDenyList = RED.settings.get("externalModules.palette.denyUpdateList") + if (settingsAllowList || settingsDenyList) { installAllowList = settingsAllowList; - installDenyList = settingsDenyList + installDenyList = settingsDenyList; } - installAllowList = RED.utils.parseModuleList(installAllowList); - installDenyList = RED.utils.parseModuleList(installDenyList); - - var settingsUpdateAllowList = RED.settings.get("externalModules.palette.allowUpdateList") - var settingsUpdateDenyList = RED.settings.get("externalModules.palette.denyUpdateList") if (settingsUpdateAllowList || settingsUpdateDenyList) { updateAllowList = settingsUpdateAllowList; updateDenyList = settingsUpdateDenyList; } + + installAllowList = RED.utils.parseModuleList(installAllowList); + installDenyList = RED.utils.parseModuleList(installDenyList); + + updateAllowed = RED.settings.get("externalModules.palette.allowUpdate", true); updateAllowList = RED.utils.parseModuleList(updateAllowList); updateDenyList = RED.utils.parseModuleList(updateDenyList); - updateAllowed = RED.settings.get("externalModules.palette.allowUpdate",true); - if (RED.settings.get("editorTheme.palette.checkForUpdates", true) === true) { + catalogues = RED.settings.theme('palette.catalogues') || ['https://catalogue.nodered.org/catalogue.json']; + + if (RED.settings.get("editorTheme.palette.checkForUpdates", false) === true) { // Enable checking for updates triggered every 30 minutes initCheckForUpdatesInterval(); } @@ -665,7 +673,7 @@ RED.palette.editor = (function() { // Add the update status to the status bar addUpdateInfoToStatusBar(); - + // Load catalogues refreshCatalogues() RED.actions.add("core:manage-palette",function() { diff --git a/packages/node_modules/@node-red/editor-client/src/sass/palette.scss b/packages/node_modules/@node-red/editor-client/src/sass/palette.scss index a3afc3d76..8e45335a7 100644 --- a/packages/node_modules/@node-red/editor-client/src/sass/palette.scss +++ b/packages/node_modules/@node-red/editor-client/src/sass/palette.scss @@ -26,6 +26,26 @@ @include disable-selection; @include component-border; transition: width 0.2s ease-in-out; + + &:before { + content: ''; + top: 0px; + bottom: 0px; + right: 0px; + width: 7px; + height: 100%; + z-index: 4; + position: absolute; + -webkit-mask-image: url(images/grip.svg); + mask-image: url(images/grip.svg); + -webkit-mask-size: auto; + mask-size: auto; + -webkit-mask-position: 50% 50%; + mask-position: 50% 50%; + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + background-color: var(--red-ui-grip-color); + } } .red-ui-palette-closed {