@eclipse-scout/core 22.0.0 → 22.0.10
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 +597 -422
- package/dist/eclipse-scout-core-theme-dark.css.map +1 -1
- package/dist/eclipse-scout-core-theme.css +333 -158
- package/dist/eclipse-scout-core-theme.css.map +1 -1
- package/dist/eclipse-scout-core.js +1196 -811
- 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/App.js +1 -1
- 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 +12 -8
- package/src/breadcrumbbar/BreadcrumbBarLayout.js +2 -2
- 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/DesktopTabAreaLayout.js +1 -1
- 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 +18 -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 +27 -8
- 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 +20 -20
- 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 +25 -11
- package/src/style/colors.less +17 -3
- package/src/style/fonts.less +10 -1
- package/src/style/mixins.less +21 -14
- package/src/style/sizes-dark.less +4 -1
- package/src/style/sizes.less +17 -9
- package/src/table/Table.js +63 -49
- 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/columns/ColumnOptimalWidthMeasurer.js +1 -1
- 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/tagbar/TagBarOverflowPopupLayout.js +1 -1
- 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/button/ButtonTile.js +1 -1
- 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/LazyNodeFilter.js +4 -2
- package/src/tree/Tree.js +7 -5
- 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/dragAndDrop.js +5 -4
- package/src/util/events.js +1 -1
- package/src/util/objects.js +4 -1
- package/src/widget/FilterSupport.js +1 -1
- package/src/widget/Widget.js +17 -7
|
@@ -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%);
|
|
@@ -75,8 +75,14 @@
|
|
|
75
75
|
@warning-color: @palette-orange-2;
|
|
76
76
|
@ok-color: @palette-green-2;
|
|
77
77
|
@error-background-color: @background-color;
|
|
78
|
+
@error-default-button-background-hover-color: lighten(@error-color, 6%);
|
|
79
|
+
@error-default-button-background-active-color: lighten(@error-color, 10%);
|
|
78
80
|
@error-focus-box-shadow-color: mix(@error-color, @palette-black, 50%);
|
|
81
|
+
@warning-default-button-background-hover-color: lighten(@warning-color, 8%);
|
|
82
|
+
@warning-default-button-background-active-color: lighten(@warning-color, 12%);
|
|
79
83
|
@warning-focus-box-shadow-color: mix(@warning-color, @palette-black, 50%);
|
|
84
|
+
@ok-default-button-background-hover-color: lighten(@ok-color, 8%);
|
|
85
|
+
@ok-default-button-background-active-color: lighten(@ok-color, 14%);
|
|
80
86
|
@ok-focus-box-shadow-color: mix(@ok-color, @palette-black, 50%);
|
|
81
87
|
@focus-border-color: @focus-color;
|
|
82
88
|
@focus-box-shadow-color: darken(@focus-color, 30%);
|
|
@@ -102,7 +108,8 @@
|
|
|
102
108
|
@popup-2-background-color: @palette-gray-6;
|
|
103
109
|
@popup-2-backdrop-background-color: fade(@popup-2-background-color, 80%);
|
|
104
110
|
@popup-2-backdrop-filter: blur(15px);
|
|
105
|
-
@selected-hover-background-color:
|
|
111
|
+
@selected-hover-background-color: lighten(@selected-background-color, 8%);
|
|
112
|
+
@selected-active-background-color: lighten(@selected-background-color, 12%);
|
|
106
113
|
@selected-disabled-background-color: @palette-gray-5;
|
|
107
114
|
@text-color: @palette-gray-2;
|
|
108
115
|
@text-color-1: @palette-gray-3;
|
|
@@ -129,9 +136,11 @@
|
|
|
129
136
|
@carousel-current-item-color: @palette-gray-1;
|
|
130
137
|
@check-box-border-color: @palette-gray-5;
|
|
131
138
|
@mode-color: @text-color;
|
|
132
|
-
@mode-alternative-background-color: @palette-
|
|
139
|
+
@mode-alternative-background-color: fade(@palette-black, 60%);
|
|
133
140
|
@mode-alternative-selected-background-color: @palette-gray-7;
|
|
134
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;
|
|
135
144
|
@closer-action-color: @text-color;
|
|
136
145
|
@closer-color: @palette-gray-3;
|
|
137
146
|
@closer-hover-color: @text-color;
|
|
@@ -150,13 +159,15 @@
|
|
|
150
159
|
@date-picker-separator-color: @palette-gray-4;
|
|
151
160
|
@date-picker-day-preselected-background-color: fade(@palette-white, 8%);
|
|
152
161
|
@dashboard-tile-border-color: @border-color;
|
|
153
|
-
@dashboard-tile-
|
|
154
|
-
@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;
|
|
155
165
|
@desktop-bench-drop-shadow-color: fade(@palette-black, 35%);
|
|
156
166
|
@desktop-header-background-color: @palette-gray-10;
|
|
157
167
|
@desktop-header-border-color: @palette-gray-8;
|
|
158
168
|
@desktop-header-color: @title-color;
|
|
159
169
|
@desktop-logo-background-color: transparent;
|
|
170
|
+
@desktop-tab-border-color: @border-color;
|
|
160
171
|
@desktop-tab-closer-hover-background-color: @hover-background-color;
|
|
161
172
|
@desktop-tab-closer-active-background-color: @active-background-color;
|
|
162
173
|
@desktop-tab-status-color: @save-needer-color;
|
|
@@ -179,6 +190,7 @@
|
|
|
179
190
|
@planner-large-scale-item-line-color: fade(@palette-white, 20%);
|
|
180
191
|
@planner-resource-title-color: @text-color;
|
|
181
192
|
@planner-small-scale-item-line-color: fade(@palette-white, 7%);
|
|
193
|
+
@scroll-shadow-alpha: 0;
|
|
182
194
|
@scrollbar-thumb-main-color: @palette-white;
|
|
183
195
|
@scrollbar-thumb-color: fade(@scrollbar-thumb-main-color, 20%);
|
|
184
196
|
@scrollbar-thumb-hover-color: fade(@scrollbar-thumb-main-color, 30%);
|
|
@@ -235,6 +247,8 @@
|
|
|
235
247
|
@tile-default-inverted-link-hover-color: @link-hover-color;
|
|
236
248
|
@tile-default-inverted-status-hover-background-color: @hover-background-color;
|
|
237
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;
|
|
238
252
|
@tile-default-label-color: @text-color-1;
|
|
239
253
|
@tile-default-link-active-color: @link-active-color;
|
|
240
254
|
@tile-table-default-inverted-selection-background-color: @item-selection-background-color;
|
package/src/style/colors.less
CHANGED
|
@@ -101,8 +101,14 @@
|
|
|
101
101
|
@ok-color: @palette-green-5;
|
|
102
102
|
@error-background-color: @palette-red-0;
|
|
103
103
|
@error-border-color: @error-color;
|
|
104
|
+
@error-default-button-background-hover-color: darken(@error-color, 6%);
|
|
105
|
+
@error-default-button-background-active-color: darken(@error-color, 13%);
|
|
104
106
|
@error-focus-box-shadow-color: fade(@error-color, 40%);
|
|
107
|
+
@warning-default-button-background-hover-color: darken(@warning-color, 6%);
|
|
108
|
+
@warning-default-button-background-active-color: darken(@warning-color, 13%);
|
|
105
109
|
@warning-focus-box-shadow-color: fade(@warning-color, 40%);
|
|
110
|
+
@ok-default-button-background-hover-color: darken(@ok-color, 6%);
|
|
111
|
+
@ok-default-button-background-active-color: darken(@ok-color, 13%);
|
|
106
112
|
@ok-focus-box-shadow-color: fade(@ok-color, 40%);
|
|
107
113
|
@focus-border-color: @accent-color-3;
|
|
108
114
|
@focus-box-shadow-color: darken(@accent-color-1, 10%);
|
|
@@ -221,9 +227,12 @@
|
|
|
221
227
|
@context-menu-item-color: @text-color;
|
|
222
228
|
@context-menu-item-icon-color: @link-color;
|
|
223
229
|
@dashboard-tile-border-color: darken(@palette-gray-3, 5%);
|
|
224
|
-
@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;
|
|
225
234
|
@dashboard-tile-alternative-selected-border-color: @tile-alternative-inverted-background-color;
|
|
226
|
-
@dashboard-tile-
|
|
235
|
+
@dashboard-tile-alternative-inverted-selected-border-color: @dashboard-tile-alternative-inverted-background-color;
|
|
227
236
|
@date-picker-day-hover-background-color: @hover-background-color;
|
|
228
237
|
@date-picker-day-selected-color: @selected-color;
|
|
229
238
|
@date-picker-day-selected-background-color: @selected-background-color;
|
|
@@ -260,6 +269,7 @@
|
|
|
260
269
|
@desktop-header-background-color: @accent-color-3;
|
|
261
270
|
@desktop-header-border-color: @border-color;
|
|
262
271
|
@desktop-tab-background-color: fade(@palette-black, 10%);
|
|
272
|
+
@desktop-tab-border-color: transparent;
|
|
263
273
|
@desktop-tab-flash-background-color: fade(@palette-black, 40%);
|
|
264
274
|
@desktop-tab-closer-hover-background-color: fade(@palette-black, 14%);
|
|
265
275
|
@desktop-tab-closer-active-background-color: fade(@palette-black, 20%);
|
|
@@ -292,6 +302,8 @@
|
|
|
292
302
|
@mode-alternative-selected-background-color: @palette-white;
|
|
293
303
|
@mode-alternative-selected-background-disabled-color: @palette-gray-4;
|
|
294
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);
|
|
295
307
|
@navigate-up-button-border-color: @button-border-color;
|
|
296
308
|
@navigate-up-button-color: @button-color;
|
|
297
309
|
@desktop-navigation-background-color: @desktop-header-background-color;
|
|
@@ -474,6 +486,8 @@
|
|
|
474
486
|
@tile-default-inverted-link-active-color: fade(@tile-default-inverted-color, 75%);
|
|
475
487
|
@tile-default-inverted-status-hover-background-color: fade(@palette-black, 15%);
|
|
476
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;
|
|
477
491
|
@tile-placeholder-background-color: @palette-gray-3;
|
|
478
492
|
@tile-scrollbar-thumb-inverted-main-color: @palette-gray-4;
|
|
479
493
|
@tile-scrollbar-thumb-inverted-color: fade(@tile-scrollbar-thumb-inverted-main-color, 30%);
|
|
@@ -509,7 +523,7 @@
|
|
|
509
523
|
@top-label-disabled-color: @label-disabled-color;
|
|
510
524
|
@tree-node-active-background-color: @item-active-background-color;
|
|
511
525
|
@tree-node-control-color: inherit;
|
|
512
|
-
@view-tab-selected-color: @
|
|
526
|
+
@view-tab-selected-color: @outline-title-color;
|
|
513
527
|
@view-tab-selected-background-color: @desktop-navigation-body-background-color;
|
|
514
528
|
@view-tab-in-background-selected-background-color: @desktop-navigation-body-in-background-background-color;
|
|
515
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
|
|
|
@@ -213,8 +217,7 @@
|
|
|
213
217
|
}
|
|
214
218
|
}
|
|
215
219
|
|
|
216
|
-
.tooltip-status
|
|
217
|
-
.info-status {
|
|
220
|
+
.tooltip-status {
|
|
218
221
|
visibility: visible;
|
|
219
222
|
cursor: pointer;
|
|
220
223
|
|
|
@@ -236,6 +239,10 @@
|
|
|
236
239
|
}
|
|
237
240
|
}
|
|
238
241
|
|
|
242
|
+
.info-status {
|
|
243
|
+
#scout.tooltip-status();
|
|
244
|
+
}
|
|
245
|
+
|
|
239
246
|
.ok-status {
|
|
240
247
|
visibility: visible;
|
|
241
248
|
cursor: pointer;
|
|
@@ -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;
|
package/src/table/Table.js
CHANGED
|
@@ -23,6 +23,7 @@ export default class Table extends Widget {
|
|
|
23
23
|
this.contextColumn = null;
|
|
24
24
|
this.checkable = false;
|
|
25
25
|
this.checkableStyle = Table.CheckableStyle.CHECKBOX;
|
|
26
|
+
this.cellEditorPopup = null;
|
|
26
27
|
this.compact = false;
|
|
27
28
|
this.compactHandler = scout.create('TableCompactHandler', {table: this});
|
|
28
29
|
this.compactColumn = null;
|
|
@@ -100,6 +101,7 @@ export default class Table extends Widget {
|
|
|
100
101
|
this._popupOpenHandler = this._onDesktopPopupOpen.bind(this);
|
|
101
102
|
this._rerenderViewPortAfterAttach = false;
|
|
102
103
|
this._renderViewPortAfterAttach = false;
|
|
104
|
+
this._postAttachActions = [];
|
|
103
105
|
this._desktopPropertyChangeHandler = this._onDesktopPropertyChange.bind(this);
|
|
104
106
|
this._addWidgetProperties(['tableControls', 'menus', 'keyStrokes', 'staticMenus', 'tileTableHeader', 'tableTileGridMediator']);
|
|
105
107
|
|
|
@@ -475,7 +477,6 @@ export default class Table extends Widget {
|
|
|
475
477
|
}
|
|
476
478
|
|
|
477
479
|
_removeData() {
|
|
478
|
-
this._destroyCellEditorPopup();
|
|
479
480
|
this._removeAggregateRows();
|
|
480
481
|
this._uninstallImageListeners();
|
|
481
482
|
this._uninstallCellTooltipSupport();
|
|
@@ -554,7 +555,7 @@ export default class Table extends Widget {
|
|
|
554
555
|
return; // row was removed while loading the image
|
|
555
556
|
}
|
|
556
557
|
let oldRowHeight = row.height;
|
|
557
|
-
row.height = $row
|
|
558
|
+
row.height = this._measureRowHeight($row);
|
|
558
559
|
if (oldRowHeight !== row.height) {
|
|
559
560
|
this.invalidateLayoutTree();
|
|
560
561
|
}
|
|
@@ -633,11 +634,11 @@ export default class Table extends Widget {
|
|
|
633
634
|
// Don't start cell editor or trigger click if row control was clicked (expansion itself is handled by the mouse down handler)
|
|
634
635
|
return;
|
|
635
636
|
}
|
|
637
|
+
let row = $row.data('row'); // read row before the $row potentially could be replaced by the column specific logic on mouse up
|
|
636
638
|
if (mouseButton === 1) {
|
|
637
639
|
column.onMouseUp(event, $row);
|
|
638
640
|
$appLink = this._find$AppLink(event);
|
|
639
641
|
}
|
|
640
|
-
let row = $row.data('row');
|
|
641
642
|
if ($appLink) {
|
|
642
643
|
this._triggerAppLinkAction(column, row, $appLink.data('ref'), $appLink);
|
|
643
644
|
} else {
|
|
@@ -848,7 +849,7 @@ export default class Table extends Widget {
|
|
|
848
849
|
_isAggregatedTooltip($cell) {
|
|
849
850
|
let $row = $cell.parent();
|
|
850
851
|
return $row.data('aggregateRow') /* row in the table */
|
|
851
|
-
|| $row.hasClass('table-aggregate') /* aggregate table control
|
|
852
|
+
|| $row.hasClass('table-aggregate'); /* aggregate table control */
|
|
852
853
|
}
|
|
853
854
|
|
|
854
855
|
reload(reloadReason) {
|
|
@@ -1527,12 +1528,12 @@ export default class Table extends Widget {
|
|
|
1527
1528
|
|
|
1528
1529
|
_updateRowHeight() {
|
|
1529
1530
|
let $emptyRow = this.$data.appendDiv('table-row');
|
|
1530
|
-
let $emptyAggrRow = this
|
|
1531
|
+
let $emptyAggrRow = this._build$AggregateRow().appendTo(this.$data);
|
|
1531
1532
|
|
|
1532
1533
|
$emptyRow.appendDiv('table-cell').html(' ');
|
|
1533
|
-
$emptyAggrRow.appendDiv('table-cell').html(' ');
|
|
1534
|
-
this.rowHeight = $emptyRow
|
|
1535
|
-
this.aggregateRowHeight = $emptyAggrRow
|
|
1534
|
+
$emptyAggrRow.appendDiv('table-cell table-aggregate-cell').appendSpan('text').html(' ');
|
|
1535
|
+
this.rowHeight = this._measureRowHeight($emptyRow);
|
|
1536
|
+
this.aggregateRowHeight = this._measureRowHeight($emptyAggrRow);
|
|
1536
1537
|
$emptyRow.remove();
|
|
1537
1538
|
$emptyAggrRow.remove();
|
|
1538
1539
|
}
|
|
@@ -1545,14 +1546,14 @@ export default class Table extends Widget {
|
|
|
1545
1546
|
if (!row.$row) {
|
|
1546
1547
|
row.height = null;
|
|
1547
1548
|
} else {
|
|
1548
|
-
row.height = row.$row
|
|
1549
|
+
row.height = this._measureRowHeight(row.$row);
|
|
1549
1550
|
}
|
|
1550
1551
|
});
|
|
1551
1552
|
this._aggregateRows.forEach(aggregateRow => {
|
|
1552
1553
|
if (!aggregateRow.$row) {
|
|
1553
1554
|
aggregateRow.height = null;
|
|
1554
1555
|
} else {
|
|
1555
|
-
aggregateRow.height = aggregateRow.$row
|
|
1556
|
+
aggregateRow.height = this._measureRowHeight(aggregateRow.$row);
|
|
1556
1557
|
}
|
|
1557
1558
|
});
|
|
1558
1559
|
}
|
|
@@ -1866,7 +1867,7 @@ export default class Table extends Widget {
|
|
|
1866
1867
|
}
|
|
1867
1868
|
|
|
1868
1869
|
this._destroyTooltipsForRow(row);
|
|
1869
|
-
this.
|
|
1870
|
+
this._destroyCellEditorForRow(row);
|
|
1870
1871
|
|
|
1871
1872
|
// Do not remove rows which are removed using an animation
|
|
1872
1873
|
if (!$row.hasClass('hiding')) {
|
|
@@ -1936,7 +1937,7 @@ export default class Table extends Widget {
|
|
|
1936
1937
|
* is expected to be linked with the corresponding '$row' (row.$row and $row.data('row')).
|
|
1937
1938
|
*/
|
|
1938
1939
|
_installRow(row) {
|
|
1939
|
-
row.height = row.$row
|
|
1940
|
+
row.height = this._measureRowHeight(row.$row);
|
|
1940
1941
|
|
|
1941
1942
|
if (row.hasError) {
|
|
1942
1943
|
this._showCellErrorForRow(row);
|
|
@@ -2068,8 +2069,24 @@ export default class Table extends Widget {
|
|
|
2068
2069
|
}
|
|
2069
2070
|
|
|
2070
2071
|
/**
|
|
2071
|
-
*
|
|
2072
|
-
*
|
|
2072
|
+
* Starts cell editing for the cell at the given column and row, but only if editing is allowed.
|
|
2073
|
+
* @see prepareCellEdit
|
|
2074
|
+
*/
|
|
2075
|
+
focusCell(column, row) {
|
|
2076
|
+
let cell = this.cell(column, row);
|
|
2077
|
+
if (this.enabledComputed && row.enabled && cell.editable) {
|
|
2078
|
+
this.prepareCellEdit(column, row);
|
|
2079
|
+
}
|
|
2080
|
+
}
|
|
2081
|
+
|
|
2082
|
+
/**
|
|
2083
|
+
* Creates a cell editor for the cell at the given column and row, ensures the row is selected and passes the editor
|
|
2084
|
+
* to {@link #startCellEdit} which starts the editing by rendering the editor in a {@link CellEditorPopup}.<br>
|
|
2085
|
+
* If the completion of a previous cell edit is still in progress, the preparation is delayed until the completion is finished.
|
|
2086
|
+
*
|
|
2087
|
+
* @param {boolean} [openFieldPopupOnCellEdit] true to instruct the editor to open its control popup when the editor is rendered.
|
|
2088
|
+
* This only has an effect if the editor has a popup (e.g. SmartField or DateField).
|
|
2089
|
+
* @returns Promise the promise will be resolved when the preparation has been finished.
|
|
2073
2090
|
*/
|
|
2074
2091
|
prepareCellEdit(column, row, openFieldPopupOnCellEdit) {
|
|
2075
2092
|
let promise = $.resolvedPromise();
|
|
@@ -2080,10 +2097,10 @@ export default class Table extends Widget {
|
|
|
2080
2097
|
}
|
|
2081
2098
|
|
|
2082
2099
|
/**
|
|
2083
|
-
* @param openFieldPopupOnCellEdit when this parameter is set to true, the CellEditorPopup sets an
|
|
2100
|
+
* @param {boolean} [openFieldPopupOnCellEdit] when this parameter is set to true, the CellEditorPopup sets an
|
|
2084
2101
|
* additional property 'cellEditor' on the editor-field. The field instance may use this property
|
|
2085
2102
|
* to decide whether or not it should open a popup immediately after it is rendered. This is used
|
|
2086
|
-
* for Smart- and DateFields.
|
|
2103
|
+
* for Smart- and DateFields. Default is false.
|
|
2087
2104
|
*/
|
|
2088
2105
|
prepareCellEditInternal(column, row, openFieldPopupOnCellEdit) {
|
|
2089
2106
|
let event = new Event({
|
|
@@ -2380,14 +2397,14 @@ export default class Table extends Widget {
|
|
|
2380
2397
|
return;
|
|
2381
2398
|
}
|
|
2382
2399
|
|
|
2383
|
-
let $aggregateRow = this.
|
|
2400
|
+
let $aggregateRow = this._build$AggregateRow(aggregateRow);
|
|
2384
2401
|
$aggregateRow[insertFunc](refRow.$row).width(this.rowWidth);
|
|
2385
2402
|
|
|
2386
2403
|
this.visibleColumns()
|
|
2387
2404
|
.map(column => $(column.buildCellForAggregateRow(aggregateRow)).appendTo($aggregateRow))
|
|
2388
2405
|
.forEach($c => this._resizeAggregateCell($c));
|
|
2389
2406
|
|
|
2390
|
-
aggregateRow.height = $aggregateRow
|
|
2407
|
+
aggregateRow.height = this._measureRowHeight($aggregateRow);
|
|
2391
2408
|
aggregateRow.$row = $aggregateRow;
|
|
2392
2409
|
if (animate) {
|
|
2393
2410
|
this._showRow(aggregateRow);
|
|
@@ -2395,7 +2412,7 @@ export default class Table extends Widget {
|
|
|
2395
2412
|
}, this);
|
|
2396
2413
|
}
|
|
2397
2414
|
|
|
2398
|
-
|
|
2415
|
+
_build$AggregateRow(aggregateRow) {
|
|
2399
2416
|
let onTop = this.groupingStyle === Table.GroupingStyle.TOP;
|
|
2400
2417
|
let $aggregateRow = this.$container
|
|
2401
2418
|
.makeDiv('table-aggregate-row')
|
|
@@ -2966,7 +2983,7 @@ export default class Table extends Widget {
|
|
|
2966
2983
|
oldRow.$row.replaceWith($updatedRow);
|
|
2967
2984
|
Table.linkRowToDiv(row, $updatedRow);
|
|
2968
2985
|
this._destroyTooltipsForRow(row);
|
|
2969
|
-
this.
|
|
2986
|
+
this._destroyCellEditorForRow(row);
|
|
2970
2987
|
this._installRow(row);
|
|
2971
2988
|
if (oldRow.$row.hasClass('showing') && oldRow.$row.outerHeight() < row.$row.outerHeight() / 3) {
|
|
2972
2989
|
// If the row was being shown by an animation, start the animation again for the new row, otherwise row would immediately appear without animation.
|
|
@@ -3036,17 +3053,25 @@ export default class Table extends Widget {
|
|
|
3036
3053
|
}
|
|
3037
3054
|
}
|
|
3038
3055
|
|
|
3039
|
-
|
|
3056
|
+
_destroyCellEditorForRow(row) {
|
|
3040
3057
|
if (this.cellEditorPopup && this.cellEditorPopup.rendered && this.cellEditorPopup.row.id === row.id) {
|
|
3041
|
-
this.cellEditorPopup.
|
|
3058
|
+
this.cellEditorPopup.destroy();
|
|
3042
3059
|
}
|
|
3043
3060
|
}
|
|
3044
3061
|
|
|
3045
3062
|
startCellEdit(column, row, field) {
|
|
3046
|
-
if (
|
|
3063
|
+
if (field.destroyed) {
|
|
3064
|
+
// May happen if the action was postponed and the field destroyed in the meantime using endCellEdit.
|
|
3065
|
+
return;
|
|
3066
|
+
}
|
|
3067
|
+
if (!this._isDataRendered()) {
|
|
3047
3068
|
this._postRenderActions.push(this.startCellEdit.bind(this, column, row, field));
|
|
3048
3069
|
return;
|
|
3049
3070
|
}
|
|
3071
|
+
if (!this.$container.isAttached()) {
|
|
3072
|
+
this._postAttachActions.push(this.startCellEdit.bind(this, column, row, field));
|
|
3073
|
+
return;
|
|
3074
|
+
}
|
|
3050
3075
|
|
|
3051
3076
|
this.trigger('startCellEdit', {
|
|
3052
3077
|
column: column,
|
|
@@ -3066,11 +3091,6 @@ export default class Table extends Widget {
|
|
|
3066
3091
|
* value is updated by an updateRow event instead.
|
|
3067
3092
|
*/
|
|
3068
3093
|
endCellEdit(field, saveEditorValue) {
|
|
3069
|
-
if (!this._isDataRendered() || !this.isAttachedAndRendered()) {
|
|
3070
|
-
this._postRenderActions.push(this.endCellEdit.bind(this, field, saveEditorValue));
|
|
3071
|
-
return;
|
|
3072
|
-
}
|
|
3073
|
-
|
|
3074
3094
|
if (!this.cellEditorPopup) {
|
|
3075
3095
|
// the cellEditorPopup could already be removed by scrolling (out of view range) or be removed by update rows
|
|
3076
3096
|
field.destroy();
|
|
@@ -4656,7 +4676,9 @@ export default class Table extends Widget {
|
|
|
4656
4676
|
this.$container.toggleClass('checkable', scout.isOneOf(this.checkableStyle, Table.CheckableStyle.TABLE_ROW, Table.CheckableStyle.CHECKBOX_TABLE_ROW));
|
|
4657
4677
|
this.$container.toggleClass('table-row-check', this.checkableStyle === Table.CheckableStyle.TABLE_ROW);
|
|
4658
4678
|
if (this._isDataRendered()) {
|
|
4679
|
+
this._updateRowWidth();
|
|
4659
4680
|
this._redraw();
|
|
4681
|
+
this.invalidateLayoutTree();
|
|
4660
4682
|
}
|
|
4661
4683
|
}
|
|
4662
4684
|
|
|
@@ -4831,7 +4853,7 @@ export default class Table extends Widget {
|
|
|
4831
4853
|
this.$data.setEnabled(enabled);
|
|
4832
4854
|
}
|
|
4833
4855
|
|
|
4834
|
-
this.$container.
|
|
4856
|
+
this.$container.setTabbableOrFocusable(enabled);
|
|
4835
4857
|
}
|
|
4836
4858
|
|
|
4837
4859
|
/**
|
|
@@ -4974,8 +4996,11 @@ export default class Table extends Widget {
|
|
|
4974
4996
|
}
|
|
4975
4997
|
|
|
4976
4998
|
_heightForRow(row) {
|
|
4977
|
-
let height = 0
|
|
4999
|
+
let height = 0;
|
|
5000
|
+
let aggregateRow = row.aggregateRowBefore;
|
|
5001
|
+
if (this.groupingStyle === Table.GroupingStyle.BOTTOM) {
|
|
4978
5002
|
aggregateRow = row.aggregateRowAfter;
|
|
5003
|
+
}
|
|
4979
5004
|
|
|
4980
5005
|
if (row.height) {
|
|
4981
5006
|
height = row.height;
|
|
@@ -4995,6 +5020,10 @@ export default class Table extends Widget {
|
|
|
4995
5020
|
return height;
|
|
4996
5021
|
}
|
|
4997
5022
|
|
|
5023
|
+
_measureRowHeight($row) {
|
|
5024
|
+
return graphics.size($row, {includeMargin: true, exact: true}).height;
|
|
5025
|
+
}
|
|
5026
|
+
|
|
4998
5027
|
/**
|
|
4999
5028
|
* Returns a range of size this.viewRangeSize. Start of range is rowIndex - viewRangeSize / 4.
|
|
5000
5029
|
* -> 1/4 of the rows are before the viewport 2/4 in the viewport 1/4 after the viewport,
|
|
@@ -5302,18 +5331,6 @@ export default class Table extends Widget {
|
|
|
5302
5331
|
}
|
|
5303
5332
|
}
|
|
5304
5333
|
|
|
5305
|
-
focusCell(column, row) {
|
|
5306
|
-
if (!this._isDataRendered() || !this.isAttachedAndRendered()) {
|
|
5307
|
-
this._postRenderActions.push(this.focusCell.bind(this, column, row));
|
|
5308
|
-
return;
|
|
5309
|
-
}
|
|
5310
|
-
|
|
5311
|
-
let cell = this.cell(column, row);
|
|
5312
|
-
if (this.enabledComputed && row.enabled && cell.editable) {
|
|
5313
|
-
this.prepareCellEdit(column, row, false);
|
|
5314
|
-
}
|
|
5315
|
-
}
|
|
5316
|
-
|
|
5317
5334
|
_attach() {
|
|
5318
5335
|
this.$parent.append(this.$container);
|
|
5319
5336
|
super._attach();
|
|
@@ -5337,6 +5354,9 @@ export default class Table extends Widget {
|
|
|
5337
5354
|
super._renderOnAttach();
|
|
5338
5355
|
this._rerenderViewportAfterAttach();
|
|
5339
5356
|
this._renderViewportAfterAttach();
|
|
5357
|
+
let actions = this._postAttachActions;
|
|
5358
|
+
this._postAttachActions = [];
|
|
5359
|
+
actions.forEach(action => action());
|
|
5340
5360
|
}
|
|
5341
5361
|
|
|
5342
5362
|
_rerenderViewportAfterAttach() {
|
|
@@ -5365,11 +5385,6 @@ export default class Table extends Widget {
|
|
|
5365
5385
|
super._detach();
|
|
5366
5386
|
}
|
|
5367
5387
|
|
|
5368
|
-
_onDetach() {
|
|
5369
|
-
super._onDetach();
|
|
5370
|
-
this._destroyCellEditorPopup();
|
|
5371
|
-
}
|
|
5372
|
-
|
|
5373
5388
|
/**
|
|
5374
5389
|
* @param {function} [callback] function to be called right after the popup is destroyed
|
|
5375
5390
|
*/
|
|
@@ -5396,7 +5411,6 @@ export default class Table extends Widget {
|
|
|
5396
5411
|
if (promise.state() === 'resolved') {
|
|
5397
5412
|
// Do it immediately if promise has already been resolved.
|
|
5398
5413
|
// This makes sure updateRow does not immediately reopen the editor after closing.
|
|
5399
|
-
// At least for Scout JS, for Scout Classic it prevents flickering (endCellEdit comes after updateRows, but updateRows does not know whether the editor is closing so it will reopen it)
|
|
5400
5414
|
destroyEditor();
|
|
5401
5415
|
} else {
|
|
5402
5416
|
promise.then(destroyEditor);
|
|
@@ -5435,7 +5449,7 @@ export default class Table extends Widget {
|
|
|
5435
5449
|
// same as on Tree.prototype._onDesktopPopupOpen
|
|
5436
5450
|
_onDesktopPopupOpen(event) {
|
|
5437
5451
|
let popup = event.popup;
|
|
5438
|
-
if (!this.
|
|
5452
|
+
if (!this.isFocusable(false)) {
|
|
5439
5453
|
return;
|
|
5440
5454
|
}
|
|
5441
5455
|
// Set table style to focused if a context menu or a menu bar popup opens, so that it looks as it still has the focus
|