diff --git a/.github/workflows/deploy-latest-docs.yaml b/.github/workflows/deploy-latest-docs.yaml index f82b2c55118d..edc84e021356 100644 --- a/.github/workflows/deploy-latest-docs.yaml +++ b/.github/workflows/deploy-latest-docs.yaml @@ -21,7 +21,7 @@ jobs: run: | export NODE_OPTIONS="--max_old_space_size=4096" yarn install - yarn build:playground_as_admin + yarn build:playground - name: Write version.md run: git log -1 &>> packages/playground/dist/version.md @@ -32,4 +32,4 @@ jobs: branch: gh-pages # The branch the action should deploy to. folder: packages/playground/dist # The folder the action should deploy. clean: true - clean-exclude: main + clean-exclude: nightly diff --git a/.github/workflows/deploy.yaml b/.github/workflows/deploy.yaml index bdea5eeb4836..fee0eb1a74e5 100644 --- a/.github/workflows/deploy.yaml +++ b/.github/workflows/deploy.yaml @@ -18,7 +18,7 @@ jobs: run: | export NODE_OPTIONS="--max_old_space_size=4096" yarn install - yarn build:playground:main_as_admin + yarn build:playground - name: Write version.md run: git log -1 &>> packages/playground/dist/version.md @@ -27,5 +27,5 @@ jobs: with: branch: gh-pages # The branch the action should deploy to. folder: packages/playground/dist # The folder the action should deploy. - target-folder: main + target-folder: nightly clean: true diff --git a/.github/workflows/deploy_latest.yaml b/.github/workflows/deploy_latest.yaml index 76d2ed7ec132..226a66bf22fc 100644 --- a/.github/workflows/deploy_latest.yaml +++ b/.github/workflows/deploy_latest.yaml @@ -18,7 +18,7 @@ jobs: run: | export NODE_OPTIONS="--max_old_space_size=4096" yarn install - yarn build:playground_as_admin + yarn build:playground - name: Write version.md run: git log -1 &>> packages/playground/dist/version.md @@ -29,4 +29,4 @@ jobs: branch: gh-pages # The branch the action should deploy to. folder: packages/playground/dist # The folder the action should deploy. clean: true - clean-exclude: main \ No newline at end of file + clean-exclude: nightly \ No newline at end of file diff --git a/.gitignore b/.gitignore index 81d36101ac3a..ce74f8cec775 100644 --- a/.gitignore +++ b/.gitignore @@ -85,6 +85,7 @@ packages/playground/docs/FAQ.md packages/playground/_stories/**/*/argTypes.ts packages/playground/.storybook/custom-elements.json packages/playground/docs/storybook/**/* +packages/playground/docs/storybook-pages/**/* packages/main/test/pages/fix.js packages/fiori/test/pages/fix.js diff --git a/CHANGELOG.md b/CHANGELOG.md index 7fb9469c4fdb..03772eac5866 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,85 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [1.16.0-rc.0](https://github.com/SAP/ui5-webcomponents/compare/v1.15.1...v1.16.0-rc.0) (2023-07-06) + + +### Bug Fixes + +* **playground:** playground link fixed ([#7293](https://github.com/SAP/ui5-webcomponents/issues/7293)) ([6318058](https://github.com/SAP/ui5-webcomponents/commit/63180588e66efee4a18ad488ddff5a964d716c3f)) + + +### Features + +* **ui5-progress-indicator:** accessibleName property added ([#7231](https://github.com/SAP/ui5-webcomponents/issues/7231)) ([ca66fd7](https://github.com/SAP/ui5-webcomponents/commit/ca66fd74dd88f0749f51fc94a52b10ab26e0985d)) + + + + + +## [1.15.1](https://github.com/SAP/ui5-webcomponents/compare/v1.15.0...v1.15.1) (2023-06-30) + + +### Bug Fixes + +* **framework:** fix links in starting page of new pkg [ci skip] ([475fed5](https://github.com/SAP/ui5-webcomponents/commit/475fed55504f4a15e8b26aaf3c9e4d73b55976ec)) + + + + + +# [1.15.0](https://github.com/SAP/ui5-webcomponents/compare/v1.15.0-rc.2...v1.15.0) (2023-06-30) + + +### Bug Fixes + +* fix image in `create-webcomponent-package` ([#7253](https://github.com/SAP/ui5-webcomponents/issues/7253)) ([3317e64](https://github.com/SAP/ui5-webcomponents/commit/3317e64b911f992abf34b88a48e6003a723f7b9e)) +* **framework:** fix OpenUI5Support feature usage ([#7265](https://github.com/SAP/ui5-webcomponents/issues/7265)) ([109b6ee](https://github.com/SAP/ui5-webcomponents/commit/109b6eecb3b56f07c085ed59442c2a73f31644a8)), closes [#7175](https://github.com/SAP/ui5-webcomponents/issues/7175) +* **framework:** missing CSS variables in compact mode / rtl mode ([#7189](https://github.com/SAP/ui5-webcomponents/issues/7189)) ([9b39b9c](https://github.com/SAP/ui5-webcomponents/commit/9b39b9ce5c3720dbb106c5638f858754e11a735f)) +* **ui5-button:** prevent event throw on mobile when disabled ([#7254](https://github.com/SAP/ui5-webcomponents/issues/7254)) ([337a5fa](https://github.com/SAP/ui5-webcomponents/commit/337a5fa14a6b42af5e20bbb4499ad8ffac04760d)), closes [#7249](https://github.com/SAP/ui5-webcomponents/issues/7249) +* **ui5-link:** change width to max-width ([#7233](https://github.com/SAP/ui5-webcomponents/issues/7233)) ([3be7358](https://github.com/SAP/ui5-webcomponents/commit/3be7358c6870e4305527e96f63bcaf1abb139861)) +* **ui5-range-slider:** adjust hover state visualization ([#7232](https://github.com/SAP/ui5-webcomponents/issues/7232)) ([0ee7b8e](https://github.com/SAP/ui5-webcomponents/commit/0ee7b8e56e8a112922af39335f66124c636ab618)) +* **ui5-segmented-button:** support custom width configuration ([#6969](https://github.com/SAP/ui5-webcomponents/issues/6969)) ([f448af4](https://github.com/SAP/ui5-webcomponents/commit/f448af41d12776360a5235544f7a43e9b548dec4)) +* **ui5-shellbar:** align notification counter badge ([#7208](https://github.com/SAP/ui5-webcomponents/issues/7208)) ([1ee67f5](https://github.com/SAP/ui5-webcomponents/commit/1ee67f570ac722983859690fb602c5b62498d6d5)) +* **ui5-shellbar:** overflow action text translated ([#7218](https://github.com/SAP/ui5-webcomponents/issues/7218)) ([31af59c](https://github.com/SAP/ui5-webcomponents/commit/31af59c6667149798f619cce5eba9d456c29f452)) +* **ui5-shellbar:** tweaked breakpoint size "S" responsive padding ([#7219](https://github.com/SAP/ui5-webcomponents/issues/7219)) ([af597d1](https://github.com/SAP/ui5-webcomponents/commit/af597d1bc9d3a8e1bd6e79a39eebd84e57416c70)) +* **ui5-tabcontainer:** fix height in compact ([#7280](https://github.com/SAP/ui5-webcomponents/issues/7280)) ([3c4a806](https://github.com/SAP/ui5-webcomponents/commit/3c4a8067e7763e282edfc5ea5179122b683aed21)) +* **ui5-view-settings-dialog:** fix footer buttons position ([#7270](https://github.com/SAP/ui5-webcomponents/issues/7270)) ([e569e6b](https://github.com/SAP/ui5-webcomponents/commit/e569e6b424cc186e22c5972c45d6f11c081505d5)) + + +### Features + +* **ui5-rating-indicator:** add required and accessibleNameRef properties ([#7185](https://github.com/SAP/ui5-webcomponents/issues/7185)) ([3cb09c6](https://github.com/SAP/ui5-webcomponents/commit/3cb09c690d22d2c12eba8c6aa23bc60f70b6b890)) +* **ui5-tokenizer:** truncate when having 1 token with long text ([e9a7580](https://github.com/SAP/ui5-webcomponents/commit/e9a75802205f52437380611487f456486f75705b)), closes [#5229](https://github.com/SAP/ui5-webcomponents/issues/5229) + + + + + +# [1.15.0-rc.2](https://github.com/SAP/ui5-webcomponents/compare/v1.15.0-rc.1...v1.15.0-rc.2) (2023-06-22) + + +### Bug Fixes + +* **framework:** support older OpenUI5 getThemeRoot API ([#7202](https://github.com/SAP/ui5-webcomponents/issues/7202)) ([54e615c](https://github.com/SAP/ui5-webcomponents/commit/54e615cffc047b8e1e72861a5be7d50bfcc2d6bf)), closes [#7199](https://github.com/SAP/ui5-webcomponents/issues/7199) +* **ui5-combobox:** prevent selection of multiple items ([#7223](https://github.com/SAP/ui5-webcomponents/issues/7223)) ([bb41f78](https://github.com/SAP/ui5-webcomponents/commit/bb41f78e838b6c1f601b9c06bd057c1629fc0540)) +* **ui5-combobox:** remove position announcement for group header items ([#7214](https://github.com/SAP/ui5-webcomponents/issues/7214)) ([2cc9d18](https://github.com/SAP/ui5-webcomponents/commit/2cc9d18852bd44037a7f22df9311ab34b3b8e9bd)) +* **ui5-multi-combobox:** delete value after OK button is pressed ([#7221](https://github.com/SAP/ui5-webcomponents/issues/7221)) ([26f0f79](https://github.com/SAP/ui5-webcomponents/commit/26f0f79d636facf8787f5b85b1c19467af9fa82c)) +* **ui5-multicombobox:** improve paste functionality ([#7190](https://github.com/SAP/ui5-webcomponents/issues/7190)) ([dd438be](https://github.com/SAP/ui5-webcomponents/commit/dd438becc76e925b1f90062fb063ed579c3358be)) +* **ui5-page, ui5-wizard:** apply scrollbar styling ([#7224](https://github.com/SAP/ui5-webcomponents/issues/7224)) ([09eb5be](https://github.com/SAP/ui5-webcomponents/commit/09eb5beec006eeb9787740014cefa0335e8603c9)) +* **ui5-side-navigation:** cursor is pointer for selected items ([#7229](https://github.com/SAP/ui5-webcomponents/issues/7229)) ([9292c6e](https://github.com/SAP/ui5-webcomponents/commit/9292c6e51fc49b6bc0abe6e525074173ae80e253)), closes [#7156](https://github.com/SAP/ui5-webcomponents/issues/7156) +* **ui5-wizard:** prevent throwing exception in the console ([#7204](https://github.com/SAP/ui5-webcomponents/issues/7204)) ([c684135](https://github.com/SAP/ui5-webcomponents/commit/c684135fd64b453a639b0ce29593f03ae02ceac6)) + + +### Features + +* **ui5-radio-button:** update visual design to latest Horizon spec ([#7148](https://github.com/SAP/ui5-webcomponents/issues/7148)) ([7768cec](https://github.com/SAP/ui5-webcomponents/commit/7768cecba2b09ccf85e5519d72f5b7fa186e3da0)), closes [#7001](https://github.com/SAP/ui5-webcomponents/issues/7001) +* **ui5-side-navigation:** update Horizon theme design ([#7186](https://github.com/SAP/ui5-webcomponents/issues/7186)) ([819d153](https://github.com/SAP/ui5-webcomponents/commit/819d153ba5d82c0e48a642d2ee21ccc0fb61e253)), closes [#7160](https://github.com/SAP/ui5-webcomponents/issues/7160) + + + + + # [1.15.0-rc.1](https://github.com/SAP/ui5-webcomponents/compare/v1.15.0-rc.0...v1.15.0-rc.1) (2023-06-15) diff --git a/README.md b/README.md index ae86c163b8b4..50f8ad034da4 100644 --- a/README.md +++ b/README.md @@ -20,7 +20,7 @@ - **Elegant**: being *custom HTML elements*, they hide implementation complexity behind a single HTML tag, making them easily usable with the standard DOM APIs. ## Where can I see them in action? -- [Playground and API Reference](https://sap.github.io/ui5-webcomponents/playground/components) +- [Playground and API Reference](https://sap.github.io/ui5-webcomponents/playground/) ## More Resources - [UI5 Web Components Home Page](https://sap.github.io/ui5-webcomponents) @@ -85,7 +85,7 @@ shortcomings when it comes to handling Custom Elements, namely the binding of `b ## Typescript Support Since 1.11 we are providing Typescript definitions for all public APIs. -However, the **Typescript support is experimental and subject to change**. If you consume the web components via Typescript, you might have to adjust your code before the Typescript definitions become final and officially supported. +However, the **Typescript support is experimental and subject to change**. If you consume the web components via Typescript, you might have to adjust your code before the Typescript definitions become final and officially supported. Please, share any kind of feedback about the provided types in GitHub. ### Is there a CDN I can use? diff --git a/docs/1-getting-started/06-using-features.md b/docs/1-getting-started/06-using-features.md index c739fa205ec3..3c4b30b3e74b 100644 --- a/docs/1-getting-started/06-using-features.md +++ b/docs/1-getting-started/06-using-features.md @@ -16,6 +16,8 @@ Import the feature file from the respective NPM package: `import "@ui5//dist/features/.js` +## Component features + Currently, only a few components offer additional features: | Package | Affects | Feature Import | Description | @@ -24,10 +26,7 @@ Currently, only a few components offer additional features: | `main` | `ui5-input` | `@ui5/webcomponents/dist/features/InputSuggestions.js` | Support for input suggestions while typing | | `main` | Multiple (`ui5-input`, `ui5-date-picker`, etc...) | `@ui5/webcomponents/dist/features/InputElementsFormSupport.js` | Support for using input components in forms | | `fiori` | `ui5-shellbar` | `@ui5/webcomponents-fiori/dist/features/CoPilotAnimation.js` | Support for a better (but bigger in size) animation for the "co-pilot" button in the shellbar component | -| `base` | Framework | `@ui5/webcomponents-base/dist/features/OpenUI5Support.js` | Integration with the OpenUI5 framework, allowing synchronization and resources re-use | -| `base` | Multiple components within all libraries | `@ui5/webcomponents-base/dist/features/F6Navigation.js` | Support for F6 fast groups navigation | -| `base` | Date related components | `@ui5/webcomponents-base/dist/features/LegacyDateFormats.js` | Support for legacy date formats | -| `localization` | Multiple (`ui5-date-picker`, etc...) | `@ui5/webcomponents-localization/dist/features/calendar/Buddhist.js` | Buddhist calendar support | + `localization` | Multiple (`ui5-date-picker`, etc...) | `@ui5/webcomponents-localization/dist/features/calendar/Buddhist.js` | Buddhist calendar support | | `localization` | Multiple (`ui5-date-picker`, etc...) | `@ui5/webcomponents-localization/dist/features/calendar/Islamic.js` | Islamic calendar support | | `localization` | Multiple (`ui5-date-picker`, etc...) | `@ui5/webcomponents-localization/dist/features/calendar/Japanese.js` | Japanese calendar support | | `localization` | Multiple (`ui5-date-picker`, etc...) | `@ui5/webcomponents-localization/dist/features/calendar/Persian.js` | Persian calendar support | @@ -38,4 +37,27 @@ For example: import "@ui5/webcomponents/dist/features/ColorPaletteMoreColors.js;"; ``` +## Framework features + +| Package | Affects | Feature Import | Description | +|----------------|---------------------------------------------------|----------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------| +| `base` | Framework | `@ui5/webcomponents-base/dist/features/OpenUI5Support.js` | Integration with the OpenUI5 framework, allowing synchronization and resources re-use | +| `base` | Multiple components within all libraries | `@ui5/webcomponents-base/dist/features/F6Navigation.js` | Support for F6 fast groups navigation | +| `base` | Date related components | `@ui5/webcomponents-base/dist/features/LegacyDateFormats.js` | Support for legacy date formats | +| + +Framework-level features must be imported before all components modules, +so that the feature is enabled upon framework boot, before the components' definition. + +For example: + +```js +import "@ui5/webcomponents-base/dist/features/OpenUI5Support.js"; +import "@ui5/webcomponents-base/dist/features/F6Navigation.js"; + +import "@ui5/webcomponents/dist/Button.js"; +import "@ui5/webcomponents/dist/Link.js"; +import "@ui5/webcomponents/dist/Input.js"; +``` + Next: [Typescript Support](./07-typescript-support) diff --git a/docs/2-advanced/04-OpenUI5-integration.md b/docs/2-advanced/04-OpenUI5-integration.md index ec0a320b4c87..76c9de33676f 100644 --- a/docs/2-advanced/04-OpenUI5-integration.md +++ b/docs/2-advanced/04-OpenUI5-integration.md @@ -2,12 +2,22 @@ *[OpenUI5](https://openui5.org/) is an open-source framework in the same product family as UI5 Web Components.* -To enable OpenUI5 support: +To enable OpenUI5 support, import the following module: ```js import "@ui5/webcomponents-base/dist/features/OpenUI5Support.js"; ``` +Futhermore, the module must be imported before all components import, so that the feature is enabled upon framework boot. + +```js +import "@ui5/webcomponents-base/dist/features/OpenUI5Support.js"; + +import "@ui5/webcomponents/dist/Button.js"; +import "@ui5/webcomponents/dist/Link.js"; +import "@ui5/webcomponents/dist/Input.js"; +``` + If your app uses both OpenUI5 and UI5 Web Components, UI5 Web Components can benefit from OpenUI5 configuration and resources. diff --git a/docs/2-advanced/07-accessibility.md b/docs/2-advanced/07-accessibility.md index a9a0550750b7..a86deee708f9 100644 --- a/docs/2-advanced/07-accessibility.md +++ b/docs/2-advanced/07-accessibility.md @@ -44,7 +44,7 @@ The Invisible Messaging service is designed to be used both internally in the co * `InvisibleMessageMode.Polite` - indicates that updates to the region should be presented at the next graceful opportunity such as at the end of reading the current sentence, or when the user paused typing. According to the WAI-ARIA recommendations, the live regions should be initialised empty when the page is loaded. This way screen readers remember them and start to listen for changes of their value. Thus, we recommend to instantiate Invisible Message as early as possible in the application. Then, you should specify the text, that has to be announced by the screen reader and the live region’s mode using the `announce` method. -Here is an example usage of the invisible messaging service - [Dynamic MessageStrip Generator Sample](https://sap.github.io/ui5-webcomponents/playground/components/MessageStrip/) +Here is an example usage of the invisible messaging service - [Dynamic MessageStrip Generator Sample](https://sap.github.io/ui5-webcomponents/nightly/playground/?path=/docs/main-messagestrip--docs) ### **Keyboard Handling** @@ -58,7 +58,7 @@ Support for standard keystrokes, based on the role of the component element is a Theming is an important aspect when it comes to a UI5 Web Components application. The different colors shown on the UI need to have a good contrast to each other in order to be easily distinguishable. We ensure that the requirements for color contrast are fulfilled in all themes. High Contrast White and High Contrast Black themes are also available to support people with visual impairments. -For more information regarding the available themes and how to use them, see the [Configuration](https://sap.github.io/ui5-webcomponents/playground/advanced/configuration) section. +For more information regarding the available themes and how to use them, see the [Configuration](../2-advanced/01-configuration.md) section. ## Accessibility APIs @@ -96,20 +96,20 @@ Will result in the shadow DOM as: ``` The `accessible-name` property is currently supported in: -* Popups: [Dialog](https://sap.github.io/ui5-webcomponents/playground/components/Dialog), [Popover](https://sap.github.io/ui5-webcomponents/playground/components/Popover) -* User input components (e.g. [Input](https://sap.github.io/ui5-webcomponents/playground/components/Input), [RadioButton](https://sap.github.io/ui5-webcomponents/playground/components/RadioButton)) -* [Panel](https://sap.github.io/ui5-webcomponents/playground/components/Panel) -* [Breadcrumbs](https://sap.github.io/ui5-webcomponents/playground/components/Breadcrumbs) -* [Button](https://sap.github.io/ui5-webcomponents/playground/components/Button) -* [Icon](https://sap.github.io/ui5-webcomponents/playground/components/Icon) -* [List](https://sap.github.io/ui5-webcomponents/playground/components/List) -* [CheckBox](https://sap.github.io/ui5-webcomponents/playground/components/CheckBox) -* [Rating Indicator](https://sap.github.io/ui5-webcomponents/playground/components/RatingIndicator) -* [Slider](https://sap.github.io/ui5-webcomponents/playground/components/Slider), -[Range Slider](https://sap.github.io/ui5-webcomponents/playground/components/RangeSlider) -* [Table](https://sap.github.io/ui5-webcomponents/playground/components/Table) -* [Tree](https://sap.github.io/ui5-webcomponents/playground/components/Tree) -* [Card](https://sap.github.io/ui5-webcomponents/playground/components/Card) +* Popups: [Dialog](https://sap.github.io/ui5-webcomponents/nightly/playground/?path=/docs/main-dialog--docs), [Popover](https://sap.github.io/ui5-webcomponents/nightly/playground/?path=/docs/main-popover--docs) +* User input components (e.g. [Input](https://sap.github.io/ui5-webcomponents/nightly/playground/?path=/docs/main-input--docs), [RadioButton](https://sap.github.io/ui5-webcomponents/nightly/playground/?path=/docs/main-radiobutton--docs)) +* [Panel](https://sap.github.io/ui5-webcomponents/nightly/playground/?path=/docs/main-panel--docs) +* [Breadcrumbs](https://sap.github.io/ui5-webcomponents/nightly/playground/?path=/docs/main-breadcrumbs--docs) +* [Button](https://sap.github.io/ui5-webcomponents/nightly/playground/?path=/docs/main-button--docs) +* [Icon](https://sap.github.io/ui5-webcomponents/nightly/playground/?path=/docs/main-icon--docs) +* [List](https://sap.github.io/ui5-webcomponents/nightly/playground/?path=/docs/main-list--docs) +* [CheckBox](https://sap.github.io/ui5-webcomponents/nightly/playground/?path=/docs/main-checkbox--docs) +* [Rating Indicator](https://sap.github.io/ui5-webcomponents/nightly/playground/?path=/docs/main-ratingindicator--docs) +* [Slider](https://sap.github.io/ui5-webcomponents/nightly/playground/?path=/docs/main-slider--docs), +[Range Slider](https://sap.github.io/ui5-webcomponents/nightly/playground/?path=/docs/main-rangeslider--docs) +* [Table](https://sap.github.io/ui5-webcomponents/nightly/playground/?path=/docs/main-table--docs) +* [Tree](https://sap.github.io/ui5-webcomponents/nightly/playground/?path=/docs/main-tree--docs) +* [Card](https://sap.github.io/ui5-webcomponents/nightly/playground/?path=/docs/main-card--docs) @@ -129,21 +129,21 @@ Will result in the shadow DOM as: ``` The `accessible-name-ref` property is currently supported in: -* Popups: [Dialog](https://sap.github.io/ui5-webcomponents/playground/components/Dialog), [Popover](https://sap.github.io/ui5-webcomponents/playground/components/Popover) -* User input components (e.g. [Input](https://sap.github.io/ui5-webcomponents/playground/components/Input), [RadioButton](https://sap.github.io/ui5-webcomponents/playground/components/RadioButton)) -* [Link](https://sap.github.io/ui5-webcomponents/playground/components/Link) -* [Button](https://sap.github.io/ui5-webcomponents/playground/components/Button) -* [List](https://sap.github.io/ui5-webcomponents/playground/components/List) -* [CheckBox](https://sap.github.io/ui5-webcomponents/playground/components/CheckBox) -* [Table](https://sap.github.io/ui5-webcomponents/playground/components/Table) -* [Tree](https://sap.github.io/ui5-webcomponents/playground/components/Tree) -* [Card](https://sap.github.io/ui5-webcomponents/playground/components/Card) +* Popups: [Dialog](https://sap.github.io/ui5-webcomponents/nightly/playground/?path=/docs/main-dialog--docs), [Popover](https://sap.github.io/ui5-webcomponents/nightly/playground/?path=/docs/main-popover--docs) +* User input components (e.g. [Input](https://sap.github.io/ui5-webcomponents/nightly/playground/?path=/docs/main-input--docs), [RadioButton](https://sap.github.io/ui5-webcomponents/nightly/playground/?path=/docs/main-radiobutton--docs)) +* [Link](https://sap.github.io/ui5-webcomponents/nightly/playground/?path=/docs/main-link--docs) +* [Button](https://sap.github.io/ui5-webcomponents/nightly/playground/?path=/docs/main-button--docs) +* [List](https://sap.github.io/ui5-webcomponents/nightly/playground/?path=/docs/main-list--docs) +* [CheckBox](https://sap.github.io/ui5-webcomponents/nightly/playground/?path=/docs/main-checkbox--docs) +* [Table](https://sap.github.io/ui5-webcomponents/nightly/playground/?path=/docs/main-table--docs) +* [Tree](https://sap.github.io/ui5-webcomponents/nightly/playground/?path=/docs/main-tree--docs) +* [Card](https://sap.github.io/ui5-webcomponents/nightly/playground/?path=/docs/main-card--docs) --- ### accessibilityTexts -This property accepts `object` with property values for different parts of the FlexibleColumnLayout elements. For more detailed information on every object property, read the API description in [FlexibleColumnLayout](https://sap.github.io/ui5-webcomponents/playground/components/FlexibleColumnLayout). +This property accepts `object` with property values for different parts of the FlexibleColumnLayout elements. For more detailed information on every object property, read the API description in [FlexibleColumnLayout](https://sap.github.io/ui5-webcomponents/nightly/playground/?path=/docs/main-flexiblecolumnlayout--docs). Setting the property on the custom element as: ```html @@ -169,14 +169,14 @@ Will result in the shadow DOM as: ``` The `accessibilityTexts` property is currently supported in: -* [FlexibleColumnLayout](https://sap.github.io/ui5-webcomponents/playground/components/FlexibleColumnLayout) -* [ShellBar](https://sap.github.io/ui5-webcomponents/playground/components/ShellBar) +* [FlexibleColumnLayout](https://sap.github.io/ui5-webcomponents/nightly/playground/?path=/docs/main-flexiblecolumnlayout--docs) +* [ShellBar](https://sap.github.io/ui5-webcomponents/nightly/playground/?path=/docs/main-shellbar--docs) --- ### accessibilityAttributes -This property accepts an `object` with property values, which will be used to generate additinal accessibility attributes to the root element. For more detailed information on every object property, read the API description in [Button](https://sap.github.io/ui5-webcomponents/playground/components/Button/). +This property accepts an `object` with property values, which will be used to generate additinal accessibility attributes to the root element. For more detailed information on every object property, read the API description in [Button](https://sap.github.io/ui5-webcomponents/nightly/playground/?path=/docs/main-button--docs/). Setting the property on the custom element as: ```html @@ -200,14 +200,14 @@ Will result in the shadow DOM as: ``` The `accessibilityAttributes` property is currently supported in: -* [Button](https://sap.github.io/ui5-webcomponents/playground/components/Button) -* [Link](https://sap.github.io/ui5-webcomponents/playground/components/Link) +* [Button](https://sap.github.io/ui5-webcomponents/nightly/playground/?path=/docs/main-button--docs) +* [Link](https://sap.github.io/ui5-webcomponents/nightly/playground/?path=/docs/main-link--docs) --- ### accessibilityRoles -This property accepts `object` with property values for different parts of the `FlexibleColumnLayout` elements. For more detailed information on every object property, read the API description in [FlexibleColumnLayout](https://sap.github.io/ui5-webcomponents/playground/components/FlexibleColumnLayout). +This property accepts `object` with property values for different parts of the `FlexibleColumnLayout` elements. For more detailed information on every object property, read the API description in [FlexibleColumnLayout](https://sap.github.io/ui5-webcomponents/nightly/playground/?path=/docs/main-flexiblecolumnlayout--docs). Setting the property on the custom element as: ```html @@ -229,8 +229,8 @@ Results in the shadow DOM as: ``` The `accessibilityRoles` property is currently supported in: -* [FlexibleColumnLayout](https://sap.github.io/ui5-webcomponents/playground/components/FlexibleColumnLayout) -* [ShellBar](https://sap.github.io/ui5-webcomponents/playground/components/ShellBar) +* [FlexibleColumnLayout](https://sap.github.io/ui5-webcomponents/nightly/playground/?path=/docs/main-flexiblecolumnlayout--docs) +* [ShellBar](https://sap.github.io/ui5-webcomponents/nightly/playground/?path=/docs/main-shellbar--docs) --- @@ -251,12 +251,12 @@ Will result in the shadow DOM as: ``` The `accessible-role` property is currently supported in: -* User input components (e.g. [Input](https://sap.github.io/ui5-webcomponents/playground/components/Input), [RadioButton](https://sap.github.io/ui5-webcomponents/playground/components/RadioButton)) -* [Panel](https://sap.github.io/ui5-webcomponents/playground/components/Panel) -* [List](https://sap.github.io/ui5-webcomponents/playground/components/List) -* [Icon](https://sap.github.io/ui5-webcomponents/playground/components/Icon) -* [Popover](https://sap.github.io/ui5-webcomponents/playground/components/Popover/) -* [Dialog](https://sap.github.io/ui5-webcomponents/playground/components/Dialog/) +* User input components (e.g. [Input](https://sap.github.io/ui5-webcomponents/nightly/playground/?path=/docs/main-input--docs), [RadioButton](https://sap.github.io/ui5-webcomponents/nightly/playground/?path=/docs/main-radiobutton--docs)) +* [Panel](https://sap.github.io/ui5-webcomponents/nightly/playground/?path=/docs/main-panel--docs) +* [List](https://sap.github.io/ui5-webcomponents/nightly/playground/?path=/docs/main-list--docs) +* [Icon](https://sap.github.io/ui5-webcomponents/nightly/playground/?path=/docs/main-icon--docs) +* [Popover](https://sap.github.io/ui5-webcomponents/nightly/playground/?path=/docs/main-popover--docs/) +* [Dialog](https://sap.github.io/ui5-webcomponents/nightly/playground/?path=/docs/main-dialog--docs/) --- @@ -283,10 +283,10 @@ Will result in the shadow DOM as: ``` The `level` property is currently supported in: - * [Title](https://sap.github.io/ui5-webcomponents/playground/components/Title) + * [Title](https://sap.github.io/ui5-webcomponents/nightly/playground/?path=/docs/main-title--docs) The `header-level` property is currently supported in: - * [Panel](https://sap.github.io/ui5-webcomponents/playground/components/Panel) + * [Panel](https://sap.github.io/ui5-webcomponents/nightly/playground/?path=/docs/main-panel--docs) --- @@ -303,8 +303,8 @@ Will result in the shadow DOM as: ``` The `interactive` property is currently supported in: -* [Avatar](https://sap.github.io/ui5-webcomponents/playground/components/Avatar) -* [Icon](https://sap.github.io/ui5-webcomponents/playground/components/Icon) +* [Avatar](https://sap.github.io/ui5-webcomponents/nightly/playground/?path=/docs/main-avatar--docs) +* [Icon](https://sap.github.io/ui5-webcomponents/nightly/playground/?path=/docs/main-icon--docs) --- diff --git a/docs/6-contributing/02-conventions-and-guidelines.md b/docs/6-contributing/02-conventions-and-guidelines.md index 583bd7e153da..a9427ab4008c 100644 --- a/docs/6-contributing/02-conventions-and-guidelines.md +++ b/docs/6-contributing/02-conventions-and-guidelines.md @@ -5,7 +5,7 @@ You may also find an ESLint integration for your favorite IDE [here](https://esl ## Testing Integration testing is based on [Webdriver.io](https://webdriver.io/). You can run all tests using `npm run test`. -If reasonable, take the time and write a test for the proposed change or fix. Learn more about testing at the [Testing UI5 Web Components page](https://github.com/SAP/ui5-webcomponents/blob/main/docs/5-development/05-testing-UI5-Web-Components.md). +If reasonable, take the time and write a test for the proposed change or fix. Learn more about testing at the [Testing UI5 Web Components page](../5-development/05-testing-UI5-Web-Components.md). ## Git Guidelines diff --git a/docs/FAQ.md b/docs/FAQ.md index 7e6f513733ac..ad94098613ad 100644 --- a/docs/FAQ.md +++ b/docs/FAQ.md @@ -8,7 +8,7 @@ **Q: Where is the documentation?** **A:** There are several resources: -- [Web Components APIs](https://sap.github.io/ui5-webcomponents/playground/components) +- [Web Components APIs](https://sap.github.io/ui5-webcomponents/playground/) - [How to get started?](https://blogs.sap.com/2019/04/01/the-fastest-way-to-get-started-with-ui5-web-components/) **Q: Is there a CDN to load UI5 Web Components from?** @@ -23,12 +23,12 @@ **Q: Can I create my own UI5 Web Components?** -**A:** Yes, for more information see [Creating a Custom UI5 Web Components Package](https://github.com/SAP/ui5-webcomponents/blob/main/docs/5-development/01-custom-UI5-Web-Components-Packages.md) +**A:** Yes, for more information see [Creating a Custom UI5 Web Components Package](./5-development/01-custom-UI5-Web-Components-Packages.md) **Q: How can I cancustomize UI5 Web Components' styles?** -**A:** Read the [Styling UI5 Web Components](https://github.com/SAP/ui5-webcomponents/blob/main/docs/3-customizing/01-styles.md) article. +**A:** Read the [Styling UI5 Web Components](./3-customizing/01-styles.md) article. **Q: How big is the runtime?** diff --git a/lerna.json b/lerna.json index b5715c51c475..099be4862d3e 100644 --- a/lerna.json +++ b/lerna.json @@ -12,7 +12,7 @@ "packages/playground", "packages/create-package" ], - "version": "1.15.0-rc.1", + "version": "1.16.0-rc.0", "command": { "publish": { "allowBranch": "*", diff --git a/metadata.yaml b/metadata.yaml new file mode 100644 index 000000000000..8c2df71c1b50 --- /dev/null +++ b/metadata.yaml @@ -0,0 +1,6 @@ +kind: Component +metadata: + displayName: ui5-webcomponents + description: The enterprise-flavored sugar on top of native APIs! Reference implementation of the Core Components of the SAP Design system! + tags: + - dxp-project-documentation diff --git a/package.json b/package.json index 4bb691407120..678b430d57e0 100644 --- a/package.json +++ b/package.json @@ -28,10 +28,7 @@ "lint:scope:fiori": "yarn workspace @ui5/webcomponents-fiori nps scope.lint", "bundle:main": "yarn workspace @ui5/webcomponents nps build.bundle", "bundle:fiori": "yarn workspace @ui5/webcomponents-fiori nps build.bundle", - "build:playground": "yarn build:main && yarn build:fiori && yarn copy-css && yarn workspace @ui5/webcomponents-playground build", - "build:playground:main": "yarn build:main && yarn build:fiori && yarn copy-css && yarn workspace @ui5/webcomponents-playground build:main", - "build:playground_as_admin": "yarn build && yarn copy-css && yarn workspace @ui5/webcomponents-playground build_as_admin", - "build:playground:main_as_admin": "yarn build && yarn copy-css && yarn workspace @ui5/webcomponents-playground build:main_as_admin", + "build:playground": "yarn build && yarn copy-css && yarn workspace @ui5/webcomponents-playground build", "clean": "wsrun --exclude-missing clean", "prepare:main": "yarn workspace @ui5/webcomponents nps prepare", "prepare:fiori": "yarn workspace @ui5/webcomponents-fiori nps prepare", diff --git a/packages/base/CHANGELOG.md b/packages/base/CHANGELOG.md index 58cf50d652c0..1a6657b41988 100644 --- a/packages/base/CHANGELOG.md +++ b/packages/base/CHANGELOG.md @@ -3,6 +3,36 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [1.16.0-rc.0](https://github.com/SAP/ui5-webcomponents/compare/v1.15.1...v1.16.0-rc.0) (2023-07-06) + +**Note:** Version bump only for package @ui5/webcomponents-base + + + + + +# [1.15.0](https://github.com/SAP/ui5-webcomponents/compare/v1.15.0-rc.2...v1.15.0) (2023-06-30) + + +### Bug Fixes + +* **framework:** fix OpenUI5Support feature usage ([#7265](https://github.com/SAP/ui5-webcomponents/issues/7265)) ([109b6ee](https://github.com/SAP/ui5-webcomponents/commit/109b6eecb3b56f07c085ed59442c2a73f31644a8)), closes [#7175](https://github.com/SAP/ui5-webcomponents/issues/7175) + + + + + +# [1.15.0-rc.2](https://github.com/SAP/ui5-webcomponents/compare/v1.15.0-rc.1...v1.15.0-rc.2) (2023-06-22) + + +### Bug Fixes + +* **framework:** support older OpenUI5 getThemeRoot API ([#7202](https://github.com/SAP/ui5-webcomponents/issues/7202)) ([54e615c](https://github.com/SAP/ui5-webcomponents/commit/54e615cffc047b8e1e72861a5be7d50bfcc2d6bf)), closes [#7199](https://github.com/SAP/ui5-webcomponents/issues/7199) + + + + + # [1.15.0-rc.1](https://github.com/SAP/ui5-webcomponents/compare/v1.15.0-rc.0...v1.15.0-rc.1) (2023-06-15) diff --git a/packages/base/package.json b/packages/base/package.json index 8ffc205d8c69..a01e7ee785a8 100644 --- a/packages/base/package.json +++ b/packages/base/package.json @@ -1,6 +1,6 @@ { "name": "@ui5/webcomponents-base", - "version": "1.15.0-rc.1", + "version": "1.16.0-rc.0", "description": "UI5 Web Components: webcomponents.base", "author": "SAP SE (https://www.sap.com)", "license": "Apache-2.0", @@ -37,7 +37,7 @@ "devDependencies": { "@buxlabs/amd-to-es6": "0.16.1", "@openui5/sap.ui.core": "1.112.0", - "@ui5/webcomponents-tools": "1.15.0-rc.1", + "@ui5/webcomponents-tools": "1.16.0-rc.0", "chromedriver": "113.0.0", "clean-css": "^5.2.2", "copy-and-watch": "^0.1.5", diff --git a/packages/base/src/Boot.ts b/packages/base/src/Boot.ts index ed6481398c21..afcd702bafa4 100644 --- a/packages/base/src/Boot.ts +++ b/packages/base/src/Boot.ts @@ -46,7 +46,7 @@ const boot = async (): Promise => { registerCurrentRuntime(); const openUI5Support = getFeature("OpenUI5Support"); - const isOpenUI5Loaded = openUI5Support ? openUI5Support.isLoaded() : false; + const isOpenUI5Loaded = openUI5Support ? openUI5Support.isOpenUI5Detected() : false; const f6Navigation = getFeature("F6Navigation"); if (openUI5Support) { diff --git a/packages/base/src/FontFace.ts b/packages/base/src/FontFace.ts index 50885ce3f99d..6772c581fc45 100644 --- a/packages/base/src/FontFace.ts +++ b/packages/base/src/FontFace.ts @@ -8,7 +8,7 @@ const insertFontFace = () => { const openUI5Support = getFeature("OpenUI5Support"); // Only set the main font if there is no OpenUI5 support, or there is, but OpenUI5 is not loaded - if (!openUI5Support || !openUI5Support.isLoaded()) { + if (!openUI5Support || !openUI5Support.isOpenUI5Detected()) { insertMainFontFace(); } diff --git a/packages/base/src/InitialConfiguration.ts b/packages/base/src/InitialConfiguration.ts index 2cd19a37daee..2c35118ef0ba 100644 --- a/packages/base/src/InitialConfiguration.ts +++ b/packages/base/src/InitialConfiguration.ts @@ -180,7 +180,7 @@ const applyURLParam = (key: string, value: string, paramType: string) => { const applyOpenUI5Configuration = () => { const openUI5Support = getFeature("OpenUI5Support"); - if (!openUI5Support || !openUI5Support.isLoaded()) { + if (!openUI5Support || !openUI5Support.isOpenUI5Detected()) { return; } diff --git a/packages/base/src/features/OpenUI5Support.ts b/packages/base/src/features/OpenUI5Support.ts index 8fa497d8bb5c..7e6d59c4e747 100644 --- a/packages/base/src/features/OpenUI5Support.ts +++ b/packages/base/src/features/OpenUI5Support.ts @@ -11,7 +11,8 @@ type OpenUI5Popup = { type OpenUI5Core = { attachInit: (callback: () => void) => void, - attachThemeChanged: (callback: () => Promise) => void, + ready: () => Promise, + attachThemeChanged: (callback: () => void) => void, getConfiguration: () => OpenUI5CoreConfiguration, }; @@ -29,12 +30,36 @@ type OpenUI5CoreConfiguration = { } }; +type ControlBehavior = { + getAnimationMode: () => string, +} + +type Localization = { + getLanguage: () => string, + getLanguageTag: () => string, + getRTL: () => string, + getTimezone: () => string, +} + type LocaleData = { getInstance: (locale: string) => Locale, } -type CoreTheming = { - getThemeRoot: () => string, +type Theming = { + getThemeRoot: () => string, + getTheme: () => string, + attachApplied: (callback: () => void) => void, +} + +type Formatting = { + getCalendarType: () => string, + getLegacyDateCalendarCustomizing: () => LegacyDateCalendarCustomizing, +} + +type CalendarUtils = { + getWeekConfigurationValues: () => { + firstDayOfWeek: number | undefined, + }, } type Locale = { @@ -42,59 +67,90 @@ type Locale = { _get: () => CLDRData, }; -type VersionUtil = (version: string) => { - compareTo: (version: string) => number, -}; - -const getCore = () => { - return window.sap?.ui?.getCore?.() as OpenUI5Core; -}; - class OpenUI5Support { - static isLoaded() { - return !!getCore(); + static isAtLeastVersion116() { + const version = window.sap.ui!.version as string; + const parts = version.split("."); + if (!parts || parts.length < 2) { + return false; + } + return parseInt(parts[0]) > 1 || parseInt(parts[1]) >= 116; + } + + static isOpenUI5Detected() { + return typeof window.sap?.ui?.require === "function"; } static init() { - const core = getCore(); - if (!core) { + if (!OpenUI5Support.isOpenUI5Detected()) { return Promise.resolve(); } return new Promise(resolve => { - const deps: Array = ["sap/ui/core/Popup", "sap/ui/core/LocaleData"]; - const version: string = window.sap.ui.version || ""; - - window.sap.ui.require(["sap/base/util/Version"], (VersionUtil: VersionUtil) => { - if (VersionUtil(version).compareTo("1.116.0") >= 0) { // for versions since 1.116.0 and onward, use the Theming module - deps.push("sap/ui/core/Theming"); - } - - core.attachInit(() => { + window.sap.ui.require(["sap/ui/core/Core"], async (Core: OpenUI5Core) => { + const callback = () => { + let deps: Array = ["sap/ui/core/Popup", "sap/ui/core/LocaleData"]; + if (OpenUI5Support.isAtLeastVersion116()) { // for versions since 1.116.0 and onward, use the modular core + deps = [ + ...deps, + "sap/base/i18n/Formatting", + "sap/base/i18n/Localization", + "sap/ui/core/ControlBehavior", + "sap/ui/core/Theming", + "sap/ui/core/date/CalendarUtils", + ]; + } window.sap.ui.require(deps, (Popup: OpenUI5Popup) => { Popup.setInitialZIndex(getCurrentZIndex()); resolve(); }); - }); + }; + if (OpenUI5Support.isAtLeastVersion116()) { + await Core.ready(); + callback(); + } else { + Core.attachInit(callback); + } }); }); } static getConfigurationSettingsObject() { - const core = getCore(); - if (!core) { - return; + if (!OpenUI5Support.isOpenUI5Detected()) { + return {}; } - const config = core.getConfiguration(); - const LocaleData = window.sap.ui.require("sap/ui/core/LocaleData"); - const Theming: CoreTheming = window.sap.ui.require("sap/ui/core/Theming"); + if (OpenUI5Support.isAtLeastVersion116()) { + const ControlBehavior = window.sap.ui.require("sap/ui/core/ControlBehavior") as ControlBehavior; + const Localization = window.sap.ui.require("sap/base/i18n/Localization") as Localization; + const Theming = window.sap.ui.require("sap/ui/core/Theming") as Theming; + const Formatting = window.sap.ui.require("sap/base/i18n/Formatting") as Formatting; + const CalendarUtils = window.sap.ui.require("sap/ui/core/date/CalendarUtils") as CalendarUtils; + + return { + animationMode: ControlBehavior.getAnimationMode(), + language: Localization.getLanguage(), + theme: Theming.getTheme(), + themeRoot: Theming.getThemeRoot(), + rtl: Localization.getRTL(), + timezone: Localization.getTimezone(), + calendarType: Formatting.getCalendarType(), + formatSettings: { + firstDayOfWeek: CalendarUtils.getWeekConfigurationValues().firstDayOfWeek, + legacyDateCalendarCustomizing: Formatting.getLegacyDateCalendarCustomizing(), + }, + }; + } + + const Core = window.sap.ui.require("sap/ui/core/Core") as OpenUI5Core; + const config = Core.getConfiguration(); + const LocaleData = window.sap.ui.require("sap/ui/core/LocaleData") as LocaleData; return { animationMode: config.getAnimationMode(), language: config.getLanguage(), theme: config.getTheme(), - themeRoot: config.getThemeRoot ? config.getThemeRoot() : Theming.getThemeRoot(), // Theming is the newer API, but not released yet (available on nightly snapshot). Remove "config.getThemeRoot" after Theming is released. + themeRoot: config.getThemeRoot(), rtl: config.getRTL(), timezone: config.getTimezone(), calendarType: config.getCalendarType(), @@ -106,27 +162,39 @@ class OpenUI5Support { } static getLocaleDataObject() { - const core = getCore(); - if (!core) { + if (!OpenUI5Support.isOpenUI5Detected()) { return; } - const config = core.getConfiguration(); const LocaleData = window.sap.ui.require("sap/ui/core/LocaleData") as LocaleData; + + if (OpenUI5Support.isAtLeastVersion116()) { + const Localization = window.sap.ui.require("sap/base/i18n/Localization") as Localization; + return LocaleData.getInstance(Localization.getLanguageTag())._get(); + } + + const Core = window.sap.ui.require("sap/ui/core/Core") as OpenUI5Core; + const config = Core.getConfiguration(); return LocaleData.getInstance(config.getLocale())._get(); } static _listenForThemeChange() { - const core = getCore(); - const config = core.getConfiguration(); - core.attachThemeChanged(async () => { - await setTheme(config.getTheme()); - }); + if (OpenUI5Support.isAtLeastVersion116()) { + const Theming: Theming = window.sap.ui.require("sap/ui/core/Theming"); + Theming.attachApplied(() => { + setTheme(Theming.getTheme()); + }); + } else { + const Core = window.sap.ui.require("sap/ui/core/Core") as OpenUI5Core; + const config = Core.getConfiguration(); + Core.attachThemeChanged(() => { + setTheme(config.getTheme()); + }); + } } static attachListeners() { - const core = getCore(); - if (!core) { + if (!OpenUI5Support.isOpenUI5Detected()) { return; } @@ -134,32 +202,34 @@ class OpenUI5Support { } static cssVariablesLoaded() { - const core = getCore(); - if (!core) { + if (!OpenUI5Support.isOpenUI5Detected()) { return; } const link = [...document.head.children].find(el => el.id === "sap-ui-theme-sap.ui.core") as HTMLLinkElement; // more reliable than querySelector early if (!link) { - return; + return false; } return !!link.href.match(/\/css(-|_)variables\.css/); } static getNextZIndex() { - const core = getCore(); - if (!core) { + if (!OpenUI5Support.isOpenUI5Detected()) { return; } const Popup = window.sap.ui.require("sap/ui/core/Popup") as OpenUI5Popup; + + if (!Popup) { + console.warn(`The OpenUI5Support feature hasn't been initialized properly. Make sure you import the "@ui5/webcomponents-base/dist/features/OpenUI5Support.js" module before all components' modules.`); // eslint-disable-line + } + return Popup.getNextZIndex(); } static setInitialZIndex() { - const core = getCore(); - if (!core) { + if (!OpenUI5Support.isOpenUI5Detected()) { return; } diff --git a/packages/base/src/theming/applyTheme.ts b/packages/base/src/theming/applyTheme.ts index 624f230791c9..e42f398a3fb6 100644 --- a/packages/base/src/theming/applyTheme.ts +++ b/packages/base/src/theming/applyTheme.ts @@ -4,7 +4,7 @@ import getThemeDesignerTheme from "./getThemeDesignerTheme.js"; import { fireThemeLoaded } from "./ThemeLoaded.js"; import { getFeature } from "../FeaturesRegistry.js"; import { attachCustomThemeStylesToHead, getThemeRoot } from "../config/ThemeRoot.js"; -import type OpenUI5Support from "../features/OpenUI5Support.js"; +import OpenUI5Support from "../features/OpenUI5Support.js"; import { DEFAULT_THEME } from "../generated/AssetParameters.js"; import { getCurrentRuntimeIndex } from "../Runtimes.js"; @@ -56,7 +56,7 @@ const detectExternalTheme = async (theme: string) => { // If OpenUI5Support is enabled, try to find out if it loaded variables const openUI5Support = getFeature("OpenUI5Support"); - if (openUI5Support) { + if (openUI5Support && OpenUI5Support.isOpenUI5Detected()) { const varsLoaded = openUI5Support.cssVariablesLoaded(); if (varsLoaded) { return { diff --git a/packages/base/src/util/PopupUtils.ts b/packages/base/src/util/PopupUtils.ts index dccc90438e9e..3e18f1706352 100644 --- a/packages/base/src/util/PopupUtils.ts +++ b/packages/base/src/util/PopupUtils.ts @@ -90,7 +90,7 @@ const getClosedPopupParent = (el: HTMLElement): HTMLElement => { const getNextZIndex = () => { const openUI5Support = getFeature("OpenUI5Support"); - if (openUI5Support && openUI5Support.isLoaded()) { // use OpenUI5 for getting z-index values, if loaded + if (openUI5Support && openUI5Support.isOpenUI5Detected()) { // use OpenUI5 for getting z-index values, if loaded return openUI5Support.getNextZIndex(); } diff --git a/packages/create-package/CHANGELOG.md b/packages/create-package/CHANGELOG.md index 1fb5e53fb975..e86c8948de1a 100644 --- a/packages/create-package/CHANGELOG.md +++ b/packages/create-package/CHANGELOG.md @@ -3,6 +3,44 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [1.16.0-rc.0](https://github.com/SAP/ui5-webcomponents/compare/v1.15.1...v1.16.0-rc.0) (2023-07-06) + +**Note:** Version bump only for package @ui5/create-webcomponents-package + + + + + +## [1.15.1](https://github.com/SAP/ui5-webcomponents/compare/v1.15.0...v1.15.1) (2023-06-30) + + +### Bug Fixes + +* **framework:** fix links in starting page of new pkg [ci skip] ([475fed5](https://github.com/SAP/ui5-webcomponents/commit/475fed55504f4a15e8b26aaf3c9e4d73b55976ec)) + + + + + +# [1.15.0](https://github.com/SAP/ui5-webcomponents/compare/v1.15.0-rc.2...v1.15.0) (2023-06-30) + + +### Bug Fixes + +* fix image in `create-webcomponent-package` ([#7253](https://github.com/SAP/ui5-webcomponents/issues/7253)) ([3317e64](https://github.com/SAP/ui5-webcomponents/commit/3317e64b911f992abf34b88a48e6003a723f7b9e)) + + + + + +# [1.15.0-rc.2](https://github.com/SAP/ui5-webcomponents/compare/v1.15.0-rc.1...v1.15.0-rc.2) (2023-06-22) + +**Note:** Version bump only for package @ui5/create-webcomponents-package + + + + + # [1.15.0-rc.1](https://github.com/SAP/ui5-webcomponents/compare/v1.15.0-rc.0...v1.15.0-rc.1) (2023-06-15) **Note:** Version bump only for package @ui5/create-webcomponents-package diff --git a/packages/create-package/package.json b/packages/create-package/package.json index 3bd5a4fc03b9..f5c90a8ae7a0 100644 --- a/packages/create-package/package.json +++ b/packages/create-package/package.json @@ -1,6 +1,6 @@ { "name": "@ui5/create-webcomponents-package", - "version": "1.15.0-rc.1", + "version": "1.16.0-rc.0", "description": "UI5 Web Components: create package", "author": "SAP SE (https://www.sap.com)", "license": "Apache-2.0", diff --git a/packages/create-package/template/src/MyFirstComponent.ts b/packages/create-package/template/src/MyFirstComponent.ts index 2d8ac815fba4..0a445f6acb5e 100644 --- a/packages/create-package/template/src/MyFirstComponent.ts +++ b/packages/create-package/template/src/MyFirstComponent.ts @@ -42,7 +42,7 @@ class INIT_PACKAGE_VAR_CLASS_NAME extends UI5Element { /** * Defines the component count. - * @name NIT_PACKAGE_VAR_NAMESPACE.INIT_PACKAGE_VAR_CLASS_NAME.prototype.count + * @name INIT_PACKAGE_VAR_NAMESPACE.INIT_PACKAGE_VAR_CLASS_NAME.prototype.count * @public * @type { sap.ui.webc.base.types.Integer } */ diff --git a/packages/create-package/template/test/pages/css/index.css b/packages/create-package/template/test/pages/css/index.css index 3596991f29bb..aef3b826f7b5 100644 --- a/packages/create-package/template/test/pages/css/index.css +++ b/packages/create-package/template/test/pages/css/index.css @@ -15,7 +15,7 @@ h2 { margin-bottom: 0.5rem; } -.app, .app-settings, .app-docs { +.app, .app-settings, .app-docs, .app-first-component { display: flex; align-items: center; justify-content: center; @@ -34,3 +34,12 @@ a { margin: 0.25rem; color: var(--sapLinkColor); } + +.logo-link { + display: block; + width: 250px; + height: 250px; + background-size: 250px 250px; + background-repeat: no-repeat; + background-image: url("data:image/jpeg;base64,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"); +} diff --git a/packages/create-package/template/test/pages/index.html b/packages/create-package/template/test/pages/index.html index 22c2eae47b33..9692e009859a 100644 --- a/packages/create-package/template/test/pages/index.html +++ b/packages/create-package/template/test/pages/index.html @@ -14,21 +14,21 @@ "language": "EN" } - +
- logo +

Hooray! It's Your First Web Component!

<INIT_PACKAGE_VAR_TAG></INIT_PACKAGE_VAR_TAG> 
- +

Switch themes

@@ -38,7 +38,7 @@

Switch themes

Horizon High Contrast Black Horizon High Contrast White
- +

Switch language

English @@ -50,7 +50,7 @@

Switch language

diff --git a/packages/fiori/CHANGELOG.md b/packages/fiori/CHANGELOG.md index bd63056bccb0..777711288813 100644 --- a/packages/fiori/CHANGELOG.md +++ b/packages/fiori/CHANGELOG.md @@ -3,6 +3,45 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [1.16.0-rc.0](https://github.com/SAP/ui5-webcomponents/compare/v1.15.1...v1.16.0-rc.0) (2023-07-06) + +**Note:** Version bump only for package @ui5/webcomponents-fiori + + + + + +# [1.15.0](https://github.com/SAP/ui5-webcomponents/compare/v1.15.0-rc.2...v1.15.0) (2023-06-30) + + +### Bug Fixes + +* **ui5-shellbar:** align notification counter badge ([#7208](https://github.com/SAP/ui5-webcomponents/issues/7208)) ([1ee67f5](https://github.com/SAP/ui5-webcomponents/commit/1ee67f570ac722983859690fb602c5b62498d6d5)) +* **ui5-shellbar:** overflow action text translated ([#7218](https://github.com/SAP/ui5-webcomponents/issues/7218)) ([31af59c](https://github.com/SAP/ui5-webcomponents/commit/31af59c6667149798f619cce5eba9d456c29f452)) +* **ui5-shellbar:** tweaked breakpoint size "S" responsive padding ([#7219](https://github.com/SAP/ui5-webcomponents/issues/7219)) ([af597d1](https://github.com/SAP/ui5-webcomponents/commit/af597d1bc9d3a8e1bd6e79a39eebd84e57416c70)) +* **ui5-view-settings-dialog:** fix footer buttons position ([#7270](https://github.com/SAP/ui5-webcomponents/issues/7270)) ([e569e6b](https://github.com/SAP/ui5-webcomponents/commit/e569e6b424cc186e22c5972c45d6f11c081505d5)) + + + + + +# [1.15.0-rc.2](https://github.com/SAP/ui5-webcomponents/compare/v1.15.0-rc.1...v1.15.0-rc.2) (2023-06-22) + + +### Bug Fixes + +* **ui5-page, ui5-wizard:** apply scrollbar styling ([#7224](https://github.com/SAP/ui5-webcomponents/issues/7224)) ([09eb5be](https://github.com/SAP/ui5-webcomponents/commit/09eb5beec006eeb9787740014cefa0335e8603c9)) +* **ui5-wizard:** prevent throwing exception in the console ([#7204](https://github.com/SAP/ui5-webcomponents/issues/7204)) ([c684135](https://github.com/SAP/ui5-webcomponents/commit/c684135fd64b453a639b0ce29593f03ae02ceac6)) + + +### Features + +* **ui5-side-navigation:** update Horizon theme design ([#7186](https://github.com/SAP/ui5-webcomponents/issues/7186)) ([819d153](https://github.com/SAP/ui5-webcomponents/commit/819d153ba5d82c0e48a642d2ee21ccc0fb61e253)), closes [#7160](https://github.com/SAP/ui5-webcomponents/issues/7160) + + + + + # [1.15.0-rc.1](https://github.com/SAP/ui5-webcomponents/compare/v1.15.0-rc.0...v1.15.0-rc.1) (2023-06-15) **Note:** Version bump only for package @ui5/webcomponents-fiori diff --git a/packages/fiori/package.json b/packages/fiori/package.json index 3a3f8a25cacd..999bab01dabf 100644 --- a/packages/fiori/package.json +++ b/packages/fiori/package.json @@ -1,6 +1,6 @@ { "name": "@ui5/webcomponents-fiori", - "version": "1.15.0-rc.1", + "version": "1.16.0-rc.0", "description": "UI5 Web Components: webcomponents.fiori", "ui5": { "webComponentsPackage": true @@ -41,14 +41,14 @@ "directory": "packages/fiori" }, "dependencies": { - "@ui5/webcomponents": "1.15.0-rc.1", - "@ui5/webcomponents-base": "1.15.0-rc.1", - "@ui5/webcomponents-icons": "1.15.0-rc.1", - "@ui5/webcomponents-theming": "1.15.0-rc.1", + "@ui5/webcomponents": "1.16.0-rc.0", + "@ui5/webcomponents-base": "1.16.0-rc.0", + "@ui5/webcomponents-icons": "1.16.0-rc.0", + "@ui5/webcomponents-theming": "1.16.0-rc.0", "@zxing/library": "^0.17.1" }, "devDependencies": { - "@ui5/webcomponents-tools": "1.15.0-rc.1", + "@ui5/webcomponents-tools": "1.16.0-rc.0", "chromedriver": "113.0.0" } } diff --git a/packages/fiori/src/ShellBar.ts b/packages/fiori/src/ShellBar.ts index 9eb11ed6cf72..97bd0defd60a 100644 --- a/packages/fiori/src/ShellBar.ts +++ b/packages/fiori/src/ShellBar.ts @@ -719,7 +719,7 @@ class ShellBar extends UI5Element { const width = this.getBoundingClientRect().width; const breakpoints = ShellBar.FIORI_3_BREAKPOINTS; - const size = breakpoints.find(bp1 => width < bp1) || ShellBar.FIORI_3_BREAKPOINTS[ShellBar.FIORI_3_BREAKPOINTS.length - 1]; + const size = breakpoints.find(bp1 => width <= bp1) || ShellBar.FIORI_3_BREAKPOINTS[ShellBar.FIORI_3_BREAKPOINTS.length - 1]; const mappedSize = ShellBar.FIORI_3_BREAKPOINTS_MAP[size]; if (this.breakpointSize !== mappedSize) { @@ -987,7 +987,7 @@ class ShellBar extends UI5Element { const items: Array = [ { icon: "search", - text: "Search", + text: this._searchText, classes: `${this.searchField.length ? "" : "ui5-shellbar-invisible-button"} ui5-shellbar-search-button ui5-shellbar-button`, priority: 4, domOrder: this.searchField.length ? (++domOrder) : -1, @@ -1021,7 +1021,7 @@ class ShellBar extends UI5Element { }), { icon: "bell", - text: "Notifications", + text: this._notificationsText, classes: `${this.showNotifications ? "" : "ui5-shellbar-invisible-button"} ui5-shellbar-bell-button ui5-shellbar-button`, priority: 3, styles: { @@ -1061,7 +1061,7 @@ class ShellBar extends UI5Element { }, { icon: "grid", - text: "Product Switch", + text: this._productsText, classes: `${this.showProductSwitch ? "" : "ui5-shellbar-invisible-button"} ui5-shellbar-button ui5-shellbar-button-product-switch`, priority: 2, styles: { diff --git a/packages/fiori/src/ViewSettingsDialog.ts b/packages/fiori/src/ViewSettingsDialog.ts index a1e9f0d1efa5..f2e2a791f97f 100644 --- a/packages/fiori/src/ViewSettingsDialog.ts +++ b/packages/fiori/src/ViewSettingsDialog.ts @@ -691,12 +691,21 @@ class ViewSettingsDialog extends UI5Element { /** * Sets a JavaScript object, as settings to the ui5-view-settings-dialog. - * This method can be used after the dialog is initially open, as the dialog need to set its initial settings. - * The ui5-view-settings-dialog throws an event called "before-open", this can be used as trigger point. - * The object should have the following format: - * - * {sortOrder: "Ascending", sortBy: "Name", filters: [{"Filter 1": ["Some filter 1", "Some filter 2"]}, {"Filter 2": ["Some filter 4"]}]} - * + * This method can be used after the dialog is initially open, as the dialog needs + * to set its initial settings.
+ * The ui5-view-settings-dialog throws an event called "before-open", + * which can be used as a trigger point.
+ * The object should have the following format:
+ *
+	 * {
+	 *	sortOrder: "Ascending",
+	 *	sortBy: "Name",
+	 *	filters: [
+	 *		{"Filter 1": ["Some filter 1", "Some filter 2"]},
+	 *		{"Filter 2": ["Some filter 4"]},
+	 *	]
+	 * }
+	 * 
* @param {Object} settings - predefined settings. * @param {string} settings.sortOrder - sort order * @param {string} settings.sortBy - sort by diff --git a/packages/fiori/src/themes/ShellBar.css b/packages/fiori/src/themes/ShellBar.css index 5ac4a5ea1c57..8a594a873cab 100644 --- a/packages/fiori/src/themes/ShellBar.css +++ b/packages/fiori/src/themes/ShellBar.css @@ -250,8 +250,8 @@ slot[name="profile"] { justify-content: flex-start; margin-inline-end: 0.5rem; max-width: 75%; - flex-shrink: 1; - flex-grow: 1; + flex-shrink: 0; + flex-grow: 0; } .ui5-shellbar-overflow-container-left > :nth-child(n) { @@ -263,6 +263,9 @@ slot[name="profile"] { max-width: calc(50% - 1.5rem); } +:host([show-co-pilot]) .ui5-shellbar-title { + flex-grow: 0; +} .ui5-shellbar-menu-button { white-space: nowrap; @@ -303,7 +306,7 @@ slot[name="profile"] { } :host(:not([show-search-field])) .ui5-shellbar-overflow-container-right { - margin-inline-start: 8rem; + padding-inline-start: 8rem; } .ui5-shellbar-overflow-container-right .ui5-shellbar-overflow-container-right-child { @@ -313,6 +316,10 @@ slot[name="profile"] { align-items: center; } +.ui5-shellbar-overflow-container-right-child .ui5-shellbar-button[data-count]:has(+ .ui5-shellbar-overflow-button)::before { + inset-inline-end: var(--_ui5-shellbar-notification-btn-count-offset); +} + .ui5-shellbar-overflow-button { display: none; } @@ -326,7 +333,7 @@ slot[name="profile"] { } :host([breakpoint-size="S"]) .ui5-shellbar-overflow-container-right { - margin-inline-start: 0; + padding-inline-start: 0; } .ui5-shellbar-overflow-button-shown { @@ -345,11 +352,11 @@ slot[name="profile"] { } :host([breakpoint-size="L"]) .ui5-shellbar-with-searchfield .ui5-shellbar-overflow-container-right { - margin-inline-start: 1rem; + padding-inline-start: 1rem; } :host([breakpoint-size="XL"]) .ui5-shellbar-with-searchfield .ui5-shellbar-overflow-container-right { - margin-inline-start: 1rem; + padding-inline-start: 1rem; } :host(:not([notifications-count])) .ui5-shellbar-bell-button { diff --git a/packages/fiori/src/themes/ViewSettingsDialog.css b/packages/fiori/src/themes/ViewSettingsDialog.css index 713cd1a85fd3..985ccdc4d9f7 100644 --- a/packages/fiori/src/themes/ViewSettingsDialog.css +++ b/packages/fiori/src/themes/ViewSettingsDialog.css @@ -51,11 +51,12 @@ width: 100%; display: flex; justify-content: flex-end; + align-items: center; margin: 0.1875rem 0; } .ui5-vsd-footer [ui5-button]:first-child { - margin-right: 0.5rem; + margin-inline-end: 0.5rem; min-width: 4rem; } @@ -71,7 +72,7 @@ [ui5-dialog]::part(content) { padding-top: 0; padding-bottom: 0; - padding-right: 0; + padding-inline-end: 0; } :host [ui5-li]::part(native-li) { diff --git a/packages/fiori/test/specs/ShellBar.spec.js b/packages/fiori/test/specs/ShellBar.spec.js index 1cc2d5aad3ee..c99bf665944e 100644 --- a/packages/fiori/test/specs/ShellBar.spec.js +++ b/packages/fiori/test/specs/ShellBar.spec.js @@ -414,7 +414,7 @@ describe("Component Behavior", () => { it("tests if searchfield toggles when altering the showSearchField property", async () => { const searchField = await browser.$("#shellbar").shadow$(".ui5-shellbar-search-field"); const shellBar = await browser.$("#shellbar"); - + assert.strictEqual(await searchField.isDisplayed(), false, "Search is hidden by default"); await shellBar.setProperty('showSearchField', true); @@ -515,13 +515,40 @@ describe("Component Behavior", () => { it("tests if searchfield toggles when altering the showSearchField property", async () => { const searchField = await browser.$("#shellbar").shadow$(".ui5-shellbar-search-full-width-wrapper"); const shellBar = await browser.$("#shellbar"); - + assert.notOk(await searchField.isDisplayed(), "Search is hidden by default"); await shellBar.setProperty('showSearchField', true); assert.ok(await searchField.isDisplayed(), "Search is visible after altering the showSearchField property of the ShellBar"); await shellBar.setProperty('showSearchField', false); // Clean Up }); + + it("Shows translated label for predefined buttons, as button text when in Overflow Popover", async () => { + const shellBar = await browser.$("#shellbar"); + const overflowButton = await shellBar.shadow$(".ui5-shellbar-overflow-button"); + let psButtonText; + + await browser.executeAsync(function(done) { + window['sap-ui-webcomponents-bundle'].configuration.setLanguage("de_DE"); + done(); + }); + await browser.setWindowSize(500, 1080); + + overflowButton.click(); + const popover = await getOverflowPopover("shellbar"); + const items = await popover.$$("ui5-li"); + + psButtonText = await [...items][4].getText(); + + assert.strictEqual(psButtonText, await shellBar.getProperty("_productsText"), "Product switch button text is translated in overflow popover"); + + await browser.setWindowSize(500, 1080); + await browser.executeAsync(function(done) { + window['sap-ui-webcomponents-bundle'].configuration.setLanguage("en_EN"); + done(); + }); + + }); }); }); }); diff --git a/packages/icons-business-suite/CHANGELOG.md b/packages/icons-business-suite/CHANGELOG.md index 0e2bdfa6df7c..c910283012f8 100644 --- a/packages/icons-business-suite/CHANGELOG.md +++ b/packages/icons-business-suite/CHANGELOG.md @@ -3,6 +3,30 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [1.16.0-rc.0](https://github.com/SAP/ui5-webcomponents/compare/v1.15.1...v1.16.0-rc.0) (2023-07-06) + +**Note:** Version bump only for package @ui5/webcomponents-icons-business-suite + + + + + +# [1.15.0](https://github.com/SAP/ui5-webcomponents/compare/v1.15.0-rc.2...v1.15.0) (2023-06-30) + +**Note:** Version bump only for package @ui5/webcomponents-icons-business-suite + + + + + +# [1.15.0-rc.2](https://github.com/SAP/ui5-webcomponents/compare/v1.15.0-rc.1...v1.15.0-rc.2) (2023-06-22) + +**Note:** Version bump only for package @ui5/webcomponents-icons-business-suite + + + + + # [1.15.0-rc.1](https://github.com/SAP/ui5-webcomponents/compare/v1.15.0-rc.0...v1.15.0-rc.1) (2023-06-15) **Note:** Version bump only for package @ui5/webcomponents-icons-business-suite diff --git a/packages/icons-business-suite/package.json b/packages/icons-business-suite/package.json index 51bdebb5af80..26cf625ce0cb 100644 --- a/packages/icons-business-suite/package.json +++ b/packages/icons-business-suite/package.json @@ -1,6 +1,6 @@ { "name": "@ui5/webcomponents-icons-business-suite", - "version": "1.15.0-rc.1", + "version": "1.16.0-rc.0", "description": "UI5 Web Components: SAP Fiori Tools icon set", "author": "SAP SE (https://www.sap.com)", "license": "Apache-2.0", @@ -27,9 +27,9 @@ "directory": "packages/icons-business-suite" }, "dependencies": { - "@ui5/webcomponents-base": "1.15.0-rc.1" + "@ui5/webcomponents-base": "1.16.0-rc.0" }, "devDependencies": { - "@ui5/webcomponents-tools": "1.15.0-rc.1" + "@ui5/webcomponents-tools": "1.16.0-rc.0" } } diff --git a/packages/icons-tnt/CHANGELOG.md b/packages/icons-tnt/CHANGELOG.md index 48b259a9ba85..326dc29e8d78 100644 --- a/packages/icons-tnt/CHANGELOG.md +++ b/packages/icons-tnt/CHANGELOG.md @@ -3,6 +3,30 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [1.16.0-rc.0](https://github.com/SAP/ui5-webcomponents/compare/v1.15.1...v1.16.0-rc.0) (2023-07-06) + +**Note:** Version bump only for package @ui5/webcomponents-icons-tnt + + + + + +# [1.15.0](https://github.com/SAP/ui5-webcomponents/compare/v1.15.0-rc.2...v1.15.0) (2023-06-30) + +**Note:** Version bump only for package @ui5/webcomponents-icons-tnt + + + + + +# [1.15.0-rc.2](https://github.com/SAP/ui5-webcomponents/compare/v1.15.0-rc.1...v1.15.0-rc.2) (2023-06-22) + +**Note:** Version bump only for package @ui5/webcomponents-icons-tnt + + + + + # [1.15.0-rc.1](https://github.com/SAP/ui5-webcomponents/compare/v1.15.0-rc.0...v1.15.0-rc.1) (2023-06-15) **Note:** Version bump only for package @ui5/webcomponents-icons-tnt diff --git a/packages/icons-tnt/package.json b/packages/icons-tnt/package.json index eaa75f1ae72b..9e87120cac27 100644 --- a/packages/icons-tnt/package.json +++ b/packages/icons-tnt/package.json @@ -1,6 +1,6 @@ { "name": "@ui5/webcomponents-icons-tnt", - "version": "1.15.0-rc.1", + "version": "1.16.0-rc.0", "description": "UI5 Web Components: SAP Fiori Tools icon set", "author": "SAP SE (https://www.sap.com)", "license": "Apache-2.0", @@ -27,9 +27,9 @@ "directory": "packages/icons-tnt" }, "dependencies": { - "@ui5/webcomponents-base": "1.15.0-rc.1" + "@ui5/webcomponents-base": "1.16.0-rc.0" }, "devDependencies": { - "@ui5/webcomponents-tools": "1.15.0-rc.1" + "@ui5/webcomponents-tools": "1.16.0-rc.0" } } diff --git a/packages/icons/CHANGELOG.md b/packages/icons/CHANGELOG.md index 710e663689c9..3e4b5a75ad65 100644 --- a/packages/icons/CHANGELOG.md +++ b/packages/icons/CHANGELOG.md @@ -3,6 +3,30 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [1.16.0-rc.0](https://github.com/SAP/ui5-webcomponents/compare/v1.15.1...v1.16.0-rc.0) (2023-07-06) + +**Note:** Version bump only for package @ui5/webcomponents-icons + + + + + +# [1.15.0](https://github.com/SAP/ui5-webcomponents/compare/v1.15.0-rc.2...v1.15.0) (2023-06-30) + +**Note:** Version bump only for package @ui5/webcomponents-icons + + + + + +# [1.15.0-rc.2](https://github.com/SAP/ui5-webcomponents/compare/v1.15.0-rc.1...v1.15.0-rc.2) (2023-06-22) + +**Note:** Version bump only for package @ui5/webcomponents-icons + + + + + # [1.15.0-rc.1](https://github.com/SAP/ui5-webcomponents/compare/v1.15.0-rc.0...v1.15.0-rc.1) (2023-06-15) **Note:** Version bump only for package @ui5/webcomponents-icons diff --git a/packages/icons/package.json b/packages/icons/package.json index 1bbe2b0589ef..41481cd94535 100644 --- a/packages/icons/package.json +++ b/packages/icons/package.json @@ -1,6 +1,6 @@ { "name": "@ui5/webcomponents-icons", - "version": "1.15.0-rc.1", + "version": "1.16.0-rc.0", "description": "UI5 Web Components: webcomponents.SAP-icons", "author": "SAP SE (https://www.sap.com)", "license": "Apache-2.0", @@ -27,9 +27,9 @@ "directory": "packages/icons" }, "dependencies": { - "@ui5/webcomponents-base": "1.15.0-rc.1" + "@ui5/webcomponents-base": "1.16.0-rc.0" }, "devDependencies": { - "@ui5/webcomponents-tools": "1.15.0-rc.1" + "@ui5/webcomponents-tools": "1.16.0-rc.0" } } diff --git a/packages/localization/CHANGELOG.md b/packages/localization/CHANGELOG.md index 43542612ccd5..549bcf53159c 100644 --- a/packages/localization/CHANGELOG.md +++ b/packages/localization/CHANGELOG.md @@ -3,6 +3,30 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [1.16.0-rc.0](https://github.com/SAP/ui5-webcomponents/compare/v1.15.1...v1.16.0-rc.0) (2023-07-06) + +**Note:** Version bump only for package @ui5/webcomponents-localization + + + + + +# [1.15.0](https://github.com/SAP/ui5-webcomponents/compare/v1.15.0-rc.2...v1.15.0) (2023-06-30) + +**Note:** Version bump only for package @ui5/webcomponents-localization + + + + + +# [1.15.0-rc.2](https://github.com/SAP/ui5-webcomponents/compare/v1.15.0-rc.1...v1.15.0-rc.2) (2023-06-22) + +**Note:** Version bump only for package @ui5/webcomponents-localization + + + + + # [1.15.0-rc.1](https://github.com/SAP/ui5-webcomponents/compare/v1.15.0-rc.0...v1.15.0-rc.1) (2023-06-15) **Note:** Version bump only for package @ui5/webcomponents-localization diff --git a/packages/localization/package.json b/packages/localization/package.json index 03f03d9b6069..857cc48979f3 100644 --- a/packages/localization/package.json +++ b/packages/localization/package.json @@ -1,6 +1,6 @@ { "name": "@ui5/webcomponents-localization", - "version": "1.15.0-rc.1", + "version": "1.16.0-rc.0", "description": "Localization for UI5 Web Components", "author": "SAP SE (https://www.sap.com)", "license": "Apache-2.0", @@ -29,13 +29,13 @@ }, "devDependencies": { "@openui5/sap.ui.core": "1.112.0", - "@ui5/webcomponents-tools": "1.15.0-rc.1", + "@ui5/webcomponents-tools": "1.16.0-rc.0", "chromedriver": "113.0.0", "mkdirp": "^1.0.4", "resolve": "^1.20.0" }, "dependencies": { "@types/openui5": "^1.113.0", - "@ui5/webcomponents-base": "1.15.0-rc.1" + "@ui5/webcomponents-base": "1.16.0-rc.0" } } diff --git a/packages/main/CHANGELOG.md b/packages/main/CHANGELOG.md index 03ef96e42c29..611028d553c2 100644 --- a/packages/main/CHANGELOG.md +++ b/packages/main/CHANGELOG.md @@ -3,6 +3,61 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [1.16.0-rc.0](https://github.com/SAP/ui5-webcomponents/compare/v1.15.1...v1.16.0-rc.0) (2023-07-06) + + +### Features + +* **ui5-progress-indicator:** accessibleName property added ([#7231](https://github.com/SAP/ui5-webcomponents/issues/7231)) ([ca66fd7](https://github.com/SAP/ui5-webcomponents/commit/ca66fd74dd88f0749f51fc94a52b10ab26e0985d)) + + + + + +# [1.15.0](https://github.com/SAP/ui5-webcomponents/compare/v1.15.0-rc.2...v1.15.0) (2023-06-30) + + +### Bug Fixes + +* **ui5-button:** prevent event throw on mobile when disabled ([#7254](https://github.com/SAP/ui5-webcomponents/issues/7254)) ([337a5fa](https://github.com/SAP/ui5-webcomponents/commit/337a5fa14a6b42af5e20bbb4499ad8ffac04760d)), closes [#7249](https://github.com/SAP/ui5-webcomponents/issues/7249) +* **ui5-link:** change width to max-width ([#7233](https://github.com/SAP/ui5-webcomponents/issues/7233)) ([3be7358](https://github.com/SAP/ui5-webcomponents/commit/3be7358c6870e4305527e96f63bcaf1abb139861)) +* **ui5-range-slider:** adjust hover state visualization ([#7232](https://github.com/SAP/ui5-webcomponents/issues/7232)) ([0ee7b8e](https://github.com/SAP/ui5-webcomponents/commit/0ee7b8e56e8a112922af39335f66124c636ab618)) +* **ui5-segmented-button:** support custom width configuration ([#6969](https://github.com/SAP/ui5-webcomponents/issues/6969)) ([f448af4](https://github.com/SAP/ui5-webcomponents/commit/f448af41d12776360a5235544f7a43e9b548dec4)) +* **ui5-shellbar:** align notification counter badge ([#7208](https://github.com/SAP/ui5-webcomponents/issues/7208)) ([1ee67f5](https://github.com/SAP/ui5-webcomponents/commit/1ee67f570ac722983859690fb602c5b62498d6d5)) +* **ui5-tabcontainer:** fix height in compact ([#7280](https://github.com/SAP/ui5-webcomponents/issues/7280)) ([3c4a806](https://github.com/SAP/ui5-webcomponents/commit/3c4a8067e7763e282edfc5ea5179122b683aed21)) + + +### Features + +* **ui5-rating-indicator:** add required and accessibleNameRef properties ([#7185](https://github.com/SAP/ui5-webcomponents/issues/7185)) ([3cb09c6](https://github.com/SAP/ui5-webcomponents/commit/3cb09c690d22d2c12eba8c6aa23bc60f70b6b890)) +* **ui5-tokenizer:** truncate when having 1 token with long text ([e9a7580](https://github.com/SAP/ui5-webcomponents/commit/e9a75802205f52437380611487f456486f75705b)), closes [#5229](https://github.com/SAP/ui5-webcomponents/issues/5229) + + + + + +# [1.15.0-rc.2](https://github.com/SAP/ui5-webcomponents/compare/v1.15.0-rc.1...v1.15.0-rc.2) (2023-06-22) + + +### Bug Fixes + +* **framework:** support older OpenUI5 getThemeRoot API ([#7202](https://github.com/SAP/ui5-webcomponents/issues/7202)) ([54e615c](https://github.com/SAP/ui5-webcomponents/commit/54e615cffc047b8e1e72861a5be7d50bfcc2d6bf)), closes [#7199](https://github.com/SAP/ui5-webcomponents/issues/7199) +* **ui5-combobox:** prevent selection of multiple items ([#7223](https://github.com/SAP/ui5-webcomponents/issues/7223)) ([bb41f78](https://github.com/SAP/ui5-webcomponents/commit/bb41f78e838b6c1f601b9c06bd057c1629fc0540)) +* **ui5-combobox:** remove position announcement for group header items ([#7214](https://github.com/SAP/ui5-webcomponents/issues/7214)) ([2cc9d18](https://github.com/SAP/ui5-webcomponents/commit/2cc9d18852bd44037a7f22df9311ab34b3b8e9bd)) +* **ui5-multi-combobox:** delete value after OK button is pressed ([#7221](https://github.com/SAP/ui5-webcomponents/issues/7221)) ([26f0f79](https://github.com/SAP/ui5-webcomponents/commit/26f0f79d636facf8787f5b85b1c19467af9fa82c)) +* **ui5-multicombobox:** improve paste functionality ([#7190](https://github.com/SAP/ui5-webcomponents/issues/7190)) ([dd438be](https://github.com/SAP/ui5-webcomponents/commit/dd438becc76e925b1f90062fb063ed579c3358be)) +* **ui5-side-navigation:** cursor is pointer for selected items ([#7229](https://github.com/SAP/ui5-webcomponents/issues/7229)) ([9292c6e](https://github.com/SAP/ui5-webcomponents/commit/9292c6e51fc49b6bc0abe6e525074173ae80e253)), closes [#7156](https://github.com/SAP/ui5-webcomponents/issues/7156) + + +### Features + +* **ui5-radio-button:** update visual design to latest Horizon spec ([#7148](https://github.com/SAP/ui5-webcomponents/issues/7148)) ([7768cec](https://github.com/SAP/ui5-webcomponents/commit/7768cecba2b09ccf85e5519d72f5b7fa186e3da0)), closes [#7001](https://github.com/SAP/ui5-webcomponents/issues/7001) +* **ui5-side-navigation:** update Horizon theme design ([#7186](https://github.com/SAP/ui5-webcomponents/issues/7186)) ([819d153](https://github.com/SAP/ui5-webcomponents/commit/819d153ba5d82c0e48a642d2ee21ccc0fb61e253)), closes [#7160](https://github.com/SAP/ui5-webcomponents/issues/7160) + + + + + # [1.15.0-rc.1](https://github.com/SAP/ui5-webcomponents/compare/v1.15.0-rc.0...v1.15.0-rc.1) (2023-06-15) diff --git a/packages/main/package.json b/packages/main/package.json index 0b32aae95d1c..6586959f7a23 100644 --- a/packages/main/package.json +++ b/packages/main/package.json @@ -1,6 +1,6 @@ { "name": "@ui5/webcomponents", - "version": "1.15.0-rc.1", + "version": "1.16.0-rc.0", "description": "UI5 Web Components: webcomponents.main", "ui5": { "webComponentsPackage": true @@ -43,13 +43,13 @@ "directory": "packages/main" }, "dependencies": { - "@ui5/webcomponents-base": "1.15.0-rc.1", - "@ui5/webcomponents-icons": "1.15.0-rc.1", - "@ui5/webcomponents-localization": "1.15.0-rc.1", - "@ui5/webcomponents-theming": "1.15.0-rc.1" + "@ui5/webcomponents-base": "1.16.0-rc.0", + "@ui5/webcomponents-icons": "1.16.0-rc.0", + "@ui5/webcomponents-localization": "1.16.0-rc.0", + "@ui5/webcomponents-theming": "1.16.0-rc.0" }, "devDependencies": { - "@ui5/webcomponents-tools": "1.15.0-rc.1", + "@ui5/webcomponents-tools": "1.16.0-rc.0", "chromedriver": "113.0.0" } } diff --git a/packages/main/src/AvatarGroup.ts b/packages/main/src/AvatarGroup.ts index 1de47fb6dbac..922eaedf5ae5 100644 --- a/packages/main/src/AvatarGroup.ts +++ b/packages/main/src/AvatarGroup.ts @@ -110,8 +110,9 @@ type AvatarGroupClickEventDetail = { * The component provides advanced keyboard handling. * When focused, the user can use the following keyboard * shortcuts in order to perform a navigation: + * *
- * - type Individual: + * type Individual: *
*
    *
  • [TAB] - Move focus to the overflow button
  • @@ -122,7 +123,7 @@ type AvatarGroupClickEventDetail = { *
  • [SPACE],[ENTER],[RETURN] - Trigger ui5-click event
  • *
*
- * - type Group: + * type Group: *
*
    *
  • [TAB] - Move focus to the next interactive element after the component
  • diff --git a/packages/main/src/Button.ts b/packages/main/src/Button.ts index 1b5cca35b5a2..4885e558a350 100644 --- a/packages/main/src/Button.ts +++ b/packages/main/src/Button.ts @@ -407,6 +407,7 @@ class Button extends UI5Element implements IFormElement { if (this.nonInteractive) { return; } + markEvent(e, "button"); const formSupport = getFeature("FormSupport"); if (formSupport && this._isSubmit) { @@ -431,7 +432,12 @@ class Button extends UI5Element implements IFormElement { activeButton = this; // eslint-disable-line } - _ontouchend() { + _ontouchend(e: TouchEvent) { + if (this.disabled) { + e.preventDefault(); + e.stopPropagation(); + } + this.active = false; if (activeButton) { diff --git a/packages/main/src/FileUploader.ts b/packages/main/src/FileUploader.ts index e9b9a0aa77d0..e730e95548ca 100644 --- a/packages/main/src/FileUploader.ts +++ b/packages/main/src/FileUploader.ts @@ -208,7 +208,9 @@ class FileUploader extends UI5Element implements IFormElement { focused!: boolean; /** - * By default the component contains a single input field. With this slot you can pass any content that you wish to add. See the samples for more information. + * By default the component contains a single input field. With this slot you can pass any content that you wish to add. See the samples for more information.
    + * Note: If no content is provided in this slot, the component will only consist of an input field and will not be interactable using the keyboard.
    + * Also it is not recommended to use any non-interactable components, as it may lead to poor accessibility experience. * * @type {HTMLElement[]} * @name sap.ui.webc.main.FileUploader.prototype.default diff --git a/packages/main/src/List.ts b/packages/main/src/List.ts index f155e206fd72..bb1d40d77b2f 100644 --- a/packages/main/src/List.ts +++ b/packages/main/src/List.ts @@ -991,7 +991,12 @@ class List extends UI5Element { // This is applicable to NotificationListItem onItemClose(e: CustomEvent) { - this.fireEvent("item-close", { item: e.detail.item }); + const target = e.target as UI5Element | null; + const shouldFireItemClose = target?.hasAttribute("ui5-li-notification") || target?.hasAttribute("ui5-li-notification-group"); + + if (shouldFireItemClose) { + this.fireEvent("item-close", { item: e.detail?.item }); + } } onItemToggle(e: CustomEvent) { diff --git a/packages/main/src/MultiComboBox.hbs b/packages/main/src/MultiComboBox.hbs index 6b2899559bc3..d08917a5900e 100644 --- a/packages/main/src/MultiComboBox.hbs +++ b/packages/main/src/MultiComboBox.hbs @@ -8,10 +8,14 @@ { token.selected = false; }); @@ -1262,6 +1268,16 @@ class MultiComboBox extends UI5Element { this._showMorePressed = false; } + async handleBeforeTokenizerPopoverOpen() { + const tokens = this._tokenizer.tokens; + const hasTruncatedToken = tokens.length === 1 && tokens[0].isTruncatable; + const popover = (await this._getResponsivePopover()); + + if (hasTruncatedToken) { + popover?.close(false, false, true); + } + } + _afterClosePicker() { // close device's keyboard and prevent further typing if (isPhone()) { @@ -1431,6 +1447,16 @@ class MultiComboBox extends UI5Element { this._innerInput.focus(); } + get morePopoverOpener(): HTMLElement { + const tokens = this._tokenizer?.tokens; + + if (tokens?.length === 1 && tokens[0].isTruncatable) { + return tokens[0]; + } + + return this; + } + async closePopover() { (await this._getPopover())?.close(); } @@ -1466,6 +1492,10 @@ class MultiComboBox extends UI5Element { this._innerInput.setSelectionRange(0, this.value.length); } + this._tokenizer.tokens.forEach(token => { + token.selected = false; + }); + this._lastValue = this.value; this.valueBeforeAutoComplete = ""; } diff --git a/packages/main/src/MultiInput.hbs b/packages/main/src/MultiInput.hbs index eaab8ff20580..6680528faffa 100644 --- a/packages/main/src/MultiInput.hbs +++ b/packages/main/src/MultiInput.hbs @@ -4,7 +4,7 @@ {{_tokensCountText}} { token.selected = false; }); this.tokenizer.scrollToStart(); } + + if (e.relatedTarget === this.nativeInput) { + this.tokenizer.closeMorePopover(); + } } valueHelpMouseUp() { @@ -203,6 +209,10 @@ class MultiInput extends Input { this.expandedTokenizer = true; this.focused = true; this.tokenizer.scrollToEnd(); + + this.tokenizer._getTokens().forEach(token => { + token.selected = false; + }); } _onkeydown(e: KeyboardEvent) { @@ -376,6 +386,14 @@ class MultiInput extends Input { get ariaRoleDescription() { return MultiInput.i18nBundle.getText(MULTIINPUT_ROLEDESCRIPTION_TEXT); } + + get morePopoverOpener(): HTMLElement { + if (this.tokens.length === 1 && this.tokens[0].isTruncatable) { + return this.tokens[0]; + } + + return this; + } } MultiInput.define(); diff --git a/packages/main/src/ProgressIndicator.hbs b/packages/main/src/ProgressIndicator.hbs index 67045b5da804..323e95aec0d8 100644 --- a/packages/main/src/ProgressIndicator.hbs +++ b/packages/main/src/ProgressIndicator.hbs @@ -5,6 +5,7 @@ aria-valuemax="100" aria-valuetext="{{valueStateText}}" aria-disabled="{{_ariaDisabled}}" + aria-label="{{accessibleName}}" >
    {{#unless showValueInRemainingBar}} diff --git a/packages/main/src/ProgressIndicator.ts b/packages/main/src/ProgressIndicator.ts index 1b5a14bd3e86..b6a684c08760 100644 --- a/packages/main/src/ProgressIndicator.ts +++ b/packages/main/src/ProgressIndicator.ts @@ -51,7 +51,20 @@ import ProgressIndicatorCss from "./generated/themes/ProgressIndicator.css.js"; template: ProgressIndicatorTemplate, dependencies: [Icon], }) + class ProgressIndicator extends UI5Element { + /** + * Defines the accessible ARIA name of the component. + * + * @type {string} + * @defaultvalue "" + * @name sap.ui.webc.main.ProgressIndicator.prototype.accessibleName + * @public + * @since 1.16.0 + */ + @property() + accessibleName!: string; + /** * Defines whether component is in disabled state. * diff --git a/packages/main/src/RatingIndicator.hbs b/packages/main/src/RatingIndicator.hbs index 4de7ed249caf..0d6ff1443021 100644 --- a/packages/main/src/RatingIndicator.hbs +++ b/packages/main/src/RatingIndicator.hbs @@ -8,13 +8,14 @@ aria-orientation="horizontal" aria-disabled="{{_ariaDisabled}}" aria-readonly="{{ariaReadonly}}" + aria-description="{{_ariaDescription}}" tabindex="{{effectiveTabIndex}}" @focusin="{{_onfocusin}}" @focusout="{{_onfocusout}}" @click="{{_onclick}}" @keydown="{{_onkeydown}}" title="{{tooltip}}" - aria-label="{{accessibleName}}" + aria-label="{{_ariaLabel}}" >
    {{#if this.requiresExpandButton}} +
    {{#if closeIcon.length}} - + {{else}} {{/if}}
    diff --git a/packages/main/src/Token.ts b/packages/main/src/Token.ts index bff0753f0cde..cdb360f84b2e 100644 --- a/packages/main/src/Token.ts +++ b/packages/main/src/Token.ts @@ -125,6 +125,9 @@ class Token extends UI5Element implements ITabbable { @property({ type: Boolean }) overflows!: boolean; + @property({ type: Boolean }) + singleToken!: boolean; + /** * Defines whether the component is focused or not. * @@ -170,8 +173,10 @@ class Token extends UI5Element implements ITabbable { static i18nBundle: I18nBundle; _handleSelect() { - this.selected = !this.selected; - this.fireEvent("select"); + if (!this.toBeDeleted) { + this.selected = !this.selected; + this.fireEvent("select"); + } } _focusin() { @@ -182,11 +187,8 @@ class Token extends UI5Element implements ITabbable { this.focused = !this.focused; } - _mousedown() { - this.toBeDeleted = true; - } - _delete() { + this.toBeDeleted = true; this.fireEvent("delete"); } @@ -226,6 +228,14 @@ class Token extends UI5Element implements ITabbable { return "decline"; } + get textDom() { + return this.getDomRef()!.querySelector(".ui5-token--text"); + } + + get isTruncatable() { + return Math.ceil(this.textDom!.getBoundingClientRect().width) < Math.ceil(this.textDom!.scrollWidth); + } + static async onDefine() { Token.i18nBundle = await getI18nBundle("@ui5/webcomponents"); } diff --git a/packages/main/src/Tokenizer.hbs b/packages/main/src/Tokenizer.hbs index b80e17d4c6b0..47b5e8d38341 100644 --- a/packages/main/src/Tokenizer.hbs +++ b/packages/main/src/Tokenizer.hbs @@ -7,6 +7,7 @@ @click="{{_click}}" @mousedown="{{_onmousedown}}" @keydown="{{_onkeydown}}" + @ui5-select="{{onTokenSelect}}" role="listbox" aria-labelledby="{{_id}}-hiddenText" > @@ -17,7 +18,7 @@ {{#if showNMore}} {{_nMoreText}} diff --git a/packages/main/src/Tokenizer.ts b/packages/main/src/Tokenizer.ts index 62ce49e445f4..a8bd69a56b11 100644 --- a/packages/main/src/Tokenizer.ts +++ b/packages/main/src/Tokenizer.ts @@ -122,6 +122,11 @@ enum ClipboardDataOperation { ref: { type: HTMLElement }, }, }) + +@event("before-more-popover-open", { + detail: {}, +}) + class Tokenizer extends UI5Element { @property({ type: Boolean }) showMore!: boolean; @@ -129,6 +134,14 @@ class Tokenizer extends UI5Element { @property({ type: Boolean }) disabled!: boolean; + /** + * Prevent opening of n-more Popover when label is clicked + * + * @private + */ + @property({ type: Boolean }) + preventPopoverOpen!: boolean; + /** * Indicates if the tokenizer should show all tokens or n more label instead * @@ -156,6 +169,9 @@ class Tokenizer extends UI5Element { @property({ validator: Integer }) _nMoreCount!: number; + @property({ validator: Integer }) + _tokensCount!: number; + @slot({ type: HTMLElement, "default": true, individualSlots: true }) tokens!: Array; @@ -187,6 +203,15 @@ class Tokenizer extends UI5Element { onBeforeRendering() { this._nMoreCount = this.overflownTokens.length; + this._tokensCount = this._getTokens().length; + + this._tokens.forEach(token => { + token.singleToken = this._tokens.length === 1; + }); + + if (!this._tokens.length) { + this.closeMorePopover(); + } } onEnterDOM() { @@ -197,16 +222,18 @@ class Tokenizer extends UI5Element { ResizeHandler.deregister(this.contentDom, this._resizeHandler); } - async _openOverflowPopover() { - if (this.showPopover) { - const popover = await this.getPopover(); - - popover.showAt(this.morePopoverOpener || this); + async _openMorePopoverAndFireEvent() { + if (!this.preventPopoverOpen) { + await this.openMorePopover(); } this.fireEvent("show-more-items-press"); } + async openMorePopover() { + (await this.getPopover()).showAt(this.morePopoverOpener || this); + } + _getTokens() { return this.getSlottedNodes("tokens"); } @@ -215,8 +242,25 @@ class Tokenizer extends UI5Element { return this.getSlottedNodes("tokens"); } - get showPopover() { - return !!Object.keys(this.morePopoverOpener).length; + _onmousedown(e: MouseEvent) { + if ((e.target as HTMLElement).hasAttribute("ui5-token")) { + const target = e.target as Token; + if (!target.toBeDeleted) { + this._itemNav.setCurrentItem(target); + } + } + } + + onTokenSelect() { + const tokens = this._getTokens(); + + if (tokens.length === 1 && tokens[0].isTruncatable) { + if (tokens[0].selected) { + this.openMorePopover(); + } else { + this.closeMorePopover(); + } + } } _getVisibleTokens() { @@ -230,7 +274,7 @@ class Tokenizer extends UI5Element { } async onAfterRendering() { - if (this.showPopover && !this._getTokens().length) { + if (!this._getTokens().length) { const popover = await this.getPopover(); popover.close(); } @@ -251,6 +295,10 @@ class Tokenizer extends UI5Element { const target = e.target as Token; if (!e.detail) { // if there are no details, the event is triggered by a click this._tokenClickDelete(e, target); + + if (this._getTokens().length) { + this.closeMorePopover(); + } return; } @@ -318,10 +366,35 @@ class Tokenizer extends UI5Element { this.fireEvent("token-delete", { ref: token }); } - itemDelete(e: CustomEvent) { + async itemDelete(e: CustomEvent) { const token = e.detail.item.tokenRef; - this.fireEvent("token-delete", { ref: token }); + // delay the token deletion in order to close the popover before removing token of the DOM + if (this._getTokens().length === 1 && this._getTokens()[0].isTruncatable) { + const morePopover = await this.getPopover(); + + morePopover.addEventListener("ui5-after-close", () => { + this.fireEvent("token-delete", { ref: token }); + }, { + once: true, + }); + + morePopover.close(); + } else { + this.fireEvent("token-delete", { ref: token }); + } + } + + handleBeforeClose() { + if (isPhone()) { + this._getTokens().forEach(token => { + token.selected = false; + }); + } + } + + handleBeforeOpen() { + this.fireEvent("before-more-popover-open"); } _onkeydown(e: KeyboardEvent) { @@ -470,16 +543,6 @@ class Tokenizer extends UI5Element { this._handleTokenSelection(e); } - _onmousedown(e: MouseEvent) { - if ((e.target as HTMLElement).hasAttribute("ui5-token")) { - const target = e.target as Token; - if (!target.toBeDeleted) { - this._itemNav.setCurrentItem(target); - this._scrollToToken(target); - } - } - } - _toggleTokenSelection(tokens: Array) { if (!tokens || !tokens.length) { return; @@ -563,9 +626,7 @@ class Tokenizer extends UI5Element { } async closeMorePopover() { - const popover = await this.getPopover(); - - popover.close(); + (await this.getPopover()).close(false, false, true); } get _nMoreText() { @@ -611,10 +672,10 @@ class Tokenizer extends UI5Element { return this._getTokens().filter(token => { const parentRect = this.contentDom.getBoundingClientRect(); const tokenRect = token.getBoundingClientRect(); - const tokenEnd = tokenRect.right; - const parentEnd = parentRect.right; - const tokenStart = tokenRect.left; - const parentStart = parentRect.left; + const tokenEnd = Number(tokenRect.right.toFixed(2)); + const parentEnd = Number(parentRect.right.toFixed(2)); + const tokenStart = Number(tokenRect.left.toFixed(2)); + const parentStart = Number(parentRect.left.toFixed(2)); token.overflows = !this.expanded && ((tokenStart < parentStart) || (tokenEnd > parentEnd)); @@ -666,7 +727,7 @@ class Tokenizer extends UI5Element { }, popoverValueState: { "ui5-valuestatemessage-root": true, - "ui5-responsive-popover-header": this.showPopover, + "ui5-responsive-popover-header": true, "ui5-valuestatemessage--success": this.valueState === ValueState.Success, "ui5-valuestatemessage--error": this.valueState === ValueState.Error, "ui5-valuestatemessage--warning": this.valueState === ValueState.Warning, diff --git a/packages/main/src/TokenizerPopover.hbs b/packages/main/src/TokenizerPopover.hbs index 03f9e95c3dc8..c56f0db4b476 100644 --- a/packages/main/src/TokenizerPopover.hbs +++ b/packages/main/src/TokenizerPopover.hbs @@ -5,6 +5,8 @@ hide-arrow placement-type="Bottom" horizontal-align="Left" + @before-close={{handleBeforeClose}} + @before-open="{{handleBeforeOpen}}" >
    {{#if _isPhone}} @@ -42,7 +44,8 @@ {{#if _isPhone}} diff --git a/packages/main/src/i18n/messagebundle.properties b/packages/main/src/i18n/messagebundle.properties index 0316114cae93..c101ba86c168 100644 --- a/packages/main/src/i18n/messagebundle.properties +++ b/packages/main/src/i18n/messagebundle.properties @@ -235,6 +235,9 @@ RATING_INDICATOR_TOOLTIP_TEXT=Rating #XBUT: Rating indicator aria-roledescription text RATING_INDICATOR_TEXT=Rating Indicator +#XACT: Rating indicator ARIA description +RATING_INDICATOR_ARIA_DESCRIPTION=Required + #XFLD: ResponsivePopover's button's text which closes the dialog RESPONSIVE_POPOVER_CLOSE_DIALOG_BUTTON=Decline diff --git a/packages/main/src/i18n/messagebundle_ar.properties b/packages/main/src/i18n/messagebundle_ar.properties index d9136f2ab29b..6e0b5bcb4fac 100644 --- a/packages/main/src/i18n/messagebundle_ar.properties +++ b/packages/main/src/i18n/messagebundle_ar.properties @@ -157,6 +157,8 @@ RATING_INDICATOR_TOOLTIP_TEXT=التصنيف RATING_INDICATOR_TEXT=مؤشر التقييم +RATING_INDICATOR_ARIA_DESCRIPTION=مطلوب + RESPONSIVE_POPOVER_CLOSE_DIALOG_BUTTON=رفض SEGMENTEDBUTTON_ARIA_DESCRIPTION=مجموعة الأزرار المقسَّمة @@ -219,9 +221,9 @@ TIMEPICKER_CANCEL_BUTTON=إلغاء TIMEPICKER_INPUT_DESCRIPTION=إدخال الوقت -TIMEPICKER_CLOCK_DIAL_LABEL=Clock Dial +TIMEPICKER_CLOCK_DIAL_LABEL=طلب الساعة -DURATION_INPUT_DESCRIPTION=Duration Input +DURATION_INPUT_DESCRIPTION=إدخال المدة DATETIME_PICKER_DATE_BUTTON=التاريخ diff --git a/packages/main/src/i18n/messagebundle_bg.properties b/packages/main/src/i18n/messagebundle_bg.properties index 239a8e2bc299..fc5af614a4f4 100644 --- a/packages/main/src/i18n/messagebundle_bg.properties +++ b/packages/main/src/i18n/messagebundle_bg.properties @@ -157,6 +157,8 @@ RATING_INDICATOR_TOOLTIP_TEXT=Оценка RATING_INDICATOR_TEXT=Индикатор за рейтинг +RATING_INDICATOR_ARIA_DESCRIPTION=Задължително + RESPONSIVE_POPOVER_CLOSE_DIALOG_BUTTON=Отхвърляне SEGMENTEDBUTTON_ARIA_DESCRIPTION=Група на сегментиран бутон @@ -219,9 +221,9 @@ TIMEPICKER_CANCEL_BUTTON=Отказ TIMEPICKER_INPUT_DESCRIPTION=Въвеждане на час -TIMEPICKER_CLOCK_DIAL_LABEL=Clock Dial +TIMEPICKER_CLOCK_DIAL_LABEL=Циферблат на часовник -DURATION_INPUT_DESCRIPTION=Duration Input +DURATION_INPUT_DESCRIPTION=Въвеждане на времетраене DATETIME_PICKER_DATE_BUTTON=Дата diff --git a/packages/main/src/i18n/messagebundle_ca.properties b/packages/main/src/i18n/messagebundle_ca.properties index 8694444f9ba1..6b6f134b4b6a 100644 --- a/packages/main/src/i18n/messagebundle_ca.properties +++ b/packages/main/src/i18n/messagebundle_ca.properties @@ -157,6 +157,8 @@ RATING_INDICATOR_TOOLTIP_TEXT=Valoració RATING_INDICATOR_TEXT=Indicador de valoració +RATING_INDICATOR_ARIA_DESCRIPTION=Obligatori + RESPONSIVE_POPOVER_CLOSE_DIALOG_BUTTON=Declinar SEGMENTEDBUTTON_ARIA_DESCRIPTION=Grup de botons segmentats @@ -219,9 +221,9 @@ TIMEPICKER_CANCEL_BUTTON=Cancel·lar TIMEPICKER_INPUT_DESCRIPTION=Entrada d'hora -TIMEPICKER_CLOCK_DIAL_LABEL=Clock Dial +TIMEPICKER_CLOCK_DIAL_LABEL=Esfera de rellotge -DURATION_INPUT_DESCRIPTION=Duration Input +DURATION_INPUT_DESCRIPTION=Entrada de durada DATETIME_PICKER_DATE_BUTTON=Data diff --git a/packages/main/src/i18n/messagebundle_cs.properties b/packages/main/src/i18n/messagebundle_cs.properties index 539a3fc41589..1bcdf5908bb8 100644 --- a/packages/main/src/i18n/messagebundle_cs.properties +++ b/packages/main/src/i18n/messagebundle_cs.properties @@ -157,6 +157,8 @@ RATING_INDICATOR_TOOLTIP_TEXT=Rating RATING_INDICATOR_TEXT=Indikátor ratingu +RATING_INDICATOR_ARIA_DESCRIPTION=Povinné + RESPONSIVE_POPOVER_CLOSE_DIALOG_BUTTON=Odmítnout SEGMENTEDBUTTON_ARIA_DESCRIPTION=Skupina segmentovaných tlačítek @@ -219,9 +221,9 @@ TIMEPICKER_CANCEL_BUTTON=Zrušit TIMEPICKER_INPUT_DESCRIPTION=Zadání času -TIMEPICKER_CLOCK_DIAL_LABEL=Clock Dial +TIMEPICKER_CLOCK_DIAL_LABEL=Ciferník hodin -DURATION_INPUT_DESCRIPTION=Duration Input +DURATION_INPUT_DESCRIPTION=Zadání trvání DATETIME_PICKER_DATE_BUTTON=Datum diff --git a/packages/main/src/i18n/messagebundle_cy.properties b/packages/main/src/i18n/messagebundle_cy.properties index b7db964e7791..e445c9fbb863 100644 --- a/packages/main/src/i18n/messagebundle_cy.properties +++ b/packages/main/src/i18n/messagebundle_cy.properties @@ -157,6 +157,8 @@ RATING_INDICATOR_TOOLTIP_TEXT=Sgôr RATING_INDICATOR_TEXT=Dangosydd Sgôr +RATING_INDICATOR_ARIA_DESCRIPTION=Gofynnol + RESPONSIVE_POPOVER_CLOSE_DIALOG_BUTTON=Gwrthod SEGMENTEDBUTTON_ARIA_DESCRIPTION=Grŵp botwm wedi'i segmentu @@ -219,9 +221,9 @@ TIMEPICKER_CANCEL_BUTTON=Canslo TIMEPICKER_INPUT_DESCRIPTION=Mewnbwn Amser -TIMEPICKER_CLOCK_DIAL_LABEL=Clock Dial +TIMEPICKER_CLOCK_DIAL_LABEL=Deial Cloc -DURATION_INPUT_DESCRIPTION=Duration Input +DURATION_INPUT_DESCRIPTION=Mewnbwn Hyd DATETIME_PICKER_DATE_BUTTON=Dyddiad diff --git a/packages/main/src/i18n/messagebundle_da.properties b/packages/main/src/i18n/messagebundle_da.properties index 23e6eb45ab61..c25c568fd61e 100644 --- a/packages/main/src/i18n/messagebundle_da.properties +++ b/packages/main/src/i18n/messagebundle_da.properties @@ -157,6 +157,8 @@ RATING_INDICATOR_TOOLTIP_TEXT=Vurdering RATING_INDICATOR_TEXT=Vurderingsindikator +RATING_INDICATOR_ARIA_DESCRIPTION=Nødvendig + RESPONSIVE_POPOVER_CLOSE_DIALOG_BUTTON=Afvis SEGMENTEDBUTTON_ARIA_DESCRIPTION=Segmenteret knapgruppe @@ -219,9 +221,9 @@ TIMEPICKER_CANCEL_BUTTON=Afbryd TIMEPICKER_INPUT_DESCRIPTION=Tidsinput -TIMEPICKER_CLOCK_DIAL_LABEL=Clock Dial +TIMEPICKER_CLOCK_DIAL_LABEL=Urskive -DURATION_INPUT_DESCRIPTION=Duration Input +DURATION_INPUT_DESCRIPTION=Varighedsinput DATETIME_PICKER_DATE_BUTTON=Dato diff --git a/packages/main/src/i18n/messagebundle_de.properties b/packages/main/src/i18n/messagebundle_de.properties index 9d6488418823..280545defc8e 100644 --- a/packages/main/src/i18n/messagebundle_de.properties +++ b/packages/main/src/i18n/messagebundle_de.properties @@ -157,6 +157,8 @@ RATING_INDICATOR_TOOLTIP_TEXT=Bewertung RATING_INDICATOR_TEXT=Bewertungssterne +RATING_INDICATOR_ARIA_DESCRIPTION=Erforderlich + RESPONSIVE_POPOVER_CLOSE_DIALOG_BUTTON=Ablehnen SEGMENTEDBUTTON_ARIA_DESCRIPTION=Drucktastengruppe mit Unterteilung @@ -219,9 +221,9 @@ TIMEPICKER_CANCEL_BUTTON=Abbrechen TIMEPICKER_INPUT_DESCRIPTION=Zeiteingabe -TIMEPICKER_CLOCK_DIAL_LABEL=Clock Dial +TIMEPICKER_CLOCK_DIAL_LABEL=Zifferblatt -DURATION_INPUT_DESCRIPTION=Duration Input +DURATION_INPUT_DESCRIPTION=Eingabe der Dauer DATETIME_PICKER_DATE_BUTTON=Datum diff --git a/packages/main/src/i18n/messagebundle_el.properties b/packages/main/src/i18n/messagebundle_el.properties index 23f9c9c7dc38..7fbabd932b03 100644 --- a/packages/main/src/i18n/messagebundle_el.properties +++ b/packages/main/src/i18n/messagebundle_el.properties @@ -157,6 +157,8 @@ RATING_INDICATOR_TOOLTIP_TEXT=Αξιολόγηση RATING_INDICATOR_TEXT=Δείκτης Αξιολόγησης +RATING_INDICATOR_ARIA_DESCRIPTION=Απαιτούμενο + RESPONSIVE_POPOVER_CLOSE_DIALOG_BUTTON=Απόρριψη SEGMENTEDBUTTON_ARIA_DESCRIPTION=Ομάδα κουμπιού τμηματοποίησης @@ -219,9 +221,9 @@ TIMEPICKER_CANCEL_BUTTON=Ακύρωση TIMEPICKER_INPUT_DESCRIPTION=Εισαγωγή Ώρας -TIMEPICKER_CLOCK_DIAL_LABEL=Clock Dial +TIMEPICKER_CLOCK_DIAL_LABEL=Πληκτρολόγηση Ώρας -DURATION_INPUT_DESCRIPTION=Duration Input +DURATION_INPUT_DESCRIPTION=Εισαγωγή Διάρκειας DATETIME_PICKER_DATE_BUTTON=Ημερομηνία diff --git a/packages/main/src/i18n/messagebundle_en.properties b/packages/main/src/i18n/messagebundle_en.properties index 88eed5fa976e..f054da97401f 100644 --- a/packages/main/src/i18n/messagebundle_en.properties +++ b/packages/main/src/i18n/messagebundle_en.properties @@ -157,6 +157,8 @@ RATING_INDICATOR_TOOLTIP_TEXT=Rating RATING_INDICATOR_TEXT=Rating Indicator +RATING_INDICATOR_ARIA_DESCRIPTION=Required + RESPONSIVE_POPOVER_CLOSE_DIALOG_BUTTON=Decline SEGMENTEDBUTTON_ARIA_DESCRIPTION=Segmented button group diff --git a/packages/main/src/i18n/messagebundle_en_GB.properties b/packages/main/src/i18n/messagebundle_en_GB.properties index d4f8b426065d..08f588326156 100644 --- a/packages/main/src/i18n/messagebundle_en_GB.properties +++ b/packages/main/src/i18n/messagebundle_en_GB.properties @@ -157,6 +157,8 @@ RATING_INDICATOR_TOOLTIP_TEXT=Rating RATING_INDICATOR_TEXT=Rating Indicator +RATING_INDICATOR_ARIA_DESCRIPTION=Required + RESPONSIVE_POPOVER_CLOSE_DIALOG_BUTTON=Decline SEGMENTEDBUTTON_ARIA_DESCRIPTION=Segmented button group diff --git a/packages/main/src/i18n/messagebundle_en_US_sappsd.properties b/packages/main/src/i18n/messagebundle_en_US_sappsd.properties index ec1e9d0f4bba..dfd150ebba4b 100644 --- a/packages/main/src/i18n/messagebundle_en_US_sappsd.properties +++ b/packages/main/src/i18n/messagebundle_en_US_sappsd.properties @@ -157,6 +157,8 @@ RATING_INDICATOR_TOOLTIP_TEXT=[[[Řąţįŋğ∙∙∙∙∙∙∙∙]]] RATING_INDICATOR_TEXT=[[[Řąţįŋğ Ĭŋƌįċąţŏŗ∙∙∙∙∙∙∙∙]]] +RATING_INDICATOR_ARIA_DESCRIPTION=[[[Řēƣűįŗēƌ∙∙∙∙∙∙]]] + RESPONSIVE_POPOVER_CLOSE_DIALOG_BUTTON=[[[Ďēċĺįŋē∙∙∙∙∙∙∙]]] SEGMENTEDBUTTON_ARIA_DESCRIPTION=[[[Ŝēğɱēŋţēƌ ƃűţţŏŋ ğŗŏűρ∙∙∙∙∙]]] diff --git a/packages/main/src/i18n/messagebundle_en_US_saprigi.properties b/packages/main/src/i18n/messagebundle_en_US_saprigi.properties index fb9c50daa00a..6f9e1bc9ad6c 100644 --- a/packages/main/src/i18n/messagebundle_en_US_saprigi.properties +++ b/packages/main/src/i18n/messagebundle_en_US_saprigi.properties @@ -157,6 +157,8 @@ RATING_INDICATOR_TOOLTIP_TEXT=‌​‍‍​‍‍‌​‌‍‌‍ RATING_INDICATOR_TEXT=‌​‌‍‍​‌‍‌‌​‌‌‌‌‌​‍‌‌‌​‍‍‍‌‌‌‌‌‌​‌​‍‍‍‍‌​Rating Indicator +RATING_INDICATOR_ARIA_DESCRIPTION=‌​‍‍‌‌‍‍‍​‍​‌‌‌​‌‍‍‌‍‌‍‌‍​‌​‌‍‌‌​​‍​​‍‍‌‍Required + RESPONSIVE_POPOVER_CLOSE_DIALOG_BUTTON=‌‌‍​‍​‍​‌​‌‌‍‌‌​‌​‌‌‍​‌​​​​‍‍‍​‍‍‌‍‌‌‌‌​Decline SEGMENTEDBUTTON_ARIA_DESCRIPTION=‌​‍‍‌​‍‍​‌‌‌‍‍‍‌‍‍‍‍‌​​​​‍​‍‍‍‌‍‍‌‌‍‌​‌​‌Segmented button group diff --git a/packages/main/src/i18n/messagebundle_en_US_saptrc.properties b/packages/main/src/i18n/messagebundle_en_US_saptrc.properties index 7e8ed5ea69be..b5f99db14f77 100644 --- a/packages/main/src/i18n/messagebundle_en_US_saptrc.properties +++ b/packages/main/src/i18n/messagebundle_en_US_saptrc.properties @@ -157,6 +157,8 @@ RATING_INDICATOR_TOOLTIP_TEXT=zY+Co9WOhaZc6eNbxbRhQw_Rating RATING_INDICATOR_TEXT=jExR5/SIqBAi9caE/ykkbQ_Rating Indicator +RATING_INDICATOR_ARIA_DESCRIPTION=mavXv1PKfw80pjEbcXD7GQ_Required + RESPONSIVE_POPOVER_CLOSE_DIALOG_BUTTON=WYSkGim669ZzReUcvUjNEw_Decline SEGMENTEDBUTTON_ARIA_DESCRIPTION=I2QKjq1ton7rf+AkwIRNRA_Segmented button group diff --git a/packages/main/src/i18n/messagebundle_es.properties b/packages/main/src/i18n/messagebundle_es.properties index 56cc58c7f52e..cd0fde53317f 100644 --- a/packages/main/src/i18n/messagebundle_es.properties +++ b/packages/main/src/i18n/messagebundle_es.properties @@ -157,6 +157,8 @@ RATING_INDICATOR_TOOLTIP_TEXT=Valoración RATING_INDICATOR_TEXT=Indicador de valoración +RATING_INDICATOR_ARIA_DESCRIPTION=Necesarios + RESPONSIVE_POPOVER_CLOSE_DIALOG_BUTTON=Rechazar SEGMENTEDBUTTON_ARIA_DESCRIPTION=Grupo de botones segmentados @@ -219,9 +221,9 @@ TIMEPICKER_CANCEL_BUTTON=Cancelar TIMEPICKER_INPUT_DESCRIPTION=Entrada de hora -TIMEPICKER_CLOCK_DIAL_LABEL=Clock Dial +TIMEPICKER_CLOCK_DIAL_LABEL=Esfera de reloj -DURATION_INPUT_DESCRIPTION=Duration Input +DURATION_INPUT_DESCRIPTION=Entrada de duración DATETIME_PICKER_DATE_BUTTON=Fecha diff --git a/packages/main/src/i18n/messagebundle_es_MX.properties b/packages/main/src/i18n/messagebundle_es_MX.properties index e90334af9ed2..eee0fbb42b5b 100644 --- a/packages/main/src/i18n/messagebundle_es_MX.properties +++ b/packages/main/src/i18n/messagebundle_es_MX.properties @@ -157,6 +157,8 @@ RATING_INDICATOR_TOOLTIP_TEXT=Clasificación RATING_INDICATOR_TEXT=Indicador de clasificación +RATING_INDICATOR_ARIA_DESCRIPTION=Requerido + RESPONSIVE_POPOVER_CLOSE_DIALOG_BUTTON=Rechazar SEGMENTEDBUTTON_ARIA_DESCRIPTION=Grupo de botón segmentado @@ -219,9 +221,9 @@ TIMEPICKER_CANCEL_BUTTON=Cancelar TIMEPICKER_INPUT_DESCRIPTION=Entrada de hora -TIMEPICKER_CLOCK_DIAL_LABEL=Clock Dial +TIMEPICKER_CLOCK_DIAL_LABEL=Esfera de reloj -DURATION_INPUT_DESCRIPTION=Duration Input +DURATION_INPUT_DESCRIPTION=Entrada de duración DATETIME_PICKER_DATE_BUTTON=Fecha diff --git a/packages/main/src/i18n/messagebundle_et.properties b/packages/main/src/i18n/messagebundle_et.properties index f8f452ad348e..78d1ff4b841e 100644 --- a/packages/main/src/i18n/messagebundle_et.properties +++ b/packages/main/src/i18n/messagebundle_et.properties @@ -157,6 +157,8 @@ RATING_INDICATOR_TOOLTIP_TEXT=Hinnang RATING_INDICATOR_TEXT=Hindamistunnus +RATING_INDICATOR_ARIA_DESCRIPTION=Kohustuslik + RESPONSIVE_POPOVER_CLOSE_DIALOG_BUTTON=Keeldu SEGMENTEDBUTTON_ARIA_DESCRIPTION=Segmenditud nupugrupp @@ -219,9 +221,9 @@ TIMEPICKER_CANCEL_BUTTON=Tühista TIMEPICKER_INPUT_DESCRIPTION=Kellaajasisend -TIMEPICKER_CLOCK_DIAL_LABEL=Clock Dial +TIMEPICKER_CLOCK_DIAL_LABEL=Kella numbrilaud -DURATION_INPUT_DESCRIPTION=Duration Input +DURATION_INPUT_DESCRIPTION=Kestusesisend DATETIME_PICKER_DATE_BUTTON=Kuupäev diff --git a/packages/main/src/i18n/messagebundle_fi.properties b/packages/main/src/i18n/messagebundle_fi.properties index 5daeec2131e3..08aee184b9a3 100644 --- a/packages/main/src/i18n/messagebundle_fi.properties +++ b/packages/main/src/i18n/messagebundle_fi.properties @@ -157,6 +157,8 @@ RATING_INDICATOR_TOOLTIP_TEXT=Arviointi RATING_INDICATOR_TEXT=Arviointitähdet +RATING_INDICATOR_ARIA_DESCRIPTION=Pakollinen + RESPONSIVE_POPOVER_CLOSE_DIALOG_BUTTON=Hylkää SEGMENTEDBUTTON_ARIA_DESCRIPTION=Segmentoitu painikeryhmä @@ -219,9 +221,9 @@ TIMEPICKER_CANCEL_BUTTON=Keskeytä TIMEPICKER_INPUT_DESCRIPTION=Ajan syöttö -TIMEPICKER_CLOCK_DIAL_LABEL=Clock Dial +TIMEPICKER_CLOCK_DIAL_LABEL=Kellotaulu -DURATION_INPUT_DESCRIPTION=Duration Input +DURATION_INPUT_DESCRIPTION=Keston syöttö DATETIME_PICKER_DATE_BUTTON=Päivämäärä diff --git a/packages/main/src/i18n/messagebundle_fr.properties b/packages/main/src/i18n/messagebundle_fr.properties index 3870e34f7a30..1f0c5176f77c 100644 --- a/packages/main/src/i18n/messagebundle_fr.properties +++ b/packages/main/src/i18n/messagebundle_fr.properties @@ -157,6 +157,8 @@ RATING_INDICATOR_TOOLTIP_TEXT=Évaluation RATING_INDICATOR_TEXT=Étoiles d'évaluation +RATING_INDICATOR_ARIA_DESCRIPTION=Requis + RESPONSIVE_POPOVER_CLOSE_DIALOG_BUTTON=Refuser SEGMENTEDBUTTON_ARIA_DESCRIPTION=Groupe de boutons segmentés @@ -219,9 +221,9 @@ TIMEPICKER_CANCEL_BUTTON=Annuler TIMEPICKER_INPUT_DESCRIPTION=Saisie de l'heure -TIMEPICKER_CLOCK_DIAL_LABEL=Clock Dial +TIMEPICKER_CLOCK_DIAL_LABEL=Cadran horloge -DURATION_INPUT_DESCRIPTION=Duration Input +DURATION_INPUT_DESCRIPTION=Saisie de la durée DATETIME_PICKER_DATE_BUTTON=Date diff --git a/packages/main/src/i18n/messagebundle_fr_CA.properties b/packages/main/src/i18n/messagebundle_fr_CA.properties index 2fe28866bfcf..f867f5bed433 100644 --- a/packages/main/src/i18n/messagebundle_fr_CA.properties +++ b/packages/main/src/i18n/messagebundle_fr_CA.properties @@ -157,6 +157,8 @@ RATING_INDICATOR_TOOLTIP_TEXT=Évaluation RATING_INDICATOR_TEXT=Indicateur d'évaluation +RATING_INDICATOR_ARIA_DESCRIPTION=Obligatoire + RESPONSIVE_POPOVER_CLOSE_DIALOG_BUTTON=Refuser SEGMENTEDBUTTON_ARIA_DESCRIPTION=Groupe de boutons segmentés @@ -219,9 +221,9 @@ TIMEPICKER_CANCEL_BUTTON=Annuler TIMEPICKER_INPUT_DESCRIPTION=Saisie de l'heure -TIMEPICKER_CLOCK_DIAL_LABEL=Clock Dial +TIMEPICKER_CLOCK_DIAL_LABEL=Cadran horloge -DURATION_INPUT_DESCRIPTION=Duration Input +DURATION_INPUT_DESCRIPTION=Saisie de la durée DATETIME_PICKER_DATE_BUTTON=Date diff --git a/packages/main/src/i18n/messagebundle_hi.properties b/packages/main/src/i18n/messagebundle_hi.properties index 96bd9b50c595..f8e7c3215eee 100644 --- a/packages/main/src/i18n/messagebundle_hi.properties +++ b/packages/main/src/i18n/messagebundle_hi.properties @@ -157,6 +157,8 @@ RATING_INDICATOR_TOOLTIP_TEXT=रेटिंग RATING_INDICATOR_TEXT=रेटिंग संकेतक +RATING_INDICATOR_ARIA_DESCRIPTION=आवश्यक + RESPONSIVE_POPOVER_CLOSE_DIALOG_BUTTON=अस्वीकृत करें SEGMENTEDBUTTON_ARIA_DESCRIPTION=सेगमेंट किए गए बटन समूह @@ -219,9 +221,9 @@ TIMEPICKER_CANCEL_BUTTON=रद्द करें TIMEPICKER_INPUT_DESCRIPTION=समय इनपुट -TIMEPICKER_CLOCK_DIAL_LABEL=Clock Dial +TIMEPICKER_CLOCK_DIAL_LABEL=क्लॉक डायल -DURATION_INPUT_DESCRIPTION=Duration Input +DURATION_INPUT_DESCRIPTION=अवधि इनपुट DATETIME_PICKER_DATE_BUTTON=दिनांक diff --git a/packages/main/src/i18n/messagebundle_hr.properties b/packages/main/src/i18n/messagebundle_hr.properties index 1fe7571573b9..0562cfb7dc6a 100644 --- a/packages/main/src/i18n/messagebundle_hr.properties +++ b/packages/main/src/i18n/messagebundle_hr.properties @@ -157,6 +157,8 @@ RATING_INDICATOR_TOOLTIP_TEXT=Ocjenjivanje RATING_INDICATOR_TEXT=Pokazatelj vrednovanja +RATING_INDICATOR_ARIA_DESCRIPTION=Obavezno + RESPONSIVE_POPOVER_CLOSE_DIALOG_BUTTON=Odbij SEGMENTEDBUTTON_ARIA_DESCRIPTION=Grupa gumba Segmentirano @@ -219,9 +221,9 @@ TIMEPICKER_CANCEL_BUTTON=Otkaži TIMEPICKER_INPUT_DESCRIPTION=Unos vremena -TIMEPICKER_CLOCK_DIAL_LABEL=Clock Dial +TIMEPICKER_CLOCK_DIAL_LABEL=Brojčanik sata -DURATION_INPUT_DESCRIPTION=Duration Input +DURATION_INPUT_DESCRIPTION=Unos trajanja DATETIME_PICKER_DATE_BUTTON=Datum diff --git a/packages/main/src/i18n/messagebundle_hu.properties b/packages/main/src/i18n/messagebundle_hu.properties index 5d5f9b539804..bec305439d92 100644 --- a/packages/main/src/i18n/messagebundle_hu.properties +++ b/packages/main/src/i18n/messagebundle_hu.properties @@ -157,6 +157,8 @@ RATING_INDICATOR_TOOLTIP_TEXT=Értékelés RATING_INDICATOR_TEXT=Értékelés +RATING_INDICATOR_ARIA_DESCRIPTION=Kötelező + RESPONSIVE_POPOVER_CLOSE_DIALOG_BUTTON=Elutasítás SEGMENTEDBUTTON_ARIA_DESCRIPTION=Szegmentált gombcsoport @@ -219,9 +221,9 @@ TIMEPICKER_CANCEL_BUTTON=Megszakít. TIMEPICKER_INPUT_DESCRIPTION=Idő bevitele -TIMEPICKER_CLOCK_DIAL_LABEL=Clock Dial +TIMEPICKER_CLOCK_DIAL_LABEL=Óraszámlap -DURATION_INPUT_DESCRIPTION=Duration Input +DURATION_INPUT_DESCRIPTION=Időtartam bevitele DATETIME_PICKER_DATE_BUTTON=Dátum diff --git a/packages/main/src/i18n/messagebundle_id.properties b/packages/main/src/i18n/messagebundle_id.properties index f968d0f1630a..15b73d4c7c3c 100644 --- a/packages/main/src/i18n/messagebundle_id.properties +++ b/packages/main/src/i18n/messagebundle_id.properties @@ -157,6 +157,8 @@ RATING_INDICATOR_TOOLTIP_TEXT=Peringkat RATING_INDICATOR_TEXT=Indikator Peringkat +RATING_INDICATOR_ARIA_DESCRIPTION=Wajib + RESPONSIVE_POPOVER_CLOSE_DIALOG_BUTTON=Tolak SEGMENTEDBUTTON_ARIA_DESCRIPTION=Kelompok tombol tersegmentasi @@ -219,9 +221,9 @@ TIMEPICKER_CANCEL_BUTTON=Batalkan TIMEPICKER_INPUT_DESCRIPTION=Input Waktu -TIMEPICKER_CLOCK_DIAL_LABEL=Clock Dial +TIMEPICKER_CLOCK_DIAL_LABEL=Tampilan Jam -DURATION_INPUT_DESCRIPTION=Duration Input +DURATION_INPUT_DESCRIPTION=Input Durasi DATETIME_PICKER_DATE_BUTTON=Tanggal diff --git a/packages/main/src/i18n/messagebundle_it.properties b/packages/main/src/i18n/messagebundle_it.properties index 09e66df87333..44db4fc63ce5 100644 --- a/packages/main/src/i18n/messagebundle_it.properties +++ b/packages/main/src/i18n/messagebundle_it.properties @@ -157,6 +157,8 @@ RATING_INDICATOR_TOOLTIP_TEXT=Valutazione RATING_INDICATOR_TEXT=Indicatore di valutazione +RATING_INDICATOR_ARIA_DESCRIPTION=Obbligatorio + RESPONSIVE_POPOVER_CLOSE_DIALOG_BUTTON=Declina SEGMENTEDBUTTON_ARIA_DESCRIPTION=Gruppo pulsanti segmentati @@ -219,9 +221,9 @@ TIMEPICKER_CANCEL_BUTTON=Annulla TIMEPICKER_INPUT_DESCRIPTION=Inserimento ora -TIMEPICKER_CLOCK_DIAL_LABEL=Clock Dial +TIMEPICKER_CLOCK_DIAL_LABEL=Quadrante dell’orologio -DURATION_INPUT_DESCRIPTION=Duration Input +DURATION_INPUT_DESCRIPTION=Inserimento durata DATETIME_PICKER_DATE_BUTTON=Data diff --git a/packages/main/src/i18n/messagebundle_iw.properties b/packages/main/src/i18n/messagebundle_iw.properties index e8b67be0ab40..a06810316b2a 100644 --- a/packages/main/src/i18n/messagebundle_iw.properties +++ b/packages/main/src/i18n/messagebundle_iw.properties @@ -157,6 +157,8 @@ RATING_INDICATOR_TOOLTIP_TEXT=דירוג RATING_INDICATOR_TEXT=סמן דירוג +RATING_INDICATOR_ARIA_DESCRIPTION=נדרש + RESPONSIVE_POPOVER_CLOSE_DIALOG_BUTTON=דחה SEGMENTEDBUTTON_ARIA_DESCRIPTION=קבוצת סרגלי לחצנים @@ -219,9 +221,9 @@ TIMEPICKER_CANCEL_BUTTON=בטל TIMEPICKER_INPUT_DESCRIPTION=קלט של שעה -TIMEPICKER_CLOCK_DIAL_LABEL=Clock Dial +TIMEPICKER_CLOCK_DIAL_LABEL=מחוגה של שעון -DURATION_INPUT_DESCRIPTION=Duration Input +DURATION_INPUT_DESCRIPTION=קלט של משך זמן DATETIME_PICKER_DATE_BUTTON=תאריך diff --git a/packages/main/src/i18n/messagebundle_ja.properties b/packages/main/src/i18n/messagebundle_ja.properties index a49a4e8b3099..b53627e07ef3 100644 --- a/packages/main/src/i18n/messagebundle_ja.properties +++ b/packages/main/src/i18n/messagebundle_ja.properties @@ -157,6 +157,8 @@ RATING_INDICATOR_TOOLTIP_TEXT=評価 RATING_INDICATOR_TEXT=評価インジケータ +RATING_INDICATOR_ARIA_DESCRIPTION=必須 + RESPONSIVE_POPOVER_CLOSE_DIALOG_BUTTON=拒否 SEGMENTEDBUTTON_ARIA_DESCRIPTION=セグメントボタングループ @@ -219,9 +221,9 @@ TIMEPICKER_CANCEL_BUTTON=キャンセル TIMEPICKER_INPUT_DESCRIPTION=時刻入力 -TIMEPICKER_CLOCK_DIAL_LABEL=Clock Dial +TIMEPICKER_CLOCK_DIAL_LABEL=時計ダイアル -DURATION_INPUT_DESCRIPTION=Duration Input +DURATION_INPUT_DESCRIPTION=期間入力 DATETIME_PICKER_DATE_BUTTON=日付 diff --git a/packages/main/src/i18n/messagebundle_kk.properties b/packages/main/src/i18n/messagebundle_kk.properties index e6e394474d71..597099f35b6c 100644 --- a/packages/main/src/i18n/messagebundle_kk.properties +++ b/packages/main/src/i18n/messagebundle_kk.properties @@ -157,6 +157,8 @@ RATING_INDICATOR_TOOLTIP_TEXT=Рейтинг RATING_INDICATOR_TEXT=Рейтинг индикаторы +RATING_INDICATOR_ARIA_DESCRIPTION=Міндетті + RESPONSIVE_POPOVER_CLOSE_DIALOG_BUTTON=Бас тарту SEGMENTEDBUTTON_ARIA_DESCRIPTION=Сегменттелген түймелер тобы @@ -219,9 +221,9 @@ TIMEPICKER_CANCEL_BUTTON=Болдырмау TIMEPICKER_INPUT_DESCRIPTION=Уақыт енгізу -TIMEPICKER_CLOCK_DIAL_LABEL=Clock Dial +TIMEPICKER_CLOCK_DIAL_LABEL=Циферблат -DURATION_INPUT_DESCRIPTION=Duration Input +DURATION_INPUT_DESCRIPTION=Ұзақтық енгізу DATETIME_PICKER_DATE_BUTTON=Күні diff --git a/packages/main/src/i18n/messagebundle_ko.properties b/packages/main/src/i18n/messagebundle_ko.properties index 412b9764cef9..cebb115671df 100644 --- a/packages/main/src/i18n/messagebundle_ko.properties +++ b/packages/main/src/i18n/messagebundle_ko.properties @@ -157,6 +157,8 @@ RATING_INDICATOR_TOOLTIP_TEXT=평가 RATING_INDICATOR_TEXT=평가 지시자 +RATING_INDICATOR_ARIA_DESCRIPTION=필요 + RESPONSIVE_POPOVER_CLOSE_DIALOG_BUTTON=거부 SEGMENTEDBUTTON_ARIA_DESCRIPTION=세그멘테이션된 버튼 그룹 @@ -219,9 +221,9 @@ TIMEPICKER_CANCEL_BUTTON=취소 TIMEPICKER_INPUT_DESCRIPTION=시간 입력 -TIMEPICKER_CLOCK_DIAL_LABEL=Clock Dial +TIMEPICKER_CLOCK_DIAL_LABEL=시계 다이얼 -DURATION_INPUT_DESCRIPTION=Duration Input +DURATION_INPUT_DESCRIPTION=기간 입력 DATETIME_PICKER_DATE_BUTTON=일자 diff --git a/packages/main/src/i18n/messagebundle_lt.properties b/packages/main/src/i18n/messagebundle_lt.properties index 2271082d20f9..5ff123927fdb 100644 --- a/packages/main/src/i18n/messagebundle_lt.properties +++ b/packages/main/src/i18n/messagebundle_lt.properties @@ -157,6 +157,8 @@ RATING_INDICATOR_TOOLTIP_TEXT=Įvertinimas RATING_INDICATOR_TEXT=Įvertinimo indikatorius +RATING_INDICATOR_ARIA_DESCRIPTION=Būtina + RESPONSIVE_POPOVER_CLOSE_DIALOG_BUTTON=Atmesti SEGMENTEDBUTTON_ARIA_DESCRIPTION=Segmentuotų mygtukų grupė @@ -219,9 +221,9 @@ TIMEPICKER_CANCEL_BUTTON=Atšaukti TIMEPICKER_INPUT_DESCRIPTION=Laiko įvestis -TIMEPICKER_CLOCK_DIAL_LABEL=Clock Dial +TIMEPICKER_CLOCK_DIAL_LABEL=Laikrodžio ciferblatas -DURATION_INPUT_DESCRIPTION=Duration Input +DURATION_INPUT_DESCRIPTION=Trukmės įvestis DATETIME_PICKER_DATE_BUTTON=Data diff --git a/packages/main/src/i18n/messagebundle_lv.properties b/packages/main/src/i18n/messagebundle_lv.properties index 6f7f004b380f..2cbe9bdde7a7 100644 --- a/packages/main/src/i18n/messagebundle_lv.properties +++ b/packages/main/src/i18n/messagebundle_lv.properties @@ -157,6 +157,8 @@ RATING_INDICATOR_TOOLTIP_TEXT=Vērtēšana RATING_INDICATOR_TEXT=Vērtējuma indikators +RATING_INDICATOR_ARIA_DESCRIPTION=Nepieciešams + RESPONSIVE_POPOVER_CLOSE_DIALOG_BUTTON=Noraidīt SEGMENTEDBUTTON_ARIA_DESCRIPTION=Segmentētu pogu grupa @@ -219,9 +221,9 @@ TIMEPICKER_CANCEL_BUTTON=Atcelt TIMEPICKER_INPUT_DESCRIPTION=Laika ievade -TIMEPICKER_CLOCK_DIAL_LABEL=Clock Dial +TIMEPICKER_CLOCK_DIAL_LABEL=Pulksteņiezvane -DURATION_INPUT_DESCRIPTION=Duration Input +DURATION_INPUT_DESCRIPTION=Ilguma ievade DATETIME_PICKER_DATE_BUTTON=Datums diff --git a/packages/main/src/i18n/messagebundle_ms.properties b/packages/main/src/i18n/messagebundle_ms.properties index c129ed9f0ce4..046ed988b036 100644 --- a/packages/main/src/i18n/messagebundle_ms.properties +++ b/packages/main/src/i18n/messagebundle_ms.properties @@ -157,6 +157,8 @@ RATING_INDICATOR_TOOLTIP_TEXT=Penarafan RATING_INDICATOR_TEXT=Penunjuk Penarafan +RATING_INDICATOR_ARIA_DESCRIPTION=Diperlukan + RESPONSIVE_POPOVER_CLOSE_DIALOG_BUTTON=Kecilkan SEGMENTEDBUTTON_ARIA_DESCRIPTION=Kumpulan butang disegmenkan @@ -219,9 +221,9 @@ TIMEPICKER_CANCEL_BUTTON=Batal TIMEPICKER_INPUT_DESCRIPTION=Input Masa -TIMEPICKER_CLOCK_DIAL_LABEL=Clock Dial +TIMEPICKER_CLOCK_DIAL_LABEL=Dail Jam -DURATION_INPUT_DESCRIPTION=Duration Input +DURATION_INPUT_DESCRIPTION=Input Jangka Masa DATETIME_PICKER_DATE_BUTTON=Tarikh diff --git a/packages/main/src/i18n/messagebundle_nl.properties b/packages/main/src/i18n/messagebundle_nl.properties index 295ce56d1701..060dd2ac509d 100644 --- a/packages/main/src/i18n/messagebundle_nl.properties +++ b/packages/main/src/i18n/messagebundle_nl.properties @@ -157,6 +157,8 @@ RATING_INDICATOR_TOOLTIP_TEXT=Waardering RATING_INDICATOR_TEXT=Waarderingsindicator +RATING_INDICATOR_ARIA_DESCRIPTION=Verplicht + RESPONSIVE_POPOVER_CLOSE_DIALOG_BUTTON=Afwijzen SEGMENTEDBUTTON_ARIA_DESCRIPTION=Groep gesegmenteerde knoppen @@ -219,9 +221,9 @@ TIMEPICKER_CANCEL_BUTTON=Annuleren TIMEPICKER_INPUT_DESCRIPTION=Tijdinvoer -TIMEPICKER_CLOCK_DIAL_LABEL=Clock Dial +TIMEPICKER_CLOCK_DIAL_LABEL=Wijzerplaat van klok -DURATION_INPUT_DESCRIPTION=Duration Input +DURATION_INPUT_DESCRIPTION=Duurinvoer DATETIME_PICKER_DATE_BUTTON=Datum diff --git a/packages/main/src/i18n/messagebundle_no.properties b/packages/main/src/i18n/messagebundle_no.properties index 7c9a417ec487..0b03a962e353 100644 --- a/packages/main/src/i18n/messagebundle_no.properties +++ b/packages/main/src/i18n/messagebundle_no.properties @@ -157,6 +157,8 @@ RATING_INDICATOR_TOOLTIP_TEXT=Vurdering RATING_INDICATOR_TEXT=Vurderingsindikator +RATING_INDICATOR_ARIA_DESCRIPTION=Obligatorisk + RESPONSIVE_POPOVER_CLOSE_DIALOG_BUTTON=Avvis SEGMENTEDBUTTON_ARIA_DESCRIPTION=Segmentert knappegruppe @@ -219,9 +221,9 @@ TIMEPICKER_CANCEL_BUTTON=Avbryt TIMEPICKER_INPUT_DESCRIPTION=Inntasting av tidspunkt -TIMEPICKER_CLOCK_DIAL_LABEL=Clock Dial +TIMEPICKER_CLOCK_DIAL_LABEL=Urskive -DURATION_INPUT_DESCRIPTION=Duration Input +DURATION_INPUT_DESCRIPTION=Inntasting av varighet DATETIME_PICKER_DATE_BUTTON=Dato diff --git a/packages/main/src/i18n/messagebundle_pl.properties b/packages/main/src/i18n/messagebundle_pl.properties index dc9383c526de..29efe827f089 100644 --- a/packages/main/src/i18n/messagebundle_pl.properties +++ b/packages/main/src/i18n/messagebundle_pl.properties @@ -157,6 +157,8 @@ RATING_INDICATOR_TOOLTIP_TEXT=Ocena RATING_INDICATOR_TEXT=Wskaźnik oceny +RATING_INDICATOR_ARIA_DESCRIPTION=Wymagane + RESPONSIVE_POPOVER_CLOSE_DIALOG_BUTTON=Odrzuć SEGMENTEDBUTTON_ARIA_DESCRIPTION=Grupa przycisków podzielonych na segmenty @@ -219,9 +221,9 @@ TIMEPICKER_CANCEL_BUTTON=Anuluj TIMEPICKER_INPUT_DESCRIPTION=Wpis czasu -TIMEPICKER_CLOCK_DIAL_LABEL=Clock Dial +TIMEPICKER_CLOCK_DIAL_LABEL=Tarcza zegara -DURATION_INPUT_DESCRIPTION=Duration Input +DURATION_INPUT_DESCRIPTION=Wpis czasu trwania DATETIME_PICKER_DATE_BUTTON=Data diff --git a/packages/main/src/i18n/messagebundle_pt.properties b/packages/main/src/i18n/messagebundle_pt.properties index c99aadd2e345..ec0d97645b9d 100644 --- a/packages/main/src/i18n/messagebundle_pt.properties +++ b/packages/main/src/i18n/messagebundle_pt.properties @@ -157,6 +157,8 @@ RATING_INDICATOR_TOOLTIP_TEXT=Avaliação RATING_INDICATOR_TEXT=Código de avaliação +RATING_INDICATOR_ARIA_DESCRIPTION=Obrigatório + RESPONSIVE_POPOVER_CLOSE_DIALOG_BUTTON=Recusar SEGMENTEDBUTTON_ARIA_DESCRIPTION=Grupo de botões segmentados @@ -219,9 +221,9 @@ TIMEPICKER_CANCEL_BUTTON=Cancelar TIMEPICKER_INPUT_DESCRIPTION=Entrada de hora -TIMEPICKER_CLOCK_DIAL_LABEL=Clock Dial +TIMEPICKER_CLOCK_DIAL_LABEL=Relógio -DURATION_INPUT_DESCRIPTION=Duration Input +DURATION_INPUT_DESCRIPTION=Entrada de duração DATETIME_PICKER_DATE_BUTTON=Data diff --git a/packages/main/src/i18n/messagebundle_pt_PT.properties b/packages/main/src/i18n/messagebundle_pt_PT.properties index 64f9f8f0a0b2..afea558b8c65 100644 --- a/packages/main/src/i18n/messagebundle_pt_PT.properties +++ b/packages/main/src/i18n/messagebundle_pt_PT.properties @@ -157,6 +157,8 @@ RATING_INDICATOR_TOOLTIP_TEXT=Classificação RATING_INDICATOR_TEXT=Indicador de classificação +RATING_INDICATOR_ARIA_DESCRIPTION=Obrigatório + RESPONSIVE_POPOVER_CLOSE_DIALOG_BUTTON=Recusar SEGMENTEDBUTTON_ARIA_DESCRIPTION=Grupo de botões segmentados @@ -219,9 +221,9 @@ TIMEPICKER_CANCEL_BUTTON=Cancelar TIMEPICKER_INPUT_DESCRIPTION=Introdução de hora -TIMEPICKER_CLOCK_DIAL_LABEL=Clock Dial +TIMEPICKER_CLOCK_DIAL_LABEL=Mostrador de relógio -DURATION_INPUT_DESCRIPTION=Duration Input +DURATION_INPUT_DESCRIPTION=Introdução de duração DATETIME_PICKER_DATE_BUTTON=Data diff --git a/packages/main/src/i18n/messagebundle_ro.properties b/packages/main/src/i18n/messagebundle_ro.properties index 22df748f0a1b..6a7b86ecde5a 100644 --- a/packages/main/src/i18n/messagebundle_ro.properties +++ b/packages/main/src/i18n/messagebundle_ro.properties @@ -157,6 +157,8 @@ RATING_INDICATOR_TOOLTIP_TEXT=Evaluare RATING_INDICATOR_TEXT=Indicator de evaluare +RATING_INDICATOR_ARIA_DESCRIPTION=Necesar + RESPONSIVE_POPOVER_CLOSE_DIALOG_BUTTON=Refuzare SEGMENTEDBUTTON_ARIA_DESCRIPTION=Grup de butoane segmentate @@ -219,9 +221,9 @@ TIMEPICKER_CANCEL_BUTTON=Anul. TIMEPICKER_INPUT_DESCRIPTION=Intrare oră -TIMEPICKER_CLOCK_DIAL_LABEL=Clock Dial +TIMEPICKER_CLOCK_DIAL_LABEL=Cadran orar -DURATION_INPUT_DESCRIPTION=Duration Input +DURATION_INPUT_DESCRIPTION=Intrare durată DATETIME_PICKER_DATE_BUTTON=Dată diff --git a/packages/main/src/i18n/messagebundle_ru.properties b/packages/main/src/i18n/messagebundle_ru.properties index c76ec54acef6..99e81d7155c3 100644 --- a/packages/main/src/i18n/messagebundle_ru.properties +++ b/packages/main/src/i18n/messagebundle_ru.properties @@ -157,6 +157,8 @@ RATING_INDICATOR_TOOLTIP_TEXT=Оценка RATING_INDICATOR_TEXT=Звезды оценки +RATING_INDICATOR_ARIA_DESCRIPTION=Обязательно + RESPONSIVE_POPOVER_CLOSE_DIALOG_BUTTON=Отклонить SEGMENTEDBUTTON_ARIA_DESCRIPTION=Группа сегментированных кнопок @@ -219,9 +221,9 @@ TIMEPICKER_CANCEL_BUTTON=Отменить TIMEPICKER_INPUT_DESCRIPTION=Ввод времени -TIMEPICKER_CLOCK_DIAL_LABEL=Clock Dial +TIMEPICKER_CLOCK_DIAL_LABEL=Циферблат -DURATION_INPUT_DESCRIPTION=Duration Input +DURATION_INPUT_DESCRIPTION=Ввод продолжительности DATETIME_PICKER_DATE_BUTTON=Дата diff --git a/packages/main/src/i18n/messagebundle_sh.properties b/packages/main/src/i18n/messagebundle_sh.properties index 998433312f03..f4912dfe2ad3 100644 --- a/packages/main/src/i18n/messagebundle_sh.properties +++ b/packages/main/src/i18n/messagebundle_sh.properties @@ -157,6 +157,8 @@ RATING_INDICATOR_TOOLTIP_TEXT=Vrednovanje RATING_INDICATOR_TEXT=Pokazatelj vrednovanja +RATING_INDICATOR_ARIA_DESCRIPTION=Obavezno + RESPONSIVE_POPOVER_CLOSE_DIALOG_BUTTON=Odbij SEGMENTEDBUTTON_ARIA_DESCRIPTION=Grupa segmentirane dugmadi @@ -219,9 +221,9 @@ TIMEPICKER_CANCEL_BUTTON=Odustani TIMEPICKER_INPUT_DESCRIPTION=Unos vremena -TIMEPICKER_CLOCK_DIAL_LABEL=Clock Dial +TIMEPICKER_CLOCK_DIAL_LABEL=Brojčanik sata -DURATION_INPUT_DESCRIPTION=Duration Input +DURATION_INPUT_DESCRIPTION=Unos trajanja DATETIME_PICKER_DATE_BUTTON=Datum diff --git a/packages/main/src/i18n/messagebundle_sk.properties b/packages/main/src/i18n/messagebundle_sk.properties index 7cb8fd2d470d..cae1b5fc6afe 100644 --- a/packages/main/src/i18n/messagebundle_sk.properties +++ b/packages/main/src/i18n/messagebundle_sk.properties @@ -157,6 +157,8 @@ RATING_INDICATOR_TOOLTIP_TEXT=Hodnotenie RATING_INDICATOR_TEXT=Ukazovateľ hodnotenia +RATING_INDICATOR_ARIA_DESCRIPTION=Požadované + RESPONSIVE_POPOVER_CLOSE_DIALOG_BUTTON=Odmietnuť SEGMENTEDBUTTON_ARIA_DESCRIPTION=Skupina segmentovaných tlačidiel @@ -219,9 +221,9 @@ TIMEPICKER_CANCEL_BUTTON=Zrušiť TIMEPICKER_INPUT_DESCRIPTION=Zadanie času -TIMEPICKER_CLOCK_DIAL_LABEL=Clock Dial +TIMEPICKER_CLOCK_DIAL_LABEL=Ciferník hodín -DURATION_INPUT_DESCRIPTION=Duration Input +DURATION_INPUT_DESCRIPTION=Zadanie trvania DATETIME_PICKER_DATE_BUTTON=Dátum diff --git a/packages/main/src/i18n/messagebundle_sl.properties b/packages/main/src/i18n/messagebundle_sl.properties index 2476b5dacf69..5aaeb4639266 100644 --- a/packages/main/src/i18n/messagebundle_sl.properties +++ b/packages/main/src/i18n/messagebundle_sl.properties @@ -157,6 +157,8 @@ RATING_INDICATOR_TOOLTIP_TEXT=Vrednotenje RATING_INDICATOR_TEXT=Zvezdice za ocenjevanje +RATING_INDICATOR_ARIA_DESCRIPTION=Obvezno + RESPONSIVE_POPOVER_CLOSE_DIALOG_BUTTON=Zavrnitev SEGMENTEDBUTTON_ARIA_DESCRIPTION=Skupina segmentiranih gumbov @@ -219,9 +221,9 @@ TIMEPICKER_CANCEL_BUTTON=Prekliči TIMEPICKER_INPUT_DESCRIPTION=Vnos časa -TIMEPICKER_CLOCK_DIAL_LABEL=Clock Dial +TIMEPICKER_CLOCK_DIAL_LABEL=Številčnica ure -DURATION_INPUT_DESCRIPTION=Duration Input +DURATION_INPUT_DESCRIPTION=Vnos trajanja DATETIME_PICKER_DATE_BUTTON=Datum diff --git a/packages/main/src/i18n/messagebundle_sv.properties b/packages/main/src/i18n/messagebundle_sv.properties index 2bc6597f4a1e..e05ca4aaf0e2 100644 --- a/packages/main/src/i18n/messagebundle_sv.properties +++ b/packages/main/src/i18n/messagebundle_sv.properties @@ -157,6 +157,8 @@ RATING_INDICATOR_TOOLTIP_TEXT=Värdering RATING_INDICATOR_TEXT=Värderingsindikator +RATING_INDICATOR_ARIA_DESCRIPTION=Obligatorisk + RESPONSIVE_POPOVER_CLOSE_DIALOG_BUTTON=Avslå SEGMENTEDBUTTON_ARIA_DESCRIPTION=Segmenterad knappgrupp @@ -219,9 +221,9 @@ TIMEPICKER_CANCEL_BUTTON=Avbryt TIMEPICKER_INPUT_DESCRIPTION=Tidsinmatning -TIMEPICKER_CLOCK_DIAL_LABEL=Clock Dial +TIMEPICKER_CLOCK_DIAL_LABEL=Urtavla -DURATION_INPUT_DESCRIPTION=Duration Input +DURATION_INPUT_DESCRIPTION=Tidslängdsinmatning DATETIME_PICKER_DATE_BUTTON=Datum diff --git a/packages/main/src/i18n/messagebundle_th.properties b/packages/main/src/i18n/messagebundle_th.properties index d7a3de11803a..4fd07dbdcf19 100644 --- a/packages/main/src/i18n/messagebundle_th.properties +++ b/packages/main/src/i18n/messagebundle_th.properties @@ -157,6 +157,8 @@ RATING_INDICATOR_TOOLTIP_TEXT=การจัดอันดับ RATING_INDICATOR_TEXT=ตัวบ่งชี้การจัดอันดับ +RATING_INDICATOR_ARIA_DESCRIPTION=ต้องระบุ + RESPONSIVE_POPOVER_CLOSE_DIALOG_BUTTON=ปฏิเสธ SEGMENTEDBUTTON_ARIA_DESCRIPTION=กลุ่มปุ่มที่แบ่งเซกเมนต์ @@ -219,9 +221,9 @@ TIMEPICKER_CANCEL_BUTTON=ยกเลิก TIMEPICKER_INPUT_DESCRIPTION=การป้อนข้อมูลเวลา -TIMEPICKER_CLOCK_DIAL_LABEL=Clock Dial +TIMEPICKER_CLOCK_DIAL_LABEL=หน้าปัดนาฬิกา -DURATION_INPUT_DESCRIPTION=Duration Input +DURATION_INPUT_DESCRIPTION=การป้อนข้อมูลระยะเวลา DATETIME_PICKER_DATE_BUTTON=วันที่ diff --git a/packages/main/src/i18n/messagebundle_tr.properties b/packages/main/src/i18n/messagebundle_tr.properties index f7a4fa3bc8ca..2c17a9c3dab4 100644 --- a/packages/main/src/i18n/messagebundle_tr.properties +++ b/packages/main/src/i18n/messagebundle_tr.properties @@ -157,6 +157,8 @@ RATING_INDICATOR_TOOLTIP_TEXT=Değerleme RATING_INDICATOR_TEXT=Derecelendirme yıldızı +RATING_INDICATOR_ARIA_DESCRIPTION=Gerekli + RESPONSIVE_POPOVER_CLOSE_DIALOG_BUTTON=Reddet SEGMENTEDBUTTON_ARIA_DESCRIPTION=Segmentlere ayrılmış düğme grubu @@ -219,9 +221,9 @@ TIMEPICKER_CANCEL_BUTTON=İptal et TIMEPICKER_INPUT_DESCRIPTION=Zaman girişi -TIMEPICKER_CLOCK_DIAL_LABEL=Clock Dial +TIMEPICKER_CLOCK_DIAL_LABEL=Saat kadranı -DURATION_INPUT_DESCRIPTION=Duration Input +DURATION_INPUT_DESCRIPTION=Süre girişi DATETIME_PICKER_DATE_BUTTON=Tarih diff --git a/packages/main/src/i18n/messagebundle_uk.properties b/packages/main/src/i18n/messagebundle_uk.properties index 609f5b012348..fd82338ac1e6 100644 --- a/packages/main/src/i18n/messagebundle_uk.properties +++ b/packages/main/src/i18n/messagebundle_uk.properties @@ -157,6 +157,8 @@ RATING_INDICATOR_TOOLTIP_TEXT=Рейтинг RATING_INDICATOR_TEXT=Індикатор рейтингу +RATING_INDICATOR_ARIA_DESCRIPTION=Обов'язково + RESPONSIVE_POPOVER_CLOSE_DIALOG_BUTTON=Відхилити SEGMENTEDBUTTON_ARIA_DESCRIPTION=Група сегментованих кнопок @@ -219,9 +221,9 @@ TIMEPICKER_CANCEL_BUTTON=Скасувати TIMEPICKER_INPUT_DESCRIPTION=Введення часу -TIMEPICKER_CLOCK_DIAL_LABEL=Clock Dial +TIMEPICKER_CLOCK_DIAL_LABEL=Циферблат -DURATION_INPUT_DESCRIPTION=Duration Input +DURATION_INPUT_DESCRIPTION=Введення тривалості DATETIME_PICKER_DATE_BUTTON=Дата diff --git a/packages/main/src/i18n/messagebundle_vi.properties b/packages/main/src/i18n/messagebundle_vi.properties index 082d651bab4b..23b9cac27fc3 100644 --- a/packages/main/src/i18n/messagebundle_vi.properties +++ b/packages/main/src/i18n/messagebundle_vi.properties @@ -157,6 +157,8 @@ RATING_INDICATOR_TOOLTIP_TEXT=Đánh giá RATING_INDICATOR_TEXT=Chỉ báo xếp hạng +RATING_INDICATOR_ARIA_DESCRIPTION=Được yêu cầu + RESPONSIVE_POPOVER_CLOSE_DIALOG_BUTTON=Từ chối SEGMENTEDBUTTON_ARIA_DESCRIPTION=Nhóm nút được phân đoạn @@ -219,9 +221,9 @@ TIMEPICKER_CANCEL_BUTTON=Hủy TIMEPICKER_INPUT_DESCRIPTION=Nhập thời gian -TIMEPICKER_CLOCK_DIAL_LABEL=Clock Dial +TIMEPICKER_CLOCK_DIAL_LABEL=Quay số đồng hồ -DURATION_INPUT_DESCRIPTION=Duration Input +DURATION_INPUT_DESCRIPTION=Nhập khoảng thời gian DATETIME_PICKER_DATE_BUTTON=Ngày diff --git a/packages/main/src/i18n/messagebundle_zh_CN.properties b/packages/main/src/i18n/messagebundle_zh_CN.properties index bddb66ccdc55..3ad825e2f508 100644 --- a/packages/main/src/i18n/messagebundle_zh_CN.properties +++ b/packages/main/src/i18n/messagebundle_zh_CN.properties @@ -157,6 +157,8 @@ RATING_INDICATOR_TOOLTIP_TEXT=评级 RATING_INDICATOR_TEXT=评级指示器 +RATING_INDICATOR_ARIA_DESCRIPTION=必需 + RESPONSIVE_POPOVER_CLOSE_DIALOG_BUTTON=拒绝 SEGMENTEDBUTTON_ARIA_DESCRIPTION=分段式按钮组 @@ -219,9 +221,9 @@ TIMEPICKER_CANCEL_BUTTON=取消 TIMEPICKER_INPUT_DESCRIPTION=时间输入 -TIMEPICKER_CLOCK_DIAL_LABEL=Clock Dial +TIMEPICKER_CLOCK_DIAL_LABEL=钟表盘 -DURATION_INPUT_DESCRIPTION=Duration Input +DURATION_INPUT_DESCRIPTION=持续时间输入 DATETIME_PICKER_DATE_BUTTON=日期 diff --git a/packages/main/src/i18n/messagebundle_zh_TW.properties b/packages/main/src/i18n/messagebundle_zh_TW.properties index 0cdebe7023b2..03b0b356f2dd 100644 --- a/packages/main/src/i18n/messagebundle_zh_TW.properties +++ b/packages/main/src/i18n/messagebundle_zh_TW.properties @@ -157,6 +157,8 @@ RATING_INDICATOR_TOOLTIP_TEXT=分級 RATING_INDICATOR_TEXT=分級指示碼 +RATING_INDICATOR_ARIA_DESCRIPTION=必要 + RESPONSIVE_POPOVER_CLOSE_DIALOG_BUTTON=拒絕 SEGMENTEDBUTTON_ARIA_DESCRIPTION=區段按鈕群組 @@ -219,9 +221,9 @@ TIMEPICKER_CANCEL_BUTTON=取消 TIMEPICKER_INPUT_DESCRIPTION=時間輸入 -TIMEPICKER_CLOCK_DIAL_LABEL=Clock Dial +TIMEPICKER_CLOCK_DIAL_LABEL=鐘面 -DURATION_INPUT_DESCRIPTION=Duration Input +DURATION_INPUT_DESCRIPTION=持續期輸入 DATETIME_PICKER_DATE_BUTTON=日期 diff --git a/packages/main/src/themes/Link.css b/packages/main/src/themes/Link.css index a1e3d764139e..763c6ff8393f 100644 --- a/packages/main/src/themes/Link.css +++ b/packages/main/src/themes/Link.css @@ -59,7 +59,7 @@ } .ui5-link-root { - width: 100%; + max-width: 100%; display: inline-block; position: relative; overflow: hidden; diff --git a/packages/main/src/themes/ListItem.css b/packages/main/src/themes/ListItem.css index 4d17bce9ad0b..8abb23289a39 100644 --- a/packages/main/src/themes/ListItem.css +++ b/packages/main/src/themes/ListItem.css @@ -146,7 +146,6 @@ font-size: 0.875rem; min-width: 3.75rem; text-align: end; - max-width: 40%; } :host([description]) .ui5-li-additional-text { diff --git a/packages/main/src/themes/RangeSlider.css b/packages/main/src/themes/RangeSlider.css index 08ea3e78c24a..1d05b3629f2a 100644 --- a/packages/main/src/themes/RangeSlider.css +++ b/packages/main/src/themes/RangeSlider.css @@ -76,7 +76,8 @@ background: var(--_ui5_range_slider_handle_background); } -.ui5-slider-root:hover .ui5-slider-handle:not(:focus) { +.ui5-slider-progress-container:hover ~ .ui5-slider-handle:not(:focus), +.ui5-slider-handle:hover { background: var(--_ui5_range_slider_root_hover_handle_bg); } diff --git a/packages/main/src/themes/SegmentedButton.css b/packages/main/src/themes/SegmentedButton.css index 90963ffa11da..dad64d57a650 100644 --- a/packages/main/src/themes/SegmentedButton.css +++ b/packages/main/src/themes/SegmentedButton.css @@ -3,10 +3,13 @@ :host(:not([hidden])) { display: inline-block; + min-width: calc(var(--_ui5_segmented_btn_items_count) * 2.5rem); } .ui5-segmented-button-root { - display: flex; + width: inherit; + display: grid; + grid-template-columns: repeat(var(--_ui5_segmented_btn_items_count), minmax(2.5rem, 1fr)); margin: 0; padding: 0; background-color: var(--sapButton_Background); diff --git a/packages/main/src/themes/SliderBase.css b/packages/main/src/themes/SliderBase.css index 5c19bf4114c4..6bcc9abd19d7 100644 --- a/packages/main/src/themes/SliderBase.css +++ b/packages/main/src/themes/SliderBase.css @@ -121,7 +121,7 @@ height: var(--_ui5_slider_handle_icon_size); } -.ui5-slider-root:hover .ui5-slider-handle:not(:focus), +.ui5-slider-progress-container:hover ~ .ui5-slider-handle:not(:focus), .ui5-slider-handle:hover { background: var(--_ui5_slider_handle_hover_background); border: var(--_ui5_slider_handle_hover_border); diff --git a/packages/main/src/themes/TabContainer.css b/packages/main/src/themes/TabContainer.css index 36882477f646..dd2aa81b5b07 100644 --- a/packages/main/src/themes/TabContainer.css +++ b/packages/main/src/themes/TabContainer.css @@ -74,11 +74,18 @@ } .ui5-tc__overflow > [ui5-button] { - margin-top: 0.25rem; border-radius: 0.75rem; height: 1.5rem; } +.ui5-tc__overflow > [ui5-button]:not([active]) { + color: var(--_ui5_tc_overflow_text_color); +} + +.ui5-tc__overflow > [ui5-button]:not([active]):hover { + color: var(--_ui5_tc_overflow_text_color); +} + .ui5-tc__overflow > [ui5-button][focused] { outline-offset: 0.125rem; --_ui5_button_focused_border: none; diff --git a/packages/main/src/themes/TabInStrip.css b/packages/main/src/themes/TabInStrip.css index d29721ec8173..6a770f0bb4b4 100644 --- a/packages/main/src/themes/TabInStrip.css +++ b/packages/main/src/themes/TabInStrip.css @@ -4,7 +4,7 @@ height: var(--_ui5_tc_header_height); color: var(--_ui5_tc_headerItem_color); cursor: pointer; - padding: var(--_ui5_tc_headeritem_padding); + padding: 0 var(--_ui5_tc_headeritem_padding); font-size: var(--sapFontSmallSize); font-weight: var(--_ui5_tc_headeritem_text_font_weight); text-shadow: var(--sapContent_TextShadow); @@ -35,20 +35,31 @@ .ui5-tab-strip-itemContent { display: flex; + height: 100%; min-width: 0; justify-content: center; flex-direction: column; - padding: var(--_ui5_tc_headerItemContent_padding); border: var(--_ui5_tc_headerItemContent_default_focus_border); border-radius: var(--_ui5_tc_headerItemContent_focus_border_radius); - pointer-events: none; transition: var(--_ui5_tc_headerItem_transition); } + +.ui5-tab-expand-button { + display: flex; + flex-direction: column; + justify-content: center; + position: relative; + z-index: 1; + background-color: var(--_ui5_tc_header_background); + padding-inline-end: 0.188rem; +} + .ui5-tab-expand-button > [ui5-button] { height: 1.5rem; min-width: 1.5rem; - margin-top: 0.25rem; - margin-inline-start: 0.625rem; + margin-inline-start: var(--_ui5_tc_headerItem_expand_button_margin_inline_start); + --_ui5_button_border_radius: var(--_ui5_tc_headerItem_expand_button_border_radius); + --_ui5_button_focused_border_radius: var(--_ui5_tc_headerItem_expand_button_border_radius); } .ui5-tab-expand-button > [ui5-button]:not([active]) { @@ -63,8 +74,27 @@ color: var(--_ui5_tc_headerItem_text_selected_hover_color); } +.ui5-tab-expand-button-separator { + display: var(--_ui5_tc_headerItem_expand_button_separator_display); + position: relative; + width: 0.0625rem; + right: -0.0625rem; + height: 1rem; + background: var(--sapTextColor); + margin-inline-start: 0.0625rem; + z-index: 2; +} + +.ui5-tab-expand-button:hover { + z-index: 2; +} + +.ui5-tab-strip-item--selected .ui5-tab-expand-button-separator { + background: var(--_ui5_tc_headerItem_text_selected_color); +} + .ui5-tab-single-click-icon { - margin-inline-start: 0.875rem; + margin-inline-start: var(--_ui5_tc_headerItem_single_click_expand_button_margin_inline_start); } .ui5-tab-strip-item--selected.ui5-tab-strip-item--textOnly { @@ -87,12 +117,16 @@ .ui5-tab-strip-item--singleClickArea .ui5-tab-strip-itemText .ui5-tab-single-click-icon > [ui5-icon] { color: var(--_ui5_tc_headerItem_color); } -.ui5-tab-strip-item:hover:not(.ui5-tab-strip-item--selected):not(.ui5-tab-strip-item--negative).ui5-tab-strip-item--textOnly, -.ui5-tab-strip-item--singleClickArea.ui5-tab-strip-item:hover:not(.ui5-tab-strip-item--selected):not(.ui5-tab-strip-item--disabled) .ui5-tab-single-click-icon > [ui5-icon] { + +/* hover effects */ +.ui5-tab-strip-item--textOnly:not(.ui5-tab-strip-item--twoClickArea):not(.ui5-tab-strip-item--selected):not(.ui5-tab-strip-item--negative):hover, +.ui5-tab-strip-item--twoClickArea:not(.ui5-tab-strip-item--selected):not(.ui5-tab-strip-item--negative) .ui5-tab-strip-itemContent:hover, +.ui5-tab-strip-item--singleClickArea:not(.ui5-tab-strip-item--selected):not(.ui5-tab-strip-item--disabled):hover .ui5-tab-single-click-icon > [ui5-icon] { color: var(--_ui5_tc_headerItem_text_hover_color); } -/* the outline when hover or selected */ + +/* selection indicator */ .ui5-tab-strip-item--selected.ui5-tab-strip-item--textOnly .ui5-tab-strip-itemContent::after, .ui5-tab-strip-item--selected.ui5-tab-strip-item--mixedMode .ui5-tab-strip-itemContent::after, .ui5-tab-strip-item--selected .ui5-tab-strip-item-icon-outer::after { @@ -107,39 +141,11 @@ height: var(--_ui5_tc_headerItemContent_border_height); } -/* the outline when hover and not selected */ -.ui5-tab-strip-item--textOnly:hover:not(.ui5-tab-strip-item--selected) .ui5-tab-strip-itemContent::after, -.ui5-tab-strip-item--mixedMode:hover:not(.ui5-tab-strip-item--selected) .ui5-tab-strip-itemContent::after, -.ui5-tab-strip-item-icon-outer:hover:not(.ui5-tab-strip-item--selected) .ui5-tab-strip-itemContent::after { - border-color: var(--_ui5_tc_headerItem_hover_border_bg); - background-color: var(--_ui5_tc_headerItem_hover_border_bg); -} - -/* the outline when hover and selected */ -.ui5-tab-strip-item--textOnly:hover.ui5-tab-strip-item--selected .ui5-tab-strip-itemContent::after, -.ui5-tab-strip-item--mixedMode:hover.ui5-tab-strip-item--selected .ui5-tab-strip-itemContent::after, -.ui5-tab-strip-item-icon-outer:hover.ui5-tab-strip-item--selected .ui5-tab-strip-itemContent::after { - background-color: var(--_ui5_tc_headerItem_hover_selected_hover_border_bg); -} - -/* the outline offset when hover and selected */ -.ui5-tab-strip-item--textOnly:hover .ui5-tab-strip-itemContent::after, -.ui5-tab-strip-item--mixedMode:hover .ui5-tab-strip-itemContent::after, -.ui5-tab-strip-item-icon-outer:hover .ui5-tab-strip-itemContent::after, +/* selection indicator offset in text only and mixed modes */ .ui5-tab-strip-item--selected.ui5-tab-strip-item--textOnly .ui5-tab-strip-itemContent::after, .ui5-tab-strip-item--selected.ui5-tab-strip-item--mixedMode .ui5-tab-strip-itemContent::after { - left: var(--_ui5_tc_headerItemContent_offset); - right: var(--_ui5_tc_headerItemContent_offset); -} - -/* the outline offset when focused */ -.ui5-tab-strip-item--textOnly:focus-visible .ui5-tab-strip-itemContent::after, -.ui5-tab-strip-item--mixedMode:focus-visible .ui5-tab-strip-itemContent::after, -.ui5-tab-strip-item-icon-outer:focus-visible .ui5-tab-strip-itemContent::after, -.ui5-tab-strip-item--selected.ui5-tab-strip-item--textOnly:focus-visible .ui5-tab-strip-itemContent::after, -.ui5-tab-strip-item--selected.ui5-tab-strip-item--mixedMode:focus-visible .ui5-tab-strip-itemContent::after { - left: var(--_ui5_tc_headerItemContent_focus_offset); - right: var(--_ui5_tc_headerItemContent_focus_offset); + left: var(--_ui5_tc_headeritem_padding); + right: var(--_ui5_tc_headeritem_padding); } .ui5-tab-strip-item--selected .ui5-tab-strip-item-icon-outer::after { @@ -292,7 +298,7 @@ /*** Semantic states ***/ .ui5-tab-strip-item--positive.ui5-tab-strip-item--textOnly .ui5-tab-strip-itemText, .ui5-tab-strip-item--positive .ui5-tab-strip-item-icon-outer { - color: var(--sapPositiveColor); + color: var(--_ui5_tc_headerItem_positive_color); border-color: var(--_ui5_tc_headerItem_positive_selected_border_color); } @@ -323,7 +329,7 @@ .ui5-tab-strip-item--negative.ui5-tab-strip-item--textOnly .ui5-tab-strip-itemText, .ui5-tab-strip-item--negative .ui5-tab-strip-item-icon-outer { - color: var(--sapNegativeColor); + color: var(--_ui5_tc_headerItem_negative_color); border-color: var(--_ui5_tc_headerItem_negative_selected_border_color); } @@ -347,7 +353,7 @@ .ui5-tab-strip-item--critical.ui5-tab-strip-item--textOnly .ui5-tab-strip-itemText, .ui5-tab-strip-item--critical .ui5-tab-strip-item-icon-outer { - color: var(--sapCriticalColor); + color: var(--_ui5_tc_headerItem_critical_color); border-color: var(--_ui5_tc_headerItem_critical_selected_border_color); } @@ -371,7 +377,7 @@ .ui5-tab-strip-item--neutral.ui5-tab-strip-item--textOnly .ui5-tab-strip-itemText, .ui5-tab-strip-item--neutral .ui5-tab-strip-item-icon-outer { - color: var(--sapNeutralColor); + color: var(--_ui5_tc_headerItem_neutral_color); border-color: var(--_ui5_tc_headerItem_neutral_selected_border_color); } diff --git a/packages/main/src/themes/Token.css b/packages/main/src/themes/Token.css index 2bbd3a7636a0..bbeaa741d073 100644 --- a/packages/main/src/themes/Token.css +++ b/packages/main/src/themes/Token.css @@ -6,10 +6,10 @@ color: var(--_ui5_token_text_color); height: var(--_ui5_token_height); box-sizing: border-box; - margin-top: var(--_ui5_token_top_margin); - margin-bottom: var(--_ui5_token_bottom_margin); +} + +:host(:not([single-token])) { margin-inline-end: var(--_ui5_token_right_margin); - position: relative; } :host([overflows]) { @@ -28,7 +28,6 @@ :host([selected]:not([readonly])) { background: var(--sapButton_Selected_Background); border: var(--sapButton_BorderWidth) solid var(--sapButton_Selected_BorderColor); - box-shadow: var(--_ui5_token_selected_box_shadow); } :host([selected]:not([readonly])) .ui5-token--wrapper { @@ -38,26 +37,26 @@ } :host([selected]:not([readonly]):hover) { - background: var(--_ui5_token_selected_hover_background); + background: var(--sapButton_Selected_Hover_Background); border-color: var(--_ui5_token_selected_hover_border_color); - box-shadow: var(--_ui5_token_selected_box_shadow); } :host([readonly]) { background: var(--_ui5_token_readonly_background); + border-color: var(--sapField_ReadOnly_BorderColor); color: var(--_ui5_token_readonly_color); } :host([readonly]) .ui5-token--wrapper { - padding: 0 var(--_ui5_token_readonly_padding); + padding: var(--_ui5_token_readonly_padding); } :host([selected]) .ui5-token--wrapper:focus { outline: var(--_ui5_token_selected_focus_outline); } -:host([selected]) .ui5-token--text, -:host([selected]) .ui5-token--icon { +:host([selected]:not([readonly])) .ui5-token--text, +:host([selected]:not([readonly])) .ui5-token--icon { top: var(--_ui5_token_text_icon_top); position: relative; } @@ -80,6 +79,9 @@ font-family: "72override", var(--sapFontFamily); user-select: none; } +.ui5-token--wrapper { + position: relative; +} :host([selected]) .ui5-token--wrapper { font-family: var(--_ui5_token_selected_text_font_family); @@ -95,7 +97,7 @@ position: absolute; pointer-events: none; z-index: 2; - border: var(--sapContent_FocusWidth) var(--sapContent_FocusStyle) var(--_ui5_input_focus_outline_color); + border: var(--sapContent_FocusWidth) var(--sapContent_FocusStyle) var(--sapContent_FocusColor); border-radius: var(--_ui5_token_focus_outline_border_radius); top: var(--_ui5_token_focus_offset); bottom: var(--_ui5_token_focus_offset); @@ -103,6 +105,10 @@ right: var(--_ui5_token_focus_offset); } +:host([focused][selected]:not([readonly])) .ui5-token--wrapper:focus::after { + bottom: var(--_ui5_token_selected_focused_offset_bottom) +} + .ui5-token--text { white-space: nowrap; } @@ -125,3 +131,17 @@ padding: var(--_ui5_token_icon_padding); color: var(--sapContent_IconColor); } + +:host([single-token]) { + max-width: 100%; +} + +:host([single-token]) .ui5-token--wrapper { + max-width: 100%; +} + +:host([single-token]) .ui5-token--text { + overflow: hidden; + text-overflow: ellipsis; + max-width: 100%; +} diff --git a/packages/main/src/themes/Tokenizer.css b/packages/main/src/themes/Tokenizer.css index 9bb5daf55fa7..b8a5f6ee5b78 100644 --- a/packages/main/src/themes/Tokenizer.css +++ b/packages/main/src/themes/Tokenizer.css @@ -32,8 +32,9 @@ } :host([expanded]) .ui5-tokenizer--content { - display: inline-block; + display: inline-flex; white-space: nowrap; + overflow: hidden; } .ui5-tokenizer--content { @@ -42,6 +43,15 @@ align-items: center; overflow: hidden; padding-inline-start: var(--_ui5_tokenizer_padding); + height: 100%; + box-sizing: border-box; +} + +:host([_tokens-count="1"]) .ui5-tokenizer--content { + padding-inline-end: 4px; + box-sizing: border-box; + max-width: 100%; + flex: 1; } .ui5-tokenizer-more-text { @@ -53,8 +63,3 @@ font-weight: normal; color: var(--_ui5_tokenizer_n_more_text_color); } - -:host([expanded]) .ui5-tokenizer--content { - overflow: hidden; - justify-content: flex-end; -} \ No newline at end of file diff --git a/packages/main/src/themes/TokenizerPopover.css b/packages/main/src/themes/TokenizerPopover.css index 9e48834958b5..4a74c5255f2f 100644 --- a/packages/main/src/themes/TokenizerPopover.css +++ b/packages/main/src/themes/TokenizerPopover.css @@ -2,3 +2,13 @@ [ui5-responsive-popover]::part(content) { padding: 0; } + +#ui5-tokenizer-dialog-confirm-btn { + height: 100%; + min-width: 4rem; +} + +[ui5-responsive-popover] { + margin-top: var(--_ui5_tokenizer-popover_offset); + margin-inline-start: calc(-1 * var(--_ui5_tokenizer_padding)); +} \ No newline at end of file diff --git a/packages/main/src/themes/base/SliderBase-parameters.css b/packages/main/src/themes/base/SliderBase-parameters.css index 21a05f50fbc4..86c2f0a3b4fd 100644 --- a/packages/main/src/themes/base/SliderBase-parameters.css +++ b/packages/main/src/themes/base/SliderBase-parameters.css @@ -10,6 +10,7 @@ --_ui5_slider_progress_border_radius: 0.25rem; --_ui5_slider_progress_background: var(--sapActiveColor); --_ui5_slider_handle_icon_display: none; + --_ui5_range_slider_root_hover_handle_icon_display: none; --_ui5_slider_handle_height: 1.625rem; --_ui5_slider_handle_width: 1.625rem; --_ui5_slider_handle_border: solid 0.125rem var(--sapField_BorderColor); diff --git a/packages/main/src/themes/base/TabContainer-parameters.css b/packages/main/src/themes/base/TabContainer-parameters.css index 0df772eb0200..1958c6f809dc 100644 --- a/packages/main/src/themes/base/TabContainer-parameters.css +++ b/packages/main/src/themes/base/TabContainer-parameters.css @@ -11,7 +11,7 @@ --_ui5_tc_content_background_translucent: var(--sapGroup_ContentBackground); /* Header Item */ - --_ui5_tc_headeritem_padding: 0 1rem; + --_ui5_tc_headeritem_padding: 1rem; --_ui5_tc_headerItem_color: var(--sapContent_LabelColor); --_ui5_tc_headerItem_additional_text_color: var(--sapContent_LabelColor); --_ui5_tc_headerItem_text_hover_color: var(--_ui5_tc_headerItem_color); @@ -42,10 +42,7 @@ --_ui5_tc_headerItem_positive_border_bg: transparent; --_ui5_tc_headerItem_negative_border_bg: transparent; --_ui5_tc_headerItem_critical_border_bg: transparent; - --_ui5_tc_headerItem_hover_border_bg: transparent; - --_ui5_tc_headerItem_hover_selected_hover_border_bg: transparent; --_ui5_tc_headerItemContent_border_height: 0; - --_ui5_tc_headerItemContent_offset: 1rem; --_ui5_tc_headerItemContent_focus_offset: 1rem; --_ui5_tc_headerItem_focus_border: var(--sapContent_FocusWidth) var(--sapContent_FocusStyle) var(--sapContent_FocusColor); --_ui5_tc_headerItem_text_focus_border_offset_left: 0px; @@ -56,7 +53,6 @@ --_ui5_tc_headerItem_mixed_mode_focus_border_offset_right: 0.625rem; --_ui5_tc_headerItem_mixed_mode_focus_border_offset_top: 0.75rem; --_ui5_tc_headerItem_mixed_mode_focus_border_offset_bottom: 0.75rem; - --_ui5_tc_headerItemContent_padding: 0; --_ui5_tc_headerItemContent_focus_border: none; --_ui5_tc_headerItemContent_default_focus_border: none; --_ui5_tc_headerItemContent_focus_border_radius: 0; @@ -67,10 +63,13 @@ --_ui5_tc_mixedMode_itemText_font_family: var(--sapFontFamily); --_ui5_tc_mixedMode_itemText_font_size: var(--sapFontSmallSize); --_ui5_tc_mixedMode_itemText_font_weight: normal; + --_ui5_tc_headerItem_expand_button_margin_inline_start: 0.625rem; + --_ui5_tc_headerItem_single_click_expand_button_margin_inline_start: 0.875rem; + --_ui5_tc_headerItem_expand_button_border_radius: var(--sapButton_BorderCornerRadius); + --_ui5_tc_headerItem_expand_button_separator_display: none; /* Overflow Item */ - --_ui5_tc_overflowItem_neutral_color: var(--sapNeutralColor); --_ui5_tc_overflowItem_positive_color: var(--sapPositiveColor); --_ui5_tc_overflowItem_negative_color: var(--sapNegativeColor); --_ui5_tc_overflowItem_critical_color: var(--sapCriticalColor); @@ -95,6 +94,9 @@ --_ui5_tc_headerItem_focus_border_offset: -2px; --_ui5_tc_headerItemIcon_focus_border_radius: 0; + + /* Overflow Buttons*/ + --_ui5_tc_overflow_text_color: var(--sapButton_TextColor); } [data-ui5-compact-size], diff --git a/packages/main/src/themes/base/Token-parameters.css b/packages/main/src/themes/base/Token-parameters.css index 86e26819a73c..f7188dc2316c 100644 --- a/packages/main/src/themes/base/Token-parameters.css +++ b/packages/main/src/themes/base/Token-parameters.css @@ -7,15 +7,12 @@ --_ui5_token_outline_offset: -0.125rem; --_ui5_token_text_color: var(--sapButton_TextColor); --_ui5_token_hover_border_color: var(--sapButton_Hover_BorderColor); - --_ui5_token_top_margin: 0.25rem; - --_ui5_token_bottom_margin: 0.25rem; --_ui5_token_right_margin: 0.3125rem; --_ui5_token_padding: 0.25rem 0; --_ui5_token_left_padding: 0.3125rem; - --_ui5_token_readonly_padding: 0.375rem; + --_ui5_token_readonly_padding: 0.25rem 0.375rem; --_ui5_token_selected_focus_outline: var(--_ui5_token_focus_outline_width) dotted var(--sapContent_ContrastFocusColor); --_ui5_token_focus_outline: var(--_ui5_token_focus_outline_width) dotted var(--sapContent_FocusColor); - --_ui5_token_selected_hover_background: var(--sapButton_Selected_Hover_Background); --_ui5_token_selected_hover_border_color: var(--sapButton_Selected_Hover_BorderColor); --_ui5_token_focused_selected_border: 1px solid var(--sapButton_Selected_BorderColor); --ui5_token_focus_pseudo_element_content: none; @@ -23,6 +20,6 @@ --_ui5_token_selected_text_font_family: "72override", var(--sapFontFamily); --_ui5_token_selected_internal_border_bottom: none; --_ui5_token_selected_internal_border_bottom_radius: 0; - --_ui5_token_selected_box_shadow: none; --_ui5_token_text_icon_top: 0; + --_ui5_token_selected_focused_offset_bottom: var(--_ui5_token_focus_offset); } \ No newline at end of file diff --git a/packages/main/src/themes/base/Tokenizer-parameters.css b/packages/main/src/themes/base/Tokenizer-parameters.css index 7a96c357c64f..181da6d5fef5 100644 --- a/packages/main/src/themes/base/Tokenizer-parameters.css +++ b/packages/main/src/themes/base/Tokenizer-parameters.css @@ -1,4 +1,11 @@ :root { --_ui5_tokenizer_padding: 0.3125rem; --_ui5_tokenizer_n_more_text_color: var(--sapField_TextColor); + --_ui5_tokenizer-popover_offset: .3125rem; +} + +[data-ui5-compact-size], +.ui5-content-density-compact, +.sapUiSizeCompact { + --_ui5_tokenizer-popover_offset: .1875rem; } \ No newline at end of file diff --git a/packages/main/src/themes/base/rtl-parameters.css b/packages/main/src/themes/base/rtl-parameters.css index a94f95959e99..81961b34f169 100644 --- a/packages/main/src/themes/base/rtl-parameters.css +++ b/packages/main/src/themes/base/rtl-parameters.css @@ -18,6 +18,8 @@ --_ui5_menu_submenu_margin_offset: -0.25rem 0; --_ui5_menu_submenu_placement_type_left_margin_offset: 0.25rem 0; --_ui5-menu_item_icon_float: right; + + --_ui5-shellbar-notification-btn-count-offset: -0.125rem; } [dir="rtl"] { @@ -38,4 +40,6 @@ --_ui5_menu_submenu_margin_offset: 0 -0.25rem; --_ui5_menu_submenu_placement_type_left_margin_offset: 0 0.25rem; --_ui5-menu_item_icon_float: left; + + --_ui5-shellbar-notification-btn-count-offset: unset; } \ No newline at end of file diff --git a/packages/main/src/themes/base/sizes-parameters.css b/packages/main/src/themes/base/sizes-parameters.css index dad5396af56b..dcae2dc219e3 100644 --- a/packages/main/src/themes/base/sizes-parameters.css +++ b/packages/main/src/themes/base/sizes-parameters.css @@ -269,11 +269,9 @@ --_ui5_panel_header_height: 2.5rem; --_ui5_token_height: 1.25rem; - --_ui5_token_top_margin: 0.125rem; - --_ui5_token_bottom_margin: 0.125rem; --_ui5_token_right_margin: 0.25rem; --_ui5_token_left_padding: 0.25rem; - --_ui5_token_readonly_padding: 0.25rem; + --_ui5_token_readonly_padding: 0.125rem 0.25rem; --_ui5_token_focus_offset: -0.125rem; --_ui5_token_icon_size: .75rem; --_ui5_token_icon_padding: 0.125rem 0.25rem; @@ -297,8 +295,8 @@ --_ui5_tc_item_text_line_height: 1.325rem; --_ui5_tc_item_icon_size: 1rem; --_ui5_tc_item_add_text_margin_top: 0.3125rem; - --_ui5_tc_header_height: var(--_ui5_tc_header_height_compact); --_ui5_tc_item_height: 4rem; + --_ui5_tc_header_height: var(--_ui5_tc_item_height); --_ui5_tc_item_icon_circle_size: 2rem; --_ui5_tc_item_icon_size: 1rem; diff --git a/packages/main/src/themes/sap_belize/SliderBase-parameters.css b/packages/main/src/themes/sap_belize/SliderBase-parameters.css index eef63e14e060..d1c4c74fb855 100644 --- a/packages/main/src/themes/sap_belize/SliderBase-parameters.css +++ b/packages/main/src/themes/sap_belize/SliderBase-parameters.css @@ -21,5 +21,4 @@ --_ui5_slider_tooltip_border_radius: 0; --_ui5_slider_tickmark_top: -.375rem; --_ui5_slider_tickmark_in_range_bg: var(--sapField_BorderColor); - --_ui5_range_slider_root_hover_handle_icon_display: none; } \ No newline at end of file diff --git a/packages/main/src/themes/sap_belize_hcb/SliderBase-parameters.css b/packages/main/src/themes/sap_belize_hcb/SliderBase-parameters.css index ebd95376a3bb..9705028c73dd 100644 --- a/packages/main/src/themes/sap_belize_hcb/SliderBase-parameters.css +++ b/packages/main/src/themes/sap_belize_hcb/SliderBase-parameters.css @@ -14,6 +14,5 @@ --_ui5_slider_progress_background: var(--sapField_Background); --_ui5_slider_tickmark_top: -0.2525rem; --_ui5_slider_handle_active_border: 0.0625rem dotted var(--sapField_BorderColor); - --_ui5_range_slider_root_hover_handle_icon_display: none; --_ui5_range_slider_handle_active_background: transparent; } \ No newline at end of file diff --git a/packages/main/src/themes/sap_belize_hcb/TabContainer-parameters.css b/packages/main/src/themes/sap_belize_hcb/TabContainer-parameters.css index 62de67f81295..3331f6cee46f 100644 --- a/packages/main/src/themes/sap_belize_hcb/TabContainer-parameters.css +++ b/packages/main/src/themes/sap_belize_hcb/TabContainer-parameters.css @@ -35,7 +35,6 @@ /* Overflow Item */ - --_ui5_tc_overflowItem_neutral_color: var(--sapGroup_TitleTextColor); --_ui5_tc_overflowItem_positive_color: var(--sapGroup_TitleTextColor); --_ui5_tc_overflowItem_negative_color: var(--sapGroup_TitleTextColor); --_ui5_tc_overflowItem_critical_color: var(--sapGroup_TitleTextColor); diff --git a/packages/main/src/themes/sap_belize_hcw/SliderBase-parameters.css b/packages/main/src/themes/sap_belize_hcw/SliderBase-parameters.css index dfbda54ad5cf..99f04e970f37 100644 --- a/packages/main/src/themes/sap_belize_hcw/SliderBase-parameters.css +++ b/packages/main/src/themes/sap_belize_hcw/SliderBase-parameters.css @@ -14,6 +14,5 @@ --_ui5_slider_progress_background: var(--sapField_Background); --_ui5_slider_tickmark_top: -0.2525rem; --_ui5_slider_handle_active_border: 0.0625rem dotted var(--sapField_BorderColor); - --_ui5_range_slider_root_hover_handle_icon_display: none; --_ui5_range_slider_handle_active_background: transparent; } \ No newline at end of file diff --git a/packages/main/src/themes/sap_belize_hcw/TabContainer-parameters.css b/packages/main/src/themes/sap_belize_hcw/TabContainer-parameters.css index 62de67f81295..3331f6cee46f 100644 --- a/packages/main/src/themes/sap_belize_hcw/TabContainer-parameters.css +++ b/packages/main/src/themes/sap_belize_hcw/TabContainer-parameters.css @@ -35,7 +35,6 @@ /* Overflow Item */ - --_ui5_tc_overflowItem_neutral_color: var(--sapGroup_TitleTextColor); --_ui5_tc_overflowItem_positive_color: var(--sapGroup_TitleTextColor); --_ui5_tc_overflowItem_negative_color: var(--sapGroup_TitleTextColor); --_ui5_tc_overflowItem_critical_color: var(--sapGroup_TitleTextColor); diff --git a/packages/main/src/themes/sap_fiori_3/SliderBase-parameters.css b/packages/main/src/themes/sap_fiori_3/SliderBase-parameters.css index 855dd603dc11..bbaa33039c68 100644 --- a/packages/main/src/themes/sap_fiori_3/SliderBase-parameters.css +++ b/packages/main/src/themes/sap_fiori_3/SliderBase-parameters.css @@ -10,7 +10,6 @@ --_ui5_slider_handle_background: var(--sapButton_Background); --_ui5_slider_handle_hover_background: var(--sapButton_Hover_Background); --_ui5_range_slider_root_hover_handle_bg: transparent; - --_ui5_range_slider_root_hover_handle_icon_display: none; --_ui5_range_slider_root_active_handle_icon_display: none; --_ui5_slider_handle_width: 1.875rem; --_ui5_slider_handle_height: 1.875rem; diff --git a/packages/main/src/themes/sap_fiori_3_dark/SliderBase-parameters.css b/packages/main/src/themes/sap_fiori_3_dark/SliderBase-parameters.css index 9a82413460dc..861d462d5255 100644 --- a/packages/main/src/themes/sap_fiori_3_dark/SliderBase-parameters.css +++ b/packages/main/src/themes/sap_fiori_3_dark/SliderBase-parameters.css @@ -2,4 +2,6 @@ :root { --_ui5_slider_inner_min_width: 4rem; + --_ui5_range_slider_handle_background: transparent; + --_ui5_range_slider_root_hover_handle_bg: transparent; } \ No newline at end of file diff --git a/packages/main/src/themes/sap_fiori_3_hcb/SliderBase-parameters.css b/packages/main/src/themes/sap_fiori_3_hcb/SliderBase-parameters.css index 899a4d9409fa..647540e2788a 100644 --- a/packages/main/src/themes/sap_fiori_3_hcb/SliderBase-parameters.css +++ b/packages/main/src/themes/sap_fiori_3_hcb/SliderBase-parameters.css @@ -4,6 +4,7 @@ --_ui5_slider_inner_height: 0.375rem; --_ui5_slider_progress_border: solid 0.0625rem var(--sapField_BorderColor); --_ui5_slider_progress_border_radius: 0.375rem; + --_ui5_range_slider_handle_background: transparent; --_ui5_slider_handle_hover_background: var(--sapButton_Hover_Background); --_ui5_slider_handle_border: solid 0.125rem var(--sapField_BorderColor); --_ui5_slider_handle_height: 1.65rem; @@ -12,5 +13,4 @@ --_ui5_slider_progress_background: var(--sapSelectedColor); --_ui5_slider_tickmark_top: -0.2525rem; --_ui5_slider_handle_margin_left: -.9375rem; - --_ui5_range_slider_root_hover_handle_icon_display: none; } \ No newline at end of file diff --git a/packages/main/src/themes/sap_fiori_3_hcb/TabContainer-parameters.css b/packages/main/src/themes/sap_fiori_3_hcb/TabContainer-parameters.css index 62de67f81295..3331f6cee46f 100644 --- a/packages/main/src/themes/sap_fiori_3_hcb/TabContainer-parameters.css +++ b/packages/main/src/themes/sap_fiori_3_hcb/TabContainer-parameters.css @@ -35,7 +35,6 @@ /* Overflow Item */ - --_ui5_tc_overflowItem_neutral_color: var(--sapGroup_TitleTextColor); --_ui5_tc_overflowItem_positive_color: var(--sapGroup_TitleTextColor); --_ui5_tc_overflowItem_negative_color: var(--sapGroup_TitleTextColor); --_ui5_tc_overflowItem_critical_color: var(--sapGroup_TitleTextColor); diff --git a/packages/main/src/themes/sap_fiori_3_hcw/SliderBase-parameters.css b/packages/main/src/themes/sap_fiori_3_hcw/SliderBase-parameters.css index d80c2e78e2be..4a0bdb742fe6 100644 --- a/packages/main/src/themes/sap_fiori_3_hcw/SliderBase-parameters.css +++ b/packages/main/src/themes/sap_fiori_3_hcw/SliderBase-parameters.css @@ -4,6 +4,7 @@ --_ui5_slider_inner_height: 0.375rem; --_ui5_slider_progress_border: solid 0.0625rem var(--sapField_BorderColor); --_ui5_slider_progress_border_radius: 0.375rem; + --_ui5_range_slider_handle_background: transparent; --_ui5_slider_handle_border: solid 0.125rem var(--sapField_BorderColor); --_ui5_slider_handle_height: 1.65rem; --_ui5_slider_handle_width: 1.65rem; @@ -11,5 +12,4 @@ --_ui5_slider_progress_background: var(--sapSelectedColor); --_ui5_slider_tickmark_top: -0.2525rem; --_ui5_slider_handle_margin_left: -.9375rem; - --_ui5_range_slider_root_hover_handle_icon_display: none; } \ No newline at end of file diff --git a/packages/main/src/themes/sap_fiori_3_hcw/TabContainer-parameters.css b/packages/main/src/themes/sap_fiori_3_hcw/TabContainer-parameters.css index 62de67f81295..3331f6cee46f 100644 --- a/packages/main/src/themes/sap_fiori_3_hcw/TabContainer-parameters.css +++ b/packages/main/src/themes/sap_fiori_3_hcw/TabContainer-parameters.css @@ -35,7 +35,6 @@ /* Overflow Item */ - --_ui5_tc_overflowItem_neutral_color: var(--sapGroup_TitleTextColor); --_ui5_tc_overflowItem_positive_color: var(--sapGroup_TitleTextColor); --_ui5_tc_overflowItem_negative_color: var(--sapGroup_TitleTextColor); --_ui5_tc_overflowItem_critical_color: var(--sapGroup_TitleTextColor); diff --git a/packages/main/src/themes/sap_horizon/TabContainer-parameters.css b/packages/main/src/themes/sap_horizon/TabContainer-parameters.css index 5fbe886d36e4..8eec10c17f9b 100644 --- a/packages/main/src/themes/sap_horizon/TabContainer-parameters.css +++ b/packages/main/src/themes/sap_horizon/TabContainer-parameters.css @@ -9,6 +9,10 @@ --_ui5_tc_overflowItem_default_color: var(--sapTextColor); --_ui5_tc_overflowItem_current_color: CurrentColor; --_ui5_tc_content_border_bottom: 0.0625rem solid var(--sapObjectHeader_BorderColor); + --_ui5_tc_headerItem_expand_button_margin_inline_start: 0rem; + --_ui5_tc_headerItem_single_click_expand_button_margin_inline_start: 0.25rem; + --_ui5_tc_headerItem_expand_button_border_radius: 0.25rem; + --_ui5_tc_headerItem_expand_button_separator_display: inline-block; /* Focus & Hover */ --_ui5_tc_headerItem_focus_border: 0.125rem solid var(--sapContent_FocusColor); @@ -28,4 +32,7 @@ /* Mixed Mode */ --_ui5_tc_mixedMode_itemText_color: var(--sapTextColor); + + /* Overflow Buttons*/ + --_ui5_tc_overflow_text_color: var(--sapTextColor); } diff --git a/packages/main/src/themes/sap_horizon/Token-parameters.css b/packages/main/src/themes/sap_horizon/Token-parameters.css index a2a2bbb639aa..4f21bda0958a 100644 --- a/packages/main/src/themes/sap_horizon/Token-parameters.css +++ b/packages/main/src/themes/sap_horizon/Token-parameters.css @@ -12,15 +12,17 @@ --_ui5_token_border_radius: 0.375rem; --_ui5_token_focus_outline_border_radius: .5rem; --_ui5_token_text_color: var(--sapTextColor); - --_ui5_token_selected_box_shadow: var(--sapContent_Selected_Shadow); --_ui5_token_selected_text_font_family: var(--sapFontSemiboldDuplexFamily); --_ui5_token_selected_internal_border_bottom: 0.125rem solid var(--sapButton_Selected_BorderColor); --_ui5_token_selected_internal_border_bottom_radius: .1875rem; --_ui5_token_text_icon_top: 0.0625rem; + --_ui5_token_selected_focused_offset_bottom: -.375rem; + --_ui5_token_readonly_padding: 0.25rem 0.3125rem; } [data-ui5-compact-size], .ui5-content-density-compact, .sapUiSizeCompact { --_ui5_token_outline_offset: 0; + --_ui5_token_selected_focused_offset_bottom: -.25rem; } \ No newline at end of file diff --git a/packages/main/src/themes/sap_horizon_dark/TabContainer-parameters.css b/packages/main/src/themes/sap_horizon_dark/TabContainer-parameters.css index 53d992ca9d93..8eec10c17f9b 100644 --- a/packages/main/src/themes/sap_horizon_dark/TabContainer-parameters.css +++ b/packages/main/src/themes/sap_horizon_dark/TabContainer-parameters.css @@ -6,17 +6,33 @@ /* Header Item */ --_ui5_tc_headerItemContent_border_bottom: 0.1875rem solid var(--sapSelectedColor); --_ui5_tc_headerItem_color: var(--sapTextColor); - --_ui5_tc_overflowItem_default_color: var(--sapHighlightColor); + --_ui5_tc_overflowItem_default_color: var(--sapTextColor); --_ui5_tc_overflowItem_current_color: CurrentColor; --_ui5_tc_content_border_bottom: 0.0625rem solid var(--sapObjectHeader_BorderColor); + --_ui5_tc_headerItem_expand_button_margin_inline_start: 0rem; + --_ui5_tc_headerItem_single_click_expand_button_margin_inline_start: 0.25rem; + --_ui5_tc_headerItem_expand_button_border_radius: 0.25rem; + --_ui5_tc_headerItem_expand_button_separator_display: inline-block; + /* Focus & Hover */ + --_ui5_tc_headerItem_focus_border: 0.125rem solid var(--sapContent_FocusColor); --_ui5_tc_headerItem_focus_border_offset: -5px; --_ui5_tc_headerItemIcon_focus_border_radius: 50%; - --_ui5_tc_headerItem_focus_border_radius: 0.25rem; + --_ui5_tc_headerItem_focus_border_radius: 0.375rem; --_ui5_tc_headeritem_text_font_weight: bold; - --_ui5_tc_headerItem_text_hover_color: var(--sapContent_Selected_ForegroundColor); --_ui5_tc_headerItem_focus_offset: 1px; + --_ui5_tc_headerItem_text_hover_color: var(--sapContent_Selected_ForegroundColor); /* Header Item icons */ - --_ui5_tc_headerItemIcon_border: 0.125rem solid var(--sapHighlightColor); + --_ui5_tc_headerItemIcon_border: 0.125rem solid var(--sapContent_Selected_ForegroundColor); + --_ui5_tc_headerItemIcon_color: var(--sapContent_Selected_ForegroundColor); + --_ui5_tc_headerItemIcon_selected_background: var(--sapContent_Selected_ForegroundColor); + --_ui5_tc_headerItemIcon_background_color: var(--sapContent_Selected_Background); + --_ui5_tc_headerItemIcon_selected_color: var(--sapContent_ContrastIconColor); + + /* Mixed Mode */ + --_ui5_tc_mixedMode_itemText_color: var(--sapTextColor); + + /* Overflow Buttons*/ + --_ui5_tc_overflow_text_color: var(--sapTextColor); } diff --git a/packages/main/src/themes/sap_horizon_dark/Token-parameters.css b/packages/main/src/themes/sap_horizon_dark/Token-parameters.css index a2a2bbb639aa..4f21bda0958a 100644 --- a/packages/main/src/themes/sap_horizon_dark/Token-parameters.css +++ b/packages/main/src/themes/sap_horizon_dark/Token-parameters.css @@ -12,15 +12,17 @@ --_ui5_token_border_radius: 0.375rem; --_ui5_token_focus_outline_border_radius: .5rem; --_ui5_token_text_color: var(--sapTextColor); - --_ui5_token_selected_box_shadow: var(--sapContent_Selected_Shadow); --_ui5_token_selected_text_font_family: var(--sapFontSemiboldDuplexFamily); --_ui5_token_selected_internal_border_bottom: 0.125rem solid var(--sapButton_Selected_BorderColor); --_ui5_token_selected_internal_border_bottom_radius: .1875rem; --_ui5_token_text_icon_top: 0.0625rem; + --_ui5_token_selected_focused_offset_bottom: -.375rem; + --_ui5_token_readonly_padding: 0.25rem 0.3125rem; } [data-ui5-compact-size], .ui5-content-density-compact, .sapUiSizeCompact { --_ui5_token_outline_offset: 0; + --_ui5_token_selected_focused_offset_bottom: -.25rem; } \ No newline at end of file diff --git a/packages/main/src/themes/sap_horizon_exp/TabContainer-parameters.css b/packages/main/src/themes/sap_horizon_exp/TabContainer-parameters.css index 70eec1731450..b2956a5b8a20 100644 --- a/packages/main/src/themes/sap_horizon_exp/TabContainer-parameters.css +++ b/packages/main/src/themes/sap_horizon_exp/TabContainer-parameters.css @@ -22,14 +22,10 @@ --_ui5_tc_headerItem_positive_border_bg: var(--_ui5_tc_headerItem_positive_color); --_ui5_tc_headerItem_negative_border_bg: var(--_ui5_tc_headerItem_negative_color); --_ui5_tc_headerItem_critical_border_bg: var(--_ui5_tc_headerItem_critical_color); - --_ui5_tc_headerItem_hover_border_bg: var(--sapTile_TitleTextColor); /* #475E75; */ - --_ui5_tc_headerItem_hover_selected_hover_border_bg: var(--sapContent_Selected_TextColor); /* #0057D2; */ --_ui5_tc_headerItem_hover_border_visibility: visible; --_ui5_tc_headerItemContent_border_height: 0.125rem; - --_ui5_tc_headerItemContent_offset: 0.25rem; --_ui5_tc_headerItemContent_focus_offset: 0.25rem; - --_ui5_tc_headerItemContent_padding: 0.25rem 0.5rem; --_ui5_tc_headerItemContent_focus_border: 0.125rem solid var(--sapContent_FocusColor); --_ui5_tc_headerItemContent_default_focus_border: 0.125rem solid transparent; --_ui5_tc_headerItemContent_focus_border_radius: 0.5rem; diff --git a/packages/main/src/themes/sap_horizon_hcb/SliderBase-parameters.css b/packages/main/src/themes/sap_horizon_hcb/SliderBase-parameters.css index a79fbd780b86..1fb1bcabf884 100644 --- a/packages/main/src/themes/sap_horizon_hcb/SliderBase-parameters.css +++ b/packages/main/src/themes/sap_horizon_hcb/SliderBase-parameters.css @@ -5,6 +5,7 @@ --_ui5_slider_handle_height: 1.5rem; --_ui5_slider_handle_width: 2rem; --_ui5_slider_handle_icon_display: inline-block; + --_ui5_range_slider_root_hover_handle_icon_display: inline-block; --_ui5_slider_handle_border_radius: 0.5rem; --_ui5_slider_handle_hover_background: var(--sapButton_Hover_Background); --_ui5_slider_handle_border: 0.0625rem solid var(--sapField_BorderColor); diff --git a/packages/main/src/themes/sap_horizon_hcb/TabContainer-parameters.css b/packages/main/src/themes/sap_horizon_hcb/TabContainer-parameters.css index 62de67f81295..425980b7f817 100644 --- a/packages/main/src/themes/sap_horizon_hcb/TabContainer-parameters.css +++ b/packages/main/src/themes/sap_horizon_hcb/TabContainer-parameters.css @@ -8,10 +8,10 @@ --_ui5_tc_headerItem_focus_border: 0.125rem dotted var(--sapContent_FocusColor); --_ui5_tc_headerItem_text_selected_color: var(--sapPageHeader_BorderColor); --_ui5_tc_headerItem_text_selected_hover_color: var(--sapPageHeader_BorderColor); - --_ui5_tc_headerItem_neutral_color: var(--sapGroup_TitleTextColor); - --_ui5_tc_headerItem_positive_color: var(--sapGroup_TitleTextColor); - --_ui5_tc_headerItem_negative_color: var(--sapGroup_TitleTextColor); - --_ui5_tc_headerItem_critical_color: var(--sapGroup_TitleTextColor); + --_ui5_tc_headerItem_neutral_color: var(--sapTextColor); + --_ui5_tc_headerItem_positive_color: var(--sapTextColor); + --_ui5_tc_headerItem_negative_color: var(--sapTextColor); + --_ui5_tc_headerItem_critical_color: var(--sapTextColor); --_ui5_tc_headerItem_neutral_border_color: var(--_ui5_tc_headerItem_neutral_color); --_ui5_tc_headerItem_positive_border_color: var(--_ui5_tc_headerItem_positive_color); --_ui5_tc_headerItem_negative_border_color: var(--_ui5_tc_headerItem_negative_color); @@ -21,6 +21,9 @@ --_ui5_tc_headerItem_negative_selected_border_color: var(--_ui5_tc_headerItem_negative_color); --_ui5_tc_headerItem_critical_selected_border_color: var(--_ui5_tc_headerItem_critical_color); --_ui5_tc_headerItemSemanticIcon_display: inline-block; + --_ui5_tc_headerItem_expand_button_margin_inline_start: 0rem; + --_ui5_tc_headerItem_single_click_expand_button_margin_inline_start: 0.25rem; + --_ui5_tc_headerItem_expand_button_border_radius: 0.25rem; /* Header Item icons */ --_ui5_tc_headerItemIcon_border: 1px solid var(--sapPageHeader_BorderColor); @@ -34,12 +37,13 @@ --_ui5_tc_headerItemIcon_semantic_selected_color: var(--sapContent_IconColor); /* Overflow Item */ - - --_ui5_tc_overflowItem_neutral_color: var(--sapGroup_TitleTextColor); - --_ui5_tc_overflowItem_positive_color: var(--sapGroup_TitleTextColor); - --_ui5_tc_overflowItem_negative_color: var(--sapGroup_TitleTextColor); - --_ui5_tc_overflowItem_critical_color: var(--sapGroup_TitleTextColor); - --_ui5_tc_overflowItem_default_color: var(--sapGroup_TitleTextColor); + --_ui5_tc_overflowItem_positive_color: var(--sapTextColor); + --_ui5_tc_overflowItem_negative_color: var(--sapTextColor); + --_ui5_tc_overflowItem_critical_color: var(--sapTextColor); + --_ui5_tc_overflowItem_default_color: var(--sapTextColor); --_ui5_tc_overflowItem_current_color: var(--_ui5_tc_overflowItem_default_color); --_ui5_tc_overflowItem_extraIndent: 1rem; + + /* Overflow Buttons*/ + --_ui5_tc_overflow_text_color: var(--sapTextColor); } diff --git a/packages/main/src/themes/sap_horizon_hcb/Token-parameters.css b/packages/main/src/themes/sap_horizon_hcb/Token-parameters.css index ed2a16e0c4c6..912106b22257 100644 --- a/packages/main/src/themes/sap_horizon_hcb/Token-parameters.css +++ b/packages/main/src/themes/sap_horizon_hcb/Token-parameters.css @@ -4,13 +4,10 @@ --_ui5_token_border_radius: 0.25rem; --_ui5_token_focus_outline_width: 0.125rem; --_ui5_token_readonly_background: var(--sapField_ReadOnly_Background); - --ui5_token_focus_pseudo_element_content: ''; - --_ui5_token_selected_focus_outline: none; - --_ui5_token_focus_outline: none; --_ui5_token_focus_offset: 0; --_ui5_token_focus_outline_border_radius: 0.25rem; - --_ui5_token_selected_box_shadow: var(--sapContent_Selected_Shadow); --_ui5_token_text_color: var(--sapTextColor); + --_ui5_token_readonly_padding: 0.25rem 0.3125rem; } [data-ui5-compact-size], diff --git a/packages/main/src/themes/sap_horizon_hcw/SliderBase-parameters.css b/packages/main/src/themes/sap_horizon_hcw/SliderBase-parameters.css index c51bb2658e26..8dead420c5d0 100644 --- a/packages/main/src/themes/sap_horizon_hcw/SliderBase-parameters.css +++ b/packages/main/src/themes/sap_horizon_hcw/SliderBase-parameters.css @@ -5,6 +5,7 @@ --_ui5_slider_handle_height: 1.5rem; --_ui5_slider_handle_width: 2rem; --_ui5_slider_handle_icon_display: inline-block; + --_ui5_range_slider_root_hover_handle_icon_display: inline-block; --_ui5_slider_handle_border_radius: 0.5rem; --_ui5_slider_handle_hover_background: var(--sapButton_Hover_Background); --_ui5_slider_handle_border: 0.0625rem solid var(--sapField_BorderColor); @@ -15,7 +16,7 @@ --_ui5_slider_handle_outline: var(--sapContent_FocusWidth) dotted var(--sapContent_FocusColor); --_ui5_slider_handle_box_sizing: border-box; --_ui5_range_slider_handle_background: var(--sapSlider_RangeHandleBackground); - --_ui5_range_slider_root_hover_handle_bg: var(--sapSlider_RangeHandleBackground); + --_ui5_range_slider_root_hover_handle_bg: var(--sapButton_Hover_Background); --_ui5_range_slider_handle_active_background: var(--sapSlider_Active_RangeHandleBackground); --_ui5_slider_handle_active_border: 0.125rem solid var(--sapField_BorderColor); --_ui5_slider_inner_height: 0.25rem; diff --git a/packages/main/src/themes/sap_horizon_hcw/TabContainer-parameters.css b/packages/main/src/themes/sap_horizon_hcw/TabContainer-parameters.css index 62de67f81295..425980b7f817 100644 --- a/packages/main/src/themes/sap_horizon_hcw/TabContainer-parameters.css +++ b/packages/main/src/themes/sap_horizon_hcw/TabContainer-parameters.css @@ -8,10 +8,10 @@ --_ui5_tc_headerItem_focus_border: 0.125rem dotted var(--sapContent_FocusColor); --_ui5_tc_headerItem_text_selected_color: var(--sapPageHeader_BorderColor); --_ui5_tc_headerItem_text_selected_hover_color: var(--sapPageHeader_BorderColor); - --_ui5_tc_headerItem_neutral_color: var(--sapGroup_TitleTextColor); - --_ui5_tc_headerItem_positive_color: var(--sapGroup_TitleTextColor); - --_ui5_tc_headerItem_negative_color: var(--sapGroup_TitleTextColor); - --_ui5_tc_headerItem_critical_color: var(--sapGroup_TitleTextColor); + --_ui5_tc_headerItem_neutral_color: var(--sapTextColor); + --_ui5_tc_headerItem_positive_color: var(--sapTextColor); + --_ui5_tc_headerItem_negative_color: var(--sapTextColor); + --_ui5_tc_headerItem_critical_color: var(--sapTextColor); --_ui5_tc_headerItem_neutral_border_color: var(--_ui5_tc_headerItem_neutral_color); --_ui5_tc_headerItem_positive_border_color: var(--_ui5_tc_headerItem_positive_color); --_ui5_tc_headerItem_negative_border_color: var(--_ui5_tc_headerItem_negative_color); @@ -21,6 +21,9 @@ --_ui5_tc_headerItem_negative_selected_border_color: var(--_ui5_tc_headerItem_negative_color); --_ui5_tc_headerItem_critical_selected_border_color: var(--_ui5_tc_headerItem_critical_color); --_ui5_tc_headerItemSemanticIcon_display: inline-block; + --_ui5_tc_headerItem_expand_button_margin_inline_start: 0rem; + --_ui5_tc_headerItem_single_click_expand_button_margin_inline_start: 0.25rem; + --_ui5_tc_headerItem_expand_button_border_radius: 0.25rem; /* Header Item icons */ --_ui5_tc_headerItemIcon_border: 1px solid var(--sapPageHeader_BorderColor); @@ -34,12 +37,13 @@ --_ui5_tc_headerItemIcon_semantic_selected_color: var(--sapContent_IconColor); /* Overflow Item */ - - --_ui5_tc_overflowItem_neutral_color: var(--sapGroup_TitleTextColor); - --_ui5_tc_overflowItem_positive_color: var(--sapGroup_TitleTextColor); - --_ui5_tc_overflowItem_negative_color: var(--sapGroup_TitleTextColor); - --_ui5_tc_overflowItem_critical_color: var(--sapGroup_TitleTextColor); - --_ui5_tc_overflowItem_default_color: var(--sapGroup_TitleTextColor); + --_ui5_tc_overflowItem_positive_color: var(--sapTextColor); + --_ui5_tc_overflowItem_negative_color: var(--sapTextColor); + --_ui5_tc_overflowItem_critical_color: var(--sapTextColor); + --_ui5_tc_overflowItem_default_color: var(--sapTextColor); --_ui5_tc_overflowItem_current_color: var(--_ui5_tc_overflowItem_default_color); --_ui5_tc_overflowItem_extraIndent: 1rem; + + /* Overflow Buttons*/ + --_ui5_tc_overflow_text_color: var(--sapTextColor); } diff --git a/packages/main/src/themes/sap_horizon_hcw/Token-parameters.css b/packages/main/src/themes/sap_horizon_hcw/Token-parameters.css index 2fae7c434fdb..841cc0a884fc 100644 --- a/packages/main/src/themes/sap_horizon_hcw/Token-parameters.css +++ b/packages/main/src/themes/sap_horizon_hcw/Token-parameters.css @@ -4,13 +4,10 @@ --_ui5_token_border_radius: 0.25rem; --_ui5_token_focus_outline_width: 0.125rem; --_ui5_token_readonly_background: var(--sapField_ReadOnly_Background); - --ui5_token_focus_pseudo_element_content: ''; - --_ui5_token_selected_focus_outline: none; - --_ui5_token_focus_outline: none; --_ui5_token_focus_offset: 0; --_ui5_token_focus_outline_border_radius: 0.25rem; - --_ui5_token_selected_box_shadow: var(--sapContent_Selected_Shadow); --_ui5_token_text_color: var(--sapTextColor); + --_ui5_token_readonly_padding: 0.25rem 0.3125rem; } [data-ui5-compact-size], diff --git a/packages/main/test/pages/Kitchen.openui5.html b/packages/main/test/pages/Kitchen.openui5.html index 810192500a39..43b22fb229e3 100644 --- a/packages/main/test/pages/Kitchen.openui5.html +++ b/packages/main/test/pages/Kitchen.openui5.html @@ -15,6 +15,7 @@ } + diff --git a/packages/main/test/pages/MultiComboBox.html b/packages/main/test/pages/MultiComboBox.html index 7167516c45bb..a09ea74d1acb 100644 --- a/packages/main/test/pages/MultiComboBox.html +++ b/packages/main/test/pages/MultiComboBox.html @@ -306,6 +306,17 @@
    +
    +
    + MultiComboBox with Truncated token +
    + + + + + + dummy button +

    diff --git a/packages/main/test/pages/MultiInput.html b/packages/main/test/pages/MultiInput.html index 071ad2ac560b..7c444e7154c2 100644 --- a/packages/main/test/pages/MultiInput.html +++ b/packages/main/test/pages/MultiInput.html @@ -226,8 +226,17 @@

    Multi Input with 5 tokens



    - Add more tokens + +
    +
    + +

    Multi Input with Truncated token

    + + + + + dummy button
diff --git a/packages/main/test/pages/OpenUI5.html b/packages/main/test/pages/OpenUI5.html index 6cbd18902abc..23e8d5fb81aa 100644 --- a/packages/main/test/pages/OpenUI5.html +++ b/packages/main/test/pages/OpenUI5.html @@ -76,6 +76,27 @@ Web Component + Open Dialog web component + + Open Second Dialog web component + + + + Open Popover webc + +
+ + diff --git a/packages/main/test/pages/ProgressIndicator.html b/packages/main/test/pages/ProgressIndicator.html index 5b284c2c11f2..275e488393d1 100644 --- a/packages/main/test/pages/ProgressIndicator.html +++ b/packages/main/test/pages/ProgressIndicator.html @@ -89,6 +89,9 @@

+ AccessibleName added + +
Custom Display Value
diff --git a/packages/main/test/pages/RatingIndicator.html b/packages/main/test/pages/RatingIndicator.html index 0f93ac1f3888..cd29364b42ef 100644 --- a/packages/main/test/pages/RatingIndicator.html +++ b/packages/main/test/pages/RatingIndicator.html @@ -68,6 +68,26 @@

RatingIndicator with title



+

RatingIndicator with required

+ Required label + +
+
+
+ +

RatingIndicator with accessibleName

+ +
+
+
+ +

RatingIndicator with accessibleNameRef

+ Some ACC label + +
+
+
+

sizes

diff --git a/packages/main/test/pages/SplitButton.html b/packages/main/test/pages/SplitButton.html index b3a6891bda59..7871e5f1933b 100644 --- a/packages/main/test/pages/SplitButton.html +++ b/packages/main/test/pages/SplitButton.html @@ -2,7 +2,7 @@ - + ui5-split-button @@ -71,6 +71,18 @@

Test textContent

Default + openMenu + + + + + + openMenu + + + + + +

+<ui5-split-button id="splitBtnWithMenuDefaultAction" design="Default">Open Menu</ui5-split-button>
+<ui5-menu id="menuInSplitBtnDefaultAction">
+	<ui5-menu-item text="Edit" icon="add"></ui5-menu-item>
+	<ui5-menu-item text="Save" icon="save"></ui5-menu-item>
+	<ui5-menu-item text="Delete" icon="delete"></ui5-menu-item>
+</ui5-menu>
+<script>
+	const splitBtnWithMenuDefaultAction = document.getElementById("splitBtnWithMenuDefaultAction");
+	const menuInSplitBtn = document.getElementById("menuInSplitBtnDefaultAction");
+
+	splitBtnWithMenuDefaultAction.addEventListener("ui5-arrow-click", function () {
+		menuInSplitBtn.open ? menuInSplitBtn.close() : menuInSplitBtn.showAt(splitBtnWithMenuDefaultAction);
+	});
+</script>
+	
+ + +
+
+

SplitButton with Menu and associated last action

+
+ Open Menu + + + + + +
+ +

+<ui5-split-button id="splitBtnWithMenuWithAssociatedLastAction" design="Default">Open Menu</ui5-split-button>
+<ui5-menu id="menuInSplitBtnAssociatedLastAction">
+	<ui5-menu-item text="Edit" icon="add"></ui5-menu-item>
+	<ui5-menu-item text="Save" icon="save"></ui5-menu-item>
+	<ui5-menu-item text="Delete" icon="delete"></ui5-menu-item>
+</ui5-menu>
+
+<script>
+	const splitBtnLastAction = document.getElementById("splitBtnWithMenuWithAssociatedLastAction")
+	const menuInSplitBtnLastAction = document.getElementById("menuInSplitBtnAssociatedLastAction")
+
+	splitBtnLastAction.addEventListener("ui5-arrow-click", function () {
+		menuInSplitBtnLastAction.open ? menuInSplitBtnLastAction.close() : menuInSplitBtnLastAction.showAt(splitBtnLastAction);
+	});
+
+	menuInSplitBtnLastAction.addEventListener("ui5-item-click", function(event) {
+		splitBtnLastAction.innerText = event.detail.text;
+	});
+</script>
+	
+ + +
diff --git a/packages/main/test/specs/List.spec.js b/packages/main/test/specs/List.spec.js index 52427cf2147d..0aae41dce9c2 100644 --- a/packages/main/test/specs/List.spec.js +++ b/packages/main/test/specs/List.spec.js @@ -564,4 +564,14 @@ describe("List Tests", () => { await browser.url(`test/pages/List_test_page.html`); }); + + it('should not try to fire item-close if a select is closed from custom list item', async () => { + const select = await browser.$("#selectInLiCustom"); + const itemCloseResult = await browser.$("#customListItemSelectResult"); + + await select.click(); + await select.keys("Escape"); + + assert.strictEqual(await itemCloseResult.getProperty("value"), "0", "item-close event is not fired when the button is pressed."); + }); }); diff --git a/packages/main/test/specs/MultiComboBox.spec.js b/packages/main/test/specs/MultiComboBox.spec.js index d5114ad7a8df..745900e332ea 100644 --- a/packages/main/test/specs/MultiComboBox.spec.js +++ b/packages/main/test/specs/MultiComboBox.spec.js @@ -1,5 +1,14 @@ import { assert } from "chai"; +const getTokenizerPopoverId = async (mcbId) => { + return await browser.executeAsync(async (mcbId, done) => { + const input = document.querySelector(`#${mcbId}`); + const staticAreaItem = await (input.shadowRoot.querySelector("ui5-tokenizer").getStaticAreaItemDomRef()); + + done(staticAreaItem.host.classList[0]); + }, mcbId); +} + describe("MultiComboBox general interaction", () => { before(async () => { await browser.url(`test/pages/MultiComboBox.html`); @@ -1476,6 +1485,66 @@ describe("MultiComboBox general interaction", () => { }); }); + describe("MultiComboBox Truncated Token", () => { + beforeEach(async () => { + await browser.url(`test/pages/MultiComboBox.html`); + }); + + it("should truncate token when single token is in the multicombobox and open popover on click", async () => { + const mcb = await $("#truncated-token"); + const token = await mcb.shadow$("ui5-token"); + const rpoClassName = await getTokenizerPopoverId("truncated-token"); + const rpo = await browser.$(`.${rpoClassName}`).shadow$("ui5-responsive-popover"); + + assert.ok(await token.getProperty("singleToken"), "Single token property should be set"); + + await token.click(); + + assert.ok(await rpo.getProperty("opened"), "More Popover should be open"); + assert.ok(await token.getProperty("selected"), "Token should be selected"); + assert.ok(await token.getProperty("singleToken"), "Token should be single (could be truncated)"); + assert.ok(await rpo.$("ui5-li").getProperty("focused"), "Token's list item is focused"); + + + await token.click(); + + assert.notOk(await rpo.getProperty("opened"), "More Popover should be closed"); + assert.notOk(await token.getProperty("selected"), "Token should be deselected"); + assert.ok(await token.getProperty("focused"), "Token should be focused"); + }); + + it("should close truncation popover and deselect selected tokens when clicked outside the component", async () => { + const mcb = await $("#truncated-token"); + const token = await mcb.shadow$("ui5-token"); + const rpoClassName = await getTokenizerPopoverId("truncated-token"); + const rpo = await browser.$(`.${rpoClassName}`).shadow$("ui5-responsive-popover"); + + assert.ok(await token.getProperty("singleToken"), "Single token property should be set"); + + await token.click(); + + await $("#dummy-btn").click(); + + assert.notOk(await rpo.getProperty("opened"), "More Popover should be closed"); + assert.notOk(await token.getProperty("selected"), "Token should be deselected"); + }); + + it("should close truncation popover and deselect selected tokens when clicked in input field", async () => { + const mcb = await $("#truncated-token"); + const token = await mcb.shadow$("ui5-token"); + const rpoClassName = await getTokenizerPopoverId("truncated-token"); + const rpo = await browser.$(`.${rpoClassName}`).shadow$("ui5-responsive-popover"); + const inner = await mcb.shadow$("input"); + + assert.ok(await token.getProperty("singleToken"), "Single token property should be set"); + + await inner.click(); + + assert.notOk(await rpo.getProperty("opened"), "More Popover should be closed"); + assert.notOk(await token.getProperty("selected"), "Token should be deselected"); + }); + }); + describe("ARIA attributes", () => { before(async () => { await browser.url(`test/pages/MultiComboBox.html`); diff --git a/packages/main/test/specs/MultiInput.spec.js b/packages/main/test/specs/MultiInput.spec.js index 636f17802e4c..b50883e2b331 100644 --- a/packages/main/test/specs/MultiInput.spec.js +++ b/packages/main/test/specs/MultiInput.spec.js @@ -201,6 +201,99 @@ describe("MultiInput general interaction", () => { }); }); +describe("MultiInput Truncated Token", () => { + beforeEach(async () => { + await browser.url(`test/pages/MultiInput.html`); + }); + + it("should truncate token when single token is in the multinput and open popover on click", async () => { + const mi = await $("#truncated-token"); + const token = await mi.$("ui5-token"); + const rpoClassName = await getTokenizerPopoverId("truncated-token"); + const rpo = await browser.$(`.${rpoClassName}`).shadow$("ui5-responsive-popover"); + + assert.ok(await token.getProperty("singleToken"), "Single token property should be set"); + + await token.click(); + + assert.ok(await rpo.getProperty("opened"), "More Popover should be open"); + assert.ok(await token.getProperty("selected"), "Token should be selected"); + assert.ok(await token.getProperty("singleToken"), "Token should be single (could be truncated)"); + assert.ok(await rpo.$("ui5-li").getProperty("focused"), "Token's list item is focused"); + + await token.click(); + + assert.notOk(await rpo.getProperty("opened"), "More Popover should be closed"); + assert.notOk(await token.getProperty("selected"), "Token should be deselected"); + assert.ok(await token.getProperty("focused"), "Token should be focused"); + }); + + it("should close truncation popover and deselect selected tokens when clicked outside the component", async () => { + const mi = await $("#truncated-token"); + const token = await mi.$("ui5-token"); + const rpoClassName = await getTokenizerPopoverId("truncated-token"); + const rpo = await browser.$(`.${rpoClassName}`).shadow$("ui5-responsive-popover"); + + assert.ok(await token.getProperty("singleToken"), "Single token property should be set"); + + await token.click(); + + await $("#dummy-btn").click(); + + assert.notOk(await rpo.getProperty("opened"), "More Popover should be closed"); + assert.notOk(await token.getProperty("selected"), "Token should be deselected"); + }); + + it("should close truncation popover and deselect selected tokens when clicked in input field", async () => { + const mi = await $("#truncated-token"); + const token = await mi.$("ui5-token"); + const rpoClassName = await getTokenizerPopoverId("truncated-token"); + const rpo = await browser.$(`.${rpoClassName}`).shadow$("ui5-responsive-popover"); + const inner = await mi.shadow$("input"); + + assert.ok(await token.getProperty("singleToken"), "Single token property should be set"); + + await inner.click(); + + assert.notOk(await rpo.getProperty("opened"), "More Popover should be closed"); + assert.notOk(await token.getProperty("selected"), "Token should be deselected"); + }); + + it("should truncate token when a long token is added", async () => { + const mi = await $("#token-unique"); + const inner = await mi.shadow$("input"); + + await mi.scrollIntoView(); + + // populate new token + await inner.click(); + await inner.setValue("Officia enim ullamco sunt sunt nisi ullamco cillum velit."); + await inner.keys("Enter"); + + const rpoClassName = await getTokenizerPopoverId("token-unique"); + const rpo = await browser.$(`.${rpoClassName}`).shadow$("ui5-responsive-popover"); + + const token = await mi.$("ui5-token"); + + assert.ok(await token.getProperty("singleToken"), "Single token property should be set"); + + await token.click(); + + assert.ok(await rpo.getProperty("opened"), "More Popover should be open"); + assert.ok(await token.getProperty("selected"), "Token should be selected"); + assert.ok(await rpo.$("ui5-li").getProperty("focused"), "Token's list item is focused"); + + const deleteIcon = await token.shadow$("ui5-icon"); + + await deleteIcon.click(); + + const tokensCount = (await mi.$$("ui5-token")).length; + + assert.strictEqual(tokensCount, 0, "No Tokens should be available"); + assert.ok(await inner.isFocusedDeep(), "Inner input should be focused"); + }); +}); + describe("ARIA attributes", () => { it ("aria-describedby value according to the tokens count", async () => { const mi = await browser.$("#no-tokens"); diff --git a/packages/main/test/specs/ProgressIndicator.spec.js b/packages/main/test/specs/ProgressIndicator.spec.js index f8612777af02..c94e0d1bcca6 100644 --- a/packages/main/test/specs/ProgressIndicator.spec.js +++ b/packages/main/test/specs/ProgressIndicator.spec.js @@ -35,4 +35,25 @@ describe("API", () => { assert.strictEqual(await valueShadowSpan.getText(), originalPercentageValue + "%", "The value is row backed to the originally shown percentage value after the display value is set to empty string."); }); + + it("tests accessibleName property", async () => { + // Arrange + const progressIndicator = await browser.$("#PI"); + const progressIndicatorInternally = await browser.$("#PI").shadow$("div");; + const accName = "Hello world"; + const accNameNew = "Hello world 2"; + + // Assert + assert.strictEqual(await progressIndicator.getProperty("accessibleName"), accName, "The aria-label is correctly set."); + assert.strictEqual(await progressIndicatorInternally.getAttribute("aria-label"), accName, "The aria-label is correctly set internally."); + + //Act + await progressIndicator.setProperty("accessibleName", accNameNew); + + // Assert + assert.strictEqual(await progressIndicator.getProperty("accessibleName"), accNameNew, "The aria-label is correctly changed."); + assert.strictEqual(await progressIndicatorInternally.getAttribute("aria-label"), accNameNew, "The aria-label is correctly changed internally."); + + + }); }); diff --git a/packages/main/test/specs/RatingIndicator.spec.js b/packages/main/test/specs/RatingIndicator.spec.js index 409051e24540..c2ad42bc698f 100644 --- a/packages/main/test/specs/RatingIndicator.spec.js +++ b/packages/main/test/specs/RatingIndicator.spec.js @@ -122,4 +122,23 @@ describe("Rating Indicator general interaction", () => { assert.strictEqual(await ratingIndicator.getAttribute("title"), TOOLTIP, "The title attribute is rendered in the inner div as well."); }); + + it("Tests ACC attrs - required property add aria-description", async () => { + const ratingIndicatorRoot = await browser.$("#rating-indicator-required").shadow$(".ui5-rating-indicator-root"); + let resourceBundleText = null; + + resourceBundleText = await browser.executeAsync(done => { + const ratingIndicator = document.getElementById("rating-indicator-required"); + done(ratingIndicator.constructor.i18nBundle.getText(window["sap-ui-webcomponents-bundle"].defaultTexts.RATING_INDICATOR_ARIA_DESCRIPTION)); + }); + + assert.strictEqual(await ratingIndicatorRoot.getAttribute("aria-description"), resourceBundleText, "aria-description is correctly set"); + }); + + it("Tests ACC attrs - accessible-name-ref", async () => { + const ratingIndicator = await browser.$("#rating-indicator-acc-name-ref"); + const expectedText = await browser.$("#label-acc-name-ref").getText(); + + assert.strictEqual(await ratingIndicator.shadow$(".ui5-rating-indicator-root").getAttribute("aria-label"), expectedText, "aria-label should be the text of the label."); + }); }); diff --git a/packages/playground/.storybook/decorators/index.ts b/packages/playground/.storybook/decorators/index.ts new file mode 100644 index 000000000000..51495207df6a --- /dev/null +++ b/packages/playground/.storybook/decorators/index.ts @@ -0,0 +1,2 @@ +export * from './useOptions' +export * from './usePreventKeys' \ No newline at end of file diff --git a/packages/playground/.storybook/useOptions.ts b/packages/playground/.storybook/decorators/useOptions.ts similarity index 100% rename from packages/playground/.storybook/useOptions.ts rename to packages/playground/.storybook/decorators/useOptions.ts diff --git a/packages/playground/.storybook/decorators/usePreventKeys.ts b/packages/playground/.storybook/decorators/usePreventKeys.ts new file mode 100644 index 000000000000..0e3e0c7506ab --- /dev/null +++ b/packages/playground/.storybook/decorators/usePreventKeys.ts @@ -0,0 +1,22 @@ +import { useEffect } from "@storybook/preview-api"; +import type { DecoratorFunction } from '@storybook/types'; + +export const usePreventKeys: DecoratorFunction = (storyFn, context) => { + const preventKeys = (event: KeyboardEvent) => { + event.stopPropagation(); + }; + + useEffect(() => { + const root = document.getElementById('root-inner'); + + root?.addEventListener('keydown', preventKeys); + root?.addEventListener('keyup', preventKeys); + + return () => { + root?.removeEventListener('keydown', preventKeys); + root?.removeEventListener('keyup', preventKeys); + }; + }, []); + + return storyFn(); +}; diff --git a/packages/playground/.storybook/main.ts b/packages/playground/.storybook/main.ts index 8686e4aecf36..122dcaff6969 100644 --- a/packages/playground/.storybook/main.ts +++ b/packages/playground/.storybook/main.ts @@ -1,8 +1,12 @@ import remarkGfm from 'remark-gfm'; -const isProd = process.env.NODE_ENV === "production"; const config = { stories: ["../docs/**/*.mdx", "../_stories/**/*.stories.@(ts)"], + staticDirs: [ + { from: "../assets", to: "../assets" }, // from /assets to /dist/assets + { from: "../docs/storybook-pages", to: "/" }, // from /docs/storybook-pages to /dist/playground + { from: "../docs/landing-page.html", to: "../index.html" }, // from /docs/landing-page.html to /dist/index.html + ], addons: [ "@storybook/addon-links", { @@ -36,12 +40,6 @@ const config = { typescript: { reactDocgen: 'react-docgen' }, - env: (config: any) => ({ - ...config, - // static assets loaded inside preview-head.html are located in the root - // of the gh-pages branch and not in the _playground folder - STORYBOOK_ASSETS_BASE: isProd ? "../" : "./" - }), docs: { autodocs: true } diff --git a/packages/playground/.storybook/manager-head.html b/packages/playground/.storybook/manager-head.html index 70305983bef3..9744885767d1 100644 --- a/packages/playground/.storybook/manager-head.html +++ b/packages/playground/.storybook/manager-head.html @@ -3,3 +3,5 @@ padding-top: 0.5rem !important; } + + \ No newline at end of file diff --git a/packages/playground/.storybook/preview-head.html b/packages/playground/.storybook/preview-head.html index a43dab8c508f..0fe0cd0c8d7f 100644 --- a/packages/playground/.storybook/preview-head.html +++ b/packages/playground/.storybook/preview-head.html @@ -1,10 +1,10 @@ diff --git a/packages/playground/.storybook/preview.ts b/packages/playground/.storybook/preview.ts index cae42489718e..53c938a58726 100644 --- a/packages/playground/.storybook/preview.ts +++ b/packages/playground/.storybook/preview.ts @@ -2,7 +2,7 @@ import "@ui5/webcomponents-fiori/bundle.esm.js"; import getEffectiveContentDensity from "@ui5/webcomponents-base/dist/util/getEffectiveContentDensity.js"; import customElements from "./custom-elements.json"; import { setCustomElementsManifest } from "@storybook/web-components"; -import { useOptions, themes } from "./useOptions"; +import { useOptions, themes, usePreventKeys } from "./decorators"; import type { Parameters, GlobalTypes, DecoratorFunction, ArgTypesEnhancer } from '@storybook/types'; import { enhanceArgTypes } from "./args/enhanceArgTypes"; @@ -83,5 +83,5 @@ export const globalTypes: GlobalTypes = { }, }; -export const decorators: DecoratorFunction[] = [useOptions]; +export const decorators: DecoratorFunction[] = [useOptions, usePreventKeys]; export const argTypesEnhancers: ArgTypesEnhancer[] = [enhanceArgTypes]; diff --git a/packages/playground/.storybook/sbTheme.ts b/packages/playground/.storybook/sbTheme.ts index 4b877b3a8809..3dcfa3cb99b5 100644 --- a/packages/playground/.storybook/sbTheme.ts +++ b/packages/playground/.storybook/sbTheme.ts @@ -3,7 +3,7 @@ import { create } from "@storybook/theming"; export default create({ base: "light", brandTitle: "UI5 Web Components", - brandImage: `${process.env.STORYBOOK_ASSETS_BASE}/assets/images/sb-logo.png`, - brandUrl: process.env.STORYBOOK_ASSETS_BASE, + brandImage: `../assets/images/sb-logo.png`, + brandUrl: './', brandTarget: "_self", }); diff --git a/packages/playground/CHANGELOG.md b/packages/playground/CHANGELOG.md index dc28dce2f3b9..1c989d3b609c 100644 --- a/packages/playground/CHANGELOG.md +++ b/packages/playground/CHANGELOG.md @@ -3,6 +3,44 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [1.16.0-rc.0](https://github.com/SAP/ui5-webcomponents/compare/v1.15.1...v1.16.0-rc.0) (2023-07-06) + +**Note:** Version bump only for package @ui5/webcomponents-playground + + + + + +## [1.15.1](https://github.com/SAP/ui5-webcomponents/compare/v1.15.0...v1.15.1) (2023-06-30) + + +### Bug Fixes + +* **framework:** fix links in starting page of new pkg [ci skip] ([475fed5](https://github.com/SAP/ui5-webcomponents/commit/475fed55504f4a15e8b26aaf3c9e4d73b55976ec)) + + + + + +# [1.15.0](https://github.com/SAP/ui5-webcomponents/compare/v1.15.0-rc.2...v1.15.0) (2023-06-30) + + +### Features + +* **ui5-rating-indicator:** add required and accessibleNameRef properties ([#7185](https://github.com/SAP/ui5-webcomponents/issues/7185)) ([3cb09c6](https://github.com/SAP/ui5-webcomponents/commit/3cb09c690d22d2c12eba8c6aa23bc60f70b6b890)) + + + + + +# [1.15.0-rc.2](https://github.com/SAP/ui5-webcomponents/compare/v1.15.0-rc.1...v1.15.0-rc.2) (2023-06-22) + +**Note:** Version bump only for package @ui5/webcomponents-playground + + + + + # [1.15.0-rc.1](https://github.com/SAP/ui5-webcomponents/compare/v1.15.0-rc.0...v1.15.0-rc.1) (2023-06-15) diff --git a/packages/playground/Gemfile b/packages/playground/Gemfile deleted file mode 100644 index 4382fdac1db3..000000000000 --- a/packages/playground/Gemfile +++ /dev/null @@ -1,4 +0,0 @@ -source "https://rubygems.org" -gemspec - -gem "webrick", "~> 1.7" \ No newline at end of file diff --git a/packages/playground/Gemfile.lock b/packages/playground/Gemfile.lock deleted file mode 100644 index ba3f391b29c0..000000000000 --- a/packages/playground/Gemfile.lock +++ /dev/null @@ -1,83 +0,0 @@ -PATH - remote: . - specs: - UI5-Web-Components-Playground (1.0.0.pre.rc.9) - jekyll (>= 3.8.5) - jekyll-seo-tag (>= 2.0) - rake (>= 12.3.1) - -GEM - remote: https://rubygems.org/ - specs: - addressable (2.8.1) - public_suffix (>= 2.0.2, < 6.0) - colorator (1.1.0) - concurrent-ruby (1.1.10) - em-websocket (0.5.3) - eventmachine (>= 0.12.9) - http_parser.rb (~> 0) - eventmachine (1.2.7) - ffi (1.15.5) - forwardable-extended (2.6.0) - google-protobuf (3.21.12-x86_64-darwin) - http_parser.rb (0.8.0) - i18n (1.12.0) - concurrent-ruby (~> 1.0) - jekyll (4.3.1) - addressable (~> 2.4) - colorator (~> 1.0) - em-websocket (~> 0.5) - i18n (~> 1.0) - jekyll-sass-converter (>= 2.0, < 4.0) - jekyll-watch (~> 2.0) - kramdown (~> 2.3, >= 2.3.1) - kramdown-parser-gfm (~> 1.0) - liquid (~> 4.0) - mercenary (>= 0.3.6, < 0.5) - pathutil (~> 0.9) - rouge (>= 3.0, < 5.0) - safe_yaml (~> 1.0) - terminal-table (>= 1.8, < 4.0) - webrick (~> 1.7) - jekyll-sass-converter (3.0.0) - sass-embedded (~> 1.54) - jekyll-seo-tag (2.8.0) - jekyll (>= 3.8, < 5.0) - jekyll-watch (2.2.1) - listen (~> 3.0) - kramdown (2.4.0) - rexml - kramdown-parser-gfm (1.1.0) - kramdown (~> 2.0) - liquid (4.0.4) - listen (3.8.0) - rb-fsevent (~> 0.10, >= 0.10.3) - rb-inotify (~> 0.9, >= 0.9.10) - mercenary (0.4.0) - pathutil (0.16.2) - forwardable-extended (~> 2.6) - public_suffix (5.0.1) - rake (13.0.6) - rb-fsevent (0.11.2) - rb-inotify (0.10.1) - ffi (~> 1.0) - rexml (3.2.5) - rouge (3.30.0) - safe_yaml (1.0.5) - sass-embedded (1.57.1-x86_64-darwin) - google-protobuf (~> 3.21) - terminal-table (3.0.2) - unicode-display_width (>= 1.1.1, < 3) - unicode-display_width (2.4.2) - webrick (1.7.0) - -PLATFORMS - x86_64-darwin-22 - -DEPENDENCIES - UI5-Web-Components-Playground! - bundler (~> 2.3.5) - webrick (~> 1.7) - -BUNDLED WITH - 2.3.26 diff --git a/packages/playground/Rakefile b/packages/playground/Rakefile deleted file mode 100644 index 65dfcb711ec9..000000000000 --- a/packages/playground/Rakefile +++ /dev/null @@ -1 +0,0 @@ -Dir.glob('lib/tasks/*.rake').each {|r| import r} \ No newline at end of file diff --git a/packages/playground/_config.yml b/packages/playground/_config.yml deleted file mode 100644 index 4a55333ae1e7..000000000000 --- a/packages/playground/_config.yml +++ /dev/null @@ -1,35 +0,0 @@ -# Welcome to Jekyll! -# -# This config file is meant for settings that affect your whole site, values -# which you are expected to set up once and rarely edit after that. If you find -# yourself editing these this file very often, consider using Jekyll's data files -# feature for the data you need to update frequently. -# -# For technical reasons, this file is *NOT* reloaded automatically when you use -# 'jekyll serve'. If you change this file, please restart the server process. - -# Site settings -# These are used to personalize your new site. If you look in the HTML files, -# you will see them accessed via {{ site.title }}, {{ site.github_repo }}, and so on. -# You can create any custom variable you would like, and they will be accessible -# in the templates via {{ site.myvariable }}. -title: UI5 Web Components -description: Enterprise-flavored sugar on top of native APIs! -# baseurl: "" # the subpath of your site, e.g. /blog -url: "https://sap.github.io/ui5-webcomponents" # the base hostname & protocol for your site, e.g. http://example.com - -# permalink: /playground -exclude: ["node_modules/", "*.gemspec", "*.gem", "Gemfile", "Gemfile.lock", "package.json", "package-lock.json", "script/", "LICENSE.txt", "lib/", "bin/", "README.md", "Rakefile"] - -# Enable or disable the site search -search_enabled: true - -# Color scheme currently only supports "dark" or nil (default) -color_scheme: nil - -# Google Analytics Tracking (optional) -# e.g, UA-1234567-89 -#ga_tracking: - -plugins: - - jekyll-seo-tag \ No newline at end of file diff --git a/packages/playground/_config_main.yml b/packages/playground/_config_main.yml deleted file mode 100644 index 05e1b8fc4e59..000000000000 --- a/packages/playground/_config_main.yml +++ /dev/null @@ -1,3 +0,0 @@ -# This file is used for deployment of the playground in main branch on every commit. - -url: "https://sap.github.io/ui5-webcomponents/main" diff --git a/packages/playground/_includes/head.html b/packages/playground/_includes/head.html deleted file mode 100644 index 54b031435798..000000000000 --- a/packages/playground/_includes/head.html +++ /dev/null @@ -1,32 +0,0 @@ - - - - - {% if site.plugins.jekyll-seo == nil %} - {{ page.title }} - {{ site.title }} - - {% if page.description %} - - {% endif %} - {% endif %} - - - - - - - - - - - - -{% seo %} - diff --git a/packages/playground/_includes/nav.html b/packages/playground/_includes/nav.html deleted file mode 100644 index 6e540104bc17..000000000000 --- a/packages/playground/_includes/nav.html +++ /dev/null @@ -1,49 +0,0 @@ - diff --git a/packages/playground/_layouts/default.html b/packages/playground/_layouts/default.html deleted file mode 100644 index b1c3650155f7..000000000000 --- a/packages/playground/_layouts/default.html +++ /dev/null @@ -1,67 +0,0 @@ - - - -{% include head.html %} - - -
- - -
-
- {% unless page.url == "/" %} - {% if page.parent %} - - {% endif %} - {% endunless %} -
- {{ content }} - - {% if page.has_children == true and page.has_toc != false %} -
-

Table of contents

- {% assign children_list = site.pages | sort:"nav_order" %} -
    - {% for child in children_list %} - {% if child.parent == page.title and child.title != page.title %} -
  • - {{ child.title }} -
  • - {% endif %} - {% endfor %} -
- {% endif %} -
-
-
-
- - - diff --git a/packages/playground/_layouts/docs.html b/packages/playground/_layouts/docs.html deleted file mode 100644 index 95bb4a235174..000000000000 --- a/packages/playground/_layouts/docs.html +++ /dev/null @@ -1,52 +0,0 @@ ---- -layout: default ---- - -{{ content }} - - - - diff --git a/packages/playground/_layouts/sample.html b/packages/playground/_layouts/sample.html deleted file mode 100644 index 410ed8b45bec..000000000000 --- a/packages/playground/_layouts/sample.html +++ /dev/null @@ -1,82 +0,0 @@ ---- -layout: default ---- - -{{ content }} - -
- - - -
- -
-
-
- Theme: - - Morning Horizon (Light) - Evening Horizon (Dark) - Horizon High Contrast Black - Horizon High Contrast White - Quartz Light - Quartz Dark - Quartz High Contrast Black - Quartz High Contrast White - -
-
- Content Density: - - Cozy - Compact - -
-
- Text Direction: - - LTR - RTL - -
-
-
-
- Apply - Cancel -
-
- - - - - - - - - - diff --git a/packages/playground/_sass/base.scss b/packages/playground/_sass/base.scss deleted file mode 100644 index cf871ce5ed6c..000000000000 --- a/packages/playground/_sass/base.scss +++ /dev/null @@ -1,106 +0,0 @@ -// -// Base element style overrides -// -// stylelint-disable selector-no-type, selector-max-type - - -::selection { - color: $white; - background: $link-color; -} - -html { - @include fs-4; -} - -body { - font-family: $body-font-family; - font-size: inherit; - line-height: $body-line-height; - color: $body-text-color; - background-color: $body-background-color; -} - -p:not(.style-scope), -h1:not(.style-scope), -h2:not(.style-scope), -h3:not(.style-scope), -h4:not(.style-scope), -h5:not(.style-scope), -h6:not(.style-scope), -ol:not(.style-scope), -ul:not(.style-scope), -pre:not(.style-scope), -address:not(.style-scope), -blockquote:not(.style-scope), -dl:not(.style-scope), -div:not(.style-scope), -fieldset:not(.style-scope), -form:not(.style-scope), -hr:not(.style-scope), -noscript:not(.style-scope), -table:not(.style-scope) { - margin-top: 0; -} - -h1:not(.style-scope), -h2:not(.style-scope), -h3:not(.style-scope), -h4:not(.style-scope), -h5:not(.style-scope), -h6:not(.style-scope) { - margin-top: 1.2em; - margin-bottom: 0.8em; - font-weight: 500; - line-height: $body-heading-line-height; - color: $body-heading-color; -} - -p:not(.style-scope) { - margin-bottom: 1em; -} - -a { - color: #4A90E2; - text-decoration: none; -} - -a:not([class]):not(.style-scope) { - text-decoration: none; - background-image: linear-gradient($border-color 0%, $border-color 100%); - background-repeat: repeat-x; - background-position: 0 100%; - background-size: 1px 1px; - - &:hover { - background-image: linear-gradient(rgba($link-color, 0.45) 0%, rgba($link-color, 0.45) 100%); - background-size: 1px 1px; - - } -} - -code:not(.style-scope) { - font-family: $mono-font-family; - font-size: 14px; - line-height: $body-line-height; -} - -figure:not(.style-scope) { - margin: 0; -} - -li:not(.style-scope) { - margin: 0.25em 0; -} - -img:not(.style-scope):not([slot]) { - max-width: 100%; -} - -hr:not(.style-scope) { - height: 1px; - padding: 0; - margin: $sp-6 0; - background-color: $border-color; - border: 0; -} diff --git a/packages/playground/_sass/code.scss b/packages/playground/_sass/code.scss deleted file mode 100644 index e8989f31dc03..000000000000 --- a/packages/playground/_sass/code.scss +++ /dev/null @@ -1,122 +0,0 @@ -// -// Code and syntax highlighting -// -// stylelint-disable selector-no-qualifying-type, declaration-block-semicolon-newline-after,declaration-block-single-line-max-declarations, selector-no-type, selector-max-type - -code { - padding: 0.2em 0.15em; - font-weight: 400; - background-color: $code-background-color; - border: $border $border-color; - border-radius: $border-radius; -} - -pre.highlight { - padding: $sp-3; - margin-bottom: 0; - -webkit-overflow-scrolling: touch; - background-color: $code-background-color; - - code { - padding: 0; - border: 0; - } -} - -.highlighter-rouge { - margin-bottom: $sp-3; - overflow: hidden; - border-radius: $border-radius; -} - -.highlight .c { color: #586e75; } // comment // -.highlight .err { color: #93a1a1; } // error // -.highlight .g { color: #93a1a1; } // generic // -.highlight .k { color: #859900; } // keyword // -.highlight .l { color: #93a1a1; } // literal // -.highlight .n { color: #93a1a1; } // name // -.highlight .o { color: #859900; } // operator // -.highlight .x { color: #cb4b16; } // other // -.highlight .p { color: #93a1a1; } // punctuation // -.highlight .cm { color: #586e75; } // comment.multiline // -.highlight .cp { color: #859900; } // comment.preproc // -.highlight .c1 { color: #586e75; } // comment.single // -.highlight .cs { color: #859900; } // comment.special // -.highlight .gd { color: #2aa198; } // generic.deleted // -.highlight .ge { font-style: italic; color: #93a1a1; } // generic.emph // -.highlight .gr { color: #dc322f; } // generic.error // -.highlight .gh { color: #cb4b16; } // generic.heading // -.highlight .gi { color: #859900; } // generic.inserted // -.highlight .go { color: #93a1a1; } // generic.output // -.highlight .gp { color: #93a1a1; } // generic.prompt // -.highlight .gs { font-weight: bold; color: #93a1a1; } // generic.strong // -.highlight .gu { color: #cb4b16; } // generic.subheading // -.highlight .gt { color: #93a1a1; } // generic.traceback // -.highlight .kc { color: #cb4b16; } // keyword.constant // -.highlight .kd { color: #268bd2; } // keyword.declaration // -.highlight .kn { color: #859900; } // keyword.namespace // -.highlight .kp { color: #859900; } // keyword.pseudo // -.highlight .kr { color: #268bd2; } // keyword.reserved // -.highlight .kt { color: #dc322f; } // keyword.type // -.highlight .ld { color: #93a1a1; } // literal.date // -.highlight .m { color: #2aa198; } // literal.number // -.highlight .s { color: #2aa198; } // literal.string // -.highlight .na { color: #93a1a1; } // name.attribute // -.highlight .nb { color: #b58900; } // name.builtin // -.highlight .nc { color: #268bd2; } // name.class // -.highlight .no { color: #cb4b16; } // name.constant // -.highlight .nd { color: #268bd2; } // name.decorator // -.highlight .ni { color: #cb4b16; } // name.entity // -.highlight .ne { color: #cb4b16; } // name.exception // -.highlight .nf { color: #268bd2; } // name.function // -.highlight .nl { color: #93a1a1; } // name.label // -.highlight .nn { color: #93a1a1; } // name.namespace // -.highlight .nx { color: #555; } // name.other // -.highlight .py { color: #93a1a1; } // name.property // -.highlight .nt { color: #268bd2; } // name.tag // -.highlight .nv { color: #268bd2; } // name.variable // -.highlight .ow { color: #859900; } // operator.word // -.highlight .w { color: #93a1a1; } // text.whitespace // -.highlight .mf { color: #2aa198; } // literal.number.float // -.highlight .mh { color: #2aa198; } // literal.number.hex // -.highlight .mi { color: #2aa198; } // literal.number.integer // -.highlight .mo { color: #2aa198; } // literal.number.oct // -.highlight .sb { color: #586e75; } // literal.string.backtick // -.highlight .sc { color: #2aa198; } // literal.string.char // -.highlight .sd { color: #93a1a1; } // literal.string.doc // -.highlight .s2 { color: #2aa198; } // literal.string.double // -.highlight .se { color: #cb4b16; } // literal.string.escape // -.highlight .sh { color: #93a1a1; } // literal.string.heredoc // -.highlight .si { color: #2aa198; } // literal.string.interpol // -.highlight .sx { color: #2aa198; } // literal.string.other // -.highlight .sr { color: #dc322f; } // literal.string.regex // -.highlight .s1 { color: #2aa198; } // literal.string.single // -.highlight .ss { color: #2aa198; } // literal.string.symbol // -.highlight .bp { color: #268bd2; } // name.builtin.pseudo // -.highlight .vc { color: #268bd2; } // name.variable.class // -.highlight .vg { color: #268bd2; } // name.variable.global // -.highlight .vi { color: #268bd2; } // name.variable.instance // -.highlight .il { color: #2aa198; } // literal.number.integer.long // - -// -// Code examples (rendered) -// - -.code-example { - padding: $sp-3; - margin-bottom: $sp-3; - overflow: auto; - border: 1px solid $border-color; - border-radius: $border-radius; - - + .highlighter-rouge, - + figure.highlight { - position: relative; - margin-top: -$sp-4; - border-right: 1px solid $border-color; - border-bottom: 1px solid $border-color; - border-left: 1px solid $border-color; - border-top-left-radius: 0; - border-top-right-radius: 0; - } -} diff --git a/packages/playground/_sass/layout.scss b/packages/playground/_sass/layout.scss deleted file mode 100644 index 55cbbe942fdf..000000000000 --- a/packages/playground/_sass/layout.scss +++ /dev/null @@ -1,269 +0,0 @@ -// -// The basic two column layout -// - -.page-wrap { - @include mq(md) { - position: absolute; - top: 0; - left: 0; - display: flex; - width: 100%; - height: 100%; - overflow-x: hidden; - overflow-y: hidden; - } -} - -.js-search-results { - height: 30rem; - overflow-y: auto; -} - -.side-bar { - z-index: 100; - height: calc(100% - 3rem); - top: 3rem; - display: flex; - flex-wrap: wrap; - padding-top: $gutter-spacing-sm; - padding-bottom: $gutter-spacing-sm; - background-color: #fff; - width: 250px; - - @include mq(md) { - flex-wrap: nowrap; - position: absolute; - // width: $nav-width + 16px; - height: 100%; - padding-top: 0; - flex-direction: column; - border-right: $border $border-color; - align-items: flex-end; - - // IE spesific css - position: fixed; - top: 3rem; - left: 0; - } - - @include mq(lg) { - // width: calc((100% - #{$nav-width + $content-width}) / 2 + #{$nav-width}); - min-width: $nav-width; - - // IE spesific css - position: fixed; - top: 3rem; - left: 0; - } -} - -.main-content-wrap { - @include mq(md) { - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; - min-height: 600px; - -webkit-overflow-scrolling: touch; - overflow-x: hidden; - overflow-y: scroll; - padding-top: 3rem; - box-sizing: border-box; - } -} - -.main-content { - padding-top: $gutter-spacing-sm; - font-family: "72-Regular"; - @include container; - - @include mq(md) { - position: relative; - margin: 48px 0 0 250px; - padding-top: 2rem; - } - - @include mq(lg) { - margin: 48px 0 0 250px; - padding-top: 2rem; - } -} - -.js-main-content:focus { - outline: none; -} - -.page-header { - position: relative; - width: 100%; - height: 3rem; - display: flex; - justify-content: space-between; - align-items: center; - background-color: #000; - z-index: 150; - - .main-content, - .main-content-header { - padding-top: 0; - - @include mq(md) { - display: flex; - justify-content: flex-end; - } - } -} - -.logo-wrapper { - height: 100%; - display: flex; - align-items: center; - z-index: 1; -} - -.logo { - width: 2.4rem; - height: 2.4rem; - margin: 0 .5rem; -} - -.links-wrapper { - position: absolute; - height: 100%; - display: flex; - left: 250px; -} - -@media only screen and (max-width: 1100px) { - .links-wrapper { - display: none; - } -} - -.wrapper-links { - display: flex; - align-items: center; - font-size: 16px; - font-family: "72-Regular", "72-Light"; - color: #fff; - text-decoration: none; - margin-right: .5rem; -} - -.wrapper-links:hover { - color: #A2A2A2; -} - -.heading { - color: #fff; -} - -.settings { - width: 2rem; - height: 2.3rem; - display: flex; - justify-content: center; - align-items: center; - position: fixed; - top: 20%; - right: 0; - background-color: #000; - border-top-left-radius: 10px; - border-bottom-left-radius: 10px; - cursor: pointer; -} - -.hcb .settings { - -webkit-box-shadow: -10px 0px 10px 0px rgba(255, 255, 255, 0.75); - -moz-box-shadow: -10px 0px 10px 0px rgba(255, 255, 255, 0.75); - box-shadow: -1px 1px 10px 0px rgba(255, 255, 255, 0.75); -} - -.settings > svg { - fill: #fff; -} - -.settings > svg:hover { - fill: #cacaca; -} - -.settings-icon { - width: 70%; - height: 70%; -} - -#mobile-button { - margin-right: .5rem; - background: none; - color: #fff; - border: 1px solid #fff; - border-radius: 5px; -} - -@media only screen and (min-width: 740px) { - #mobile-button { - visibility: hidden; - } -} - -@media only screen and (max-width: 740px) { - .heading { - display: none; - } - - .side-bar { - padding: 0; - width: 100%; - } -} - -.navigation, -.site-footer { - box-sizing: border-box; - padding-left: 2rem; - padding-right: 2rem; - - width: 100% !important; - - @include mq(lg) { - width: $nav-width + 32px; - } -} - -.navigation { - @include mq(md) { - padding-top: 1rem; - overflow-y: auto; - flex: 1 1 auto; - } -} - -// stylelint-disable selector-max-type - -body { - position: relative; - padding-bottom: $sp-10; - - @include mq(md) { - position: static; - padding-bottom: 0; - } -} - -// stylelint-enable selector-max-type - -.site-footer { - position: absolute; - bottom: 0; - padding-top: $sp-4; - padding-bottom: $sp-4; - - @include mq(md) { - position: static; - align-self: flex-end; - justify-self: end; - background-color: $sidebar-color; - } -} \ No newline at end of file diff --git a/packages/playground/_sass/navigation.scss b/packages/playground/_sass/navigation.scss deleted file mode 100644 index 1394379e85e8..000000000000 --- a/packages/playground/_sass/navigation.scss +++ /dev/null @@ -1,178 +0,0 @@ -// -// Main nav, breadcrumb, etc... -// - -@font-face { - font-family: "72-Bold"; - src: url(../fonts/72-Bold.woff2) format("woff2"); -} - -@font-face { - font-family: "72-Regular"; - src: url(../fonts/72-Regular.woff2) format("woff2"); -} - -.navigation-list { - padding: 0; - margin-top: $sp-4; - margin-bottom: 0; - list-style: none; - - @include mq(md) { - margin-top: 0; - } -} - -.navigation-list > .navigation-list-item > .navigation-list-link { - position: relative; - font-family: "72-Bold"; - font-size: 1rem; -} - -.navigation-list-child-list { - padding-left: $sp-3; - list-style: none; - - .navigation-list-item { - font-family: "72-Regular" !important; - position: relative; - - &.active { - &::before { - color: $body-text-color; - } - } - } -} - -.visible { - display: block !important; - padding-bottom: 3rem; -} - -.navigation-list-item { - position: relative; - @include fs-4; - margin: 0; - - @include mq(md) { - @include fs-3; - } - - .navigation-list-child-list { - display: none; - } - - &.active { - .navigation-list-child-list { - display: block; - } - } -} - -.navigation-list-link.active::after{ - content: ""; - width: .9rem; - height: 3px; - position: absolute; - left: -1.2rem; - top: .75rem; - border-radius: 1rem; - background-color: #FF6216; -} - -.navigation-list > .navigation-list-item > a.navigation-list-link::after { - top: .8rem; -} - -@media only screen and (max-width: 740px) { - .navigation-list-item { - text-align: center; - &::after { - display: none; - } - } -} - -.navigation-list-link { - display: flex; - justify-content: space-between; - padding-top: $sp-1; - padding-bottom: $sp-1; - color: #2b2b2b; - font-family: "72-Regular"; -} - -.new-tag { - display: flex; - align-items: center; - color: #4A90E2; - font-size: 12px; -} - -// Small screen nav - -.main-nav, -.aux-nav { - display: none; - - &.nav-open { - display: block; - } - @include mq(md) { - display: block; - } -} - -// Breadcrumb nav -.breadcrumb-nav { - @include mq(md) { - margin-top: -$sp-4; - } -} - -.breadcrumb-nav-list { - padding-left: 0; - margin-bottom: $sp-3; - list-style: none; -} - -.breadcrumb-nav-list-item { - display: table-cell; - @include fs-2; - - &::before { - display: none; - } - - &::after { - display: inline-block; - margin-right: $sp-2; - margin-left: $sp-2; - color: $grey-dk-000; - content: "/"; - } - - &:last-child { - &::after { - content: ""; - } - } -} - -@media(max-width: 740px) { - .navigation-list-link { - display: flex; - justify-content: center; - } - - .navigation-list-link, .component-name { - width: 100%; - } - - .new-tag { - position: absolute; - line-height: 1.5rem; - right: 0rem; - } -} \ No newline at end of file diff --git a/packages/playground/_sass/search.scss b/packages/playground/_sass/search.scss deleted file mode 100644 index 5fbf4959bb73..000000000000 --- a/packages/playground/_sass/search.scss +++ /dev/null @@ -1,144 +0,0 @@ -// -// Search input and autocomplete -// - -.search { - width: 320px; - position: relative; - z-index: 99; - display: none; - padding: $sp-2; - border-radius: 3px; - box-shadow: 0 1px 2px rgba(0, 0, 0, 0.07), 0 3px 10px rgba(0, 0, 0, 0.05); - - @include mq(md) { - display: block; - padding-top: $sp-1; - padding-right: 0; - padding-bottom: 0; - padding-left: 0; - margin-bottom: 0; - background-color: transparent; - box-shadow: none; - } - - &.nav-open { - display: block; - } -} - -@media only screen and (max-width: 740px) { - .heading { - display: none; - } - - .search { - display: block; - width: 200px; - } -} - -.search-results-wrap { - display: none; - - &.active { - position: absolute; - top: $sp-1; - z-index: 100; - display: block; - width: 300px; - margin-top: $gutter-spacing; - background: lighten($body-background-color, 1%); - box-shadow: 0 1px 3px rgba(0, 0, 0, 0.07), 0 4px 14px rgba(0, 0, 0, 0.05); - } -} - -.search-input-wrap { - display: flex; - padding: 0 0.4rem; - background-color: #000; - border: 1px solid #fff; - border-radius: 4px; -} - - -.search-input { - width: 100%; - padding-top: $sp-1; - padding-bottom: $sp-1; - background-color: #000; - color: #fff; - border-top: 0; - border-right: 0; - border-bottom: 0; - border-left: 0; - order: 2; - - &:focus { - outline: 0; - box-shadow: none; - - + .search-icon { - fill: #fff; - } - } - - &:focus::-webkit-input-placeholder { /* Edge */ - color: #fff - } - - &:focus::placeholder { - color: #fff - } - - @include fs-5; - - @include mq(sm) { - @include fs-3; - } - - @include mq(md) { - @include fs-2; - } -} - -.search-icon { - align-self: center; - margin-right: $sp-2; - fill: $grey-dk-000; - order: 1; -} - -.search-results-list { - padding-left: 0; - margin-top: $sp-1; - margin-bottom: $sp-1; - list-style: none; - @include fs-3; -} - -.search-results-list-item { - padding: 0; - margin: 0; - - * { - text-overflow: ellipsis; - white-space: nowrap; - overflow: hidden; - } -} - -.search-results-link { - display: flex; - flex-direction: column; - padding-top: $sp-1; - padding-right: $sp-3; - padding-bottom: $sp-1; - padding-left: $sp-3; - color: $body-heading-color; - - &:hover { - color: #4A90E2; - background-color: darken($body-background-color, 2%); - } -} diff --git a/packages/playground/_sass/support/_functions.scss b/packages/playground/_sass/support/_functions.scss deleted file mode 100644 index e9885f625faa..000000000000 --- a/packages/playground/_sass/support/_functions.scss +++ /dev/null @@ -1,10 +0,0 @@ -@function rem($size, $unit:"") { - $remSize: $size / $root-font-size; - - @if ($unit == false) { - @return #{$remSize}; - } - @else { - @return #{$remSize}rem; - } -} diff --git a/packages/playground/_sass/support/_variables.scss b/packages/playground/_sass/support/_variables.scss deleted file mode 100644 index 7de75b1481f7..000000000000 --- a/packages/playground/_sass/support/_variables.scss +++ /dev/null @@ -1,130 +0,0 @@ -// -// Typography -// - -$body-font-family: -apple-system, BlinkMacSystemFont, "helvetica neue", helvetica, roboto, noto, "segoe ui", arial, sans-serif !default; -$mono-font-family: "SFMono-Regular", Menlo, Consolas, Monospace !default; -$root-font-size: 16px !default; // Base font-size for rems -$body-line-height: 1.4 !default; -$body-heading-line-height: 1.15 !default !default; - -// -// Colors -// - -$white: #fff !default; - -$grey-dk-000: #959396 !default; -$grey-dk-100: #5c5962 !default; -$grey-dk-200: #44434d !default; -$grey-dk-250: #302d36 !default; -$grey-dk-300: #27262b !default; - -$grey-lt-000: #f5f6fa !default; -$grey-lt-100: #eeebee !default; -$grey-lt-200: #ecebed !default; -$grey-lt-300: #e6e1e8 !default; - -$purple-000: #7253ed !default; -$purple-100: #5e41d0 !default; -$purple-200: #4e26af !default; -$purple-300: #381885 !default; - -$blue-000: #2c84fa !default; -$blue-100: #2869e6 !default; -$blue-200: #264caf !default; -$blue-300: #183385 !default; - -$green-000: #41d693 !default; -$green-100: #11b584 !default; -$green-200: #009c7b !default; -$green-300: #026e57 !default; - -$yellow-000: #ffeb82 !default; -$yellow-100: #fadf50 !default; -$yellow-200: #f7d12e !default; -$yellow-300: #e7af06 !default; - -$red-000: #f77e7e !default; -$red-100: #f96e65 !default; -$red-200: #e94c4c !default; -$red-300: #dd2e2e !default; - -$body-background-color: $white !default; -$sidebar-color: $grey-lt-000 !default; -$code-background-color: $grey-lt-000 !default; - -$body-text-color: $grey-dk-100 !default; -$body-heading-color: $grey-dk-300 !default; -$nav-child-link-color: #4A90E2; -$link-color: #4A90E2; -$btn-primary-color: $purple-100 !default; -$base-button-color: #f7f7f7 !default; - -// -// Media queries in pixels -// - -$media-queries: ( - xs: 320px, - sm: 500px, - md: 740px, - lg: 1120px, - xl: 1400px -) !default; - -// -// Spacing -// - -$spacing-unit: 1rem; // 1rem == 16px - -$spacers: ( - sp-0: 0, - sp-1: $spacing-unit * 0.25, - sp-2: $spacing-unit * 0.5, - sp-3: $spacing-unit * 0.75, - sp-4: $spacing-unit, - sp-5: $spacing-unit * 1.5, - sp-6: $spacing-unit * 2, - sp-7: $spacing-unit * 2.5, - sp-8: $spacing-unit * 3, - sp-9: $spacing-unit * 3.5, - sp-10: $spacing-unit * 4 -) !default; - -$sp-1: map-get($spacers, sp-1) !default; // 0.25 rem == 4px -$sp-2: map-get($spacers, sp-2) !default; // 0.5 rem == 8px -$sp-3: map-get($spacers, sp-3) !default; // 0.75 rem == 12px -$sp-4: map-get($spacers, sp-4) !default; // 1 rem == 16px -$sp-5: map-get($spacers, sp-5) !default; // 1.5 rem == 24px -$sp-6: map-get($spacers, sp-6) !default; // 2 rem == 32px -$sp-7: map-get($spacers, sp-7) !default; // 2.5 rem == 40px -$sp-8: map-get($spacers, sp-8) !default; // 3 rem == 48px -$sp-9: map-get($spacers, sp-9) !default; // 4 rem == 48px -$sp-10: map-get($spacers, sp-10) !default; // 4.5 rem == 48px - -// -// Borders -// - -$border: 1px solid !default; -$border-radius: 4px !default; -$border-color: $grey-lt-100 !default; - -// -// Grid system -// - -$gutter-spacing: $sp-6 !default; -$gutter-spacing-sm: $sp-4 !default; -$nav-width: 232px !default; -$content-width: 800px !default; - -$media-queries: ( - xs: 320px, - sm: 500px, - md: 740px, - lg: 800px, - xl: 1316px -) !default; diff --git a/packages/playground/_sass/support/mixins/_buttons.scss b/packages/playground/_sass/support/mixins/_buttons.scss deleted file mode 100644 index e3e6c4fbcafd..000000000000 --- a/packages/playground/_sass/support/mixins/_buttons.scss +++ /dev/null @@ -1,27 +0,0 @@ -// Colored button - -@mixin btn-color($fg, $bg) { - color: $fg; - background-color: darken($bg, 2%); - background-image: linear-gradient(lighten($bg, 5%), darken($bg, 2%)); - box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), 0 4px 10px rgba(0, 0, 0, 0.12); - - &:hover, - &.zeroclipboard-is-hover { - color: $fg; - background-color: darken($bg, 4%); - background-image: linear-gradient((lighten($bg, 2%), darken($bg, 4%))); - } - - &:active, - &.selected, - &.zeroclipboard-is-active { - background-color: darken($bg, 5%); - background-image: none; - box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15); - } - - &.selected:hover { - background-color: darken($bg, 10%); - } -} diff --git a/packages/playground/_sass/support/mixins/_layout.scss b/packages/playground/_sass/support/mixins/_layout.scss deleted file mode 100644 index 7e7967e4cb42..000000000000 --- a/packages/playground/_sass/support/mixins/_layout.scss +++ /dev/null @@ -1,36 +0,0 @@ -// Media query - -// Media query mixin -// Usage: -// @include mq(md) { -// ..medium and up styles -// } -@mixin mq($name) { - // Retrieves the value from the key - $value: map-get($media-queries, $name); - - // If the key exists in the map - @if $value != null { - // Prints a media query based on the value - @media (min-width: rem($value)) { - @content; - } - } - - @else { - @warn "No value could be retrieved from `#{$media-query}`. " - + "Please make sure it is defined in `$media-queries` map."; - } -} - -// Responsive container - -@mixin container { - padding-right: $gutter-spacing-sm; - padding-left: $gutter-spacing-sm; - - @include mq(md) { - padding-right: $gutter-spacing; - padding-left: $gutter-spacing; - } -} diff --git a/packages/playground/_sass/support/mixins/_typography.scss b/packages/playground/_sass/support/mixins/_typography.scss deleted file mode 100644 index e6d85beaa710..000000000000 --- a/packages/playground/_sass/support/mixins/_typography.scss +++ /dev/null @@ -1,81 +0,0 @@ -// Font size - -@mixin fs-1 { - font-size: 9px !important; - - @include mq(sm) { - font-size: 10px !important; - } -} - -@mixin fs-2 { - font-size: 11px !important; - - @include mq(sm) { - font-size: 12px !important; - } -} - -@mixin fs-3 { - font-size: 12px !important; - - @include mq(sm) { - font-size: 14px !important; - } -} - -@mixin fs-4 { - font-size: 14px !important; - - @include mq(sm) { - font-size: 16px !important; - } -} - -@mixin fs-5 { - font-size: 16px !important; - - @include mq(sm) { - font-size: 18px !important; - } -} - -@mixin fs-6 { - font-size: 18px !important; - - @include mq(sm) { - font-size: 24px !important; - } -} - -@mixin fs-7 { - font-size: 24px !important; - - @include mq(sm) { - font-size: 32px !important; - } -} - -@mixin fs-8 { - font-size: 32px !important; - - @include mq(sm) { - font-size: 36px !important; - } -} - -@mixin fs-9 { - font-size: 36px !important; - - @include mq(sm) { - font-size: 42px !important; - } -} - -@mixin fs-10 { - font-size: 42px !important; - - @include mq(sm) { - font-size: 48px !important; - } -} diff --git a/packages/playground/_sass/support/mixins/mixins.scss b/packages/playground/_sass/support/mixins/mixins.scss deleted file mode 100644 index 0506fbf5ff41..000000000000 --- a/packages/playground/_sass/support/mixins/mixins.scss +++ /dev/null @@ -1,3 +0,0 @@ -@import "./layout"; -@import "./buttons"; -@import "./typography"; diff --git a/packages/playground/_sass/support/support.scss b/packages/playground/_sass/support/support.scss deleted file mode 100644 index 8131a3201a04..000000000000 --- a/packages/playground/_sass/support/support.scss +++ /dev/null @@ -1,3 +0,0 @@ -@import "./variables"; -@import "./functions"; -@import "./mixins/mixins"; diff --git a/packages/playground/_sass/tables.scss b/packages/playground/_sass/tables.scss deleted file mode 100644 index 39bc0dc38e9d..000000000000 --- a/packages/playground/_sass/tables.scss +++ /dev/null @@ -1,78 +0,0 @@ -// -// Tables -// -// stylelint-disable max-nesting-depth, selector-no-type, selector-max-type - -table { - display: block; - width: 100%; - max-width: 100%; - margin-bottom: $sp-5; - overflow-x: auto; - border-collapse: separate; - box-shadow: 0 1px 3px rgba(0, 0, 0, 0.07), 0 4px 14px rgba(0, 0, 0, 0.05); - - @include mq(sm) { - display: table; - } -} - -th, -td { - @include fs-3; - min-width: 120px; - padding-top: $sp-2; - padding-right: $sp-3; - padding-bottom: $sp-2; - padding-left: $sp-3; - background-color: lighten($body-background-color, 2%); - border-bottom: $border rgba($border-color, 0.5); - border-left: $border $border-color; - - &:first-of-type { - border-left: 0; - } -} - -thead, -tbody:first-child { - tr { - &:first-of-type { - th, - td { - &:first-of-type { - border-top-left-radius: $border-radius; - } - - &:last-of-type { - border-top-right-radius: $border-radius; - } - } - } - } -} - -tbody { - tr { - &:last-of-type { - th, - td { - border-bottom: 0; - - &:first-of-type { - border-bottom-left-radius: $border-radius; - } - - &:last-of-type { - border-bottom-right-radius: $border-radius; - } - } - } - } -} - -thead { - th { - border-bottom: 1px solid $border-color; - } -} diff --git a/packages/playground/_sass/vendor/normalize.scss/normalize.scss b/packages/playground/_sass/vendor/normalize.scss/normalize.scss deleted file mode 100644 index ce38a4fab48e..000000000000 --- a/packages/playground/_sass/vendor/normalize.scss/normalize.scss +++ /dev/null @@ -1,427 +0,0 @@ -/*! normalize.scss v0.1.0 | MIT License | based on git.io/normalize */ - -/** - * 1. Set default font family to sans-serif. - * 2. Prevent iOS text size adjust after orientation change, without disabling - * user zoom. - */ - -html { - font-family: sans-serif; /* 1 */ - -ms-text-size-adjust: 100%; /* 2 */ - -webkit-text-size-adjust: 100%; /* 2 */ -} - -/** - * Remove default margin. - */ - -body { - margin: 0; -} - -/* HTML5 display definitions - ========================================================================== */ - -/** - * Correct `block` display not defined for any HTML5 element in IE 8/9. - * Correct `block` display not defined for `details` or `summary` in IE 10/11 - * and Firefox. - * Correct `block` display not defined for `main` in IE 11. - */ - -article, -aside, -details, -figcaption, -figure, -footer, -header, -hgroup, -main, -menu, -nav, -section, -summary { - display: block; -} - -/** - * 1. Correct `inline-block` display not defined in IE 8/9. - * 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera. - */ - -audio, -canvas, -progress, -video { - display: inline-block; /* 1 */ - vertical-align: baseline; /* 2 */ -} - -/** - * Prevent modern browsers from displaying `audio` without controls. - * Remove excess height in iOS 5 devices. - */ - -audio:not([controls]) { - display: none; - height: 0; -} - -/** - * Address `[hidden]` styling not present in IE 8/9/10. - * Hide the `template` element in IE 8/9/11, Safari, and Firefox < 22. - */ - -[hidden], -template { - display: none; -} - -/* Links - ========================================================================== */ - -/** - * Remove the gray background color from active links in IE 10. - */ - -a { - background-color: transparent; -} - -/** - * Improve readability when focused and also mouse hovered in all browsers. - */ - -a:active, -a:hover { - outline: 0; -} - -/* Text-level semantics - ========================================================================== */ - -/** - * Address styling not present in IE 8/9/10/11, Safari, and Chrome. - */ - -abbr[title] { - border-bottom: 1px dotted; -} - -/** - * Address style set to `bolder` in Firefox 4+, Safari, and Chrome. - */ - -b, -strong { - font-weight: bold; -} - -/** - * Address styling not present in Safari and Chrome. - */ - -dfn { - font-style: italic; -} - -/** - * Address variable `h1` font-size and margin within `section` and `article` - * contexts in Firefox 4+, Safari, and Chrome. - */ - -h1 { - font-size: 2em; - margin: 0.67em 0; -} - -/** - * Address styling not present in IE 8/9. - */ - -mark { - background: #ff0; - color: #000; -} - -/** - * Address inconsistent and variable font size in all browsers. - */ - -small { - font-size: 80%; -} - -/** - * Prevent `sub` and `sup` affecting `line-height` in all browsers. - */ - -sub, -sup { - font-size: 75%; - line-height: 0; - position: relative; - vertical-align: baseline; -} - -sup { - top: -0.5em; -} - -sub { - bottom: -0.25em; -} - -/* Embedded content - ========================================================================== */ - -/** - * Remove border when inside `a` element in IE 8/9/10. - */ - -img { - border: 0; -} - -/** - * Correct overflow not hidden in IE 9/10/11. - */ - -svg:not(:root) { - overflow: hidden; -} - -/* Grouping content - ========================================================================== */ - -/** - * Address margin not present in IE 8/9 and Safari. - */ - -figure { - margin: 1em 40px; -} - -/** - * Address differences between Firefox and other browsers. - */ - -hr { - -moz-box-sizing: content-box; - box-sizing: content-box; - height: 0; -} - -/** - * Contain overflow in all browsers. - */ - -pre { - overflow: auto; -} - -/** - * Address odd `em`-unit font size rendering in all browsers. - */ - -code, -kbd, -pre, -samp { - font-family: monospace, monospace; - font-size: 1em; -} - -/* Forms - ========================================================================== */ - -/** - * Known limitation: by default, Chrome and Safari on OS X allow very limited - * styling of `select`, unless a `border` property is set. - */ - -/** - * 1. Correct color not being inherited. - * Known issue: affects color of disabled elements. - * 2. Correct font properties not being inherited. - * 3. Address margins set differently in Firefox 4+, Safari, and Chrome. - */ - -button, -input, -optgroup, -select, -textarea { - color: inherit; /* 1 */ - font: inherit; /* 2 */ - margin: 0; /* 3 */ -} - -/** - * Address `overflow` set to `hidden` in IE 8/9/10/11. - */ - -button { - overflow: visible; -} - -/** - * Address inconsistent `text-transform` inheritance for `button` and `select`. - * All other form control elements do not inherit `text-transform` values. - * Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera. - * Correct `select` style inheritance in Firefox. - */ - -button, -select { - text-transform: none; -} - -/** - * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio` - * and `video` controls. - * 2. Correct inability to style clickable `input` types in iOS. - * 3. Improve usability and consistency of cursor style between image-type - * `input` and others. - */ - -button, -html input[type="button"], /* 1 */ -input[type="reset"], -input[type="submit"] { - -webkit-appearance: button; /* 2 */ - cursor: pointer; /* 3 */ -} - -/** - * Re-set default cursor for disabled elements. - */ - -button[disabled], -html input[disabled] { - cursor: default; -} - -/** - * Remove inner padding and border in Firefox 4+. - */ - -button::-moz-focus-inner, -input::-moz-focus-inner { - border: 0; - padding: 0; -} - -/** - * Address Firefox 4+ setting `line-height` on `input` using `!important` in - * the UA stylesheet. - */ - -input { - line-height: normal; -} - -/** - * It's recommended that you don't attempt to style these elements. - * Firefox's implementation doesn't respect box-sizing, padding, or width. - * - * 1. Address box sizing set to `content-box` in IE 8/9/10. - * 2. Remove excess padding in IE 8/9/10. - */ - -input[type="checkbox"], -input[type="radio"] { - box-sizing: border-box; /* 1 */ - padding: 0; /* 2 */ -} - -/** - * Fix the cursor style for Chrome's increment/decrement buttons. For certain - * `font-size` values of the `input`, it causes the cursor style of the - * decrement button to change from `default` to `text`. - */ - -input[type="number"]::-webkit-inner-spin-button, -input[type="number"]::-webkit-outer-spin-button { - height: auto; -} - -/** - * 1. Address `appearance` set to `searchfield` in Safari and Chrome. - * 2. Address `box-sizing` set to `border-box` in Safari and Chrome - * (include `-moz` to future-proof). - */ - -input[type="search"] { - -webkit-appearance: textfield; /* 1 */ - -moz-box-sizing: content-box; - -webkit-box-sizing: content-box; /* 2 */ - box-sizing: content-box; -} - -/** - * Remove inner padding and search cancel button in Safari and Chrome on OS X. - * Safari (but not Chrome) clips the cancel button when the search input has - * padding (and `textfield` appearance). - */ - -input[type="search"]::-webkit-search-cancel-button, -input[type="search"]::-webkit-search-decoration { - -webkit-appearance: none; -} - -/** - * Define consistent border, margin, and padding. - */ - -fieldset { - border: 1px solid #c0c0c0; - margin: 0 2px; - padding: 0.35em 0.625em 0.75em; -} - -/** - * 1. Correct `color` not being inherited in IE 8/9/10/11. - * 2. Remove padding so people aren't caught out if they zero out fieldsets. - */ - -legend { - border: 0; /* 1 */ - padding: 0; /* 2 */ -} - -/** - * Remove default vertical scrollbar in IE 8/9/10/11. - */ - -textarea { - overflow: auto; -} - -/** - * Don't inherit the `font-weight` (applied by a rule above). - * NOTE: the default cannot safely be changed in Chrome and Safari on OS X. - */ - -optgroup { - font-weight: bold; -} - -/* Tables - ========================================================================== */ - -/** - * Remove most spacing between table cells. - */ - -table { - border-collapse: collapse; - border-spacing: 0; -} - -td, -th { - padding: 0; -} diff --git a/packages/playground/_stories/main/FileUploader/FileUploader.stories.ts b/packages/playground/_stories/main/FileUploader/FileUploader.stories.ts index c4c3105ffcff..951ad2d54433 100644 --- a/packages/playground/_stories/main/FileUploader/FileUploader.stories.ts +++ b/packages/playground/_stories/main/FileUploader/FileUploader.stories.ts @@ -41,8 +41,12 @@ const Template: UI5StoryArgs = (args) => html`Upload Single File`, + default: `Upload Single File`, }; +Basic.decorators = [ + (story) => html` + ${story()}`, +]; export const Custom = Template.bind({}); Custom.storyName = "With Custom Design "; @@ -56,11 +60,12 @@ Advanced.storyName = "Image Uploader"; Advanced.args = { id: "fileuploader", accept: "image/*", - default: `Upload Images`, + default: `Upload Images`, multiple: true, }; Advanced.decorators = [ - (story) => html`${story()} + (story) => html` + ${story()}
`;} +]; + export const Disabled = Template.bind({}); Disabled.storyName = "Disabled SplitButton"; Disabled.args = { diff --git a/packages/playground/assets/data/products.json b/packages/playground/assets/data/products.json index 04534eabb0a8..94bbee28649b 100644 --- a/packages/playground/assets/data/products.json +++ b/packages/playground/assets/data/products.json @@ -10,7 +10,7 @@ "description": "Notebook Basic 15 with 2,80 GHz quad core, 15\" LCD, 4 GB DDR3 RAM, 500 GB Hard Disc, Windows 8 Pro", "name": "Notebook Basic 15", "dateOfSale": "2017-03-26", - "productPicUrl": "../../../assets/images/products/HT-1000.jpg", + "productPicUrl": "../assets/images/products/HT-1000.jpg", "status": "Available", "quantity": 10, "uOm": "PC", @@ -32,7 +32,7 @@ "description": "Notebook Basic 17 with 2,80 GHz quad core, 17\" LCD, 4 GB DDR3 RAM, 500 GB Hard Disc, Windows 8 Pro", "name": "Notebook Basic 17", "dateOfSale": "2017-04-17", - "productPicUrl": "../../../assets/images/products/HT-1001.jpg", + "productPicUrl": "../assets/images/products/HT-1001.jpg", "status": "Available", "quantity": 20, "uOm": "PC", @@ -54,7 +54,7 @@ "description": "Notebook Basic 18 with 2,80 GHz quad core, 18\" LCD, 8 GB DDR3 RAM, 1000 GB Hard Disc, Windows 8 Pro", "name": "Notebook Basic 18", "dateOfSale": "2017-01-07", - "productPicUrl": "../../../assets/images/products/HT-1002.jpg", + "productPicUrl": "../assets/images/products/HT-1002.jpg", "status": "Available", "quantity": 10, "uOm": "PC", @@ -76,7 +76,7 @@ "description": "Notebook Basic 19 with 2,80 GHz quad core, 19\" LCD, 8 GB DDR3 RAM, 1000 GB Hard Disc, Windows 8 Pro", "name": "Notebook Basic 19", "dateOfSale": "2017-04-09", - "productPicUrl": "../../../assets/images/products/HT-1003.jpg", + "productPicUrl": "../assets/images/products/HT-1003.jpg", "status": "Available", "quantity": 15, "uOm": "PC", @@ -98,7 +98,7 @@ "description": "Digital Organizer with State-of-the-Art Storage Encryption", "name": "ITelO Vault", "dateOfSale": "2017-05-17", - "productPicUrl": "../../../assets/images/products/HT-1007.jpg", + "productPicUrl": "../assets/images/products/HT-1007.jpg", "status": "Available", "quantity": 15, "uOm": "PC", @@ -120,7 +120,7 @@ "description": "Notebook Professional 15 with 2,80 GHz quad core, 15\" Multitouch LCD, 8 GB DDR3 RAM, 500 GB SSD - DVD-Writer (DVD-R/+R/-RW/-RAM),Windows 8 Pro", "name": "Notebook Professional 15", "dateOfSale": "2017-02-22", - "productPicUrl": "../../../assets/images/products/HT-1010.jpg", + "productPicUrl": "../assets/images/products/HT-1010.jpg", "status": "Available", "quantity": 16, "uOm": "PC", @@ -142,7 +142,7 @@ "description": "Notebook Professional 17 with 2,80 GHz quad core, 17\" Multitouch LCD, 8 GB DDR3 RAM, 500 GB SSD - DVD-Writer (DVD-R/+R/-RW/-RAM),Windows 8 Pro", "name": "Notebook Professional 17", "dateOfSale": "2017-01-02", - "productPicUrl": "../../../assets/images/products/HT-1011.jpg", + "productPicUrl": "../assets/images/products/HT-1011.jpg", "status": "Available", "quantity": 17, "uOm": "PC", @@ -164,7 +164,7 @@ "description": "Digital Organizer with State-of-the-Art Encryption for Storage and Network Communications", "name": "ITelO Vault Net", "dateOfSale": "2017-05-08", - "productPicUrl": "../../../assets/images/products/HT-1020.jpg", + "productPicUrl": "../assets/images/products/HT-1020.jpg", "status": "Available", "quantity": 14, "uOm": "PC", @@ -186,7 +186,7 @@ "description": "Digital Organizer with State-of-the-Art Encryption for Storage and Secure Stellite Link", "name": "ITelO Vault SAT", "dateOfSale": "2017-06-30", - "productPicUrl": "../../../assets/images/products/HT-1021.jpg", + "productPicUrl": "../assets/images/products/HT-1021.jpg", "status": "Available", "quantity": 50, "uOm": "PC", @@ -208,7 +208,7 @@ "description": "32 GB Digital Assistant with high-resolution color screen", "name": "Comfort Easy", "dateOfSale": "2017-03-02", - "productPicUrl": "../../../assets/images/products/HT-1022.jpg", + "productPicUrl": "../assets/images/products/HT-1022.jpg", "status": "Available", "quantity": 30, "uOm": "PC", @@ -230,7 +230,7 @@ "description": "64 GB Digital Assistant with high-resolution color screen and synthesized voice output", "name": "Comfort Senior", "dateOfSale": "2017-02-25", - "productPicUrl": "../../../assets/images/products/HT-1023.jpg", + "productPicUrl": "../assets/images/products/HT-1023.jpg", "status": "Available", "quantity": 24, "uOm": "PC", @@ -251,7 +251,7 @@ "weightUnit": "KG", "description": "Optimum Hi-Resolution max. 1920 x 1080 @ 85Hz, Dot Pitch: 0.27mm", "name": "Ergo Screen E-I", - "productPicUrl": "../../../assets/images/products/HT-1030.jpg", + "productPicUrl": "../assets/images/products/HT-1030.jpg", "status": "Available", "quantity": 14, "uOm": "PC", @@ -272,7 +272,7 @@ "weightUnit": "KG", "description": "Optimum Hi-Resolution max. 1920 x 1200 @ 85Hz, Dot Pitch: 0.26mm", "name": "Ergo Screen E-II", - "productPicUrl": "../../../assets/images/products/HT-1031.jpg", + "productPicUrl": "../assets/images/products/HT-1031.jpg", "status": "Available", "quantity": 24, "uOm": "PC", @@ -293,7 +293,7 @@ "weightUnit": "KG", "description": "Optimum Hi-Resolution max. 2560 x 1440 @ 85Hz, Dot Pitch: 0.25mm", "name": "Ergo Screen E-III", - "productPicUrl": "../../../assets/images/products/HT-1032.jpg", + "productPicUrl": "../assets/images/products/HT-1032.jpg", "status": "Available", "quantity": 50, "uOm": "PC", @@ -314,7 +314,7 @@ "weightUnit": "KG", "description": "Optimum Hi-Resolution max. 1600 x 1200 @ 85Hz, Dot Pitch: 0.24mm", "name": "Flat Basic", - "productPicUrl": "../../../assets/images/products/HT-1035.jpg", + "productPicUrl": "../assets/images/products/HT-1035.jpg", "status": "Available", "quantity": 23, "uOm": "PC", @@ -335,7 +335,7 @@ "weightUnit": "KG", "description": "Optimum Hi-Resolution max. 2048 x 1080 @ 85Hz, Dot Pitch: 0.26mm", "name": "Flat Future", - "productPicUrl": "../../../assets/images/products/HT-1036.jpg", + "productPicUrl": "../assets/images/products/HT-1036.jpg", "status": "Available", "quantity": 22, "uOm": "PC", @@ -356,7 +356,7 @@ "weightUnit": "KG", "description": "Optimum Hi-Resolution max. 2016 x 1512 @ 85Hz, Dot Pitch: 0.24mm", "name": "Flat XL", - "productPicUrl": "../../../assets/images/products/HT-1037.jpg", + "productPicUrl": "../assets/images/products/HT-1037.jpg", "status": "Available", "quantity": 23, "uOm": "PC", @@ -377,7 +377,7 @@ "weightUnit": "KG", "description": "Print 2400 dpi image quality color documents at speeds of up to 32 ppm (color) or 36 ppm (monochrome), letter/A4. Powerful 500 MHz processor, 512MB of memory", "name": "Laser Professional Eco", - "productPicUrl": "../../../assets/images/products/HT-1040.jpg", + "productPicUrl": "../assets/images/products/HT-1040.jpg", "status": "Available", "quantity": 21, "uOm": "PC", @@ -398,7 +398,7 @@ "weightUnit": "KG", "description": "Up to 22 ppm color or 24 ppm monochrome A4/letter, powerful 500 MHz processor and 128MB of memory", "name": "Laser Basic", - "productPicUrl": "../../../assets/images/products/HT-1041.jpg", + "productPicUrl": "../assets/images/products/HT-1041.jpg", "status": "Available", "quantity": 8, "uOm": "PC", @@ -419,7 +419,7 @@ "weightUnit": "KG", "description": "Print up to 25 ppm letter and 24 ppm A4 color or monochrome, with Available first-page-out-time of less than 13 seconds for monochrome and less than 15 seconds for color", "name": "Laser Allround", - "productPicUrl": "../../../assets/images/products/HT-1042.jpg", + "productPicUrl": "../assets/images/products/HT-1042.jpg", "status": "Available", "quantity": 9, "uOm": "PC", @@ -440,7 +440,7 @@ "weightUnit": "KG", "description": "4800 dpi x 1200 dpi - up to 35 ppm (mono) / up to 34 ppm (color) - capacity: 250 sheets - Hi-Speed USB, Ethernet", "name": "Ultra Jet Super Color", - "productPicUrl": "../../../assets/images/products/HT-1050.jpg", + "productPicUrl": "../assets/images/products/HT-1050.jpg", "status": "Available", "quantity": 17, "uOm": "PC", @@ -461,7 +461,7 @@ "weightUnit": "KG", "description": "1000 dpi x 1000 dpi - up to 35 ppm (mono) / up to 34 ppm (color) - capacity: 250 sheets - Hi-Speed USB - excellent dimensions for the small office", "name": "Ultra Jet Mobile", - "productPicUrl": "../../../assets/images/products/HT-1051.jpg", + "productPicUrl": "../assets/images/products/HT-1051.jpg", "status": "Available", "quantity": 18, "uOm": "PC", @@ -482,7 +482,7 @@ "weightUnit": "KG", "description": "4800 dpi x 1200 dpi - up to 35 ppm (mono) / up to 34 ppm (color) - capacity: 250 sheets - Hi-Speed USB2.0, Ethernet", "name": "Ultra Jet Super Highspeed", - "productPicUrl": "../../../assets/images/products/HT-1052.jpg", + "productPicUrl": "../assets/images/products/HT-1052.jpg", "status": "Available", "quantity": 25, "uOm": "PC", @@ -503,7 +503,7 @@ "weightUnit": "KG", "description": "1000 dpi x 1000 dpi - up to 16 ppm (mono) / up to 15 ppm (color)- capacity 80 sheets - scanner (216 x 297 mm, 1200dpi x 2400dpi)", "name": "Multi Print", - "productPicUrl": "../../../assets/images/products/HT-1055.jpg", + "productPicUrl": "../assets/images/products/HT-1055.jpg", "status": "Available", "quantity": 16, "uOm": "PC", @@ -524,7 +524,7 @@ "weightUnit": "KG", "description": "1200 dpi x 1200 dpi - up to 25 ppm (mono) / up to 24 ppm (color)- capacity 80 sheets - scanner (216 x 297 mm, 2400dpi x 4800dpi, high resolution)", "name": "Multi Color", - "productPicUrl": "../../../assets/images/products/HT-1056.jpg", + "productPicUrl": "../assets/images/products/HT-1056.jpg", "status": "Available", "quantity": 5, "uOm": "PC", @@ -545,7 +545,7 @@ "weightUnit": "KG", "description": "Cordless Optical USB Mice, Laptop, Color: Black, Plug&Play", "name": "Cordless Mouse", - "productPicUrl": "../../../assets/images/products/HT-1060.jpg", + "productPicUrl": "../assets/images/products/HT-1060.jpg", "status": "Available", "quantity": 25, "uOm": "PC", @@ -566,7 +566,7 @@ "weightUnit": "KG", "description": "Optical USB, PS/2 Mouse, Color: Blue, 3-button-functionality (incl. Scroll wheel)", "name": "Speed Mouse", - "productPicUrl": "../../../assets/images/products/HT-1061.jpg", + "productPicUrl": "../assets/images/products/HT-1061.jpg", "status": "Available", "quantity": 12, "uOm": "PC", @@ -587,7 +587,7 @@ "weightUnit": "KG", "description": "Optical USB Mouse, Color: Red, 5-button-functionality(incl. Scroll wheel), Plug&Play", "name": "Track Mouse", - "productPicUrl": "../../../assets/images/products/HT-1062.jpg", + "productPicUrl": "../assets/images/products/HT-1062.jpg", "status": "Available", "quantity": 12, "uOm": "PC", @@ -608,7 +608,7 @@ "weightUnit": "KG", "description": "Ergonomic USB Keyboard for Desktop, Plug&Play", "name": "Ergonomic Keyboard", - "productPicUrl": "../../../assets/images/products/HT-1063.jpg", + "productPicUrl": "../assets/images/products/HT-1063.jpg", "status": "Available", "quantity": 50, "uOm": "PC", @@ -629,7 +629,7 @@ "weightUnit": "KG", "description": "Corded Keyboard with special keys for Internet Usability, USB", "name": "Internet Keyboard", - "productPicUrl": "../../../assets/images/products/HT-1064.jpg", + "productPicUrl": "../assets/images/products/HT-1064.jpg", "status": "Available", "quantity": 35, "uOm": "PC", @@ -650,7 +650,7 @@ "weightUnit": "KG", "description": "Corded Ergonomic Keyboard with special keys for Media Usability, USB", "name": "Media Keyboard", - "productPicUrl": "../../../assets/images/products/HT-1065.jpg", + "productPicUrl": "../assets/images/products/HT-1065.jpg", "status": "Available", "quantity": 26, "uOm": "PC", @@ -671,7 +671,7 @@ "weightUnit": "G", "description": "Nice mouse pad with ITelO Logo", "name": "Mousepad", - "productPicUrl": "../../../assets/images/products/HT-1066.jpg", + "productPicUrl": "../assets/images/products/HT-1066.jpg", "status": "Available", "quantity": 12, "uOm": "PC", @@ -692,7 +692,7 @@ "weightUnit": "G", "description": "Ergonomic mouse pad with ITelO Logo", "name": "Ergo Mousepad", - "productPicUrl": "../../../assets/images/products/HT-1067.jpg", + "productPicUrl": "../assets/images/products/HT-1067.jpg", "status": "Available", "quantity": 16, "uOm": "PC", @@ -713,7 +713,7 @@ "weightUnit": "G", "description": "ITelO Mousepad Special Edition", "name": "Designer Mousepad", - "productPicUrl": "../../../assets/images/products/HT-1068.jpg", + "productPicUrl": "../assets/images/products/HT-1068.jpg", "status": "Available", "quantity": 26, "uOm": "PC", @@ -734,7 +734,7 @@ "weightUnit": "G", "description": "Universal card reader", "name": "Universal card reader", - "productPicUrl": "../../../assets/images/products/HT-1069.jpg", + "productPicUrl": "../assets/images/products/HT-1069.jpg", "status": "Available", "quantity": 22, "uOm": "PC", @@ -755,7 +755,7 @@ "weightUnit": "KG", "description": "Proctra X: PCI-E GDDR5 3072MB", "name": "Proctra X", - "productPicUrl": "../../../assets/images/products/HT-1070.jpg", + "productPicUrl": "../assets/images/products/HT-1070.jpg", "status": "Available", "quantity": 15, "uOm": "PC", @@ -776,7 +776,7 @@ "weightUnit": "KG", "description": "Gladiator XLN: PCI-E GDDR5 3072MB DVI Out, TV Out low-noise", "name": "Gladiator MX", - "productPicUrl": "../../../assets/images/products/HT-1071.jpg", + "productPicUrl": "../assets/images/products/HT-1071.jpg", "status": "Available", "quantity": 16, "uOm": "PC", @@ -797,7 +797,7 @@ "weightUnit": "KG", "description": "Hurricane GX: PCI-E 691 GFLOPS game-optimized", "name": "Hurricane GX", - "productPicUrl": "../../../assets/images/products/HT-1072.jpg", + "productPicUrl": "../assets/images/products/HT-1072.jpg", "status": "Available", "quantity": 13, "uOm": "PC", @@ -818,7 +818,7 @@ "weightUnit": "KG", "description": "Hurricane GX/LN: PCI-E 691 GFLOPS game-optimized, low-noise.", "name": "Hurricane GX/LN", - "productPicUrl": "../../../assets/images/products/HT-1073.jpg", + "productPicUrl": "../assets/images/products/HT-1073.jpg", "status": "Available", "quantity": 5, "uOm": "PC", @@ -839,7 +839,7 @@ "weightUnit": "KG", "description": "Flatbed scanner - 9.600 × 9.600 dpi - 216 x 297 mm - Hi-Speed USB - Bluetooth", "name": "Photo Scan", - "productPicUrl": "../../../assets/images/products/HT-1080.jpg", + "productPicUrl": "../assets/images/products/HT-1080.jpg", "status": "Available", "quantity": 8, "uOm": "PC", @@ -860,7 +860,7 @@ "weightUnit": "KG", "description": "Flatbed scanner - 9.600 × 9.600 dpi - 216 x 297 mm - SCSI for backward compatibility", "name": "Power Scan", - "productPicUrl": "../../../assets/images/products/HT-1081.jpg", + "productPicUrl": "../assets/images/products/HT-1081.jpg", "status": "Available", "quantity": 11, "uOm": "PC", @@ -881,7 +881,7 @@ "weightUnit": "KG", "description": "Flatbed scanner - Letter - 2400 dpi x 2400 dpi - 216 x 297 mm - add-on module", "name": "Jet Scan Professional", - "productPicUrl": "../../../assets/images/products/HT-1082.jpg", + "productPicUrl": "../assets/images/products/HT-1082.jpg", "status": "Available", "quantity": 13, "uOm": "PC", @@ -902,7 +902,7 @@ "weightUnit": "KG", "description": "Flatbed scanner - A4 - 2400 dpi x 2400 dpi - 216 x 297 mm - add-on module", "name": "Jet Scan Professional", - "productPicUrl": "../../../assets/images/products/HT-1083.jpg", + "productPicUrl": "../assets/images/products/HT-1083.jpg", "status": "Available", "quantity": 10, "uOm": "PC", @@ -923,7 +923,7 @@ "weightUnit": "KG", "description": "Flatbed scanner - A4 - 2400 dpi x 2400 dpi - 216 x 297 mm - add-on module", "name": "Jet Scan Professional", - "productPicUrl": "../../../assets/images/products/HT-1085.jpg", + "productPicUrl": "../assets/images/products/HT-1085.jpg", "status": "Available", "quantity": 10, "uOm": "PC", @@ -944,7 +944,7 @@ "weightUnit": "KG", "description": "PC multimedia speakers - 5 Watt (Total)", "name": "Surround Sound", - "productPicUrl": "../../../assets/images/products/HT-1090.jpg", + "productPicUrl": "../assets/images/products/HT-1090.jpg", "status": "Available", "quantity": 20, "uOm": "PC", @@ -965,7 +965,7 @@ "weightUnit": "KG", "description": "PC multimedia speakers - 10 Watt (Total) - 2-way", "name": "Blaster Extreme", - "productPicUrl": "../../../assets/images/products/HT-1091.jpg", + "productPicUrl": "../assets/images/products/HT-1091.jpg", "status": "Available", "quantity": 15, "uOm": "PC", @@ -986,7 +986,7 @@ "weightUnit": "KG", "description": "PC multimedia speakers - optimized for Blutooth/A2DP", "name": "Sound Booster", - "productPicUrl": "../../../assets/images/products/HT-1092.jpg", + "productPicUrl": "../assets/images/products/HT-1092.jpg", "status": "Available", "quantity": 50, "uOm": "PC", @@ -1007,7 +1007,7 @@ "weightUnit": "KG", "description": "Complete package, 1 User, Office Applications (word processing, spreadsheet, presentations)", "name": "Smart Office", - "productPicUrl": "../../../assets/images/products/HT-1100.jpg", + "productPicUrl": "../assets/images/products/HT-1100.jpg", "status": "Available", "quantity": 25, "uOm": "PC", @@ -1028,7 +1028,7 @@ "weightUnit": "KG", "description": "Complete package, 1 User, Image editing, processing", "name": "Smart Design", - "productPicUrl": "../../../assets/images/products/HT-1101.jpg", + "productPicUrl": "../assets/images/products/HT-1101.jpg", "status": "Available", "quantity": 26, "uOm": "PC", @@ -1049,7 +1049,7 @@ "weightUnit": "KG", "description": "Complete package, 1 User, Network Software Utilities, Useful Applications and Documentation", "name": "Smart Network", - "productPicUrl": "../../../assets/images/products/HT-1102.jpg", + "productPicUrl": "../assets/images/products/HT-1102.jpg", "status": "Available", "quantity": 28, "uOm": "PC", @@ -1070,7 +1070,7 @@ "weightUnit": "KG", "description": "Complete package, 1 User, different Multimedia applications, playing music, watching DVDs, only with this Smart package", "name": "Smart Multimedia", - "productPicUrl": "../../../assets/images/products/HT-1103.jpg", + "productPicUrl": "../assets/images/products/HT-1103.jpg", "status": "Available", "quantity": 9, "uOm": "PC", @@ -1091,7 +1091,7 @@ "weightUnit": "KG", "description": "Complete package, 1 User, various games for amusement, logic, action, jump&run", "name": "Smart Games", - "productPicUrl": "../../../assets/images/products/HT-1104.jpg", + "productPicUrl": "../assets/images/products/HT-1104.jpg", "status": "Available", "quantity": 13, "uOm": "PC", @@ -1112,7 +1112,7 @@ "weightUnit": "KG", "description": "Complete package, 1 User, highly recommended for internet users as anti-virus protection", "name": "Smart Internet Antivirus", - "productPicUrl": "../../../assets/images/products/HT-1105.jpg", + "productPicUrl": "../assets/images/products/HT-1105.jpg", "status": "Available", "quantity": 17, "uOm": "PC", @@ -1133,7 +1133,7 @@ "weightUnit": "KG", "description": "Complete package, 1 User, recommended for internet users, protect your PC against cyber-crime", "name": "Smart Firewall", - "productPicUrl": "../../../assets/images/products/HT-1106.jpg", + "productPicUrl": "../assets/images/products/HT-1106.jpg", "status": "Available", "quantity": 19, "uOm": "PC", @@ -1154,7 +1154,7 @@ "weightUnit": "KG", "description": "Complete package, 1 User, bring your money in your mind, see what you have and what you want", "name": "Smart Money", - "productPicUrl": "../../../assets/images/products/HT-1107.jpg", + "productPicUrl": "../assets/images/products/HT-1107.jpg", "status": "Available", "quantity": 18, "uOm": "PC", @@ -1175,7 +1175,7 @@ "weightUnit": "KG", "description": "Robust 3m anti-burglary protection for your laptop computer", "name": "PC Lock", - "productPicUrl": "../../../assets/images/products/HT-1110.jpg", + "productPicUrl": "../assets/images/products/HT-1110.jpg", "status": "Available", "quantity": 14, "uOm": "PC", @@ -1196,7 +1196,7 @@ "weightUnit": "KG", "description": "Robust 1m anti-burglary protection for your desktop computer", "name": "Notebook Lock", - "productPicUrl": "../../../assets/images/products/HT-1111.jpg", + "productPicUrl": "../assets/images/products/HT-1111.jpg", "status": "Available", "quantity": 20, "uOm": "PC", @@ -1217,7 +1217,7 @@ "weightUnit": "KG", "description": "Color webcam, color, High-Speed USB", "name": "Web cam reality", - "productPicUrl": "../../../assets/images/products/HT-1112.jpg", + "productPicUrl": "../assets/images/products/HT-1112.jpg", "status": "Available", "quantity": 27, "uOm": "PC", @@ -1238,7 +1238,7 @@ "weightUnit": "KG", "description": "10 separately packed screen wipes", "name": "Screen clean", - "productPicUrl": "../../../assets/images/products/HT-1113.jpg", + "productPicUrl": "../assets/images/products/HT-1113.jpg", "status": "Available", "quantity": 17, "uOm": "PC", @@ -1259,7 +1259,7 @@ "weightUnit": "KG", "description": "Notebook bag, plenty of room for stationery and writing materials", "name": "Fabric bag professional", - "productPicUrl": "../../../assets/images/products/HT-1114.jpg", + "productPicUrl": "../assets/images/products/HT-1114.jpg", "status": "Available", "quantity": 14, "uOm": "PC", @@ -1280,7 +1280,7 @@ "weightUnit": "KG", "description": "Wireless DSL Router (available in blue, black and silver)", "name": "Wireless DSL Router", - "productPicUrl": "../../../assets/images/products/HT-1115.jpg", + "productPicUrl": "../assets/images/products/HT-1115.jpg", "status": "Available", "quantity": 16, "uOm": "PC", @@ -1301,7 +1301,7 @@ "weightUnit": "KG", "description": "Wireless DSL Router / Repeater (available in blue, black and silver)", "name": "Wireless DSL Router / Repeater", - "productPicUrl": "../../../assets/images/products/HT-1116.jpg", + "productPicUrl": "../assets/images/products/HT-1116.jpg", "status": "Available", "quantity": 12, "uOm": "PC", @@ -1322,7 +1322,7 @@ "weightUnit": "KG", "description": "Wireless DSL Router / Repeater and Print Server (available in blue, black and silver)", "name": "Wireless DSL Router / Repeater and Print Server", - "productPicUrl": "../../../assets/images/products/HT-1117.jpg", + "productPicUrl": "../assets/images/products/HT-1117.jpg", "status": "Available", "quantity": 12, "uOm": "PC", @@ -1343,7 +1343,7 @@ "weightUnit": "KG", "description": "USB 2.0 High-Speed 64 GB", "name": "USB Stick", - "productPicUrl": "../../../assets/images/products/HT-1118.jpg", + "productPicUrl": "../assets/images/products/HT-1118.jpg", "status": "Available", "quantity": 14, "uOm": "PC", @@ -1364,7 +1364,7 @@ "weightUnit": "KG", "description": "Cordless Bluetooth Keyboard with English keys", "name": "Cordless Bluetooth Keyboard, english international", - "productPicUrl": "../../../assets/images/products/HT-1120.jpg", + "productPicUrl": "../assets/images/products/HT-1120.jpg", "status": "Available", "quantity": 13, "uOm": "PC", @@ -1385,7 +1385,7 @@ "weightUnit": "KG", "description": "Optimum Hi-Resolution max. 2048 × 1536 @ 85Hz, Dot Pitch: 0.24mm", "name": "Flat XXL", - "productPicUrl": "../../../assets/images/products/HT-1137.jpg", + "productPicUrl": "../assets/images/products/HT-1137.jpg", "status": "Available", "quantity": 10, "uOm": "PC", @@ -1406,7 +1406,7 @@ "weightUnit": "KG", "description": "Portable pocket Mouse with retracting cord", "name": "Pocket Mouse", - "productPicUrl": "../../../assets/images/products/HT-1138.jpg", + "productPicUrl": "../assets/images/products/HT-1138.jpg", "status": "Available", "quantity": 20, "uOm": "PC", @@ -1427,7 +1427,7 @@ "weightUnit": "KG", "description": "PC Power Station with 3,4 Ghz quad-core, 32 GB DDR3 SDRAM, feels like Available PC, Windows 8 Pro", "name": "PC Power Station", - "productPicUrl": "../../../assets/images/products/HT-1210.jpg", + "productPicUrl": "../assets/images/products/HT-1210.jpg", "status": "Available", "quantity": 22, "uOm": "PC", @@ -1448,7 +1448,7 @@ "weightUnit": "G", "description": "5.1 Headset, 40 Hz-20 kHz, Wireless", "name": "Lovely Sound 5.1 Wireless", - "productPicUrl": "../../../assets/images/products/HT-1095.jpg", + "productPicUrl": "../assets/images/products/HT-1095.jpg", "status": "Available", "quantity": 12, "uOm": "PC", @@ -1469,7 +1469,7 @@ "weightUnit": "G", "description": "5.1 Headset, 40 Hz-20 kHz, 3m cable", "name": "Lovely Sound 5.1", - "productPicUrl": "../../../assets/images/products/HT-1096.jpg", + "productPicUrl": "../assets/images/products/HT-1096.jpg", "status": "Available", "quantity": 18, "uOm": "PC", @@ -1490,7 +1490,7 @@ "weightUnit": "G", "description": "5.1 Headset, 40 Hz-20 kHz, 1m cable", "name": "Lovely Sound Stereo", - "productPicUrl": "../../../assets/images/products/HT-1097.jpg", + "productPicUrl": "../assets/images/products/HT-1097.jpg", "status": "Available", "quantity": 21, "uOm": "PC", @@ -1511,7 +1511,7 @@ "weightUnit": "G", "description": "Universal Travel Adapter", "name": "Travel Adapter", - "productPicUrl": "../../../assets/images/products/HT-1119.jpg", + "productPicUrl": "../assets/images/products/HT-1119.jpg", "status": "Available", "quantity": 10, "uOm": "PC", @@ -1532,7 +1532,7 @@ "weightUnit": "KG", "description": "Flexible Laptop with 2,5 GHz Quad Core, 15\" HD TN, 16 GB DDR SDRAM, 256 GB SSD, Windows 10 Pro", "name": "Astro Laptop 1516", - "productPicUrl": "../../../assets/images/products/HT-1251.jpg", + "productPicUrl": "../assets/images/products/HT-1251.jpg", "status": "Available", "quantity": 23, "uOm": "PC", @@ -1553,7 +1553,7 @@ "weightUnit": "KG", "description": "6 inch 1280x800 HD display (216 ppi), Quad-core processor, 8 GB internal storage (actual formatted capacity will be less), 3050 mAh battery (Up to 8 hours of active use), grey or black", "name": "Astro Phone 6", - "productPicUrl": "../../../assets/images/products/HT-1252.jpg", + "productPicUrl": "../assets/images/products/HT-1252.jpg", "status": "Available", "quantity": 28, "uOm": "PC", @@ -1574,7 +1574,7 @@ "weightUnit": "KG", "description": "Flexible Laptop with 2,5 GHz Dual Core, 14\" HD+ TN, 8 GB DDR SDRAM, 324 GB SSD, Windows 10 Pro", "name": "Benda Laptop 1408", - "productPicUrl": "../../../assets/images/products/HT-1253.jpg", + "productPicUrl": "../assets/images/products/HT-1253.jpg", "status": "Available", "quantity": 27, "uOm": "PC", @@ -1595,7 +1595,7 @@ "weightUnit": "KG", "description": "Optimum Hi-Resolution Widescreen max. 1920 x 1080 @ 85Hz, Dot Pitch: 0.27mm, HDMI, Discontinued-Sub", "name": "Bending Screen 21HD", - "productPicUrl": "../../../assets/images/products/HT-1254.jpg", + "productPicUrl": "../assets/images/products/HT-1254.jpg", "status": "Available", "quantity": 23, "uOm": "PC", @@ -1616,7 +1616,7 @@ "weightUnit": "KG", "description": "Optimum Hi-Resolution Widescreen max. 2048 x 1080 @ 85Hz, Dot Pitch: 0.27mm, HDMI, Discontinued-Sub", "name": "Broad Screen 22HD", - "productPicUrl": "../../../assets/images/products/HT-1255.jpg", + "productPicUrl": "../assets/images/products/HT-1255.jpg", "status": "Available", "quantity": 5, "uOm": "PC", @@ -1637,7 +1637,7 @@ "weightUnit": "KG", "description": "7 inch 1280x800 HD display (216 ppi), Quad-core processor, 16 GB internal storage (actual formatted capacity will be less), 4325 mAh battery (Up to 8 hours of active use), white or black", "name": "Cerdik Phone 7", - "productPicUrl": "../../../assets/images/products/HT-1256.jpg", + "productPicUrl": "../assets/images/products/HT-1256.jpg", "status": "Available", "quantity": 19, "uOm": "PC", @@ -1658,7 +1658,7 @@ "weightUnit": "KG", "description": "10.5-inch Multitouch HD Screen (1280 x 800), 16GB Internal Memory, Wireless N Wi-Fi; Bluetooth, GPS Enabled, 1GHz Dual-Core Processor", "name": "Cepat Tablet 10.5", - "productPicUrl": "../../../assets/images/products/HT-1257.jpg", + "productPicUrl": "../assets/images/products/HT-1257.jpg", "status": "Available", "quantity": 17, "uOm": "PC", @@ -1679,7 +1679,7 @@ "weightUnit": "KG", "description": "8-inch Multitouch HD Screen (2000 x 1500) 32GB Internal Memory, Wireless N Wi-Fi, Bluetooth, GPS Enabled, 1.5 GHz Quad-Core Processor", "name": "Cepat Tablet 8", - "productPicUrl": "../../../assets/images/products/HT-1258.jpg", + "productPicUrl": "../assets/images/products/HT-1258.jpg", "status": "Available", "quantity": 24, "uOm": "PC", diff --git a/packages/playground/assets/images/sb-logo.png b/packages/playground/assets/images/sb-logo.png index e3a6709f6506..4573a062f93c 100644 Binary files a/packages/playground/assets/images/sb-logo.png and b/packages/playground/assets/images/sb-logo.png differ diff --git a/packages/playground/build-scripts-storybook/DirectoryUtils.ts b/packages/playground/build-scripts-storybook/DirectoryUtils.ts index 44e025359c33..04e08d9e170e 100644 --- a/packages/playground/build-scripts-storybook/DirectoryUtils.ts +++ b/packages/playground/build-scripts-storybook/DirectoryUtils.ts @@ -5,7 +5,7 @@ import glob from "glob"; export interface IDirectoryUtils { assureDirectoryExistence(filePath: string): Promise; cleanDirectory(dir: string): Promise; - readFiles(src: string, ignore: string[]): Promise; + readFiles(src: string, ignore?: string[]): Promise; writeFile(filePath: string, content: string): Promise; globToRelativePath(globStr: string, filePath: string): string; readContent(filePath: string): Promise; diff --git a/packages/playground/build-scripts-storybook/pages-prepare.ts b/packages/playground/build-scripts-storybook/pages-prepare.ts new file mode 100644 index 000000000000..e2b81dd4a5d0 --- /dev/null +++ b/packages/playground/build-scripts-storybook/pages-prepare.ts @@ -0,0 +1,88 @@ +import { promises as fs } from "fs"; +import path from "path"; +import { DirectoryUtils, IDirectoryUtils } from "./DirectoryUtils"; + +interface IContentParser { + parseContent(content: string): string; +} + +class AssetsParser implements IContentParser { + public parseContent(content: string): string { + const regex = /([a-zA-Z0-9_\-]+)="([^"]*assets\/[^"]*)"/g; + const replacement = '$1="../../../..$2"'; + return content.replace(regex, replacement); + } +} + +interface IPagesPrepare { + preparePages(pagesTarget: string, pagesSource: string): Promise; +} + +/** + * This class is responsible for reading and modifying the html files of the components located in the pages directory. + * It uses parses to modify the content of the html files. + */ +class PagesPrepare implements IPagesPrepare { + private readonly directoryUtils: IDirectoryUtils; + private readonly parsers: IContentParser[]; + + constructor(parsers: IContentParser[], directoryUtils: IDirectoryUtils) { + this.parsers = parsers; + this.directoryUtils = directoryUtils; + } + + public async preparePages( + pagesTarget: string, + pagesSource: string + ): Promise { + if (!pagesTarget) { + throw new Error("No pages directory provided"); + } + + if (!pagesSource) { + throw new Error("No pages provided"); + } + + await this.directoryUtils.cleanDirectory(pagesTarget); + + const pages = (await fs.readdir(pagesSource)).filter((page) => page.endsWith(".html")); + + for (const page of pages) { + const pagePath = path.join(pagesSource, page); + const content = await this.directoryUtils.readContent(pagePath); + const modifiedContent = this.modifyContent(content); + const pageTargetPath = path.join(pagesTarget, page.replace(".html", ""), "index.html"); + await this.directoryUtils.assureDirectoryExistence(pageTargetPath); + await this.directoryUtils.writeFile(pageTargetPath, modifiedContent); + } + + return Promise.resolve(); + } + + private modifyContent(content: string): string { + for (const parser of this.parsers) { + content = parser.parseContent(content); + } + + return content; + } +} + +const directoryUtils = new DirectoryUtils(); +const parsers = [ + new AssetsParser() +]; +const pagesPrepare = new PagesPrepare(parsers, directoryUtils); + +const packages = [ + "main", + "fiori" +] + +for (const packageName of packages) { + console.log(`Preparing pages for ${packageName}`); + const pagesTarget = `./docs/storybook-pages/${packageName}/pages/`; + const pagesSource = `../${packageName}/dist/test/pages/`; + pagesPrepare.preparePages(pagesTarget, pagesSource) + .then(() => console.log(`Pages for ${packageName} prepared`)); +} \ No newline at end of file diff --git a/packages/playground/build-scripts/api-for-sample/index.js b/packages/playground/build-scripts/api-for-sample/index.js deleted file mode 100644 index a14c030eeb8e..000000000000 --- a/packages/playground/build-scripts/api-for-sample/index.js +++ /dev/null @@ -1,143 +0,0 @@ -const cssVariables = {}; -const template = require('./templates/template').template; -const sinceTemplate = require('./templates/api-component-since').template; -const propertiesTemplate = require('./templates/api-properties-section').template; -const slotsTemplate = require('./templates/api-slots-section').template; -const eventsTemplate = require('./templates/api-events-section').template; -const methodsTemplate = require('./templates/api-methods-section').template; -const cssVariablesTemplate = require('./templates/api-css-variables-section').template; -const Handlebars = require('handlebars/dist/handlebars.min.js'); -const fs = require('fs').promises; - -const compiledHandlebars = Handlebars.compile(template); -const compiledSinceTemplate = Handlebars.compile(sinceTemplate); -const jsdocMarker = ""; -const sinceMarker = ""; - -const enrichSampleWihAPI = async (name, api, rawSampleContent) => { - const entries = api['symbols']; - - const getComponentByName = name => { - return entries.find(element => { - return element.name === name; - }) - }; - - const getCSSVarsByName = name => { - return cssVariables[name] || []; - }; - - Handlebars.registerHelper('toLowerCase', function (str) { - return str ? str.toLowerCase() : ""; - }); - - Handlebars.registerHelper('toKebabCase', function (str) { - const kebab = str.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase(); - return kebab !== str ? kebab : undefined; - }); - - Handlebars.registerHelper('checkEven', function (iIndex) { - return (iIndex % 2 === 0) ? "api-table-roll-even" : "api-table-roll-odd"; - }); - - Handlebars.registerPartial('properties', propertiesTemplate); - Handlebars.registerPartial('slots', slotsTemplate); - Handlebars.registerPartial('events', eventsTemplate); - Handlebars.registerPartial('methods', methodsTemplate); - Handlebars.registerPartial('cssVariables', cssVariablesTemplate); - - await fs.mkdir(`dist/api-samples`, { recursive: true }); - - let entriesAPI = []; - - const appendCSSVarsAPI = entry => { - entry.cssVariables = getCSSVarsByName(entry.name); - return entry; - } - - const componentHasEntityItem = (component, entity, name) => { - return component[entity].some(x => x && x.name === name); - }; - const removeEmpty = arr => arr.filter(x => x); - - const calculateAPI = component => { - if (entriesAPI.indexOf(component.name) !== -1) { - return component; - } - const entities = ["properties", "slots", "events", "methods", "cssVariables"]; - - // Initialize all entities with [] if necessary, and remove undefined things, and only leave public things - entities.forEach(entity => { - component[entity] = removeEmpty(component[entity] || []).filter(x => x.visibility === "public"); - }); - - component = appendCSSVarsAPI(component); - - let parent = getComponentByName(component.extends); - if (parent) { - let parentComponent = calculateAPI(parent); - entities.forEach(entity => { - parentComponent[entity].forEach(x => { - if (!componentHasEntityItem(component, entity, x.name)) { - component[entity].push(x); - } - }); - }); - } - - entriesAPI.push(component.name); - - return component; - }; - - const appendAdditionalEntriesAPI = entry => { - if (entry.appenddocs) { - const additionalEntries = entry.appenddocs.split(" "); - entry.additionalDocs = []; - - additionalEntries.forEach(entryName => { - let additionalEntry = getComponentByName(entryName); - additionalEntry = calculateAPI(additionalEntry); - entry.additionalDocs.push(additionalEntry); - }); - } - - return entry; - } - - const generateSamplePage = async (entry, rawSampleContent) => { - let result = rawSampleContent; - entry.slots.forEach(slotData => { - if (!slotData.type.startsWith("Node") && !slotData.type.startsWith("HTMLElement")) { // interface -> don't show in documentation - slotData.type = "HTMLElement" + (slotData.type.endsWith("[]") ? "[]" : ""); - } - }); - - entry.properties.forEach(propData => { - if (propData.type.includes(".")) { - propData.type = propData.type.split(".").pop(); - } - }); - - const APIReference = compiledHandlebars(entry).replace(/\[\]/g, " [0..n]"); - const EntitySince = compiledSinceTemplate(entry).replace(/\[\]/g, " [0..n]"); - - result = result.replace(jsdocMarker, APIReference); - result = result.replace(sinceMarker, EntitySince); - - return result; - } - - - // (1) calculate the API - let entry = getComponentByName(name); - entry = calculateAPI(entry); - - // (2) append additional API for composition components - List -> ListIems, TabContainer -> Tabs, Table -> TableRow/Column/Cell - entry = appendAdditionalEntriesAPI(entry); - - // (3) generate sample page - return generateSamplePage(entry, rawSampleContent); -}; - -module.exports = enrichSampleWihAPI; \ No newline at end of file diff --git a/packages/playground/build-scripts/api-for-sample/templates/api-component-since.js b/packages/playground/build-scripts/api-for-sample/templates/api-component-since.js deleted file mode 100644 index 3331b701aa4e..000000000000 --- a/packages/playground/build-scripts/api-for-sample/templates/api-component-since.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = { - template: `{{#if this.since}}v{{this.since}}{{/if}}` -}; \ No newline at end of file diff --git a/packages/playground/build-scripts/api-for-sample/templates/api-css-variables-section.js b/packages/playground/build-scripts/api-for-sample/templates/api-css-variables-section.js deleted file mode 100644 index d886fe617bbe..000000000000 --- a/packages/playground/build-scripts/api-for-sample/templates/api-css-variables-section.js +++ /dev/null @@ -1,24 +0,0 @@ -module.exports = { - template: ` - {{#if cssVariables}} -

CSS variables

-

You can use the following CSS varialbes to change the component styling.

- -
-
-
Name
-
Description
-
- - {{#each cssVariables}} -
-
{{this.name}}
-
- {{{this.description}}} -
-
- {{/each}} - -
- {{/if}}` -}; \ No newline at end of file diff --git a/packages/playground/build-scripts/api-for-sample/templates/api-events-section.js b/packages/playground/build-scripts/api-for-sample/templates/api-events-section.js deleted file mode 100644 index 03eba4556162..000000000000 --- a/packages/playground/build-scripts/api-for-sample/templates/api-events-section.js +++ /dev/null @@ -1,35 +0,0 @@ -module.exports = { - template: ` - {{#if events}} -

Events

-

This Web Component fires semantic events upon user interaction. You can bind to these events with the standard DOM APIs, such as addEventListener.

- -
-
-
Name
-
Description
-
- - {{#each events}} -
-
{{this.name}}
-
- {{{this.description}}} - {{#if this.since}} -
since v{{{this.since}}}
- {{/if}} -
-
- - {{#each this.parameters}} - -
-
{{this.name}}
-
type: {{this.type}}
description: {{{this.description}}}
-
- - {{/each}} - {{/each}} -
- {{/if}}` -}; \ No newline at end of file diff --git a/packages/playground/build-scripts/api-for-sample/templates/api-methods-section.js b/packages/playground/build-scripts/api-for-sample/templates/api-methods-section.js deleted file mode 100644 index 3c7e79040c13..000000000000 --- a/packages/playground/build-scripts/api-for-sample/templates/api-methods-section.js +++ /dev/null @@ -1,26 +0,0 @@ -module.exports = { - template: ` - {{#if methods}} -

Methods

-

This Web Component exposes public methods. You can invoke them directly on the Web Component instance.

- -
-
-
Name
-
Description
-
- - {{#each methods}} -
-
{{this.name}}
-
{{{this.description}}}
-
- - {{#each this.parameters}} -
{{this.name}}
-
type: {{this.type}}
description: {{{this.description}}}
- {{/each}} - {{/each}} -
- {{/if}}` -}; \ No newline at end of file diff --git a/packages/playground/build-scripts/api-for-sample/templates/api-properties-section.js b/packages/playground/build-scripts/api-for-sample/templates/api-properties-section.js deleted file mode 100644 index cc25129aabbd..000000000000 --- a/packages/playground/build-scripts/api-for-sample/templates/api-properties-section.js +++ /dev/null @@ -1,42 +0,0 @@ -module.exports = { - template: ` - {{#if properties}} -

Properties/Attributes

-

You can use both properties and attributes with the same effect. The name of each attribute is listed below the name of the property, if different.

- -
-
-
Name
-
Type
-
Default Value
-
Description
-
- - {{#each properties}} -
-
- {{this.name}} - {{#if this.readonly}} - (readonly) - {{/if}} -
- {{#if (toKebabCase this.name)}} - {{#unless this.noattribute}} - {{toKebabCase this.name}} - {{/unless}} - {{/if}} -
-
{{this.type}}
-
{{this.defaultValue}}
-
- {{{this.description}}} - {{#if this.since}} -
since v{{{this.since}}}
- {{/if}} -
-
- {{/each}} - -
- {{/if}}` -}; \ No newline at end of file diff --git a/packages/playground/build-scripts/api-for-sample/templates/api-slots-section.js b/packages/playground/build-scripts/api-for-sample/templates/api-slots-section.js deleted file mode 100644 index 2d71edfceab4..000000000000 --- a/packages/playground/build-scripts/api-for-sample/templates/api-slots-section.js +++ /dev/null @@ -1,28 +0,0 @@ -module.exports = { - template: ` - {{#if slots}} -

Slots

-

- This Element provides slot(s). This means it can display its child nodes.
- Unless targeting the default slot, use the slot attribute to define the destination slot for each child.
- Text, along with HTML Elements with no slot attribute, goes the the default slot. -

- -
-
-
Slot
-
Type
-
Description
-
- - {{#each slots}} -
-
{{this.name}}
-
{{this.type}}
-
{{{this.description}}}
-
- {{/each}} - -
- {{/if}}` -}; diff --git a/packages/playground/build-scripts/api-for-sample/templates/template.js b/packages/playground/build-scripts/api-for-sample/templates/template.js deleted file mode 100644 index 4ef673c5f55f..000000000000 --- a/packages/playground/build-scripts/api-for-sample/templates/template.js +++ /dev/null @@ -1,39 +0,0 @@ -module.exports = { - template: ` -
-
-
- {{{description}}} -
- {{> properties this}} - {{> slots this}} - {{> events this}} - {{> methods this}} - {{> cssVariables this}} -
-
-
-
- {{#each additionalDocs}} -
-

{{this.basename}}

-
- {{{this.description}}} -
- {{> properties this}} - {{> slots this}} - {{> events this}} - {{> methods this}} - {{> cssVariables this}} -
-
-
- {{/each}} - ` -}; diff --git a/packages/playground/build-scripts/documentation-prepare.js b/packages/playground/build-scripts/documentation-prepare.js deleted file mode 100644 index 5e016565c9a2..000000000000 --- a/packages/playground/build-scripts/documentation-prepare.js +++ /dev/null @@ -1,108 +0,0 @@ -const fs = require("fs"); -const path = require("path"); -const rimraf = require("rimraf"); -const capitalizeFirst = str => str.substr(0,1).toUpperCase() + str.substr(1); - -const srcPath = path.resolve(process.argv[2]); // where to find the .mds -const destPath = path.resolve(process.argv[3]); // where to create the output - -const convertToTechnicalName = (name) => { - return name.replace(/^[0-9\-\.]+/, "").replace(/ /g, "-").replace(/\.md$/, "").toLowerCase(); -} - -const files = fs.readdirSync(srcPath).filter(file => !["README.md", "images"].includes(file)); // skip the top-level readme - -files.forEach((file, fileIndex) => { - const srcFilePath = path.join(srcPath, file); // f.e. "../../docs/4. Usage with Frameworks" - const isDir = fs.lstatSync(srcFilePath).isDirectory(); - - // Directory with articles - if (isDir) { - const humanReadableName = capitalizeFirst(file.replace(/^[0-9\-\.]+/, "").replace(/-/g, " ")); - const technicalName = file.replace(/^[0-9\-\.]+/, "").toLowerCase(); // becomes "usage-with-frameworks" - const sectionDir = path.join(destPath, technicalName); - rimraf.sync(sectionDir); - fs.mkdirSync(sectionDir); - - // Get all articles in that directory - const articles = fs.readdirSync(srcFilePath); - articles.forEach((article, articleIndex) => { - const articlePath = path.join(srcFilePath, article); - let articleContent = `${fs.readFileSync(articlePath)}`; - - if (article.endsWith("README.md")) { // Create a top-level item - articleContent = articleContent.replaceAll(/\[.+\]\(\..+\)/g, e => { - // Preproces markdown links to make them work in the playground. - // All folder names (1-getting-started) and file names (01-first-steps.md) - // should be transformed to not contain numbers. - return e.replaceAll(/(\d+-(?:\w+-?)+)/g, convertToTechnicalName) - // README.md file is replaced with generated HTML file whose - // path is the folder where it is stored so the link should point only to the path. - .replaceAll("/README.md", "") - // File extensions should be removed from links. - .replaceAll(".md", ""); - }) - - - articleContent = `--- -layout: default -title: ${humanReadableName} -has_children: true -nav_order: ${fileIndex + 1} -permalink: /playground/${technicalName} ---- - -${articleContent} - -{:toc}`; - - } else { // Create a nested item - articleContent = articleContent.replaceAll(/\[.+\]\(\..+\)/g, e => { - // Preproces markdown links to make them work in the playground. - // All folder names (1-getting-started) and file names (01-first-steps.md) - // should be transformed to not contain numbers. - return e.replaceAll(/(\d+-(?:\w+-?)+)/g, convertToTechnicalName) - // Jekyll creates a directory for each page to follow the - // permalink structure so markdown links should be replaced with - // one out folder backward. - .replaceAll("(../", "(../../") - .replaceAll("(./", "(../") - // README.md file is replaced with generated HTML file whose - // path is the folder where it is stored so the link should point only to the path. - .replaceAll("/README.md", "") - // File extensions should be removed from links. - .replaceAll(".md", ""); - }) - - const articleHumanReadableName = capitalizeFirst(article.replace(/^[0-9\-\.]+/, "").replace(/\.md$/, "").replace(/-/g, " ")); - const articleTechnicalName = convertToTechnicalName(article); - articleContent = `--- -layout: docs -title: ${articleHumanReadableName} -parent: ${humanReadableName} -nav_order: ${articleIndex + 1} -permalink: /playground/${technicalName}/${articleTechnicalName}/ ---- - -${articleContent}`; - - } - - fs.writeFileSync(path.join(sectionDir, article), articleContent); - - }); - } else { // create a standalone article outside the directory structure (f.e. FAQ) - let articleContent = `${fs.readFileSync(srcFilePath)}`; - const shortName = convertToTechnicalName(file); - const cleanName = file.replace(/^[0-9\-\.]+/, ""); - articleContent = `--- -layout: docs -title: ${cleanName.replace(/\.md$/, "")} -nav_order: ${fileIndex + 1} -permalink: /playground/${shortName} ---- - -${articleContent}`; - fs.writeFileSync(path.join(destPath, cleanName), articleContent); - } -}); diff --git a/packages/playground/build-scripts/pages-prepare.js b/packages/playground/build-scripts/pages-prepare.js deleted file mode 100644 index e70c467cc846..000000000000 --- a/packages/playground/build-scripts/pages-prepare.js +++ /dev/null @@ -1,37 +0,0 @@ -const fs = require('fs/promises'); -const path = require('path'); - -const packages = [ - "fiori", - "main", -]; - -packages.forEach(async (package) => { - const pagesPath = `../${package}/dist/test/pages/`; - - await fs.mkdir(`./docs/pages/content/${package}`, {recursive: true}); - - const files = (await fs.readdir(pagesPath)).filter(file => file.endsWith(".html")); - - files.forEach(async (file) => { - const fullFilePath = path.join(pagesPath, file); - let content = (await fs.readFile(fullFilePath)).toString(); - - // replace absolute urls so they get the public deploy url - const assetsExpr = /([a-zA-Z0-9_\-]+)="([^"]*assets\/[^"]*)"/g; - content = content.replace(assetsExpr, `$1='{{ "$2" | absolute_url }}'`); - - //Get current component name - const currentPageName = file.slice(0, file.indexOf('.')); - - // add front matter - content = `--- -title: ${currentPageName.replace(/([A-Z])/g, " $1").trim()} -permalink: /playground/${package}/pages/${currentPageName}/ -nav_exclude: true ---- -${content}`; - - fs.writeFile(`docs/pages/content/${package}/${file}`, content); - }); -}); diff --git a/packages/playground/build-scripts/samples-prepare.js b/packages/playground/build-scripts/samples-prepare.js deleted file mode 100644 index 01e21e290704..000000000000 --- a/packages/playground/build-scripts/samples-prepare.js +++ /dev/null @@ -1,69 +0,0 @@ -const fs = require('fs/promises'); -const path = require('path'); -const enrichSampleWihAPI = require("./api-for-sample/index.js"); - -const packages = [ - "fiori", - "main", -]; - -const components = []; - -// Add new components here -const newComponents = [ - "Menu", -]; - -const main = async () => { - await Promise.all(packages.map(async (package) => { - const samplesPath = `../${package}/test/samples/`; - - var files = await fs.readdir(samplesPath); - - files.forEach(file => { - components.push(file); - }); - })); - - components.sort(); - - packages.forEach(async (package) => { - const samplesPath = `../${package}/test/samples/`; - const api = JSON.parse((await fs.readFile(`../${package}/dist/api.json`)).toString()); - - const files = await fs.readdir(samplesPath); - - files.forEach(async (file) => { - const currentSampleName = file.slice(0, file.indexOf('.')); - const currentNameWithNamespace = `sap.ui.webc.${package}.${currentSampleName}` - - // read file - let result = (await fs.readFile(path.join(samplesPath, file))).toString(); - - // replace pre - result = result.replaceAll(`
`, '<pre class="highlight">{% highlight html %}');
-			result = result.replaceAll(`
`, '{% endhighlight %}'); - - // add api - result = await enrichSampleWihAPI(currentNameWithNamespace, api, result); - - // prepend front matter - result = `--- -layout: sample -title: ${currentSampleName.replace(/([A-Z])/g, " $1").trim()} -parent: Components -permalink: /playground/components/${currentSampleName}/ -newComponent: ${newComponents.indexOf(currentSampleName) > -1} -nav_order: ${components.indexOf(file) + 1} ---- -${result}`; - - // write result - fs.writeFile(`docs/components/${file}`, result); - - }); - }); - -}; - -main(); \ No newline at end of file diff --git a/packages/playground/docs/landing-page.html b/packages/playground/docs/landing-page.html index 665e25efa523..d708187143a1 100644 --- a/packages/playground/docs/landing-page.html +++ b/packages/playground/docs/landing-page.html @@ -1,17 +1,11 @@ ---- -title: UI5 Web Components -permalink: / -nav_exclude: true ---- - UI5 Web Components - + - + - - + +