@eclipse-scout/core 22.0.1 → 22.0.11

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.
Files changed (156) hide show
  1. package/dist/eclipse-scout-core-e5e8740e3649f5b9f279.min.js +2 -0
  2. package/dist/eclipse-scout-core-e5e8740e3649f5b9f279.min.js.map +1 -0
  3. package/dist/eclipse-scout-core-theme-74b63e0d57bed407a729.min.css +1 -0
  4. package/dist/eclipse-scout-core-theme-dark-b82aea152f416e38ce7f.min.css +1 -0
  5. package/dist/eclipse-scout-core-theme-dark.css +517 -361
  6. package/dist/eclipse-scout-core-theme-dark.css.map +1 -1
  7. package/dist/eclipse-scout-core-theme.css +300 -144
  8. package/dist/eclipse-scout-core-theme.css.map +1 -1
  9. package/dist/eclipse-scout-core.js +1150 -766
  10. package/dist/eclipse-scout-core.js.map +1 -1
  11. package/dist/file-list +7 -0
  12. package/dist/locales.json +47126 -0
  13. package/dist/texts.json +1153 -0
  14. package/package.json +2 -2
  15. package/src/ErrorHandler.js +66 -28
  16. package/src/{table/TableHeaderMenuButtonKeyStroke.js → action/ActionExecKeyStroke.js} +4 -5
  17. package/src/action/Button.less +1 -0
  18. package/src/box/Box.less +10 -6
  19. package/src/breadcrumbbar/BreadcrumbItem.less +3 -6
  20. package/src/calendar/Calendar.js +40 -58
  21. package/src/calendar/Calendar.less +10 -10
  22. package/src/calendar/CalendarLayout.js +3 -1
  23. package/src/checkbox/CheckBox.less +3 -1
  24. package/src/datepicker/DatePicker.less +1 -0
  25. package/src/datepicker/DatePickerTouchPopup.js +8 -0
  26. package/src/desktop/DisableBrowserF5ReloadKeyStroke.js +1 -0
  27. package/src/desktop/bench/DesktopTabSelectKeyStroke.js +2 -1
  28. package/src/desktop/desktoptab/DesktopTab.less +5 -2
  29. package/src/desktop/desktoptab/DesktopTabArea.less +7 -3
  30. package/src/desktop/desktoptab/DisableBrowserTabSwitchingKeyStroke.js +1 -0
  31. package/src/desktop/navigation/DesktopNavigation.less +4 -0
  32. package/src/desktop/navigation/EnlargeNavigationKeyStroke.js +1 -0
  33. package/src/desktop/navigation/ShrinkNavigationKeyStroke.js +1 -0
  34. package/src/desktop/notification/DesktopNotification.js +11 -4
  35. package/src/desktop/notification/DesktopNotification.less +5 -3
  36. package/src/desktop/outline/Outline.less +4 -4
  37. package/src/desktop/viewbutton/ViewButton.less +13 -9
  38. package/src/desktop/viewbutton/ViewMenuPopupEnterKeyStroke.js +2 -1
  39. package/src/desktop/viewbutton/ViewMenuTab.less +3 -2
  40. package/src/filechooser/FileChooser.js +1 -1
  41. package/src/filechooser/FileChooser.less +16 -11
  42. package/src/focus/FocusContext.js +11 -8
  43. package/src/focus/FocusManager.js +24 -5
  44. package/src/form/Form.less +1 -0
  45. package/src/form/fields/LookupBox.js +5 -2
  46. package/src/form/fields/LookupBox.less +28 -2
  47. package/src/form/fields/TextFieldIcon.less +2 -2
  48. package/src/form/fields/ValueField.js +11 -2
  49. package/src/form/fields/breadcrumbbarfield/BreadcrumbBarField.less +20 -0
  50. package/src/form/fields/button/ButtonKeyStroke.js +0 -3
  51. package/src/form/fields/datefield/DateField.js +31 -47
  52. package/src/form/fields/filechooserfield/FileChooserFieldBrowseKeyStroke.js +1 -3
  53. package/src/form/fields/filechooserfield/FileChooserFieldDeleteKeyStroke.js +1 -3
  54. package/src/form/fields/groupbox/GroupBox.js +14 -9
  55. package/src/form/fields/groupbox/GroupBox.less +1 -0
  56. package/src/form/fields/htmlfield/HtmlField.less +0 -1
  57. package/src/form/fields/listbox/ListBox.js +13 -7
  58. package/src/form/fields/lookupfield/lookupField.js +6 -5
  59. package/src/form/fields/smartfield/ProposalField.js +2 -1
  60. package/src/form/fields/smartfield/ProposalTreeNode.js +4 -8
  61. package/src/form/fields/smartfield/SmartField.js +4 -20
  62. package/src/form/fields/smartfield/SmartField.less +24 -11
  63. package/src/form/fields/splitbox/SplitBoxCollapseKeyStroke.js +1 -0
  64. package/src/form/fields/splitbox/SplitBoxFirstCollapseKeyStroke.js +1 -0
  65. package/src/form/fields/splitbox/SplitBoxSecondCollapseKeyStroke.js +1 -0
  66. package/src/form/fields/tabbox/TabAreaLayout.js +63 -66
  67. package/src/form/fields/tabbox/TabAreaLeftKeyStroke.js +2 -0
  68. package/src/form/fields/tabbox/TabAreaRightKeyStroke.js +2 -0
  69. package/src/form/fields/tabbox/TabBox.js +8 -7
  70. package/src/form/fields/tabbox/TabBox.less +2 -1
  71. package/src/form/fields/tabbox/TabBoxHeader.js +4 -0
  72. package/src/form/fields/tabbox/TabBoxHeaderLayout.js +5 -5
  73. package/src/form/fields/tabbox/TabItem.js +4 -0
  74. package/src/form/fields/treebox/TreeBox.js +6 -5
  75. package/src/glasspane/GlassPane.js +3 -3
  76. package/src/group/Group.less +1 -1
  77. package/src/index.js +1 -1
  78. package/src/index.less +1 -0
  79. package/src/jquery/jquery-scout.js +17 -4
  80. package/src/keystroke/CloseKeyStroke.js +1 -0
  81. package/src/keystroke/ContextMenuKeyStroke.js +1 -0
  82. package/src/keystroke/FocusFilterFieldKeyStroke.js +1 -0
  83. package/src/keystroke/KeyStroke.js +11 -3
  84. package/src/keystroke/TabItemKeyStroke.js +8 -5
  85. package/src/logging/logging.js +16 -8
  86. package/src/login/LoginBox.js +3 -2
  87. package/src/login/LoginBox.less +18 -1
  88. package/src/menu/ContextMenuPopup.less +9 -2
  89. package/src/menu/Menu.less +1 -0
  90. package/src/menu/MenuExecKeyStroke.js +3 -17
  91. package/src/menu/MenuNavigationKeyStroke.js +1 -0
  92. package/src/menu/menubar/MenuBarLeftKeyStroke.js +2 -0
  93. package/src/menu/menubar/MenuBarRightKeyStroke.js +2 -0
  94. package/src/messagebox/MessageBox.less +17 -17
  95. package/src/modeselector/Mode.less +15 -37
  96. package/src/modeselector/ModeSelector.js +1 -1
  97. package/src/modeselector/ModeSelector.less +2 -1
  98. package/src/planner/Planner.js +2 -0
  99. package/src/planner/PlannerHeader.less +2 -1
  100. package/src/popup/Popup.js +24 -8
  101. package/src/popup/PopupLayout.js +2 -8
  102. package/src/scrollbar/Scrollbar.less +8 -1
  103. package/src/scrollbar/scrollbars.js +26 -4
  104. package/src/session/Session.js +8 -5
  105. package/src/style/colors-dark.less +17 -10
  106. package/src/style/colors.less +11 -3
  107. package/src/style/fonts.less +10 -1
  108. package/src/style/mixins.less +16 -12
  109. package/src/style/sizes-dark.less +4 -1
  110. package/src/style/sizes.less +17 -9
  111. package/src/table/Table.js +62 -48
  112. package/src/table/Table.less +50 -20
  113. package/src/table/TableAdapter.js +9 -12
  114. package/src/table/TableHeader.js +10 -8
  115. package/src/table/TableHeader.less +1 -0
  116. package/src/table/TableHeaderMenu.js +3 -1
  117. package/src/table/TableHeaderMenu.less +7 -2
  118. package/src/table/TableHeaderMenuButton.js +2 -2
  119. package/src/table/TableLayout.js +6 -0
  120. package/src/table/columns/BooleanColumn.js +2 -2
  121. package/src/table/columns/Column.js +10 -7
  122. package/src/table/editor/CellEditorPopup.js +29 -15
  123. package/src/table/keystrokes/AbstractTableNavigationKeyStroke.js +1 -0
  124. package/src/table/keystrokes/TableCopyKeyStroke.js +1 -0
  125. package/src/table/keystrokes/TableNavigationCollapseKeyStroke.js +2 -2
  126. package/src/table/keystrokes/TableNavigationEndKeyStroke.js +2 -2
  127. package/src/table/keystrokes/TableNavigationExpandKeyStroke.js +2 -2
  128. package/src/table/keystrokes/TableNavigationHomeKeyStroke.js +2 -2
  129. package/src/table/keystrokes/TableNavigationPageDownKeyStroke.js +2 -2
  130. package/src/table/keystrokes/TableNavigationPageUpKeyStroke.js +2 -2
  131. package/src/table/keystrokes/TableNavigationUpKeyStroke.js +2 -2
  132. package/src/table/keystrokes/TableRefreshKeyStroke.js +2 -2
  133. package/src/table/keystrokes/TableSelectAllKeyStroke.js +3 -2
  134. package/src/table/keystrokes/TableStartCellEditKeyStroke.js +2 -2
  135. package/src/testing/index.js +1 -0
  136. package/src/testing/lookup/AbortableMicrotaskStaticLookupCall.js +50 -0
  137. package/src/tile/TileGrid.js +10 -12
  138. package/src/tile/TileGridLayout.js +2 -2
  139. package/src/tile/accordion/TileAccordion.js +16 -1
  140. package/src/tile/fields/FormFieldTile.less +18 -11
  141. package/src/tile/fields/tablefield/TileTableField.less +19 -2
  142. package/src/tile/keystrokes/TileGridSelectKeyStroke.js +3 -2
  143. package/src/timepicker/TimePickerTouchPopup.js +8 -0
  144. package/src/tree/CompactTree.less +1 -1
  145. package/src/tree/Tree.js +4 -4
  146. package/src/tree/Tree.less +13 -5
  147. package/src/tree/keystrokes/AbstractTreeNavigationKeyStroke.js +1 -0
  148. package/src/tree/keystrokes/TreeCollapseAllKeyStroke.js +2 -2
  149. package/src/tree/keystrokes/TreeExpandOrDrillDownKeyStroke.js +2 -2
  150. package/src/tree/keystrokes/TreeNavigationDownKeyStroke.js +2 -2
  151. package/src/tree/keystrokes/TreeNavigationEndKeyStroke.js +2 -2
  152. package/src/tree/keystrokes/TreeNavigationUpKeyStroke.js +2 -2
  153. package/src/util/Device.js +4 -4
  154. package/src/util/arrays.js +44 -2
  155. package/src/util/objects.js +4 -1
  156. package/src/widget/Widget.js +17 -7
@@ -1,5 +1,5 @@
1
1
  /*
2
- * Copyright (c) 2014-2018 BSI Business Systems Integration AG.
2
+ * Copyright (c) 2010-2022 BSI Business Systems Integration AG.
3
3
  * All rights reserved. This program and the accompanying materials
4
4
  * are made available under the terms of the Eclipse Public License v1.0
5
5
  * which accompanies this distribution, and is available at
@@ -63,6 +63,13 @@ export default class CellEditorPopup extends Popup {
63
63
  this.pack();
64
64
  }
65
65
 
66
+ /**
67
+ * @override
68
+ */
69
+ _getDefaultOpen$Parent() {
70
+ return this.table.$data;
71
+ }
72
+
66
73
  _render() {
67
74
  super._render();
68
75
 
@@ -87,12 +94,10 @@ export default class CellEditorPopup extends Popup {
87
94
  cssClass: cssClass
88
95
  });
89
96
 
90
- this._alignWithSelection();
91
-
92
97
  // Make sure cell content is not visible while the editor is open (especially necessary for transparent editors like checkboxes)
93
98
  this.$anchor.css('visibility', 'hidden');
94
99
 
95
- this._rowOrderChangedFunc = function(event) {
100
+ this._rowOrderChangedFunc = event => {
96
101
  if (event.animating) {
97
102
  // row is only set while animating
98
103
  if (event.row === this.row) {
@@ -101,7 +106,7 @@ export default class CellEditorPopup extends Popup {
101
106
  } else {
102
107
  this.position();
103
108
  }
104
- }.bind(this);
109
+ };
105
110
  this.table.on('rowOrderChanged', this._rowOrderChangedFunc);
106
111
  // Set table style to focused, so that it looks as it still has the focus.
107
112
  // This prevents flickering if the cell editor gets opened, especially when tabbing to the next cell editor.
@@ -161,14 +166,15 @@ export default class CellEditorPopup extends Popup {
161
166
  }
162
167
 
163
168
  position() {
164
- let cellBounds, rowBounds,
165
- $tableData = this.table.$data,
169
+ let $tableData = this.table.$data,
166
170
  $row = this.row.$row,
167
171
  $cell = this.$anchor,
168
172
  insetsLeft = $tableData.cssPaddingLeft() + $row.cssMarginLeft() + $row.cssBorderLeftWidth();
169
173
 
170
- cellBounds = graphics.bounds($cell);
171
- rowBounds = graphics.bounds($row);
174
+ this._alignWithSelection();
175
+
176
+ let cellBounds = graphics.bounds($cell);
177
+ let rowBounds = graphics.bounds($row);
172
178
  this.setLocation(new Point(insetsLeft + cellBounds.x, $tableData.scrollTop() + rowBounds.y));
173
179
  }
174
180
 
@@ -196,7 +202,8 @@ export default class CellEditorPopup extends Popup {
196
202
  }
197
203
 
198
204
  this._pendingCompleteCellEdit.then(() => {
199
- this._pendingCompleteCellEdit = null;
205
+ // Ensure complete will never be called more than once
206
+ this._pendingCompleteCellEdit = $.resolvedPromise();
200
207
  });
201
208
 
202
209
  return this._pendingCompleteCellEdit;
@@ -236,11 +243,7 @@ export default class CellEditorPopup extends Popup {
236
243
  }
237
244
 
238
245
  _onKeyStroke(event) {
239
- if (!this.session.keyStrokeManager.invokeAcceptInputOnActiveValueField(event.keyStroke, event.keyStrokeContext)) {
240
- return;
241
- }
242
- if (this.$container.isOrHas(event.keyStrokeContext.$getScopeTarget())) {
243
- // Don't interfere with key strokes of the popup or children of the popup (otherwise pressing enter would close both the popup and the form at once)
246
+ if (!this._invokeCompleteEditBeforeKeyStroke(event)) {
244
247
  return;
245
248
  }
246
249
  // Make sure completeEdit is called immediately after calling acceptInput.
@@ -249,6 +252,17 @@ export default class CellEditorPopup extends Popup {
249
252
  this.completeEdit(false);
250
253
  }
251
254
 
255
+ _invokeCompleteEditBeforeKeyStroke(event) {
256
+ if (!this.session.keyStrokeManager.invokeAcceptInputOnActiveValueField(event.keyStroke, event.keyStrokeContext)) {
257
+ return false;
258
+ }
259
+ if (this.$container.isOrHas(event.keyStrokeContext.$getScopeTarget())) {
260
+ // Don't interfere with key strokes of the popup or children of the popup (otherwise pressing enter would close both the popup and the form at once)
261
+ return false;
262
+ }
263
+ return true;
264
+ }
265
+
252
266
  waitForCompleteCellEdit() {
253
267
  if (this._pendingCompleteCellEdit) {
254
268
  return this._pendingCompleteCellEdit.promise();
@@ -19,6 +19,7 @@ export default class AbstractTableNavigationKeyStroke extends KeyStroke {
19
19
  this.shift = !table.multiSelect ? false : undefined;
20
20
  this.stopPropagation = true;
21
21
  this.keyStrokeMode = KeyStroke.Mode.DOWN;
22
+ this.inheritAccessibility = false;
22
23
  }
23
24
 
24
25
  _accept(event) {
@@ -18,6 +18,7 @@ export default class TableCopyKeyStroke extends KeyStroke {
18
18
  this.which = [keys.C];
19
19
  this.ctrl = true;
20
20
  this.renderingHints.render = false;
21
+ this.inheritAccessibility = false;
21
22
  }
22
23
 
23
24
  handle(event) {
@@ -17,12 +17,12 @@ export default class TableNavigationCollapseKeyStroke extends AbstractTableNavig
17
17
  this.field = table;
18
18
  this.which = [keys.SUBTRACT, keys.LEFT];
19
19
  this.renderingHints.text = '-';
20
- this.renderingHints.$drawingArea = function($drawingArea, event) {
20
+ this.renderingHints.$drawingArea = ($drawingArea, event) => {
21
21
  let row = this.field.selectedRows[0];
22
22
  if (row) {
23
23
  return row.$row;
24
24
  }
25
- }.bind(this);
25
+ };
26
26
  }
27
27
 
28
28
  _accept(event) {
@@ -16,12 +16,12 @@ export default class TableNavigationEndKeyStroke extends AbstractTableNavigation
16
16
  super(table);
17
17
  this.which = [keys.END];
18
18
  this.renderingHints.text = 'End';
19
- this.renderingHints.$drawingArea = function($drawingArea, event) {
19
+ this.renderingHints.$drawingArea = ($drawingArea, event) => {
20
20
  let viewport = this._viewportInfo();
21
21
  if (viewport.lastRow) {
22
22
  return viewport.lastRow.$row;
23
23
  }
24
- }.bind(this);
24
+ };
25
25
  }
26
26
 
27
27
  handle(event) {
@@ -17,12 +17,12 @@ export default class TableNavigationExpandKeyStroke extends AbstractTableNavigat
17
17
  this.field = table;
18
18
  this.which = [keys.ADD, keys.RIGHT];
19
19
  this.renderingHints.text = '+';
20
- this.renderingHints.$drawingArea = function($drawingArea, event) {
20
+ this.renderingHints.$drawingArea = ($drawingArea, event) => {
21
21
  let row = this.field.selectedRows[0];
22
22
  if (row) {
23
23
  return row.$row;
24
24
  }
25
- }.bind(this);
25
+ };
26
26
  }
27
27
 
28
28
  _accept(event) {
@@ -16,12 +16,12 @@ export default class TableNavigationHomeKeyStroke extends AbstractTableNavigatio
16
16
  super(table);
17
17
  this.which = [keys.HOME];
18
18
  this.renderingHints.text = 'Home';
19
- this.renderingHints.$drawingArea = function($drawingArea, event) {
19
+ this.renderingHints.$drawingArea = ($drawingArea, event) => {
20
20
  let viewport = this._viewportInfo();
21
21
  if (viewport.firstRow) {
22
22
  return viewport.firstRow.$row;
23
23
  }
24
- }.bind(this);
24
+ };
25
25
  }
26
26
 
27
27
  handle(event) {
@@ -16,12 +16,12 @@ export default class TableNavigationPageDownKeyStroke extends AbstractTableNavig
16
16
  super(table);
17
17
  this.which = [keys.PAGE_DOWN];
18
18
  this.renderingHints.text = 'PgDn';
19
- this.renderingHints.$drawingArea = function($drawingArea, event) {
19
+ this.renderingHints.$drawingArea = ($drawingArea, event) => {
20
20
  let viewport = this._viewportInfo();
21
21
  if (viewport.lastRow) {
22
22
  return viewport.lastRow.$row;
23
23
  }
24
- }.bind(this);
24
+ };
25
25
  }
26
26
 
27
27
  handle(event) {
@@ -16,12 +16,12 @@ export default class TableNavigationPageUpKeyStroke extends AbstractTableNavigat
16
16
  super(table);
17
17
  this.which = [keys.PAGE_UP];
18
18
  this.renderingHints.text = 'PgUp';
19
- this.renderingHints.$drawingArea = function($drawingArea, event) {
19
+ this.renderingHints.$drawingArea = ($drawingArea, event) => {
20
20
  let viewport = this._viewportInfo();
21
21
  if (viewport.firstRow) {
22
22
  return viewport.firstRow.$row;
23
23
  }
24
- }.bind(this);
24
+ };
25
25
  }
26
26
 
27
27
  handle(event) {
@@ -16,12 +16,12 @@ export default class TableNavigationUpKeyStroke extends AbstractTableNavigationK
16
16
  super(table);
17
17
  this.which = [keys.UP];
18
18
  this.renderingHints.text = '↑';
19
- this.renderingHints.$drawingArea = function($drawingArea, event) {
19
+ this.renderingHints.$drawingArea = ($drawingArea, event) => {
20
20
  let row = this.firstRowBeforeSelection();
21
21
  if (row) {
22
22
  return row.$row;
23
23
  }
24
- }.bind(this);
24
+ };
25
25
  }
26
26
 
27
27
  handle(event) {
@@ -17,9 +17,9 @@ export default class TableRefreshKeyStroke extends KeyStroke {
17
17
  this.field = table;
18
18
  this.which = [keys.F5];
19
19
  this.renderingHints.offset = 14;
20
- this.renderingHints.$drawingArea = function($drawingArea, event) {
20
+ this.renderingHints.$drawingArea = ($drawingArea, event) => {
21
21
  return this.field.footer ? this.field.footer._$infoLoad.find('.table-info-button') : null;
22
- }.bind(this);
22
+ };
23
23
  }
24
24
 
25
25
  _accept(event) {
@@ -18,9 +18,10 @@ export default class TableSelectAllKeyStroke extends KeyStroke {
18
18
  this.ctrl = true;
19
19
  this.which = [keys.A];
20
20
  this.renderingHints.offset = 14;
21
- this.renderingHints.$drawingArea = function($drawingArea, event) {
21
+ this.renderingHints.$drawingArea = ($drawingArea, event) => {
22
22
  return this.field.footer ? this.field.footer._$infoSelection.find('.table-info-button') : null;
23
- }.bind(this);
23
+ };
24
+ this.inheritAccessibility = false;
24
25
  }
25
26
 
26
27
  handle(event) {
@@ -18,7 +18,7 @@ export default class TableStartCellEditKeyStroke extends KeyStroke {
18
18
  this.ctrl = true;
19
19
  this.which = [keys.ENTER];
20
20
  this.stopPropagation = true;
21
- this.renderingHints.$drawingArea = function($drawingArea, event) {
21
+ this.renderingHints.$drawingArea = ($drawingArea, event) => {
22
22
  let editPosition = event._editPosition,
23
23
  columnIndex = this.field.visibleColumns().indexOf(editPosition.column);
24
24
  if (columnIndex === 0) {
@@ -26,7 +26,7 @@ export default class TableStartCellEditKeyStroke extends KeyStroke {
26
26
  return editPosition.row.$row;
27
27
  }
28
28
  return this.field.$cell(columnIndex, editPosition.row.$row);
29
- }.bind(this);
29
+ };
30
30
  }
31
31
 
32
32
  _accept(event) {
@@ -20,6 +20,7 @@ export {default as TestBeanField} from './form/fields/beanfield/TestBeanField';
20
20
  export {default as TabBoxSpecHelper} from './form/fields/tabbox/TabBoxSpecHelper';
21
21
  export {default as OutlineSpecHelper} from './desktop/outline/OutlineSpecHelper';
22
22
  export {default as DummyLookupCall} from './lookup/DummyLookupCall';
23
+ export {default as AbortableMicrotaskStaticLookupCall} from './lookup/AbortableMicrotaskStaticLookupCall';
23
24
  export {default as ActiveDummyLookupCall} from './lookup/ActiveDummyLookupCall';
24
25
  export {default as ColumnDescriptorDummyLookupCall} from './lookup/ColumnDescriptorDummyLookupCall';
25
26
  export {default as LanguageDummyLookupCall} from './lookup/LanguageDummyLookupCall';
@@ -0,0 +1,50 @@
1
+ /*
2
+ * Copyright (c) 2010-2020 BSI Business Systems Integration AG.
3
+ * All rights reserved. This program and the accompanying materials
4
+ * are made available under the terms of the Eclipse Public License v1.0
5
+ * which accompanies this distribution, and is available at
6
+ * http://www.eclipse.org/legal/epl-v10.html
7
+ *
8
+ * Contributors:
9
+ * BSI Business Systems Integration AG - initial API and implementation
10
+ */
11
+ import {StaticLookupCall} from '../../index';
12
+ import $ from 'jquery';
13
+
14
+ export default class AbortableMicrotaskStaticLookupCall extends StaticLookupCall {
15
+ constructor() {
16
+ super();
17
+ this._deferred = null;
18
+ }
19
+
20
+ abort() {
21
+ this._deferred.reject({
22
+ canceled: true
23
+ });
24
+ super.abort();
25
+ }
26
+
27
+ _getByKey(key) {
28
+ this._deferred = $.Deferred();
29
+ queueMicrotask(this._queryByKey.bind(this, this._deferred, key));
30
+ return this._deferred.promise();
31
+ }
32
+
33
+ _getAll() {
34
+ this._deferred = $.Deferred();
35
+ queueMicrotask(this._queryByAll.bind(this, this._deferred));
36
+ return this._deferred.promise();
37
+ }
38
+
39
+ _getByText(text) {
40
+ this._deferred = $.Deferred();
41
+ queueMicrotask(this._queryByText.bind(this, this._deferred, text));
42
+ return this._deferred.promise();
43
+ }
44
+
45
+ _getByRec(rec) {
46
+ this._deferred = $.Deferred();
47
+ queueMicrotask(this._queryByRec.bind(this, this._deferred, rec));
48
+ return this._deferred.promise();
49
+ }
50
+ }
@@ -198,7 +198,11 @@ export default class TileGrid extends Widget {
198
198
  }
199
199
 
200
200
  _updateTabbable() {
201
- this.$container.setTabbable(this.enabled && (this.textFilterEnabled || this.selectable));
201
+ if (!this.textFilterEnabled && !this.selectable) {
202
+ this.$container.setTabbable(false);
203
+ } else {
204
+ this.$container.setTabbableOrFocusable(this.enabledComputed);
205
+ }
202
206
  }
203
207
 
204
208
  insertTile(tile) {
@@ -396,7 +400,7 @@ export default class TileGrid extends Widget {
396
400
  }
397
401
 
398
402
  _onAnimatedTileRemove(tile) {
399
- if (!tile.rendered || !tile.animateRemoval) {
403
+ if (!tile.removalPending) {
400
404
  return;
401
405
  }
402
406
  this.tileRemovalPendingCount++;
@@ -760,16 +764,10 @@ export default class TileGrid extends Widget {
760
764
  if ($scrollables.length === 0) {
761
765
  return;
762
766
  }
763
- let oldScrollTopArr = $scrollables.map((i, $elem) => {
764
- return $elem.scrollTop();
765
- }).toArray();
766
767
  // Make sure the tile grid has the focus when focusing a tile
767
- if (this.focus()) {
768
- // Restore old scroll to prevent scrolling by the browser due to the focus() call
769
- oldScrollTopArr.forEach((val, idx) => {
770
- $scrollables[idx].scrollTop(val);
771
- }, this);
772
- }
768
+ this.focus({
769
+ preventScroll: true
770
+ });
773
771
  }
774
772
 
775
773
  setSelectable(selectable) {
@@ -1382,7 +1380,7 @@ export default class TileGrid extends Widget {
1382
1380
  }
1383
1381
 
1384
1382
  _removeTileByFilter(tile) {
1385
- // In virtual mode, filtered tiles are not rendered. In normal mode, the filter animation is triggerd by _renderVisible of the tile.
1383
+ // In virtual mode, filtered tiles are not rendered. In normal mode, the filter animation is triggered by _renderVisible of the tile.
1386
1384
  // Since the tile is removed immediately, the invisible animation would not start, so we use the remove animation instead.
1387
1385
  // But because the delete animation is a different one to the filter animation, the removeClass needs to be swapped
1388
1386
  // Remove class first to make sure animation won't be finished before the animationend listener is attached in Widget._removeAnimated (which may happen because a setTimeout is used there)
@@ -1,5 +1,5 @@
1
1
  /*
2
- * Copyright (c) 2010-2021 BSI Business Systems Integration AG.
2
+ * Copyright (c) 2010-2022 BSI Business Systems Integration AG.
3
3
  * All rights reserved. This program and the accompanying materials
4
4
  * are made available under the terms of the Eclipse Public License v1.0
5
5
  * which accompanies this distribution, and is available at
@@ -151,7 +151,7 @@ export default class TileGridLayout extends LogicalGridLayout {
151
151
  */
152
152
  _layoutCellBounds(containerSize, containerInsets) {
153
153
  // Since the tiles are positioned absolutely it is necessary to add the height of the filler to the top insets
154
- if (this.widget.virtual) {
154
+ if (this.widget.virtual && this.widget.$fillBefore) {
155
155
  containerInsets.top += this.widget.$fillBefore.outerHeight(true);
156
156
  }
157
157
  return super._layoutCellBounds(containerSize, containerInsets);
@@ -1,5 +1,5 @@
1
1
  /*
2
- * Copyright (c) 2010-2021 BSI Business Systems Integration AG.
2
+ * Copyright (c) 2010-2022 BSI Business Systems Integration AG.
3
3
  * All rights reserved. This program and the accompanying materials
4
4
  * are made available under the terms of the Eclipse Public License v1.0
5
5
  * which accompanies this distribution, and is available at
@@ -352,6 +352,21 @@ export default class TileAccordion extends Accordion {
352
352
  _filter() {
353
353
  this.groups.forEach(group => {
354
354
  group.body.filter();
355
+
356
+ // If the layout has not been invalidated as part of the filtering above, it even though must be validated here.
357
+ // This is because groups above might have fewer visible Tiles now which makes room for this group.
358
+ // The revalidateLayout() with scrolling=true here ensures TileGrid._renderViewPort() is called to ensure these Tiles become visible as there is space available now.
359
+ // It is executed as postValidateFunction because the groups above must have completed their layouting so that
360
+ // TileGrid._renderViewPort() knows that there is more space available now.
361
+ if (group.body.htmlComp && group.body.htmlComp.valid && !group.body._accordionLayoutHandler /* skip if already registered */) {
362
+ group.body._accordionLayoutHandler = () => {
363
+ group.body.scrolling = true;
364
+ group.body.revalidateLayout();
365
+ group.body.scrolling = false;
366
+ group.body._accordionLayoutHandler = null;
367
+ };
368
+ this.session.layoutValidator.schedulePostValidateFunction(group.body._accordionLayoutHandler);
369
+ }
355
370
  });
356
371
  }
357
372
 
@@ -222,8 +222,16 @@
222
222
  }
223
223
  }
224
224
 
225
- &.has-error > .status::before {
226
- color: @palette-red-3;
225
+ &.has-error > .status {
226
+ &::before {
227
+ color: @tile-default-inverted-error-status-color;
228
+ }
229
+
230
+ &:hover::before,
231
+ &:active::before,
232
+ &.selected::before {
233
+ color: @tile-default-inverted-error-status-hover-color;
234
+ }
227
235
  }
228
236
 
229
237
  .scrollbar-thumb-handle {
@@ -315,11 +323,11 @@
315
323
  }
316
324
 
317
325
  &.selected {
318
- #scout.double-drop-shadow(@spread1: 2px, @color1: @dashboard-tile-selected-border-color, @y2: 0px, @blur2: 0px);
326
+ #scout.double-drop-shadow(@spread1: 2px, @color1: @dashboard-tile-default-selected-border-color, @y2: 0px, @blur2: 0px);
319
327
 
320
328
  &.inverted {
321
- --tile-background-color: mix(@tile-default-inverted-background-color, @tile-default-inverted-selection-background-color, 65%);
322
- #scout.double-drop-shadow(@spread1: 2px, @color1: @dashboard-tile-default-selected-border-color, @y2: 0px, @blur2: 0px);
329
+ --tile-background-color: @dashboard-tile-default-inverted-background-color;
330
+ #scout.double-drop-shadow(@spread1: 2px, @color1: @dashboard-tile-default-inverted-selected-border-color, @y2: 0px, @blur2: 0px);
323
331
  }
324
332
 
325
333
  &.color-alternative {
@@ -327,16 +335,15 @@
327
335
  }
328
336
 
329
337
  &.inverted.color-alternative {
330
- --tile-background-color: mix(@tile-alternative-inverted-background-color, @tile-alternative-inverted-selection-background-color, 65%);
331
- #scout.double-drop-shadow(@spread1: 2px, @color1: @dashboard-tile-alternative-selected-border-color, @y2: 0px, @blur2: 0px);
338
+ --tile-background-color: @dashboard-tile-alternative-inverted-background-color;
339
+ #scout.double-drop-shadow(@spread1: 2px, @color1: @dashboard-tile-alternative-inverted-selected-border-color, @y2: 0px, @blur2: 0px);
332
340
  }
333
341
 
334
-
335
342
  .dimmed-background & {
336
- #scout.double-drop-shadow(@spread1: 2px, @color1: @dashboard-tile-selected-border-color, @alpha2: @dashboard-tile-drop-shadow-light-alpha);
343
+ #scout.double-drop-shadow(@spread1: 2px, @color1: @dashboard-tile-default-selected-border-color, @alpha2: @dashboard-tile-drop-shadow-light-alpha);
337
344
 
338
345
  &.inverted {
339
- #scout.double-drop-shadow(@spread1: 2px, @color1: @dashboard-tile-default-selected-border-color, @alpha2: @dashboard-tile-drop-shadow-dark-alpha);
346
+ #scout.double-drop-shadow(@spread1: 2px, @color1: @dashboard-tile-default-inverted-selected-border-color, @alpha2: @dashboard-tile-drop-shadow-dark-alpha);
340
347
  }
341
348
 
342
349
  &.color-alternative {
@@ -344,7 +351,7 @@
344
351
  }
345
352
 
346
353
  &.inverted.color-alternative {
347
- #scout.double-drop-shadow(@spread1: 2px, @color1: @dashboard-tile-alternative-selected-border-color, @alpha2: @dashboard-tile-drop-shadow-dark-alpha);
354
+ #scout.double-drop-shadow(@spread1: 2px, @color1: @dashboard-tile-alternative-inverted-selected-border-color, @alpha2: @dashboard-tile-drop-shadow-dark-alpha);
348
355
  }
349
356
  }
350
357
  }
@@ -1,9 +1,9 @@
1
1
  /*
2
- * Copyright (c) 2010-2021 BSI Business Systems Integration AG.
2
+ * Copyright (c) 2010-2022 BSI Business Systems Integration AG.
3
3
  * All rights reserved. This program and the accompanying materials
4
4
  * are made available under the terms of the Eclipse Public License v1.0
5
5
  * which accompanies this distribution, and is available at
6
- * http://www.eclipse.org/legal/epl-v10.html
6
+ * https://www.eclipse.org/legal/epl-v10.html
7
7
  *
8
8
  * Contributors:
9
9
  * BSI Business Systems Integration AG - initial API and implementation
@@ -53,6 +53,23 @@
53
53
  & > .table-header-item {
54
54
  color: @tile-table-default-color;
55
55
 
56
+ &.sorted,
57
+ &.grouped,
58
+ &.filtered {
59
+ padding-right: @table-header-item-padding-right;
60
+
61
+ &.halign-right,
62
+ &.halign-center {
63
+ padding-right: @table-header-item-padding-left;
64
+ }
65
+
66
+ &.last.halign-left,
67
+ &.last.halign-center,
68
+ &.last.halign-right {
69
+ padding-right: @table-header-item-padding-right-last;
70
+ }
71
+ }
72
+
56
73
  & > .table-header-item-state {
57
74
  display: none;
58
75
  }
@@ -16,12 +16,13 @@ export default class TileGridSelectKeyStroke extends KeyStroke {
16
16
  super();
17
17
  this.field = tileGrid;
18
18
  this.shift = !tileGrid.multiSelect ? false : undefined;
19
- this.renderingHints.$drawingArea = function($drawingArea, event) {
19
+ this.renderingHints.$drawingArea = ($drawingArea, event) => {
20
20
  let result = this._computeNewSelection();
21
21
  if (result && result.focusedTile) {
22
22
  return result.focusedTile.$container;
23
23
  }
24
- }.bind(this);
24
+ };
25
+ this.inheritAccessibility = false;
25
26
  }
26
27
 
27
28
  /**
@@ -51,4 +51,12 @@ export default class TimePickerTouchPopup extends TouchPopup {
51
51
  }
52
52
  this._touchField._triggerAcceptInput();
53
53
  }
54
+
55
+ /**
56
+ * @override
57
+ */
58
+ _acceptInput() {
59
+ this._field.acceptTime();
60
+ this.close();
61
+ }
54
62
  }
@@ -19,7 +19,7 @@
19
19
 
20
20
  & > .tree-data > .nodes > .section > .section-node.selected {
21
21
  text-decoration: underline;
22
- color: @active-color;
22
+ color: @focus-color;
23
23
  }
24
24
  }
25
25
 
package/src/tree/Tree.js CHANGED
@@ -3,7 +3,7 @@
3
3
  * All rights reserved. This program and the accompanying materials
4
4
  * are made available under the terms of the Eclipse Public License v1.0
5
5
  * which accompanies this distribution, and is available at
6
- * http://www.eclipse.org/legal/epl-v10.html
6
+ * https://www.eclipse.org/legal/epl-v10.html
7
7
  *
8
8
  * Contributors:
9
9
  * BSI Business Systems Integration AG - initial API and implementation
@@ -911,7 +911,7 @@ export default class Tree extends Widget {
911
911
  this._installOrUninstallDragAndDropHandler();
912
912
  let enabled = this.enabledComputed;
913
913
  this.$data.setEnabled(enabled);
914
- this.$container.setTabbable(enabled);
914
+ this.$container.setTabbableOrFocusable(enabled);
915
915
  }
916
916
 
917
917
  /**
@@ -2452,7 +2452,7 @@ export default class Tree extends Widget {
2452
2452
  }
2453
2453
  nodes = arrays.ensure(nodes);
2454
2454
  nodes.forEach(function(node) {
2455
- if (!node.enabled && opts.checkOnlyEnabled || node.checked === opts.checked) {
2455
+ if (!node.enabled && opts.checkOnlyEnabled || node.checked === opts.checked || !node.filterAccepted) {
2456
2456
  if (opts.checkChildren) {
2457
2457
  this.checkNodes(node.childNodes, opts);
2458
2458
  }
@@ -3170,7 +3170,7 @@ export default class Tree extends Widget {
3170
3170
  // same as on Table.prototype._onDesktopPopupOpen
3171
3171
  _onDesktopPopupOpen(event) {
3172
3172
  let popup = event.popup;
3173
- if (!this.enabledComputed) {
3173
+ if (!this.isFocusable(false)) {
3174
3174
  return;
3175
3175
  }
3176
3176
  // Set tree style to focused if a context menu or a menu bar popup opens, so that it looks as it still has the focus