@sapudex/web-components 2.22.0 → 2.24.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/cypress/specs/CountrySelector.cy.tsx +158 -144
- package/cypress/specs/EventRibbon.cy.tsx +3 -1
- package/cypress/specs/SelectBox.cy.tsx +173 -206
- package/cypress/specs/Tag.cy.tsx +1 -1
- package/cypress/specs/TextField.cy.tsx +15 -0
- package/cypress/specs/Textarea.cy.tsx +15 -33
- package/dist/Checkbox.js +4 -0
- package/dist/Checkbox.js.map +1 -1
- package/dist/CountrySelector.d.ts +25 -142
- package/dist/CountrySelector.js +91 -268
- package/dist/CountrySelector.js.map +1 -1
- package/dist/FilterMenu.d.ts +14 -2
- package/dist/FilterMenu.js +11 -1
- package/dist/FilterMenu.js.map +1 -1
- package/dist/Footer.js +2 -2
- package/dist/Footer.js.map +1 -1
- package/dist/FooterTemplate.js +1 -1
- package/dist/FooterTemplate.js.map +1 -1
- package/dist/List.js +2 -3
- package/dist/List.js.map +1 -1
- package/dist/ListGroupHeaderBase.d.ts +1 -0
- package/dist/ListGroupHeaderBase.js +3 -0
- package/dist/ListGroupHeaderBase.js.map +1 -1
- package/dist/ListItemBase.d.ts +12 -0
- package/dist/ListItemBase.js +17 -2
- package/dist/ListItemBase.js.map +1 -1
- package/dist/MediaPlayer.js +4 -0
- package/dist/MediaPlayer.js.map +1 -1
- package/dist/MediaPlayerTemplate.js +4 -4
- package/dist/MediaPlayerTemplate.js.map +1 -1
- package/dist/SearchableListBase.d.ts +23 -16
- package/dist/SearchableListBase.js +48 -72
- package/dist/SearchableListBase.js.map +1 -1
- package/dist/SelectBase.d.ts +193 -0
- package/dist/SelectBase.js +428 -0
- package/dist/SelectBase.js.map +1 -0
- package/dist/SelectBox.d.ts +30 -152
- package/dist/SelectBox.js +139 -348
- package/dist/SelectBox.js.map +1 -1
- package/dist/TagGroup.d.ts +23 -5
- package/dist/TagGroup.js +37 -16
- package/dist/TagGroup.js.map +1 -1
- package/dist/TagTemplate.js +4 -2
- package/dist/TagTemplate.js.map +1 -1
- package/dist/TextArea.d.ts +1 -1
- package/dist/TextArea.js +5 -5
- package/dist/TextArea.js.map +1 -1
- package/dist/TextAreaTemplate.d.ts +2 -0
- package/dist/TextAreaTemplate.js +13 -0
- package/dist/TextAreaTemplate.js.map +1 -0
- package/dist/TextField.d.ts +29 -4
- package/dist/TextField.js +32 -16
- package/dist/TextField.js.map +1 -1
- package/dist/TextFieldTemplate.d.ts +2 -0
- package/dist/TextFieldTemplate.js +14 -0
- package/dist/TextFieldTemplate.js.map +1 -0
- package/dist/assets/{InputSuggestions-By00xQan.js → InputSuggestions-63QG0i9j.js} +1 -1
- package/dist/assets/{ListItemStandardExpandableTextTemplate-BGtoxRbA.js → ListItemStandardExpandableTextTemplate-B1CpqSCb.js} +1 -1
- package/dist/assets/{bundle.esm-9yDdQqR5.js → bundle.esm-lUYJDofa.js} +218 -217
- package/dist/assets/fi-BGPAljj_.js +1 -0
- package/dist/assets/gl-DqaooM6m.js +1 -0
- package/dist/assets/{video.es-DIP_dh4I.js → video.es-BDeHzm02.js} +32 -32
- package/dist/css/themes/Checkbox.css +1 -1
- package/dist/css/themes/CountrySelector.css +1 -1
- package/dist/css/themes/EventRibbon.css +1 -1
- package/dist/css/themes/Footer.css +1 -1
- package/dist/css/themes/ImageGridTickerItem.css +1 -1
- package/dist/css/themes/InputGroup.css +1 -1
- package/dist/css/themes/Link.css +1 -1
- package/dist/css/themes/ListItem.css +1 -1
- package/dist/css/themes/MastheadItem.css +1 -1
- package/dist/css/themes/MastheadMobileMenu.css +1 -1
- package/dist/css/themes/RadioButton.css +1 -1
- package/dist/css/themes/RatingIndicator.css +1 -1
- package/dist/css/themes/Search.css +1 -1
- package/dist/css/themes/SelectBase.css +1 -0
- package/dist/css/themes/SelectBox.css +1 -1
- package/dist/css/themes/Slider.css +1 -1
- package/dist/css/themes/StatusMessage.css +1 -1
- package/dist/css/themes/TagGroup.css +1 -1
- package/dist/css/themes/TextField.css +1 -1
- package/dist/custom-elements-internal.json +1088 -1284
- package/dist/custom-elements.json +284 -934
- package/dist/generated/templates/CountrySelectorTemplate.lit.js +3 -3
- package/dist/generated/templates/CountrySelectorTemplate.lit.js.map +1 -1
- package/dist/generated/templates/ListItemTemplate.lit.js +1 -1
- package/dist/generated/templates/ListItemTemplate.lit.js.map +1 -1
- package/dist/generated/templates/SelectBoxTemplate.lit.js +10 -9
- package/dist/generated/templates/SelectBoxTemplate.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/CountrySelector.css.d.ts +1 -1
- package/dist/generated/themes/CountrySelector.css.js +1 -1
- package/dist/generated/themes/CountrySelector.css.js.map +1 -1
- package/dist/generated/themes/EventRibbon.css.d.ts +1 -1
- package/dist/generated/themes/EventRibbon.css.js +1 -1
- package/dist/generated/themes/EventRibbon.css.js.map +1 -1
- package/dist/generated/themes/Footer.css.d.ts +1 -1
- package/dist/generated/themes/Footer.css.js +1 -1
- package/dist/generated/themes/Footer.css.js.map +1 -1
- package/dist/generated/themes/ImageGridTickerItem.css.d.ts +1 -1
- package/dist/generated/themes/ImageGridTickerItem.css.js +1 -1
- package/dist/generated/themes/ImageGridTickerItem.css.js.map +1 -1
- package/dist/generated/themes/InputGroup.css.d.ts +1 -1
- package/dist/generated/themes/InputGroup.css.js +1 -1
- package/dist/generated/themes/InputGroup.css.js.map +1 -1
- package/dist/generated/themes/Link.css.d.ts +1 -1
- package/dist/generated/themes/Link.css.js +1 -1
- package/dist/generated/themes/Link.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/MastheadItem.css.d.ts +1 -1
- package/dist/generated/themes/MastheadItem.css.js +1 -1
- package/dist/generated/themes/MastheadItem.css.js.map +1 -1
- package/dist/generated/themes/MastheadMobileMenu.css.d.ts +1 -1
- package/dist/generated/themes/MastheadMobileMenu.css.js +1 -1
- package/dist/generated/themes/MastheadMobileMenu.css.js.map +1 -1
- package/dist/generated/themes/RadioButton.css.d.ts +1 -1
- package/dist/generated/themes/RadioButton.css.js +1 -1
- package/dist/generated/themes/RadioButton.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/Search.css.d.ts +1 -1
- package/dist/generated/themes/Search.css.js +1 -1
- package/dist/generated/themes/Search.css.js.map +1 -1
- package/dist/generated/themes/SelectBase.css.d.ts +2 -0
- package/dist/generated/themes/SelectBase.css.js +8 -0
- package/dist/generated/themes/SelectBase.css.js.map +1 -0
- package/dist/generated/themes/SelectBox.css.d.ts +1 -1
- package/dist/generated/themes/SelectBox.css.js +1 -1
- package/dist/generated/themes/SelectBox.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/StatusMessage.css.d.ts +1 -1
- package/dist/generated/themes/StatusMessage.css.js +1 -1
- package/dist/generated/themes/StatusMessage.css.js.map +1 -1
- package/dist/generated/themes/TagGroup.css.d.ts +1 -1
- package/dist/generated/themes/TagGroup.css.js +1 -1
- package/dist/generated/themes/TagGroup.css.js.map +1 -1
- package/dist/generated/themes/TextField.css.d.ts +1 -1
- package/dist/generated/themes/TextField.css.js +1 -1
- package/dist/generated/themes/TextField.css.js.map +1 -1
- package/dist/types/common.d.ts +1 -1
- package/dist/types/common.js +1 -1
- package/dist/types/common.js.map +1 -1
- package/dist/vscode.html-custom-data.json +23 -234
- package/dist/web-types.json +256 -811
- package/package.json +2 -2
- package/src/Checkbox.ts +4 -0
- package/src/CountrySelector.hbs +6 -61
- package/src/CountrySelector.ts +93 -375
- package/src/FilterMenu.ts +13 -3
- package/src/Footer.ts +2 -2
- package/src/FooterTemplate.tsx +5 -4
- package/src/List.ts +2 -3
- package/src/ListGroupHeaderBase.ts +4 -0
- package/src/ListItem.hbs +0 -1
- package/src/ListItemBase.ts +17 -3
- package/src/MediaPlayer.ts +4 -0
- package/src/MediaPlayerTemplate.tsx +0 -1
- package/src/SearchableListBase.ts +68 -83
- package/src/SelectBase.ts +580 -0
- package/src/SelectBox.hbs +118 -107
- package/src/SelectBox.ts +155 -445
- package/src/TagGroup.ts +53 -19
- package/src/TagTemplate.tsx +4 -2
- package/src/TextArea.ts +5 -5
- package/src/TextAreaTemplate.tsx +67 -0
- package/src/TextField.ts +57 -24
- package/src/TextFieldTemplate.tsx +90 -0
- package/src/generated/templates/CountrySelectorTemplate.lit.ts +2 -2
- package/src/generated/templates/ListItemTemplate.lit.ts +1 -1
- package/src/generated/templates/SelectBoxTemplate.lit.ts +10 -9
- package/src/generated/themes/Checkbox.css.ts +1 -1
- package/src/generated/themes/CountrySelector.css.ts +1 -1
- package/src/generated/themes/EventRibbon.css.ts +1 -1
- package/src/generated/themes/Footer.css.ts +1 -1
- package/src/generated/themes/ImageGridTickerItem.css.ts +1 -1
- package/src/generated/themes/InputGroup.css.ts +1 -1
- package/src/generated/themes/Link.css.ts +1 -1
- package/src/generated/themes/ListItem.css.ts +1 -1
- package/src/generated/themes/MastheadItem.css.ts +1 -1
- package/src/generated/themes/MastheadMobileMenu.css.ts +1 -1
- package/src/generated/themes/RadioButton.css.ts +1 -1
- package/src/generated/themes/RatingIndicator.css.ts +1 -1
- package/src/generated/themes/Search.css.ts +1 -1
- package/src/generated/themes/SelectBase.css.ts +9 -0
- package/src/generated/themes/SelectBox.css.ts +1 -1
- package/src/generated/themes/Slider.css.ts +1 -1
- package/src/generated/themes/StatusMessage.css.ts +1 -1
- package/src/generated/themes/TagGroup.css.ts +1 -1
- package/src/generated/themes/TextField.css.ts +1 -1
- package/src/themes/Checkbox.css +21 -15
- package/src/themes/CountrySelector.css +42 -115
- package/src/themes/EventRibbon.css +21 -13
- package/src/themes/Footer.css +3 -2
- package/src/themes/ImageGridTickerItem.css +1 -1
- package/src/themes/InputGroup.css +11 -6
- package/src/themes/Link.css +2 -0
- package/src/themes/ListItem.css +6 -0
- package/src/themes/MastheadItem.css +0 -2
- package/src/themes/MastheadMobileMenu.css +2 -0
- package/src/themes/RadioButton.css +29 -6
- package/src/themes/Search.css +0 -1
- package/src/themes/SelectBase.css +239 -0
- package/src/themes/SelectBox.css +13 -195
- package/src/themes/StatusMessage.css +1 -2
- package/src/themes/TagGroup.css +0 -1
- package/src/themes/TextField.css +7 -7
- package/src/types/common.ts +1 -1
- package/dist/assets/fi-hYXoEotT.js +0 -1
- package/dist/assets/gl-eZFVp-ap.js +0 -1
- package/dist/generated/templates/TextAreaTemplate.lit.d.ts +0 -3
- package/dist/generated/templates/TextAreaTemplate.lit.js +0 -13
- package/dist/generated/templates/TextAreaTemplate.lit.js.map +0 -1
- package/dist/generated/templates/TextFieldTemplate.lit.d.ts +0 -3
- package/dist/generated/templates/TextFieldTemplate.lit.js +0 -14
- package/dist/generated/templates/TextFieldTemplate.lit.js.map +0 -1
- package/src/TextArea.hbs +0 -54
- package/src/TextField.hbs +0 -78
- package/src/generated/templates/TextAreaTemplate.lit.ts +0 -17
- package/src/generated/templates/TextFieldTemplate.lit.ts +0 -18
package/src/TagGroup.ts
CHANGED
|
@@ -10,12 +10,12 @@ import jsxRenderer from "@ui5/webcomponents-base/renderer/JsxRenderer.js";
|
|
|
10
10
|
import Token from "@ui5/webcomponents/dist/Token.js";
|
|
11
11
|
import UDExTag from "./Tag.js";
|
|
12
12
|
import UDExTooltip from "./Tooltip.js";
|
|
13
|
+
import { Placement } from "./types/Dropdown.js";
|
|
13
14
|
|
|
14
15
|
import TagGroupTemplate from "./TagGroupTemplate.js";
|
|
15
16
|
|
|
16
17
|
// Styles
|
|
17
18
|
import TagGroupCss from "./generated/themes/TagGroup.css.js";
|
|
18
|
-
import { Placement } from "./types/Dropdown.js";
|
|
19
19
|
|
|
20
20
|
type UDExTagClickEventDetail = {
|
|
21
21
|
tag: UDExTag,
|
|
@@ -96,6 +96,7 @@ class UDExTagGroup extends UI5Element {
|
|
|
96
96
|
*/
|
|
97
97
|
@property({ type: Boolean })
|
|
98
98
|
tokenizerExpanded: boolean = false;
|
|
99
|
+
|
|
99
100
|
/**
|
|
100
101
|
* Defines whether the component is in disabled state.
|
|
101
102
|
*
|
|
@@ -126,6 +127,7 @@ class UDExTagGroup extends UI5Element {
|
|
|
126
127
|
/**
|
|
127
128
|
* Defines the tags.
|
|
128
129
|
*
|
|
130
|
+
* @default "[]"
|
|
129
131
|
* @public
|
|
130
132
|
*/
|
|
131
133
|
@slot({ type: HTMLElement, "default": true })
|
|
@@ -141,11 +143,32 @@ class UDExTagGroup extends UI5Element {
|
|
|
141
143
|
tooltipPlacement: `${Placement}` = Placement.Bottom;
|
|
142
144
|
|
|
143
145
|
/**
|
|
146
|
+
* Determines whether there are hidden tags in the component.
|
|
147
|
+
*
|
|
148
|
+
* @default false
|
|
144
149
|
* @private
|
|
145
150
|
*/
|
|
146
151
|
@property({ type: Boolean })
|
|
147
152
|
_isHiddenTags!: boolean;
|
|
148
153
|
|
|
154
|
+
/**
|
|
155
|
+
* Determines whether the "More" button should skip focus.
|
|
156
|
+
*
|
|
157
|
+
* @default false
|
|
158
|
+
* @private
|
|
159
|
+
*/
|
|
160
|
+
@property({ type: Boolean })
|
|
161
|
+
_skipMoreButtonFocus!: boolean;
|
|
162
|
+
|
|
163
|
+
/**
|
|
164
|
+
* Determines whether the tokenizer should scroll to the end.
|
|
165
|
+
*
|
|
166
|
+
* @default false
|
|
167
|
+
* @private
|
|
168
|
+
*/
|
|
169
|
+
@property({ type: Boolean })
|
|
170
|
+
_scrollToEnd: boolean = false;
|
|
171
|
+
|
|
149
172
|
_tokenizer!: Tokenizer;
|
|
150
173
|
_nMoreBtn!: HTMLElement | null;
|
|
151
174
|
_resizeHandler: () => void;
|
|
@@ -155,25 +178,33 @@ class UDExTagGroup extends UI5Element {
|
|
|
155
178
|
this._resizeHandler = this._onResize.bind(this);
|
|
156
179
|
}
|
|
157
180
|
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
}
|
|
161
|
-
|
|
162
|
-
get isReadOrDisplayOnly(): boolean {
|
|
163
|
-
return this.readonly || this.displayonly;
|
|
181
|
+
onEnterDOM(): void {
|
|
182
|
+
ResizeHandler.register(this, this._resizeHandler);
|
|
164
183
|
}
|
|
165
184
|
|
|
166
|
-
|
|
167
|
-
|
|
185
|
+
onExitDOM(): void {
|
|
186
|
+
ResizeHandler.deregister(this, this._resizeHandler);
|
|
187
|
+
this._nMoreBtn?.removeEventListener("keydown", this._nMoreKeyDownHandler.bind(this));
|
|
168
188
|
}
|
|
169
189
|
|
|
170
190
|
onAfterRendering(): void {
|
|
171
191
|
this._tokenizer = this.tokenizer;
|
|
172
192
|
this._nMoreBtn = this._tokenizer.moreLink || null;
|
|
193
|
+
|
|
173
194
|
if (!this.readonly && !this.disabled && this._nMoreBtn && !this._nMoreBtn.hasAttribute("tabindex")) {
|
|
174
195
|
this._nMoreBtn.setAttribute("tabindex", "0");
|
|
175
196
|
this._nMoreBtn.addEventListener("keydown", this._nMoreKeyDownHandler.bind(this));
|
|
176
197
|
}
|
|
198
|
+
|
|
199
|
+
if (!this.displayonly && this._skipMoreButtonFocus && this._nMoreBtn) {
|
|
200
|
+
this._nMoreBtn.setAttribute("tabindex", "-1");
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
if (this._scrollToEnd) {
|
|
204
|
+
setTimeout(() => {
|
|
205
|
+
this._tokenizer.scrollToEnd();
|
|
206
|
+
}, 50);
|
|
207
|
+
}
|
|
177
208
|
}
|
|
178
209
|
|
|
179
210
|
_nMoreKeyDownHandler(e: Event) {
|
|
@@ -182,15 +213,6 @@ class UDExTagGroup extends UI5Element {
|
|
|
182
213
|
}
|
|
183
214
|
}
|
|
184
215
|
|
|
185
|
-
onEnterDOM(): void {
|
|
186
|
-
ResizeHandler.register(this, this._resizeHandler);
|
|
187
|
-
}
|
|
188
|
-
|
|
189
|
-
onExitDOM(): void {
|
|
190
|
-
ResizeHandler.deregister(this, this._resizeHandler);
|
|
191
|
-
this._nMoreBtn?.removeEventListener("keydown", this._nMoreKeyDownHandler.bind(this));
|
|
192
|
-
}
|
|
193
|
-
|
|
194
216
|
_onResize(): void {
|
|
195
217
|
this._isHiddenTags = false;
|
|
196
218
|
this._isHiddenTags = this._tokenizer?._nMoreCount > 0;
|
|
@@ -213,7 +235,7 @@ class UDExTagGroup extends UI5Element {
|
|
|
213
235
|
handleTagKeyDown(e: KeyboardEvent): void {
|
|
214
236
|
e.stopPropagation();
|
|
215
237
|
|
|
216
|
-
if (isEscape(e)) {
|
|
238
|
+
if (isEscape(e) && this.tooltip) {
|
|
217
239
|
this.tooltip.open = false;
|
|
218
240
|
this._nMoreBtn?.focus();
|
|
219
241
|
return;
|
|
@@ -233,6 +255,18 @@ class UDExTagGroup extends UI5Element {
|
|
|
233
255
|
}
|
|
234
256
|
}
|
|
235
257
|
|
|
258
|
+
get hiddenTags(): Token[] {
|
|
259
|
+
return this._tokenizer?.overflownTokens || [];
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
get isReadOrDisplayOnly(): boolean {
|
|
263
|
+
return this.readonly || this.displayonly;
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
get tokenizer(): Tokenizer {
|
|
267
|
+
return this.shadowRoot!.querySelector<Tokenizer>(`#${this._id}-tag-group-tokenizer`)!;
|
|
268
|
+
}
|
|
269
|
+
|
|
236
270
|
get tooltip(): UDExTooltip {
|
|
237
271
|
return this.shadowRoot!.querySelector<UDExTooltip>(`#${this._id}-tag-group-tooltip`)!;
|
|
238
272
|
}
|
package/src/TagTemplate.tsx
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import type UDExTag from "./Tag.js";
|
|
2
2
|
import UI5Icon from "@ui5/webcomponents/dist/Icon.js";
|
|
3
3
|
import type { AriaRole } from "@ui5/webcomponents-base/dist/types.js";
|
|
4
|
+
// Move it to SelectBox template after rewriting to TSX
|
|
5
|
+
import { cleanLabel } from "./utils/listItemLabelUtils.js";
|
|
4
6
|
|
|
5
7
|
export default function TagTemplate(this: UDExTag) {
|
|
6
8
|
const rootClass = "udex-tag";
|
|
@@ -8,7 +10,7 @@ export default function TagTemplate(this: UDExTag) {
|
|
|
8
10
|
return (
|
|
9
11
|
this.readOnly ? (
|
|
10
12
|
<div class={this.tagClasses}>
|
|
11
|
-
<span class={`${rootClass}__text`}>{this.text}</span>
|
|
13
|
+
<span class={`${rootClass}__text`}>{cleanLabel(this.text)}</span>
|
|
12
14
|
</div>
|
|
13
15
|
) : this.href ? (
|
|
14
16
|
<a class={this.tagClasses}
|
|
@@ -44,7 +46,7 @@ function tagContent(this: UDExTag, rootClass: string, isIconClickable: boolean =
|
|
|
44
46
|
{this.startIcon && (
|
|
45
47
|
isIconBtn ? tagBtnIcon.call(this, rootClass, "start")
|
|
46
48
|
: tagIcon.call(this, rootClass, "start", isIconClickable))}
|
|
47
|
-
<span class={`${rootClass}__text`}>{this.text}</span>
|
|
49
|
+
<span class={`${rootClass}__text`}>{cleanLabel(this.text)}</span>
|
|
48
50
|
{this.endIcon && (
|
|
49
51
|
isIconBtn ? tagBtnIcon.call(this, rootClass, "end")
|
|
50
52
|
: tagIcon.call(this, rootClass, "end", isIconClickable))}
|
package/src/TextArea.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
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
|
-
import
|
|
4
|
+
import jsxRenderer from "@ui5/webcomponents-base/renderer/JsxRenderer.js";
|
|
5
5
|
import { isDesktop } from "@ui5/webcomponents-base/dist/Device.js";
|
|
6
6
|
import i18n from "@ui5/webcomponents-base/dist/decorators/i18n.js";
|
|
7
7
|
import event from "@ui5/webcomponents-base/dist/decorators/event-strict.js";
|
|
@@ -23,7 +23,7 @@ import "@ui5/webcomponents-icons/dist/alert.js";
|
|
|
23
23
|
|
|
24
24
|
import UDExStatusMessage from "./StatusMessage.js";
|
|
25
25
|
import UDExValueState from "./types/common.js";
|
|
26
|
-
import TextAreaTemplate from "./
|
|
26
|
+
import TextAreaTemplate from "./TextAreaTemplate.js";
|
|
27
27
|
|
|
28
28
|
// Styles
|
|
29
29
|
import TextAreaCss from "./generated/themes/TextArea.css.js";
|
|
@@ -39,7 +39,7 @@ import getEffectiveScrollbarStyle from "./utils/getEffectiveScrollbarStyle.js";
|
|
|
39
39
|
*/
|
|
40
40
|
@customElement({
|
|
41
41
|
tag: "udex-textarea",
|
|
42
|
-
renderer:
|
|
42
|
+
renderer: jsxRenderer,
|
|
43
43
|
styles: [TextAreaCss, getEffectiveScrollbarStyle()],
|
|
44
44
|
template: TextAreaTemplate,
|
|
45
45
|
dependencies: [UDExStatusMessage],
|
|
@@ -320,8 +320,8 @@ class UDExTextArea extends UI5Element {
|
|
|
320
320
|
return this.getDomRef()!.querySelector<HTMLTextAreaElement>("textarea")!;
|
|
321
321
|
}
|
|
322
322
|
|
|
323
|
-
get
|
|
324
|
-
return this.valueState === UDExValueState.Error
|
|
323
|
+
get _ariaInvalid(): boolean {
|
|
324
|
+
return this.valueState === UDExValueState.Error;
|
|
325
325
|
}
|
|
326
326
|
|
|
327
327
|
get hasValueState(): boolean {
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import type TextArea from "./TextArea.js";
|
|
2
|
+
import UDExStatusMessage from "./StatusMessage.js";
|
|
3
|
+
|
|
4
|
+
export default function TextAreaTemplate(this: TextArea) {
|
|
5
|
+
const rootClass = "udex-textarea";
|
|
6
|
+
const hiddenClass = "hidden-text";
|
|
7
|
+
|
|
8
|
+
return (
|
|
9
|
+
<div class={`${rootClass}`}>
|
|
10
|
+
<div class={`${rootClass}__wrapper`}>
|
|
11
|
+
{this.label
|
|
12
|
+
? <label class={this.labelClasses} for="textarea" part="label">
|
|
13
|
+
{this.label}{this.required && " * "}
|
|
14
|
+
</label>
|
|
15
|
+
: <label class="hidden-label" for="textarea">
|
|
16
|
+
{this.textHiddenLabel}
|
|
17
|
+
</label>
|
|
18
|
+
}
|
|
19
|
+
<textarea
|
|
20
|
+
id="textarea"
|
|
21
|
+
class={`${rootClass}__field`}
|
|
22
|
+
part="textarea"
|
|
23
|
+
value={this.value}
|
|
24
|
+
maxlength={this.maxlength}
|
|
25
|
+
rows={this.rows}
|
|
26
|
+
disabled={this.disabled}
|
|
27
|
+
readonly={this.isInputReadonly}
|
|
28
|
+
required={this.required}
|
|
29
|
+
aria-label={this.accessibleName}
|
|
30
|
+
aria-describedby={this.ariaDescribedBy}
|
|
31
|
+
aria-labelledby={this.accessibleNameRef}
|
|
32
|
+
aria-required={this.required}
|
|
33
|
+
aria-readonly={this.isInputReadonly}
|
|
34
|
+
aria-invalid={this._ariaInvalid}
|
|
35
|
+
onInput={this.handleInput}
|
|
36
|
+
onFocus={this.handleFocus}
|
|
37
|
+
onClick={this.handleClick}
|
|
38
|
+
onBlur={this.handleBlur}
|
|
39
|
+
onChange={this.handleChange}>
|
|
40
|
+
</textarea>
|
|
41
|
+
</div>
|
|
42
|
+
{this._supportingText &&
|
|
43
|
+
<>
|
|
44
|
+
<UDExStatusMessage
|
|
45
|
+
supporting-text={this._supportingText}
|
|
46
|
+
supporting-text-alignment="Right"
|
|
47
|
+
value-state={this.valueState}
|
|
48
|
+
disabled={this.disabled ? "true" : undefined}>
|
|
49
|
+
</UDExStatusMessage>
|
|
50
|
+
<span id={`${this._id}-supportingTextDesc`} class={hiddenClass}>
|
|
51
|
+
{this._supportingText}
|
|
52
|
+
</span>
|
|
53
|
+
</>
|
|
54
|
+
}
|
|
55
|
+
{this.hasValueState &&
|
|
56
|
+
<span id={`${this._id}-valueStateDesc`} class={hiddenClass}>
|
|
57
|
+
{this.ariaValueStateHiddenText}
|
|
58
|
+
</span>
|
|
59
|
+
}
|
|
60
|
+
{this.readonly &&
|
|
61
|
+
<span id={`${this._id}-readonlyDesc`} class={hiddenClass}>
|
|
62
|
+
{this.readOnlyText}
|
|
63
|
+
</span>
|
|
64
|
+
}
|
|
65
|
+
</div>
|
|
66
|
+
);
|
|
67
|
+
}
|
package/src/TextField.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
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
|
-
import
|
|
4
|
+
import jsxRenderer from "@ui5/webcomponents-base/renderer/JsxRenderer.js";
|
|
5
5
|
import event from "@ui5/webcomponents-base/dist/decorators/event-strict.js";
|
|
6
6
|
import Icon from "@ui5/webcomponents/dist/Icon.js";
|
|
7
7
|
import { isDesktop } from "@ui5/webcomponents-base/dist/Device.js";
|
|
@@ -9,18 +9,13 @@ import i18n from "@ui5/webcomponents-base/dist/decorators/i18n.js";
|
|
|
9
9
|
import type I18nBundle from "@ui5/webcomponents-base/dist/i18nBundle.js";
|
|
10
10
|
import { getAllAccessibleNameRefTexts } from "@ui5/webcomponents-base/dist/util/AccessibilityTextsHelper.js";
|
|
11
11
|
import {
|
|
12
|
-
VALUE_STATE_SUCCESS,
|
|
13
|
-
VALUE_STATE_INFORMATION,
|
|
14
|
-
VALUE_STATE_WARNING,
|
|
15
|
-
VALUE_STATE_ERROR,
|
|
16
|
-
READ_ONLY,
|
|
12
|
+
VALUE_STATE_SUCCESS, VALUE_STATE_INFORMATION, VALUE_STATE_WARNING, VALUE_STATE_ERROR, READ_ONLY,
|
|
17
13
|
} from "./generated/i18n/i18n-defaults.js";
|
|
18
14
|
import UDExControlButton from "./ControlButton.js";
|
|
19
|
-
import UDExValueState from "./types/common.js";
|
|
15
|
+
import UDExValueState, { valueStateToControlButtonDesign } from "./types/common.js";
|
|
16
|
+
import type UDExControlButtonDesign from "./types/ControlButtonDesign.js";
|
|
20
17
|
import UDExStatusMessage from "./StatusMessage.js";
|
|
21
|
-
|
|
22
|
-
// Template
|
|
23
|
-
import TextFieldTemplate from "./generated/templates/TextFieldTemplate.lit.js";
|
|
18
|
+
import TextFieldTemplate from "./TextFieldTemplate.js";
|
|
24
19
|
|
|
25
20
|
// Styles
|
|
26
21
|
import TextFieldCss from "./generated/themes/TextField.css.js";
|
|
@@ -37,6 +32,14 @@ type UDExTextFieldKeydownEventDetail = {
|
|
|
37
32
|
keyboardEvent: KeyboardEvent;
|
|
38
33
|
}
|
|
39
34
|
|
|
35
|
+
type UDExTextFieldChangeEventDetail = {
|
|
36
|
+
originalEvent: Event,
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
type UDExTextFieldBlurEventDetail = {
|
|
40
|
+
originalEvent: FocusEvent,
|
|
41
|
+
}
|
|
42
|
+
|
|
40
43
|
/**
|
|
41
44
|
* @class
|
|
42
45
|
*
|
|
@@ -47,24 +50,30 @@ type UDExTextFieldKeydownEventDetail = {
|
|
|
47
50
|
*/
|
|
48
51
|
@customElement({
|
|
49
52
|
tag: "udex-text-field",
|
|
50
|
-
renderer:
|
|
53
|
+
renderer: jsxRenderer,
|
|
51
54
|
styles: TextFieldCss,
|
|
52
55
|
template: TextFieldTemplate,
|
|
53
56
|
dependencies: [UDExControlButton, Icon, UDExStatusMessage],
|
|
54
57
|
})
|
|
55
58
|
|
|
56
59
|
/**
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
60
|
+
* Fired when the value of the component changes at each keystroke.
|
|
61
|
+
*
|
|
62
|
+
* @public
|
|
63
|
+
*/
|
|
61
64
|
@event("input", { bubbles: true })
|
|
62
65
|
/**
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
66
|
+
* Fired when the input operation has finished by pressing Enter or on focusout.
|
|
67
|
+
*
|
|
68
|
+
* @public
|
|
69
|
+
*/
|
|
67
70
|
@event("change", { bubbles: true })
|
|
71
|
+
/**
|
|
72
|
+
* Fired on input focusout.
|
|
73
|
+
*
|
|
74
|
+
* @public
|
|
75
|
+
*/
|
|
76
|
+
@event("blur", { bubbles: true })
|
|
68
77
|
/**
|
|
69
78
|
* Fired event when the user clicks the icon.
|
|
70
79
|
*
|
|
@@ -83,7 +92,8 @@ class UDExTextField extends UI5Element {
|
|
|
83
92
|
eventDetails!: {
|
|
84
93
|
"keydown": UDExTextFieldKeydownEventDetail,
|
|
85
94
|
"input": void,
|
|
86
|
-
"change":
|
|
95
|
+
"change": UDExTextFieldChangeEventDetail,
|
|
96
|
+
"blur": UDExTextFieldBlurEventDetail,
|
|
87
97
|
"click-icon": void,
|
|
88
98
|
};
|
|
89
99
|
_labelActiveClassName = "udex-text-field__label_active";
|
|
@@ -140,6 +150,15 @@ class UDExTextField extends UI5Element {
|
|
|
140
150
|
@property()
|
|
141
151
|
accessibleName!: string;
|
|
142
152
|
|
|
153
|
+
/**
|
|
154
|
+
* Defines the name of the input element.
|
|
155
|
+
*
|
|
156
|
+
* @default ""
|
|
157
|
+
* @public
|
|
158
|
+
*/
|
|
159
|
+
@property()
|
|
160
|
+
name!: string;
|
|
161
|
+
|
|
143
162
|
/**
|
|
144
163
|
* Receives id (or many ids) of the elements that label the component.
|
|
145
164
|
* @default ""
|
|
@@ -148,6 +167,15 @@ class UDExTextField extends UI5Element {
|
|
|
148
167
|
@property()
|
|
149
168
|
accessibleNameRef: string = "";
|
|
150
169
|
|
|
170
|
+
/**
|
|
171
|
+
* Defines the ref of the input element.
|
|
172
|
+
*
|
|
173
|
+
* @default undefined
|
|
174
|
+
* @public
|
|
175
|
+
*/
|
|
176
|
+
@property()
|
|
177
|
+
fieldRef?: ((el: HTMLInputElement | null) => void) | { current: HTMLInputElement | null };
|
|
178
|
+
|
|
151
179
|
/**
|
|
152
180
|
* Defines the accessible ARIA name of the component.
|
|
153
181
|
*
|
|
@@ -382,8 +410,8 @@ class UDExTextField extends UI5Element {
|
|
|
382
410
|
this.fireDecoratorEvent("keydown", { keyboardEvent: e });
|
|
383
411
|
}
|
|
384
412
|
|
|
385
|
-
handleChange = (): void => {
|
|
386
|
-
this.fireDecoratorEvent("change");
|
|
413
|
+
handleChange = (e: Event): void => {
|
|
414
|
+
this.fireDecoratorEvent("change", { originalEvent: e });
|
|
387
415
|
};
|
|
388
416
|
|
|
389
417
|
handleInput = (inputEvent: InputEvent) => {
|
|
@@ -403,7 +431,8 @@ class UDExTextField extends UI5Element {
|
|
|
403
431
|
}
|
|
404
432
|
};
|
|
405
433
|
|
|
406
|
-
handleBlur = (): void => {
|
|
434
|
+
handleBlur = (e: FocusEvent): void => {
|
|
435
|
+
this.fireDecoratorEvent("blur", { originalEvent: e });
|
|
407
436
|
this.active = false;
|
|
408
437
|
|
|
409
438
|
if (this.value) {
|
|
@@ -488,9 +517,13 @@ class UDExTextField extends UI5Element {
|
|
|
488
517
|
const label = this._isComboboxRole ? this.value : "";
|
|
489
518
|
return `${label} ${this.supportingText || ""} ${this.valueStateText}`;
|
|
490
519
|
}
|
|
520
|
+
|
|
521
|
+
get controlButtonDesign(): UDExControlButtonDesign {
|
|
522
|
+
return valueStateToControlButtonDesign[this.valueState];
|
|
523
|
+
}
|
|
491
524
|
}
|
|
492
525
|
|
|
493
526
|
UDExTextField.define();
|
|
494
527
|
|
|
495
528
|
export default UDExTextField;
|
|
496
|
-
export type { UDExTextFieldKeydownEventDetail };
|
|
529
|
+
export type { UDExTextFieldKeydownEventDetail, UDExTextFieldChangeEventDetail, UDExTextFieldBlurEventDetail };
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import type TextField from "./TextField.js";
|
|
2
|
+
import type { AriaRole } from "@ui5/webcomponents-base/dist/types.js";
|
|
3
|
+
import type { Booleanish } from "@ui5/webcomponents-base/dist/thirdparty/preact/jsx.js";
|
|
4
|
+
import UDExControlButton from "./ControlButton.js";
|
|
5
|
+
import UDExStatusMessage from "./StatusMessage.js";
|
|
6
|
+
|
|
7
|
+
export default function TextFieldTemplate(this: TextField) {
|
|
8
|
+
const rootClass = "udex-text-field";
|
|
9
|
+
const hiddenClass = "hidden-text";
|
|
10
|
+
|
|
11
|
+
return (
|
|
12
|
+
<div class={`${rootClass}__container`}>
|
|
13
|
+
{this.label &&
|
|
14
|
+
<label for={`${this._id}-input`} class={this.labelClasses} part="label">
|
|
15
|
+
{this.label}{this.required && " * "}
|
|
16
|
+
</label>
|
|
17
|
+
}
|
|
18
|
+
<div class={`${rootClass}__wrap`}>
|
|
19
|
+
<input id={`${this._id}-input`} class={`${rootClass}__input`}
|
|
20
|
+
type={this.type}
|
|
21
|
+
value={this.value}
|
|
22
|
+
maxlength={this.maxlength}
|
|
23
|
+
disabled={this.disabled}
|
|
24
|
+
readonly={this.isInputReadonly}
|
|
25
|
+
required={this.required}
|
|
26
|
+
aria-required={this.required}
|
|
27
|
+
aria-readonly={this.isInputReadonly}
|
|
28
|
+
autocomplete={this.autocomplete}
|
|
29
|
+
role={this.inputRole as AriaRole}
|
|
30
|
+
name={this.name}
|
|
31
|
+
ref={this.fieldRef}
|
|
32
|
+
aria-disabled={this.readonlyNotDisabled}
|
|
33
|
+
aria-invalid={this.accInfo.ariaInvalid as Booleanish}
|
|
34
|
+
aria-describedby={this.accInfo.ariaDescribedBy}
|
|
35
|
+
aria-haspopup={this.accInfo.ariaHasPopup as Booleanish}
|
|
36
|
+
aria-label={this.accInfo.ariaLabel}
|
|
37
|
+
part="textfield-input"
|
|
38
|
+
min={this.min}
|
|
39
|
+
max={this.max}
|
|
40
|
+
step={this.step}
|
|
41
|
+
onChange={this.handleChange}
|
|
42
|
+
onInput={this.handleInput}
|
|
43
|
+
onFocus={this.handleFocus}
|
|
44
|
+
onBlur={this.handleBlur}
|
|
45
|
+
onClick={this.handleClick}
|
|
46
|
+
onKeyDown={this.handleKeydown} />
|
|
47
|
+
{this.icon &&
|
|
48
|
+
<UDExControlButton
|
|
49
|
+
part="textfield-control-btn"
|
|
50
|
+
class={`${rootClass}__icon-container`}
|
|
51
|
+
size="Large"
|
|
52
|
+
tooltip={this.showButtonTooltip}
|
|
53
|
+
active={this.active}
|
|
54
|
+
disabled={this.disabled}
|
|
55
|
+
readonly={this.readonly}
|
|
56
|
+
non-interactive={this.readonly}
|
|
57
|
+
design={this.controlButtonDesign}
|
|
58
|
+
icon={this.icon}
|
|
59
|
+
_is-combobox-role={this._isComboboxRole}
|
|
60
|
+
accessible-name={this.buttonAccessibleName}
|
|
61
|
+
accessible-description={this.buttonAccessibleDescription}
|
|
62
|
+
onClick={this.handleIconClick}>
|
|
63
|
+
</UDExControlButton>
|
|
64
|
+
}
|
|
65
|
+
</div>
|
|
66
|
+
{this.supportingText &&
|
|
67
|
+
<>
|
|
68
|
+
<UDExStatusMessage
|
|
69
|
+
supporting-text={this.supportingText}
|
|
70
|
+
value-state={this.valueState}
|
|
71
|
+
disabled={this.disabled ? "true" : undefined}>
|
|
72
|
+
</UDExStatusMessage>
|
|
73
|
+
<span id={`${this._id}-supportingTextDesc`} class={hiddenClass}>
|
|
74
|
+
{this.supportingText}
|
|
75
|
+
</span>
|
|
76
|
+
</>
|
|
77
|
+
}
|
|
78
|
+
{this.hasValueState &&
|
|
79
|
+
<span id={`${this._id}-valueStateDesc`} class={hiddenClass}>
|
|
80
|
+
{this.valueStateText}
|
|
81
|
+
</span>
|
|
82
|
+
}
|
|
83
|
+
{this.readonly &&
|
|
84
|
+
<span id={`${this._id}-stateReadOnlyDesc`} class={hiddenClass}>
|
|
85
|
+
{this.readOnlyStateText}
|
|
86
|
+
</span>
|
|
87
|
+
}
|
|
88
|
+
</div>
|
|
89
|
+
);
|
|
90
|
+
}
|
|
@@ -5,8 +5,8 @@ import type UI5Element from "@ui5/webcomponents-base/dist/UI5Element.js";
|
|
|
5
5
|
import type CountrySelector from "../../CountrySelector.js";
|
|
6
6
|
import type { ClassMapValue } from "@ui5/webcomponents-base/dist/types.js";
|
|
7
7
|
|
|
8
|
-
function block0 (this: CountrySelector, context: UI5Element, tags: string[], suffix: string | undefined) { return
|
|
9
|
-
function block1 (this: CountrySelector, context: UI5Element, tags: string[], suffix: string | undefined) { return html`<img class="udex-
|
|
8
|
+
function block0 (this: CountrySelector, context: UI5Element, tags: string[], suffix: string | undefined) { return html`${ !this.hideFlagImages ? block1.call(this, context, tags, suffix) : undefined } `;}
|
|
9
|
+
function block1 (this: CountrySelector, context: UI5Element, tags: string[], suffix: string | undefined) { return html`<img class="udex-text-field__image" aria-label="${ifDefined(this.flagAriaLabel)}" style="background-position-x: ${ifDefined(this.selectedCountryFlagX)}; background-position-y: ${ifDefined(this.selectedCountryFlagY)}">`;}
|
|
10
10
|
|
|
11
11
|
function template(this: CountrySelector) { return block0.call(this, this, (this.constructor as typeof UI5Element).tagsToScope, getCustomElementsScopingSuffix()); }
|
|
12
12
|
export default template;
|
|
@@ -8,7 +8,7 @@ import type { ClassMapValue } from "@ui5/webcomponents-base/dist/types.js";
|
|
|
8
8
|
function block0 (this: ListItem, context: UI5Element, tags: string[], suffix: string | undefined) { return html`${ this.modeSelected ? block1.call(this, context, tags, suffix) : undefined }${ this.modeSingleContent ? block20.call(this, context, tags, suffix) : undefined } `;}
|
|
9
9
|
function block1 (this: ListItem, context: UI5Element, tags: string[], suffix: string | undefined) { return html`<div part="item" tabindex="${ifDefined(this._effectiveTabIndex)}" aria-disabled="${ifDefined(this._ariaDisabled)}" class="${ifDefined(this.className)}" role="${ifDefined(this.roleItem)}" @click="${this.handleItemClick}" @mousedown="${this.handleMouseDown}" @mouseup="${this.handleMouseUp}" @keyup="${this.handleKeyUp}" @keydown="${this.handleKeyDown}" @focusin="${this.handleFocusIn}" @focusout="${this.handleFocusOut}" ?divider="${this.divider}" _id="${ifDefined(this._id)}" data-selected="${ifDefined(this.selected)}" aria-describedby="${ifDefined(this.itemDescribedBy)}">${ this.modeMultiSelect ? block2.call(this, context, tags, suffix) : undefined }${ this.modeRadioGroup ? block3.call(this, context, tags, suffix) : undefined }<div class="udex-list__content-wrap" _id="${ifDefined(this._id)}" aria-labelledby="${ifDefined(this._id)}-invisibleText" aria-label="${ifDefined(this.accessibleListItemName)}">${ this.flag ? block4.call(this, context, tags, suffix) : undefined }${ this.typeNumber ? block5.call(this, context, tags, suffix) : undefined }${ this.typeCircle ? block6.call(this, context, tags, suffix) : undefined }${ this.typeIcon ? block7.call(this, context, tags, suffix) : undefined }${ this.image ? block8.call(this, context, tags, suffix) : undefined }<div class="udex-list__content" part="content">${ this.label ? block10.call(this, context, tags, suffix) : block15.call(this, context, tags, suffix) }</div><div class="hidden" id="${ifDefined(this._id)}-invisibleText">${ifDefined(this.accessibleListItemName)}</div><div class="hidden" id="${ifDefined(this._id)}-invisibleText-describedby">${ifDefined(this.itemState)}</div></div></div>`;}
|
|
10
10
|
function block2 (this: ListItem, context: UI5Element, tags: string[], suffix: string | undefined) { return suffix ? html`<${scopeTag("udex-checkbox", tags, suffix)} class="udex-list__checkbox" part="checkbox" tabindex="-1" ?indeterminate="${this.indeterminate}" accessible-name="checkbox ${ifDefined(this.stateAccessibleName)}" ?checked="${this.selected}" ?disabled="${this.disabled}"></${scopeTag("udex-checkbox", tags, suffix)}>` : html`<udex-checkbox class="udex-list__checkbox" part="checkbox" tabindex="-1" ?indeterminate="${this.indeterminate}" accessible-name="checkbox ${ifDefined(this.stateAccessibleName)}" ?checked="${this.selected}" ?disabled="${this.disabled}"></udex-checkbox>`;}
|
|
11
|
-
function block3 (this: ListItem, context: UI5Element, tags: string[], suffix: string | undefined) { return suffix ? html`<${scopeTag("udex-radio-button", tags, suffix)} class="udex-list__radio" part="radio" tabindex="-1" accessible-name="radio ${ifDefined(this.stateAccessibleName)}" ?
|
|
11
|
+
function block3 (this: ListItem, context: UI5Element, tags: string[], suffix: string | undefined) { return suffix ? html`<${scopeTag("udex-radio-button", tags, suffix)} class="udex-list__radio" part="radio" tabindex="-1" accessible-name="radio ${ifDefined(this.stateAccessibleName)}" ?checked="${this.selected}" ?disabled="${this.disabled}"></${scopeTag("udex-radio-button", tags, suffix)}>` : html`<udex-radio-button class="udex-list__radio" part="radio" tabindex="-1" accessible-name="radio ${ifDefined(this.stateAccessibleName)}" ?checked="${this.selected}" ?disabled="${this.disabled}"></udex-radio-button>`;}
|
|
12
12
|
function block4 (this: ListItem, context: UI5Element, tags: string[], suffix: string | undefined) { return html`<div class="udex-list__flag-wrap"><span class="udex-list__flag" style="background-position: ${ifDefined(this.flagPosition)}"></span></div>`;}
|
|
13
13
|
function block5 (this: ListItem, context: UI5Element, tags: string[], suffix: string | undefined) { return html`<span class="udex-list__number">${ifDefined(this.numberOfItem)}.</span>`;}
|
|
14
14
|
function block6 (this: ListItem, context: UI5Element, tags: string[], suffix: string | undefined) { return html`<span class="udex-list__circle">•</span>`;}
|
|
@@ -5,17 +5,18 @@ import type UI5Element from "@ui5/webcomponents-base/dist/UI5Element.js";
|
|
|
5
5
|
import type SelectBox from "../../SelectBox.js";
|
|
6
6
|
import type { ClassMapValue } from "@ui5/webcomponents-base/dist/types.js";
|
|
7
7
|
|
|
8
|
-
function block0 (this: SelectBox, context: UI5Element, tags: string[], suffix: string | undefined) { return suffix ? html`<div class="
|
|
9
|
-
function block1 (this: SelectBox, context: UI5Element, tags: string[], suffix: string | undefined) { return html
|
|
10
|
-
function block2 (this: SelectBox, context: UI5Element, tags: string[], suffix: string | undefined) { return html
|
|
11
|
-
function block3 (this: SelectBox, context: UI5Element, tags: string[], suffix: string | undefined) { return html
|
|
12
|
-
function block4 (this: SelectBox, context: UI5Element, tags: string[], suffix: string | undefined) { return
|
|
13
|
-
function block5 (this: SelectBox, context: UI5Element, tags: string[], suffix: string | undefined
|
|
14
|
-
function block6 (this: SelectBox, context: UI5Element, tags: string[], suffix: string | undefined
|
|
15
|
-
function block7 (this: SelectBox, context: UI5Element, tags: string[], suffix: string | undefined) { return
|
|
16
|
-
function block8 (this: SelectBox, context: UI5Element, tags: string[], suffix: string | undefined) { return suffix ? html
|
|
8
|
+
function block0 (this: SelectBox, context: UI5Element, tags: string[], suffix: string | undefined) { return suffix ? html`<div class="${ifDefined(this._rootClass)}"><div class="udex-text-field__container"><div class="udex-text-field__wrap" ?displayonly="${this.displayonly}">${ this.showMultiSelectedOptions ? block1.call(this, context, tags, suffix) : undefined }<div class="udex-text-field__input" @focusin="${this.handleInputFocusIn}" @focusout="${this.handleInputFocusOut}" ?readonly="${this.readonly}" ?disabled="${this.isDisabled}" ?open="${this._open}">${ this.label ? block4.call(this, context, tags, suffix) : undefined }${ this.showImageFlags ? block6.call(this, context, tags, suffix) : undefined }<div class="udex-text-field__holder"><input role="combobox" type="text" id="search-input" name="search" class="udex-text-field__search" .value="${ifDefined(this._inputValue)}" @input="${this.handleSearchChange}" @click="${this.handleInputClick}" @keydown="${this.handleKeyDownSearch}" ?disabled="${this.isDisabled}" ?readonly="${this.isReadOrDisplayOnly}" aria-label="${ifDefined(this.accInfo.ariaLabel)}" aria-readonly="${ifDefined(this.isReadOrDisplayOnly)}" aria-disabled="${ifDefined(this.disabled)}" aria-haspopup="${ifDefined(this.listboxRole)}" aria-controls="${ifDefined(this.popoverId)}" aria-expanded="${ifDefined(this._open)}" aria-autocomplete="${ifDefined(this._ariaAutoComplete)}" aria-describedby="${ifDefined(this._id)}-aria-describedby" autocomplete="off" />${ this._selectedOption ? block7.call(this, context, tags, suffix) : undefined }</div>${ !this.displayonly ? block8.call(this, context, tags, suffix) : undefined }<${scopeTag("ui5-popover", tags, suffix)} id="${ifDefined(this.popoverId)}" ?allow-target-overlap="${this.allowTargetOverlap}" @keydown="${this.handleKeyDownDropdown}" @ui5-select-all="${ifDefined(this.handleSelectAll)}" @ui5-item-press="${ifDefined(this.handleItemPress)}" @ui5-header-press="${ifDefined(this.handleHeaderPress)}" @ui5-before-open="${ifDefined(this.handleDropdownBeforeOpen)}" @ui5-open="${ifDefined(this.fireEventDropdownOpen)}" @ui5-before-close="${ifDefined(this.handleDropdownBeforeClose)}" @ui5-close="${ifDefined(this.handleDropdownClose)}" class="udex-select-box__dropdown" horizontal-align="Start" placement="Bottom" prevent-focus-restore prevent-initial-focus hide-arrow>${ this._showTagsDropdownContent ? block9.call(this, context, tags, suffix) : block10.call(this, context, tags, suffix) }</${scopeTag("ui5-popover", tags, suffix)}><span aria-live="polite" aria-atomic="true" class="hidden">${ifDefined(this._accSearchResultInfo)}</span></div></div>${ this.supportingText ? block11.call(this, context, tags, suffix) : undefined }</div></div>` : html`<div class="${ifDefined(this._rootClass)}"><div class="udex-text-field__container"><div class="udex-text-field__wrap" ?displayonly="${this.displayonly}">${ this.showMultiSelectedOptions ? block1.call(this, context, tags, suffix) : undefined }<div class="udex-text-field__input" @focusin="${this.handleInputFocusIn}" @focusout="${this.handleInputFocusOut}" ?readonly="${this.readonly}" ?disabled="${this.isDisabled}" ?open="${this._open}">${ this.label ? block4.call(this, context, tags, suffix) : undefined }${ this.showImageFlags ? block6.call(this, context, tags, suffix) : undefined }<div class="udex-text-field__holder"><input role="combobox" type="text" id="search-input" name="search" class="udex-text-field__search" .value="${ifDefined(this._inputValue)}" @input="${this.handleSearchChange}" @click="${this.handleInputClick}" @keydown="${this.handleKeyDownSearch}" ?disabled="${this.isDisabled}" ?readonly="${this.isReadOrDisplayOnly}" aria-label="${ifDefined(this.accInfo.ariaLabel)}" aria-readonly="${ifDefined(this.isReadOrDisplayOnly)}" aria-disabled="${ifDefined(this.disabled)}" aria-haspopup="${ifDefined(this.listboxRole)}" aria-controls="${ifDefined(this.popoverId)}" aria-expanded="${ifDefined(this._open)}" aria-autocomplete="${ifDefined(this._ariaAutoComplete)}" aria-describedby="${ifDefined(this._id)}-aria-describedby" autocomplete="off" />${ this._selectedOption ? block7.call(this, context, tags, suffix) : undefined }</div>${ !this.displayonly ? block8.call(this, context, tags, suffix) : undefined }<ui5-popover id="${ifDefined(this.popoverId)}" ?allow-target-overlap="${this.allowTargetOverlap}" @keydown="${this.handleKeyDownDropdown}" @ui5-select-all="${ifDefined(this.handleSelectAll)}" @ui5-item-press="${ifDefined(this.handleItemPress)}" @ui5-header-press="${ifDefined(this.handleHeaderPress)}" @ui5-before-open="${ifDefined(this.handleDropdownBeforeOpen)}" @ui5-open="${ifDefined(this.fireEventDropdownOpen)}" @ui5-before-close="${ifDefined(this.handleDropdownBeforeClose)}" @ui5-close="${ifDefined(this.handleDropdownClose)}" class="udex-select-box__dropdown" horizontal-align="Start" placement="Bottom" prevent-focus-restore prevent-initial-focus hide-arrow>${ this._showTagsDropdownContent ? block9.call(this, context, tags, suffix) : block10.call(this, context, tags, suffix) }</ui5-popover><span aria-live="polite" aria-atomic="true" class="hidden">${ifDefined(this._accSearchResultInfo)}</span></div></div>${ this.supportingText ? block11.call(this, context, tags, suffix) : undefined }</div></div>`;}
|
|
9
|
+
function block1 (this: SelectBox, context: UI5Element, tags: string[], suffix: string | undefined) { return suffix ? html`<${scopeTag("udex-tag-group", tags, suffix)} class="udex-tag-group" ?displayonly="${this.displayonly}" ?readonly="${this.readonly}" ?disabled="${this.disabled}" @focusout="${this.resetTagsTabIndexes}" tooltip-placement="${ifDefined(this.tooltipPlacement)}" @ui5-tag-icon-click="${ifDefined(this.handleRemoveTag)}" @ui5-tag-click="${ifDefined(this.handleTagClick)}" @ui5-show-more-tags="${ifDefined(this.handlerShowMoreItems)}" @ui5-tag-keydown="${ifDefined(this.handleKeyDownTag)}" ?tokenizer-expanded="${this.tokenizerExpanded}" _skip-more-button-focus>${ repeat(this.selectedItems, (item, index) => (item as typeof item & {_id?: any})._id || index, (item, index: number) => block2.call(this, context, tags, suffix, item, index)) }</${scopeTag("udex-tag-group", tags, suffix)}>` : html`<udex-tag-group class="udex-tag-group" ?displayonly="${this.displayonly}" ?readonly="${this.readonly}" ?disabled="${this.disabled}" @focusout="${this.resetTagsTabIndexes}" tooltip-placement="${ifDefined(this.tooltipPlacement)}" @ui5-tag-icon-click="${ifDefined(this.handleRemoveTag)}" @ui5-tag-click="${ifDefined(this.handleTagClick)}" @ui5-show-more-tags="${ifDefined(this.handlerShowMoreItems)}" @ui5-tag-keydown="${ifDefined(this.handleKeyDownTag)}" ?tokenizer-expanded="${this.tokenizerExpanded}" _skip-more-button-focus>${ repeat(this.selectedItems, (item, index) => (item as typeof item & {_id?: any})._id || index, (item, index: number) => block2.call(this, context, tags, suffix, item, index)) }</udex-tag-group>`;}
|
|
10
|
+
function block2 (this: SelectBox, context: UI5Element, tags: string[], suffix: string | undefined, item: any, index: number) { return html`${ !item.isGroup ? block3.call(this, context, tags, suffix, item, index) : undefined }`;}
|
|
11
|
+
function block3 (this: SelectBox, context: UI5Element, tags: string[], suffix: string | undefined, item: any, index: number) { return suffix ? html`<${scopeTag("udex-tag", tags, suffix)} text="${ifDefined(item.label)}" id="${ifDefined(item._id)}" icon="decline"></${scopeTag("udex-tag", tags, suffix)}>` : html`<udex-tag text="${ifDefined(item.label)}" id="${ifDefined(item._id)}" icon="decline"></udex-tag>`;}
|
|
12
|
+
function block4 (this: SelectBox, context: UI5Element, tags: string[], suffix: string | undefined) { return html`<label for="search-input" class="${ifDefined(this.labelClass)}">${ifDefined(this.label)}${ this.required ? block5.call(this, context, tags, suffix) : undefined }</label><span class="hidden" id="${ifDefined(this._id)}-aria-describedby">${ifDefined(this.ariaDescribedbyText)}</span>`;}
|
|
13
|
+
function block5 (this: SelectBox, context: UI5Element, tags: string[], suffix: string | undefined) { return html`*`;}
|
|
14
|
+
function block6 (this: SelectBox, context: UI5Element, tags: string[], suffix: string | undefined) { return html`${ifDefined(this.countryFlag)}`;}
|
|
15
|
+
function block7 (this: SelectBox, context: UI5Element, tags: string[], suffix: string | undefined) { return html`<div class="udex-text-field__text-holder"><span class="udex-text-field__single-label" aria-hidden="true">${unsafeHTML(this._selectedOption)}</span></div>`;}
|
|
16
|
+
function block8 (this: SelectBox, context: UI5Element, tags: string[], suffix: string | undefined) { return suffix ? html`<button @click="${this.handleButtonClick}" ?disabled="${this.isDisabled}" aria-label="${ifDefined(this.accInfo.ariaLabel)}" class="udex-text-field__trigger" tabindex="-1"><${scopeTag("ui5-icon", tags, suffix)} mode="Decorative" name="navigation-down-arrow"></${scopeTag("ui5-icon", tags, suffix)}></button>` : html`<button @click="${this.handleButtonClick}" ?disabled="${this.isDisabled}" aria-label="${ifDefined(this.accInfo.ariaLabel)}" class="udex-text-field__trigger" tabindex="-1"><ui5-icon mode="Decorative" name="navigation-down-arrow"></ui5-icon></button>`;}
|
|
17
17
|
function block9 (this: SelectBox, context: UI5Element, tags: string[], suffix: string | undefined) { return suffix ? html`<div class="udex-truncatable-tag-content"><span class="udex-truncatable-tag-content__label">${ifDefined(this.truncatableTagLabel)}</span><${scopeTag("ui5-icon", tags, suffix)} @click="${this.handleRemoveTruncatableTag}" class="udex-truncatable-tag-content__icon" mode="Decorative" name="decline"></${scopeTag("ui5-icon", tags, suffix)}></div>` : html`<div class="udex-truncatable-tag-content"><span class="udex-truncatable-tag-content__label">${ifDefined(this.truncatableTagLabel)}</span><ui5-icon @click="${this.handleRemoveTruncatableTag}" class="udex-truncatable-tag-content__icon" mode="Decorative" name="decline"></ui5-icon></div>`;}
|
|
18
18
|
function block10 (this: SelectBox, context: UI5Element, tags: string[], suffix: string | undefined) { return html`${ifDefined(this.searchableList)}`;}
|
|
19
|
+
function block11 (this: SelectBox, context: UI5Element, tags: string[], suffix: string | undefined) { return suffix ? html`<${scopeTag("udex-status-message", tags, suffix)} ?disabled="${this.disabled}" supporting-text="${ifDefined(this.supportingText)}" value-state="${ifDefined(this.valueState)}"></${scopeTag("udex-status-message", tags, suffix)}>` : html`<udex-status-message ?disabled="${this.disabled}" supporting-text="${ifDefined(this.supportingText)}" value-state="${ifDefined(this.valueState)}"></udex-status-message>`;}
|
|
19
20
|
|
|
20
21
|
function template(this: SelectBox) { return block0.call(this, this, (this.constructor as typeof UI5Element).tagsToScope, getCustomElementsScopingSuffix()); }
|
|
21
22
|
export default template;
|