Skip to content

Commit 2e9f8f0

Browse files
authored
Merge branch 'main' into avatar-accessibilityinfo-getter
2 parents 68092ba + d8adb03 commit 2e9f8f0

117 files changed

Lines changed: 3312 additions & 1026 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

CHANGELOG.md

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,50 @@
33
All notable changes to this project will be documented in this file.
44
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
55

6+
# [2.17.0](https://github.com/UI5/webcomponents/compare/v2.17.0-rc.5...v2.17.0) (2025-12-05)
7+
8+
9+
### Bug Fixes
10+
11+
* **ui5-dynamic-page:** fit content paddings aligned with specification ([#12738](https://github.com/UI5/webcomponents/issues/12738)) ([00803e6](https://github.com/UI5/webcomponents/commit/00803e68e431c663e5fc1595ff3a45cf0b1876ce)), closes [#12652](https://github.com/UI5/webcomponents/issues/12652)
12+
* **ui5-search-item:** correct font size ([#12758](https://github.com/UI5/webcomponents/issues/12758)) ([35ae11a](https://github.com/UI5/webcomponents/commit/35ae11a9e10f1578a1c16e3e0f93221680f98aee))
13+
14+
15+
### Reverts
16+
17+
* Revert "feat(framework): scope theming css variables with component packages (#12491)" (#12775) ([3385623](https://github.com/UI5/webcomponents/commit/33856235e357a3d4d0b9391eab2a83a5b3010556)), closes [#12491](https://github.com/UI5/webcomponents/issues/12491) [#12775](https://github.com/UI5/webcomponents/issues/12775)
18+
* Revert "chore: scope theming variables used in illustrations (#12687)" (#12770) ([c9288ff](https://github.com/UI5/webcomponents/commit/c9288ff0f655fdd03262b71ac788e5688c904add)), closes [#12687](https://github.com/UI5/webcomponents/issues/12687) [#12770](https://github.com/UI5/webcomponents/issues/12770)
19+
* Revert "feat(framework): introduce loadBaseThemingCSSVariables configuration (#12699)" (#12767) ([db375d3](https://github.com/UI5/webcomponents/commit/db375d30b9f4a7e07961fabbdcefdcdc78a93f46)), closes [#12699](https://github.com/UI5/webcomponents/issues/12699) [#12767](https://github.com/UI5/webcomponents/issues/12767)
20+
21+
22+
23+
24+
25+
# [2.17.0-rc.5](https://github.com/UI5/webcomponents/compare/v2.17.0-rc.4...v2.17.0-rc.5) (2025-12-04)
26+
27+
28+
### Bug Fixes
29+
30+
* **OpenUI5Support:** fix closing of sap.m.Popover with esc key ([#12730](https://github.com/UI5/webcomponents/issues/12730)) ([fae0ab8](https://github.com/UI5/webcomponents/commit/fae0ab8289baa060d5d65024c47fd4dc34c7aac0))
31+
* **tools:** dependencies usage ([#12716](https://github.com/UI5/webcomponents/issues/12716)) ([89bb0dd](https://github.com/UI5/webcomponents/commit/89bb0dd62322598bd1ea7ce984eaf0618546a6f2))
32+
* **ui5-checkbox:** fix accessibilityInfo ([#12686](https://github.com/UI5/webcomponents/issues/12686)) ([4c63fdc](https://github.com/UI5/webcomponents/commit/4c63fdcc19951f325841907d8dccfc13d2ff1202))
33+
* **ui5-input:** prevent double opening of VSM ([#12715](https://github.com/UI5/webcomponents/issues/12715)) ([ff6d49b](https://github.com/UI5/webcomponents/commit/ff6d49b821d3a6c4b52fdb79bd2f47e7ced82c67))
34+
* **ui5-tab-container:** allow selection indicator on text-only tabs to overlap bottom border ([#12584](https://github.com/UI5/webcomponents/issues/12584)) ([ddec84c](https://github.com/UI5/webcomponents/commit/ddec84c021d092e737003c93a508f881dbcbdff0))
35+
* **ui5-toolbar-select:** add invalidateOnChildChange ([#12676](https://github.com/UI5/webcomponents/issues/12676)) ([23a2df8](https://github.com/UI5/webcomponents/commit/23a2df8567456bc613917c0a4b4d3ece62973ed3)), closes [#12619](https://github.com/UI5/webcomponents/issues/12619)
36+
37+
38+
### Features
39+
40+
* **framework:** introduce loadBaseThemingCSSVariables configuration ([#12699](https://github.com/UI5/webcomponents/issues/12699)) ([f01b2eb](https://github.com/UI5/webcomponents/commit/f01b2eb6256f2032bd802d0a60c4625b0d1af5fe))
41+
* **ui5-calendar:** add disabled dates functionality ([cc7c174](https://github.com/UI5/webcomponents/commit/cc7c1741f29d1d747a8b9a19df4b8d8c53c5d8ca))
42+
* **ui5-multiinput:** implement selected token indicator in filter dialog ([#12698](https://github.com/UI5/webcomponents/issues/12698)) ([d046cb3](https://github.com/UI5/webcomponents/commit/d046cb37a795e04ddf4cde6befcac006dc8812f8))
43+
* **ui5-search:** items wrapping ([#12681](https://github.com/UI5/webcomponents/issues/12681)) ([992a70b](https://github.com/UI5/webcomponents/commit/992a70bcd5f1f82266884cfb9137fda252ac6d66))
44+
* **ui5-select:** implement accessibilityInfo getter ([#12614](https://github.com/UI5/webcomponents/issues/12614)) ([3afc0e8](https://github.com/UI5/webcomponents/commit/3afc0e8bbc6bdcb4bea900fd74703db0d99524c8))
45+
46+
47+
48+
49+
650
# [2.17.0-rc.4](https://github.com/UI5/webcomponents/compare/v2.17.0-rc.3...v2.17.0-rc.4) (2025-11-27)
751

852

lerna.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
"packages/create-package",
1515
"packages/compat"
1616
],
17-
"version": "2.17.0-rc.4",
17+
"version": "2.17.0",
1818
"command": {
1919
"publish": {
2020
"allowBranch": "*",

packages/ai/CHANGELOG.md

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,25 @@
33
All notable changes to this project will be documented in this file.
44
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
55

6+
# [2.17.0](https://github.com/UI5/webcomponents/compare/v2.17.0-rc.5...v2.17.0) (2025-12-05)
7+
8+
**Note:** Version bump only for package @ui5/webcomponents-ai
9+
10+
11+
12+
13+
14+
# [2.17.0-rc.5](https://github.com/UI5/webcomponents/compare/v2.17.0-rc.4...v2.17.0-rc.5) (2025-12-04)
15+
16+
17+
### Bug Fixes
18+
19+
* **tools:** dependencies usage ([#12716](https://github.com/UI5/webcomponents/issues/12716)) ([89bb0dd](https://github.com/UI5/webcomponents/commit/89bb0dd62322598bd1ea7ce984eaf0618546a6f2))
20+
21+
22+
23+
24+
625
# [2.17.0-rc.4](https://github.com/UI5/webcomponents/compare/v2.17.0-rc.3...v2.17.0-rc.4) (2025-11-27)
726

827
**Note:** Version bump only for package @ui5/webcomponents-ai

packages/ai/package.json

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@ui5/webcomponents-ai",
3-
"version": "2.17.0-rc.4",
3+
"version": "2.17.0",
44
"description": "UI5 Web Components: webcomponents.ai",
55
"ui5": {
66
"webComponentsPackage": true
@@ -46,18 +46,16 @@
4646
"directory": "packages/ai"
4747
},
4848
"dependencies": {
49-
"@ui5/webcomponents": "2.17.0-rc.4",
50-
"@ui5/webcomponents-base": "2.17.0-rc.4",
51-
"@ui5/webcomponents-icons": "2.17.0-rc.4",
52-
"@ui5/webcomponents-theming": "2.17.0-rc.4"
49+
"@ui5/webcomponents": "2.17.0",
50+
"@ui5/webcomponents-base": "2.17.0",
51+
"@ui5/webcomponents-icons": "2.17.0",
52+
"@ui5/webcomponents-theming": "2.17.0"
5353
},
5454
"devDependencies": {
5555
"@custom-elements-manifest/analyzer": "^0.10.10",
5656
"@ui5/cypress-internal": "0.1.0",
57-
"@ui5/webcomponents-tools": "2.17.0-rc.4",
58-
"chokidar-cli": "^3.0.0",
57+
"@ui5/webcomponents-tools": "2.17.0",
5958
"cypress": "^15.3.0",
60-
"eslint": "^7.22.0",
6159
"vite": "5.4.21"
6260
}
6361
}

packages/base/CHANGELOG.md

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,35 @@
33
All notable changes to this project will be documented in this file.
44
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
55

6+
# [2.17.0](https://github.com/UI5/webcomponents/compare/v2.17.0-rc.5...v2.17.0) (2025-12-05)
7+
8+
9+
### Reverts
10+
11+
* Revert "feat(framework): scope theming css variables with component packages (#12491)" (#12775) ([3385623](https://github.com/UI5/webcomponents/commit/33856235e357a3d4d0b9391eab2a83a5b3010556)), closes [#12491](https://github.com/UI5/webcomponents/issues/12491) [#12775](https://github.com/UI5/webcomponents/issues/12775)
12+
* Revert "feat(framework): introduce loadBaseThemingCSSVariables configuration (#12699)" (#12767) ([db375d3](https://github.com/UI5/webcomponents/commit/db375d30b9f4a7e07961fabbdcefdcdc78a93f46)), closes [#12699](https://github.com/UI5/webcomponents/issues/12699) [#12767](https://github.com/UI5/webcomponents/issues/12767)
13+
14+
15+
16+
17+
18+
# [2.17.0-rc.5](https://github.com/UI5/webcomponents/compare/v2.17.0-rc.4...v2.17.0-rc.5) (2025-12-04)
19+
20+
21+
### Bug Fixes
22+
23+
* **OpenUI5Support:** fix closing of sap.m.Popover with esc key ([#12730](https://github.com/UI5/webcomponents/issues/12730)) ([fae0ab8](https://github.com/UI5/webcomponents/commit/fae0ab8289baa060d5d65024c47fd4dc34c7aac0))
24+
* **tools:** dependencies usage ([#12716](https://github.com/UI5/webcomponents/issues/12716)) ([89bb0dd](https://github.com/UI5/webcomponents/commit/89bb0dd62322598bd1ea7ce984eaf0618546a6f2))
25+
26+
27+
### Features
28+
29+
* **framework:** introduce loadBaseThemingCSSVariables configuration ([#12699](https://github.com/UI5/webcomponents/issues/12699)) ([f01b2eb](https://github.com/UI5/webcomponents/commit/f01b2eb6256f2032bd802d0a60c4625b0d1af5fe))
30+
31+
32+
33+
34+
635
# [2.17.0-rc.4](https://github.com/UI5/webcomponents/compare/v2.17.0-rc.3...v2.17.0-rc.4) (2025-11-27)
736

837
**Note:** Version bump only for package @ui5/webcomponents-base

packages/base/lib/generate-styles/index.js

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,16 @@
11
import fs from 'fs/promises';
22
import path from "path";
33
import CleanCSS from "clean-css";
4-
import { processComponentPackageFile } from '@ui5/webcomponents-tools/lib/css-processors/css-processor-themes.mjs';
54
import { pathToFileURL } from "url";
65

76
const generate = async () => {
8-
const packageJSON = JSON.parse(await fs.readFile("./package.json"))
97
await fs.mkdir("src/generated/css/", { recursive: true });
108

119
const files = (await fs.readdir("src/css/")).filter(file => file.endsWith(".css"));
1210
const filesPromises = files.map(async file => {
13-
const filePath = path.join("src/css/", file);
14-
let content = await fs.readFile(filePath);
11+
let content = await fs.readFile(path.join("src/css/", file));
1512
const res = new CleanCSS().minify(`${content}`);
16-
17-
// Scope used variables
18-
content = await processComponentPackageFile({ text: res.styles, path: filePath }, packageJSON);
19-
20-
content = `export default \`${content}\`;`;
21-
13+
content = `export default \`${res.styles}\`;`;
2214
return fs.writeFile(path.join("src/generated/css/", `${file}.ts`), content);
2315
});
2416

packages/base/package-scripts.cjs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ const scripts = {
2424
"generated": `ui5nps-script "${LIB}/rimraf/rimraf.js src/generated`,
2525
"dist": `ui5nps-script "${LIB}/rimraf/rimraf.js dist`,
2626
},
27-
lint: `eslint .`,
27+
lint: `ui5nps-script "${LIB}/eslint/eslint.js"`,
2828
generate: "ui5nps clean build.i18n integrate copy generateAssetParameters generateVersionInfo generateStyles generateFontFace build.jsonImports",
2929
prepare: "ui5nps clean build.i18n integrate copy generateAssetParameters generateVersionInfo generateStyles generateFontFace typescript integrate.no-remaining-require build.jsonImports",
3030
typescript: "tsc -b",
@@ -41,7 +41,7 @@ const scripts = {
4141
},
4242
build: {
4343
default: `ui5nps prepare`,
44-
bundle: `vite build ${viteConfig}`,
44+
bundle: `ui5nps-script "${LIB}/vite-bundler/vite-bundler.mjs" ${viteConfig}`,
4545
i18n: {
4646
default: "ui5nps build.i18n.defaultsjs build.i18n.json",
4747
defaultsjs: `ui5nps-script "${LIB}/i18n/defaults.js" src/i18n src/generated/i18n`,
@@ -82,7 +82,7 @@ const scripts = {
8282
withBundle: 'ui5nps-p watch.src watch.bundle watch.styles', // concurently
8383
src: 'ui5nps copy.srcWithWatch',
8484
bundle: `ui5nps-script ${LIB}/dev-server/dev-server.mjs ${viteConfig}`,
85-
styles: 'chokidar "src/css/*.css" -c "ui5nps generateStyles"'
85+
styles: `ui5nps-script "${LIB}/chokidar/chokidar.js" "src/css/*.css" "ui5nps generateStyles"`
8686
},
8787
test: {
8888
default: 'ui5nps-p test.ssr test.ssr2 test.test-cy-ci', // concurently

packages/base/package.json

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@ui5/webcomponents-base",
3-
"version": "2.17.0-rc.4",
3+
"version": "2.17.0",
44
"description": "UI5 Web Components: webcomponents.base",
55
"author": "SAP SE (https://www.sap.com)",
66
"license": "Apache-2.0",
@@ -64,12 +64,9 @@
6464
"@openui5/sap.ui.core": "1.120.17",
6565
"@sap-theming/theming-base-content": "11.29.3",
6666
"@ui5/cypress-internal": "0.1.0",
67-
"@ui5/webcomponents-tools": "2.17.0-rc.4",
68-
"chokidar-cli": "^3.0.0",
67+
"@ui5/webcomponents-tools": "2.17.0",
6968
"clean-css": "^5.2.2",
7069
"cypress": "^15.3.0",
71-
"eslint": "^7.22.0",
72-
"mkdirp": "^1.0.4",
7370
"mocha": "^11.7.2",
7471
"replace-in-file": "^6.3.5",
7572
"resolve": "^1.20.0",

packages/base/src/UI5Element.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -180,7 +180,7 @@ abstract class UI5Element extends HTMLElement {
180180
eventDetails!: NotEqual<this, UI5Element> extends true ? object : {
181181
[k: string]: any
182182
};
183-
_jsxEvents!: Omit<JSX.DOMAttributes<this>, keyof Convert<this["eventDetails"], this> | "onClose" | "onToggle" | "onChange" | "onSelect" | "onInput"> & Convert<this["eventDetails"], this>
183+
_jsxEvents!: Omit<JSX.DOMAttributes<this>, keyof Convert<this["eventDetails"], this> | "onClose" | "onToggle" | "onChange" | "onSelect" | "onInput"> & Convert<this["eventDetails"], this>;
184184
_jsxProps!: Pick<JSX.AllHTMLAttributes<HTMLElement>, GlobalHTMLAttributeNames> & ElementProps<this> & Partial<this["_jsxEvents"]> & { key?: any };
185185
__id?: string;
186186
_suppressInvalidation: boolean;

packages/base/src/theming/applyTheme.ts

Lines changed: 32 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
import { getThemeProperties, getRegisteredPackages, isThemeRegistered } from "../asset-registries/Themes.js";
2-
import { createOrUpdateStyle } from "../ManagedStyles.js";
2+
import { removeStyle, createOrUpdateStyle } from "../ManagedStyles.js";
33
import getThemeDesignerTheme from "./getThemeDesignerTheme.js";
44
import { fireThemeLoaded } from "./ThemeLoaded.js";
5+
import { getFeature } from "../FeaturesRegistry.js";
56
import { attachCustomThemeStylesToHead, getThemeRoot } from "../config/ThemeRoot.js";
7+
import type OpenUI5Support from "../features/OpenUI5Support.js";
68
import { DEFAULT_THEME } from "../generated/AssetParameters.js";
79
import { getCurrentRuntimeIndex } from "../Runtimes.js";
810

@@ -29,6 +31,10 @@ const loadThemeBase = async (theme: string) => {
2931
}
3032
};
3133

34+
const deleteThemeBase = () => {
35+
removeStyle("data-ui5-theme-properties", BASE_THEME_PACKAGE);
36+
};
37+
3238
const loadComponentPackages = async (theme: string, externalThemeName?: string) => {
3339
const registeredPackages = getRegisteredPackages();
3440

@@ -47,34 +53,42 @@ const loadComponentPackages = async (theme: string, externalThemeName?: string)
4753
};
4854

4955
const detectExternalTheme = async (theme: string) => {
50-
if (getThemeRoot()) {
51-
await attachCustomThemeStylesToHead(theme);
52-
}
53-
5456
// If theme designer theme is detected, use this
5557
const extTheme = getThemeDesignerTheme();
5658
if (extTheme) {
5759
return extTheme;
5860
}
61+
62+
// If OpenUI5Support is enabled, try to find out if it loaded variables
63+
const openUI5Support = getFeature<typeof OpenUI5Support>("OpenUI5Support");
64+
if (openUI5Support && openUI5Support.isOpenUI5Detected()) {
65+
const varsLoaded = openUI5Support.cssVariablesLoaded();
66+
if (varsLoaded) {
67+
return {
68+
themeName: openUI5Support.getConfigurationSettingsObject()?.theme, // just themeName
69+
baseThemeName: "", // baseThemeName is only relevant for custom themes
70+
};
71+
}
72+
} else if (getThemeRoot()) {
73+
await attachCustomThemeStylesToHead(theme);
74+
75+
return getThemeDesignerTheme();
76+
}
5977
};
6078

6179
const applyTheme = async (theme: string) => {
62-
// Detect external theme if available (e.g., from theme designer or custom theme root)
6380
const extTheme = await detectExternalTheme(theme);
6481

65-
// Determine which theme to use for component packages:
66-
// 1. If the requested theme is registered, use it directly
67-
// 2. If external theme exists, use its base theme (e.g., "my_custom_theme" extends "sap_fiori_3")
68-
// 3. Otherwise, fallback to the default theme
69-
const packagesTheme = isThemeRegistered(theme) ? theme : extTheme && extTheme.baseThemeName;
70-
const effectiveTheme = packagesTheme || DEFAULT_THEME;
71-
72-
// Load base theme properties
73-
await loadThemeBase(effectiveTheme);
82+
// Only load theme_base properties if there is no externally loaded theme, or there is, but it is not being loaded
83+
if (!extTheme || theme !== extTheme.themeName) {
84+
await loadThemeBase(theme);
85+
} else {
86+
deleteThemeBase();
87+
}
7488

75-
// Load component-specific theme properties
76-
// Pass external theme name only if it matches the requested theme to avoid conflicts
77-
await loadComponentPackages(effectiveTheme, extTheme && extTheme.themeName === theme ? theme : undefined);
89+
// Always load component packages properties. For non-registered themes, try with the base theme, if any
90+
const packagesTheme = isThemeRegistered(theme) ? theme : extTheme && extTheme.baseThemeName;
91+
await loadComponentPackages(packagesTheme || DEFAULT_THEME, extTheme && extTheme.themeName === theme ? theme : undefined);
7892

7993
fireThemeLoaded(theme);
8094
};

0 commit comments

Comments
 (0)