@node-red/editor-client 4.1.6 → 4.1.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1288,6 +1288,8 @@
1288
1288
  "toggle-show-tips": "Basculer l'affichage des astuces",
1289
1289
  "show-about": "Afficher la description de Node-RED",
1290
1290
  "show-welcome-tour": "Afficher la visite de bienvenue",
1291
+ "show-first-tab": "Afficher le premier onglet",
1292
+ "show-last-tab": "Afficher le dernier onglet",
1291
1293
  "show-next-tab": "Afficher l'onglet suivant",
1292
1294
  "show-previous-tab": "Afficher l'onglet précédent",
1293
1295
  "add-flow": "Ajouter un flux",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@node-red/editor-client",
3
- "version": "4.1.6",
3
+ "version": "4.1.8",
4
4
  "license": "Apache-2.0",
5
5
  "repository": {
6
6
  "type": "git",
package/public/red/about CHANGED
@@ -1,3 +1,26 @@
1
+ #### 4.1.8: Maintenance Release
2
+
3
+ - Add badges to func node tabs with code in (#5585) @knolleary
4
+ - Fix typo in French link node description (#5530) @LPe7
5
+ - Encode branch name in delete request (#5584) @knolleary
6
+ - Introduce `show-first-tab` and `show-last-tab` actions (#5583) @GogoVega
7
+ - Fix "connected to ..." log string in tcp in/out nodes using TLS (#5484) @marcows
8
+ - TreeList: Fix arrow navigation through filtered TreeList (#5431) @piotrbogun
9
+ - Update tar dependency (#5582) @knolleary
10
+ - Allow Node-RED section of help sidebar to be hidden (#5581) @knolleary
11
+ - Allow theme plugin to override settings and add menu options (#5580) @knolleary
12
+
13
+ #### 4.1.7: Maintenance Release
14
+
15
+ - Do not block touch events on ports (#5527) @knolleary
16
+ - Allow palette.categories to be set via theme plugin (#5526) @knolleary
17
+ - Bump i18next version (#5519) @knolleary
18
+ - Suppress i18n notice in frontend (#5528) @knolleary
19
+ - Set showSupportNotice option on i18n (#5520) @knolleary
20
+ - Do not cache subflow colors as each subflow can have its own (#5518) @knolleary
21
+ - Update tar/multer deps (#5515) @knolleary
22
+ - Remove IE7 CSS hacks (#5511) @bonanitech
23
+
1
24
  #### 4.1.6: Maintenance Release
2
25
 
3
26
  - Allow palette.theme to be set via theme plugin and include icons (#5500) @knolleary
package/public/red/red.js CHANGED
@@ -1363,6 +1363,7 @@ RED.i18n = (function() {
1363
1363
  apiRootUrl = options.apiRootUrl||"";
1364
1364
  var preferredLanguage = localStorage.getItem("editor-language") || detectLanguage();
1365
1365
  var opts = {
1366
+ showSupportNotice: false,
1366
1367
  backend: {
1367
1368
  loadPath: apiRootUrl+'locales/__ns__?lng=__lng__',
1368
1369
  },
@@ -11190,6 +11191,9 @@ RED.utils = (function() {
11190
11191
 
11191
11192
  function getNodeColor(type, def) {
11192
11193
  def = def || {};
11194
+ if (type === 'subflow') {
11195
+ return def.color
11196
+ }
11193
11197
  if (!nodeColorCache.hasOwnProperty(type)) {
11194
11198
  const paletteTheme = RED.settings.theme('palette.theme') || [];
11195
11199
  if (paletteTheme.length > 0) {
@@ -12096,8 +12100,9 @@ RED.utils = (function() {
12096
12100
  evt.preventDefault();
12097
12101
  evt.stopPropagation();
12098
12102
  if (focussed.children && Array.isArray(focussed.children) && focussed.children.length > 0 && focussed.treeList.container.hasClass("expanded")) {
12099
- target = focussed.children[0];
12100
- } else {
12103
+ target = that._getFirstVisibleChild(focussed);
12104
+ }
12105
+ if (!target) {
12101
12106
  target = that._getNextSibling(focussed);
12102
12107
  while (!target && focussed.parent) {
12103
12108
  focussed = focussed.parent;
@@ -12152,12 +12157,31 @@ RED.utils = (function() {
12152
12157
  this.data(this.options.data);
12153
12158
  }
12154
12159
  },
12160
+ _isItemVisible: function(item) {
12161
+ return item.treeList && item.treeList.container && item.treeList.container.parent().css('display') !== 'none';
12162
+ },
12163
+ _getFirstVisibleChild: function(item) {
12164
+ if (!item.children || !Array.isArray(item.children)) {
12165
+ return null;
12166
+ }
12167
+ for (var i = 0; i < item.children.length; i++) {
12168
+ if (this._isItemVisible(item.children[i])) {
12169
+ return item.children[i];
12170
+ }
12171
+ }
12172
+ return null;
12173
+ },
12155
12174
  _getLastDescendant: function(item) {
12156
12175
  // Gets the last visible descendant of the item
12157
12176
  if (!item.children || !item.treeList.container.hasClass("expanded") || item.children.length === 0) {
12158
12177
  return item;
12159
12178
  }
12160
- return this._getLastDescendant(item.children[item.children.length-1]);
12179
+ for (var i = item.children.length - 1; i >= 0; i--) {
12180
+ if (this._isItemVisible(item.children[i])) {
12181
+ return this._getLastDescendant(item.children[i]);
12182
+ }
12183
+ }
12184
+ return item;
12161
12185
  },
12162
12186
  _getPreviousSibling: function(item) {
12163
12187
  var candidates;
@@ -12167,11 +12191,12 @@ RED.utils = (function() {
12167
12191
  candidates = item.parent.children;
12168
12192
  }
12169
12193
  var index = candidates.indexOf(item);
12170
- if (index === 0) {
12171
- return null;
12172
- } else {
12173
- return candidates[index-1];
12194
+ for (var i = index - 1; i >= 0; i--) {
12195
+ if (this._isItemVisible(candidates[i])) {
12196
+ return candidates[i];
12197
+ }
12174
12198
  }
12199
+ return null;
12175
12200
  },
12176
12201
  _getNextSibling: function(item) {
12177
12202
  var candidates;
@@ -12181,11 +12206,12 @@ RED.utils = (function() {
12181
12206
  candidates = item.parent.children;
12182
12207
  }
12183
12208
  var index = candidates.indexOf(item);
12184
- if (index === candidates.length - 1) {
12185
- return null;
12186
- } else {
12187
- return candidates[index+1];
12209
+ for (var i = index + 1; i < candidates.length; i++) {
12210
+ if (this._isItemVisible(candidates[i])) {
12211
+ return candidates[i];
12212
+ }
12188
12213
  }
12214
+ return null;
12189
12215
  },
12190
12216
  _addChildren: function(container,parent,children,depth,onCompleteChildren) {
12191
12217
  var that = this;
@@ -15071,6 +15097,20 @@ RED.tabs = (function() {
15071
15097
  }
15072
15098
  }
15073
15099
 
15100
+ function activateFirstTab() {
15101
+ const first = ul.find("li.red-ui-tab:not(.hide-tab)").first();
15102
+ if (first.length > 0) {
15103
+ activateTab(first.find("a"));
15104
+ }
15105
+ }
15106
+
15107
+ function activateLastTab() {
15108
+ const last = ul.find("li.red-ui-tab:not(.hide-tab)").last();
15109
+ if (last.length > 0) {
15110
+ activateTab(last.find("a"));
15111
+ }
15112
+ }
15113
+
15074
15114
  function findPreviousVisibleTab(li) {
15075
15115
  if (!li) {
15076
15116
  li = ul.find("li.active");
@@ -15429,6 +15469,8 @@ RED.tabs = (function() {
15429
15469
  },
15430
15470
  removeTab: removeTab,
15431
15471
  activateTab: activateTab,
15472
+ firstTab: activateFirstTab,
15473
+ lastTab: activateLastTab,
15432
15474
  nextTab: activateNextTab,
15433
15475
  previousTab: activatePreviousTab,
15434
15476
  resize: updateTabWidths,
@@ -22284,6 +22326,20 @@ RED.workspaces = (function() {
22284
22326
  workspaceIndex = 0
22285
22327
  })
22286
22328
 
22329
+ RED.actions.add("core:show-first-tab", function () {
22330
+ const oldActive = activeWorkspace;
22331
+ workspace_tabs.firstTab();
22332
+ if (oldActive !== activeWorkspace) {
22333
+ addToViewStack(oldActive);
22334
+ }
22335
+ });
22336
+ RED.actions.add("core:show-last-tab", function () {
22337
+ const oldActive = activeWorkspace;
22338
+ workspace_tabs.lastTab();
22339
+ if (oldActive !== activeWorkspace) {
22340
+ addToViewStack(oldActive);
22341
+ }
22342
+ });
22287
22343
  RED.actions.add("core:show-next-tab",function() {
22288
22344
  var oldActive = activeWorkspace;
22289
22345
  workspace_tabs.nextTab();
@@ -26020,7 +26076,8 @@ RED.view = (function() {
26020
26076
  clearSuggestedFlow();
26021
26077
  RED.contextMenu.hide();
26022
26078
  evt = evt || d3.event;
26023
- if (evt.button !== 0) {
26079
+
26080
+ if (!evt.touches && evt.button !== 0) {
26024
26081
  return;
26025
26082
  }
26026
26083
  if (mouse_mode === RED.state.SELECTING_NODE) {
@@ -26876,7 +26933,7 @@ RED.view = (function() {
26876
26933
  d3.event.stopPropagation();
26877
26934
  return;
26878
26935
  }
26879
- if (d3.event.button !== 0) {
26936
+ if (!d3.event.touches && d3.event.button !== 0) {
26880
26937
  return
26881
26938
  }
26882
26939
  mousedown_link = d;
@@ -34249,24 +34306,25 @@ RED.sidebar.help = (function() {
34249
34306
  }
34250
34307
 
34251
34308
  function refreshHelpIndex() {
34252
- var modules = RED.nodes.registry.getModuleList();
34253
- var moduleNames = Object.keys(modules);
34309
+ const modules = RED.nodes.registry.getModuleList();
34310
+ const moduleNames = Object.keys(modules);
34254
34311
  moduleNames.sort();
34255
34312
 
34256
- var nodeHelp = {
34313
+ const nodeHelp = {
34257
34314
  label: RED._("sidebar.help.nodeHelp"),
34258
34315
  children: [],
34259
34316
  expanded: true
34260
34317
  };
34261
- var tours = RED.tourGuide.list().map(function (item) {
34318
+ const tours = RED.tourGuide.list().map(function (item) {
34262
34319
  return {
34263
34320
  icon: "fa fa-play-circle-o",
34264
34321
  label: item.label,
34265
34322
  tour: item.path,
34266
34323
  };
34267
34324
  });
34268
- var helpData = [
34269
- {
34325
+ const helpData = []
34326
+ if (RED.settings.theme("help.node-red") !== false) {
34327
+ helpData.push({
34270
34328
  label: "Node-RED",
34271
34329
  children: [
34272
34330
  {
@@ -34280,9 +34338,11 @@ RED.sidebar.help = (function() {
34280
34338
  }
34281
34339
 
34282
34340
  ]
34283
- },
34284
- nodeHelp
34285
- ];
34341
+ })
34342
+ }
34343
+
34344
+ helpData.push(nodeHelp)
34345
+
34286
34346
  var subflows = RED.nodes.registry.getNodeTypes().filter(function(t) {return /subflow/.test(t)});
34287
34347
  if (subflows.length > 0) {
34288
34348
  nodeHelp.children.push({
@@ -56588,7 +56648,7 @@ RED.projects.settings = (function() {
56588
56648
  text: RED._("sidebar.project.projectSettings.deleteBranch"),
56589
56649
  click: function() {
56590
56650
  notification.close();
56591
- var url = "projects/"+activeProject.name+"/branches/"+entry.name;
56651
+ var url = "projects/"+activeProject.name+"/branches/"+encodeURIComponent(entry.name);
56592
56652
  var options = {
56593
56653
  url: url,
56594
56654
  type: "DELETE",