@ui5/webcomponents-fiori 2.23.0-rc.1 → 2.23.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +74 -0
- package/dist/.tsbuildinfo +1 -1
- package/dist/HeroBanner.d.ts +147 -0
- package/dist/HeroBanner.js +165 -0
- package/dist/HeroBanner.js.map +1 -0
- package/dist/HeroBannerTemplate.d.ts +2 -0
- package/dist/HeroBannerTemplate.js +17 -0
- package/dist/HeroBannerTemplate.js.map +1 -0
- package/dist/NotificationListItem.d.ts +0 -1
- package/dist/NotificationListItem.js +2 -3
- package/dist/NotificationListItem.js.map +1 -1
- package/dist/ShellBar.d.ts +0 -1
- package/dist/ShellBar.js +2 -11
- package/dist/ShellBar.js.map +1 -1
- package/dist/ShellBarTemplate.js +1 -1
- package/dist/ShellBarTemplate.js.map +1 -1
- package/dist/bundle.esm.js +1 -0
- package/dist/bundle.esm.js.map +1 -1
- package/dist/css/themes/HeroBanner.css +1 -0
- package/dist/css/themes/SearchField.css +1 -1
- package/dist/css/themes/sap_fiori_3/parameters-bundle.css +1 -1
- package/dist/css/themes/sap_fiori_3_dark/parameters-bundle.css +1 -1
- package/dist/css/themes/sap_fiori_3_hcb/parameters-bundle.css +1 -1
- package/dist/css/themes/sap_fiori_3_hcw/parameters-bundle.css +1 -1
- package/dist/css/themes/sap_horizon/parameters-bundle.css +1 -1
- package/dist/css/themes/sap_horizon_auto/parameters-bundle.css +6 -0
- package/dist/css/themes/sap_horizon_dark/parameters-bundle.css +6 -0
- package/dist/css/themes/sap_horizon_dark_exp/parameters-bundle.css +6 -0
- package/dist/css/themes/sap_horizon_exp/parameters-bundle.css +6 -0
- package/dist/css/themes/sap_horizon_hc_auto/parameters-bundle.css +6 -0
- package/dist/css/themes/sap_horizon_hcb/parameters-bundle.css +6 -0
- package/dist/css/themes/sap_horizon_hcb_exp/parameters-bundle.css +6 -0
- package/dist/css/themes/sap_horizon_hcw/parameters-bundle.css +6 -0
- package/dist/css/themes/sap_horizon_hcw_exp/parameters-bundle.css +6 -0
- package/dist/custom-elements-internal.json +381 -136
- package/dist/custom-elements.json +269 -4
- package/dist/generated/assets/i18n/messagebundle_mk.json +1 -1
- package/dist/generated/assets/themes/sap_fiori_3/parameters-bundle.css.json +1 -1
- package/dist/generated/assets/themes/sap_fiori_3_dark/parameters-bundle.css.json +1 -1
- package/dist/generated/assets/themes/sap_fiori_3_hcb/parameters-bundle.css.json +1 -1
- package/dist/generated/assets/themes/sap_fiori_3_hcw/parameters-bundle.css.json +1 -1
- package/dist/generated/assets/themes/sap_horizon/parameters-bundle.css.json +1 -1
- package/dist/generated/assets/themes/sap_horizon_auto/parameters-bundle.css.json +1 -1
- package/dist/generated/assets/themes/sap_horizon_dark/parameters-bundle.css.json +1 -1
- package/dist/generated/assets/themes/sap_horizon_dark_exp/parameters-bundle.css.json +1 -1
- package/dist/generated/assets/themes/sap_horizon_exp/parameters-bundle.css.json +1 -1
- package/dist/generated/assets/themes/sap_horizon_hc_auto/parameters-bundle.css.json +1 -1
- package/dist/generated/assets/themes/sap_horizon_hcb/parameters-bundle.css.json +1 -1
- package/dist/generated/assets/themes/sap_horizon_hcb_exp/parameters-bundle.css.json +1 -1
- package/dist/generated/assets/themes/sap_horizon_hcw/parameters-bundle.css.json +1 -1
- package/dist/generated/assets/themes/sap_horizon_hcw_exp/parameters-bundle.css.json +1 -1
- package/dist/generated/themes/HeroBanner.css.d.ts +2 -0
- package/dist/generated/themes/HeroBanner.css.js +8 -0
- package/dist/generated/themes/HeroBanner.css.js.map +1 -0
- package/dist/generated/themes/SearchField.css.d.ts +1 -1
- package/dist/generated/themes/SearchField.css.js +1 -1
- package/dist/generated/themes/SearchField.css.js.map +1 -1
- package/dist/generated/themes/sap_fiori_3/parameters-bundle.css.d.ts +1 -1
- package/dist/generated/themes/sap_fiori_3/parameters-bundle.css.js +1 -1
- package/dist/generated/themes/sap_fiori_3/parameters-bundle.css.js.map +1 -1
- package/dist/generated/themes/sap_fiori_3_dark/parameters-bundle.css.d.ts +1 -1
- package/dist/generated/themes/sap_fiori_3_dark/parameters-bundle.css.js +1 -1
- package/dist/generated/themes/sap_fiori_3_dark/parameters-bundle.css.js.map +1 -1
- package/dist/generated/themes/sap_fiori_3_hcb/parameters-bundle.css.d.ts +1 -1
- package/dist/generated/themes/sap_fiori_3_hcb/parameters-bundle.css.js +1 -1
- package/dist/generated/themes/sap_fiori_3_hcb/parameters-bundle.css.js.map +1 -1
- package/dist/generated/themes/sap_fiori_3_hcw/parameters-bundle.css.d.ts +1 -1
- package/dist/generated/themes/sap_fiori_3_hcw/parameters-bundle.css.js +1 -1
- package/dist/generated/themes/sap_fiori_3_hcw/parameters-bundle.css.js.map +1 -1
- package/dist/generated/themes/sap_horizon/parameters-bundle.css.d.ts +1 -1
- package/dist/generated/themes/sap_horizon/parameters-bundle.css.js +1 -1
- package/dist/generated/themes/sap_horizon/parameters-bundle.css.js.map +1 -1
- package/dist/generated/themes/sap_horizon_auto/parameters-bundle.css.d.ts +1 -1
- package/dist/generated/themes/sap_horizon_auto/parameters-bundle.css.js +6 -0
- package/dist/generated/themes/sap_horizon_auto/parameters-bundle.css.js.map +1 -1
- package/dist/generated/themes/sap_horizon_dark/parameters-bundle.css.d.ts +1 -1
- package/dist/generated/themes/sap_horizon_dark/parameters-bundle.css.js +6 -0
- package/dist/generated/themes/sap_horizon_dark/parameters-bundle.css.js.map +1 -1
- package/dist/generated/themes/sap_horizon_dark_exp/parameters-bundle.css.d.ts +1 -1
- package/dist/generated/themes/sap_horizon_dark_exp/parameters-bundle.css.js +6 -0
- package/dist/generated/themes/sap_horizon_dark_exp/parameters-bundle.css.js.map +1 -1
- package/dist/generated/themes/sap_horizon_exp/parameters-bundle.css.d.ts +1 -1
- package/dist/generated/themes/sap_horizon_exp/parameters-bundle.css.js +6 -0
- package/dist/generated/themes/sap_horizon_exp/parameters-bundle.css.js.map +1 -1
- package/dist/generated/themes/sap_horizon_hc_auto/parameters-bundle.css.d.ts +1 -1
- package/dist/generated/themes/sap_horizon_hc_auto/parameters-bundle.css.js +6 -0
- package/dist/generated/themes/sap_horizon_hc_auto/parameters-bundle.css.js.map +1 -1
- package/dist/generated/themes/sap_horizon_hcb/parameters-bundle.css.d.ts +1 -1
- package/dist/generated/themes/sap_horizon_hcb/parameters-bundle.css.js +6 -0
- package/dist/generated/themes/sap_horizon_hcb/parameters-bundle.css.js.map +1 -1
- package/dist/generated/themes/sap_horizon_hcb_exp/parameters-bundle.css.d.ts +1 -1
- package/dist/generated/themes/sap_horizon_hcb_exp/parameters-bundle.css.js +6 -0
- package/dist/generated/themes/sap_horizon_hcb_exp/parameters-bundle.css.js.map +1 -1
- package/dist/generated/themes/sap_horizon_hcw/parameters-bundle.css.d.ts +1 -1
- package/dist/generated/themes/sap_horizon_hcw/parameters-bundle.css.js +6 -0
- package/dist/generated/themes/sap_horizon_hcw/parameters-bundle.css.js.map +1 -1
- package/dist/generated/themes/sap_horizon_hcw_exp/parameters-bundle.css.d.ts +1 -1
- package/dist/generated/themes/sap_horizon_hcw_exp/parameters-bundle.css.js +6 -0
- package/dist/generated/themes/sap_horizon_hcw_exp/parameters-bundle.css.js.map +1 -1
- package/dist/types/HeroBannerActionsPlacement.d.ts +20 -0
- package/dist/types/HeroBannerActionsPlacement.js +22 -0
- package/dist/types/HeroBannerActionsPlacement.js.map +1 -0
- package/dist/types/HeroBannerColumnsRatio.d.ts +21 -0
- package/dist/types/HeroBannerColumnsRatio.js +23 -0
- package/dist/types/HeroBannerColumnsRatio.js.map +1 -0
- package/dist/types/HeroBannerHeaderBlockPlacement.d.ts +20 -0
- package/dist/types/HeroBannerHeaderBlockPlacement.js +22 -0
- package/dist/types/HeroBannerHeaderBlockPlacement.js.map +1 -0
- package/dist/vscode.html-custom-data.json +32 -0
- package/dist/web-types.json +104 -1
- package/package.json +7 -7
- package/src/HeroBannerTemplate.tsx +65 -0
- package/src/ShellBarTemplate.tsx +1 -1
- package/src/i18n/messagebundle_mk.properties +1 -1
- package/src/themes/HeroBanner.css +359 -0
- package/src/themes/SearchField.css +2 -2
- package/src/themes/base/HeroBanner-parameters.css +8 -0
- package/src/themes/sap_fiori_3/parameters-bundle.css +1 -0
- package/src/themes/sap_fiori_3_dark/parameters-bundle.css +1 -0
- package/src/themes/sap_fiori_3_hcb/parameters-bundle.css +1 -0
- package/src/themes/sap_fiori_3_hcw/parameters-bundle.css +1 -0
- package/src/themes/sap_horizon/HeroBanner-parameters.css +4 -0
- package/src/themes/sap_horizon/parameters-bundle.css +2 -0
- package/src/themes/sap_horizon_dark/parameters-bundle.css +1 -0
- package/src/themes/sap_horizon_dark_exp/parameters-bundle.css +1 -0
- package/src/themes/sap_horizon_exp/parameters-bundle.css +2 -0
- package/src/themes/sap_horizon_hcb/parameters-bundle.css +1 -0
- package/src/themes/sap_horizon_hcb_exp/parameters-bundle.css +1 -0
- package/src/themes/sap_horizon_hcw/parameters-bundle.css +1 -0
- package/src/themes/sap_horizon_hcw_exp/parameters-bundle.css +1 -0
package/dist/web-types.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://raw.githubusercontent.com/JetBrains/web-types/master/schema/web-types.json",
|
|
3
3
|
"name": "@ui5/webcomponents-fiori",
|
|
4
|
-
"version": "2.23.0
|
|
4
|
+
"version": "2.23.0",
|
|
5
5
|
"description-markup": "markdown",
|
|
6
6
|
"contributions": {
|
|
7
7
|
"html": {
|
|
@@ -580,6 +580,89 @@
|
|
|
580
580
|
"events": []
|
|
581
581
|
}
|
|
582
582
|
},
|
|
583
|
+
{
|
|
584
|
+
"name": "ui5-hero-banner",
|
|
585
|
+
"description": "### Overview\n\nThe `ui5-hero-banner` is a flexible, full-width banner designed for placement at the top of a page.\nIt provides a personalized greeting and quick access to key information or actions.\n\n### Structure\n\nThe HeroBanner consists of the following building blocks:\n\n- **Banner Canvas** - the visual base with a background color, optional background image and shadow.\n- **Overline** (optional) - contextual text at the top, e.g. the current date or a status message.\n- **Header** (optional) - the main greeting header below the overline, e.g. \"Hello, John\".\n- **Free Slots** (optional) - customizable content areas that can contain KPI cards, search components, text, buttons, etc.\n\nThe banner is not sticky — it scrolls away with the page content when the user scrolls down.\n\n### Usage\n\nPlace the `ui5-hero-banner` at the top of a page to welcome the user and surface relevant\ninformation or shortcuts at a glance.\n\nThe hero banner itself is non-interactive. However, interactive elements such as buttons, cards,\nor search fields can be placed inside the free content slots and will follow their own\ninteractive states.\n\n### Responsive Behavior\n\nThe hero banner adapts to different screen sizes:\n- On smaller screens, split layouts (Equal, FirstWider) collapse to a single stacked column.\n- The heading text wraps to multiple lines as needed.\n- Buttons in the headerAction slot will wrap.\n- On screens ≤1024px, the header text is wrapped to a maximum of 3 lines.\n\n### ES6 Module Import\n\n`import \"@ui5/webcomponents-fiori/dist/HeroBanner.js\";`\n---\n\n\n### **Slots:**\n - **actions** - Defines action buttons displayed to the right of the header area.\nTypically used to display actions buttons in the top right corner.\n\nCan contain buttons, links, or other interactive elements that provide\nquick access to relevant actions directly from the hero banner header.\n- **default** - Defines the first (default) free content block of the hero banner.\n\nThis is the default slot — content placed directly inside `<ui5-hero-banner>`\nwithout a slot attribute lands here.\nCan contain KPI cards, search input fields, text, buttons, and more.\n- **endContent** - Defines the second free content block of the hero banner.\n\nUsed alongside `startContent` when `columnsRatio` is set (`Equal`, `FirstWider`).\nCan contain cards, buttons, and other interactive elements.\n\n### **CSS Parts:**\n - **canvas** - Used to style the banner canvas container\n- **content** - Used to style the content area of the banner\n- **endContent** - Used to style the end content block\n- **header** - Used to style the header area (salutation, date, header actions)\n- **startContent** - Used to style the start (default) content block",
|
|
586
|
+
"doc-url": "",
|
|
587
|
+
"attributes": [
|
|
588
|
+
{
|
|
589
|
+
"name": "actions-placement",
|
|
590
|
+
"description": "Defines the placement of the actions slot within the hero banner header.\n\n- **TopEnd** (default) - Actions are displayed to the right of the header text, at the top of the header row.\n- **BottomStart** - Actions are displayed below the header text, left-aligned, regardless of `columnsRatio` or slot usage.",
|
|
591
|
+
"value": {
|
|
592
|
+
"type": "\"TopEnd\" | \"BottomStart\"",
|
|
593
|
+
"default": "\"TopEnd\""
|
|
594
|
+
}
|
|
595
|
+
},
|
|
596
|
+
{
|
|
597
|
+
"name": "columns-ratio",
|
|
598
|
+
"description": "Defines the ratio between the two content columns inside the hero banner.\n\nTakes effect only when `endContent` is provided. When no `endContent` is present, the content spans the full width (single column).\n\n- **Equal** - Two equal columns. Both content blocks share the available width equally.\n On smaller screens, both slots stack vertically.\n- **FirstWider** - Two unequal columns. The start content takes two-thirds of the width, the end content one-third.\n On smaller screens, both slots stack vertically.",
|
|
599
|
+
"value": {
|
|
600
|
+
"type": "\"Equal\" | \"FirstWider\"",
|
|
601
|
+
"default": "\"FirstWider\""
|
|
602
|
+
}
|
|
603
|
+
},
|
|
604
|
+
{
|
|
605
|
+
"name": "header-block-placement",
|
|
606
|
+
"description": "Defines the vertical placement of the header block within the content area.\n\n- **Top** (default) - Header block is placed at the top of the content area.\n- **Bottom** - Header block is pushed to the bottom of column 1. Only takes effect when `columnsRatio`\n is `Equal` or `FirstWider` and only `endContent` is provided (no default slot content).\n When `actionsPlacement` is also `BottomStart`, the `endContent` slot spans the full height.",
|
|
607
|
+
"value": { "type": "\"Top\" | \"Bottom\"", "default": "\"Top\"" }
|
|
608
|
+
},
|
|
609
|
+
{
|
|
610
|
+
"name": "header-text",
|
|
611
|
+
"description": "Defines the header text displayed in the hero banner.\n\nThis is the main greeting header, typically a personalized message\nsuch as \"Hello, John\".",
|
|
612
|
+
"value": { "type": "string | undefined", "default": "undefined" }
|
|
613
|
+
},
|
|
614
|
+
{
|
|
615
|
+
"name": "overline-text",
|
|
616
|
+
"description": "Defines text displayed above the heading as an overline.\nCan be used to show the current date, a status message, or any other relevant contextual information.",
|
|
617
|
+
"value": { "type": "string | undefined", "default": "undefined" }
|
|
618
|
+
}
|
|
619
|
+
],
|
|
620
|
+
"slots": [
|
|
621
|
+
{
|
|
622
|
+
"name": "actions",
|
|
623
|
+
"description": "Defines action buttons displayed to the right of the header area.\nTypically used to display actions buttons in the top right corner.\n\nCan contain buttons, links, or other interactive elements that provide\nquick access to relevant actions directly from the hero banner header."
|
|
624
|
+
},
|
|
625
|
+
{
|
|
626
|
+
"name": "default",
|
|
627
|
+
"description": "Defines the first (default) free content block of the hero banner.\n\nThis is the default slot — content placed directly inside `<ui5-hero-banner>`\nwithout a slot attribute lands here.\nCan contain KPI cards, search input fields, text, buttons, and more."
|
|
628
|
+
},
|
|
629
|
+
{
|
|
630
|
+
"name": "endContent",
|
|
631
|
+
"description": "Defines the second free content block of the hero banner.\n\nUsed alongside `startContent` when `columnsRatio` is set (`Equal`, `FirstWider`).\nCan contain cards, buttons, and other interactive elements."
|
|
632
|
+
}
|
|
633
|
+
],
|
|
634
|
+
"events": [],
|
|
635
|
+
"js": {
|
|
636
|
+
"properties": [
|
|
637
|
+
{
|
|
638
|
+
"name": "actions-placement",
|
|
639
|
+
"description": "Defines the placement of the actions slot within the hero banner header.\n\n- **TopEnd** (default) - Actions are displayed to the right of the header text, at the top of the header row.\n- **BottomStart** - Actions are displayed below the header text, left-aligned, regardless of `columnsRatio` or slot usage.",
|
|
640
|
+
"value": { "type": "\"TopEnd\" | \"BottomStart\"" }
|
|
641
|
+
},
|
|
642
|
+
{
|
|
643
|
+
"name": "columns-ratio",
|
|
644
|
+
"description": "Defines the ratio between the two content columns inside the hero banner.\n\nTakes effect only when `endContent` is provided. When no `endContent` is present, the content spans the full width (single column).\n\n- **Equal** - Two equal columns. Both content blocks share the available width equally.\n On smaller screens, both slots stack vertically.\n- **FirstWider** - Two unequal columns. The start content takes two-thirds of the width, the end content one-third.\n On smaller screens, both slots stack vertically.",
|
|
645
|
+
"value": { "type": "\"Equal\" | \"FirstWider\"" }
|
|
646
|
+
},
|
|
647
|
+
{
|
|
648
|
+
"name": "header-block-placement",
|
|
649
|
+
"description": "Defines the vertical placement of the header block within the content area.\n\n- **Top** (default) - Header block is placed at the top of the content area.\n- **Bottom** - Header block is pushed to the bottom of column 1. Only takes effect when `columnsRatio`\n is `Equal` or `FirstWider` and only `endContent` is provided (no default slot content).\n When `actionsPlacement` is also `BottomStart`, the `endContent` slot spans the full height.",
|
|
650
|
+
"value": { "type": "\"Top\" | \"Bottom\"" }
|
|
651
|
+
},
|
|
652
|
+
{
|
|
653
|
+
"name": "header-text",
|
|
654
|
+
"description": "Defines the header text displayed in the hero banner.\n\nThis is the main greeting header, typically a personalized message\nsuch as \"Hello, John\".",
|
|
655
|
+
"value": { "type": "string | undefined" }
|
|
656
|
+
},
|
|
657
|
+
{
|
|
658
|
+
"name": "overline-text",
|
|
659
|
+
"description": "Defines text displayed above the heading as an overline.\nCan be used to show the current date, a status message, or any other relevant contextual information.",
|
|
660
|
+
"value": { "type": "string | undefined" }
|
|
661
|
+
}
|
|
662
|
+
],
|
|
663
|
+
"events": []
|
|
664
|
+
}
|
|
665
|
+
},
|
|
583
666
|
{
|
|
584
667
|
"name": "ui5-illustrated-message",
|
|
585
668
|
"description": "### Overview\nAn IllustratedMessage is a recommended combination of a solution-oriented message, an engaging\nillustration, and conversational tone to better communicate an empty or a success state than just show\na message alone.\n\nEach illustration has default internationalised title and subtitle texts. Also they can be managed with\n`titleText` and `subtitleText` properties.\n\nTo display the desired illustration, use the `name` property, where you can find the list of all available illustrations.\n\n**Note:** By default the “BeforeSearch” illustration is loaded. To use other illustrations, make sure you import them in addition, for example:\n\n`import \"@ui5/webcomponents-fiori/dist/illustrations/NoData.js\"`\n\n**Note:** Illustrations starting with the “Tnt” prefix are part of another illustration set. For example to use the “TntSuccess” illustration, add the following import::\n\n`import \"@ui5/webcomponents-fiori/dist/illustrations/tnt/Success.js\"`\n\n### Structure\nThe IllustratedMessage consists of the following elements, which are displayed below each other in the following order:\n\n- Illustration\n- Title\n- Subtitle\n- Actions\n\n### Usage\n`ui5-illustrated-message` is meant to be used inside container component, for example a `ui5-card`,\na `ui5-dialog` or a `ui5-page`\n\n### ES6 Module Import\n\n`import \"@ui5/webcomponents-fiori/dist/IllustratedMessage.js\";`\n---\n\n\n### **Slots:**\n - **default** - Defines the component actions.\n\n**Note:** Not displayed when the `design` property is set to `Base`.\n- **subtitle** - Defines the subtitle of the component.\n\n**Note:** Using this slot, the default subtitle text of illustration and the value of `subtitleText` property will be overwritten.\n- **title** - Defines the title of the component.\n\n**Note:** Using this slot, the default title text of illustration and the value of `title` property will be overwritten.\n\n### **CSS Parts:**\n - **subtitle** - Used to style the subtitle wrapper of the `ui5-illustrated-message`",
|
|
@@ -4376,6 +4459,26 @@
|
|
|
4376
4459
|
"name": "part(footer)",
|
|
4377
4460
|
"description": "Used to style the footer of the component"
|
|
4378
4461
|
},
|
|
4462
|
+
{
|
|
4463
|
+
"name": "part(canvas)",
|
|
4464
|
+
"description": "Used to style the banner canvas container"
|
|
4465
|
+
},
|
|
4466
|
+
{
|
|
4467
|
+
"name": "part(content)",
|
|
4468
|
+
"description": "Used to style the content area of the banner"
|
|
4469
|
+
},
|
|
4470
|
+
{
|
|
4471
|
+
"name": "part(endContent)",
|
|
4472
|
+
"description": "Used to style the end content block"
|
|
4473
|
+
},
|
|
4474
|
+
{
|
|
4475
|
+
"name": "part(header)",
|
|
4476
|
+
"description": "Used to style the header area (salutation, date, header actions)"
|
|
4477
|
+
},
|
|
4478
|
+
{
|
|
4479
|
+
"name": "part(startContent)",
|
|
4480
|
+
"description": "Used to style the start (default) content block"
|
|
4481
|
+
},
|
|
4379
4482
|
{
|
|
4380
4483
|
"name": "part(subtitle)",
|
|
4381
4484
|
"description": "Used to style the subtitle wrapper of the `ui5-illustrated-message`"
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ui5/webcomponents-fiori",
|
|
3
|
-
"version": "2.23.0
|
|
3
|
+
"version": "2.23.0",
|
|
4
4
|
"description": "UI5 Web Components: webcomponents.fiori",
|
|
5
5
|
"ui5": {
|
|
6
6
|
"webComponentsPackage": true
|
|
@@ -54,20 +54,20 @@
|
|
|
54
54
|
"directory": "packages/fiori"
|
|
55
55
|
},
|
|
56
56
|
"dependencies": {
|
|
57
|
-
"@ui5/webcomponents": "2.23.0
|
|
58
|
-
"@ui5/webcomponents-base": "2.23.0
|
|
59
|
-
"@ui5/webcomponents-icons": "2.23.0
|
|
60
|
-
"@ui5/webcomponents-theming": "2.23.0
|
|
57
|
+
"@ui5/webcomponents": "2.23.0",
|
|
58
|
+
"@ui5/webcomponents-base": "2.23.0",
|
|
59
|
+
"@ui5/webcomponents-icons": "2.23.0",
|
|
60
|
+
"@ui5/webcomponents-theming": "2.23.0",
|
|
61
61
|
"@zxing/library": "^0.21.3"
|
|
62
62
|
},
|
|
63
63
|
"devDependencies": {
|
|
64
64
|
"@custom-elements-manifest/analyzer": "^0.10.10",
|
|
65
65
|
"@ui5/cypress-internal": "0.1.0",
|
|
66
|
-
"@ui5/webcomponents-tools": "2.23.0
|
|
66
|
+
"@ui5/webcomponents-tools": "2.23.0",
|
|
67
67
|
"cypress": "15.9.0",
|
|
68
68
|
"lit": "^2.0.0",
|
|
69
69
|
"vite": "5.4.21",
|
|
70
70
|
"yarn": "^1.22.22"
|
|
71
71
|
},
|
|
72
|
-
"gitHead": "
|
|
72
|
+
"gitHead": "2b920fe2cdaba740dda6caa7bd0bd32302264e35"
|
|
73
73
|
}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import type HeroBanner from "./HeroBanner.js";
|
|
2
|
+
|
|
3
|
+
export default function HeroBannerTemplate(this: HeroBanner) {
|
|
4
|
+
const actionsBottomStart = this.actionsPlacement === "BottomStart";
|
|
5
|
+
|
|
6
|
+
return (
|
|
7
|
+
<div
|
|
8
|
+
class="ui5-banner-root"
|
|
9
|
+
role="banner"
|
|
10
|
+
part="canvas"
|
|
11
|
+
>
|
|
12
|
+
<div class={{
|
|
13
|
+
"ui5-banner-content": true,
|
|
14
|
+
"ui5-banner-columns-equal": this.columnsRatio === "Equal" && this._hasEndContent,
|
|
15
|
+
"ui5-banner-columns-first-wider": this.columnsRatio === "FirstWider" && this._hasEndContent,
|
|
16
|
+
}} part="content">
|
|
17
|
+
<div class="ui5-banner-header" part="header">
|
|
18
|
+
<div class="ui5-banner-header-text">
|
|
19
|
+
{this.overlineText &&
|
|
20
|
+
<div class="ui5-banner-overline">
|
|
21
|
+
{this.overlineText}
|
|
22
|
+
</div>
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
{this.headerText &&
|
|
26
|
+
<h2 class="ui5-banner-heading">
|
|
27
|
+
{this.headerText}
|
|
28
|
+
</h2>
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
{actionsBottomStart && this._hasActions &&
|
|
32
|
+
<div class="ui5-banner-actions ui5-banner-actions-bottom-start">
|
|
33
|
+
<slot name="actions"></slot>
|
|
34
|
+
</div>
|
|
35
|
+
}
|
|
36
|
+
</div>
|
|
37
|
+
|
|
38
|
+
{!actionsBottomStart && !this._actionsAsGridItem && this._hasActions &&
|
|
39
|
+
<div class="ui5-banner-actions">
|
|
40
|
+
<slot name="actions"></slot>
|
|
41
|
+
</div>
|
|
42
|
+
}
|
|
43
|
+
</div>
|
|
44
|
+
|
|
45
|
+
{this._hasStartContent &&
|
|
46
|
+
<div class="ui5-banner-block ui5-banner-block-start" part="startContent">
|
|
47
|
+
<slot></slot>
|
|
48
|
+
</div>
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
{this._hasEndContent &&
|
|
52
|
+
<div class="ui5-banner-block ui5-banner-block-end" part="endContent">
|
|
53
|
+
<slot name="endContent"></slot>
|
|
54
|
+
</div>
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
{this._actionsAsGridItem &&
|
|
58
|
+
<div class="ui5-banner-actions ui5-banner-actions-grid-item">
|
|
59
|
+
<slot name="actions"></slot>
|
|
60
|
+
</div>
|
|
61
|
+
}
|
|
62
|
+
</div>
|
|
63
|
+
</div>
|
|
64
|
+
);
|
|
65
|
+
}
|
package/src/ShellBarTemplate.tsx
CHANGED
|
@@ -12,7 +12,7 @@ DYNAMIC_PAGE_ARIA_LABEL_EXPAND_HEADER=Прошири го заглавието
|
|
|
12
12
|
|
|
13
13
|
DYNAMIC_PAGE_ARIA_LABEL_SNAP_HEADER=Скриј го заглавието
|
|
14
14
|
|
|
15
|
-
DYNAMIC_PAGE_ARIA_LABEL_PIN_HEADER
|
|
15
|
+
DYNAMIC_PAGE_ARIA_LABEL_PIN_HEADER=Закачи го заглавието
|
|
16
16
|
|
|
17
17
|
DYNAMIC_PAGE_ARIA_LABEL_UNPIN_HEADER=Поништи го фиксирањето на заглавието
|
|
18
18
|
|
|
@@ -0,0 +1,359 @@
|
|
|
1
|
+
/* HeroBanner Component Styles */
|
|
2
|
+
|
|
3
|
+
:host(:not([hidden])) {
|
|
4
|
+
display: block;
|
|
5
|
+
width: 100%;
|
|
6
|
+
container-type: inline-size;
|
|
7
|
+
border-radius: var(--_ui5_banner_border_radius);
|
|
8
|
+
background-color: var(--_ui5_banner_background);
|
|
9
|
+
background-image: var(--_ui5_banner_background_image);
|
|
10
|
+
background-repeat: no-repeat;
|
|
11
|
+
background-position: top;
|
|
12
|
+
background-size: cover;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
/* Banner Canvas */
|
|
16
|
+
.ui5-banner-root {
|
|
17
|
+
box-sizing: border-box;
|
|
18
|
+
min-height: 5.75rem;
|
|
19
|
+
max-height: 24rem;
|
|
20
|
+
border-radius: inherit;
|
|
21
|
+
background-color: inherit;
|
|
22
|
+
background-image: inherit;
|
|
23
|
+
background-size: inherit;
|
|
24
|
+
box-shadow: var(--_ui5_banner_box_shadow);
|
|
25
|
+
border: var(--_ui5_banner_border);
|
|
26
|
+
overflow: hidden;
|
|
27
|
+
position: relative;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
/* Content area — flex column by default, header first */
|
|
31
|
+
.ui5-banner-content {
|
|
32
|
+
display: flex;
|
|
33
|
+
flex-direction: column;
|
|
34
|
+
gap: 1rem;
|
|
35
|
+
box-sizing: border-box;
|
|
36
|
+
padding: 1.5rem;
|
|
37
|
+
color: var(--_ui5_banner_text_color);
|
|
38
|
+
font-family: var(--sapFontFamily);
|
|
39
|
+
font-size: var(--sapFontSize);
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
/* Header row: overline + heading on the left, actions on the right */
|
|
43
|
+
.ui5-banner-header {
|
|
44
|
+
display: flex;
|
|
45
|
+
flex-direction: row;
|
|
46
|
+
flex-wrap: wrap;
|
|
47
|
+
align-items: center;
|
|
48
|
+
justify-content: space-between;
|
|
49
|
+
gap: 1rem;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
.ui5-banner-header-text {
|
|
53
|
+
display: flex;
|
|
54
|
+
flex-direction: column;
|
|
55
|
+
gap: 0.5rem;
|
|
56
|
+
flex: 1 1 auto;
|
|
57
|
+
min-width: 0;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
.ui5-banner-actions {
|
|
61
|
+
display: flex;
|
|
62
|
+
align-items: center;
|
|
63
|
+
gap: 0.5rem;
|
|
64
|
+
flex: 0 0 auto;
|
|
65
|
+
--sapButton_Lite_TextColor: var(--_ui5_banner_text_color);
|
|
66
|
+
--sapButton_Lite_Hover_TextColor: var(--_ui5_banner_text_color);
|
|
67
|
+
--sapButton_Lite_Active_TextColor: var(--_ui5_banner_text_color);
|
|
68
|
+
--sapButton_Lite_Hover_Background: color-mix(in srgb, var(--_ui5_banner_text_color) 15%, transparent);
|
|
69
|
+
--sapButton_Lite_Active_Background: color-mix(in srgb, var(--_ui5_banner_text_color) 25%, transparent);
|
|
70
|
+
--sapButton_IconColor: var(--_ui5_banner_text_color);
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
/* actionsPlacement="BottomStart": actions sit below header-text, left-aligned */
|
|
74
|
+
.ui5-banner-actions-bottom-start {
|
|
75
|
+
align-self: flex-start;
|
|
76
|
+
margin-top: 0.5rem;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
.ui5-banner-heading {
|
|
80
|
+
font-family: var(--sapFontHeaderFamily);
|
|
81
|
+
font-size: var(--sapFontHeader3Size);
|
|
82
|
+
font-weight: normal;
|
|
83
|
+
text-align: start;
|
|
84
|
+
color: var(--_ui5_banner_text_color);
|
|
85
|
+
line-height: 1.4;
|
|
86
|
+
margin: 0;
|
|
87
|
+
padding: 0;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
.ui5-banner-overline {
|
|
91
|
+
font-family: var(--sapFontFamily);
|
|
92
|
+
font-size: var(--sapFontSize);
|
|
93
|
+
text-align: start;
|
|
94
|
+
color: var(--_ui5_banner_text_color);
|
|
95
|
+
line-height: 1.4;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
/* Free content blocks */
|
|
99
|
+
.ui5-banner-block {
|
|
100
|
+
box-sizing: border-box;
|
|
101
|
+
min-width: 0;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
/* Only endContent present (no startContent) — expand to full width */
|
|
105
|
+
.ui5-banner-content:not(:has(.ui5-banner-block-start)) .ui5-banner-block-end {
|
|
106
|
+
display: flex;
|
|
107
|
+
flex-direction: column;
|
|
108
|
+
width: 100%;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
/* ============================================================
|
|
112
|
+
columnsRatio="Equal" — 2-column grid, header spans full width
|
|
113
|
+
============================================================ */
|
|
114
|
+
.ui5-banner-content.ui5-banner-columns-equal {
|
|
115
|
+
display: grid;
|
|
116
|
+
grid-template-columns: 1fr 1fr;
|
|
117
|
+
grid-template-rows: auto 1fr;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
.ui5-banner-columns-equal .ui5-banner-header {
|
|
121
|
+
grid-column: 1 / -1;
|
|
122
|
+
grid-row: 1;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
.ui5-banner-columns-equal .ui5-banner-block-start {
|
|
126
|
+
grid-column: 1;
|
|
127
|
+
grid-row: 2;
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
/* Without endContent, start content spans full width */
|
|
131
|
+
.ui5-banner-columns-equal:not(:has(.ui5-banner-block-end)) .ui5-banner-block-start {
|
|
132
|
+
grid-column: 1 / -1;
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
.ui5-banner-columns-equal .ui5-banner-block-end {
|
|
136
|
+
grid-column: 2;
|
|
137
|
+
grid-row: 2;
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
/* ============================================================
|
|
141
|
+
columnsRatio="FirstWider" — 2/3 + 1/3 grid
|
|
142
|
+
============================================================ */
|
|
143
|
+
.ui5-banner-content.ui5-banner-columns-first-wider {
|
|
144
|
+
display: grid;
|
|
145
|
+
grid-template-columns: 2fr 1fr;
|
|
146
|
+
grid-template-rows: auto 1fr;
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
.ui5-banner-columns-first-wider .ui5-banner-header {
|
|
150
|
+
grid-column: 1 / -1;
|
|
151
|
+
grid-row: 1;
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
.ui5-banner-columns-first-wider .ui5-banner-block-start {
|
|
155
|
+
grid-column: 1;
|
|
156
|
+
grid-row: 2;
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
/* Without endContent, start content spans full width */
|
|
160
|
+
.ui5-banner-columns-first-wider:not(:has(.ui5-banner-block-end)) .ui5-banner-block-start {
|
|
161
|
+
grid-column: 1 / -1;
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
.ui5-banner-columns-first-wider .ui5-banner-block-end {
|
|
165
|
+
grid-column: 2;
|
|
166
|
+
grid-row: 2;
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
/* ============================================================
|
|
170
|
+
actionsPlacement="BottomStart" modifiers
|
|
171
|
+
(must come after base grid rules to override them)
|
|
172
|
+
============================================================ */
|
|
173
|
+
|
|
174
|
+
/* BottomStart + only endContent: make root a flex column so content stretches to fill it */
|
|
175
|
+
:host([actions-placement="BottomStart"]) .ui5-banner-root:has(.ui5-banner-block-end):not(:has(.ui5-banner-block-start)) {
|
|
176
|
+
display: flex;
|
|
177
|
+
flex-direction: column;
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
:host([actions-placement="BottomStart"]) .ui5-banner-root:has(.ui5-banner-block-end):not(:has(.ui5-banner-block-start)) .ui5-banner-content {
|
|
181
|
+
flex: 1;
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
/* No columnsRatio + only endContent: switch to 2-col grid so endContent fills full height */
|
|
185
|
+
:host([actions-placement="BottomStart"]) .ui5-banner-content:has(.ui5-banner-block-end):not(:has(.ui5-banner-block-start)):not(.ui5-banner-columns-equal):not(.ui5-banner-columns-first-wider) {
|
|
186
|
+
display: grid;
|
|
187
|
+
grid-template-columns: 1fr 1fr;
|
|
188
|
+
grid-template-rows: 1fr;
|
|
189
|
+
align-items: stretch;
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
:host([actions-placement="BottomStart"]) .ui5-banner-content:has(.ui5-banner-block-end):not(:has(.ui5-banner-block-start)):not(.ui5-banner-columns-equal):not(.ui5-banner-columns-first-wider) .ui5-banner-header {
|
|
193
|
+
grid-column: 1;
|
|
194
|
+
grid-row: 1;
|
|
195
|
+
align-self: stretch;
|
|
196
|
+
display: flex;
|
|
197
|
+
flex-direction: column;
|
|
198
|
+
justify-content: flex-start;
|
|
199
|
+
align-items: flex-start;
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
:host([actions-placement="BottomStart"]) .ui5-banner-content:has(.ui5-banner-block-end):not(:has(.ui5-banner-block-start)):not(.ui5-banner-columns-equal):not(.ui5-banner-columns-first-wider) .ui5-banner-block-end {
|
|
203
|
+
grid-column: 2;
|
|
204
|
+
grid-row: 1;
|
|
205
|
+
height: 100%;
|
|
206
|
+
display: flex;
|
|
207
|
+
flex-direction: column;
|
|
208
|
+
align-items: flex-end;
|
|
209
|
+
justify-content: center;
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
/* Split layouts + BottomStart + has startContent:
|
|
213
|
+
header becomes flex-column so actions flow below heading */
|
|
214
|
+
:host([actions-placement="BottomStart"]) .ui5-banner-columns-equal:has(.ui5-banner-block-start) .ui5-banner-header,
|
|
215
|
+
:host([actions-placement="BottomStart"]) .ui5-banner-columns-first-wider:has(.ui5-banner-block-start) .ui5-banner-header {
|
|
216
|
+
display: flex;
|
|
217
|
+
flex-direction: column;
|
|
218
|
+
align-items: flex-start;
|
|
219
|
+
justify-content: flex-start;
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
/* Split layouts + BottomStart + no startContent:
|
|
223
|
+
single-row grid, header col 1 full height, endContent col 2 full height */
|
|
224
|
+
:host([actions-placement="BottomStart"]) .ui5-banner-columns-equal:not(:has(.ui5-banner-block-start)),
|
|
225
|
+
:host([actions-placement="BottomStart"]) .ui5-banner-columns-first-wider:not(:has(.ui5-banner-block-start)) {
|
|
226
|
+
grid-template-rows: 1fr;
|
|
227
|
+
align-items: stretch;
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
:host([actions-placement="BottomStart"]) .ui5-banner-columns-equal:not(:has(.ui5-banner-block-start)) .ui5-banner-header,
|
|
231
|
+
:host([actions-placement="BottomStart"]) .ui5-banner-columns-first-wider:not(:has(.ui5-banner-block-start)) .ui5-banner-header {
|
|
232
|
+
grid-column: 1;
|
|
233
|
+
grid-row: 1;
|
|
234
|
+
align-self: stretch;
|
|
235
|
+
display: flex;
|
|
236
|
+
flex-direction: column;
|
|
237
|
+
justify-content: flex-start;
|
|
238
|
+
align-items: flex-start;
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
:host([actions-placement="BottomStart"]) .ui5-banner-columns-equal:not(:has(.ui5-banner-block-start)) .ui5-banner-block-end,
|
|
242
|
+
:host([actions-placement="BottomStart"]) .ui5-banner-columns-first-wider:not(:has(.ui5-banner-block-start)) .ui5-banner-block-end {
|
|
243
|
+
grid-column: 2;
|
|
244
|
+
grid-row: 1;
|
|
245
|
+
align-self: stretch;
|
|
246
|
+
height: 100%;
|
|
247
|
+
display: flex;
|
|
248
|
+
flex-direction: column;
|
|
249
|
+
justify-content: center;
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
/* ============================================================
|
|
253
|
+
headerBlockPlacement="Bottom" modifiers
|
|
254
|
+
Only active when columnsRatio is set and only endContent is present.
|
|
255
|
+
(must come after BottomStart rules to override them when both are set)
|
|
256
|
+
============================================================ */
|
|
257
|
+
|
|
258
|
+
/* Flex layout (no columnsRatio): push header to bottom with margin-top auto */
|
|
259
|
+
:host([header-block-placement="Bottom"]) .ui5-banner-content:not(.ui5-banner-columns-equal):not(.ui5-banner-columns-first-wider) .ui5-banner-header {
|
|
260
|
+
margin-top: auto;
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
/* Split grid layouts + only endContent:
|
|
264
|
+
single-row grid, header at bottom of col 1, endContent fills col 2 */
|
|
265
|
+
:host([header-block-placement="Bottom"]) .ui5-banner-columns-equal:not(:has(.ui5-banner-block-start)),
|
|
266
|
+
:host([header-block-placement="Bottom"]) .ui5-banner-columns-first-wider:not(:has(.ui5-banner-block-start)) {
|
|
267
|
+
grid-template-rows: 1fr;
|
|
268
|
+
align-items: stretch;
|
|
269
|
+
min-height: 12rem;
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
/* When TopEnd actions are present: 2-row grid so actions sit above endContent in col 2 */
|
|
273
|
+
:host([header-block-placement="Bottom"]) .ui5-banner-columns-equal:not(:has(.ui5-banner-block-start)):has(.ui5-banner-actions-grid-item),
|
|
274
|
+
:host([header-block-placement="Bottom"]) .ui5-banner-columns-first-wider:not(:has(.ui5-banner-block-start)):has(.ui5-banner-actions-grid-item) {
|
|
275
|
+
grid-template-rows: auto 1fr;
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
:host([header-block-placement="Bottom"]) .ui5-banner-columns-equal:not(:has(.ui5-banner-block-start)) .ui5-banner-header,
|
|
279
|
+
:host([header-block-placement="Bottom"]) .ui5-banner-columns-first-wider:not(:has(.ui5-banner-block-start)) .ui5-banner-header {
|
|
280
|
+
grid-column: 1;
|
|
281
|
+
grid-row: 1;
|
|
282
|
+
align-self: end;
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
/* With actions: header still fills col 1, aligned to bottom */
|
|
286
|
+
:host([header-block-placement="Bottom"]) .ui5-banner-columns-equal:not(:has(.ui5-banner-block-start)):has(.ui5-banner-actions-grid-item) .ui5-banner-header,
|
|
287
|
+
:host([header-block-placement="Bottom"]) .ui5-banner-columns-first-wider:not(:has(.ui5-banner-block-start)):has(.ui5-banner-actions-grid-item) .ui5-banner-header {
|
|
288
|
+
grid-row: 1 / 3;
|
|
289
|
+
align-self: end;
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
/* TopEnd actions in col 2 row 1 — above endContent */
|
|
293
|
+
:host([header-block-placement="Bottom"]) .ui5-banner-columns-equal:not(:has(.ui5-banner-block-start)) .ui5-banner-actions-grid-item,
|
|
294
|
+
:host([header-block-placement="Bottom"]) .ui5-banner-columns-first-wider:not(:has(.ui5-banner-block-start)) .ui5-banner-actions-grid-item {
|
|
295
|
+
grid-column: 2;
|
|
296
|
+
grid-row: 1;
|
|
297
|
+
align-self: start;
|
|
298
|
+
justify-self: end;
|
|
299
|
+
min-width: 0;
|
|
300
|
+
}
|
|
301
|
+
|
|
302
|
+
:host([header-block-placement="Bottom"]) .ui5-banner-columns-equal:not(:has(.ui5-banner-block-start)) .ui5-banner-block-end,
|
|
303
|
+
:host([header-block-placement="Bottom"]) .ui5-banner-columns-first-wider:not(:has(.ui5-banner-block-start)) .ui5-banner-block-end {
|
|
304
|
+
grid-column: 2;
|
|
305
|
+
grid-row: 1;
|
|
306
|
+
align-self: stretch;
|
|
307
|
+
height: 100%;
|
|
308
|
+
}
|
|
309
|
+
|
|
310
|
+
/* With actions: endContent moves to row 2 so actions occupy row 1 */
|
|
311
|
+
:host([header-block-placement="Bottom"]) .ui5-banner-columns-equal:not(:has(.ui5-banner-block-start)):has(.ui5-banner-actions-grid-item) .ui5-banner-block-end,
|
|
312
|
+
:host([header-block-placement="Bottom"]) .ui5-banner-columns-first-wider:not(:has(.ui5-banner-block-start)):has(.ui5-banner-actions-grid-item) .ui5-banner-block-end {
|
|
313
|
+
grid-row: 2;
|
|
314
|
+
}
|
|
315
|
+
|
|
316
|
+
/* L → XS (≤1024px): Heading max 3 lines */
|
|
317
|
+
@container (max-width: 1024px) {
|
|
318
|
+
.ui5-banner-heading {
|
|
319
|
+
display: -webkit-box;
|
|
320
|
+
-webkit-line-clamp: 3;
|
|
321
|
+
line-clamp: 3;
|
|
322
|
+
-webkit-box-orient: vertical;
|
|
323
|
+
overflow: hidden;
|
|
324
|
+
text-overflow: ellipsis;
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
|
|
328
|
+
/* XS (≤599px): collapse split layouts to stacked column */
|
|
329
|
+
@container (max-width: 599px) {
|
|
330
|
+
.ui5-banner-content.ui5-banner-columns-equal,
|
|
331
|
+
.ui5-banner-content.ui5-banner-columns-first-wider {
|
|
332
|
+
display: flex;
|
|
333
|
+
flex-direction: column;
|
|
334
|
+
}
|
|
335
|
+
|
|
336
|
+
.ui5-banner-block-start {
|
|
337
|
+
order: 1;
|
|
338
|
+
}
|
|
339
|
+
|
|
340
|
+
.ui5-banner-block-end {
|
|
341
|
+
order: 2;
|
|
342
|
+
}
|
|
343
|
+
|
|
344
|
+
/* BottomStart no-columnsRatio grid collapses to column */
|
|
345
|
+
:host([actions-placement="BottomStart"]) .ui5-banner-content:has(.ui5-banner-block-end):not(:has(.ui5-banner-block-start)):not(.ui5-banner-columns-equal):not(.ui5-banner-columns-first-wider) {
|
|
346
|
+
display: flex;
|
|
347
|
+
flex-direction: column;
|
|
348
|
+
}
|
|
349
|
+
|
|
350
|
+
:host([actions-placement="BottomStart"]) .ui5-banner-content:has(.ui5-banner-block-end):not(:has(.ui5-banner-block-start)):not(.ui5-banner-columns-equal):not(.ui5-banner-columns-first-wider) .ui5-banner-block-end {
|
|
351
|
+
justify-content: center;
|
|
352
|
+
}
|
|
353
|
+
|
|
354
|
+
/* Only endContent present: expand to full width and center children */
|
|
355
|
+
.ui5-banner-content:not(:has(.ui5-banner-block-start)) .ui5-banner-block-end {
|
|
356
|
+
justify-content: center;
|
|
357
|
+
width: 100%;
|
|
358
|
+
}
|
|
359
|
+
}
|
|
@@ -87,6 +87,8 @@
|
|
|
87
87
|
--_ui5_select_label_color: var(--sapShell_TextColor);
|
|
88
88
|
/* Remove Select's default focus outline without affecting dropdown items */
|
|
89
89
|
--_ui5_input_focus_outline_color: transparent;
|
|
90
|
+
/* Suppress Select's bottom border gradient inside ShellBar search */
|
|
91
|
+
--_ui5_select_bottom_border_gradient: none;
|
|
90
92
|
}
|
|
91
93
|
|
|
92
94
|
[ui5-select]:hover:not(:active):not(:focus-within) {
|
|
@@ -261,8 +263,6 @@
|
|
|
261
263
|
}
|
|
262
264
|
.ui5-shell-search-field-icon::part(root) {
|
|
263
265
|
padding: var(--_ui5_search_icon_padding);
|
|
264
|
-
width: 1rem;
|
|
265
|
-
height: 1rem;
|
|
266
266
|
outline-offset: -0.125rem;
|
|
267
267
|
}
|
|
268
268
|
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
:host {
|
|
2
|
+
--_ui5_banner_background: var(--sapShell_HeroBanner_Background);
|
|
3
|
+
--_ui5_banner_text_color: var(--sapShell_HeroBanner_TextColor);
|
|
4
|
+
--_ui5_banner_border_radius: var(--sapTile_BorderCornerRadius);
|
|
5
|
+
--_ui5_banner_border: 0.0625rem solid var(--sapTile_BorderColor);
|
|
6
|
+
--_ui5_banner_box_shadow: var(--sapContent_Shadow0);
|
|
7
|
+
--_ui5_banner_background_image: var(--sapShell_HeroBanner_BackgroundImage);
|
|
8
|
+
}
|