@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
package/src/tree/Tree.less
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
|
|
@@ -64,6 +64,13 @@
|
|
|
64
64
|
& > .animation-wrapper > .tree-node {
|
|
65
65
|
cursor: pointer;
|
|
66
66
|
}
|
|
67
|
+
|
|
68
|
+
&.disabled > .tree-node,
|
|
69
|
+
&.disabled > .animation-wrapper > .tree-node,
|
|
70
|
+
& > .tree-node.disabled,
|
|
71
|
+
& > .animation-wrapper > .tree-node.disabled {
|
|
72
|
+
cursor: default;
|
|
73
|
+
}
|
|
67
74
|
}
|
|
68
75
|
}
|
|
69
76
|
|
|
@@ -95,12 +102,14 @@
|
|
|
95
102
|
color: @disabled-color;
|
|
96
103
|
}
|
|
97
104
|
|
|
105
|
+
.disabled > .animation-wrapper > &,
|
|
98
106
|
.disabled > & {
|
|
99
107
|
/* Whole tree is disabled -> use darker disabled color */
|
|
100
108
|
color: @text-disabled-color;
|
|
101
109
|
}
|
|
102
110
|
|
|
103
|
-
.disabled.read-only > .
|
|
111
|
+
.disabled.read-only > .animation-wrapper > &,
|
|
112
|
+
.disabled.read-only > & {
|
|
104
113
|
color: @read-only-color;
|
|
105
114
|
}
|
|
106
115
|
|
|
@@ -132,6 +141,7 @@
|
|
|
132
141
|
&.font-icon {
|
|
133
142
|
/* Necessary to align with the text, depends on the used font size */
|
|
134
143
|
line-height: @tree-node-font-icon-line-height;
|
|
144
|
+
font-size: @tree-node-font-icon-size;
|
|
135
145
|
}
|
|
136
146
|
}
|
|
137
147
|
}
|
|
@@ -216,18 +226,16 @@
|
|
|
216
226
|
|
|
217
227
|
.tree-node.lazy > & {
|
|
218
228
|
font-family: @font-default-family;
|
|
219
|
-
font-size: @font-size-normal;
|
|
220
229
|
content: '+';
|
|
221
230
|
/* Move to left because '+' sign is not as wide as 'arrow-down' */
|
|
222
231
|
margin-left: -2px;
|
|
223
232
|
}
|
|
224
233
|
|
|
225
234
|
.tree-node.expanded > & {
|
|
226
|
-
/* This "imprecise" angle is a
|
|
235
|
+
/* This "imprecise" angle is a workaround for firefox to prevent shifting the div a little when the animation finishes. */
|
|
227
236
|
/* See https://bugzilla.mozilla.org/show_bug.cgi?id=739176 */
|
|
228
237
|
#scout.transform(rotate(89.99deg));
|
|
229
238
|
}
|
|
230
|
-
|
|
231
239
|
}
|
|
232
240
|
|
|
233
241
|
&:hover {
|
|
@@ -16,11 +16,11 @@ export default class TreeCollapseAllKeyStroke extends AbstractTreeNavigationKeyS
|
|
|
16
16
|
super(tree, keyStrokeModifier);
|
|
17
17
|
this.which = [keys.HOME];
|
|
18
18
|
this.renderingHints.hAlign = HAlign.RIGHT;
|
|
19
|
-
this.renderingHints.$drawingArea =
|
|
19
|
+
this.renderingHints.$drawingArea = ($drawingArea, event) => {
|
|
20
20
|
if (this.field.visibleNodesFlat.length > 0) {
|
|
21
21
|
return this.field.visibleNodesFlat[0].$node;
|
|
22
22
|
}
|
|
23
|
-
}
|
|
23
|
+
};
|
|
24
24
|
}
|
|
25
25
|
|
|
26
26
|
handle(event) {
|
|
@@ -16,14 +16,14 @@ export default class TreeExpandOrDrillDownKeyStroke extends AbstractTreeNavigati
|
|
|
16
16
|
super(tree, modifierBitMask);
|
|
17
17
|
this.which = [keys.ADD];
|
|
18
18
|
this.renderingHints.text = '+';
|
|
19
|
-
this.renderingHints.$drawingArea =
|
|
19
|
+
this.renderingHints.$drawingArea = ($drawingArea, event) => {
|
|
20
20
|
let currentNode = event._treeCurrentNode;
|
|
21
21
|
if (this.isNodeExpandable(currentNode)) {
|
|
22
22
|
return currentNode.$node;
|
|
23
23
|
} else if (currentNode.childNodes.length > 0) {
|
|
24
24
|
return currentNode.childNodes[0].$node;
|
|
25
25
|
}
|
|
26
|
-
}
|
|
26
|
+
};
|
|
27
27
|
}
|
|
28
28
|
|
|
29
29
|
_accept(event) {
|
|
@@ -16,12 +16,12 @@ export default class TreeNavigationDownKeyStroke extends AbstractTreeNavigationK
|
|
|
16
16
|
super(tree, modifierBitMask);
|
|
17
17
|
this.which = [keys.DOWN];
|
|
18
18
|
this.renderingHints.text = '↓';
|
|
19
|
-
this.renderingHints.$drawingArea =
|
|
19
|
+
this.renderingHints.$drawingArea = ($drawingArea, event) => {
|
|
20
20
|
let newSelectedNode = this._computeNewSelection(event._treeCurrentNode);
|
|
21
21
|
if (newSelectedNode) {
|
|
22
22
|
return newSelectedNode.$node;
|
|
23
23
|
}
|
|
24
|
-
}
|
|
24
|
+
};
|
|
25
25
|
}
|
|
26
26
|
|
|
27
27
|
_computeNewSelection(currentNode) {
|
|
@@ -15,12 +15,12 @@ export default class TreeNavigationEndKeyStroke extends AbstractTreeNavigationKe
|
|
|
15
15
|
constructor(tree, modifierBitMask) {
|
|
16
16
|
super(tree, modifierBitMask);
|
|
17
17
|
this.which = [keys.END];
|
|
18
|
-
this.renderingHints.$drawingArea =
|
|
18
|
+
this.renderingHints.$drawingArea = ($drawingArea, event) => {
|
|
19
19
|
let newSelectedNode = this._computeNewSelection(event._treeCurrentNode);
|
|
20
20
|
if (newSelectedNode) {
|
|
21
21
|
return newSelectedNode.$node;
|
|
22
22
|
}
|
|
23
|
-
}
|
|
23
|
+
};
|
|
24
24
|
}
|
|
25
25
|
|
|
26
26
|
handle(event) {
|
|
@@ -16,12 +16,12 @@ export default class TreeNavigationUpKeyStroke extends AbstractTreeNavigationKey
|
|
|
16
16
|
super(tree, modifierBitMask);
|
|
17
17
|
this.which = [keys.UP];
|
|
18
18
|
this.renderingHints.text = '↑';
|
|
19
|
-
this.renderingHints.$drawingArea =
|
|
19
|
+
this.renderingHints.$drawingArea = ($drawingArea, event) => {
|
|
20
20
|
let newSelectedNode = this._computeNewSelection(event._treeCurrentNode);
|
|
21
21
|
if (newSelectedNode) {
|
|
22
22
|
return newSelectedNode.$node;
|
|
23
23
|
}
|
|
24
|
-
}
|
|
24
|
+
};
|
|
25
25
|
}
|
|
26
26
|
|
|
27
27
|
_computeNewSelection(currentNode) {
|
package/src/util/Device.js
CHANGED
|
@@ -259,15 +259,15 @@ export default class Device {
|
|
|
259
259
|
|
|
260
260
|
/**
|
|
261
261
|
* This method returns false for all browsers that are known to be unsupported, all others (e.g. unknown engines) are allowed by default.
|
|
262
|
-
* The supported browser versions are mainly determined by the features needed by Scout (e.g. class syntax, Array.flatMap, IntersectionObserver, Custom CSS Properties, CSS flex-box).
|
|
262
|
+
* The supported browser versions are mainly determined by the features needed by Scout (e.g. class syntax, Array.flatMap, IntersectionObserver, Custom CSS Properties, CSS flex-box, queueMicrotask).
|
|
263
263
|
*/
|
|
264
264
|
isSupportedBrowser(browser, version) {
|
|
265
265
|
browser = scout.nvl(browser, this.browser);
|
|
266
266
|
version = scout.nvl(version, this.browserVersion);
|
|
267
267
|
let browsers = Device.Browser;
|
|
268
|
-
return (browser === browsers.CHROME && version >=
|
|
269
|
-
|| (browser === browsers.FIREFOX && version >=
|
|
270
|
-
|| (browser === browsers.SAFARI && version >= 12);
|
|
268
|
+
return (browser === browsers.CHROME && version >= 71)
|
|
269
|
+
|| (browser === browsers.FIREFOX && version >= 69)
|
|
270
|
+
|| (browser === browsers.SAFARI && version >= 12.1);
|
|
271
271
|
}
|
|
272
272
|
|
|
273
273
|
/**
|
package/src/util/arrays.js
CHANGED
|
@@ -206,6 +206,11 @@ export function containsAll(haystack, needles) {
|
|
|
206
206
|
});
|
|
207
207
|
}
|
|
208
208
|
|
|
209
|
+
/**
|
|
210
|
+
* @template T
|
|
211
|
+
* @param {T[]} arr
|
|
212
|
+
* @return {T}
|
|
213
|
+
*/
|
|
209
214
|
export function first(arr) {
|
|
210
215
|
if (Array.isArray(arr)) {
|
|
211
216
|
return arr[0];
|
|
@@ -213,6 +218,11 @@ export function first(arr) {
|
|
|
213
218
|
return arr;
|
|
214
219
|
}
|
|
215
220
|
|
|
221
|
+
/**
|
|
222
|
+
* @template T
|
|
223
|
+
* @param {T[]} arr
|
|
224
|
+
* @return {T}
|
|
225
|
+
*/
|
|
216
226
|
export function last(arr) {
|
|
217
227
|
if (Array.isArray(arr)) {
|
|
218
228
|
return arr[arr.length - 1];
|
|
@@ -285,8 +295,8 @@ export function union(array1, array2) {
|
|
|
285
295
|
return result;
|
|
286
296
|
}
|
|
287
297
|
|
|
288
|
-
// noinspection DuplicatedCode
|
|
289
298
|
export function equalsIgnoreOrder(arr, arr2) {
|
|
299
|
+
// noinspection DuplicatedCode
|
|
290
300
|
if (arr === arr2) {
|
|
291
301
|
return true;
|
|
292
302
|
}
|
|
@@ -302,8 +312,8 @@ export function equalsIgnoreOrder(arr, arr2) {
|
|
|
302
312
|
return containsAll(arr, arr2);
|
|
303
313
|
}
|
|
304
314
|
|
|
305
|
-
// noinspection DuplicatedCode
|
|
306
315
|
export function equals(arr, arr2) {
|
|
316
|
+
// noinspection DuplicatedCode
|
|
307
317
|
if (arr === arr2) {
|
|
308
318
|
return true;
|
|
309
319
|
}
|
|
@@ -600,9 +610,40 @@ export function toMap(array, keyMapper = (el => el), valueMapper = (el => el)) {
|
|
|
600
610
|
}, {}));
|
|
601
611
|
}
|
|
602
612
|
|
|
613
|
+
/**
|
|
614
|
+
* If the argument is an empty array, null is returned. Otherwise, the argument is returned unchanged.
|
|
615
|
+
*
|
|
616
|
+
* @template T
|
|
617
|
+
* @param {T[]} array
|
|
618
|
+
* @return {T[]|null}
|
|
619
|
+
*/
|
|
620
|
+
export function nullIfEmpty(array) {
|
|
621
|
+
return empty(array) ? null : array;
|
|
622
|
+
}
|
|
623
|
+
|
|
624
|
+
/**
|
|
625
|
+
* Clears the content of an array <i>in-place</i>. All elements are removed from the array and the
|
|
626
|
+
* length will be set to 0. If the given argument is not an array, nothing happens.
|
|
627
|
+
*
|
|
628
|
+
* This is a more readable version of `array.splice(0, a.length)`.
|
|
629
|
+
*
|
|
630
|
+
* The return value is an array of all deleted elements (never null).
|
|
631
|
+
*
|
|
632
|
+
* @template T
|
|
633
|
+
* @param {T[]} array
|
|
634
|
+
* @return {T[]}
|
|
635
|
+
*/
|
|
636
|
+
export function clear(array) {
|
|
637
|
+
if (Array.isArray(array)) {
|
|
638
|
+
return array.splice(0, array.length);
|
|
639
|
+
}
|
|
640
|
+
return [];
|
|
641
|
+
}
|
|
642
|
+
|
|
603
643
|
export default {
|
|
604
644
|
$indexOf,
|
|
605
645
|
$remove,
|
|
646
|
+
clear,
|
|
606
647
|
contains,
|
|
607
648
|
containsAll,
|
|
608
649
|
containsAny,
|
|
@@ -638,6 +679,7 @@ export default {
|
|
|
638
679
|
max,
|
|
639
680
|
min,
|
|
640
681
|
move,
|
|
682
|
+
nullIfEmpty,
|
|
641
683
|
pushAll,
|
|
642
684
|
pushIfDefined,
|
|
643
685
|
pushSet,
|
package/src/util/objects.js
CHANGED
|
@@ -693,11 +693,14 @@ export function resolveConstProperty(object, config) {
|
|
|
693
693
|
/**
|
|
694
694
|
* @param {object} obj
|
|
695
695
|
* @returns {Boolean|undefined}
|
|
696
|
-
* - true if the obj is empty
|
|
696
|
+
* - true if the obj is empty, null or undefined
|
|
697
697
|
* - false if the obj is not empty
|
|
698
698
|
* - nothing if the obj is not an object
|
|
699
699
|
*/
|
|
700
700
|
export function isEmpty(obj) {
|
|
701
|
+
if (isNullOrUndefined(obj)) {
|
|
702
|
+
return true;
|
|
703
|
+
}
|
|
701
704
|
if (!isPlainObject(obj)) {
|
|
702
705
|
return;
|
|
703
706
|
}
|
package/src/widget/Widget.js
CHANGED
|
@@ -524,7 +524,8 @@ export default class Widget {
|
|
|
524
524
|
* After the animation is executed, the element gets removed using this._removeInternal.
|
|
525
525
|
*/
|
|
526
526
|
_removeAnimated() {
|
|
527
|
-
|
|
527
|
+
let animateRemovalWhileRemovingParent = this._animateRemovalWhileRemovingParent();
|
|
528
|
+
if ((this.parent.removing && !animateRemovalWhileRemovingParent) || !Device.get().supportsCssAnimation() || !this.$container || this.$container.isDisplayNone()) {
|
|
528
529
|
// Cannot remove animated, remove regularly
|
|
529
530
|
this._removeInternal();
|
|
530
531
|
return;
|
|
@@ -544,7 +545,7 @@ export default class Widget {
|
|
|
544
545
|
if (!this.animateRemovalClass) {
|
|
545
546
|
throw new Error('Missing animate removal class. Cannot remove animated.');
|
|
546
547
|
}
|
|
547
|
-
if (!this.$container.isVisible() || !this.$container.isEveryParentVisible()) {
|
|
548
|
+
if (!this.$container.isVisible() || !this.$container.isEveryParentVisible() || !this.$container.isAttached()) {
|
|
548
549
|
// If element is not visible, animationEnd would never fire -> remove it immediately
|
|
549
550
|
this._removeInternal();
|
|
550
551
|
return;
|
|
@@ -557,7 +558,14 @@ export default class Widget {
|
|
|
557
558
|
|
|
558
559
|
// If the parent is being removed while the animation is running, the animationEnd event will never fire
|
|
559
560
|
// -> Make sure remove is called nevertheless. Important: remove it before the parent is removed to maintain the regular remove order
|
|
560
|
-
|
|
561
|
+
if (!animateRemovalWhileRemovingParent) {
|
|
562
|
+
this.parent.one('removing', this._parentRemovingWhileAnimatingHandler);
|
|
563
|
+
}
|
|
564
|
+
}
|
|
565
|
+
|
|
566
|
+
_animateRemovalWhileRemovingParent() {
|
|
567
|
+
// By default, remove animation is prevented when parent is being removed
|
|
568
|
+
return false;
|
|
561
569
|
}
|
|
562
570
|
|
|
563
571
|
_onParentRemovingWhileAnimating() {
|
|
@@ -2062,15 +2070,17 @@ export default class Widget {
|
|
|
2062
2070
|
* Tries to set the focus on the widget.
|
|
2063
2071
|
* <p>
|
|
2064
2072
|
* By default the focus is set on the container but this may vary from widget to widget.
|
|
2073
|
+
*
|
|
2074
|
+
* @param {object} [options]
|
|
2075
|
+
* @param {boolean} [options.preventScroll] prevents scrolling to new focused element (defaults to false)
|
|
2065
2076
|
* @returns {boolean} true if the element could be focused, false if not
|
|
2066
2077
|
*/
|
|
2067
|
-
focus() {
|
|
2078
|
+
focus(options) {
|
|
2068
2079
|
if (!this.rendered) {
|
|
2069
|
-
this.session.layoutValidator.schedulePostValidateFunction(this.focus.bind(this));
|
|
2080
|
+
this.session.layoutValidator.schedulePostValidateFunction(this.focus.bind(this, options));
|
|
2070
2081
|
return false;
|
|
2071
2082
|
}
|
|
2072
|
-
|
|
2073
|
-
return this.session.focusManager.requestFocus(this.getFocusableElement());
|
|
2083
|
+
return this.session.focusManager.requestFocus(this.getFocusableElement(), null, options);
|
|
2074
2084
|
}
|
|
2075
2085
|
|
|
2076
2086
|
/**
|