@sapudex/web-components 2.26.0 → 2.28.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/config/dev-server.mjs +8 -0
- package/cypress/specs/RatingIndicator.cy.tsx +6 -5
- package/cypress/specs/TabNavigation.cy.tsx +1024 -0
- package/cypress/support/component-imports.src.ts +4 -0
- package/dist/RatingIndicator.d.ts +7 -0
- package/dist/RatingIndicator.js +10 -5
- package/dist/RatingIndicator.js.map +1 -1
- package/dist/RatingIndicatorTemplate.js +16 -4
- package/dist/RatingIndicatorTemplate.js.map +1 -1
- package/dist/Review.js +1 -1
- package/dist/Review.js.map +1 -1
- package/dist/SelectBase.d.ts +2 -0
- package/dist/SelectBase.js +6 -1
- package/dist/SelectBase.js.map +1 -1
- package/dist/Tab.d.ts +57 -0
- package/dist/Tab.js +67 -0
- package/dist/Tab.js.map +1 -1
- package/dist/TabNavigation.d.ts +25 -3
- package/dist/TabNavigation.js +96 -18
- package/dist/TabNavigation.js.map +1 -1
- package/dist/assets/{InputSuggestions-CG5owMFQ.js → InputSuggestions-DTdaDbps.js} +1 -1
- package/dist/assets/{ListItemStandardExpandableTextTemplate-DpVr7qdn.js → ListItemStandardExpandableTextTemplate-DoV7tVwi.js} +1 -1
- package/dist/assets/{bundle.esm-CTkLMr6f.js → bundle.esm-BUg2IPOZ.js} +218 -218
- package/dist/assets/messagebundle_en-DfoXjU7o.js +1 -0
- package/dist/css/themes/Checkbox.css +1 -1
- package/dist/css/themes/RatingIndicator.css +1 -1
- package/dist/css/themes/Review.css +1 -1
- package/dist/css/themes/ReviewItem.css +1 -1
- package/dist/css/themes/Slider.css +1 -1
- package/dist/css/themes/TabNavigation.css +1 -1
- package/dist/custom-elements-internal.json +68 -0
- package/dist/custom-elements.json +64 -0
- package/dist/generated/assets/i18n/messagebundle_en.json +1 -1
- package/dist/generated/i18n/i18n-defaults.d.ts +2 -1
- package/dist/generated/i18n/i18n-defaults.js +2 -1
- package/dist/generated/i18n/i18n-defaults.js.map +1 -1
- package/dist/generated/templates/TabHeaderTemplate.lit.js +30 -11
- package/dist/generated/templates/TabHeaderTemplate.lit.js.map +1 -1
- package/dist/generated/templates/TabNavigationTemplate.lit.js +8 -6
- package/dist/generated/templates/TabNavigationTemplate.lit.js.map +1 -1
- package/dist/generated/themes/Checkbox.css.d.ts +1 -1
- package/dist/generated/themes/Checkbox.css.js +1 -1
- package/dist/generated/themes/Checkbox.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/Review.css.d.ts +1 -1
- package/dist/generated/themes/Review.css.js +1 -1
- package/dist/generated/themes/Review.css.js.map +1 -1
- package/dist/generated/themes/ReviewItem.css.d.ts +1 -1
- package/dist/generated/themes/ReviewItem.css.js +1 -1
- package/dist/generated/themes/ReviewItem.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/generated/themes/TabNavigation.css.d.ts +1 -1
- package/dist/generated/themes/TabNavigation.css.js +1 -1
- package/dist/generated/themes/TabNavigation.css.js.map +1 -1
- package/dist/messagebundle.properties +1 -0
- package/dist/messagebundle_en.properties +1 -0
- package/dist/vscode.html-custom-data.json +16 -1
- package/dist/web-types.json +39 -2
- package/package.json +1 -1
- package/src/RatingIndicator.ts +18 -6
- package/src/RatingIndicatorTemplate.tsx +37 -9
- package/src/Review.ts +1 -1
- package/src/SelectBase.ts +8 -1
- package/src/Tab.ts +98 -0
- package/src/TabHeader.hbs +85 -33
- package/src/TabNavigation.hbs +16 -0
- package/src/TabNavigation.ts +109 -21
- package/src/generated/i18n/i18n-defaults.ts +2 -2
- package/src/generated/templates/TabHeaderTemplate.lit.ts +29 -10
- package/src/generated/templates/TabNavigationTemplate.lit.ts +8 -6
- package/src/generated/themes/Checkbox.css.ts +1 -1
- package/src/generated/themes/RatingIndicator.css.ts +1 -1
- package/src/generated/themes/Review.css.ts +1 -1
- package/src/generated/themes/ReviewItem.css.ts +1 -1
- package/src/generated/themes/Slider.css.ts +1 -1
- package/src/generated/themes/TabNavigation.css.ts +1 -1
- package/src/i18n/messagebundle.properties +1 -0
- package/src/i18n/messagebundle_en.properties +1 -0
- package/src/themes/Checkbox.css +9 -4
- package/src/themes/RatingIndicator.css +24 -9
- package/src/themes/Review.css +24 -31
- package/src/themes/ReviewItem.css +10 -11
- package/src/themes/TabNavigation.css +203 -1
- package/dist/assets/messagebundle_en-mjqY85LY.js +0 -1
|
@@ -52,6 +52,8 @@ import UDExSocialMediaButton from "../../src/SocialMediaButton.js";
|
|
|
52
52
|
import UDExStatusBadge from "../../src/StatusBadge.js";
|
|
53
53
|
import UDExStatusMessage from "../../src/StatusMessage.js";
|
|
54
54
|
import UDExSwitch from "../../src/Switch.js";
|
|
55
|
+
import UDExTab from "../../src/Tab.js";
|
|
56
|
+
import UDExTabNavigation from "../../src/TabNavigation.js";
|
|
55
57
|
import UDExTable from "../../src/Table.js";
|
|
56
58
|
import UDExTableCell from "../../src/TableCell.js";
|
|
57
59
|
import UDExTableGroupRow from "../../src/TableGroupRow.js";
|
|
@@ -125,6 +127,8 @@ export {
|
|
|
125
127
|
UDExStatusBadge,
|
|
126
128
|
UDExStatusMessage,
|
|
127
129
|
UDExSwitch,
|
|
130
|
+
UDExTab,
|
|
131
|
+
UDExTabNavigation,
|
|
128
132
|
UDExTable,
|
|
129
133
|
UDExTableCell,
|
|
130
134
|
UDExTableGroupRow,
|
|
@@ -32,8 +32,15 @@ declare class UDExRatingIndicator extends RatingIndicator {
|
|
|
32
32
|
* @public
|
|
33
33
|
*/
|
|
34
34
|
totalCount: number;
|
|
35
|
+
/**
|
|
36
|
+
* The number of the rating.
|
|
37
|
+
*
|
|
38
|
+
* @public
|
|
39
|
+
*/
|
|
40
|
+
ratingCount: number;
|
|
35
41
|
static i18nBundle: I18nBundle;
|
|
36
42
|
get _ariaLabel(): string;
|
|
37
43
|
get hasTotalCount(): boolean;
|
|
44
|
+
get hasRatingCount(): boolean;
|
|
38
45
|
}
|
|
39
46
|
export default UDExRatingIndicator;
|
package/dist/RatingIndicator.js
CHANGED
|
@@ -14,7 +14,7 @@ import RatingIndicatorTemplate from "./RatingIndicatorTemplate.js";
|
|
|
14
14
|
// Styles
|
|
15
15
|
import RatingIndicatorCss from "./generated/themes/RatingIndicator.css.js";
|
|
16
16
|
import i18n from "@ui5/webcomponents-base/dist/decorators/i18n.js";
|
|
17
|
-
import { TOTAL } from "./generated/i18n/i18n-defaults.js";
|
|
17
|
+
import { TOTAL, RATING_COUNT_TITLE } from "./generated/i18n/i18n-defaults.js";
|
|
18
18
|
import translate from "./utils/translate.js";
|
|
19
19
|
import "@ui5/webcomponents-icons/dist/favorite.js";
|
|
20
20
|
import "@ui5/webcomponents-icons/dist/unfavorite.js";
|
|
@@ -48,14 +48,16 @@ let UDExRatingIndicator = class UDExRatingIndicator extends RatingIndicator {
|
|
|
48
48
|
}
|
|
49
49
|
get _ariaLabel() {
|
|
50
50
|
const ariaLabelText = getEffectiveAriaLabelText(this) || "";
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
return ariaLabelText;
|
|
51
|
+
const ratingText = this.ratingCount ? `${translate(RatingIndicator, RATING_COUNT_TITLE)} ${this.ratingCount}` : "";
|
|
52
|
+
const totalText = this.totalCount ? `${translate(RatingIndicator, TOTAL)} ${this.totalCount}` : "";
|
|
53
|
+
return [ariaLabelText, ratingText, totalText].filter(Boolean).join(", ");
|
|
55
54
|
}
|
|
56
55
|
get hasTotalCount() {
|
|
57
56
|
return !!this.totalCount || this.totalCount === 0;
|
|
58
57
|
}
|
|
58
|
+
get hasRatingCount() {
|
|
59
|
+
return !!this.ratingCount || this.ratingCount === 0;
|
|
60
|
+
}
|
|
59
61
|
};
|
|
60
62
|
__decorate([
|
|
61
63
|
property()
|
|
@@ -63,6 +65,9 @@ __decorate([
|
|
|
63
65
|
__decorate([
|
|
64
66
|
property()
|
|
65
67
|
], UDExRatingIndicator.prototype, "totalCount", void 0);
|
|
68
|
+
__decorate([
|
|
69
|
+
property()
|
|
70
|
+
], UDExRatingIndicator.prototype, "ratingCount", void 0);
|
|
66
71
|
__decorate([
|
|
67
72
|
i18n("@sapudex/web-components")
|
|
68
73
|
], UDExRatingIndicator, "i18nBundle", void 0);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RatingIndicator.js","sourceRoot":"","sources":["../src/RatingIndicator.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,aAAa,MAAM,0DAA0D,CAAC;AACrF,OAAO,QAAQ,MAAM,qDAAqD,CAAC;AAE3E,OAAO,eAAe,MAAM,4CAA4C,CAAC;AACzE,OAAO,WAAW,MAAM,iDAAiD,CAAC;AAC1E,OAAO,IAAI,MAAM,iCAAiC,CAAC;AACnD,OAAO,EAAE,yBAAyB,EAAE,MAAM,+DAA+D,CAAC;AAC1G,OAAO,uBAAuB,MAAM,8BAA8B,CAAC;AAEnE,SAAS;AACT,OAAO,kBAAkB,MAAM,2CAA2C,CAAC;AAC3E,OAAO,IAAI,MAAM,iDAAiD,CAAC;AAEnE,OAAO,EAAE,KAAK,EAAE,MAAM,mCAAmC,CAAC;
|
|
1
|
+
{"version":3,"file":"RatingIndicator.js","sourceRoot":"","sources":["../src/RatingIndicator.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,aAAa,MAAM,0DAA0D,CAAC;AACrF,OAAO,QAAQ,MAAM,qDAAqD,CAAC;AAE3E,OAAO,eAAe,MAAM,4CAA4C,CAAC;AACzE,OAAO,WAAW,MAAM,iDAAiD,CAAC;AAC1E,OAAO,IAAI,MAAM,iCAAiC,CAAC;AACnD,OAAO,EAAE,yBAAyB,EAAE,MAAM,+DAA+D,CAAC;AAC1G,OAAO,uBAAuB,MAAM,8BAA8B,CAAC;AAEnE,SAAS;AACT,OAAO,kBAAkB,MAAM,2CAA2C,CAAC;AAC3E,OAAO,IAAI,MAAM,iDAAiD,CAAC;AAEnE,OAAO,EAAE,KAAK,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AAC9E,OAAO,SAAS,MAAM,sBAAsB,CAAC;AAC7C,OAAO,2CAA2C,CAAC;AACnD,OAAO,6CAA6C,CAAC;AAErD,MAAM,CAAN,IAAY,eAGX;AAHD,WAAY,eAAe;IACzB,sCAAmB,CAAA;IACnB,oCAAiB,CAAA;AACnB,CAAC,EAHW,eAAe,KAAf,eAAe,QAG1B;AAED;;;;;;;;;;;GAWG;AASH,IAAM,mBAAmB,GAAzB,MAAM,mBAAoB,SAAQ,eAAe;IAAjD;;QACE;;;;;WAKG;QAED,YAAO,GAAyB,eAAe,CAAC,OAAO,CAAC;IAoC5D,CAAC;IAfC,IAAI,UAAU;QACZ,MAAM,aAAa,GAAG,yBAAyB,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QAC5D,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,eAAe,EAAE,kBAAkB,CAAC,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACnH,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,eAAe,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAEnG,OAAO,CAAC,aAAa,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3E,CAAC;IAED,IAAI,aAAa;QACf,OAAO,CAAC,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,KAAK,CAAC,CAAC;IACpD,CAAC;IAED,IAAI,cAAc;QAChB,OAAO,CAAC,CAAC,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,KAAK,CAAC,CAAC;IACtD,CAAC;CACF,CAAA;AApCG;IADD,QAAQ,EAAE;oDAC+C;AAQxD;IADD,QAAQ,EAAE;uDACW;AAQpB;IADD,QAAQ,EAAE;wDACY;AAGhB;IADN,IAAI,CAAC,yBAAyB,CAAC;6CACF;AA3B1B,mBAAmB;IARxB,aAAa,CAAC;QACb,GAAG,EAAE,uBAAuB;QAC5B,QAAQ,EAAE,WAAW;QACrB,MAAM,EAAE,CAAC,eAAe,CAAC,MAAM,EAAE,kBAAkB,CAAC;QACpD,QAAQ,EAAE,uBAAuB;QACjC,YAAY,EAAE,CAAC,IAAI,CAAC;KACrB,CAAC;GAEI,mBAAmB,CA4CxB;AAED,mBAAmB,CAAC,MAAM,EAAE,CAAC;AAE7B,eAAe,mBAAmB,CAAC","sourcesContent":["import customElement from \"@ui5/webcomponents-base/dist/decorators/customElement.js\";\nimport property from \"@ui5/webcomponents-base/dist/decorators/property.js\";\n\nimport RatingIndicator from \"@ui5/webcomponents/dist/RatingIndicator.js\";\nimport jsxRenderer from \"@ui5/webcomponents-base/renderer/JsxRenderer.js\";\nimport Icon from \"@ui5/webcomponents/dist/Icon.js\";\nimport { getEffectiveAriaLabelText } from \"@ui5/webcomponents-base/dist/util/AccessibilityTextsHelper.js\";\nimport RatingIndicatorTemplate from \"./RatingIndicatorTemplate.js\";\n\n// Styles\nimport RatingIndicatorCss from \"./generated/themes/RatingIndicator.css.js\";\nimport i18n from \"@ui5/webcomponents-base/dist/decorators/i18n.js\";\nimport type I18nBundle from \"@ui5/webcomponents-base/dist/i18nBundle.js\";\nimport { TOTAL, RATING_COUNT_TITLE } from \"./generated/i18n/i18n-defaults.js\";\nimport translate from \"./utils/translate.js\";\nimport \"@ui5/webcomponents-icons/dist/favorite.js\";\nimport \"@ui5/webcomponents-icons/dist/unfavorite.js\";\n\nexport enum UDExDisplayType {\n Desktop = \"Desktop\",\n Mobile = \"Mobile\"\n}\n\n/**\n * @class\n *\n * ### Overview\n *\n * ### ES6 Module Import\n *\n * `import @sapudex/web-components/dist/RatingIndicator.js\";`\n * @constructor\n * @extends RatingIndicator\n * @public\n */\n@customElement({\n tag: \"udex-rating-indicator\",\n renderer: jsxRenderer,\n styles: [RatingIndicator.styles, RatingIndicatorCss],\n template: RatingIndicatorTemplate,\n dependencies: [Icon],\n})\n\nclass UDExRatingIndicator extends RatingIndicator {\n /**\n * Defines the display type of the component.\n *\n * @default \"Desktop\"\n * @public\n */\n @property()\n display: `${UDExDisplayType}` = UDExDisplayType.Desktop;\n\n /**\n * The number of total votes.\n *\n * @public\n */\n @property()\n totalCount!: number;\n\n /**\n * The number of the rating.\n *\n * @public\n */\n @property()\n ratingCount!: number;\n\n @i18n(\"@sapudex/web-components\")\n static i18nBundle: I18nBundle;\n\n get _ariaLabel(): string {\n const ariaLabelText = getEffectiveAriaLabelText(this) || \"\";\n const ratingText = this.ratingCount ? `${translate(RatingIndicator, RATING_COUNT_TITLE)} ${this.ratingCount}` : \"\";\n const totalText = this.totalCount ? `${translate(RatingIndicator, TOTAL)} ${this.totalCount}` : \"\";\n\n return [ariaLabelText, ratingText, totalText].filter(Boolean).join(\", \");\n }\n\n get hasTotalCount(): boolean {\n return !!this.totalCount || this.totalCount === 0;\n }\n\n get hasRatingCount(): boolean {\n return !!this.ratingCount || this.ratingCount === 0;\n }\n}\n\nUDExRatingIndicator.define();\n\nexport default UDExRatingIndicator;\n"]}
|
|
@@ -1,13 +1,25 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "@ui5/webcomponents-base/jsx-runtime";
|
|
1
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "@ui5/webcomponents-base/jsx-runtime";
|
|
2
2
|
import UI5Icon from "@ui5/webcomponents/dist/Icon.js";
|
|
3
3
|
export default function RatingIndicatorTemplate() {
|
|
4
4
|
const rootClass = "udex-rating-indicator";
|
|
5
5
|
const ui5Class = "ui5-rating-indicator";
|
|
6
|
-
return (_jsxs("div", { class: `${rootClass} ${rootClass}--${this.display.toLowerCase()} ${ui5Class}-root`, role: "slider", "aria-roledescription": this._ariaRoleDescription, "aria-valuemin": 0, "aria-valuenow": this.value, "aria-valuemax": this.max, "aria-valuetext": `${this.value} of ${this.max}`, "aria-orientation": "horizontal", "aria-disabled": this._ariaDisabled, "aria-readonly": this.ariaReadonly, "aria-description": this._ariaDescription, tabindex: this.effectiveTabIndex, onFocusIn: this._onfocusin, onFocusOut: this._onfocusout, onClick: this._onclick, onKeyDown: this._onkeydown, title: this.ratingTooltip, "aria-label": this._ariaLabel, children: [_jsx("ul", { class: `${rootClass}__list ${ui5Class}-list`, "aria-hidden": "true", children: this._stars.map(star => (
|
|
6
|
+
return (_jsxs("div", { class: `${rootClass} ${rootClass}--${this.display.toLowerCase()} ${ui5Class}-root`, role: "slider", "aria-roledescription": this._ariaRoleDescription, "aria-valuemin": 0, "aria-valuenow": this.value, "aria-valuemax": this.max, "aria-valuetext": `${this.value} of ${this.max}`, "aria-orientation": "horizontal", "aria-disabled": this._ariaDisabled, "aria-readonly": this.ariaReadonly, "aria-description": this._ariaDescription, tabindex: this.effectiveTabIndex, onFocusIn: this._onfocusin, onFocusOut: this._onfocusout, onClick: this._onclick, onKeyDown: this._onkeydown, title: this.ratingTooltip, "aria-label": this._ariaLabel, children: [_jsx("ul", { class: `${rootClass}__list ${ui5Class}-list`, "aria-hidden": "true", children: this._stars.map(star => (_jsx("li", { "data-ui5-value": star.index, class: {
|
|
7
7
|
"udex-rating-indicator__item ui5-rating-indicator-item": true,
|
|
8
8
|
"udex-rating-indicator__item-sel ui5-rating-indicator-item-sel": star.selected,
|
|
9
9
|
"udex-rating-indicator__item-unsel ui5-rating-indicator-item-unsel": !star.selected && !star.halfStar,
|
|
10
|
-
"udex-rating-indicator__item-half ui5-rating-indicator-item-half": star.halfStar && !star.selected,
|
|
11
|
-
}, children:
|
|
10
|
+
"udex-rating-indicator__item-half ui5-rating-indicator-item-half udex-rating-indicator__item-unsel": star.halfStar && !star.selected,
|
|
11
|
+
}, children: starRender.call(this, star, ui5Class, rootClass) }))) }), (this.hasRatingCount || this.hasTotalCount) && (_jsxs("div", { class: `${rootClass}__total`, children: [this.hasRatingCount && _jsxs(_Fragment, { children: [this.ratingCount, " "] }), this.hasTotalCount && _jsxs(_Fragment, { children: ["(", this.totalCount, ")"] })] }))] }));
|
|
12
|
+
}
|
|
13
|
+
function starRender(star, ui5Class, rootClass) {
|
|
14
|
+
if (star.selected) {
|
|
15
|
+
return (_jsx(UI5Icon, { "data-ui5-value": star.index, name: "favorite" }));
|
|
16
|
+
}
|
|
17
|
+
if (star.halfStar) {
|
|
18
|
+
return (_jsxs(_Fragment, { children: [_jsx(UI5Icon, { "data-ui5-value": star.index, name: this.readonly ? "favorite" : "unfavorite" }), _jsx("div", { class: `${rootClass}__half-icon-wrapper ${ui5Class}-half-icon-wrapper`, children: _jsx(UI5Icon, { "data-ui5-value": star.index, name: "favorite", class: `${rootClass}__half-icon ${ui5Class}-half-icon` }) })] }));
|
|
19
|
+
}
|
|
20
|
+
if (this.readonly) {
|
|
21
|
+
return (_jsx(UI5Icon, { "data-ui5-value": star.index, name: "favorite" }));
|
|
22
|
+
}
|
|
23
|
+
return (_jsx(UI5Icon, { "data-ui5-value": star.index, name: "unfavorite" }));
|
|
12
24
|
}
|
|
13
25
|
//# sourceMappingURL=RatingIndicatorTemplate.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RatingIndicatorTemplate.js","sourceRoot":"","sources":["../src/RatingIndicatorTemplate.tsx"],"names":[],"mappings":";AACA,OAAO,OAAO,MAAM,iCAAiC,CAAC;
|
|
1
|
+
{"version":3,"file":"RatingIndicatorTemplate.js","sourceRoot":"","sources":["../src/RatingIndicatorTemplate.tsx"],"names":[],"mappings":"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","sourcesContent":["import type UDExRatingIndicator from \"./RatingIndicator.js\";\nimport UI5Icon from \"@ui5/webcomponents/dist/Icon.js\";\n\ntype Star = {\n selected: boolean;\n index: number;\n halfStar: boolean;\n};\n\nexport default function RatingIndicatorTemplate(this: UDExRatingIndicator) {\n const rootClass = \"udex-rating-indicator\";\n const ui5Class = \"ui5-rating-indicator\";\n\n return (\n <div class={`${rootClass} ${rootClass}--${this.display.toLowerCase()} ${ui5Class}-root`}\n role=\"slider\"\n aria-roledescription={this._ariaRoleDescription}\n aria-valuemin={0}\n aria-valuenow={this.value}\n aria-valuemax={this.max}\n aria-valuetext={`${this.value} of ${this.max}`}\n aria-orientation=\"horizontal\"\n aria-disabled={this._ariaDisabled}\n aria-readonly={this.ariaReadonly}\n aria-description={this._ariaDescription}\n tabindex={this.effectiveTabIndex}\n onFocusIn={this._onfocusin}\n onFocusOut={this._onfocusout}\n onClick={this._onclick}\n onKeyDown={this._onkeydown}\n title={this.ratingTooltip}\n aria-label={this._ariaLabel}>\n <ul class={`${rootClass}__list ${ui5Class}-list`}\n aria-hidden=\"true\">\n {this._stars.map(star => (\n <li data-ui5-value={star.index}\n class={{\n \"udex-rating-indicator__item ui5-rating-indicator-item\": true,\n \"udex-rating-indicator__item-sel ui5-rating-indicator-item-sel\": star.selected,\n \"udex-rating-indicator__item-unsel ui5-rating-indicator-item-unsel\": !star.selected && !star.halfStar,\n \"udex-rating-indicator__item-half ui5-rating-indicator-item-half udex-rating-indicator__item-unsel\": star.halfStar && !star.selected,\n }}>\n {starRender.call(this, star, ui5Class, rootClass)}\n </li>\n ))}\n </ul>\n {(this.hasRatingCount || this.hasTotalCount) && (\n <div class={`${rootClass}__total`}>\n {this.hasRatingCount && <>{this.ratingCount} </>}\n {this.hasTotalCount && <>({this.totalCount})</>}\n </div>\n )}\n </div>\n );\n}\n\nfunction starRender(this: UDExRatingIndicator, star: Star, ui5Class: string, rootClass: string) {\n if (star.selected) {\n return (\n <UI5Icon data-ui5-value={star.index} name=\"favorite\"/>\n );\n }\n if (star.halfStar) {\n return (\n <>\n <UI5Icon data-ui5-value={star.index} name={this.readonly ? \"favorite\" : \"unfavorite\"}/>\n <div class={`${rootClass}__half-icon-wrapper ${ui5Class}-half-icon-wrapper`}>\n <UI5Icon data-ui5-value={star.index} name=\"favorite\" class={`${rootClass}__half-icon ${ui5Class}-half-icon`}></UI5Icon>\n </div>\n </>\n );\n }\n if (this.readonly) {\n return (\n <UI5Icon data-ui5-value={star.index} name=\"favorite\"/>\n );\n }\n return (\n <UI5Icon data-ui5-value={star.index} name=\"unfavorite\"/>\n );\n}\n"]}
|
package/dist/Review.js
CHANGED
|
@@ -14,9 +14,9 @@ import i18n from "@ui5/webcomponents-base/dist/decorators/i18n.js";
|
|
|
14
14
|
import { REVIEWS, STARS } from "./generated/i18n/i18n-defaults.js";
|
|
15
15
|
import "@ui5/webcomponents-icons/dist/favorite.js";
|
|
16
16
|
import ReviewTemplate from "./ReviewTemplate.js";
|
|
17
|
+
import translate from "./utils/translate.js";
|
|
17
18
|
// Styles
|
|
18
19
|
import ReviewCss from "./generated/themes/Review.css.js";
|
|
19
|
-
import translate from "./utils/translate.js";
|
|
20
20
|
/**
|
|
21
21
|
* @class
|
|
22
22
|
*
|
package/dist/Review.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Review.js","sourceRoot":"","sources":["../src/Review.ts"],"names":[],"mappings":";;;;;;;AAAA,OAAO,UAAU,MAAM,4CAA4C,CAAC;AACpE,OAAO,aAAa,MAAM,0DAA0D,CAAC;AACrF,OAAO,QAAQ,MAAM,qDAAqD,CAAC;AAC3E,OAAO,IAAI,MAAM,iDAAiD,CAAC;AACnE,OAAO,WAAW,MAAM,iDAAiD,CAAC;AAC1E,OAAO,IAAI,MAAM,iDAAiD,CAAC;AAEnE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,mCAAmC,CAAC;AACnE,OAAO,2CAA2C,CAAC;AAGnD,OAAO,cAAc,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"Review.js","sourceRoot":"","sources":["../src/Review.ts"],"names":[],"mappings":"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","sourcesContent":["import UI5Element from \"@ui5/webcomponents-base/dist/UI5Element.js\";\nimport customElement from \"@ui5/webcomponents-base/dist/decorators/customElement.js\";\nimport property from \"@ui5/webcomponents-base/dist/decorators/property.js\";\nimport slot from \"@ui5/webcomponents-base/dist/decorators/slot.js\";\nimport jsxRenderer from \"@ui5/webcomponents-base/renderer/JsxRenderer.js\";\nimport i18n from \"@ui5/webcomponents-base/dist/decorators/i18n.js\";\nimport type I18nBundle from \"@ui5/webcomponents-base/dist/i18nBundle.js\";\nimport { REVIEWS, STARS } from \"./generated/i18n/i18n-defaults.js\";\nimport \"@ui5/webcomponents-icons/dist/favorite.js\";\nimport type UDExRatingBar from \"./RatingBar.js\";\nimport type UDExButton from \"./Button.js\";\nimport ReviewTemplate from \"./ReviewTemplate.js\";\nimport translate from \"./utils/translate.js\";\n\n// Styles\nimport ReviewCss from \"./generated/themes/Review.css.js\";\n\n/**\n * @class\n *\n * <h3 class=\"comment-api-title\">Overview</h3>\n *\n *\n * <h3>Usage</h3>\n *\n * For the <code>udex-review</code>\n * <h3>ES6 Module Import</h3>\n *\n * <code>import \"@sapudex/web-components/dist/Review.js\";</code>\n *\n * @constructor\n * @extends UI5Element\n * @public\n */\n@customElement({\n tag: \"udex-review\",\n renderer: jsxRenderer,\n styles: ReviewCss,\n template: ReviewTemplate,\n})\n\nclass UDExReview extends UI5Element {\n /**\n * Defines the rating.\n *\n * @default 0\n * @public\n */\n @property({ type: Number })\n rating: number = 0;\n\n /**\n * Defines the total number of reviews.\n *\n * @default 0\n * @public\n */\n @property({ type: Number })\n reviews: number = 0;\n\n /**\n * Slot for a button for writing a review.\n *\n * @slot\n * @public\n */\n @slot({ type: HTMLElement })\n reviewButton!: UDExButton;\n\n /**\n * Slot for the default text when there are no reviews or rating.\n *\n * @slot\n * @public\n */\n @slot({ type: HTMLElement })\n defaultText!: HTMLElement;\n\n /**\n * Slot for rating bars.\n *\n * @slot\n * @public\n */\n @slot({ type: HTMLElement, \"default\": true, individualSlots: true })\n bars!: Array<UDExRatingBar>;\n\n @i18n(\"@sapudex/web-components\")\n static i18nBundle: I18nBundle;\n\n _minRating: number = 0;\n _maxRating: number = 5;\n _maxRatingBars: number = 5;\n\n get reviewsText(): string {\n return `${this.reviews} ${translate(UDExReview, REVIEWS)}`;\n }\n\n get withoutBreakdown(): boolean {\n return this.bars.length === 0;\n }\n\n get isEmpty(): boolean {\n return this.reviews === 0 && this.rating === 0;\n }\n\n get validatedRating(): number {\n if (this.rating > this._maxRating) {\n console.warn(\"UDEx Review: The rating shouldn't be more than 5.\");\n return this._maxRating;\n }\n if (this.rating < this._minRating) {\n console.warn(\"UDEx Review: The rating shouldn't be less than 0.\");\n return this._minRating;\n }\n return this.rating;\n }\n\n get validatedRatingBars(): Array<UDExRatingBar> {\n if (this.bars.length > this._maxRatingBars) {\n console.warn(\"UDEx Review: There shouldn't be more than 5 RatingBars.\");\n return this.bars.slice(-this._maxRatingBars);\n }\n\n return this.bars;\n }\n\n get _ratingDescription(): string {\n return `${this.validatedRating} ${translate(UDExReview, STARS)}`;\n }\n}\n\nUDExReview.define();\n\nexport default UDExReview;\n"]}
|
package/dist/SelectBase.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { ChangeInfo } from "@ui5/webcomponents-base/dist/UI5Element.js";
|
|
1
2
|
import type { UDExListItemBase } from "./List.js";
|
|
2
3
|
import type Popover from "@ui5/webcomponents/dist/Popover.js";
|
|
3
4
|
import type UDExList from "./List.js";
|
|
@@ -135,6 +136,7 @@ declare class UDExSelectBase extends UDExSearchableListBase {
|
|
|
135
136
|
constructor();
|
|
136
137
|
onEnterDOM(): void;
|
|
137
138
|
onExitDOM(): void;
|
|
139
|
+
onInvalidation({ name }: ChangeInfo): void;
|
|
138
140
|
onAfterRendering(): void;
|
|
139
141
|
_handleResize(): void;
|
|
140
142
|
handleKeyDownDropdown(e: KeyboardEvent): void;
|
package/dist/SelectBase.js
CHANGED
|
@@ -64,13 +64,18 @@ class UDExSelectBase extends UDExSearchableListBase {
|
|
|
64
64
|
}
|
|
65
65
|
onEnterDOM() {
|
|
66
66
|
ResizeHandler.register(this, this._handleResizeBound);
|
|
67
|
-
if (this.modeSingleSelect) {
|
|
67
|
+
if (this.modeSingleSelect && this.hasSelectedItems) {
|
|
68
68
|
this.setSelectOption();
|
|
69
69
|
}
|
|
70
70
|
}
|
|
71
71
|
onExitDOM() {
|
|
72
72
|
ResizeHandler.deregister(this, this._handleResizeBound);
|
|
73
73
|
}
|
|
74
|
+
onInvalidation({ name }) {
|
|
75
|
+
if (name === "default") {
|
|
76
|
+
this.setSelectOption();
|
|
77
|
+
}
|
|
78
|
+
}
|
|
74
79
|
onAfterRendering() {
|
|
75
80
|
this._popover = this.getPopover();
|
|
76
81
|
this._search = this.getSearch();
|
package/dist/SelectBase.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SelectBase.js","sourceRoot":"","sources":["../src/SelectBase.ts"],"names":[],"mappings":"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","sourcesContent":["import property from \"@ui5/webcomponents-base/dist/decorators/property.js\";\nimport executeTemplate from \"@ui5/webcomponents-base/dist/renderer/executeTemplate.js\";\nimport {\n isEscape, isDown, isUp, isHome, isEnd, isTabNext, isTabPrevious,\n} from \"@ui5/webcomponents-base/dist/Keys.js\";\nimport { getAllAccessibleNameRefTexts } from \"@ui5/webcomponents-base/dist/util/AccessibilityTextsHelper.js\";\nimport type { UDExListItemBase } from \"./List.js\";\nimport type Popover from \"@ui5/webcomponents/dist/Popover.js\";\nimport type UDExList from \"./List.js\";\nimport type UDExSearch from \"./Search.js\";\nimport \"@ui5/webcomponents-icons/dist/decline.js\";\nimport \"@ui5/webcomponents-icons/dist/navigation-down-arrow.js\";\nimport { COUNTRY_SELECT } from \"./generated/i18n/i18n-defaults.js\";\nimport SearchableListBaseTemplate from \"./generated/templates/SearchableListBaseTemplate.lit.js\";\nimport CountrySelectorTemplate from \"./generated/templates/CountrySelectorTemplate.lit.js\";\nimport type { ResizeObserverCallback } from \"@ui5/webcomponents-base/delegate/ResizeHandler.js\";\nimport ResizeHandler from \"@ui5/webcomponents-base/delegate/ResizeHandler.js\";\nimport UDExSearchableListBase from \"./SearchableListBase.js\";\nimport UDExValueState from \"./types/common.js\";\nimport type { UDExSearchableListBaseEvents } from \"./SearchableListBase.js\";\nimport { getTokensCountText } from \"@ui5/webcomponents/dist/Tokenizer.js\";\nimport isLetterKey from \"./utils/isLetterKeyPressed.js\";\nimport translate from \"./utils/translate.js\";\n\ntype UDExSelectBaseEvents = {\n \"open\": void,\n \"close\": void,\n \"before-close\": void,\n \"before-open\": void,\n} & UDExSearchableListBaseEvents;\n\n/**\n * @class\n *\n * A class to serve as a foundation\n * for the <code>UDExCountrySelector</code> and <code>UDExSelectBox</code> classes.\n *\n * @constructor\n * @extends UDExSearchableListBase\n * @public\n */\n\nclass UDExSelectBase extends UDExSearchableListBase {\n eventDetails!: UDExSelectBaseEvents;\n\n /**\n * Defines whether the component is required.\n *\n * @default false\n * @public\n */\n @property({ type: Boolean })\n required!: boolean;\n\n /**\n * Defines whether the component is in disabled state.\n *\n * @default false\n * @public\n */\n @property({ type: Boolean })\n disabled!: boolean;\n\n /**\n * Defines label text for field container.\n *\n * @default \"\"\n * @public\n */\n @property({ type: String })\n label!: string;\n\n /**\n * Defines the accessible ARIA name of the component.\n *\n * @default undefined\n * @public\n */\n @property()\n accessibleName?: string;\n\n /**\n * Receives id (or many ids) of the elements that label the component.\n * @default undefined\n * @public\n */\n @property()\n accessibleNameRef?: string;\n\n /**\n * Defines whether the component is read-only.\n *\n * @default false\n * @public\n */\n @property({ type: Boolean })\n readonly!: boolean;\n\n /**\n * Defines whether the component is display-only.\n *\n * @default false\n * @public\n */\n @property({ type: Boolean })\n displayonly!: boolean;\n\n /**\n * Defines the value state of the trigger container.\n *\n * @default \"Standard\"\n * @public\n */\n @property()\n valueState: `${UDExValueState}` = UDExValueState.Standard;\n\n /**\n * Defines supporting text under the trigger container.\n *\n * @default undefined\n * @public\n */\n @property({ type: String })\n supportingText?: string;\n\n /**\n * @private\n */\n @property({ type: String, noAttribute: true })\n _direction?: string;\n\n /**\n * @default false\n * @private\n */\n @property({ type: Boolean })\n _focused!: boolean;\n\n /**\n * @default false\n * @private\n */\n @property({ type: Boolean })\n _open: boolean = false;\n\n /**\n * Defines selected option for Single Select Mode.\n *\n * @default undefined\n * @private\n */\n @property()\n _selectedOption!: string;\n\n /**\n * Defines if the component should reset.\n *\n * @default false\n * @private\n */\n @property({ type: Boolean, noAttribute: true })\n _requestRender = false;\n\n _paneWidthVariableName = \"--udex-dropdown-pane-width\";\n _labelBaseClass = \"udex-text-field__label\";\n _dropdownClass = \"udex-select-box__dropdown\";\n _listBoxRole = \"listbox\";\n _rootClass = \"udex-select-box__root\";\n _stickyClass = \"udex-list__sticky\";\n _ariaAutoComplete = \"list\";\n _trigger!: HTMLElement;\n _search!: UDExSearch | HTMLInputElement;\n _popover!: Popover;\n _list!: UDExList;\n _inputValue: string = \"\";\n _lastSelectedItemId: string = \"\";\n _handleResizeBound: ResizeObserverCallback;\n\n constructor() {\n super();\n this._handleResizeBound = this._handleResize.bind(this);\n }\n\n onEnterDOM() {\n ResizeHandler.register(this, this._handleResizeBound);\n if (this.modeSingleSelect) {\n this.setSelectOption();\n }\n }\n\n onExitDOM() {\n ResizeHandler.deregister(this, this._handleResizeBound);\n }\n\n onAfterRendering() {\n this._popover = this.getPopover();\n this._search = this.getSearch();\n this._list = this.getList();\n this._trigger = this.trigger;\n this.handleDirection();\n\n if (this._requestRender) {\n this._requestRender = false;\n }\n }\n\n _handleResize() {\n this.updatePopoverWidth();\n }\n\n handleKeyDownDropdown(e: KeyboardEvent) {\n const items = this._list?.getKeyboardNavigationItems();\n\n if (isLetterKey(e.key)) {\n this.handleLetterKeyPress(e);\n return;\n }\n\n if (isTabPrevious(e) && !this.tabNavigationEnabled) {\n e.preventDefault();\n this._search.focus();\n return;\n }\n\n if (isTabNext(e) && !this.tabNavigationEnabled) {\n this.closeDropdown();\n return;\n }\n\n if (isEscape(e)) {\n this.handleEscKeyPress(e);\n return;\n }\n\n if (!items || this.tabNavigationEnabled) {\n return;\n }\n\n this.handleListNavigationKeys(e, items);\n }\n\n handleListNavigationKeys(e: KeyboardEvent, items: UDExListItemBase[]) {\n const currentSelectedIndex = this._list?.getCurrentIndex(items, e.target as UDExListItemBase);\n const lastItemIndex = items.length - 1;\n\n if (isDown(e)) {\n e.preventDefault();\n this.handleDownKeyPress(items, currentSelectedIndex, lastItemIndex);\n\n return;\n }\n\n if (isUp(e)) {\n e.preventDefault();\n this.handleUpKeyPress(items, currentSelectedIndex, lastItemIndex);\n\n return;\n }\n\n if (isHome(e)) {\n e.preventDefault();\n this.handleHomeKeyPress(items);\n\n return;\n }\n\n if (isEnd(e)) {\n e.preventDefault();\n this.handleEndKeyPress(items, lastItemIndex);\n }\n }\n\n handleEndKeyPress(items: UDExListItemBase[], lastItemIndex: number) {\n if (this.showImageFlags) {\n this.handleImagePosition(items, lastItemIndex);\n }\n\n this._selectedOption = items[lastItemIndex].label;\n }\n\n handleHomeKeyPress(items: UDExListItemBase[]) {\n this._selectedOption = items[0].label;\n\n if (this.showImageFlags) {\n this.handleImagePosition(items, 0);\n }\n }\n\n handleDownKeyPress(items: UDExListItemBase[], currentSelectedIndex: number, lastItemIndex: number) {\n const nextIndex = currentSelectedIndex + 1;\n const nextSelectIndex = nextIndex > lastItemIndex ? 0 : nextIndex;\n this._selectedOption = items[nextSelectIndex].label;\n\n if (this.showImageFlags) {\n this.handleImagePosition(items, nextSelectIndex);\n }\n }\n\n handleUpKeyPress(items: UDExListItemBase[], currentSelectedIndex: number, lastItemIndex: number) {\n const prevIndex = currentSelectedIndex - 1;\n const previousSelectIndex = prevIndex < 0 ? lastItemIndex : prevIndex;\n this._selectedOption = items[previousSelectIndex].label;\n\n if (this.showImageFlags) {\n this.handleImagePosition(items, previousSelectIndex);\n }\n }\n\n handleLetterKeyPress(e: KeyboardEvent) {\n e.stopPropagation();\n e.preventDefault();\n this._selectedOption = \"\";\n this._search.value = e.key;\n this._search.focus();\n this.onSearch(this._search.value);\n }\n\n handleEscKeyPress(e: KeyboardEvent) {\n e.preventDefault();\n this.closeDropdown();\n this._search.focus();\n\n if (!this.tabNavigationEnabled) {\n this._selectedOption = \"\";\n }\n }\n\n handleItemSelection(e:CustomEvent) {\n this.onItemPress(e);\n const item = e.detail.item as UDExListItemBase;\n this._lastSelectedItemId = this.getDataTokenId(item);\n this.resetSearchState();\n\n if (this.modeSingleSelect) {\n this._search.focus();\n this.closeDropdown();\n }\n }\n\n onKeyDownSearch(e: KeyboardEvent) {\n e.stopPropagation();\n const items = this._list?.getKeyboardNavigationItems();\n const hasItems = items && items.length > 0;\n const popoverOpened = this._popover.open;\n const isEscAndPopoverOpened = isEscape(e) && popoverOpened;\n const isDownAndPopoverClosed = isDown(e) && !popoverOpened;\n const isDownAndPopoverOpened = isDown(e) && popoverOpened;\n\n if (!hasItems) {\n return;\n }\n\n if (isEscAndPopoverOpened) {\n return this.closeDropdown();\n }\n\n if (isDownAndPopoverClosed) {\n e.preventDefault();\n this.openDropdown();\n this.focusFirstItem(items);\n if (this.showImageFlags) {\n this.handleImagePosition(items, 0);\n }\n return;\n }\n\n if (isDownAndPopoverOpened) {\n e.preventDefault();\n if (this.showImageFlags) {\n this.handleImagePosition(items, 0);\n }\n return this.focusFirstItem(items);\n }\n }\n\n focusFirstItem(items: UDExListItemBase[]): void {\n this._list.setTabIndexByIndex(items, 0);\n if (!this.tabNavigationEnabled) {\n this._selectedOption = items[0].label;\n }\n\n if (items[0].isGroup) {\n this._list.focusHeader(items[0]);\n } else {\n items[0].focus();\n }\n }\n\n handleSearchChange(e: CustomEvent) {\n const inputValue = (e.target as HTMLInputElement)?.value || \"\";\n this._inputValue = inputValue;\n\n if (inputValue) {\n this._selectedOption = \"\";\n }\n\n this.onSearch(inputValue);\n\n if (!this._popover.open) {\n this.openDropdown();\n }\n }\n\n handleDirection() {\n const directionStyles = window.getComputedStyle(this).getPropertyValue(\"direction\");\n this._direction = directionStyles || \"ltr\";\n }\n\n handleDropdownBeforeClose() {\n this.fireDecoratorEvent(\"before-close\");\n }\n\n dropdownBeforeOpen() {\n if (this.height) {\n this._setContentHeight();\n }\n\n this.fireDecoratorEvent(\"before-open\");\n }\n\n fireEventDropdownOpen() {\n this.fireDecoratorEvent(\"open\");\n }\n\n fireEventDropdownClose() {\n this.fireDecoratorEvent(\"close\");\n }\n\n handleButtonClick() {\n if (!this.isDisabled) {\n this._search.focus();\n\n if (this._popover.open) {\n this.closeDropdown();\n } else {\n this.openDropdown();\n }\n }\n }\n\n handleInputClick() {\n if (!this.isDisabled) {\n this._search.focus();\n this.openDropdown();\n }\n }\n\n openDropdown() {\n this._popover.opener = this._trigger;\n this._popover.open = true;\n this._open = true;\n }\n\n closeDropdown() {\n if (this._popover.open) {\n this._open = false;\n this._popover.open = false;\n }\n }\n\n inputFocusIn() {\n if (!this.isDisabled) {\n this._focused = true;\n }\n }\n\n resetSearchState() {\n this._inputValue = \"\";\n setTimeout(() => this.resetSearch(), 0);\n\n if (this.modeSingleSelect) {\n this.setSelectOption();\n }\n }\n\n setSelectOption() {\n this._selectedOption = this.selectedItems[0]?.label || \"\";\n }\n\n updatePopoverWidth() {\n this._popover.style.setProperty(this._paneWidthVariableName, `${this._trigger.offsetWidth}px`);\n }\n\n handleImagePosition(items: UDExListItemBase[], index: number) {\n const image = items[index].querySelector<HTMLElement>(\".udex-text-field__image\");\n const imagePlaceholder = this.shadowRoot!.querySelector<HTMLElement>(\".udex-text-field__input > .udex-text-field__image\");\n\n if (imagePlaceholder) {\n imagePlaceholder.style.backgroundPosition = image?.style?.backgroundPosition || \"\";\n }\n }\n\n get ariaDescribedbyText(): string {\n if (this.modeSingleSelect) {\n return this._selectedOption;\n }\n const tags = this.selectedItems.filter(item => !item.isGroup);\n return getTokensCountText(tags.length);\n }\n\n get trigger(): HTMLElement {\n return this.shadowRoot!.querySelector(\".udex-text-field__wrap\")!;\n }\n\n get isDisabled(): boolean {\n return this.readonly || this.displayonly || this.disabled;\n }\n\n get labelClass(): string {\n const baseClass = this._labelBaseClass;\n const isActive = [\n this._inputValue,\n this._focused,\n this._open,\n this._selectedOption,\n this.hasSelectedItems,\n ].some(Boolean);\n return isActive ? `${baseClass} ${baseClass}_active` : baseClass;\n }\n\n get isReadOrDisplayOnly(): boolean {\n return this.readonly || this.displayonly;\n }\n\n get hasSelectedItems(): boolean {\n return this.selectedItems.length > 0;\n }\n\n get additionalClassName(): string {\n return this._stickyClass;\n }\n\n get accInfo(): { ariaLabel: string } {\n return {\n \"ariaLabel\": getAllAccessibleNameRefTexts(this) || this.accessibleName || this.label || translate(UDExSelectBase, COUNTRY_SELECT),\n };\n }\n\n get popoverId(): string {\n return `${this._id}_${this._dropdownClass}`;\n }\n\n get listboxRole(): string {\n return this._listBoxRole;\n }\n\n get hideDropdownSearch(): boolean {\n return true;\n }\n\n get showImageFlags(): boolean {\n return false;\n }\n\n get searchableList() {\n this.defaultAccessibleRole = this._listBoxRole;\n return executeTemplate(UDExSelectBase.searchableListBaseTemplate, this);\n }\n\n get countryFlag() {\n return executeTemplate(UDExSelectBase.countryFlagTemplate, this);\n }\n\n static get countryFlagTemplate() {\n return CountrySelectorTemplate;\n }\n\n static get searchableListBaseTemplate() {\n return SearchableListBaseTemplate;\n }\n}\n\nexport default UDExSelectBase;\nexport type { UDExSelectBaseEvents };\n"]}
|
|
1
|
+
{"version":3,"file":"SelectBase.js","sourceRoot":"","sources":["../src/SelectBase.ts"],"names":[],"mappings":"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","sourcesContent":["import property from \"@ui5/webcomponents-base/dist/decorators/property.js\";\nimport executeTemplate from \"@ui5/webcomponents-base/dist/renderer/executeTemplate.js\";\nimport type { ChangeInfo } from \"@ui5/webcomponents-base/dist/UI5Element.js\";\nimport {\n isEscape, isDown, isUp, isHome, isEnd, isTabNext, isTabPrevious,\n} from \"@ui5/webcomponents-base/dist/Keys.js\";\nimport { getAllAccessibleNameRefTexts } from \"@ui5/webcomponents-base/dist/util/AccessibilityTextsHelper.js\";\nimport type { UDExListItemBase } from \"./List.js\";\nimport type Popover from \"@ui5/webcomponents/dist/Popover.js\";\nimport type UDExList from \"./List.js\";\nimport type UDExSearch from \"./Search.js\";\nimport \"@ui5/webcomponents-icons/dist/decline.js\";\nimport \"@ui5/webcomponents-icons/dist/navigation-down-arrow.js\";\nimport { COUNTRY_SELECT } from \"./generated/i18n/i18n-defaults.js\";\nimport SearchableListBaseTemplate from \"./generated/templates/SearchableListBaseTemplate.lit.js\";\nimport CountrySelectorTemplate from \"./generated/templates/CountrySelectorTemplate.lit.js\";\nimport type { ResizeObserverCallback } from \"@ui5/webcomponents-base/delegate/ResizeHandler.js\";\nimport ResizeHandler from \"@ui5/webcomponents-base/delegate/ResizeHandler.js\";\nimport UDExSearchableListBase from \"./SearchableListBase.js\";\nimport UDExValueState from \"./types/common.js\";\nimport type { UDExSearchableListBaseEvents } from \"./SearchableListBase.js\";\nimport { getTokensCountText } from \"@ui5/webcomponents/dist/Tokenizer.js\";\nimport isLetterKey from \"./utils/isLetterKeyPressed.js\";\nimport translate from \"./utils/translate.js\";\n\ntype UDExSelectBaseEvents = {\n \"open\": void,\n \"close\": void,\n \"before-close\": void,\n \"before-open\": void,\n} & UDExSearchableListBaseEvents;\n\n/**\n * @class\n *\n * A class to serve as a foundation\n * for the <code>UDExCountrySelector</code> and <code>UDExSelectBox</code> classes.\n *\n * @constructor\n * @extends UDExSearchableListBase\n * @public\n */\n\nclass UDExSelectBase extends UDExSearchableListBase {\n eventDetails!: UDExSelectBaseEvents;\n\n /**\n * Defines whether the component is required.\n *\n * @default false\n * @public\n */\n @property({ type: Boolean })\n required!: boolean;\n\n /**\n * Defines whether the component is in disabled state.\n *\n * @default false\n * @public\n */\n @property({ type: Boolean })\n disabled!: boolean;\n\n /**\n * Defines label text for field container.\n *\n * @default \"\"\n * @public\n */\n @property({ type: String })\n label!: string;\n\n /**\n * Defines the accessible ARIA name of the component.\n *\n * @default undefined\n * @public\n */\n @property()\n accessibleName?: string;\n\n /**\n * Receives id (or many ids) of the elements that label the component.\n * @default undefined\n * @public\n */\n @property()\n accessibleNameRef?: string;\n\n /**\n * Defines whether the component is read-only.\n *\n * @default false\n * @public\n */\n @property({ type: Boolean })\n readonly!: boolean;\n\n /**\n * Defines whether the component is display-only.\n *\n * @default false\n * @public\n */\n @property({ type: Boolean })\n displayonly!: boolean;\n\n /**\n * Defines the value state of the trigger container.\n *\n * @default \"Standard\"\n * @public\n */\n @property()\n valueState: `${UDExValueState}` = UDExValueState.Standard;\n\n /**\n * Defines supporting text under the trigger container.\n *\n * @default undefined\n * @public\n */\n @property({ type: String })\n supportingText?: string;\n\n /**\n * @private\n */\n @property({ type: String, noAttribute: true })\n _direction?: string;\n\n /**\n * @default false\n * @private\n */\n @property({ type: Boolean })\n _focused!: boolean;\n\n /**\n * @default false\n * @private\n */\n @property({ type: Boolean })\n _open: boolean = false;\n\n /**\n * Defines selected option for Single Select Mode.\n *\n * @default undefined\n * @private\n */\n @property()\n _selectedOption!: string;\n\n /**\n * Defines if the component should reset.\n *\n * @default false\n * @private\n */\n @property({ type: Boolean, noAttribute: true })\n _requestRender = false;\n\n _paneWidthVariableName = \"--udex-dropdown-pane-width\";\n _labelBaseClass = \"udex-text-field__label\";\n _dropdownClass = \"udex-select-box__dropdown\";\n _listBoxRole = \"listbox\";\n _rootClass = \"udex-select-box__root\";\n _stickyClass = \"udex-list__sticky\";\n _ariaAutoComplete = \"list\";\n _trigger!: HTMLElement;\n _search!: UDExSearch | HTMLInputElement;\n _popover!: Popover;\n _list!: UDExList;\n _inputValue: string = \"\";\n _lastSelectedItemId: string = \"\";\n _handleResizeBound: ResizeObserverCallback;\n\n constructor() {\n super();\n this._handleResizeBound = this._handleResize.bind(this);\n }\n\n onEnterDOM() {\n ResizeHandler.register(this, this._handleResizeBound);\n if (this.modeSingleSelect && this.hasSelectedItems) {\n this.setSelectOption();\n }\n }\n\n onExitDOM() {\n ResizeHandler.deregister(this, this._handleResizeBound);\n }\n\n onInvalidation({ name }: ChangeInfo): void {\n if (name === \"default\") {\n this.setSelectOption();\n }\n }\n\n onAfterRendering() {\n this._popover = this.getPopover();\n this._search = this.getSearch();\n this._list = this.getList();\n this._trigger = this.trigger;\n this.handleDirection();\n\n if (this._requestRender) {\n this._requestRender = false;\n }\n }\n\n _handleResize() {\n this.updatePopoverWidth();\n }\n\n handleKeyDownDropdown(e: KeyboardEvent) {\n const items = this._list?.getKeyboardNavigationItems();\n\n if (isLetterKey(e.key)) {\n this.handleLetterKeyPress(e);\n return;\n }\n\n if (isTabPrevious(e) && !this.tabNavigationEnabled) {\n e.preventDefault();\n this._search.focus();\n return;\n }\n\n if (isTabNext(e) && !this.tabNavigationEnabled) {\n this.closeDropdown();\n return;\n }\n\n if (isEscape(e)) {\n this.handleEscKeyPress(e);\n return;\n }\n\n if (!items || this.tabNavigationEnabled) {\n return;\n }\n\n this.handleListNavigationKeys(e, items);\n }\n\n handleListNavigationKeys(e: KeyboardEvent, items: UDExListItemBase[]) {\n const currentSelectedIndex = this._list?.getCurrentIndex(items, e.target as UDExListItemBase);\n const lastItemIndex = items.length - 1;\n\n if (isDown(e)) {\n e.preventDefault();\n this.handleDownKeyPress(items, currentSelectedIndex, lastItemIndex);\n\n return;\n }\n\n if (isUp(e)) {\n e.preventDefault();\n this.handleUpKeyPress(items, currentSelectedIndex, lastItemIndex);\n\n return;\n }\n\n if (isHome(e)) {\n e.preventDefault();\n this.handleHomeKeyPress(items);\n\n return;\n }\n\n if (isEnd(e)) {\n e.preventDefault();\n this.handleEndKeyPress(items, lastItemIndex);\n }\n }\n\n handleEndKeyPress(items: UDExListItemBase[], lastItemIndex: number) {\n if (this.showImageFlags) {\n this.handleImagePosition(items, lastItemIndex);\n }\n\n this._selectedOption = items[lastItemIndex].label;\n }\n\n handleHomeKeyPress(items: UDExListItemBase[]) {\n this._selectedOption = items[0].label;\n\n if (this.showImageFlags) {\n this.handleImagePosition(items, 0);\n }\n }\n\n handleDownKeyPress(items: UDExListItemBase[], currentSelectedIndex: number, lastItemIndex: number) {\n const nextIndex = currentSelectedIndex + 1;\n const nextSelectIndex = nextIndex > lastItemIndex ? 0 : nextIndex;\n this._selectedOption = items[nextSelectIndex].label;\n\n if (this.showImageFlags) {\n this.handleImagePosition(items, nextSelectIndex);\n }\n }\n\n handleUpKeyPress(items: UDExListItemBase[], currentSelectedIndex: number, lastItemIndex: number) {\n const prevIndex = currentSelectedIndex - 1;\n const previousSelectIndex = prevIndex < 0 ? lastItemIndex : prevIndex;\n this._selectedOption = items[previousSelectIndex].label;\n\n if (this.showImageFlags) {\n this.handleImagePosition(items, previousSelectIndex);\n }\n }\n\n handleLetterKeyPress(e: KeyboardEvent) {\n e.stopPropagation();\n e.preventDefault();\n this._selectedOption = \"\";\n this._search.value = e.key;\n this._search.focus();\n this.onSearch(this._search.value);\n }\n\n handleEscKeyPress(e: KeyboardEvent) {\n e.preventDefault();\n this.closeDropdown();\n this._search.focus();\n\n if (!this.tabNavigationEnabled) {\n this._selectedOption = \"\";\n }\n }\n\n handleItemSelection(e:CustomEvent) {\n this.onItemPress(e);\n const item = e.detail.item as UDExListItemBase;\n this._lastSelectedItemId = this.getDataTokenId(item);\n this.resetSearchState();\n\n if (this.modeSingleSelect) {\n this._search.focus();\n this.closeDropdown();\n }\n }\n\n onKeyDownSearch(e: KeyboardEvent) {\n e.stopPropagation();\n const items = this._list?.getKeyboardNavigationItems();\n const hasItems = items && items.length > 0;\n const popoverOpened = this._popover.open;\n const isEscAndPopoverOpened = isEscape(e) && popoverOpened;\n const isDownAndPopoverClosed = isDown(e) && !popoverOpened;\n const isDownAndPopoverOpened = isDown(e) && popoverOpened;\n\n if (!hasItems) {\n return;\n }\n\n if (isEscAndPopoverOpened) {\n return this.closeDropdown();\n }\n\n if (isDownAndPopoverClosed) {\n e.preventDefault();\n this.openDropdown();\n this.focusFirstItem(items);\n if (this.showImageFlags) {\n this.handleImagePosition(items, 0);\n }\n return;\n }\n\n if (isDownAndPopoverOpened) {\n e.preventDefault();\n if (this.showImageFlags) {\n this.handleImagePosition(items, 0);\n }\n return this.focusFirstItem(items);\n }\n }\n\n focusFirstItem(items: UDExListItemBase[]): void {\n this._list.setTabIndexByIndex(items, 0);\n if (!this.tabNavigationEnabled) {\n this._selectedOption = items[0].label;\n }\n\n if (items[0].isGroup) {\n this._list.focusHeader(items[0]);\n } else {\n items[0].focus();\n }\n }\n\n handleSearchChange(e: CustomEvent) {\n const inputValue = (e.target as HTMLInputElement)?.value || \"\";\n this._inputValue = inputValue;\n\n if (inputValue) {\n this._selectedOption = \"\";\n }\n\n this.onSearch(inputValue);\n\n if (!this._popover.open) {\n this.openDropdown();\n }\n }\n\n handleDirection() {\n const directionStyles = window.getComputedStyle(this).getPropertyValue(\"direction\");\n this._direction = directionStyles || \"ltr\";\n }\n\n handleDropdownBeforeClose() {\n this.fireDecoratorEvent(\"before-close\");\n }\n\n dropdownBeforeOpen() {\n if (this.height) {\n this._setContentHeight();\n }\n\n this.fireDecoratorEvent(\"before-open\");\n }\n\n fireEventDropdownOpen() {\n this.fireDecoratorEvent(\"open\");\n }\n\n fireEventDropdownClose() {\n this.fireDecoratorEvent(\"close\");\n }\n\n handleButtonClick() {\n if (!this.isDisabled) {\n this._search.focus();\n\n if (this._popover.open) {\n this.closeDropdown();\n } else {\n this.openDropdown();\n }\n }\n }\n\n handleInputClick() {\n if (!this.isDisabled) {\n this._search.focus();\n this.openDropdown();\n }\n }\n\n openDropdown() {\n this._popover.opener = this._trigger;\n this._popover.open = true;\n this._open = true;\n }\n\n closeDropdown() {\n if (this._popover.open) {\n this._open = false;\n this._popover.open = false;\n }\n }\n\n inputFocusIn() {\n if (!this.isDisabled) {\n this._focused = true;\n }\n }\n\n resetSearchState() {\n this._inputValue = \"\";\n setTimeout(() => this.resetSearch(), 0);\n\n if (this.modeSingleSelect) {\n this.setSelectOption();\n }\n }\n\n setSelectOption() {\n this._selectedOption = this.selectedItems[0]?.label || \"\";\n }\n\n updatePopoverWidth() {\n this._popover.style.setProperty(this._paneWidthVariableName, `${this._trigger.offsetWidth}px`);\n }\n\n handleImagePosition(items: UDExListItemBase[], index: number) {\n const image = items[index].querySelector<HTMLElement>(\".udex-text-field__image\");\n const imagePlaceholder = this.shadowRoot!.querySelector<HTMLElement>(\".udex-text-field__input > .udex-text-field__image\");\n\n if (imagePlaceholder) {\n imagePlaceholder.style.backgroundPosition = image?.style?.backgroundPosition || \"\";\n }\n }\n\n get ariaDescribedbyText(): string {\n if (this.modeSingleSelect) {\n return this._selectedOption;\n }\n const tags = this.selectedItems.filter(item => !item.isGroup);\n return getTokensCountText(tags.length);\n }\n\n get trigger(): HTMLElement {\n return this.shadowRoot!.querySelector(\".udex-text-field__wrap\")!;\n }\n\n get isDisabled(): boolean {\n return this.readonly || this.displayonly || this.disabled;\n }\n\n get labelClass(): string {\n const baseClass = this._labelBaseClass;\n const isActive = [\n this._inputValue,\n this._focused,\n this._open,\n this._selectedOption,\n this.hasSelectedItems,\n ].some(Boolean);\n return isActive ? `${baseClass} ${baseClass}_active` : baseClass;\n }\n\n get isReadOrDisplayOnly(): boolean {\n return this.readonly || this.displayonly;\n }\n\n get hasSelectedItems(): boolean {\n return this.selectedItems.length > 0;\n }\n\n get additionalClassName(): string {\n return this._stickyClass;\n }\n\n get accInfo(): { ariaLabel: string } {\n return {\n \"ariaLabel\": getAllAccessibleNameRefTexts(this) || this.accessibleName || this.label || translate(UDExSelectBase, COUNTRY_SELECT),\n };\n }\n\n get popoverId(): string {\n return `${this._id}_${this._dropdownClass}`;\n }\n\n get listboxRole(): string {\n return this._listBoxRole;\n }\n\n get hideDropdownSearch(): boolean {\n return true;\n }\n\n get showImageFlags(): boolean {\n return false;\n }\n\n get searchableList() {\n this.defaultAccessibleRole = this._listBoxRole;\n return executeTemplate(UDExSelectBase.searchableListBaseTemplate, this);\n }\n\n get countryFlag() {\n return executeTemplate(UDExSelectBase.countryFlagTemplate, this);\n }\n\n static get countryFlagTemplate() {\n return CountrySelectorTemplate;\n }\n\n static get searchableListBaseTemplate() {\n return SearchableListBaseTemplate;\n }\n}\n\nexport default UDExSelectBase;\nexport type { UDExSelectBaseEvents };\n"]}
|
package/dist/Tab.d.ts
CHANGED
|
@@ -10,14 +10,18 @@ export interface ITab extends UI5Element {
|
|
|
10
10
|
selected?: boolean;
|
|
11
11
|
numberBadge?: string;
|
|
12
12
|
text?: string;
|
|
13
|
+
bodyText?: string;
|
|
13
14
|
showAttentionBadge?: boolean;
|
|
14
15
|
accessibleName?: string;
|
|
15
16
|
href?: string;
|
|
16
17
|
content?: Array<Node>;
|
|
18
|
+
link?: Array<HTMLElement>;
|
|
17
19
|
hasIcon: boolean;
|
|
20
|
+
isMobile: boolean;
|
|
18
21
|
isOnSelectedTab: boolean;
|
|
19
22
|
hasNotIcon: boolean;
|
|
20
23
|
hasNotHref: boolean;
|
|
24
|
+
hasLinkSlot: boolean;
|
|
21
25
|
selectedClass: string;
|
|
22
26
|
tabNavigation: any;
|
|
23
27
|
_individualSlot: string;
|
|
@@ -25,6 +29,8 @@ export interface ITab extends UI5Element {
|
|
|
25
29
|
_slotName: string;
|
|
26
30
|
_selected?: boolean;
|
|
27
31
|
_tabIndex: string;
|
|
32
|
+
_isMobile: boolean;
|
|
33
|
+
_isVertical: boolean;
|
|
28
34
|
_iconWithoutBackground: boolean;
|
|
29
35
|
_posinset?: number;
|
|
30
36
|
_setsize?: number;
|
|
@@ -65,6 +71,13 @@ declare class UDExTab extends UI5Element implements ITab {
|
|
|
65
71
|
* @public
|
|
66
72
|
*/
|
|
67
73
|
text: string;
|
|
74
|
+
/**
|
|
75
|
+
* Defines the body text (supplementary description) of the tab.
|
|
76
|
+
* Optional text to provide additional context or explanation.
|
|
77
|
+
*
|
|
78
|
+
* @public
|
|
79
|
+
*/
|
|
80
|
+
bodyText?: string;
|
|
68
81
|
/**
|
|
69
82
|
* Accessible name for tab.
|
|
70
83
|
*
|
|
@@ -123,6 +136,26 @@ declare class UDExTab extends UI5Element implements ITab {
|
|
|
123
136
|
* @default false
|
|
124
137
|
*/
|
|
125
138
|
_tabIndex: string;
|
|
139
|
+
/**
|
|
140
|
+
* Defines if the viewport is mobile size.
|
|
141
|
+
*
|
|
142
|
+
* @private
|
|
143
|
+
* @default false
|
|
144
|
+
*/
|
|
145
|
+
_isMobile: boolean;
|
|
146
|
+
/**
|
|
147
|
+
* Defines if the tab navigation is in vertical orientation.
|
|
148
|
+
*
|
|
149
|
+
* @private
|
|
150
|
+
* @default false
|
|
151
|
+
*/
|
|
152
|
+
_isVertical: boolean;
|
|
153
|
+
/**
|
|
154
|
+
* Defines the width of the tab.
|
|
155
|
+
*
|
|
156
|
+
* @private
|
|
157
|
+
*/
|
|
158
|
+
_width?: string;
|
|
126
159
|
/**
|
|
127
160
|
* Defines the background color of the component.
|
|
128
161
|
*
|
|
@@ -137,6 +170,14 @@ declare class UDExTab extends UI5Element implements ITab {
|
|
|
137
170
|
* @public
|
|
138
171
|
*/
|
|
139
172
|
content: Array<Node>;
|
|
173
|
+
/**
|
|
174
|
+
* Defines the link(s) to be displayed in the tab header (vertical orientation only).
|
|
175
|
+
* Use this slot to add one or more udex-link elements to the tab button.
|
|
176
|
+
*
|
|
177
|
+
* @slot link
|
|
178
|
+
* @public
|
|
179
|
+
*/
|
|
180
|
+
link: Array<HTMLElement>;
|
|
140
181
|
static i18nBundle: I18nBundle;
|
|
141
182
|
getElementInHeader?: () => ITab | null;
|
|
142
183
|
_individualSlot: string;
|
|
@@ -146,8 +187,23 @@ declare class UDExTab extends UI5Element implements ITab {
|
|
|
146
187
|
get hasIcon(): boolean;
|
|
147
188
|
get classWithIcon(): string;
|
|
148
189
|
get buttonClassWithIcon(): string;
|
|
190
|
+
get isMobile(): boolean;
|
|
191
|
+
get isMobileVertical(): boolean;
|
|
149
192
|
get hasNotIcon(): boolean;
|
|
150
193
|
get hasNotHref(): boolean;
|
|
194
|
+
get hasBodyText(): boolean;
|
|
195
|
+
/**
|
|
196
|
+
* Returns true if aria-describedby should point to bodyText.
|
|
197
|
+
* Only applies to selected tabs with bodyText in vertical orientation.
|
|
198
|
+
*/
|
|
199
|
+
get ariaDescribedByBodyText(): boolean;
|
|
200
|
+
get hasLinkSlot(): boolean;
|
|
201
|
+
/**
|
|
202
|
+
* Returns the HTML content of the link slot elements.
|
|
203
|
+
* This is used to render the links in the TabHeader template.
|
|
204
|
+
*/
|
|
205
|
+
get linkSlotHtml(): string;
|
|
206
|
+
get hasBodyTextOrLink(): boolean;
|
|
151
207
|
get effectiveSelected(): boolean;
|
|
152
208
|
get selectedClass(): string;
|
|
153
209
|
get classWithIconWithoutBackground(): string;
|
|
@@ -155,6 +211,7 @@ declare class UDExTab extends UI5Element implements ITab {
|
|
|
155
211
|
get ariaLabelledBy(): string;
|
|
156
212
|
get accessibleNameText(): string;
|
|
157
213
|
get linkTabIndex(): string;
|
|
214
|
+
get widthStyle(): string;
|
|
158
215
|
get tabNavigation(): object;
|
|
159
216
|
get tabInOverflow(): object;
|
|
160
217
|
static get headerTemplate(): typeof TabHeaderTemplate;
|
package/dist/Tab.js
CHANGED
|
@@ -50,6 +50,20 @@ let UDExTab = UDExTab_1 = class UDExTab extends UI5Element {
|
|
|
50
50
|
* @public
|
|
51
51
|
*/
|
|
52
52
|
this.target = UDExTarget._self;
|
|
53
|
+
/**
|
|
54
|
+
* Defines if the viewport is mobile size.
|
|
55
|
+
*
|
|
56
|
+
* @private
|
|
57
|
+
* @default false
|
|
58
|
+
*/
|
|
59
|
+
this._isMobile = false;
|
|
60
|
+
/**
|
|
61
|
+
* Defines if the tab navigation is in vertical orientation.
|
|
62
|
+
*
|
|
63
|
+
* @private
|
|
64
|
+
* @default false
|
|
65
|
+
*/
|
|
66
|
+
this._isVertical = false;
|
|
53
67
|
}
|
|
54
68
|
getTabInHeaderDomRef() {
|
|
55
69
|
if (this.getElementInHeader) {
|
|
@@ -72,12 +86,44 @@ let UDExTab = UDExTab_1 = class UDExTab extends UI5Element {
|
|
|
72
86
|
get buttonClassWithIcon() {
|
|
73
87
|
return this.hasIcon ? " udex-tab-navigation__button-tab--icon" : "";
|
|
74
88
|
}
|
|
89
|
+
get isMobile() {
|
|
90
|
+
return this._isMobile;
|
|
91
|
+
}
|
|
92
|
+
get isMobileVertical() {
|
|
93
|
+
return this._isMobile && this._isVertical;
|
|
94
|
+
}
|
|
75
95
|
get hasNotIcon() {
|
|
76
96
|
return !this.icon && this.showAttentionBadge;
|
|
77
97
|
}
|
|
78
98
|
get hasNotHref() {
|
|
79
99
|
return !this.href;
|
|
80
100
|
}
|
|
101
|
+
get hasBodyText() {
|
|
102
|
+
return !!this.bodyText;
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Returns true if aria-describedby should point to bodyText.
|
|
106
|
+
* Only applies to selected tabs with bodyText in vertical orientation.
|
|
107
|
+
*/
|
|
108
|
+
get ariaDescribedByBodyText() {
|
|
109
|
+
return this.effectiveSelected && this.hasBodyText && this._isVertical;
|
|
110
|
+
}
|
|
111
|
+
get hasLinkSlot() {
|
|
112
|
+
return this.link && this.link.length > 0;
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Returns the HTML content of the link slot elements.
|
|
116
|
+
* This is used to render the links in the TabHeader template.
|
|
117
|
+
*/
|
|
118
|
+
get linkSlotHtml() {
|
|
119
|
+
if (!this.link || this.link.length === 0) {
|
|
120
|
+
return "";
|
|
121
|
+
}
|
|
122
|
+
return this.link.map(l => l.outerHTML).join("");
|
|
123
|
+
}
|
|
124
|
+
get hasBodyTextOrLink() {
|
|
125
|
+
return this._isVertical && (this.hasBodyText || this.hasLinkSlot);
|
|
126
|
+
}
|
|
81
127
|
get effectiveSelected() {
|
|
82
128
|
return this.selected || this._selected;
|
|
83
129
|
}
|
|
@@ -106,6 +152,12 @@ let UDExTab = UDExTab_1 = class UDExTab extends UI5Element {
|
|
|
106
152
|
get linkTabIndex() {
|
|
107
153
|
return this.href && this.effectiveSelected ? "1" : "-1";
|
|
108
154
|
}
|
|
155
|
+
get widthStyle() {
|
|
156
|
+
if (this._width && this._width !== "auto") {
|
|
157
|
+
return `width: ${this._width};`;
|
|
158
|
+
}
|
|
159
|
+
return "";
|
|
160
|
+
}
|
|
109
161
|
get tabNavigation() {
|
|
110
162
|
return executeTemplate(UDExTab_1.headerTemplate, this);
|
|
111
163
|
}
|
|
@@ -125,6 +177,9 @@ __decorate([
|
|
|
125
177
|
__decorate([
|
|
126
178
|
property({ type: String })
|
|
127
179
|
], UDExTab.prototype, "text", void 0);
|
|
180
|
+
__decorate([
|
|
181
|
+
property({ type: String })
|
|
182
|
+
], UDExTab.prototype, "bodyText", void 0);
|
|
128
183
|
__decorate([
|
|
129
184
|
property({ type: String })
|
|
130
185
|
], UDExTab.prototype, "accessibleName", void 0);
|
|
@@ -152,12 +207,24 @@ __decorate([
|
|
|
152
207
|
__decorate([
|
|
153
208
|
property({ type: String })
|
|
154
209
|
], UDExTab.prototype, "_tabIndex", void 0);
|
|
210
|
+
__decorate([
|
|
211
|
+
property({ type: Boolean, noAttribute: true })
|
|
212
|
+
], UDExTab.prototype, "_isMobile", void 0);
|
|
213
|
+
__decorate([
|
|
214
|
+
property({ type: Boolean, noAttribute: true })
|
|
215
|
+
], UDExTab.prototype, "_isVertical", void 0);
|
|
216
|
+
__decorate([
|
|
217
|
+
property({ type: String, noAttribute: true })
|
|
218
|
+
], UDExTab.prototype, "_width", void 0);
|
|
155
219
|
__decorate([
|
|
156
220
|
property({ type: Boolean })
|
|
157
221
|
], UDExTab.prototype, "_iconWithoutBackground", void 0);
|
|
158
222
|
__decorate([
|
|
159
223
|
slot({ type: Node, "default": true })
|
|
160
224
|
], UDExTab.prototype, "content", void 0);
|
|
225
|
+
__decorate([
|
|
226
|
+
slot({ type: HTMLElement })
|
|
227
|
+
], UDExTab.prototype, "link", void 0);
|
|
161
228
|
__decorate([
|
|
162
229
|
i18n("@sapudex/web-components")
|
|
163
230
|
], UDExTab, "i18nBundle", void 0);
|