@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.
- package/bundle.esm.js +2 -0
- package/cypress/specs/LinkList.cy.tsx +49 -0
- package/cypress/specs/LinkListItem.cy.tsx +102 -0
- package/cypress/support/component-imports.instrumented.ts +4 -0
- package/cypress/support/component-imports.src.ts +4 -0
- package/dist/LinkList.d.ts +58 -0
- package/dist/LinkList.js +89 -0
- package/dist/LinkList.js.map +1 -0
- package/dist/LinkListItem.d.ts +78 -0
- package/dist/LinkListItem.js +97 -0
- package/dist/LinkListItem.js.map +1 -0
- package/dist/LinkListItemTemplate.d.ts +2 -0
- package/dist/LinkListItemTemplate.js +17 -0
- package/dist/LinkListItemTemplate.js.map +1 -0
- package/dist/LinkListTemplate.d.ts +2 -0
- package/dist/LinkListTemplate.js +5 -0
- package/dist/LinkListTemplate.js.map +1 -0
- package/dist/MastheadMobileMenu.js +2 -0
- package/dist/MastheadMobileMenu.js.map +1 -1
- package/dist/Tile.d.ts +2 -2
- package/dist/Tile.js +3 -3
- package/dist/Tile.js.map +1 -1
- package/dist/TileTemplate.d.ts +2 -0
- package/dist/TileTemplate.js +7 -0
- package/dist/TileTemplate.js.map +1 -0
- package/dist/assets/{InputSuggestions-CSTFg-L1.js → InputSuggestions-CmCRxU5Z.js} +1 -1
- package/dist/assets/{ListItemStandardExpandableTextTemplate-Dn-5qRv_.js → ListItemStandardExpandableTextTemplate-i35T7dr8.js} +1 -1
- package/dist/assets/{bundle.esm-CGu-yFWp.js → bundle.esm-BIStxKRx.js} +245 -243
- package/dist/css/themes/LinkList.css +1 -0
- package/dist/css/themes/LinkListItem.css +1 -0
- package/dist/css/themes/ListGroupHeader.css +1 -1
- package/dist/css/themes/ListItem.css +1 -1
- package/dist/css/themes/RatingIndicator.css +1 -1
- package/dist/css/themes/Slider.css +1 -1
- package/dist/custom-elements-internal.json +305 -0
- package/dist/custom-elements.json +287 -0
- package/dist/generated/templates/MastheadMenuTemplate.lit.js +7 -5
- package/dist/generated/templates/MastheadMenuTemplate.lit.js.map +1 -1
- package/dist/generated/templates/MastheadMobileMenuTemplate.lit.js +10 -8
- package/dist/generated/templates/MastheadMobileMenuTemplate.lit.js.map +1 -1
- package/dist/generated/themes/LinkList.css.d.ts +2 -0
- package/dist/generated/themes/LinkList.css.js +8 -0
- package/dist/generated/themes/LinkList.css.js.map +1 -0
- package/dist/generated/themes/LinkListItem.css.d.ts +2 -0
- package/dist/generated/themes/LinkListItem.css.js +8 -0
- package/dist/generated/themes/LinkListItem.css.js.map +1 -0
- package/dist/generated/themes/ListGroupHeader.css.d.ts +1 -1
- package/dist/generated/themes/ListGroupHeader.css.js +1 -1
- package/dist/generated/themes/ListGroupHeader.css.js.map +1 -1
- package/dist/generated/themes/ListItem.css.d.ts +1 -1
- package/dist/generated/themes/ListItem.css.js +1 -1
- package/dist/generated/themes/ListItem.css.js.map +1 -1
- package/dist/generated/themes/RatingIndicator.css.d.ts +1 -1
- package/dist/generated/themes/RatingIndicator.css.js +1 -1
- package/dist/generated/themes/RatingIndicator.css.js.map +1 -1
- package/dist/generated/themes/Slider.css.d.ts +1 -1
- package/dist/generated/themes/Slider.css.js +1 -1
- package/dist/generated/themes/Slider.css.js.map +1 -1
- package/dist/utils/getEffectiveScrollbarStyle.d.ts +0 -2
- package/dist/utils/getEffectiveScrollbarStyle.js +2 -11
- package/dist/utils/getEffectiveScrollbarStyle.js.map +1 -1
- package/dist/vscode.html-custom-data.json +72 -0
- package/dist/web-types.json +141 -1
- package/package.json +1 -1
- package/src/LinkList.ts +93 -0
- package/src/LinkListItem.ts +126 -0
- package/src/LinkListItemTemplate.tsx +52 -0
- package/src/LinkListTemplate.tsx +13 -0
- package/src/MastheadMenu.hbs +26 -13
- package/src/MastheadMobileMenu.hbs +25 -10
- package/src/MastheadMobileMenu.ts +2 -0
- package/src/Tile.ts +5 -5
- package/src/TileTemplate.tsx +31 -0
- package/src/generated/templates/MastheadMenuTemplate.lit.ts +7 -5
- package/src/generated/templates/MastheadMobileMenuTemplate.lit.ts +10 -8
- package/src/generated/themes/LinkList.css.ts +9 -0
- package/src/generated/themes/LinkListItem.css.ts +9 -0
- package/src/generated/themes/ListGroupHeader.css.ts +1 -1
- package/src/generated/themes/ListItem.css.ts +1 -1
- package/src/generated/themes/RatingIndicator.css.ts +1 -1
- package/src/generated/themes/Slider.css.ts +1 -1
- package/src/themes/LinkList.css +53 -0
- package/src/themes/LinkListItem.css +84 -0
- package/src/themes/ListGroupHeader.css +1 -1
- package/src/themes/ListItem.css +2 -2
- package/src/utils/getEffectiveScrollbarStyle.ts +2 -14
- package/dist/generated/templates/TileTemplate.lit.d.ts +0 -3
- package/dist/generated/templates/TileTemplate.lit.js +0 -9
- package/dist/generated/templates/TileTemplate.lit.js.map +0 -1
- package/src/Tile.hbs +0 -21
- package/src/generated/templates/TileTemplate.lit.ts +0 -13
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": "@sapudex/web-components",
|
|
4
|
-
"version": "2.
|
|
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
package/src/LinkList.ts
ADDED
|
@@ -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
|
+
}
|
package/src/MastheadMenu.hbs
CHANGED
|
@@ -21,17 +21,29 @@
|
|
|
21
21
|
|
|
22
22
|
{{#*inline "header"}}
|
|
23
23
|
<div class="udex-masthead-menu__header">
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
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-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
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
|
|
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 "./
|
|
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:
|
|
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:
|
|
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:
|
|
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
|
+
}
|