@ui5/webcomponents-fiori 2.23.0 → 2.24.0-rc.0
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 +12 -0
- package/dist/.tsbuildinfo +1 -1
- package/dist/DynamicPage.d.ts +59 -0
- package/dist/DynamicPage.js +39 -1
- package/dist/DynamicPage.js.map +1 -1
- package/dist/DynamicPageHeader.d.ts +8 -0
- package/dist/DynamicPageHeader.js +6 -0
- package/dist/DynamicPageHeader.js.map +1 -1
- package/dist/DynamicPageTemplate.js +3 -3
- package/dist/DynamicPageTemplate.js.map +1 -1
- package/dist/Timeline.d.ts +52 -1
- package/dist/Timeline.js +66 -0
- package/dist/Timeline.js.map +1 -1
- package/dist/TimelineTemplate.js +4 -1
- package/dist/TimelineTemplate.js.map +1 -1
- package/dist/css/themes/Timeline.css +1 -1
- package/dist/custom-elements-internal.json +90 -1
- package/dist/custom-elements.json +77 -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/vscode.html-custom-data.json +18 -2
- package/dist/web-types.json +50 -4
- package/package.json +7 -7
- package/src/DynamicPageTemplate.tsx +7 -5
- package/src/TimelineTemplate.tsx +15 -1
- package/src/themes/Timeline.css +36 -7
package/dist/web-types.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://raw.githubusercontent.com/JetBrains/web-types/master/schema/web-types.json",
|
|
3
3
|
"name": "@ui5/webcomponents-fiori",
|
|
4
|
-
"version": "2.
|
|
4
|
+
"version": "2.24.0-rc.0",
|
|
5
5
|
"description-markup": "markdown",
|
|
6
6
|
"contributions": {
|
|
7
7
|
"html": {
|
|
@@ -70,6 +70,14 @@
|
|
|
70
70
|
"description": "### Overview\n\nA layout component, representing a web page, consisting of a title, header with dynamic behavior, a content area, and an optional floating footer.\n\nThe component consist of several components:\n\n- `DynamicPageTitle` - a component, holding the title of the page, the navigation actions and the content. The displayed content changes based on the current mode of the `DynamicPageHeader`.\n- `DynamicPageHeader` - a generic container, which can contain a single layout component and any other HTML elements. The header works in two modes - expanded and snapped and its behavior can be adjusted with the help of different properties.\n- `Content area` - a generic container, which can have a single UI5 layout.\n- `Footer` - positioned at the bottom with a small offset and used for additional actions, the footer floats above the content.\n\n### Usage\n\nUse the `DynamicPage` if you need to have a title, that is always visible\nand a header, that has configurable Expanding/Snapping functionality.\nIf you don't need the Expanding/Snapping functionality it is better to use the\n`ui5-page` as a lighter component.\n\nThe app can add to the `default` slot of the ui5-dynamic-page either content that is designed to fit its container (e.g. has 100% height),\nor content with own height that may overflow its container. In the second case the `DynamicPage` will show a scrollbar that allows the user\nscroll through the content.\n\n## Notes:\n\n- Snapping of the `DynamicPageTitle` is not supported in the following case:\n - When the `DynamicPage` has a scroll bar, the component usually scrolls to the snapping point - the point, where the `DynamicPageHeader` is scrolled out completely. However, when there is a scroll bar, but not enough content to reach the snapping point, the snapping is not possible using scrolling.\n\n### Responsive Behavior\n\nDynamic page web component implements the responsive paddings design.\n\n### Keyboard Handling\n\n\n### Basic Navigation\n\n- [SPACE, ENTER, RETURN] - If focus is on a button inside DynamicPageTitle its action is being triggered, once activated.\nIf focus is on the snap header button (arrow button), or on the header itself, once activated, it triggers the associated action (such as snap/expand the header).\nIf focus is on pin button (the button with pin icon on the bottom of the header), once activated, it triggers the associated action (pinning of the header).\n\n### Fast Navigation\n- This component provides a build in fast navigation group which can be used via `F6 / Shift + F6` or ` Ctrl + Alt(Option) + Down / Ctrl + Alt(Option) + Up`.\nIn order to use this functionality, you need to import the following module:\n\n- `import \"@ui5/webcomponents-base/dist/features/F6Navigation.js\"`\n\n### ES6 Module Import\n\n`import \"@ui5/webcomponents-fiori/dist/DynamicPage.js\";`\n---\n\n\n### **Events:**\n - **pin-button-toggle** - Fired when the pin header button is toggled.\n- **title-toggle** - Fired when the expand/collapse area of the title is toggled.\n\n### **Slots:**\n - **default** - Defines the content of the Dynamic Page.\n- **footerArea** - Defines the footer HTML Element.\n- **headerArea** - Defines the header HTML Element.\n- **titleArea** - Defines the title HTML Element.\n\n### **CSS Parts:**\n - **content** - Used to style the content of the component\n- **fit-content** - Used to style the fit content container of the component.\n- **footer** - Used to style the footer of the component",
|
|
71
71
|
"doc-url": "",
|
|
72
72
|
"attributes": [
|
|
73
|
+
{
|
|
74
|
+
"name": "accessibility-attributes",
|
|
75
|
+
"description": "Defines additional accessibility attributes on different areas of the component.\n\nThe accessibilityAttributes object has the following fields,\nwhere each field is an object supporting one or more accessibility attributes:\n\n - **root**: `root.role` and `root.name`.\n - **header**: `header.role` and `header.name`.\n - **content**: `content.role` and `content.name`.\n - **footer**: `footer.role` and `footer.name`.\n\nThe accessibility attributes support the following values:\n\n- **role**: Defines the accessible ARIA landmark role of the area.\nAccepts the following values per section:\n`root` — `none`, `main`, `region`;\n`header` — `none`, `banner`, `region`;\n`content` — `none`, `main`, `region`, `form`;\n`footer` — `none`, `contentinfo`, `region`.\n\n- **name**: Defines the accessible ARIA name of the area.\nAccepts any string.",
|
|
76
|
+
"value": {
|
|
77
|
+
"type": "DynamicPageAccessibilityAttributes",
|
|
78
|
+
"default": "{}"
|
|
79
|
+
}
|
|
80
|
+
},
|
|
73
81
|
{
|
|
74
82
|
"name": "header-pinned",
|
|
75
83
|
"description": "Defines if the header is pinned.",
|
|
@@ -121,6 +129,11 @@
|
|
|
121
129
|
],
|
|
122
130
|
"js": {
|
|
123
131
|
"properties": [
|
|
132
|
+
{
|
|
133
|
+
"name": "accessibility-attributes",
|
|
134
|
+
"description": "Defines additional accessibility attributes on different areas of the component.\n\nThe accessibilityAttributes object has the following fields,\nwhere each field is an object supporting one or more accessibility attributes:\n\n - **root**: `root.role` and `root.name`.\n - **header**: `header.role` and `header.name`.\n - **content**: `content.role` and `content.name`.\n - **footer**: `footer.role` and `footer.name`.\n\nThe accessibility attributes support the following values:\n\n- **role**: Defines the accessible ARIA landmark role of the area.\nAccepts the following values per section:\n`root` — `none`, `main`, `region`;\n`header` — `none`, `banner`, `region`;\n`content` — `none`, `main`, `region`, `form`;\n`footer` — `none`, `contentinfo`, `region`.\n\n- **name**: Defines the accessible ARIA name of the area.\nAccepts any string.",
|
|
135
|
+
"value": { "type": "DynamicPageAccessibilityAttributes" }
|
|
136
|
+
},
|
|
124
137
|
{
|
|
125
138
|
"name": "header-pinned",
|
|
126
139
|
"description": "Defines if the header is pinned.",
|
|
@@ -158,7 +171,13 @@
|
|
|
158
171
|
"name": "ui5-dynamic-page-header",
|
|
159
172
|
"description": "Header of the DynamicPage.\n\n### Overview\n\nThe DynamicPageHeader `ui5-dynamic-page-header` is part of the DynamicPage family\nand is used to serve as header of the `DynamicPage`.\n\n### Usage\n\nThe `DynamicPageHeader` can hold any layout control and has two states - expanded\nand collapsed (snapped). The switching between these states happens when:\n- the user scrolls below its bottom margin\n- the user clicks on the `DynamicPageTitle`\n- through the `DynamicPage` property `headerSnapped`\n\n### Responsive Behavior\n\nThe responsive behavior of the `DynamicPageHeader` depends on the behavior of the\ncontent that is displayed.\n\n### Accessibility\n\nThe `DynamicPageHeader` provides an accessible label for the header region.\n---\n\n\n### **Slots:**\n - **default** - Defines the content of the Dynamic Page Header.",
|
|
160
173
|
"doc-url": "",
|
|
161
|
-
"attributes": [
|
|
174
|
+
"attributes": [
|
|
175
|
+
{
|
|
176
|
+
"name": "accessible-name",
|
|
177
|
+
"description": "Defines the accessible ARIA label for the header region.\nOverrides the default \"Header Expanded\" / \"Header Snapped\" text.",
|
|
178
|
+
"value": { "type": "string | undefined", "default": "undefined" }
|
|
179
|
+
}
|
|
180
|
+
],
|
|
162
181
|
"slots": [
|
|
163
182
|
{
|
|
164
183
|
"name": "default",
|
|
@@ -166,7 +185,16 @@
|
|
|
166
185
|
}
|
|
167
186
|
],
|
|
168
187
|
"events": [],
|
|
169
|
-
"js": {
|
|
188
|
+
"js": {
|
|
189
|
+
"properties": [
|
|
190
|
+
{
|
|
191
|
+
"name": "accessible-name",
|
|
192
|
+
"description": "Defines the accessible ARIA label for the header region.\nOverrides the default \"Header Expanded\" / \"Header Snapped\" text.",
|
|
193
|
+
"value": { "type": "string | undefined" }
|
|
194
|
+
}
|
|
195
|
+
],
|
|
196
|
+
"events": []
|
|
197
|
+
}
|
|
170
198
|
},
|
|
171
199
|
{
|
|
172
200
|
"name": "ui5-dynamic-page-header-actions",
|
|
@@ -2878,7 +2906,7 @@
|
|
|
2878
2906
|
},
|
|
2879
2907
|
{
|
|
2880
2908
|
"name": "ui5-timeline",
|
|
2881
|
-
"description": "### Overview\n\nThe `ui5-timeline` component shows entries (such as objects, events, or posts) in chronological order.\nA common use case is to provide information about changes to an object, or events related to an object.\nThese entries can be generated by the system (for example, value XY changed from A to B), or added manually.\nThere are two distinct variants of the timeline: basic and social. The basic timeline is read-only,\nwhile the social timeline offers a high level of interaction and collaboration, and is integrated within SAP Jam.\n---\n\n\n### **Events:**\n - **load-more** - Fired when the user presses the `More` button or scrolls to the Timeline's end.\n\n**Note:** The event will be fired if `growing` is set to `Button` or `Scroll`.\n\n### **Slots:**\n - **default** - Determines the content of the `ui5-timeline
|
|
2909
|
+
"description": "### Overview\n\nThe `ui5-timeline` component shows entries (such as objects, events, or posts) in chronological order.\nA common use case is to provide information about changes to an object, or events related to an object.\nThese entries can be generated by the system (for example, value XY changed from A to B), or added manually.\nThere are two distinct variants of the timeline: basic and social. The basic timeline is read-only,\nwhile the social timeline offers a high level of interaction and collaboration, and is integrated within SAP Jam.\n\n### Header and Info Bar Slots\n\nThe Timeline exposes two named slots above the items area:\n\n- `header` — for a controls bar (search field, filter trigger, sort toggle, etc.).\nThe most common pattern is to place a `ui5-toolbar` containing a search input and buttons that open\na filter dialog or toggle sort direction. The Timeline itself performs no filtering, sorting, or\nsearching — the application listens for events from its own controls and reorders, hides, or\nadds items in the default slot accordingly.\n\n- `infoBar` — for a status bar that reflects the result of the controls (active filters,\napplied sort, current search query). Typically contains tokens, labels, or a `ui5-bar`.\n\nThe Timeline itself does not filter, sort, or search — the application owns that logic.\nUse `stickyHeader` to pin both bars while the Timeline's items scroll. Give the Timeline\na constrained height in this mode so it owns its scrollbar.\n---\n\n\n### **Events:**\n - **load-more** - Fired when the user presses the `More` button or scrolls to the Timeline's end.\n\n**Note:** The event will be fired if `growing` is set to `Button` or `Scroll`.\n\n### **Slots:**\n - **default** - Determines the content of the `ui5-timeline`.\n- **header** - Defines the content of the Timeline's header area, displayed above the items.\nTypically a `ui5-toolbar` with search, sort, and filter controls.\n- **infoBar** - Defines the content of the Timeline's info bar area, displayed below the header\nand above the items. Use for status display (applied filters, sort direction, counts).",
|
|
2882
2910
|
"doc-url": "",
|
|
2883
2911
|
"attributes": [
|
|
2884
2912
|
{
|
|
@@ -2911,12 +2939,25 @@
|
|
|
2911
2939
|
"name": "loading-delay",
|
|
2912
2940
|
"description": "Defines the delay in milliseconds, after which the loading indicator will show up for this component.",
|
|
2913
2941
|
"value": { "type": "number", "default": "1000" }
|
|
2942
|
+
},
|
|
2943
|
+
{
|
|
2944
|
+
"name": "sticky-header",
|
|
2945
|
+
"description": "Defines whether the content of the `header` and `infoBar` slots remains visible when the user scrolls the Timeline.\n\n**Note:** The bars pin to the Timeline's own scrollport. Give the Timeline a\nconstrained height (for example `style=\"height: 32rem\"`) so its items scroll\ninside it. Placing the Timeline inside an externally scrolling ancestor while\nleaving the Timeline itself unsized is not supported in this mode — the bars\nwill scroll away with the ancestor.",
|
|
2946
|
+
"value": { "type": "boolean", "default": "false" }
|
|
2914
2947
|
}
|
|
2915
2948
|
],
|
|
2916
2949
|
"slots": [
|
|
2917
2950
|
{
|
|
2918
2951
|
"name": "default",
|
|
2919
2952
|
"description": "Determines the content of the `ui5-timeline`."
|
|
2953
|
+
},
|
|
2954
|
+
{
|
|
2955
|
+
"name": "header",
|
|
2956
|
+
"description": "Defines the content of the Timeline's header area, displayed above the items.\nTypically a `ui5-toolbar` with search, sort, and filter controls."
|
|
2957
|
+
},
|
|
2958
|
+
{
|
|
2959
|
+
"name": "infoBar",
|
|
2960
|
+
"description": "Defines the content of the Timeline's info bar area, displayed below the header\nand above the items. Use for status display (applied filters, sort direction, counts)."
|
|
2920
2961
|
}
|
|
2921
2962
|
],
|
|
2922
2963
|
"events": [
|
|
@@ -2951,6 +2992,11 @@
|
|
|
2951
2992
|
"name": "loading-delay",
|
|
2952
2993
|
"description": "Defines the delay in milliseconds, after which the loading indicator will show up for this component.",
|
|
2953
2994
|
"value": { "type": "number" }
|
|
2995
|
+
},
|
|
2996
|
+
{
|
|
2997
|
+
"name": "sticky-header",
|
|
2998
|
+
"description": "Defines whether the content of the `header` and `infoBar` slots remains visible when the user scrolls the Timeline.\n\n**Note:** The bars pin to the Timeline's own scrollport. Give the Timeline a\nconstrained height (for example `style=\"height: 32rem\"`) so its items scroll\ninside it. Placing the Timeline inside an externally scrolling ancestor while\nleaving the Timeline itself unsized is not supported in this mode — the bars\nwill scroll away with the ancestor.",
|
|
2999
|
+
"value": { "type": "boolean" }
|
|
2954
3000
|
}
|
|
2955
3001
|
],
|
|
2956
3002
|
"events": [
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ui5/webcomponents-fiori",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.24.0-rc.0",
|
|
4
4
|
"description": "UI5 Web Components: webcomponents.fiori",
|
|
5
5
|
"ui5": {
|
|
6
6
|
"webComponentsPackage": true
|
|
@@ -54,20 +54,20 @@
|
|
|
54
54
|
"directory": "packages/fiori"
|
|
55
55
|
},
|
|
56
56
|
"dependencies": {
|
|
57
|
-
"@ui5/webcomponents": "2.
|
|
58
|
-
"@ui5/webcomponents-base": "2.
|
|
59
|
-
"@ui5/webcomponents-icons": "2.
|
|
60
|
-
"@ui5/webcomponents-theming": "2.
|
|
57
|
+
"@ui5/webcomponents": "2.24.0-rc.0",
|
|
58
|
+
"@ui5/webcomponents-base": "2.24.0-rc.0",
|
|
59
|
+
"@ui5/webcomponents-icons": "2.24.0-rc.0",
|
|
60
|
+
"@ui5/webcomponents-theming": "2.24.0-rc.0",
|
|
61
61
|
"@zxing/library": "^0.21.3"
|
|
62
62
|
},
|
|
63
63
|
"devDependencies": {
|
|
64
64
|
"@custom-elements-manifest/analyzer": "^0.10.10",
|
|
65
65
|
"@ui5/cypress-internal": "0.1.0",
|
|
66
|
-
"@ui5/webcomponents-tools": "2.
|
|
66
|
+
"@ui5/webcomponents-tools": "2.24.0-rc.0",
|
|
67
67
|
"cypress": "15.9.0",
|
|
68
68
|
"lit": "^2.0.0",
|
|
69
69
|
"vite": "5.4.21",
|
|
70
70
|
"yarn": "^1.22.22"
|
|
71
71
|
},
|
|
72
|
-
"gitHead": "
|
|
72
|
+
"gitHead": "55834d96ca1b888b08c8b8d4387f9662b8e66bb2"
|
|
73
73
|
}
|
|
@@ -3,13 +3,14 @@ import DynamicPageHeaderActions from "./DynamicPageHeaderActions.js";
|
|
|
3
3
|
|
|
4
4
|
export default function DynamicPageTemplate(this: DynamicPage) {
|
|
5
5
|
return (
|
|
6
|
-
<div class="ui5-dynamic-page-root">
|
|
6
|
+
<div class="ui5-dynamic-page-root" role={this._rootRole} aria-label={this._rootAriaLabel}>
|
|
7
7
|
<div class="ui5-dynamic-page-scroll-container"
|
|
8
8
|
onScroll={this.snapOnScroll}
|
|
9
9
|
>
|
|
10
|
-
<
|
|
10
|
+
<div
|
|
11
11
|
class="ui5-dynamic-page-title-header-wrapper"
|
|
12
12
|
id={`${this._id}-header`}
|
|
13
|
+
role={this._headerRole || "banner"}
|
|
13
14
|
aria-label={this.headerAriaLabel}
|
|
14
15
|
onui5-toggle-title={this.onToggleTitle}
|
|
15
16
|
>
|
|
@@ -20,9 +21,8 @@ export default function DynamicPageTemplate(this: DynamicPage) {
|
|
|
20
21
|
name="headerArea"
|
|
21
22
|
></slot>
|
|
22
23
|
}
|
|
23
|
-
|
|
24
24
|
{this.actionsInTitle && headerActions.call(this)}
|
|
25
|
-
</
|
|
25
|
+
</div>
|
|
26
26
|
|
|
27
27
|
{this.headerInContent &&
|
|
28
28
|
<slot tabIndex={this.headerTabIndex}
|
|
@@ -36,6 +36,8 @@ export default function DynamicPageTemplate(this: DynamicPage) {
|
|
|
36
36
|
<div
|
|
37
37
|
part="content"
|
|
38
38
|
class="ui5-dynamic-page-content"
|
|
39
|
+
role={this._contentRole}
|
|
40
|
+
aria-label={this._contentAriaLabel}
|
|
39
41
|
onFocusIn={this.onContentFocusIn}
|
|
40
42
|
onFocusOut={this.onContentFocusOut}
|
|
41
43
|
>
|
|
@@ -48,7 +50,7 @@ export default function DynamicPageTemplate(this: DynamicPage) {
|
|
|
48
50
|
</div>
|
|
49
51
|
</div>
|
|
50
52
|
|
|
51
|
-
<div class="ui5-dynamic-page-footer" part="footer">
|
|
53
|
+
<div class="ui5-dynamic-page-footer" part="footer" role={this._footerRole} aria-label={this._footerAriaLabel}>
|
|
52
54
|
<slot name="footerArea"></slot>
|
|
53
55
|
</div>
|
|
54
56
|
</div>
|
package/src/TimelineTemplate.tsx
CHANGED
|
@@ -13,6 +13,7 @@ export default function TimelineTemplate(this: Timeline) {
|
|
|
13
13
|
aria-label={this.ariaLabel}
|
|
14
14
|
onFocusIn={this._onfocusin}
|
|
15
15
|
onKeyDown={this._onkeydown}
|
|
16
|
+
onWheel={this._onwheel}
|
|
16
17
|
>
|
|
17
18
|
<BusyIndicator
|
|
18
19
|
id={`${this._id}-busyIndicator`}
|
|
@@ -21,7 +22,20 @@ export default function TimelineTemplate(this: Timeline) {
|
|
|
21
22
|
class="ui5-timeline-busy-indicator"
|
|
22
23
|
>
|
|
23
24
|
<div class="ui5-timeline-scroll-container">
|
|
24
|
-
|
|
25
|
+
{(this._hasHeader || this._hasInfoBar) &&
|
|
26
|
+
<div class="ui5-timeline-header-area">
|
|
27
|
+
{this._hasHeader &&
|
|
28
|
+
<div class="ui5-timeline-header">
|
|
29
|
+
<slot name="header"></slot>
|
|
30
|
+
</div>
|
|
31
|
+
}
|
|
32
|
+
{this._hasInfoBar &&
|
|
33
|
+
<div class="ui5-timeline-info-bar">
|
|
34
|
+
<slot name="infoBar"></slot>
|
|
35
|
+
</div>
|
|
36
|
+
}
|
|
37
|
+
</div>
|
|
38
|
+
}
|
|
25
39
|
<div class="ui5-timeline-list"
|
|
26
40
|
role={listRole}
|
|
27
41
|
aria-live="polite"
|
package/src/themes/Timeline.css
CHANGED
|
@@ -59,12 +59,25 @@
|
|
|
59
59
|
margin-inline-start: var(--_ui5_tl_li_margin_bottom);
|
|
60
60
|
}
|
|
61
61
|
|
|
62
|
+
/* Scroll container */
|
|
62
63
|
:host([layout="Horizontal"]) .ui5-timeline-scroll-container {
|
|
63
|
-
overflow: auto;
|
|
64
|
+
overflow-x: auto;
|
|
65
|
+
overflow-y: hidden;
|
|
64
66
|
/* The padding values of the parent container are added to the size of scroll container */
|
|
65
67
|
width: calc(100% + var(--_ui5_timeline_scroll_container_offset));
|
|
66
68
|
}
|
|
67
69
|
|
|
70
|
+
:host([layout="Vertical"]) .ui5-timeline-scroll-container {
|
|
71
|
+
height: 100%;
|
|
72
|
+
width: 100%;
|
|
73
|
+
overflow: auto;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
.ui5-timeline-scroll-container {
|
|
77
|
+
display: flex;
|
|
78
|
+
flex-direction: column;
|
|
79
|
+
}
|
|
80
|
+
|
|
68
81
|
:host([loading]) .ui5-timeline-growing-button-busy-indicator:not([_is-busy]) {
|
|
69
82
|
display: none;
|
|
70
83
|
}
|
|
@@ -77,12 +90,28 @@
|
|
|
77
90
|
box-sizing: border-box;
|
|
78
91
|
}
|
|
79
92
|
|
|
80
|
-
:host([layout="Vertical"]) .ui5-timeline-scroll-container {
|
|
81
|
-
height: 100%;
|
|
82
|
-
width: 100%;
|
|
83
|
-
}
|
|
84
|
-
|
|
85
93
|
:host([growing="Scroll"]) .ui5-timeline-end-marker {
|
|
86
94
|
/* Ensure the list-end-marker has a block property to always be stretched and "visible" on the screen */
|
|
87
95
|
display: inline-block;
|
|
88
|
-
}
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
/* Header area — wraps header + info-bar slots above the items */
|
|
99
|
+
.ui5-timeline-header-area {
|
|
100
|
+
flex-shrink: 0;
|
|
101
|
+
width: 100%;
|
|
102
|
+
background: var(--sapBackgroundColor);
|
|
103
|
+
margin-block-end: 1rem;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
.ui5-timeline-header,
|
|
107
|
+
.ui5-timeline-info-bar {
|
|
108
|
+
flex-shrink: 0;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
/* Sticky header — pins to the top in vertical layout and to the inline-start in horizontal layout */
|
|
112
|
+
:host([sticky-header]) .ui5-timeline-header-area {
|
|
113
|
+
position: sticky;
|
|
114
|
+
top: 0;
|
|
115
|
+
inset-inline-start: 0;
|
|
116
|
+
z-index: 2;
|
|
117
|
+
}
|