Skip to content

Commit 5481bb3

Browse files
fix(ScrollbarStyles): introduce centralized scrollbar styling (#12207)
* chore(getEffectiveScrollbarStyle): align with design spec
1 parent 605717c commit 5481bb3

17 files changed

+18
-83
lines changed

packages/base/src/Boot.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import whenDOMReady from "./util/whenDOMReady.js";
22
import EventProvider from "./EventProvider.js";
33
import insertFontFace from "./FontFace.js";
44
import insertSystemCSSVars from "./SystemCSSVars.js";
5+
import insertScrollbarStyles from "./ScrollbarStyles.js";
56
import { getTheme } from "./config/Theme.js";
67
import applyTheme from "./theming/applyTheme.js";
78
import { registerCurrentRuntime } from "./Runtimes.js";
@@ -67,6 +68,7 @@ const boot = async (): Promise<void> => {
6768
openUI5Support && openUI5Support.attachListeners();
6869
insertFontFace();
6970
insertSystemCSSVars();
71+
insertScrollbarStyles();
7072
fixSafariActiveState();
7173

7274
resolve();
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
import { hasStyle, createStyle } from "./ManagedStyles.js";
2+
import scrollbarStyles from "./generated/css/ScrollbarStyles.css.js";
3+
4+
const insertScrollbarStyles = () => {
5+
if (!hasStyle("data-ui5-scrollbar-styles")) {
6+
createStyle(scrollbarStyles, "data-ui5-scrollbar-styles");
7+
}
8+
};
9+
10+
export default insertScrollbarStyles;
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
html:not(:has(.ui5-content-native-scrollbars)) {
2+
scrollbar-color: var(--sapScrollBar_FaceColor) var(--sapScrollBar_TrackColor);
3+
}

packages/base/src/util/SelectionAssistant.ts

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
import getEffectiveScrollbarStyle from "../util/getEffectiveScrollbarStyle.js";
2-
31
const copyAndApplyStyles = (element: HTMLElement, copiedElement: HTMLElement) => {
42
const computedStyles = getComputedStyle(element);
53

@@ -33,23 +31,12 @@ const setInputSpecificStyles = (element: HTMLElement) => {
3331
element.style.overflowY = "hidden";
3432
};
3533

36-
const applyScrollStylings = () => {
37-
const sheet = new CSSStyleSheet();
38-
const styles = getEffectiveScrollbarStyle();
39-
40-
sheet.replaceSync(styles);
41-
42-
document.adoptedStyleSheets = [...document.adoptedStyleSheets, sheet];
43-
};
44-
4534
const createCopy = () => {
4635
const copiedElement = document.createElement("div");
4736

4837
copiedElement.id = "ui5-selection-mirror";
4938
copiedElement.contentEditable = "true";
5039

51-
applyScrollStylings();
52-
5340
document.body.appendChild(copiedElement);
5441
};
5542

packages/base/src/util/getEffectiveScrollbarStyle.ts

Lines changed: 0 additions & 38 deletions
This file was deleted.

packages/fiori/src/DynamicSideContent.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ import property from "@ui5/webcomponents-base/dist/decorators/property.js";
55
import slot from "@ui5/webcomponents-base/dist/decorators/slot.js";
66
import query from "@ui5/webcomponents-base/dist/decorators/query.js";
77
import i18n from "@ui5/webcomponents-base/dist/decorators/i18n.js";
8-
import getEffectiveScrollbarStyle from "@ui5/webcomponents-base/dist/util/getEffectiveScrollbarStyle.js";
98
import type I18nBundle from "@ui5/webcomponents-base/dist/i18nBundle.js";
109
import jsxRenderer from "@ui5/webcomponents-base/dist/renderer/JsxRenderer.js";
1110
import SideContentPosition from "./types/SideContentPosition.js";
@@ -119,7 +118,7 @@ type DynamicSideContentAccessibilityAttributes = {
119118
@customElement({
120119
tag: "ui5-dynamic-side-content",
121120
renderer: jsxRenderer,
122-
styles: [DynamicSideContentCss, getEffectiveScrollbarStyle()],
121+
styles: [DynamicSideContentCss],
123122
template: DynamicSideContentTemplate,
124123
})
125124
/**

packages/fiori/src/NavigationLayout.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ import customElement from "@ui5/webcomponents-base/dist/decorators/customElement
33
import property from "@ui5/webcomponents-base/dist/decorators/property.js";
44
import slot from "@ui5/webcomponents-base/dist/decorators/slot.js";
55
import jsxRenderer from "@ui5/webcomponents-base/dist/renderer/JsxRenderer.js";
6-
import getEffectiveScrollbarStyle from "@ui5/webcomponents-base/dist/util/getEffectiveScrollbarStyle.js";
76
import {
87
isPhone,
98
isTablet,
@@ -50,7 +49,6 @@ import NavigationLayoutCss from "./generated/themes/NavigationLayout.css.js";
5049
languageAware: true,
5150
renderer: jsxRenderer,
5251
styles: [
53-
getEffectiveScrollbarStyle(),
5452
NavigationLayoutCss,
5553
],
5654
template: NavigationLayoutTemplate,

packages/fiori/src/Page.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import UI5Element from "@ui5/webcomponents-base/dist/UI5Element.js";
2-
import getEffectiveScrollbarStyle from "@ui5/webcomponents-base/dist/util/getEffectiveScrollbarStyle.js";
32
import customElement from "@ui5/webcomponents-base/dist/decorators/customElement.js";
43
import property from "@ui5/webcomponents-base/dist/decorators/property.js";
54
import slot from "@ui5/webcomponents-base/dist/decorators/slot.js";
@@ -50,7 +49,6 @@ import PageCss from "./generated/themes/Page.css.js";
5049
renderer: jsxRenderer,
5150
styles: [
5251
PageCss,
53-
getEffectiveScrollbarStyle(),
5452
],
5553
template: PageTemplate,
5654
})

packages/fiori/src/SideNavigation.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import UI5Element from "@ui5/webcomponents-base/dist/UI5Element.js";
22
import customElement from "@ui5/webcomponents-base/dist/decorators/customElement.js";
33
import i18n from "@ui5/webcomponents-base/dist/decorators/i18n.js";
4-
import getEffectiveScrollbarStyle from "@ui5/webcomponents-base/dist/util/getEffectiveScrollbarStyle.js";
54
import jsxRender from "@ui5/webcomponents-base/dist/renderer/JsxRenderer.js";
65
import type ResponsivePopover from "@ui5/webcomponents/dist/ResponsivePopover.js";
76
import type NavigationMenu from "./NavigationMenu.js";
@@ -109,7 +108,7 @@ type PopupSideNavigationItem = SideNavigationItem & { associatedItem: SideNaviga
109108
fastNavigation: true,
110109
renderer: jsxRender,
111110
template: SideNavigationTemplate,
112-
styles: [SideNavigationCss, SideNavigationPopoverCss, getEffectiveScrollbarStyle()],
111+
styles: [SideNavigationCss, SideNavigationPopoverCss],
113112
})
114113
/**
115114
* Fired when the selection has changed via user interaction

packages/fiori/src/UserSettingsItem.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ import {
55
} from "@ui5/webcomponents-base/dist/decorators.js";
66
import type { TabContainerTabSelectEventDetail } from "@ui5/webcomponents/dist/TabContainer.js";
77
import type Tab from "@ui5/webcomponents/dist/Tab.js";
8-
import getEffectiveScrollbarStyle from "@ui5/webcomponents-base/dist/util/getEffectiveScrollbarStyle.js";
98
import UserSettingsItemTemplate from "./UserSettingsItemTemplate.js";
109
import type UserSettingsView from "./UserSettingsView.js";
1110
import UserSettingsItemCss from "./generated/themes/UserSettingsItem.css.js";
@@ -42,7 +41,7 @@ type UserSettingsItemBackClickEventDetail = {
4241
tag: "ui5-user-settings-item",
4342
renderer: jsxRenderer,
4443
template: UserSettingsItemTemplate,
45-
styles: [getEffectiveScrollbarStyle(), UserSettingsItemCss],
44+
styles: [UserSettingsItemCss],
4645
})
4746

4847
/**

0 commit comments

Comments
 (0)