@sapudex/web-components 2.7.1 → 2.8.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.
Files changed (91) hide show
  1. package/bundle.esm.js +2 -0
  2. package/cypress/specs/LinkList.cy.tsx +49 -0
  3. package/cypress/specs/LinkListItem.cy.tsx +102 -0
  4. package/cypress/support/component-imports.instrumented.ts +4 -0
  5. package/cypress/support/component-imports.src.ts +4 -0
  6. package/dist/LinkList.d.ts +58 -0
  7. package/dist/LinkList.js +89 -0
  8. package/dist/LinkList.js.map +1 -0
  9. package/dist/LinkListItem.d.ts +78 -0
  10. package/dist/LinkListItem.js +97 -0
  11. package/dist/LinkListItem.js.map +1 -0
  12. package/dist/LinkListItemTemplate.d.ts +2 -0
  13. package/dist/LinkListItemTemplate.js +17 -0
  14. package/dist/LinkListItemTemplate.js.map +1 -0
  15. package/dist/LinkListTemplate.d.ts +2 -0
  16. package/dist/LinkListTemplate.js +5 -0
  17. package/dist/LinkListTemplate.js.map +1 -0
  18. package/dist/MastheadMobileMenu.js +2 -0
  19. package/dist/MastheadMobileMenu.js.map +1 -1
  20. package/dist/Tile.d.ts +2 -2
  21. package/dist/Tile.js +3 -3
  22. package/dist/Tile.js.map +1 -1
  23. package/dist/TileTemplate.d.ts +2 -0
  24. package/dist/TileTemplate.js +7 -0
  25. package/dist/TileTemplate.js.map +1 -0
  26. package/dist/assets/{InputSuggestions-CSTFg-L1.js → InputSuggestions-CmCRxU5Z.js} +1 -1
  27. package/dist/assets/{ListItemStandardExpandableTextTemplate-Dn-5qRv_.js → ListItemStandardExpandableTextTemplate-i35T7dr8.js} +1 -1
  28. package/dist/assets/{bundle.esm-CGu-yFWp.js → bundle.esm-BIStxKRx.js} +245 -243
  29. package/dist/css/themes/LinkList.css +1 -0
  30. package/dist/css/themes/LinkListItem.css +1 -0
  31. package/dist/css/themes/ListGroupHeader.css +1 -1
  32. package/dist/css/themes/ListItem.css +1 -1
  33. package/dist/css/themes/RatingIndicator.css +1 -1
  34. package/dist/css/themes/Slider.css +1 -1
  35. package/dist/custom-elements-internal.json +305 -0
  36. package/dist/custom-elements.json +287 -0
  37. package/dist/generated/templates/MastheadMenuTemplate.lit.js +7 -5
  38. package/dist/generated/templates/MastheadMenuTemplate.lit.js.map +1 -1
  39. package/dist/generated/templates/MastheadMobileMenuTemplate.lit.js +10 -8
  40. package/dist/generated/templates/MastheadMobileMenuTemplate.lit.js.map +1 -1
  41. package/dist/generated/themes/LinkList.css.d.ts +2 -0
  42. package/dist/generated/themes/LinkList.css.js +8 -0
  43. package/dist/generated/themes/LinkList.css.js.map +1 -0
  44. package/dist/generated/themes/LinkListItem.css.d.ts +2 -0
  45. package/dist/generated/themes/LinkListItem.css.js +8 -0
  46. package/dist/generated/themes/LinkListItem.css.js.map +1 -0
  47. package/dist/generated/themes/ListGroupHeader.css.d.ts +1 -1
  48. package/dist/generated/themes/ListGroupHeader.css.js +1 -1
  49. package/dist/generated/themes/ListGroupHeader.css.js.map +1 -1
  50. package/dist/generated/themes/ListItem.css.d.ts +1 -1
  51. package/dist/generated/themes/ListItem.css.js +1 -1
  52. package/dist/generated/themes/ListItem.css.js.map +1 -1
  53. package/dist/generated/themes/RatingIndicator.css.d.ts +1 -1
  54. package/dist/generated/themes/RatingIndicator.css.js +1 -1
  55. package/dist/generated/themes/RatingIndicator.css.js.map +1 -1
  56. package/dist/generated/themes/Slider.css.d.ts +1 -1
  57. package/dist/generated/themes/Slider.css.js +1 -1
  58. package/dist/generated/themes/Slider.css.js.map +1 -1
  59. package/dist/utils/getEffectiveScrollbarStyle.d.ts +0 -2
  60. package/dist/utils/getEffectiveScrollbarStyle.js +2 -11
  61. package/dist/utils/getEffectiveScrollbarStyle.js.map +1 -1
  62. package/dist/vscode.html-custom-data.json +72 -0
  63. package/dist/web-types.json +141 -1
  64. package/package.json +1 -1
  65. package/src/LinkList.ts +93 -0
  66. package/src/LinkListItem.ts +126 -0
  67. package/src/LinkListItemTemplate.tsx +52 -0
  68. package/src/LinkListTemplate.tsx +13 -0
  69. package/src/MastheadMenu.hbs +26 -13
  70. package/src/MastheadMobileMenu.hbs +25 -10
  71. package/src/MastheadMobileMenu.ts +2 -0
  72. package/src/Tile.ts +5 -5
  73. package/src/TileTemplate.tsx +31 -0
  74. package/src/generated/templates/MastheadMenuTemplate.lit.ts +7 -5
  75. package/src/generated/templates/MastheadMobileMenuTemplate.lit.ts +10 -8
  76. package/src/generated/themes/LinkList.css.ts +9 -0
  77. package/src/generated/themes/LinkListItem.css.ts +9 -0
  78. package/src/generated/themes/ListGroupHeader.css.ts +1 -1
  79. package/src/generated/themes/ListItem.css.ts +1 -1
  80. package/src/generated/themes/RatingIndicator.css.ts +1 -1
  81. package/src/generated/themes/Slider.css.ts +1 -1
  82. package/src/themes/LinkList.css +53 -0
  83. package/src/themes/LinkListItem.css +84 -0
  84. package/src/themes/ListGroupHeader.css +1 -1
  85. package/src/themes/ListItem.css +2 -2
  86. package/src/utils/getEffectiveScrollbarStyle.ts +2 -14
  87. package/dist/generated/templates/TileTemplate.lit.d.ts +0 -3
  88. package/dist/generated/templates/TileTemplate.lit.js +0 -9
  89. package/dist/generated/templates/TileTemplate.lit.js.map +0 -1
  90. package/src/Tile.hbs +0 -21
  91. package/src/generated/templates/TileTemplate.lit.ts +0 -13
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://raw.githubusercontent.com/JetBrains/web-types/master/schema/web-types.json",
3
3
  "name": "@sapudex/web-components",
4
- "version": "2.7.1",
4
+ "version": "2.8.0",
5
5
  "description-markup": "markdown",
6
6
  "contributions": {
7
7
  "html": {
@@ -2652,6 +2652,146 @@
2652
2652
  "events": [],
2653
2653
  "js": { "properties": [], "events": [] }
2654
2654
  },
2655
+ {
2656
+ "name": "udex-link-list",
2657
+ "description": "<h3 class=\"comment-api-title\">Overview</h3>\n\n\n<h3>Usage</h3>\n\nFor the <code>udex-link-list</code>\n<h3>ES6 Module Import</h3>\n\n<code>import \"@sapudex/web-components/dist/LinkList.js\";</code>\n---\n\n\n### **Slots:**\n - **default** - Slot for list items.",
2658
+ "doc-url": "",
2659
+ "attributes": [
2660
+ {
2661
+ "name": "accessible-name",
2662
+ "description": "Defines the accessible ARIA name of the component.",
2663
+ "value": { "type": "string | undefined", "default": "undefined" }
2664
+ },
2665
+ {
2666
+ "name": "accessible-role",
2667
+ "description": "Defines the role of the item.",
2668
+ "value": { "type": "string", "default": "\"list\"" }
2669
+ },
2670
+ {
2671
+ "name": "type",
2672
+ "description": "Defines the type of the item.",
2673
+ "value": {
2674
+ "type": "\"Link\" | \"TileS\" | \"TileL\"",
2675
+ "default": "\"link-based\""
2676
+ }
2677
+ }
2678
+ ],
2679
+ "slots": [
2680
+ { "name": "default", "description": "Slot for list items." }
2681
+ ],
2682
+ "events": [],
2683
+ "js": {
2684
+ "properties": [
2685
+ {
2686
+ "name": "accessible-name",
2687
+ "description": "Defines the accessible ARIA name of the component.",
2688
+ "value": { "type": "string | undefined" }
2689
+ },
2690
+ {
2691
+ "name": "accessible-role",
2692
+ "description": "Defines the role of the item.",
2693
+ "value": { "type": "string" }
2694
+ },
2695
+ {
2696
+ "name": "type",
2697
+ "description": "Defines the type of the item.",
2698
+ "value": { "type": "\"Link\" | \"TileS\" | \"TileL\"" }
2699
+ }
2700
+ ],
2701
+ "events": []
2702
+ }
2703
+ },
2704
+ {
2705
+ "name": "udex-link-list-item",
2706
+ "description": "<h3 class=\"comment-api-title\">Overview</h3>\n\n\n<h3>Usage</h3>\n\nFor the <code>udex-link-list-item</code>\n<h3>ES6 Module Import</h3>\n\n<code>import \"@sapudex/web-components/dist/LinkListItem.js\";</code>\n---\n\n\n### **Events:**\n - **item-click** - Triggered when the user clicks on an item.",
2707
+ "doc-url": "",
2708
+ "attributes": [
2709
+ {
2710
+ "name": "href",
2711
+ "description": "Defines the href for the item.",
2712
+ "value": { "type": "string | undefined", "default": "undefined" }
2713
+ },
2714
+ {
2715
+ "name": "target",
2716
+ "description": "Defines target for the item",
2717
+ "value": {
2718
+ "type": "\"_blank\" | \"_parent\" | \"_self\" | \"_top\"",
2719
+ "default": "\"_self\""
2720
+ }
2721
+ },
2722
+ {
2723
+ "name": "icon",
2724
+ "description": "Defines the icon, displayed as graphical element within the component before the item's label.",
2725
+ "value": { "type": "string | undefined", "default": "undefined" }
2726
+ },
2727
+ {
2728
+ "name": "type",
2729
+ "description": "Defines the type of the item.",
2730
+ "value": {
2731
+ "type": "\"Link\" | \"TileS\" | \"TileL\"",
2732
+ "default": "\"link\""
2733
+ }
2734
+ },
2735
+ {
2736
+ "name": "accessible-name",
2737
+ "description": "Defines the accessible aria-label of the component.",
2738
+ "value": { "type": "string | undefined", "default": "undefined" }
2739
+ },
2740
+ {
2741
+ "name": "label",
2742
+ "description": "Defines the label of the item.",
2743
+ "value": { "type": "string | undefined", "default": "undefined" }
2744
+ }
2745
+ ],
2746
+ "events": [
2747
+ {
2748
+ "name": "item-click",
2749
+ "description": "Triggered when the user clicks on an item."
2750
+ }
2751
+ ],
2752
+ "js": {
2753
+ "properties": [
2754
+ {
2755
+ "name": "href",
2756
+ "description": "Defines the href for the item.",
2757
+ "value": { "type": "string | undefined" }
2758
+ },
2759
+ {
2760
+ "name": "target",
2761
+ "description": "Defines target for the item",
2762
+ "value": {
2763
+ "type": "\"_blank\" | \"_parent\" | \"_self\" | \"_top\""
2764
+ }
2765
+ },
2766
+ {
2767
+ "name": "icon",
2768
+ "description": "Defines the icon, displayed as graphical element within the component before the item's label.",
2769
+ "value": { "type": "string | undefined" }
2770
+ },
2771
+ {
2772
+ "name": "type",
2773
+ "description": "Defines the type of the item.",
2774
+ "value": { "type": "\"Link\" | \"TileS\" | \"TileL\"" }
2775
+ },
2776
+ {
2777
+ "name": "accessible-name",
2778
+ "description": "Defines the accessible aria-label of the component.",
2779
+ "value": { "type": "string | undefined" }
2780
+ },
2781
+ {
2782
+ "name": "label",
2783
+ "description": "Defines the label of the item.",
2784
+ "value": { "type": "string | undefined" }
2785
+ }
2786
+ ],
2787
+ "events": [
2788
+ {
2789
+ "name": "item-click",
2790
+ "description": "Triggered when the user clicks on an item."
2791
+ }
2792
+ ]
2793
+ }
2794
+ },
2655
2795
  {
2656
2796
  "name": "udex-list",
2657
2797
  "description": "<h3 class=\"comment-api-title\">Overview</h3>\n\n\n<h3>Usage</h3>\n\nFor the <code>udex-list</code>\n<h3>ES6 Module Import</h3>\n\n<code>import \"@sapudex/web-components/dist/List.js\";</code>\n---\n\n\n### **Slots:**\n - **default** - Slot for list items.",
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "type": "module",
3
3
  "name": "@sapudex/web-components",
4
- "version": "2.7.1",
4
+ "version": "2.8.0",
5
5
  "publishConfig": {
6
6
  "registry": "https://registry.npmjs.org/"
7
7
  },
@@ -0,0 +1,93 @@
1
+ import UI5Element from "@ui5/webcomponents-base/dist/UI5Element.js";
2
+ import customElement from "@ui5/webcomponents-base/dist/decorators/customElement.js";
3
+ import property from "@ui5/webcomponents-base/dist/decorators/property.js";
4
+ import slot from "@ui5/webcomponents-base/dist/decorators/slot.js";
5
+ import jsxRenderer from "@ui5/webcomponents-base/dist/renderer/JsxRenderer.js";
6
+ import type UDExLinkListItem from "./LinkListItem.js";
7
+ import LinkListTemplate from "./LinkListTemplate.js";
8
+
9
+ // Styles
10
+ import LinkListCss from "./generated/themes/LinkList.css.js";
11
+
12
+ export enum UDExLinkListType {
13
+ Link = "Link",
14
+ TileS = "TileS",
15
+ TileL = "TileL",
16
+ }
17
+ /**
18
+ * @class
19
+ *
20
+ * <h3 class="comment-api-title">Overview</h3>
21
+ *
22
+ *
23
+ * <h3>Usage</h3>
24
+ *
25
+ * For the <code>udex-link-list</code>
26
+ * <h3>ES6 Module Import</h3>
27
+ *
28
+ * <code>import "@sapudex/web-components/dist/LinkList.js";</code>
29
+ *
30
+ * @constructor
31
+ * @extends UI5Element
32
+ * @tagname udex-link-list
33
+ * @public
34
+ */
35
+ @customElement({
36
+ tag: "udex-link-list",
37
+ renderer: jsxRenderer,
38
+ styles: LinkListCss,
39
+ template: LinkListTemplate,
40
+ })
41
+
42
+ class UDExLinkList extends UI5Element {
43
+ /**
44
+ * Defines the accessible ARIA name of the component.
45
+ *
46
+ * @default undefined
47
+ * @public
48
+ */
49
+ @property()
50
+ accessibleName?: string;
51
+
52
+ /**
53
+ * Defines the role of the item.
54
+ * @public
55
+ * @default "list"
56
+ *
57
+ */
58
+ @property()
59
+ accessibleRole = "list";
60
+
61
+ /**
62
+ * Slot for list items.
63
+ *
64
+ * @slot items
65
+ * @public
66
+ */
67
+ @slot({ type: HTMLElement, "default": true })
68
+ items!: Array<UDExLinkListItem>;
69
+
70
+ /**
71
+ * Defines the type of the item.
72
+ *
73
+ * @default "link-based"
74
+ * @public
75
+ */
76
+ @property()
77
+ type: `${UDExLinkListType}` = UDExLinkListType.Link;
78
+
79
+ onBeforeRendering(): void {
80
+ this.prepareListItems();
81
+ }
82
+
83
+ prepareListItems(): void {
84
+ this.items.forEach(item => {
85
+ item.type = this.type;
86
+ item._accessibleRole = "listitem";
87
+ });
88
+ }
89
+ }
90
+
91
+ UDExLinkList.define();
92
+
93
+ export default UDExLinkList;
@@ -0,0 +1,126 @@
1
+ import UI5Element from "@ui5/webcomponents-base/dist/UI5Element.js";
2
+ import customElement from "@ui5/webcomponents-base/dist/decorators/customElement.js";
3
+ import property from "@ui5/webcomponents-base/dist/decorators/property.js";
4
+ import event from "@ui5/webcomponents-base/dist/decorators/event-strict.js";
5
+ import jsxRenderer from "@ui5/webcomponents-base/dist/renderer/JsxRenderer.js";
6
+ import { UDExLinkListType } from "./LinkList.js";
7
+ import LinkListItemTemplate from "./LinkListItemTemplate.js";
8
+ import { UDExTarget } from "./types/common.js";
9
+
10
+ // Styles
11
+ import LinkListItemCss from "./generated/themes/LinkListItem.css.js";
12
+
13
+ type UDExListLinkItemClickEventDetail = {
14
+ originalEvent: Event,
15
+ }
16
+
17
+ /**
18
+ * @class
19
+ *
20
+ * <h3 class="comment-api-title">Overview</h3>
21
+ *
22
+ *
23
+ * <h3>Usage</h3>
24
+ *
25
+ * For the <code>udex-link-list-item</code>
26
+ * <h3>ES6 Module Import</h3>
27
+ *
28
+ * <code>import "@sapudex/web-components/dist/LinkListItem.js";</code>
29
+ *
30
+ * @constructor
31
+ * @extends UI5Element
32
+ * @tagname udex-link-list-item
33
+ * @public
34
+ */
35
+ @customElement({
36
+ tag: "udex-link-list-item",
37
+ renderer: jsxRenderer,
38
+ styles: LinkListItemCss,
39
+ template: LinkListItemTemplate,
40
+ })
41
+
42
+ /**
43
+ * Triggered when the user clicks on an item.
44
+ * @public
45
+ */
46
+ @event("item-click", { bubbles: true })
47
+
48
+ class UDExLinkListItem extends UI5Element {
49
+ eventDetails!: {
50
+ "item-click": UDExListLinkItemClickEventDetail,
51
+ };
52
+
53
+ /**
54
+ * Defines the href for the item.
55
+ * @default undefined
56
+ * @public
57
+ */
58
+ @property()
59
+ href?: string;
60
+
61
+ /**
62
+ * Defines target for the item
63
+ * @default "_self"
64
+ * @public
65
+ */
66
+ @property()
67
+ target: `${UDExTarget}` = UDExTarget._self;
68
+
69
+ /**
70
+ * Defines the icon, displayed as graphical element within the component before the item's label.
71
+ *
72
+ * @default undefined
73
+ * @public
74
+ */
75
+ @property()
76
+ icon?: string;
77
+
78
+ /**
79
+ * Defines the type of the item.
80
+ * @default "link"
81
+ * @public
82
+ */
83
+ @property()
84
+ type: `${UDExLinkListType}` = UDExLinkListType.Link;
85
+
86
+ /**
87
+ * Defines the accessible aria-label of the component.
88
+ *
89
+ * @default undefined
90
+ * @public
91
+ */
92
+ @property()
93
+ accessibleName?: string;
94
+
95
+ /**
96
+ * Defines the role of the item.
97
+ * @private
98
+ * @default "listitem"
99
+ *
100
+ */
101
+ @property()
102
+ _accessibleRole?: string;
103
+
104
+ /**
105
+ * Defines the label of the item.
106
+ *
107
+ * @default undefined
108
+ * @public
109
+ */
110
+ @property()
111
+ label?: string;
112
+
113
+ fireItemClickEvent(e: CustomEvent): void {
114
+ this.fireDecoratorEvent("item-click", {
115
+ originalEvent: this.isLink ? e : e.detail.originalEvent,
116
+ });
117
+ }
118
+
119
+ get isLink(): boolean {
120
+ return this.type === UDExLinkListType.Link;
121
+ }
122
+ }
123
+
124
+ UDExLinkListItem.define();
125
+
126
+ export default UDExLinkListItem;
@@ -0,0 +1,52 @@
1
+ import type LinkListItem from "./LinkListItem.js";
2
+ import { UDExLinkListType } from "./LinkList.js";
3
+ import UDExDivider from "./Divider.js";
4
+ import UDExLink from "./Link.js";
5
+ import UDExTile from "./Tile.js";
6
+ import UI5Icon from "@ui5/webcomponents/dist/Icon.js";
7
+ import slimArrowRight from "@ui5/webcomponents-icons/dist/slim-arrow-right.js";
8
+ import type { AriaRole } from "@ui5/webcomponents-base/dist/types.js";
9
+
10
+ export default function LinkListItemTemplate(this: LinkListItem) {
11
+ const isTileL = this.type === UDExLinkListType.TileL;
12
+ const rootClass = "udex-link-list-item";
13
+ const tileClass = isTileL ? `${rootClass}__tile-l` : `${rootClass}__tile-s`;
14
+ const iconClass = isTileL ? `${rootClass}__tile-icon-l` : `${rootClass}__tile-icon-s`;
15
+ const holderClass = isTileL ? `${rootClass}__tile-holder-l` : `${rootClass}__tile-holder-s`;
16
+ const textClass = isTileL ? `${rootClass}__tile-text-l` : `${rootClass}__tile-text-s`;
17
+
18
+ return (
19
+ <div
20
+ className={rootClass}
21
+ role={this._accessibleRole as AriaRole}>
22
+ {this.isLink && (
23
+ <>
24
+ <UDExLink
25
+ class={`${rootClass}__link`}
26
+ endIcon={slimArrowRight}
27
+ accessibleName={this.accessibleName}
28
+ href={this.href}
29
+ target={this.target}
30
+ onClick={this.fireItemClickEvent}>
31
+ {this.label}
32
+ </UDExLink>
33
+ <UDExDivider class={`${rootClass}__divider`}></UDExDivider>
34
+ </>
35
+ )}
36
+ {!this.isLink && (
37
+ <UDExTile
38
+ class={tileClass}
39
+ href={this.href}
40
+ target={this.target}
41
+ accessibleName={this.accessibleName}
42
+ onui5-click={this.fireItemClickEvent}
43
+ interactive>
44
+ <div class={holderClass}>
45
+ {this.icon && <UI5Icon class={iconClass} name={this.icon}></UI5Icon>}
46
+ <span class={textClass}>{this.label}</span>
47
+ </div>
48
+ </UDExTile>
49
+ )}
50
+ </div>
51
+ );
52
+ }
@@ -0,0 +1,13 @@
1
+ import type LinkList from "./LinkList.js";
2
+ import type { AriaRole } from "@ui5/webcomponents-base/dist/types.js";
3
+
4
+ export default function LinkListTemplate(this: LinkList) {
5
+ return (
6
+ <div
7
+ className="udex-link-list"
8
+ role={this.accessibleRole as AriaRole}
9
+ aria-label={this.accessibleName}>
10
+ <slot></slot>
11
+ </div>
12
+ );
13
+ }
@@ -21,17 +21,29 @@
21
21
 
22
22
  {{#*inline "header"}}
23
23
  <div class="udex-masthead-menu__header">
24
- <udex-masthead-menu-item
25
- part="menu-item"
26
- exportparts="menu-item"
27
- id="category-{{categoryId}}"
28
- @click="{{../../handleMenuItemClick}}"
29
- url="{{this.url}}"
30
- label="{{this.category}}"
31
- ?icon-end="{{this.url}}"
32
- type="Heading"
33
- has-border>
34
- </udex-masthead-menu-item>
24
+ {{#if this.url}}
25
+ <udex-masthead-menu-item
26
+ id="category-{{categoryId}}"
27
+ type="Heading"
28
+ part="menu-item"
29
+ exportparts="menu-item"
30
+ accessible-role="link"
31
+ @click="{{../../handleMenuItemClick}}"
32
+ url="{{this.url}}"
33
+ label="{{this.category}}"
34
+ icon-end
35
+ has-border>
36
+ </udex-masthead-menu-item>
37
+ {{else}}
38
+ <udex-masthead-menu-item
39
+ id="category-{{categoryId}}"
40
+ type="Heading"
41
+ part="menu-item"
42
+ exportparts="menu-item"
43
+ label="{{this.category}}"
44
+ has-border>
45
+ </udex-masthead-menu-item>
46
+ {{/if}}
35
47
  </div>
36
48
  {{/inline}}
37
49
 
@@ -47,13 +59,14 @@
47
59
  {{else}}
48
60
  <udex-masthead-menu-item
49
61
  part="menu-item"
62
+ accessible-role="link"
50
63
  exportparts="menu-item"
64
+ exportparts="badge"
51
65
  @click="{{../../../handleMenuItemClick}}"
52
66
  badge="{{this.badge}}"
53
67
  ?external-link="{{this.externalLink}}"
54
68
  url="{{this.url}}"
55
- label="{{this.title}}"
56
- exportparts="badge">
69
+ label="{{this.title}}">
57
70
  </udex-masthead-menu-item>
58
71
  {{/if}}
59
72
  </li>
@@ -133,7 +133,7 @@
133
133
  </li>
134
134
  {{/if}}
135
135
  {{#each _categories}}
136
- {{#if this.items}}
136
+ {{#if this.items.length}}
137
137
  {{#if this.category}}
138
138
  <li class="udex-masthead-mobile-menu__list-item" role="none">
139
139
  <udex-masthead-menu-item
@@ -164,15 +164,30 @@
164
164
  {{/each}}
165
165
  {{/if}}
166
166
  {{else}}
167
- <udex-masthead-menu-item
168
- id="{{@index}}"
169
- @click="{{../handleMobileItemEvent}}"
170
- label="{{this.category}}"
171
- part="menu-item"
172
- type="Button"
173
- second-level
174
- has-border>
175
- </udex-masthead-menu-item>
167
+ <li class="udex-masthead-mobile-menu__list-item" role="none">
168
+ {{#if this.url}}
169
+ <udex-masthead-menu-item
170
+ id="{{@index}}"
171
+ @click="{{../handleMobileItemEvent}}"
172
+ label="{{this.category}}"
173
+ url="{{this.url}}"
174
+ part="menu-item"
175
+ type="Link"
176
+ second-level
177
+ has-border>
178
+ </udex-masthead-menu-item>
179
+ {{else}}
180
+ <udex-masthead-menu-item
181
+ id="{{@index}}"
182
+ @click="{{../handleMobileItemEvent}}"
183
+ label="{{this.category}}"
184
+ part="menu-item"
185
+ type="Button"
186
+ second-level
187
+ has-border>
188
+ </udex-masthead-menu-item>
189
+ {{/if}}
190
+ </li>
176
191
  {{/if}}
177
192
  {{/each}}
178
193
  {{/inline}}
@@ -203,6 +203,7 @@ class UDExMastheadMobileMenu extends UI5Element {
203
203
 
204
204
  handleRightArrow(e: KeyboardEvent) {
205
205
  if (isRight(e)) {
206
+ e.preventDefault();
206
207
  this.handleDirection();
207
208
  if (this.isRtlDirection) {
208
209
  this.moveToBackWithKeyboard(e);
@@ -214,6 +215,7 @@ class UDExMastheadMobileMenu extends UI5Element {
214
215
 
215
216
  handleLeftArrow(e: KeyboardEvent) {
216
217
  if (isLeft(e)) {
218
+ e.preventDefault();
217
219
  this.handleDirection();
218
220
  if (this.isRtlDirection) {
219
221
  this.moveToNextLevelWithKeyboard(e);
package/src/Tile.ts CHANGED
@@ -2,12 +2,12 @@ import UI5Element from "@ui5/webcomponents-base/dist/UI5Element.js";
2
2
  import customElement from "@ui5/webcomponents-base/dist/decorators/customElement.js";
3
3
  import property from "@ui5/webcomponents-base/dist/decorators/property.js";
4
4
  import slot from "@ui5/webcomponents-base/dist/decorators/slot.js";
5
- import litRender from "@ui5/webcomponents-base/dist/renderer/LitRenderer.js";
5
+ import jsxRenderer from "@ui5/webcomponents-base/renderer/JsxRenderer.js";
6
6
  import { isSpace } from "@ui5/webcomponents-base/dist/Keys.js";
7
7
  import event from "@ui5/webcomponents-base/dist/decorators/event-strict.js";
8
8
  import { isDesktop } from "@ui5/webcomponents-base/dist/Device.js";
9
9
 
10
- import TileTemplate from "./generated/templates/TileTemplate.lit.js";
10
+ import TileTemplate from "./TileTemplate.js";
11
11
 
12
12
  // Styles
13
13
  import TileCss from "./generated/themes/Tile.css.js";
@@ -15,7 +15,7 @@ import TileCss from "./generated/themes/Tile.css.js";
15
15
  type AnchorNode = HTMLAnchorElement | undefined | null;
16
16
 
17
17
  type UDExTileClickEventDetail = {
18
- originalEvent: PointerEvent,
18
+ originalEvent: MouseEvent,
19
19
  }
20
20
  /**
21
21
  * @class
@@ -27,7 +27,7 @@ type UDExTileClickEventDetail = {
27
27
  */
28
28
  @customElement({
29
29
  tag: "udex-tile",
30
- renderer: litRender,
30
+ renderer: jsxRenderer,
31
31
  styles: TileCss,
32
32
  template: TileTemplate,
33
33
  })
@@ -128,7 +128,7 @@ class UDExTile extends UI5Element {
128
128
  }
129
129
  }
130
130
 
131
- _onclick(e: PointerEvent) {
131
+ _onclick(e: MouseEvent) {
132
132
  e.stopImmediatePropagation();
133
133
 
134
134
  if (this.interactive) {
@@ -0,0 +1,31 @@
1
+ import type Tile from "./Tile.js";
2
+
3
+ export default function TileTemplate(this: Tile) {
4
+ const rootClass = "udex-tile";
5
+ const part = "tile";
6
+ return (
7
+ this.interactive ? (
8
+ <>
9
+ <span className="hidden" id="tileDescription">{this.accessibleName}</span>
10
+ <a
11
+ className={rootClass}
12
+ part={part}
13
+ href={this.href}
14
+ target={this.target}
15
+ role="link"
16
+ aria-describedby="tileDescription"
17
+ onKeyDown={this._onkeydown}
18
+ onClick={this._onclick}>
19
+ <slot></slot>
20
+ </a>
21
+ </>
22
+ ) : (
23
+ <div
24
+ className={rootClass}
25
+ part={part}
26
+ onClick={this._onclick}>
27
+ <slot></slot>
28
+ </div>
29
+ )
30
+ );
31
+ }