@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.
- package/dist/eclipse-scout-core-e5e8740e3649f5b9f279.min.js +2 -0
- package/dist/eclipse-scout-core-e5e8740e3649f5b9f279.min.js.map +1 -0
- package/dist/eclipse-scout-core-theme-74b63e0d57bed407a729.min.css +1 -0
- package/dist/eclipse-scout-core-theme-dark-b82aea152f416e38ce7f.min.css +1 -0
- package/dist/eclipse-scout-core-theme-dark.css +517 -361
- package/dist/eclipse-scout-core-theme-dark.css.map +1 -1
- package/dist/eclipse-scout-core-theme.css +300 -144
- package/dist/eclipse-scout-core-theme.css.map +1 -1
- package/dist/eclipse-scout-core.js +1150 -766
- package/dist/eclipse-scout-core.js.map +1 -1
- package/dist/file-list +7 -0
- package/dist/locales.json +47126 -0
- package/dist/texts.json +1153 -0
- package/package.json +2 -2
- package/src/ErrorHandler.js +66 -28
- package/src/{table/TableHeaderMenuButtonKeyStroke.js → action/ActionExecKeyStroke.js} +4 -5
- package/src/action/Button.less +1 -0
- package/src/box/Box.less +10 -6
- package/src/breadcrumbbar/BreadcrumbItem.less +3 -6
- package/src/calendar/Calendar.js +40 -58
- package/src/calendar/Calendar.less +10 -10
- package/src/calendar/CalendarLayout.js +3 -1
- package/src/checkbox/CheckBox.less +3 -1
- package/src/datepicker/DatePicker.less +1 -0
- package/src/datepicker/DatePickerTouchPopup.js +8 -0
- package/src/desktop/DisableBrowserF5ReloadKeyStroke.js +1 -0
- package/src/desktop/bench/DesktopTabSelectKeyStroke.js +2 -1
- package/src/desktop/desktoptab/DesktopTab.less +5 -2
- package/src/desktop/desktoptab/DesktopTabArea.less +7 -3
- package/src/desktop/desktoptab/DisableBrowserTabSwitchingKeyStroke.js +1 -0
- package/src/desktop/navigation/DesktopNavigation.less +4 -0
- package/src/desktop/navigation/EnlargeNavigationKeyStroke.js +1 -0
- package/src/desktop/navigation/ShrinkNavigationKeyStroke.js +1 -0
- package/src/desktop/notification/DesktopNotification.js +11 -4
- package/src/desktop/notification/DesktopNotification.less +5 -3
- package/src/desktop/outline/Outline.less +4 -4
- package/src/desktop/viewbutton/ViewButton.less +13 -9
- package/src/desktop/viewbutton/ViewMenuPopupEnterKeyStroke.js +2 -1
- package/src/desktop/viewbutton/ViewMenuTab.less +3 -2
- package/src/filechooser/FileChooser.js +1 -1
- package/src/filechooser/FileChooser.less +16 -11
- package/src/focus/FocusContext.js +11 -8
- package/src/focus/FocusManager.js +24 -5
- package/src/form/Form.less +1 -0
- package/src/form/fields/LookupBox.js +5 -2
- package/src/form/fields/LookupBox.less +28 -2
- package/src/form/fields/TextFieldIcon.less +2 -2
- package/src/form/fields/ValueField.js +11 -2
- package/src/form/fields/breadcrumbbarfield/BreadcrumbBarField.less +20 -0
- package/src/form/fields/button/ButtonKeyStroke.js +0 -3
- package/src/form/fields/datefield/DateField.js +31 -47
- package/src/form/fields/filechooserfield/FileChooserFieldBrowseKeyStroke.js +1 -3
- package/src/form/fields/filechooserfield/FileChooserFieldDeleteKeyStroke.js +1 -3
- package/src/form/fields/groupbox/GroupBox.js +14 -9
- package/src/form/fields/groupbox/GroupBox.less +1 -0
- package/src/form/fields/htmlfield/HtmlField.less +0 -1
- package/src/form/fields/listbox/ListBox.js +13 -7
- package/src/form/fields/lookupfield/lookupField.js +6 -5
- package/src/form/fields/smartfield/ProposalField.js +2 -1
- package/src/form/fields/smartfield/ProposalTreeNode.js +4 -8
- package/src/form/fields/smartfield/SmartField.js +4 -20
- package/src/form/fields/smartfield/SmartField.less +24 -11
- package/src/form/fields/splitbox/SplitBoxCollapseKeyStroke.js +1 -0
- package/src/form/fields/splitbox/SplitBoxFirstCollapseKeyStroke.js +1 -0
- package/src/form/fields/splitbox/SplitBoxSecondCollapseKeyStroke.js +1 -0
- package/src/form/fields/tabbox/TabAreaLayout.js +63 -66
- package/src/form/fields/tabbox/TabAreaLeftKeyStroke.js +2 -0
- package/src/form/fields/tabbox/TabAreaRightKeyStroke.js +2 -0
- package/src/form/fields/tabbox/TabBox.js +8 -7
- package/src/form/fields/tabbox/TabBox.less +2 -1
- package/src/form/fields/tabbox/TabBoxHeader.js +4 -0
- package/src/form/fields/tabbox/TabBoxHeaderLayout.js +5 -5
- package/src/form/fields/tabbox/TabItem.js +4 -0
- package/src/form/fields/treebox/TreeBox.js +6 -5
- package/src/glasspane/GlassPane.js +3 -3
- package/src/group/Group.less +1 -1
- package/src/index.js +1 -1
- package/src/index.less +1 -0
- package/src/jquery/jquery-scout.js +17 -4
- package/src/keystroke/CloseKeyStroke.js +1 -0
- package/src/keystroke/ContextMenuKeyStroke.js +1 -0
- package/src/keystroke/FocusFilterFieldKeyStroke.js +1 -0
- package/src/keystroke/KeyStroke.js +11 -3
- package/src/keystroke/TabItemKeyStroke.js +8 -5
- package/src/logging/logging.js +16 -8
- package/src/login/LoginBox.js +3 -2
- package/src/login/LoginBox.less +18 -1
- package/src/menu/ContextMenuPopup.less +9 -2
- package/src/menu/Menu.less +1 -0
- package/src/menu/MenuExecKeyStroke.js +3 -17
- package/src/menu/MenuNavigationKeyStroke.js +1 -0
- package/src/menu/menubar/MenuBarLeftKeyStroke.js +2 -0
- package/src/menu/menubar/MenuBarRightKeyStroke.js +2 -0
- package/src/messagebox/MessageBox.less +17 -17
- package/src/modeselector/Mode.less +15 -37
- package/src/modeselector/ModeSelector.js +1 -1
- package/src/modeselector/ModeSelector.less +2 -1
- package/src/planner/Planner.js +2 -0
- package/src/planner/PlannerHeader.less +2 -1
- package/src/popup/Popup.js +24 -8
- package/src/popup/PopupLayout.js +2 -8
- package/src/scrollbar/Scrollbar.less +8 -1
- package/src/scrollbar/scrollbars.js +26 -4
- package/src/session/Session.js +8 -5
- package/src/style/colors-dark.less +17 -10
- package/src/style/colors.less +11 -3
- package/src/style/fonts.less +10 -1
- package/src/style/mixins.less +16 -12
- package/src/style/sizes-dark.less +4 -1
- package/src/style/sizes.less +17 -9
- package/src/table/Table.js +62 -48
- package/src/table/Table.less +50 -20
- package/src/table/TableAdapter.js +9 -12
- package/src/table/TableHeader.js +10 -8
- package/src/table/TableHeader.less +1 -0
- package/src/table/TableHeaderMenu.js +3 -1
- package/src/table/TableHeaderMenu.less +7 -2
- package/src/table/TableHeaderMenuButton.js +2 -2
- package/src/table/TableLayout.js +6 -0
- package/src/table/columns/BooleanColumn.js +2 -2
- package/src/table/columns/Column.js +10 -7
- package/src/table/editor/CellEditorPopup.js +29 -15
- package/src/table/keystrokes/AbstractTableNavigationKeyStroke.js +1 -0
- package/src/table/keystrokes/TableCopyKeyStroke.js +1 -0
- package/src/table/keystrokes/TableNavigationCollapseKeyStroke.js +2 -2
- package/src/table/keystrokes/TableNavigationEndKeyStroke.js +2 -2
- package/src/table/keystrokes/TableNavigationExpandKeyStroke.js +2 -2
- package/src/table/keystrokes/TableNavigationHomeKeyStroke.js +2 -2
- package/src/table/keystrokes/TableNavigationPageDownKeyStroke.js +2 -2
- package/src/table/keystrokes/TableNavigationPageUpKeyStroke.js +2 -2
- package/src/table/keystrokes/TableNavigationUpKeyStroke.js +2 -2
- package/src/table/keystrokes/TableRefreshKeyStroke.js +2 -2
- package/src/table/keystrokes/TableSelectAllKeyStroke.js +3 -2
- package/src/table/keystrokes/TableStartCellEditKeyStroke.js +2 -2
- package/src/testing/index.js +1 -0
- package/src/testing/lookup/AbortableMicrotaskStaticLookupCall.js +50 -0
- package/src/tile/TileGrid.js +10 -12
- package/src/tile/TileGridLayout.js +2 -2
- package/src/tile/accordion/TileAccordion.js +16 -1
- package/src/tile/fields/FormFieldTile.less +18 -11
- package/src/tile/fields/tablefield/TileTableField.less +19 -2
- package/src/tile/keystrokes/TileGridSelectKeyStroke.js +3 -2
- package/src/timepicker/TimePickerTouchPopup.js +8 -0
- package/src/tree/CompactTree.less +1 -1
- package/src/tree/Tree.js +4 -4
- package/src/tree/Tree.less +13 -5
- package/src/tree/keystrokes/AbstractTreeNavigationKeyStroke.js +1 -0
- package/src/tree/keystrokes/TreeCollapseAllKeyStroke.js +2 -2
- package/src/tree/keystrokes/TreeExpandOrDrillDownKeyStroke.js +2 -2
- package/src/tree/keystrokes/TreeNavigationDownKeyStroke.js +2 -2
- package/src/tree/keystrokes/TreeNavigationEndKeyStroke.js +2 -2
- package/src/tree/keystrokes/TreeNavigationUpKeyStroke.js +2 -2
- package/src/util/Device.js +4 -4
- package/src/util/arrays.js +44 -2
- package/src/util/objects.js +4 -1
- package/src/widget/Widget.js +17 -7
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*
|
|
2
|
-
* Copyright (c)
|
|
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 =
|
|
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
|
-
}
|
|
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
|
|
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
|
-
|
|
171
|
-
|
|
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
|
-
|
|
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.
|
|
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) {
|
|
@@ -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 =
|
|
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
|
-
}
|
|
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 =
|
|
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
|
-
}
|
|
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 =
|
|
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
|
-
}
|
|
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 =
|
|
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
|
-
}
|
|
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 =
|
|
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
|
-
}
|
|
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 =
|
|
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
|
-
}
|
|
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 =
|
|
19
|
+
this.renderingHints.$drawingArea = ($drawingArea, event) => {
|
|
20
20
|
let row = this.firstRowBeforeSelection();
|
|
21
21
|
if (row) {
|
|
22
22
|
return row.$row;
|
|
23
23
|
}
|
|
24
|
-
}
|
|
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 =
|
|
20
|
+
this.renderingHints.$drawingArea = ($drawingArea, event) => {
|
|
21
21
|
return this.field.footer ? this.field.footer._$infoLoad.find('.table-info-button') : null;
|
|
22
|
-
}
|
|
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 =
|
|
21
|
+
this.renderingHints.$drawingArea = ($drawingArea, event) => {
|
|
22
22
|
return this.field.footer ? this.field.footer._$infoSelection.find('.table-info-button') : null;
|
|
23
|
-
}
|
|
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 =
|
|
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
|
-
}
|
|
29
|
+
};
|
|
30
30
|
}
|
|
31
31
|
|
|
32
32
|
_accept(event) {
|
package/src/testing/index.js
CHANGED
|
@@ -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
|
+
}
|
package/src/tile/TileGrid.js
CHANGED
|
@@ -198,7 +198,11 @@ export default class TileGrid extends Widget {
|
|
|
198
198
|
}
|
|
199
199
|
|
|
200
200
|
_updateTabbable() {
|
|
201
|
-
|
|
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.
|
|
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
|
-
|
|
768
|
-
|
|
769
|
-
|
|
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
|
|
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-
|
|
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-
|
|
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
|
|
226
|
-
|
|
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:
|
|
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:
|
|
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-
|
|
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
|
-
*
|
|
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 =
|
|
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
|
-
}
|
|
24
|
+
};
|
|
25
|
+
this.inheritAccessibility = false;
|
|
25
26
|
}
|
|
26
27
|
|
|
27
28
|
/**
|
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
|
-
*
|
|
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.
|
|
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.
|
|
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
|