@ui5/webcomponents-fiori 2.21.0 → 2.22.0-rc.1
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/CHANGELOG.md +20 -0
- package/dist/.tsbuildinfo +1 -1
- package/dist/Timeline.d.ts +35 -3
- package/dist/Timeline.js +62 -4
- package/dist/Timeline.js.map +1 -1
- package/dist/TimelineFilterOption.d.ts +37 -0
- package/dist/TimelineFilterOption.js +59 -0
- package/dist/TimelineFilterOption.js.map +1 -0
- package/dist/TimelineHeaderBar.d.ts +120 -0
- package/dist/TimelineHeaderBar.js +273 -0
- package/dist/TimelineHeaderBar.js.map +1 -0
- package/dist/TimelineHeaderBarTemplate.d.ts +2 -0
- package/dist/TimelineHeaderBarTemplate.js +18 -0
- package/dist/TimelineHeaderBarTemplate.js.map +1 -0
- package/dist/TimelineItem.d.ts +2 -0
- package/dist/TimelineItem.js +2 -0
- package/dist/TimelineItem.js.map +1 -1
- package/dist/TimelineTemplate.js +1 -1
- package/dist/TimelineTemplate.js.map +1 -1
- package/dist/ViewSettingsDialog.d.ts +40 -1
- package/dist/ViewSettingsDialog.js +114 -7
- package/dist/ViewSettingsDialog.js.map +1 -1
- package/dist/ViewSettingsDialogCustomTab.d.ts +52 -0
- package/dist/ViewSettingsDialogCustomTab.js +81 -0
- package/dist/ViewSettingsDialogCustomTab.js.map +1 -0
- package/dist/ViewSettingsDialogCustomTabTemplate.d.ts +2 -0
- package/dist/ViewSettingsDialogCustomTabTemplate.js +5 -0
- package/dist/ViewSettingsDialogCustomTabTemplate.js.map +1 -0
- package/dist/ViewSettingsDialogTemplate.js +8 -1
- package/dist/ViewSettingsDialogTemplate.js.map +1 -1
- package/dist/bundle.esm.js +3 -0
- package/dist/bundle.esm.js.map +1 -1
- package/dist/css/themes/Timeline.css +1 -1
- package/dist/css/themes/TimelineHeaderBar.css +1 -0
- package/dist/css/themes/ViewSettingsDialog.css +1 -1
- package/dist/custom-elements-internal.json +746 -60
- package/dist/custom-elements.json +511 -9
- package/dist/generated/i18n/i18n-defaults.d.ts +11 -1
- package/dist/generated/i18n/i18n-defaults.js +11 -1
- package/dist/generated/i18n/i18n-defaults.js.map +1 -1
- package/dist/generated/themes/Timeline.css.d.ts +1 -1
- package/dist/generated/themes/Timeline.css.js +1 -1
- package/dist/generated/themes/Timeline.css.js.map +1 -1
- package/dist/generated/themes/TimelineHeaderBar.css.d.ts +2 -0
- package/dist/generated/themes/TimelineHeaderBar.css.js +8 -0
- package/dist/generated/themes/TimelineHeaderBar.css.js.map +1 -0
- package/dist/generated/themes/ViewSettingsDialog.css.d.ts +1 -1
- package/dist/generated/themes/ViewSettingsDialog.css.js +1 -1
- package/dist/generated/themes/ViewSettingsDialog.css.js.map +1 -1
- package/dist/types/TimelineSortOrder.d.ts +18 -0
- package/dist/types/TimelineSortOrder.js +20 -0
- package/dist/types/TimelineSortOrder.js.map +1 -0
- package/dist/vscode.html-custom-data.json +88 -2
- package/dist/web-types.json +257 -3
- package/package.json +7 -7
- package/src/TimelineHeaderBarTemplate.tsx +104 -0
- package/src/TimelineTemplate.tsx +7 -0
- package/src/ViewSettingsDialogCustomTabTemplate.tsx +5 -0
- package/src/ViewSettingsDialogTemplate.tsx +31 -0
- package/src/i18n/messagebundle.properties +30 -0
- package/src/themes/Timeline.css +21 -7
- package/src/themes/TimelineHeaderBar.css +17 -0
- package/src/themes/ViewSettingsDialog.css +33 -0
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import Toolbar from "@ui5/webcomponents/dist/Toolbar.js";
|
|
2
|
+
import ToolbarButton from "@ui5/webcomponents/dist/ToolbarButton.js";
|
|
3
|
+
import ToolbarSpacer from "@ui5/webcomponents/dist/ToolbarSpacer.js";
|
|
4
|
+
import Input from "@ui5/webcomponents/dist/Input.js";
|
|
5
|
+
import Icon from "@ui5/webcomponents/dist/Icon.js";
|
|
6
|
+
import Dialog from "@ui5/webcomponents/dist/Dialog.js";
|
|
7
|
+
import List from "@ui5/webcomponents/dist/List.js";
|
|
8
|
+
import ListItemStandard from "@ui5/webcomponents/dist/ListItemStandard.js";
|
|
9
|
+
import Bar from "@ui5/webcomponents/dist/Bar.js";
|
|
10
|
+
import Button from "@ui5/webcomponents/dist/Button.js";
|
|
11
|
+
import type TimelineHeaderBar from "./TimelineHeaderBar.js";
|
|
12
|
+
import searchIcon from "@ui5/webcomponents-icons/dist/search.js";
|
|
13
|
+
import sortDescending from "@ui5/webcomponents-icons/dist/sort-descending.js";
|
|
14
|
+
import addFilter from "@ui5/webcomponents-icons/dist/add-filter.js";
|
|
15
|
+
|
|
16
|
+
export default function TimelineHeaderBarTemplate(this: TimelineHeaderBar) {
|
|
17
|
+
return (<>
|
|
18
|
+
<Toolbar
|
|
19
|
+
class="ui5-timeline-header-bar-toolbar"
|
|
20
|
+
accessibleName={this._headerBarAccessibleName}
|
|
21
|
+
>
|
|
22
|
+
{/* Spacer pushes all controls to the end */}
|
|
23
|
+
<ToolbarSpacer />
|
|
24
|
+
|
|
25
|
+
{/* Search Input */}
|
|
26
|
+
{this.showSearch && (
|
|
27
|
+
<Input
|
|
28
|
+
class="ui5-timeline-header-bar-search"
|
|
29
|
+
placeholder={this._searchPlaceholder}
|
|
30
|
+
value={this.searchValue}
|
|
31
|
+
showClearIcon={true}
|
|
32
|
+
accessibleName={this._searchAccessibleName}
|
|
33
|
+
onInput={this._onSearchInput}
|
|
34
|
+
>
|
|
35
|
+
<Icon slot="icon" name={searchIcon} />
|
|
36
|
+
</Input>
|
|
37
|
+
)}
|
|
38
|
+
|
|
39
|
+
{/* Sort Button */}
|
|
40
|
+
{this.showSort && (
|
|
41
|
+
<ToolbarButton
|
|
42
|
+
icon={sortDescending}
|
|
43
|
+
design="Transparent"
|
|
44
|
+
tooltip={this._sortTooltip}
|
|
45
|
+
accessibleName={this._sortAccessibleName}
|
|
46
|
+
onClick={this._onSortClick}
|
|
47
|
+
/>
|
|
48
|
+
)}
|
|
49
|
+
|
|
50
|
+
{/* Filter Button */}
|
|
51
|
+
{this.showFilter && (
|
|
52
|
+
<ToolbarButton
|
|
53
|
+
icon={addFilter}
|
|
54
|
+
design="Transparent"
|
|
55
|
+
tooltip={this._filterAccessibleName}
|
|
56
|
+
accessibleName={this._filterAccessibleName}
|
|
57
|
+
onClick={this._onFilterClick}
|
|
58
|
+
/>
|
|
59
|
+
)}
|
|
60
|
+
</Toolbar>
|
|
61
|
+
|
|
62
|
+
{/* Filter Dialog */}
|
|
63
|
+
{this.showFilter && (
|
|
64
|
+
<Dialog
|
|
65
|
+
class="ui5-timeline-filter-dialog"
|
|
66
|
+
headerText={this._filterDialogTitle}
|
|
67
|
+
open={this._filterDialogOpen}
|
|
68
|
+
onClose={this._onFilterDialogClose}
|
|
69
|
+
>
|
|
70
|
+
<List
|
|
71
|
+
selectionMode="Multiple"
|
|
72
|
+
class="ui5-timeline-filter-list"
|
|
73
|
+
>
|
|
74
|
+
{this.filterOptions.map(option => (
|
|
75
|
+
<ListItemStandard
|
|
76
|
+
key={option.text}
|
|
77
|
+
selected={option.selected}
|
|
78
|
+
data-filter-text={option.text}
|
|
79
|
+
>
|
|
80
|
+
{option.text}
|
|
81
|
+
</ListItemStandard>
|
|
82
|
+
))}
|
|
83
|
+
</List>
|
|
84
|
+
|
|
85
|
+
<Bar slot="footer" design="Footer">
|
|
86
|
+
<Button
|
|
87
|
+
slot="endContent"
|
|
88
|
+
design="Emphasized"
|
|
89
|
+
onClick={this._onFilterDialogConfirm}
|
|
90
|
+
>
|
|
91
|
+
{this._filterDialogOkText}
|
|
92
|
+
</Button>
|
|
93
|
+
<Button
|
|
94
|
+
slot="endContent"
|
|
95
|
+
design="Transparent"
|
|
96
|
+
onClick={this._onFilterDialogCancel}
|
|
97
|
+
>
|
|
98
|
+
{this._filterDialogCancelText}
|
|
99
|
+
</Button>
|
|
100
|
+
</Bar>
|
|
101
|
+
</Dialog>
|
|
102
|
+
)}
|
|
103
|
+
</>);
|
|
104
|
+
}
|
package/src/TimelineTemplate.tsx
CHANGED
|
@@ -14,6 +14,13 @@ export default function TimelineTemplate(this: Timeline) {
|
|
|
14
14
|
onFocusIn={this._onfocusin}
|
|
15
15
|
onKeyDown={this._onkeydown}
|
|
16
16
|
>
|
|
17
|
+
{/* Header Bar Slot */}
|
|
18
|
+
{this._hasHeaderBar && (
|
|
19
|
+
<div class="ui5-timeline-header-bar-wrapper">
|
|
20
|
+
<slot name="headerBar"></slot>
|
|
21
|
+
</div>
|
|
22
|
+
)}
|
|
23
|
+
|
|
17
24
|
<BusyIndicator
|
|
18
25
|
id={`${this._id}-busyIndicator`}
|
|
19
26
|
delay={this.loadingDelay}
|
|
@@ -92,6 +92,19 @@ function _getSplitButtonItems(this: ViewSettingsDialog) {
|
|
|
92
92
|
);
|
|
93
93
|
}
|
|
94
94
|
|
|
95
|
+
if (this.shouldBuildCustomTabs) {
|
|
96
|
+
this._renderableCustomTabs.forEach(customTab => {
|
|
97
|
+
buttonItems.push(
|
|
98
|
+
<SegmentedButtonItem
|
|
99
|
+
selected={this.isCurrentCustomTabMode(customTab)}
|
|
100
|
+
data-mode={this._customTabMode(customTab)}
|
|
101
|
+
tooltip={customTab.tooltip}
|
|
102
|
+
icon={customTab.icon}
|
|
103
|
+
/>
|
|
104
|
+
);
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
|
|
95
108
|
return buttonItems;
|
|
96
109
|
}
|
|
97
110
|
|
|
@@ -115,6 +128,24 @@ function ViewSettingsDialogTemplateContent(this: ViewSettingsDialog) {
|
|
|
115
128
|
ViewSettingsDialogSortAndGroupTemplate.call(this, false)
|
|
116
129
|
)}
|
|
117
130
|
|
|
131
|
+
{this.isModeCustom && this._selectedCustomTab && (
|
|
132
|
+
<div class="ui5-vsd-custom-tab-content">
|
|
133
|
+
{this._selectedCustomTab.title && (
|
|
134
|
+
<div class="ui5-vsd-custom-tab-title">{this._selectedCustomTab.title}</div>
|
|
135
|
+
)}
|
|
136
|
+
<slot class="ui5-vsd-custom-tab-slot" name={this._selectedCustomTab._individualSlot}></slot>
|
|
137
|
+
</div>
|
|
138
|
+
)}
|
|
139
|
+
|
|
140
|
+
{/* Hidden slots for non-active custom tabs to prevent content leaking */}
|
|
141
|
+
<div class="ui5-vsd-hidden-tabs">
|
|
142
|
+
{this.customTabs
|
|
143
|
+
.filter(tab => tab !== this._selectedCustomTab)
|
|
144
|
+
.map(tab => (
|
|
145
|
+
<slot name={tab._individualSlot}></slot>
|
|
146
|
+
))}
|
|
147
|
+
</div>
|
|
148
|
+
|
|
118
149
|
</div>
|
|
119
150
|
);
|
|
120
151
|
}
|
|
@@ -116,6 +116,36 @@ TIMELINE_ITEM_POSITIVE_STATE_TEXT=Positive State
|
|
|
116
116
|
TIMELINE_ITEM_NEGATIVE_STATE_TEXT=Negative State
|
|
117
117
|
TIMELINE_ITEM_CRITICAL_STATE_TEXT=Critical State
|
|
118
118
|
|
|
119
|
+
#XACT: Accessible name for timeline header bar
|
|
120
|
+
TIMELINE_HEADER_BAR_ACCESSIBLE_NAME=Timeline actions
|
|
121
|
+
|
|
122
|
+
#XFLD: Placeholder for timeline search input
|
|
123
|
+
TIMELINE_SEARCH_PLACEHOLDER=Search
|
|
124
|
+
|
|
125
|
+
#XACT: Accessible name for timeline search input
|
|
126
|
+
TIMELINE_SEARCH_ACCESSIBLE_NAME=Search timeline items
|
|
127
|
+
|
|
128
|
+
#XACT: Accessible name for timeline filter dropdown
|
|
129
|
+
TIMELINE_FILTER_ACCESSIBLE_NAME=Filter timeline items
|
|
130
|
+
|
|
131
|
+
#XTOL: Tooltip for sort ascending button
|
|
132
|
+
TIMELINE_SORT_ASCENDING_TOOLTIP=Sort ascending
|
|
133
|
+
|
|
134
|
+
#XTOL: Tooltip for sort descending button
|
|
135
|
+
TIMELINE_SORT_DESCENDING_TOOLTIP=Sort descending
|
|
136
|
+
|
|
137
|
+
#XACT: Accessible name for sort button
|
|
138
|
+
TIMELINE_SORT_ACCESSIBLE_NAME=Sort timeline items
|
|
139
|
+
|
|
140
|
+
#XTIT: Title for timeline filter dialog
|
|
141
|
+
TIMELINE_FILTER_DIALOG_TITLE=Filter By
|
|
142
|
+
|
|
143
|
+
#XBUT: OK button text for timeline filter dialog
|
|
144
|
+
TIMELINE_FILTER_DIALOG_OK=OK
|
|
145
|
+
|
|
146
|
+
#XBUT: Cancel button text for timeline filter dialog
|
|
147
|
+
TIMELINE_FILTER_DIALOG_CANCEL=Cancel
|
|
148
|
+
|
|
119
149
|
#XBUT: Button text for cancel button in the UploadCollectionItem
|
|
120
150
|
UPLOADCOLLECTIONITEM_CANCELBUTTON_TEXT=Cancel
|
|
121
151
|
|
package/src/themes/Timeline.css
CHANGED
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
display: block;
|
|
3
3
|
}
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
5
|
+
/* Header bar wrapper - slotted content */
|
|
6
|
+
.ui5-timeline-header-bar-wrapper {
|
|
7
|
+
flex-shrink: 0;
|
|
8
|
+
margin-block-end: 1rem;
|
|
9
9
|
}
|
|
10
10
|
|
|
11
11
|
.ui5-timeline-list {
|
|
@@ -69,20 +69,34 @@
|
|
|
69
69
|
display: none;
|
|
70
70
|
}
|
|
71
71
|
|
|
72
|
-
.ui5-timeline-root
|
|
73
|
-
.ui5-timeline-busy-indicator {
|
|
72
|
+
.ui5-timeline-root {
|
|
74
73
|
width: 100%;
|
|
75
74
|
height: 100%;
|
|
76
75
|
position: relative;
|
|
77
76
|
box-sizing: border-box;
|
|
77
|
+
display: flex;
|
|
78
|
+
flex-direction: column;
|
|
79
|
+
padding: var(--_ui5_tl_padding);
|
|
80
|
+
overflow: hidden;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
.ui5-timeline-busy-indicator {
|
|
84
|
+
display: block;
|
|
85
|
+
width: 100%;
|
|
86
|
+
flex: 1;
|
|
87
|
+
min-height: 0;
|
|
88
|
+
position: relative;
|
|
89
|
+
box-sizing: border-box;
|
|
90
|
+
overflow: hidden;
|
|
78
91
|
}
|
|
79
92
|
|
|
80
93
|
:host([layout="Vertical"]) .ui5-timeline-scroll-container {
|
|
81
94
|
height: 100%;
|
|
82
95
|
width: 100%;
|
|
96
|
+
overflow: auto;
|
|
83
97
|
}
|
|
84
98
|
|
|
85
99
|
:host([growing="Scroll"]) .ui5-timeline-end-marker {
|
|
86
100
|
/* Ensure the list-end-marker has a block property to always be stretched and "visible" on the screen */
|
|
87
101
|
display: inline-block;
|
|
88
|
-
}
|
|
102
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
:host {
|
|
2
|
+
display: block;
|
|
3
|
+
--_ui5_timeline_header_bar_search_max_width: 16rem;
|
|
4
|
+
--_ui5_timeline_filter_dialog_min_width: 20rem;
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
.ui5-timeline-header-bar-search {
|
|
8
|
+
max-width: var(--_ui5_timeline_header_bar_search_max_width);
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
.ui5-timeline-filter-dialog {
|
|
12
|
+
min-width: var(--_ui5_timeline_filter_dialog_min_width);
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
.ui5-timeline-filter-list {
|
|
16
|
+
width: 100%;
|
|
17
|
+
}
|
|
@@ -65,6 +65,39 @@
|
|
|
65
65
|
height: 100%;
|
|
66
66
|
}
|
|
67
67
|
|
|
68
|
+
.ui5-vsd-custom-tab-content {
|
|
69
|
+
width: 100%;
|
|
70
|
+
height: 100%;
|
|
71
|
+
box-sizing: border-box;
|
|
72
|
+
padding: 0.5rem 1rem;
|
|
73
|
+
overflow: auto;
|
|
74
|
+
min-width: 0;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
.ui5-vsd-custom-tab-title {
|
|
78
|
+
color: var(--sapList_TableGroupHeaderTextColor);
|
|
79
|
+
font-family: var(--sapFontHeaderFamily);
|
|
80
|
+
font-size: var(--sapFontHeader6Size);
|
|
81
|
+
font-weight: bold;
|
|
82
|
+
line-height: 2rem;
|
|
83
|
+
min-height: 2rem;
|
|
84
|
+
margin: 0;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
.ui5-vsd-custom-tab-slot::slotted([ui5-view-settings-custom-tab]) {
|
|
88
|
+
display: block;
|
|
89
|
+
width: 100%;
|
|
90
|
+
max-width: 100%;
|
|
91
|
+
min-width: 0;
|
|
92
|
+
box-sizing: border-box;
|
|
93
|
+
font-family: var(--sapFontFamily);
|
|
94
|
+
color: var(--sapTextColor);
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
.ui5-vsd-hidden-tabs {
|
|
98
|
+
display: none;
|
|
99
|
+
}
|
|
100
|
+
|
|
68
101
|
[ui5-li-group]::part(header) {
|
|
69
102
|
overflow: hidden;
|
|
70
103
|
}
|