@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/planner/Planner.js
CHANGED
|
@@ -1533,6 +1533,8 @@ export default class Planner extends Widget {
|
|
|
1533
1533
|
this._renderViewRange();
|
|
1534
1534
|
this._rerenderActivities();
|
|
1535
1535
|
this._renderSelectedActivity();
|
|
1536
|
+
this.validateLayoutTree(); // Layouting is required for adjusting the scroll position
|
|
1537
|
+
this._reconcileScrollPos();
|
|
1536
1538
|
}
|
|
1537
1539
|
}
|
|
1538
1540
|
|
package/src/popup/Popup.js
CHANGED
|
@@ -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
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
* Contributors:
|
|
9
9
|
* BSI Business Systems Integration AG - initial API and implementation
|
|
10
10
|
*/
|
|
11
|
-
import {CloseKeyStroke, DialogLayout, Dimension, Event, FocusRule, GlassPaneRenderer, graphics, HtmlComponent, Insets, KeyStrokeContext, Point, PopupLayout, Rectangle, scout, scrollbars, strings, Widget} from '../index';
|
|
11
|
+
import {CloseKeyStroke, DialogLayout, Dimension, Event, FocusRule, GlassPaneRenderer, graphics, HtmlComponent, Insets, KeyStrokeContext, Point, PopupLayout, Rectangle, scout, scrollbars, strings, Widget, widgets} from '../index';
|
|
12
12
|
import $ from 'jquery';
|
|
13
13
|
|
|
14
14
|
export default class Popup extends Widget {
|
|
@@ -185,18 +185,17 @@ export default class Popup extends Widget {
|
|
|
185
185
|
|
|
186
186
|
_openWithoutParent() {
|
|
187
187
|
// resolve parent for entry-point (don't change the actual property)
|
|
188
|
-
|
|
189
|
-
if (parent.destroyed) {
|
|
188
|
+
if (this.parent.destroyed) {
|
|
190
189
|
return;
|
|
191
190
|
}
|
|
192
|
-
if (parent.rendered || parent.rendering) {
|
|
193
|
-
this.open(
|
|
191
|
+
if (this.parent.rendered || this.parent.rendering) {
|
|
192
|
+
this.open(this._getDefaultOpen$Parent());
|
|
194
193
|
return;
|
|
195
194
|
}
|
|
196
195
|
|
|
197
196
|
// This is important for popups rendered in another (native) browser window. The DOM in the popup window
|
|
198
197
|
// is rendered later, so we must wait until that window is rendered and layouted. See popup-window.html.
|
|
199
|
-
parent.one('render', () => {
|
|
198
|
+
this.parent.one('render', () => {
|
|
200
199
|
this.session.layoutValidator.schedulePostValidateFunction(() => {
|
|
201
200
|
if (this.destroyed || this.rendered) {
|
|
202
201
|
return;
|
|
@@ -206,6 +205,14 @@ export default class Popup extends Widget {
|
|
|
206
205
|
});
|
|
207
206
|
}
|
|
208
207
|
|
|
208
|
+
/**
|
|
209
|
+
* Only called if parent.rendered or parent.rendering
|
|
210
|
+
* @return {$}
|
|
211
|
+
*/
|
|
212
|
+
_getDefaultOpen$Parent() {
|
|
213
|
+
return this.parent.entryPoint();
|
|
214
|
+
}
|
|
215
|
+
|
|
209
216
|
open($parent) {
|
|
210
217
|
if (!$parent) {
|
|
211
218
|
this._openWithoutParent();
|
|
@@ -442,6 +449,15 @@ export default class Popup extends Widget {
|
|
|
442
449
|
return cssClass;
|
|
443
450
|
}
|
|
444
451
|
|
|
452
|
+
_animateRemovalWhileRemovingParent() {
|
|
453
|
+
if (!this.$anchor) {
|
|
454
|
+
// Allow remove animations for popups without an anchor
|
|
455
|
+
return true;
|
|
456
|
+
}
|
|
457
|
+
// If parent is the anchor, prevent remove animation to ensure popup will be removed together with the anchor
|
|
458
|
+
return widgets.get(this.$anchor) !== this.parent;
|
|
459
|
+
}
|
|
460
|
+
|
|
445
461
|
_isRemovalPrevented() {
|
|
446
462
|
// If removal of a parent is pending due to an animation then don't return true to make sure popups are closed before the parent animation starts.
|
|
447
463
|
// However, if the popup itself is removed by an animation, removal should be prevented to ensure remove() won't run multiple times.
|
|
@@ -1037,7 +1053,7 @@ export default class Popup extends Widget {
|
|
|
1037
1053
|
|
|
1038
1054
|
_handleGlassPanes() {
|
|
1039
1055
|
let parentCoveredByGlassPane = this.session.focusManager.isElementCovertByGlassPane(this.parent.$container);
|
|
1040
|
-
// if a popup is covered by a glass pane the glass pane's need to be
|
|
1056
|
+
// if a popup is covered by a glass pane the glass pane's need to be re-rendered to ensure a glass pane is also painted over the popup
|
|
1041
1057
|
if (parentCoveredByGlassPane) {
|
|
1042
1058
|
this.session.focusManager.rerenderGlassPanes();
|
|
1043
1059
|
}
|
package/src/popup/PopupLayout.js
CHANGED
|
@@ -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
|
|
@@ -135,9 +135,6 @@ export default class PopupLayout extends AbstractLayout {
|
|
|
135
135
|
* @returns {Dimension}
|
|
136
136
|
*/
|
|
137
137
|
_calcMaxSize() {
|
|
138
|
-
// Position the popup at the desired location before doing any calculations to consider the preferred bounds
|
|
139
|
-
this._position(false);
|
|
140
|
-
|
|
141
138
|
let maxWidth, maxHeight,
|
|
142
139
|
htmlComp = this.popup.htmlComp,
|
|
143
140
|
windowPaddingX = this.popup.windowPaddingX,
|
|
@@ -159,7 +156,7 @@ export default class PopupLayout extends AbstractLayout {
|
|
|
159
156
|
horizontalAlignment = this.popup.horizontalAlignment,
|
|
160
157
|
verticalAlignment = this.popup.verticalAlignment;
|
|
161
158
|
|
|
162
|
-
// Decide whether the prefSize can be used or the popup needs to be
|
|
159
|
+
// Decide whether the prefSize can be used or the popup needs to be shrunken so that it fits into the viewport
|
|
163
160
|
// The decision is based on the preferred opening direction
|
|
164
161
|
// Example: The popup would like to be opened leftedge and bottom
|
|
165
162
|
// If there is enough space on the right and on the bottom -> pref size is used
|
|
@@ -219,9 +216,6 @@ export default class PopupLayout extends AbstractLayout {
|
|
|
219
216
|
* @returns {Insets}
|
|
220
217
|
*/
|
|
221
218
|
_calcMaxSizeAroundAnchor() {
|
|
222
|
-
// Position the popup at the desired location before doing any calculations because positioning adds CSS classes which might change margins
|
|
223
|
-
this._position(false);
|
|
224
|
-
|
|
225
219
|
let maxWidthLeft, maxWidthRight, maxHeightDown, maxHeightUp,
|
|
226
220
|
htmlComp = this.popup.htmlComp,
|
|
227
221
|
windowPaddingX = this.popup.windowPaddingX,
|
|
@@ -133,7 +133,7 @@
|
|
|
133
133
|
transition: box-shadow 250ms;
|
|
134
134
|
position: absolute;
|
|
135
135
|
pointer-events: none;
|
|
136
|
-
z-index: 1; // ensure shadow
|
|
136
|
+
z-index: 1; // ensure shadow lays over elements having a z-index
|
|
137
137
|
|
|
138
138
|
#scout.scroll-shadow();
|
|
139
139
|
|
|
@@ -157,6 +157,13 @@
|
|
|
157
157
|
--scroll-shadow-size: @scroll-shadow-size;
|
|
158
158
|
--scroll-shadow-blur: @scroll-shadow-blur;
|
|
159
159
|
--scroll-shadow-spread: @scroll-shadow-spread;
|
|
160
|
+
|
|
161
|
+
// Allow a widget to adjust the size of the shadow container
|
|
162
|
+
--scroll-shadow-inset-top: 0;
|
|
163
|
+
--scroll-shadow-inset-right: 0;
|
|
164
|
+
--scroll-shadow-inset-bottom: 0;
|
|
165
|
+
--scroll-shadow-inset-left: 0;
|
|
166
|
+
|
|
160
167
|
@scroll-shadow-blur-spread-color: var(--scroll-shadow-blur) calc(-1 * var(--scroll-shadow-spread)) var(--scroll-shadow-color);
|
|
161
168
|
@scroll-shadow-top: inset 0 var(--scroll-shadow-size) @scroll-shadow-blur-spread-color;
|
|
162
169
|
@scroll-shadow-bottom: inset 0 calc(-1 * var(--scroll-shadow-size)) @scroll-shadow-blur-spread-color;
|
|
@@ -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
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
* Contributors:
|
|
9
9
|
* BSI Business Systems Integration AG - initial API and implementation
|
|
10
10
|
*/
|
|
11
|
-
import {arrays, Device, graphics, HtmlComponent, objects, scout} from '../index';
|
|
11
|
+
import {arrays, Device, graphics, HtmlComponent, Insets, objects, scout} from '../index';
|
|
12
12
|
import $ from 'jquery';
|
|
13
13
|
|
|
14
14
|
/**
|
|
@@ -159,6 +159,17 @@ export function installScrollShadow($container, session, options) {
|
|
|
159
159
|
_installMutationObserver(session);
|
|
160
160
|
_installIntersectionObserver();
|
|
161
161
|
intersectionObserver.observe($container[0]);
|
|
162
|
+
|
|
163
|
+
// this is required in addition to the intersection observer because the observer events are handled asynchronously later after all the setTimeout calls.
|
|
164
|
+
// Then the shadow might stay visible too long which has an impact on layout updates.
|
|
165
|
+
let containerElement = $container[0];
|
|
166
|
+
let visibleListener = e => {
|
|
167
|
+
if (e.target === containerElement) {
|
|
168
|
+
_onScrollableVisibleChange(containerElement, e.type === 'show');
|
|
169
|
+
}
|
|
170
|
+
};
|
|
171
|
+
$container.data('scroll-shadow-visible-listener', visibleListener);
|
|
172
|
+
$container.on('hide show', visibleListener);
|
|
162
173
|
}
|
|
163
174
|
|
|
164
175
|
export function uninstallScrollShadow($container, session) {
|
|
@@ -177,6 +188,10 @@ export function uninstallScrollShadow($container, session) {
|
|
|
177
188
|
if (intersectionObserver) {
|
|
178
189
|
intersectionObserver.unobserve($container[0]);
|
|
179
190
|
}
|
|
191
|
+
let visibleListener = $container.data('scroll-shadow-visible-listener');
|
|
192
|
+
if (visibleListener) {
|
|
193
|
+
$container.off('hide show', visibleListener);
|
|
194
|
+
}
|
|
180
195
|
let $scrollables = _$scrollables[session];
|
|
181
196
|
if (!$scrollables || !$scrollables.some($scrollable => $scrollable.data('scroll-shadow'))) {
|
|
182
197
|
_uninstallMutationObserver();
|
|
@@ -237,7 +252,7 @@ export function updateScrollShadow($container) {
|
|
|
237
252
|
$shadow.toggleClass('bottom', !atBottom && style.indexOf('bottom') > -1);
|
|
238
253
|
$shadow.toggleClass('left', !atLeft && style.indexOf('left') > -1);
|
|
239
254
|
$shadow.toggleClass('right', !atRight && style.indexOf('right') > -1);
|
|
240
|
-
graphics.setBounds($shadow, graphics.bounds($container, {exact: true}));
|
|
255
|
+
graphics.setBounds($shadow, graphics.bounds($container, {exact: true}).subtract(insets($shadow)));
|
|
241
256
|
graphics.setMargins($shadow, graphics.margins($container));
|
|
242
257
|
$shadow.css('border-radius', $container.css('border-radius'));
|
|
243
258
|
|
|
@@ -253,6 +268,13 @@ export function updateScrollShadow($container) {
|
|
|
253
268
|
function atEnd(scrollPos, scrollSize, offsetSize) {
|
|
254
269
|
return scrollPos + 1 >= scrollSize - offsetSize;
|
|
255
270
|
}
|
|
271
|
+
|
|
272
|
+
function insets($shadow) {
|
|
273
|
+
return new Insets($shadow.cssPxValue('--scroll-shadow-inset-top'),
|
|
274
|
+
$shadow.cssPxValue('--scroll-shadow-inset-right'),
|
|
275
|
+
$shadow.cssPxValue('--scroll-shadow-inset-bottom'),
|
|
276
|
+
$shadow.cssPxValue('--scroll-shadow-inset-left'));
|
|
277
|
+
}
|
|
256
278
|
}
|
|
257
279
|
|
|
258
280
|
/**
|
|
@@ -726,7 +748,7 @@ export function scrollToBottom($scrollable, options) {
|
|
|
726
748
|
/**
|
|
727
749
|
* @param location object with x and y properties
|
|
728
750
|
* @param $scrollables one or more scrollables to check against
|
|
729
|
-
* @
|
|
751
|
+
* @returns {boolean} true if the location is visible in the current viewport of all the $scrollables, or if $scrollables is null
|
|
730
752
|
*/
|
|
731
753
|
export function isLocationInView(location, $scrollables) {
|
|
732
754
|
if (!$scrollables || $scrollables.length === 0) {
|
package/src/session/Session.js
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
* Contributors:
|
|
9
9
|
* BSI Business Systems Integration AG - initial API and implementation
|
|
10
10
|
*/
|
|
11
|
-
import {AjaxCall, App, arrays, BackgroundJobPollingStatus, BackgroundJobPollingSupport, Device, EventSupport, FileInput, files as fileUtil, FocusManager, fonts, icons, LayoutValidator, Locale, MessageBox, ModelAdapter, NullWidget, ObjectFactory, objects, Reconnector, RemoteEvent, ResponseQueue, scout, Status, strings, TextMap, texts, TypeDescriptor, URL, UserAgent, webstorage} from '../index';
|
|
11
|
+
import {AjaxCall, App, arrays, BackgroundJobPollingStatus, BackgroundJobPollingSupport, Device, EventSupport, FileInput, files as fileUtil, FocusManager, fonts, icons, LayoutValidator, Locale, logging, MessageBox, ModelAdapter, NullWidget, ObjectFactory, objects, Reconnector, RemoteEvent, ResponseQueue, scout, Status, strings, TextMap, texts, TypeDescriptor, URL, UserAgent, webstorage} from '../index';
|
|
12
12
|
import $ from 'jquery';
|
|
13
13
|
|
|
14
14
|
export default class Session {
|
|
@@ -1364,13 +1364,16 @@ export default class Session {
|
|
|
1364
1364
|
}
|
|
1365
1365
|
|
|
1366
1366
|
/**
|
|
1367
|
-
* Sends a request containing the
|
|
1368
|
-
* The request is sent immediately (does not await pending requests)
|
|
1367
|
+
* Sends a request containing the log message for logging purpose.
|
|
1368
|
+
* The request is sent immediately (does not await pending requests).
|
|
1369
|
+
* @param {string} message the log message
|
|
1370
|
+
* @param {logging.Level} [level] the log level used to log the message. Default is {@link logging.Level.ERROR}.
|
|
1369
1371
|
*/
|
|
1370
|
-
sendLogRequest(message) {
|
|
1372
|
+
sendLogRequest(message, level) {
|
|
1371
1373
|
let request = this._newRequest({
|
|
1372
1374
|
log: true,
|
|
1373
|
-
message: message
|
|
1375
|
+
message: message,
|
|
1376
|
+
level: scout.nvl(level, logging.Level.ERROR)
|
|
1374
1377
|
});
|
|
1375
1378
|
if (this.currentEvent) {
|
|
1376
1379
|
request.event = {
|
|
@@ -19,13 +19,13 @@
|
|
|
19
19
|
@palette-gray-3: #BFC2C3;
|
|
20
20
|
@palette-gray-4: #A7ACAD;
|
|
21
21
|
@palette-gray-5: #7E8588;
|
|
22
|
-
@palette-gray-5-1: #
|
|
23
|
-
@palette-gray-6: #
|
|
24
|
-
@palette-gray-6-1: #
|
|
25
|
-
@palette-gray-7: #
|
|
26
|
-
@palette-gray-8: #
|
|
27
|
-
@palette-gray-9: #
|
|
28
|
-
@palette-gray-10: #
|
|
22
|
+
@palette-gray-5-1: #4B595E;
|
|
23
|
+
@palette-gray-6: #3B494F;
|
|
24
|
+
@palette-gray-6-1: #2E3C41;
|
|
25
|
+
@palette-gray-7: #2C363A;
|
|
26
|
+
@palette-gray-8: #252F34;
|
|
27
|
+
@palette-gray-9: #1F2428;
|
|
28
|
+
@palette-gray-10: #0E1316;
|
|
29
29
|
|
|
30
30
|
@fade-white-0: fade(@palette-white, 25%);
|
|
31
31
|
@fade-white-1: fade(@palette-white, 18%);
|
|
@@ -136,9 +136,11 @@
|
|
|
136
136
|
@carousel-current-item-color: @palette-gray-1;
|
|
137
137
|
@check-box-border-color: @palette-gray-5;
|
|
138
138
|
@mode-color: @text-color;
|
|
139
|
-
@mode-alternative-background-color: @palette-
|
|
139
|
+
@mode-alternative-background-color: fade(@palette-black, 60%);
|
|
140
140
|
@mode-alternative-selected-background-color: @palette-gray-7;
|
|
141
141
|
@mode-alternative-selected-background-disabled-color: @palette-gray-8;
|
|
142
|
+
@mode-alternative-hover-background-color: @palette-gray-9;
|
|
143
|
+
@mode-alternative-active-background-color: @palette-gray-6;
|
|
142
144
|
@closer-action-color: @text-color;
|
|
143
145
|
@closer-color: @palette-gray-3;
|
|
144
146
|
@closer-hover-color: @text-color;
|
|
@@ -157,13 +159,15 @@
|
|
|
157
159
|
@date-picker-separator-color: @palette-gray-4;
|
|
158
160
|
@date-picker-day-preselected-background-color: fade(@palette-white, 8%);
|
|
159
161
|
@dashboard-tile-border-color: @border-color;
|
|
160
|
-
@dashboard-tile-
|
|
161
|
-
@dashboard-tile-
|
|
162
|
+
@dashboard-tile-default-inverted-selected-border-color: @item-selection-border-color;
|
|
163
|
+
@dashboard-tile-alternative-selected-border-color: @dashboard-tile-default-selected-border-color;
|
|
164
|
+
@dashboard-tile-alternative-inverted-selected-border-color: @item-selection-border-color;
|
|
162
165
|
@desktop-bench-drop-shadow-color: fade(@palette-black, 35%);
|
|
163
166
|
@desktop-header-background-color: @palette-gray-10;
|
|
164
167
|
@desktop-header-border-color: @palette-gray-8;
|
|
165
168
|
@desktop-header-color: @title-color;
|
|
166
169
|
@desktop-logo-background-color: transparent;
|
|
170
|
+
@desktop-tab-border-color: @border-color;
|
|
167
171
|
@desktop-tab-closer-hover-background-color: @hover-background-color;
|
|
168
172
|
@desktop-tab-closer-active-background-color: @active-background-color;
|
|
169
173
|
@desktop-tab-status-color: @save-needer-color;
|
|
@@ -186,6 +190,7 @@
|
|
|
186
190
|
@planner-large-scale-item-line-color: fade(@palette-white, 20%);
|
|
187
191
|
@planner-resource-title-color: @text-color;
|
|
188
192
|
@planner-small-scale-item-line-color: fade(@palette-white, 7%);
|
|
193
|
+
@scroll-shadow-alpha: 0;
|
|
189
194
|
@scrollbar-thumb-main-color: @palette-white;
|
|
190
195
|
@scrollbar-thumb-color: fade(@scrollbar-thumb-main-color, 20%);
|
|
191
196
|
@scrollbar-thumb-hover-color: fade(@scrollbar-thumb-main-color, 30%);
|
|
@@ -242,6 +247,8 @@
|
|
|
242
247
|
@tile-default-inverted-link-hover-color: @link-hover-color;
|
|
243
248
|
@tile-default-inverted-status-hover-background-color: @hover-background-color;
|
|
244
249
|
@tile-default-inverted-status-active-background-color: @active-background-color;
|
|
250
|
+
@tile-default-inverted-error-status-color: @status-error-color;
|
|
251
|
+
@tile-default-inverted-error-status-hover-color: @status-error-hover-color;
|
|
245
252
|
@tile-default-label-color: @text-color-1;
|
|
246
253
|
@tile-default-link-active-color: @link-active-color;
|
|
247
254
|
@tile-table-default-inverted-selection-background-color: @item-selection-background-color;
|
package/src/style/colors.less
CHANGED
|
@@ -227,9 +227,12 @@
|
|
|
227
227
|
@context-menu-item-color: @text-color;
|
|
228
228
|
@context-menu-item-icon-color: @link-color;
|
|
229
229
|
@dashboard-tile-border-color: darken(@palette-gray-3, 5%);
|
|
230
|
-
@dashboard-tile-
|
|
230
|
+
@dashboard-tile-default-inverted-background-color: mix(@tile-default-inverted-background-color, @tile-default-inverted-selection-background-color, 65%);
|
|
231
|
+
@dashboard-tile-alternative-inverted-background-color: mix(@tile-alternative-inverted-background-color, @tile-alternative-inverted-selection-background-color, 65%);
|
|
232
|
+
@dashboard-tile-default-selected-border-color: @item-selection-border-color;
|
|
233
|
+
@dashboard-tile-default-inverted-selected-border-color: @dashboard-tile-default-inverted-background-color;
|
|
231
234
|
@dashboard-tile-alternative-selected-border-color: @tile-alternative-inverted-background-color;
|
|
232
|
-
@dashboard-tile-
|
|
235
|
+
@dashboard-tile-alternative-inverted-selected-border-color: @dashboard-tile-alternative-inverted-background-color;
|
|
233
236
|
@date-picker-day-hover-background-color: @hover-background-color;
|
|
234
237
|
@date-picker-day-selected-color: @selected-color;
|
|
235
238
|
@date-picker-day-selected-background-color: @selected-background-color;
|
|
@@ -266,6 +269,7 @@
|
|
|
266
269
|
@desktop-header-background-color: @accent-color-3;
|
|
267
270
|
@desktop-header-border-color: @border-color;
|
|
268
271
|
@desktop-tab-background-color: fade(@palette-black, 10%);
|
|
272
|
+
@desktop-tab-border-color: transparent;
|
|
269
273
|
@desktop-tab-flash-background-color: fade(@palette-black, 40%);
|
|
270
274
|
@desktop-tab-closer-hover-background-color: fade(@palette-black, 14%);
|
|
271
275
|
@desktop-tab-closer-active-background-color: fade(@palette-black, 20%);
|
|
@@ -298,6 +302,8 @@
|
|
|
298
302
|
@mode-alternative-selected-background-color: @palette-white;
|
|
299
303
|
@mode-alternative-selected-background-disabled-color: @palette-gray-4;
|
|
300
304
|
@mode-alternative-background-color: rgba(0, 0, 0, 0.08);
|
|
305
|
+
@mode-alternative-hover-background-color: rgba(0, 0, 0, 0.05);
|
|
306
|
+
@mode-alternative-active-background-color: rgba(0, 0, 0, 0.1);
|
|
301
307
|
@navigate-up-button-border-color: @button-border-color;
|
|
302
308
|
@navigate-up-button-color: @button-color;
|
|
303
309
|
@desktop-navigation-background-color: @desktop-header-background-color;
|
|
@@ -480,6 +486,8 @@
|
|
|
480
486
|
@tile-default-inverted-link-active-color: fade(@tile-default-inverted-color, 75%);
|
|
481
487
|
@tile-default-inverted-status-hover-background-color: fade(@palette-black, 15%);
|
|
482
488
|
@tile-default-inverted-status-active-background-color: fade(@palette-black, 20%);
|
|
489
|
+
@tile-default-inverted-error-status-color: @palette-red-3;
|
|
490
|
+
@tile-default-inverted-error-status-hover-color: @tile-default-inverted-error-status-color;
|
|
483
491
|
@tile-placeholder-background-color: @palette-gray-3;
|
|
484
492
|
@tile-scrollbar-thumb-inverted-main-color: @palette-gray-4;
|
|
485
493
|
@tile-scrollbar-thumb-inverted-color: fade(@tile-scrollbar-thumb-inverted-main-color, 30%);
|
|
@@ -515,7 +523,7 @@
|
|
|
515
523
|
@top-label-disabled-color: @label-disabled-color;
|
|
516
524
|
@tree-node-active-background-color: @item-active-background-color;
|
|
517
525
|
@tree-node-control-color: inherit;
|
|
518
|
-
@view-tab-selected-color: @
|
|
526
|
+
@view-tab-selected-color: @outline-title-color;
|
|
519
527
|
@view-tab-selected-background-color: @desktop-navigation-body-background-color;
|
|
520
528
|
@view-tab-in-background-selected-background-color: @desktop-navigation-body-in-background-background-color;
|
|
521
529
|
@view-tab-hover-background-color: fade(@palette-black, 20%);
|
package/src/style/fonts.less
CHANGED
|
@@ -33,13 +33,22 @@ Try these to switch between fonts:
|
|
|
33
33
|
@font-size-large: 16px;
|
|
34
34
|
@font-size-extra-large: 32px;
|
|
35
35
|
|
|
36
|
+
@font-size-icon-small: 14px;
|
|
36
37
|
@font-size-icon: 16px;
|
|
37
38
|
@font-size-icon-large: 24px;
|
|
38
39
|
|
|
39
40
|
@letter-spacing: 0.2px;
|
|
40
41
|
|
|
41
|
-
|
|
42
|
+
// Arial font is hard to vertically align, especially with icons
|
|
43
|
+
// This variable can be used to fix the alignment for specific widgets that can have an icon
|
|
44
|
+
// or are often placed to the side of widgets with icons
|
|
45
|
+
@text-margin-top: 1px;
|
|
46
|
+
|
|
47
|
+
// Icons aligned with line-height may use this variable.
|
|
48
|
+
// It should have the same size as regular text (not the font-size, the actual size)
|
|
49
|
+
@font-icon-line-height: 15px;
|
|
42
50
|
|
|
51
|
+
@icon-font-weight-light: 300;
|
|
43
52
|
@tooltip-font-weight: @font-weight-normal;
|
|
44
53
|
|
|
45
54
|
@font-face {
|
package/src/style/mixins.less
CHANGED
|
@@ -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
|
|
@@ -70,26 +70,30 @@
|
|
|
70
70
|
padding-bottom: 0;
|
|
71
71
|
}
|
|
72
72
|
|
|
73
|
-
.inverted-bottom-round-edge(@border-radius: 12px, @
|
|
73
|
+
.inverted-bottom-round-edge(@border-radius: 12px, @color: #ffffff) {
|
|
74
|
+
@border-width: 5px;
|
|
75
|
+
|
|
74
76
|
--color: @color; // Allows to change color only
|
|
75
77
|
position: absolute;
|
|
76
78
|
pointer-events: none;
|
|
77
79
|
background-color: transparent;
|
|
78
|
-
bottom:
|
|
79
|
-
height:
|
|
80
|
-
width: @
|
|
81
|
-
box-
|
|
82
|
-
|
|
83
|
-
|
|
80
|
+
bottom: -@border-width;
|
|
81
|
+
height: @border-radius;
|
|
82
|
+
width: @border-radius;
|
|
83
|
+
box-sizing: content-box;
|
|
84
|
+
border: @border-width solid var(--color);
|
|
85
|
+
border-top: none;
|
|
84
86
|
|
|
85
87
|
&.left {
|
|
86
|
-
left: -@
|
|
87
|
-
border-bottom-right-radius: @border-radius;
|
|
88
|
+
left: -@border-radius;
|
|
89
|
+
border-bottom-right-radius: @border-radius+@border-width;
|
|
90
|
+
border-left: none;
|
|
88
91
|
}
|
|
89
92
|
|
|
90
93
|
&.right {
|
|
91
|
-
right: -@
|
|
92
|
-
border-bottom-left-radius: @border-radius;
|
|
94
|
+
right: -@border-radius;
|
|
95
|
+
border-bottom-left-radius: @border-radius+@border-width;
|
|
96
|
+
border-right: none;
|
|
93
97
|
}
|
|
94
98
|
}
|
|
95
99
|
|
|
@@ -8,5 +8,8 @@
|
|
|
8
8
|
* Contributors:
|
|
9
9
|
* BSI Business Systems Integration AG - initial API and implementation
|
|
10
10
|
*/
|
|
11
|
+
@desktop-tab-border-width: 1px;
|
|
11
12
|
@popup-border-width: 1px;
|
|
12
|
-
@tooltip-border-width: 1px;
|
|
13
|
+
@tooltip-border-width: 1px;
|
|
14
|
+
@scroll-shadow-size-large: 14px;
|
|
15
|
+
@scroll-shadow-size: @scroll-shadow-size-large;
|
package/src/style/sizes.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
|
|
@@ -17,6 +17,8 @@
|
|
|
17
17
|
@border-radius-medium: 8px;
|
|
18
18
|
@border-radius-large: 12px;
|
|
19
19
|
@borderless-field-padding-y: @text-field-padding-y + 1px;
|
|
20
|
+
@breadcrumb-bar-field-padding-bottom: 0;
|
|
21
|
+
@breadcrumb-bar-field-padding-bottom-dense: 4px;
|
|
20
22
|
@collapse-handle-border-radius: @border-radius-medium;
|
|
21
23
|
@control-border-radius: @border-radius;
|
|
22
24
|
@control-alternative-border-radius: @control-border-radius;
|
|
@@ -55,7 +57,7 @@
|
|
|
55
57
|
@focus-box-shadow-size: 3px;
|
|
56
58
|
@text-field-padding-x: 10px;
|
|
57
59
|
@text-field-padding-y: 7px;
|
|
58
|
-
@text-field-padding-top-compensation: 1px;
|
|
60
|
+
@text-field-padding-top-compensation: 1px + @text-margin-top;
|
|
59
61
|
@text-field-alternative-padding-left: 0;
|
|
60
62
|
@text-field-alternative-padding-right: 0;
|
|
61
63
|
@text-field-icon-size: 24px;
|
|
@@ -162,6 +164,7 @@
|
|
|
162
164
|
@desktop-navigation-width: 290px;
|
|
163
165
|
@desktop-notification-no-icon-padding-y: 16px;
|
|
164
166
|
@desktop-tab-border-radius: @view-tab-border-radius;
|
|
167
|
+
@desktop-tab-border-width: 0;
|
|
165
168
|
@desktop-tab-key-box-bottom: @view-tab-key-box-bottom;
|
|
166
169
|
@desktop-tab-margin-top: @view-tab-margin-top;
|
|
167
170
|
@desktop-tab-margin-right: 3px;
|
|
@@ -172,7 +175,7 @@
|
|
|
172
175
|
@desktop-tab-border-radius: @view-tab-selected-border-radius;
|
|
173
176
|
@desktop-tab-margin-top: @view-tab-selected-margin-top;
|
|
174
177
|
@desktop-tool-box-item-border-radius: @view-tab-border-radius;
|
|
175
|
-
@desktop-tool-box-item-font-size:
|
|
178
|
+
@desktop-tool-box-item-font-size: @font-size-icon-small;
|
|
176
179
|
@desktop-tool-box-item-margin: 3px;
|
|
177
180
|
@desktop-tool-box-item-margin-top: @view-tab-margin-top;
|
|
178
181
|
@detail-table-border-radius: 4px;
|
|
@@ -223,21 +226,19 @@
|
|
|
223
226
|
@mobile-popup-title-margin-top: 10px;
|
|
224
227
|
@mode-padding-x: 12px;
|
|
225
228
|
@mode-padding-y: 6px;
|
|
226
|
-
@mode-padding-dense: @mode-padding-dense-y @mode-padding-dense-x;
|
|
227
229
|
@mode-padding-dense-x: 5px;
|
|
228
230
|
@mode-padding-dense-y: 3px;
|
|
229
231
|
@mode-border-width: 1px;
|
|
230
|
-
@mode-alternative-border-width: 3px;
|
|
232
|
+
@mode-selector-alternative-border-width: 3px;
|
|
231
233
|
@notification-no-icon-padding-y: 13px;
|
|
232
234
|
@outline-breadcrumb-node-padding-x: @outline-title-padding-left;
|
|
233
235
|
@outline-breadcrumb-node-padding-y: 12px;
|
|
234
236
|
@outline-data-padding-top: 16px;
|
|
235
237
|
@outline-font-size: @font-size-normal;
|
|
236
|
-
@outline-node-control-size: 18px;
|
|
237
238
|
@outline-node-control-padding-left: @outline-title-padding-left;
|
|
238
239
|
@outline-node-control-padding-y: @outline-node-padding-y;
|
|
239
240
|
@outline-node-control-line-height: @tree-node-control-line-height;
|
|
240
|
-
@outline-node-font-icon-line-height:
|
|
241
|
+
@outline-node-font-icon-line-height: @tree-node-font-icon-line-height;
|
|
241
242
|
@outline-node-font-icon-size: 16px;
|
|
242
243
|
@outline-node-padding-left: 37px;
|
|
243
244
|
@outline-node-padding-right: 8px;
|
|
@@ -292,9 +293,15 @@
|
|
|
292
293
|
@tab-item-title-padding-bottom: @group-box-title-padding-bottom;
|
|
293
294
|
@tab-item-title-padding-top: @group-box-title-padding-top;
|
|
294
295
|
@tab-item-title-margin-top: @group-box-header-margin-top;
|
|
296
|
+
@table-aggregate-cell-font-icon-line-height: 14px;
|
|
297
|
+
@table-aggregate-sum-avg-font-icon-size: 13px;
|
|
298
|
+
@table-aggregate-min-max-font-icon-size: 15px;
|
|
299
|
+
@table-aggregate-row-font-size: @font-size-smaller;
|
|
295
300
|
@table-cell-padding-left: 10px;
|
|
296
301
|
@table-cell-padding-right: @table-cell-padding-left;
|
|
297
302
|
@table-cell-padding-right-last: @scrollbar-size;
|
|
303
|
+
@table-cell-font-icon-size: @tree-node-font-icon-size;
|
|
304
|
+
@table-cell-font-icon-line-height: @tree-node-font-icon-line-height;
|
|
298
305
|
@table-control-content-padding: 10px;
|
|
299
306
|
@table-control-container-height: 364px;
|
|
300
307
|
@table-control-container-height-dense: 320px;
|
|
@@ -350,9 +357,10 @@
|
|
|
350
357
|
@tree-node-checkbox-margin-top: -2px;
|
|
351
358
|
@tree-node-control-checkbox-size: 20px + @tree-node-control-size;
|
|
352
359
|
@tree-node-control-size: 16px;
|
|
353
|
-
@tree-node-control-line-height:
|
|
360
|
+
@tree-node-control-line-height: @font-icon-line-height;
|
|
354
361
|
@tree-node-control-padding-left: 13px;
|
|
355
|
-
@tree-node-font-icon-line-height:
|
|
362
|
+
@tree-node-font-icon-line-height: @font-icon-line-height;
|
|
363
|
+
@tree-node-font-icon-size: @font-size-icon-small;
|
|
356
364
|
@tree-node-padding-left: 28px;
|
|
357
365
|
@tree-node-padding-right: 7px;
|
|
358
366
|
@tree-node-padding-y: 7px;
|