@fundamental-styles/mcp 0.41.7-rc.8 → 0.41.7
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/data/AI_USAGE.md +425 -0
- package/data/CHANGELOG.md +53 -3
- package/data/component-catalog.json +62 -209
- package/data/components/README.md +281 -0
- package/data/components/action-bar.md +443 -0
- package/data/components/ai-busy-indicator.md +79 -0
- package/data/components/ai-loading-bar.md +66 -0
- package/data/components/avatar-btp.md +198 -0
- package/data/components/avatar-group.md +2660 -0
- package/data/components/avatar-product-switch.md +476 -0
- package/data/components/avatar.md +993 -0
- package/data/components/bar.md +574 -0
- package/data/components/border-radius.md +148 -0
- package/data/components/border.md +412 -0
- package/data/components/breadcrumb.md +546 -0
- package/data/components/button-2.md +440 -0
- package/data/components/button-action-sheet.md +292 -0
- package/data/components/button-ai.md +730 -0
- package/data/components/button-btp.md +223 -0
- package/data/components/button-button.md +233 -0
- package/data/components/button-counter.md +176 -0
- package/data/components/button-patterns.md +731 -0
- package/data/components/button-split.md +459 -0
- package/data/components/button.md +469 -0
- package/data/components/calendar.md +5784 -0
- package/data/components/card-card-media.md +707 -0
- package/data/components/card-card.md +2426 -0
- package/data/components/card-layouts.md +1201 -0
- package/data/components/card.md +2404 -0
- package/data/components/carousel.md +1506 -0
- package/data/components/code.md +139 -0
- package/data/components/component-reset.md +272 -0
- package/data/components/components-icons-businesssuiteinappsymbol-icons.md +85 -0
- package/data/components/components-icons-sap-icons.md +147 -0
- package/data/components/components-icons-tnt-icons.md +85 -0
- package/data/components/container-queries.md +221 -0
- package/data/components/container.md +227 -0
- package/data/components/dialog-docs-static-busy-indicator.md +165 -0
- package/data/components/dialog-docs-static-dialog.md +949 -0
- package/data/components/dialog-docs-static-patterns.md +147 -0
- package/data/components/dialog-docs-static-settings.md +528 -0
- package/data/components/dialog-docs-static.md +982 -0
- package/data/components/dialog.md +606 -0
- package/data/components/dynamic-page-dynamic-page.md +1914 -0
- package/data/components/dynamic-page.md +973 -0
- package/data/components/dynamic-side.md +197 -0
- package/data/components/elevation.md +110 -0
- package/data/components/feed-input.md +346 -0
- package/data/components/feed-list.md +580 -0
- package/data/components/fieldset-2.md +292 -0
- package/data/components/fieldset-forms.md +169 -0
- package/data/components/fieldset.md +381 -0
- package/data/components/flexible-column-layout.md +205 -0
- package/data/components/form-group.md +287 -0
- package/data/components/form-header.md +71 -0
- package/data/components/form-item-2.md +98 -0
- package/data/components/form-item-3.md +134 -0
- package/data/components/form-item-4.md +556 -0
- package/data/components/form-item-5.md +182 -0
- package/data/components/form-item-6.md +539 -0
- package/data/components/form-item-7.md +239 -0
- package/data/components/form-item-ai.md +158 -0
- package/data/components/form-item-file-uploader.md +445 -0
- package/data/components/form-item-forms.md +234 -0
- package/data/components/form-item-patterns.md +426 -0
- package/data/components/form-item.md +464 -0
- package/data/components/form-label-ai.md +126 -0
- package/data/components/form-label-layouts.md +306 -0
- package/data/components/form-label-patterns.md +1175 -0
- package/data/components/form-label-status-indicator.md +1083 -0
- package/data/components/form-label-step-input.md +620 -0
- package/data/components/form-label.md +2876 -0
- package/data/components/generic-tag.md +747 -0
- package/data/components/grid-list-grid-list.md +1185 -0
- package/data/components/grid-list.md +1449 -0
- package/data/components/heading.md +66 -0
- package/data/components/horizontal-navigation.md +568 -0
- package/data/components/icon-tab-bar-dev.md +190 -0
- package/data/components/icon-tab-bar.md +2620 -0
- package/data/components/icon.md +171 -0
- package/data/components/iconBusinessSuite.md +92 -0
- package/data/components/iconTnt.md +92 -0
- package/data/components/illustrated-message.md +439 -0
- package/data/components/info-label.md +348 -0
- package/data/components/input-group.md +2068 -0
- package/data/components/label.md +66 -0
- package/data/components/layout-grid.md +447 -0
- package/data/components/layout-panel.md +261 -0
- package/data/components/layouts-layout-grid.md +608 -0
- package/data/components/layouts-paddings.md +133 -0
- package/data/components/layouts-section.md +287 -0
- package/data/components/list-2.md +148 -0
- package/data/components/list-3.md +735 -0
- package/data/components/list-list.md +790 -0
- package/data/components/list-object-list.md +1225 -0
- package/data/components/list.md +1286 -0
- package/data/components/media-queries.md +168 -0
- package/data/components/menu.md +946 -0
- package/data/components/message-box-docs-static-ai.md +149 -0
- package/data/components/message-box-docs-static.md +527 -0
- package/data/components/message-page-upload-collection.md +678 -0
- package/data/components/message-page.md +256 -0
- package/data/components/message-strip.md +977 -0
- package/data/components/message-toast.md +119 -0
- package/data/components/micro-process-flow.md +991 -0
- package/data/components/navigation-menu.md +366 -0
- package/data/components/navigation-navigation.md +1245 -0
- package/data/components/navigation.md +2604 -0
- package/data/components/numeric-content.md +317 -0
- package/data/components/object-attribute.md +96 -0
- package/data/components/object-identifier.md +227 -0
- package/data/components/object-marker.md +202 -0
- package/data/components/object-number.md +327 -0
- package/data/components/object-status.md +1538 -0
- package/data/components/off-screen.md +87 -0
- package/data/components/overflow.md +97 -0
- package/data/components/padding.md +122 -0
- package/data/components/paddings.md +130 -0
- package/data/components/page.md +300 -0
- package/data/components/pagination.md +672 -0
- package/data/components/panel-layouts.md +345 -0
- package/data/components/panel.md +514 -0
- package/data/components/patterns-label.md +74 -0
- package/data/components/popover-2.md +906 -0
- package/data/components/popover-ai.md +466 -0
- package/data/components/popover-btp.md +886 -0
- package/data/components/popover-deprecated.md +308 -0
- package/data/components/popover-message-popover.md +683 -0
- package/data/components/popover-notification.md +1511 -0
- package/data/components/popover-patterns.md +1100 -0
- package/data/components/popover-popover.md +1862 -0
- package/data/components/popover-quick-view.md +385 -0
- package/data/components/popover-timepicker.md +1836 -0
- package/data/components/popover-user-menu.md +1303 -0
- package/data/components/popover.md +1938 -0
- package/data/components/progress-indicator.md +351 -0
- package/data/components/prompt-input-ai.md +226 -0
- package/data/components/prompt-input.md +226 -0
- package/data/components/rating-indicator.md +1469 -0
- package/data/components/resizable-card-layout.md +951 -0
- package/data/components/scrollbar.md +86 -0
- package/data/components/search-field.md +287 -0
- package/data/components/section.md +250 -0
- package/data/components/segmented-button.md +324 -0
- package/data/components/shellbar.md +2183 -0
- package/data/components/side-nav.md +1562 -0
- package/data/components/skeleton.md +243 -0
- package/data/components/slider.md +395 -0
- package/data/components/splitter.md +353 -0
- package/data/components/table.md +2749 -0
- package/data/components/tabs.md +658 -0
- package/data/components/text-text.md +380 -0
- package/data/components/text.md +253 -0
- package/data/components/tile.md +1132 -0
- package/data/components/time.md +818 -0
- package/data/components/title.md +153 -0
- package/data/components/titles.md +83 -0
- package/data/components/token.md +311 -0
- package/data/components/tokenizer.md +398 -0
- package/data/components/tool-header.md +1352 -0
- package/data/components/tool-layout.md +199 -0
- package/data/components/toolbar-ai.md +174 -0
- package/data/components/toolbar-btp.md +526 -0
- package/data/components/toolbar-title-bar.md +473 -0
- package/data/components/toolbar.md +432 -0
- package/data/components/tree.md +1031 -0
- package/data/components/typography.md +435 -0
- package/data/components/variant-management.md +360 -0
- package/data/components/vertical-nav.md +589 -0
- package/data/components/wizard.md +1429 -0
- package/data/examples/Components/dialog/device-specifications.example.html +39 -30
- package/data/examples/Components/shellbar/optional-items.example.html +210 -157
- package/data/examples/Components/shellbar/overflow-toolbar.example.html +202 -177
- package/data/examples/Components/shellbar/responsive-paddings.example.html +217 -146
- package/data/examples/Components/shellbar/responsiveness.example.html +825 -613
- package/data/examples/Components/user-menu/default.example.html +241 -83
- package/data/schemas/badge.schema.json +1 -1
- package/data/schemas/button-split.schema.json +1 -1
- package/data/schemas/component-frontmatter.schema.json +123 -0
- package/data/schemas/component-markdown.schema.json +81 -0
- package/data/schemas/counter.schema.json +1 -1
- package/data/schemas/dynamic-page.schema.json +1 -1
- package/data/schemas/dynamic-side-content.schema.json +1 -1
- package/data/schemas/facet.schema.json +1 -1
- package/data/schemas/fieldset.schema.json +1 -1
- package/data/schemas/flexible-column-layout.schema.json +1 -1
- package/data/schemas/form-group.schema.json +3 -2
- package/data/schemas/form-header.schema.json +1 -1
- package/data/schemas/form-label.schema.json +1 -0
- package/data/schemas/form-message.schema.json +1 -1
- package/data/schemas/grid-list.schema.json +1 -1
- package/data/schemas/input-group.schema.json +1 -1
- package/data/schemas/layout-panel.schema.json +1 -1
- package/data/schemas/page.schema.json +1 -1
- package/data/schemas/quick-view.schema.json +2 -1
- package/data/schemas/section.schema.json +1 -1
- package/data/schemas/side-nav.schema.json +1 -1
- package/data/schemas/splitter.schema.json +1 -1
- package/data/schemas/tabs.schema.json +1 -1
- package/data/schemas/tile.schema.json +1 -1
- package/data/schemas/tool-layout.schema.json +1 -1
- package/data/schemas/user-menu.schema.json +10 -0
- package/data/schemas/wizard.schema.json +1 -1
- package/package.json +1 -1
- package/src/data/load-catalog.d.ts +2 -0
- package/src/data/load-catalog.js +5 -1
- package/src/data/load-catalog.js.map +1 -1
- package/src/data/load-markdown-docs.d.ts +44 -0
- package/src/data/load-markdown-docs.js +179 -0
- package/src/data/load-markdown-docs.js.map +1 -0
- package/src/data/markdown-cache.d.ts +60 -0
- package/src/data/markdown-cache.js +218 -0
- package/src/data/markdown-cache.js.map +1 -0
- package/src/server.js +72 -1
- package/src/server.js.map +1 -1
|
@@ -0,0 +1,243 @@
|
|
|
1
|
+
---
|
|
2
|
+
component: fd-skeleton
|
|
3
|
+
title: Components/Skeleton
|
|
4
|
+
category: Components
|
|
5
|
+
selector: fd-skeleton
|
|
6
|
+
cssFile: skeleton.css
|
|
7
|
+
sourcePath: packages/styles/stories/Components/skeleton/skeleton.stories.js
|
|
8
|
+
tags: []
|
|
9
|
+
dependencies: ["skeleton"]
|
|
10
|
+
relatedComponents: ["skeleton"]
|
|
11
|
+
stability: stable
|
|
12
|
+
generatedAt: 2026-06-09T18:29:01.472Z
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
# Components/Skeleton
|
|
16
|
+
|
|
17
|
+
Placeholder loading is a type of busy indicator that provides the user with a skeleton page as a placeholder while the content is still loading. The aim is to inform the user of the ongoing loading progress.
|
|
18
|
+
\r\nA skeleton page shows the frame of the final content without the content being fully loaded. Visually, skeleton pages are grey boxes with animations to indicate loading activity.
|
|
19
|
+
\r\nSkeleton pages are used to create an impression of speed and reliability when an app encounters performance barriers. They provide a generic preview of the layout, which makes the app seem to load faster. This improves the overall user experience.
|
|
20
|
+
\r\nThe Placeholder Skeleton is made up of Placeholder Shapes that aim to give an idea of how the actual content will look like. The placeholders can take various forms, depending on the type of content that is being loaded.
|
|
21
|
+
|
|
22
|
+
## Dependencies
|
|
23
|
+
|
|
24
|
+
This component depends on the following CSS files:
|
|
25
|
+
|
|
26
|
+
- `skeleton.css`
|
|
27
|
+
|
|
28
|
+
## Installation
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
npm install fundamental-styles
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
```html
|
|
35
|
+
<!-- Include theme -->
|
|
36
|
+
<link href="node_modules/fundamental-styles/dist/theming/sap_horizon.css" rel="stylesheet">
|
|
37
|
+
|
|
38
|
+
<!-- Include component CSS -->
|
|
39
|
+
<link href="node_modules/fundamental-styles/dist/skeleton.css" rel="stylesheet">
|
|
40
|
+
|
|
41
|
+
<!-- Include dependencies -->
|
|
42
|
+
<link href="node_modules/fundamental-styles/dist/skeleton.css" rel="stylesheet">
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
## Basic Usage
|
|
46
|
+
|
|
47
|
+
```html
|
|
48
|
+
<div class="fd-skeleton">
|
|
49
|
+
<svg width="100%" height="100%" class="fd-skeleton__canvas">
|
|
50
|
+
<defs>
|
|
51
|
+
<linearGradient id="skeletonGradient">
|
|
52
|
+
<stop offset="0" class="fd-skeleton__outer">
|
|
53
|
+
</stop>
|
|
54
|
+
<stop class="fd-skeleton__middle">
|
|
55
|
+
<animate attributeName="offset" values="0; 0; 0.5; 1; 1" dur="2s" repeatCount="indefinite">
|
|
56
|
+
|
|
57
|
+
</animate>
|
|
58
|
+
</stop>
|
|
59
|
+
<stop offset="1" class="fd-skeleton__outer">
|
|
60
|
+
|
|
61
|
+
</stop>
|
|
62
|
+
</linearGradient>
|
|
63
|
+
<mask id="fd-skeleton-0">
|
|
64
|
+
<rect x="0" y="0" width="100%" rx="4" height="100%" class="ng-star-inserted"></rect>
|
|
65
|
+
</mask>
|
|
66
|
+
</defs>
|
|
67
|
+
<rect x="0" y="0" width="100%" height="100%" mask="url(#fd-skeleton-0)">
|
|
68
|
+
|
|
69
|
+
</rect>
|
|
70
|
+
</svg>
|
|
71
|
+
</div>
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
## BEM Elements
|
|
75
|
+
|
|
76
|
+
This component uses the following BEM elements:
|
|
77
|
+
|
|
78
|
+
- `fd-skeleton__canvas`
|
|
79
|
+
- `fd-skeleton__middle`
|
|
80
|
+
- `fd-skeleton__outer`
|
|
81
|
+
|
|
82
|
+
## Related Components
|
|
83
|
+
|
|
84
|
+
This component works with or depends on:
|
|
85
|
+
|
|
86
|
+
- `skeleton`
|
|
87
|
+
|
|
88
|
+
## Design Tokens
|
|
89
|
+
|
|
90
|
+
Key CSS variables used by this component:
|
|
91
|
+
|
|
92
|
+
- `--fdSkeletonGradientMiddleColor`
|
|
93
|
+
- `--sapContent_Placeholderloading_Background`
|
|
94
|
+
|
|
95
|
+
## Examples
|
|
96
|
+
|
|
97
|
+
### Rectangle
|
|
98
|
+
|
|
99
|
+
An example of a rectangular placeholder
|
|
100
|
+
|
|
101
|
+
```html
|
|
102
|
+
<div class="fd-skeleton">
|
|
103
|
+
<svg width="100%" height="100%" class="fd-skeleton__canvas">
|
|
104
|
+
<defs>
|
|
105
|
+
<linearGradient id="skeletonGradient">
|
|
106
|
+
<stop offset="0" class="fd-skeleton__outer">
|
|
107
|
+
</stop>
|
|
108
|
+
<stop class="fd-skeleton__middle">
|
|
109
|
+
<animate attributeName="offset" values="0; 0; 0.5; 1; 1" dur="2s" repeatCount="indefinite">
|
|
110
|
+
|
|
111
|
+
</animate>
|
|
112
|
+
</stop>
|
|
113
|
+
<stop offset="1" class="fd-skeleton__outer">
|
|
114
|
+
|
|
115
|
+
</stop>
|
|
116
|
+
</linearGradient>
|
|
117
|
+
<mask id="fd-skeleton-0">
|
|
118
|
+
<rect x="0" y="0" width="100%" rx="4" height="100%" class="ng-star-inserted"></rect>
|
|
119
|
+
</mask>
|
|
120
|
+
</defs>
|
|
121
|
+
<rect x="0" y="0" width="100%" height="100%" mask="url(#fd-skeleton-0)">
|
|
122
|
+
|
|
123
|
+
</rect>
|
|
124
|
+
</svg>
|
|
125
|
+
</div>
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
### Circle
|
|
129
|
+
|
|
130
|
+
An example of a circular placeholder
|
|
131
|
+
|
|
132
|
+
```html
|
|
133
|
+
<div class="fd-skeleton">
|
|
134
|
+
<svg width="100%" height="100%" class="fd-skeleton__canvas">
|
|
135
|
+
<defs>
|
|
136
|
+
<linearGradient id="skeletonGradient">
|
|
137
|
+
<stop offset="0" class="fd-skeleton__outer"></stop>
|
|
138
|
+
<stop class="fd-skeleton__middle">
|
|
139
|
+
<animate attributeName="offset" values="0; 0; 0.5; 1; 1" dur="2s" repeatCount="indefinite"></animate>
|
|
140
|
+
</stop>
|
|
141
|
+
<stop offset="1" class="fd-skeleton__outer"></stop>
|
|
142
|
+
</linearGradient>
|
|
143
|
+
<mask id="fd-skeleton-2">
|
|
144
|
+
<circle cx="50%" cy="50%" r="50%" class="ng-star-inserted"></circle>
|
|
145
|
+
</mask>
|
|
146
|
+
</defs>
|
|
147
|
+
<rect x="0" y="0" width="100%" height="100%" mask="url(#fd-skeleton-2)"></rect>
|
|
148
|
+
</svg>
|
|
149
|
+
</div>
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
### Lines
|
|
153
|
+
|
|
154
|
+
Examples of lines placeholders (3 and 2 lines)
|
|
155
|
+
|
|
156
|
+
```html
|
|
157
|
+
<p>3 lines</p>
|
|
158
|
+
<div class="fd-skeleton">
|
|
159
|
+
<svg width="100%" height="100%" class="fd-skeleton__canvas">
|
|
160
|
+
<defs>
|
|
161
|
+
<linearGradient id="skeletonGradient">
|
|
162
|
+
<stop offset="0" class="fd-skeleton__outer"></stop>
|
|
163
|
+
<stop class="fd-skeleton__middle">
|
|
164
|
+
<animate attributeName="offset" values="0; 0; 0.5; 1; 1" dur="2s" repeatCount="indefinite"></animate>
|
|
165
|
+
</stop>
|
|
166
|
+
<stop offset="1" class="fd-skeleton__outer"></stop>
|
|
167
|
+
</linearGradient>
|
|
168
|
+
<mask id="fd-skeleton-4">
|
|
169
|
+
<rect x="0" width="100%" rx="4" height="8" y="0" class="ng-star-inserted"></rect>
|
|
170
|
+
<rect x="0" width="100%" rx="4" height="8" y="20" class="ng-star-inserted"></rect>
|
|
171
|
+
<rect x="0" width="60%" rx="4" height="8" y="40" class="ng-star-inserted"></rect>
|
|
172
|
+
</mask>
|
|
173
|
+
</defs>
|
|
174
|
+
<rect x="0" y="0" width="100%" height="100%" mask="url(#fd-skeleton-4)">
|
|
175
|
+
|
|
176
|
+
</rect>
|
|
177
|
+
</svg>
|
|
178
|
+
</div>
|
|
179
|
+
|
|
180
|
+
<p>2 lines</p>
|
|
181
|
+
<div class="fd-skeleton">
|
|
182
|
+
<svg width="100%" height="100%" class="fd-skeleton__canvas">
|
|
183
|
+
<defs>
|
|
184
|
+
<linearGradient id="skeletonGradient">
|
|
185
|
+
<stop offset="0" class="fd-skeleton__outer"></stop>
|
|
186
|
+
<stop class="fd-skeleton__middle">
|
|
187
|
+
<animate attributeName="offset" values="0; 0; 0.5; 1; 1" dur="2s" repeatCount="indefinite"></animate>
|
|
188
|
+
</stop>
|
|
189
|
+
<stop offset="1" class="fd-skeleton__outer"></stop>
|
|
190
|
+
</linearGradient>
|
|
191
|
+
<mask id="fd-skeleton-5">
|
|
192
|
+
<rect x="0" width="100%" rx="4" height="8" y="0" class="ng-star-inserted"></rect>
|
|
193
|
+
<rect x="0" width="60%" rx="4" height="8" y="20" class="ng-star-inserted"></rect>
|
|
194
|
+
</mask>
|
|
195
|
+
</defs>
|
|
196
|
+
<rect x="0" y="0" width="100%" height="100%" mask="url(#fd-skeleton-5)">
|
|
197
|
+
|
|
198
|
+
</rect>
|
|
199
|
+
</svg>
|
|
200
|
+
</div>
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
### ComplexExamples
|
|
204
|
+
|
|
205
|
+
The library allows setting customly build examples like this one
|
|
206
|
+
|
|
207
|
+
```html
|
|
208
|
+
<div class="fd-skeleton">
|
|
209
|
+
<svg width="100%" height="100%" class="fd-skeleton__canvas">
|
|
210
|
+
<defs>
|
|
211
|
+
<linearGradient id="skeletonGradient">
|
|
212
|
+
<stop offset="0" class="fd-skeleton__outer"></stop>
|
|
213
|
+
<stop class="fd-skeleton__middle">
|
|
214
|
+
<animate attributeName="offset" values="0; 0; 0.5; 1; 1" dur="2s" repeatCount="indefinite"></animate>
|
|
215
|
+
</stop>
|
|
216
|
+
<stop offset="1" class="fd-skeleton__outer"></stop>
|
|
217
|
+
</linearGradient>
|
|
218
|
+
<mask id="fd-skeleton-8">
|
|
219
|
+
<circle cx="25" cy="25" r="25"></circle>
|
|
220
|
+
<rect x="60" y="0" width="100" height="16" rx="4"></rect>
|
|
221
|
+
<rect x="60" y="30" width="60" height="12" rx="4"></rect>
|
|
222
|
+
<rect x="0" y="60" width="160" height="8" rx="4"></rect>
|
|
223
|
+
<rect x="0" y="80" width="160" height="8" rx="4"></rect>
|
|
224
|
+
<rect x="0" y="100" width="100" height="8" rx="4"></rect>
|
|
225
|
+
</mask>
|
|
226
|
+
</defs>
|
|
227
|
+
<rect x="0" y="0" width="100%" height="100%" mask="url(#fd-skeleton-8)"></rect>
|
|
228
|
+
</svg>
|
|
229
|
+
</div>
|
|
230
|
+
```
|
|
231
|
+
|
|
232
|
+
## Accessibility
|
|
233
|
+
|
|
234
|
+
- Use semantic HTML elements where appropriate
|
|
235
|
+
- Include proper ARIA attributes for interactive elements
|
|
236
|
+
- Ensure keyboard navigation support
|
|
237
|
+
- Provide adequate color contrast
|
|
238
|
+
|
|
239
|
+
## Source
|
|
240
|
+
|
|
241
|
+
This documentation was automatically generated from: `packages/styles/stories/Components/skeleton/skeleton.stories.js`
|
|
242
|
+
|
|
243
|
+
For the latest updates and interactive examples, see [Storybook](https://sap.github.io/fundamental-styles/).
|
|
@@ -0,0 +1,395 @@
|
|
|
1
|
+
---
|
|
2
|
+
component: fd-slider
|
|
3
|
+
title: Components/Slider
|
|
4
|
+
category: Components
|
|
5
|
+
selector: fd-slider
|
|
6
|
+
cssFile: slider.css
|
|
7
|
+
sourcePath: packages/styles/stories/Components/slider/slider.stories.js
|
|
8
|
+
tags: []
|
|
9
|
+
dependencies: ["slider"]
|
|
10
|
+
relatedComponents: ["slider"]
|
|
11
|
+
stability: stable
|
|
12
|
+
generatedAt: 2026-06-09T18:29:01.398Z
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
# Components/Slider
|
|
16
|
+
|
|
17
|
+
There are two types of sliders, <a href="https://experience.sap.com/internal/fiori-design-web/slider/">Standard Slider</a> and <a href="https://experience.sap.com/internal/fiori-design-web/range-slider/">Range Slider</a>. The standard slider is a control that enables the user to adjust single values within a specified numerical range. The range slider enables the user to select a value range within a predefined numerical interval.
|
|
18
|
+
|
|
19
|
+
##Usage
|
|
20
|
+
**Use the slider if:**
|
|
21
|
+
|
|
22
|
+
- you want to change values with graphical support.
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
**Use the range slide if:**
|
|
26
|
+
|
|
27
|
+
- you want to select a value range within a predefined numerical interval. If you want to specify only a single value within a predefined numerical interval, use the slider instead.
|
|
28
|
+
|
|
29
|
+
## Responsiveness
|
|
30
|
+
The slider itself is not responsive. It adjusts to the responsiveness of its parent container by recalculating and resizing the width of the control.
|
|
31
|
+
|
|
32
|
+
## Components
|
|
33
|
+
- **Track: ** a horizontal bar which visually represents the range between a minimum and maximum value. A portion of the slider represents the current value or a range.
|
|
34
|
+
- **Tick Marks:** vertical elements that allow the slider to snap to predefined values
|
|
35
|
+
- **Handles:** interactive elements which can be dragged horizontally to change the current slider value or range
|
|
36
|
+
- **Labels:** the text or numeric representation of a tick mark value
|
|
37
|
+
- **Helper Area:** the area where the input and the tooltip are shown.
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
## Accessibility
|
|
41
|
+
To ensure that both the standard and range sliders are accessible, a div element with class \
|
|
42
|
+
|
|
43
|
+
## Usage Guidelines
|
|
44
|
+
|
|
45
|
+
**Use the slider if:**
|
|
46
|
+
|
|
47
|
+
- you want to change values with graphical support.
|
|
48
|
+
|
|
49
|
+
## Dependencies
|
|
50
|
+
|
|
51
|
+
This component depends on the following CSS files:
|
|
52
|
+
|
|
53
|
+
- `slider.css`
|
|
54
|
+
|
|
55
|
+
## Installation
|
|
56
|
+
|
|
57
|
+
```bash
|
|
58
|
+
npm install fundamental-styles
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
```html
|
|
62
|
+
<!-- Include theme -->
|
|
63
|
+
<link href="node_modules/fundamental-styles/dist/theming/sap_horizon.css" rel="stylesheet">
|
|
64
|
+
|
|
65
|
+
<!-- Include component CSS -->
|
|
66
|
+
<link href="node_modules/fundamental-styles/dist/slider.css" rel="stylesheet">
|
|
67
|
+
|
|
68
|
+
<!-- Include dependencies -->
|
|
69
|
+
<link href="node_modules/fundamental-styles/dist/slider.css" rel="stylesheet">
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
## Basic Usage
|
|
73
|
+
|
|
74
|
+
```html
|
|
75
|
+
<div class="slider-container">
|
|
76
|
+
<div class="fd-slider">
|
|
77
|
+
<div class="fd-slider__inner">
|
|
78
|
+
|
|
79
|
+
</div>
|
|
80
|
+
</div>
|
|
81
|
+
</div>
|
|
82
|
+
<div class="slider-container">
|
|
83
|
+
<div class="fd-slider">
|
|
84
|
+
<div class="fd-slider__inner">
|
|
85
|
+
|
|
86
|
+
</div>
|
|
87
|
+
</div>
|
|
88
|
+
</div>
|
|
89
|
+
<div class="slider-container">
|
|
90
|
+
<div class="fd-slider">
|
|
91
|
+
<div class="fd-slider__inner">
|
|
92
|
+
|
|
93
|
+
</div>
|
|
94
|
+
</div>
|
|
95
|
+
</div>
|
|
96
|
+
<div class="slider-container">
|
|
97
|
+
<div class="fd-slider">
|
|
98
|
+
<div class="fd-slider__inner">
|
|
99
|
+
|
|
100
|
+
</div>
|
|
101
|
+
</div>
|
|
102
|
+
</div>
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
## Modifiers
|
|
106
|
+
|
|
107
|
+
| Class | Description |
|
|
108
|
+
|-------|-------------|
|
|
109
|
+
| `fd-slider--lg` | Style variant |
|
|
110
|
+
| `fd-slider--range` | The range slider displays a track with two handles, indicating that a range between two values can be selected |
|
|
111
|
+
| `fd-slider--vertical` | By default, the slider is not responsive |
|
|
112
|
+
|
|
113
|
+
## States
|
|
114
|
+
|
|
115
|
+
| Class | Description |
|
|
116
|
+
|-------|-------------|
|
|
117
|
+
| `is-active` | Active state |
|
|
118
|
+
| `is-focus` | Focus state |
|
|
119
|
+
| `is-hover` | Hover state |
|
|
120
|
+
|
|
121
|
+
## BEM Elements
|
|
122
|
+
|
|
123
|
+
This component uses the following BEM elements:
|
|
124
|
+
|
|
125
|
+
- `fd-slider__handle`
|
|
126
|
+
- `fd-slider__inner`
|
|
127
|
+
- `fd-slider__label`
|
|
128
|
+
- `fd-slider__labels`
|
|
129
|
+
- `fd-slider__tick`
|
|
130
|
+
- `fd-slider__tick--in-range`
|
|
131
|
+
- `fd-slider__tick-wrapper`
|
|
132
|
+
- `fd-slider__ticks`
|
|
133
|
+
- `fd-slider__track`
|
|
134
|
+
- `fd-slider__track-focus-range`
|
|
135
|
+
- `fd-slider__track-range`
|
|
136
|
+
|
|
137
|
+
## Related Components
|
|
138
|
+
|
|
139
|
+
This component works with or depends on:
|
|
140
|
+
|
|
141
|
+
- `slider`
|
|
142
|
+
|
|
143
|
+
## Design Tokens
|
|
144
|
+
|
|
145
|
+
Key CSS variables used by this component:
|
|
146
|
+
|
|
147
|
+
- `--fdSlider_Active_Handle_Background`
|
|
148
|
+
- `--fdSlider_Active_Handle_Border`
|
|
149
|
+
- `--fdSlider_Active_Tick_Background`
|
|
150
|
+
- `--fdSlider_Endpoint_Active_Background`
|
|
151
|
+
- `--fdSlider_Endpoint_Active_Border`
|
|
152
|
+
- `--fdSlider_Endpoint_Background`
|
|
153
|
+
- `--fdSlider_Endpoint_Border`
|
|
154
|
+
- `--fdSlider_Endpoint_Size`
|
|
155
|
+
- `--fdSlider_Focus_Handle_Background`
|
|
156
|
+
- `--fdSlider_Focus_Handle_Border`
|
|
157
|
+
- `--fdSlider_Focus_Handle_Display`
|
|
158
|
+
- `--fdSlider_Focus_Range_Outline`
|
|
159
|
+
- `--fdSlider_Handle_Active_Height`
|
|
160
|
+
- `--fdSlider_Handle_Active_Width`
|
|
161
|
+
- `--fdSlider_Handle_Background`
|
|
162
|
+
|
|
163
|
+
*...and 5 more*
|
|
164
|
+
|
|
165
|
+
## Examples
|
|
166
|
+
|
|
167
|
+
### Standard
|
|
168
|
+
|
|
169
|
+
The standard slider displays a track with a handle. When the user hovers over the handle, a hand cursor appears. The user can either drag and drop the handle or click on the bar to change the slider setting.
|
|
170
|
+
|
|
171
|
+
```html
|
|
172
|
+
<div class="slider-container">
|
|
173
|
+
<div class="fd-slider">
|
|
174
|
+
<div class="fd-slider__inner">
|
|
175
|
+
|
|
176
|
+
</div>
|
|
177
|
+
</div>
|
|
178
|
+
</div>
|
|
179
|
+
<div class="slider-container">
|
|
180
|
+
<div class="fd-slider">
|
|
181
|
+
<div class="fd-slider__inner">
|
|
182
|
+
|
|
183
|
+
</div>
|
|
184
|
+
</div>
|
|
185
|
+
</div>
|
|
186
|
+
<div class="slider-container">
|
|
187
|
+
<div class="fd-slider">
|
|
188
|
+
<div class="fd-slider__inner">
|
|
189
|
+
|
|
190
|
+
</div>
|
|
191
|
+
</div>
|
|
192
|
+
</div>
|
|
193
|
+
<div class="slider-container">
|
|
194
|
+
<div class="fd-slider">
|
|
195
|
+
<div class="fd-slider__inner">
|
|
196
|
+
|
|
197
|
+
</div>
|
|
198
|
+
</div>
|
|
199
|
+
</div>
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
### Range
|
|
203
|
+
|
|
204
|
+
The range slider displays a track with two handles, indicating that a range between two values can be selected. To display a range slider, add the \
|
|
205
|
+
|
|
206
|
+
```html
|
|
207
|
+
<h3>Regular</h3>
|
|
208
|
+
<div class="slider-container slider-container--range">
|
|
209
|
+
<div class="fd-slider fd-slider--range">
|
|
210
|
+
<div class="fd-slider__inner">
|
|
211
|
+
<div class="fd-slider__track">
|
|
212
|
+
|
|
213
|
+
</div>
|
|
214
|
+
|
|
215
|
+
</div>
|
|
216
|
+
</div>
|
|
217
|
+
</div>
|
|
218
|
+
|
|
219
|
+
<div class="slider-container slider-container--range">
|
|
220
|
+
<div class="fd-slider fd-slider--range">
|
|
221
|
+
<div class="fd-slider__inner">
|
|
222
|
+
<div class="fd-slider__track">
|
|
223
|
+
|
|
224
|
+
</div>
|
|
225
|
+
|
|
226
|
+
</div>
|
|
227
|
+
</div>
|
|
228
|
+
</div>
|
|
229
|
+
|
|
230
|
+
<div class="slider-container slider-container--range">
|
|
231
|
+
<div class="fd-slider fd-slider--range">
|
|
232
|
+
<div class="fd-slider__inner">
|
|
233
|
+
<div class="fd-slider__track">
|
|
234
|
+
|
|
235
|
+
</div>
|
|
236
|
+
|
|
237
|
+
</div>
|
|
238
|
+
</div>
|
|
239
|
+
</div>
|
|
240
|
+
|
|
241
|
+
<div class="slider-container slider-container--range">
|
|
242
|
+
<div class="fd-slider fd-slider--range">
|
|
243
|
+
<div class="fd-slider__inner">
|
|
244
|
+
<div class="fd-slider__track">
|
|
245
|
+
|
|
246
|
+
</div>
|
|
247
|
+
|
|
248
|
+
</div>
|
|
249
|
+
</div>
|
|
250
|
+
</div>
|
|
251
|
+
```
|
|
252
|
+
|
|
253
|
+
### Ticks
|
|
254
|
+
|
|
255
|
+
The slider can display ticks on the bar to help guide the user. If a tick is in selected range (Active Area), the \
|
|
256
|
+
|
|
257
|
+
```html
|
|
258
|
+
<div class="slider-container">
|
|
259
|
+
<div class="fd-slider">
|
|
260
|
+
<div class="fd-slider__inner">
|
|
261
|
+
|
|
262
|
+
<div class="fd-slider__tick-wrapper">
|
|
263
|
+
|
|
264
|
+
</div>
|
|
265
|
+
</div>
|
|
266
|
+
</div>
|
|
267
|
+
</div>
|
|
268
|
+
```
|
|
269
|
+
|
|
270
|
+
### Ticks and labels
|
|
271
|
+
|
|
272
|
+
The slider can display labels that indicate the values of each tick. Labels can be displayed with the \
|
|
273
|
+
|
|
274
|
+
```html
|
|
275
|
+
<div class="slider-container">
|
|
276
|
+
<div class="fd-slider">
|
|
277
|
+
<div class="fd-slider__inner">
|
|
278
|
+
|
|
279
|
+
<div class="fd-slider__tick-wrapper">
|
|
280
|
+
|
|
281
|
+
<div class="fd-slider__labels">
|
|
282
|
+
<div class="fd-slider__label">0</div>
|
|
283
|
+
<div class="fd-slider__label">10</div>
|
|
284
|
+
<div class="fd-slider__label">20</div>
|
|
285
|
+
<div class="fd-slider__label">30</div>
|
|
286
|
+
<div class="fd-slider__label">40</div>
|
|
287
|
+
<div class="fd-slider__label">50</div>
|
|
288
|
+
<div class="fd-slider__label">60</div>
|
|
289
|
+
<div class="fd-slider__label">70</div>
|
|
290
|
+
<div class="fd-slider__label">80</div>
|
|
291
|
+
<div class="fd-slider__label">90</div>
|
|
292
|
+
<div class="fd-slider__label">100</div>
|
|
293
|
+
</div>
|
|
294
|
+
</div>
|
|
295
|
+
</div>
|
|
296
|
+
</div>
|
|
297
|
+
</div>
|
|
298
|
+
```
|
|
299
|
+
|
|
300
|
+
### Mobile
|
|
301
|
+
|
|
302
|
+
By default, the slider is not responsive. However, to make the slider more mobile-friendly, you may enlarge the slider handle and its hit area by adding \
|
|
303
|
+
|
|
304
|
+
```html
|
|
305
|
+
<div class="slider-container">
|
|
306
|
+
<div class="fd-slider fd-slider--lg">
|
|
307
|
+
<div class="fd-slider__inner">
|
|
308
|
+
|
|
309
|
+
</div>
|
|
310
|
+
</div>
|
|
311
|
+
</div>
|
|
312
|
+
```
|
|
313
|
+
|
|
314
|
+
### Vertical Slider
|
|
315
|
+
|
|
316
|
+
By default, the slider is not responsive. However, to make the slider more mobile-friendly, you may enlarge the slider handle and its hit area by adding \
|
|
317
|
+
|
|
318
|
+
```html
|
|
319
|
+
<div>
|
|
320
|
+
<p>Standard vertical slider</p>
|
|
321
|
+
<div class="slider-container">
|
|
322
|
+
<div class="fd-slider fd-slider--vertical">
|
|
323
|
+
<div class="fd-slider__inner">
|
|
324
|
+
|
|
325
|
+
</div>
|
|
326
|
+
<div class="slider-container">
|
|
327
|
+
<div class="fd-slider fd-slider--vertical">
|
|
328
|
+
<div class="fd-slider__inner">
|
|
329
|
+
|
|
330
|
+
</div>
|
|
331
|
+
</div>
|
|
332
|
+
</div>
|
|
333
|
+
<div class="slider-container">
|
|
334
|
+
<div class="fd-slider fd-slider--vertical">
|
|
335
|
+
<div class="fd-slider__inner">
|
|
336
|
+
|
|
337
|
+
</div>
|
|
338
|
+
</div>
|
|
339
|
+
</div>
|
|
340
|
+
</div>
|
|
341
|
+
</div>
|
|
342
|
+
<div>
|
|
343
|
+
<p>Mobile vertical slider with ticks and labels</p>
|
|
344
|
+
<div class="slider-container">
|
|
345
|
+
<div class="fd-slider fd-slider--lg fd-slider--vertical">
|
|
346
|
+
<div class="fd-slider__inner">
|
|
347
|
+
|
|
348
|
+
<div class="fd-slider__tick-wrapper">
|
|
349
|
+
|
|
350
|
+
<div class="fd-slider__labels">
|
|
351
|
+
<div class="fd-slider__label">0</div>
|
|
352
|
+
<div class="fd-slider__label">10</div>
|
|
353
|
+
<div class="fd-slider__label">20</div>
|
|
354
|
+
<div class="fd-slider__label">30</div>
|
|
355
|
+
<div class="fd-slider__label">40</div>
|
|
356
|
+
<div class="fd-slider__label">50</div>
|
|
357
|
+
<div class="fd-slider__label">60</div>
|
|
358
|
+
<div class="fd-slider__label">70</div>
|
|
359
|
+
<div class="fd-slider__label">80</div>
|
|
360
|
+
<div class="fd-slider__label">90</div>
|
|
361
|
+
<div class="fd-slider__label">100</div>
|
|
362
|
+
</div>
|
|
363
|
+
</div>
|
|
364
|
+
</div>
|
|
365
|
+
</div>
|
|
366
|
+
</div>
|
|
367
|
+
</div>
|
|
368
|
+
<div>
|
|
369
|
+
<p>Range slider</p>
|
|
370
|
+
<div class="slider-container slider-container--range">
|
|
371
|
+
<div class="fd-slider fd-slider--range fd-slider--vertical">
|
|
372
|
+
<div class="fd-slider__inner">
|
|
373
|
+
<div class="fd-slider__track">
|
|
374
|
+
|
|
375
|
+
</div>
|
|
376
|
+
|
|
377
|
+
</div>
|
|
378
|
+
</div>
|
|
379
|
+
</div>
|
|
380
|
+
</div>
|
|
381
|
+
</div>
|
|
382
|
+
```
|
|
383
|
+
|
|
384
|
+
## Accessibility
|
|
385
|
+
|
|
386
|
+
- Use semantic HTML elements where appropriate
|
|
387
|
+
- Include proper ARIA attributes for interactive elements
|
|
388
|
+
- Ensure keyboard navigation support
|
|
389
|
+
- Provide adequate color contrast
|
|
390
|
+
|
|
391
|
+
## Source
|
|
392
|
+
|
|
393
|
+
This documentation was automatically generated from: `packages/styles/stories/Components/slider/slider.stories.js`
|
|
394
|
+
|
|
395
|
+
For the latest updates and interactive examples, see [Storybook](https://sap.github.io/fundamental-styles/).
|