@sapudex/web-components 2.2.0 → 2.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundle.esm.js +1 -0
- package/cypress/fixtures/event-ribbon-links.ts +5 -0
- package/cypress/specs/Accordion.cy.tsx +1 -2
- package/cypress/specs/AccordionItem.cy.tsx +1 -1
- package/cypress/specs/Avatar.cy.tsx +1 -1
- package/cypress/specs/AvatarGroup.cy.tsx +1 -2
- package/cypress/specs/Badge.cy.tsx +1 -1
- package/cypress/specs/CountrySelector.cy.tsx +10 -4
- package/cypress/specs/EventRibbon.cy.tsx +110 -0
- package/cypress/specs/Footer.cy.tsx +1 -1
- package/cypress/specs/ListItem.cy.tsx +1 -1
- package/cypress/specs/PhoneNumberField.cy.tsx +4 -2
- package/cypress/specs/Review.cy.tsx +1 -3
- package/cypress/specs/ReviewItem.cy.tsx +1 -1
- package/cypress/specs/SecondaryNavigationDesktop.cy.tsx +123 -116
- package/cypress/specs/SecondaryNavigationMobile.cy.tsx +27 -38
- package/cypress/specs/SelectBox.cy.tsx +93 -88
- package/cypress/specs/Slider.cy.tsx +1 -1
- package/cypress/specs/StatusBadge.cy.tsx +1 -1
- package/cypress/specs/StatusMessage.cy.tsx +1 -1
- package/cypress/specs/Switch.cy.tsx +1 -2
- package/cypress/specs/Table.cy.tsx +1 -9
- package/cypress/specs/Tag.cy.tsx +1 -1
- package/cypress/specs/TagGroup.cy.tsx +1 -2
- package/cypress/specs/TextField.cy.tsx +1 -1
- package/cypress/specs/Textarea.cy.tsx +1 -1
- package/cypress/specs/Toast.cy.tsx +1 -1
- package/cypress/specs/Tooltip.cy.tsx +1 -2
- package/cypress/specs/TruncatedText.cy.tsx +2 -1
- package/cypress/specs/Upload.cy.tsx +1 -2
- package/cypress/specs/UploadItem.cy.tsx +1 -1
- package/cypress/specs/Wizard.cy.tsx +7 -4
- package/cypress/support/component-imports.instrumented.ts +91 -0
- package/cypress/support/component-imports.src.ts +91 -0
- package/cypress/support/component.ts +1 -1
- package/cypress.config.ts +6 -0
- package/dist/AssetsVariables.js +4 -0
- package/dist/AssetsVariables.js.map +1 -1
- package/dist/Button.d.ts +7 -0
- package/dist/Button.js +3 -0
- package/dist/Button.js.map +1 -1
- package/dist/CountrySelector.d.ts +2 -2
- package/dist/CountrySelector.js +3 -1
- package/dist/CountrySelector.js.map +1 -1
- package/dist/DatePicker.js +2 -1
- package/dist/DatePicker.js.map +1 -1
- package/dist/EventRibbon.d.ts +80 -0
- package/dist/EventRibbon.js +111 -0
- package/dist/EventRibbon.js.map +1 -0
- package/dist/EventRibbonTemplate.d.ts +2 -0
- package/dist/EventRibbonTemplate.js +7 -0
- package/dist/EventRibbonTemplate.js.map +1 -0
- package/dist/HeroBanner.d.ts +1 -1
- package/dist/MastheadShell.d.ts +4 -1
- package/dist/MastheadShell.js +21 -5
- package/dist/MastheadShell.js.map +1 -1
- package/dist/Pagination.d.ts +17 -3
- package/dist/Pagination.js +33 -31
- package/dist/Pagination.js.map +1 -1
- package/dist/PhoneNumberField.d.ts +5 -5
- package/dist/PhoneNumberField.js +1 -1
- package/dist/PhoneNumberField.js.map +1 -1
- package/dist/SearchableListBase.d.ts +9 -0
- package/dist/SearchableListBase.js +10 -2
- package/dist/SearchableListBase.js.map +1 -1
- package/dist/TextField.d.ts +7 -0
- package/dist/TextField.js +3 -0
- package/dist/TextField.js.map +1 -1
- package/dist/Wizard.d.ts +20 -1
- package/dist/Wizard.js +22 -9
- package/dist/Wizard.js.map +1 -1
- package/dist/WizardTemplate.js +1 -1
- package/dist/WizardTemplate.js.map +1 -1
- package/dist/assets/{InputSuggestions-KGCQrV_T.js → InputSuggestions-BgbbJ4tc.js} +1 -1
- package/dist/assets/{ListItemStandardExpandableTextTemplate-D4zLIdLd.js → ListItemStandardExpandableTextTemplate-onAnn1Tj.js} +1 -1
- package/dist/assets/{bundle.esm-Diw1zQ-o.js → bundle.esm-CwUfibNQ.js} +228 -223
- package/dist/css/themes/Button.css +1 -1
- package/dist/css/themes/DatePickerPopover.css +1 -1
- package/dist/css/themes/EventRibbon.css +1 -0
- package/dist/css/themes/MastheadCountrySelector.css +1 -1
- package/dist/css/themes/MastheadItem.css +1 -1
- package/dist/css/themes/MastheadShell.css +1 -1
- package/dist/css/themes/Modal.css +1 -1
- package/dist/css/themes/Pagination.css +1 -1
- package/dist/css/themes/RatingIndicator.css +1 -1
- package/dist/css/themes/Slider.css +1 -1
- package/dist/css/themes/TextField.css +1 -1
- package/dist/custom-elements-internal.json +342 -0
- package/dist/custom-elements.json +341 -0
- package/dist/data/CountryListISO3166.d.ts +13 -4
- package/dist/data/CountryListISO3166.js +8 -0
- package/dist/data/CountryListISO3166.js.map +1 -1
- package/dist/generated/templates/PaginationTemplate.lit.js +1 -1
- package/dist/generated/templates/PaginationTemplate.lit.js.map +1 -1
- package/dist/generated/templates/PhoneNumberFieldTemplate.lit.js +2 -2
- package/dist/generated/templates/PhoneNumberFieldTemplate.lit.js.map +1 -1
- package/dist/generated/themes/Button.css.d.ts +1 -1
- package/dist/generated/themes/Button.css.js +1 -1
- package/dist/generated/themes/Button.css.js.map +1 -1
- package/dist/generated/themes/DatePickerPopover.css.d.ts +1 -1
- package/dist/generated/themes/DatePickerPopover.css.js +1 -1
- package/dist/generated/themes/DatePickerPopover.css.js.map +1 -1
- package/dist/generated/themes/EventRibbon.css.d.ts +2 -0
- package/dist/generated/themes/EventRibbon.css.js +8 -0
- package/dist/generated/themes/EventRibbon.css.js.map +1 -0
- package/dist/generated/themes/MastheadCountrySelector.css.d.ts +1 -1
- package/dist/generated/themes/MastheadCountrySelector.css.js +1 -1
- package/dist/generated/themes/MastheadCountrySelector.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/MastheadShell.css.d.ts +1 -1
- package/dist/generated/themes/MastheadShell.css.js +1 -1
- package/dist/generated/themes/MastheadShell.css.js.map +1 -1
- package/dist/generated/themes/Modal.css.d.ts +1 -1
- package/dist/generated/themes/Modal.css.js +1 -1
- package/dist/generated/themes/Modal.css.js.map +1 -1
- package/dist/generated/themes/Pagination.css.d.ts +1 -1
- package/dist/generated/themes/Pagination.css.js +1 -1
- package/dist/generated/themes/Pagination.css.js.map +1 -1
- package/dist/generated/themes/RatingIndicator.css.d.ts +1 -1
- package/dist/generated/themes/RatingIndicator.css.js +1 -1
- package/dist/generated/themes/RatingIndicator.css.js.map +1 -1
- package/dist/generated/themes/Slider.css.d.ts +1 -1
- package/dist/generated/themes/Slider.css.js +1 -1
- package/dist/generated/themes/Slider.css.js.map +1 -1
- package/dist/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/EventRibbon.d.ts +37 -0
- package/dist/types/EventRibbon.js +43 -0
- package/dist/types/EventRibbon.js.map +1 -0
- package/dist/vscode.html-custom-data.json +99 -0
- package/dist/web-types.json +150 -1
- package/filter-coverage.js +58 -0
- package/package.json +7 -2
- package/src/AssetsVariables.ts +4 -0
- package/src/Button.ts +9 -0
- package/src/CountrySelector.ts +5 -3
- package/src/DatePicker.ts +2 -1
- package/src/EventRibbon.ts +143 -0
- package/src/EventRibbonTemplate.tsx +18 -0
- package/src/MastheadShell.ts +25 -5
- package/src/Pagination.hbs +7 -3
- package/src/Pagination.ts +48 -31
- package/src/PhoneNumberField.hbs +1 -1
- package/src/PhoneNumberField.ts +7 -2
- package/src/SearchableListBase.ts +18 -2
- package/src/TextField.ts +9 -0
- package/src/Wizard.ts +39 -11
- package/src/WizardTemplate.tsx +5 -1
- package/src/data/CountryListISO3166.ts +10 -2
- package/src/generated/templates/PaginationTemplate.lit.ts +1 -1
- package/src/generated/templates/PhoneNumberFieldTemplate.lit.ts +1 -1
- package/src/generated/themes/Button.css.ts +1 -1
- package/src/generated/themes/DatePickerPopover.css.ts +1 -1
- package/src/generated/themes/EventRibbon.css.ts +9 -0
- package/src/generated/themes/MastheadCountrySelector.css.ts +1 -1
- package/src/generated/themes/MastheadItem.css.ts +1 -1
- package/src/generated/themes/MastheadShell.css.ts +1 -1
- package/src/generated/themes/Modal.css.ts +1 -1
- package/src/generated/themes/Pagination.css.ts +1 -1
- package/src/generated/themes/RatingIndicator.css.ts +1 -1
- package/src/generated/themes/Slider.css.ts +1 -1
- package/src/generated/themes/TextField.css.ts +1 -1
- package/src/themes/Button.css +69 -27
- package/src/themes/DatePickerPopover.css +64 -6
- package/src/themes/EventRibbon.css +411 -0
- package/src/themes/MastheadCountrySelector.css +8 -5
- package/src/themes/MastheadItem.css +12 -4
- package/src/themes/MastheadShell.css +3 -1
- package/src/themes/Modal.css +4 -0
- package/src/themes/Pagination.css +19 -0
- package/src/themes/TextField.css +2 -13
- package/src/types/EventRibbon.ts +51 -0
- package/swap-component-imports.js +18 -0
package/src/Pagination.hbs
CHANGED
|
@@ -3,13 +3,15 @@
|
|
|
3
3
|
<ul class="udex-pagination__list">
|
|
4
4
|
<li class="udex-pagination__item--prev udex-pagination__item">
|
|
5
5
|
<udex-button
|
|
6
|
-
|
|
6
|
+
aria-disabled="{{effectivePrevButtonDisabled}}"
|
|
7
|
+
?_aria-disabled="{{_prevButtonPseudoDisabled}}"
|
|
7
8
|
accessible-name="{{previousPageAccessibleName}}"
|
|
8
9
|
tooltip="{{previousBtnTooltip}}"
|
|
9
10
|
size="Large"
|
|
10
11
|
icon="navigation-left-arrow"
|
|
11
12
|
design="Tertiary"
|
|
12
13
|
@click="{{setPrevPage}}"
|
|
14
|
+
@focusout="{{handlePrevFocusOut}}"
|
|
13
15
|
></udex-button>
|
|
14
16
|
</li>
|
|
15
17
|
{{#if typeFull}}
|
|
@@ -17,7 +19,7 @@
|
|
|
17
19
|
<li class="udex-pagination__item">
|
|
18
20
|
<a class="udex-pagination__page" href="#"
|
|
19
21
|
aria-label="{{accessibleName}}"
|
|
20
|
-
@click="{{../onPageClick}}"
|
|
22
|
+
@click="{{../onPageClick}}"
|
|
21
23
|
?active="{{active}}"
|
|
22
24
|
aria-current="{{ariaCurrent}}"
|
|
23
25
|
index="{{index}}">
|
|
@@ -35,13 +37,15 @@
|
|
|
35
37
|
{{/if}}
|
|
36
38
|
<li class="udex-pagination__item--next udex-pagination__item">
|
|
37
39
|
<udex-button
|
|
38
|
-
|
|
40
|
+
aria-disabled="{{effectiveNextButtonDisabled}}"
|
|
41
|
+
?_aria-disabled="{{_nextButtonPseudoDisabled}}"
|
|
39
42
|
tooltip="{{nextBtnTooltip}}"
|
|
40
43
|
accessible-name="{{nextPageAccessibleName}}"
|
|
41
44
|
size="Large"
|
|
42
45
|
icon="navigation-right-arrow"
|
|
43
46
|
design="Tertiary"
|
|
44
47
|
@click="{{setNextPage}}"
|
|
48
|
+
@focusout="{{handleNextFocusOut}}"
|
|
45
49
|
></udex-button>
|
|
46
50
|
</li>
|
|
47
51
|
</ul>
|
package/src/Pagination.ts
CHANGED
|
@@ -16,6 +16,7 @@ import {
|
|
|
16
16
|
PREVIOUS_PAGE,
|
|
17
17
|
NEXT_PAGE,
|
|
18
18
|
CURRENT_PAGE,
|
|
19
|
+
DISABLED,
|
|
19
20
|
} from "./generated/i18n/i18n-defaults.js";
|
|
20
21
|
import Button from "./Button.js";
|
|
21
22
|
import "@ui5/webcomponents/dist/Icon.js";
|
|
@@ -124,6 +125,22 @@ class UDExPagination extends UI5Element {
|
|
|
124
125
|
@property({ type: String })
|
|
125
126
|
_direction?: string;
|
|
126
127
|
|
|
128
|
+
/**
|
|
129
|
+
* Defines if the previous button is in pseudo-disabled.
|
|
130
|
+
*
|
|
131
|
+
* @private
|
|
132
|
+
*/
|
|
133
|
+
@property({ type: Boolean })
|
|
134
|
+
_nextButtonPseudoDisabled!: boolean;
|
|
135
|
+
|
|
136
|
+
/**
|
|
137
|
+
* Defines if the previous button is in pseudo-disabled.
|
|
138
|
+
*
|
|
139
|
+
* @private
|
|
140
|
+
*/
|
|
141
|
+
@property({ type: Boolean })
|
|
142
|
+
_prevButtonPseudoDisabled!: boolean;
|
|
143
|
+
|
|
127
144
|
@i18n("@sapudex/web-components")
|
|
128
145
|
static i18nBundle: I18nBundle;
|
|
129
146
|
|
|
@@ -159,7 +176,7 @@ class UDExPagination extends UI5Element {
|
|
|
159
176
|
this.setupPages(this.pages);
|
|
160
177
|
}
|
|
161
178
|
|
|
162
|
-
get
|
|
179
|
+
get nextButtonDisabled(): boolean {
|
|
163
180
|
return this.currentPageIndex + 1 === this.pages;
|
|
164
181
|
}
|
|
165
182
|
|
|
@@ -230,8 +247,12 @@ class UDExPagination extends UI5Element {
|
|
|
230
247
|
}
|
|
231
248
|
|
|
232
249
|
get previousPageAccessibleName(): string {
|
|
233
|
-
|
|
234
|
-
|
|
250
|
+
const currentPageText = `${UDExPagination.i18nBundle.getText(CURRENT_PAGE)} ${this.currentPageIndex + 1}.`;
|
|
251
|
+
if (this._prevButtonPseudoDisabled || this.prevButtonDisabled) {
|
|
252
|
+
const effectiveDisabledText = this._prevButtonPseudoDisabled ? `${UDExPagination.i18nBundle.getText(DISABLED)}` : "";
|
|
253
|
+
return `${currentPageText} ${UDExPagination.i18nBundle.getText(PREVIOUS_PAGE)} ${effectiveDisabledText}`;
|
|
254
|
+
}
|
|
255
|
+
return `${currentPageText} ${UDExPagination.i18nBundle.getText(PREVIOUS_PAGE)}. ${this.activatePageAccessibleText} ${this.currentPageIndex}`;
|
|
235
256
|
}
|
|
236
257
|
|
|
237
258
|
get previousBtnTooltip(): string {
|
|
@@ -239,12 +260,16 @@ class UDExPagination extends UI5Element {
|
|
|
239
260
|
}
|
|
240
261
|
|
|
241
262
|
get nextPageAccessibleName(): string {
|
|
242
|
-
|
|
243
|
-
|
|
263
|
+
const currentPageText = `${UDExPagination.i18nBundle.getText(CURRENT_PAGE)} ${this.currentPageIndex + 1}.`;
|
|
264
|
+
if (this._nextButtonPseudoDisabled || this.nextButtonDisabled) {
|
|
265
|
+
const effectiveDisabledText = this._nextButtonPseudoDisabled ? `${UDExPagination.i18nBundle.getText(DISABLED)}` : "";
|
|
266
|
+
return `${currentPageText} ${UDExPagination.i18nBundle.getText(NEXT_PAGE)} ${effectiveDisabledText}`;
|
|
267
|
+
}
|
|
268
|
+
return `${currentPageText} ${UDExPagination.i18nBundle.getText(NEXT_PAGE)}. ${this.activatePageAccessibleText} ${this.currentPageIndex + 2}`;
|
|
244
269
|
}
|
|
245
270
|
|
|
246
271
|
get nextBtnTooltip(): string {
|
|
247
|
-
return !this.
|
|
272
|
+
return !this.nextButtonDisabled ? `${UDExPagination.i18nBundle.getText(NEXT_PAGE)}` : "";
|
|
248
273
|
}
|
|
249
274
|
|
|
250
275
|
get pagination(): Page[] {
|
|
@@ -297,46 +322,38 @@ class UDExPagination extends UI5Element {
|
|
|
297
322
|
this.currentPageIndex = currentPage + 1;
|
|
298
323
|
this._pageFocusedManually = false;
|
|
299
324
|
|
|
325
|
+
this._nextButtonPseudoDisabled = this.currentPageIndex === (this.pages - 1);
|
|
326
|
+
|
|
300
327
|
this.emitChangeEvent();
|
|
301
328
|
}
|
|
302
329
|
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
const currentPage = this.currentPageIndex ?? 1;
|
|
306
|
-
if (this.pages && currentPage <= 0) {
|
|
307
|
-
return;
|
|
308
|
-
}
|
|
309
|
-
this.currentPageIndex -= 1;
|
|
310
|
-
this._pageFocusedManually = false;
|
|
311
|
-
|
|
312
|
-
this.emitChangeEvent();
|
|
330
|
+
get effectiveNextButtonDisabled(): boolean {
|
|
331
|
+
return !this._nextButtonPseudoDisabled && this.nextButtonDisabled;
|
|
313
332
|
}
|
|
314
333
|
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
if (currentPage === 0) {
|
|
319
|
-
return;
|
|
320
|
-
}
|
|
334
|
+
get effectivePrevButtonDisabled(): boolean {
|
|
335
|
+
return !this._prevButtonPseudoDisabled && this.prevButtonDisabled;
|
|
336
|
+
}
|
|
321
337
|
|
|
322
|
-
|
|
323
|
-
this.
|
|
338
|
+
handlePrevFocusOut(): void {
|
|
339
|
+
this._prevButtonPseudoDisabled = false;
|
|
340
|
+
}
|
|
324
341
|
|
|
325
|
-
|
|
326
|
-
this.
|
|
342
|
+
handleNextFocusOut(): void {
|
|
343
|
+
this._nextButtonPseudoDisabled = false;
|
|
327
344
|
}
|
|
328
345
|
|
|
329
|
-
|
|
346
|
+
setPrevPage(e: Event): void {
|
|
330
347
|
e.preventDefault();
|
|
331
348
|
const currentPage = this.currentPageIndex ?? 1;
|
|
332
|
-
if (
|
|
349
|
+
if (this.pages && currentPage <= 0) {
|
|
333
350
|
return;
|
|
334
351
|
}
|
|
352
|
+
this.currentPageIndex -= 1;
|
|
353
|
+
this._pageFocusedManually = false;
|
|
335
354
|
|
|
336
|
-
this.
|
|
337
|
-
this._lastPageIndex = this.pages;
|
|
355
|
+
this._prevButtonPseudoDisabled = this.currentPageIndex === 0;
|
|
338
356
|
|
|
339
|
-
this.currentPageIndex = this._lastPageIndex - 1;
|
|
340
357
|
this.emitChangeEvent();
|
|
341
358
|
}
|
|
342
359
|
|
package/src/PhoneNumberField.hbs
CHANGED
|
@@ -64,7 +64,7 @@
|
|
|
64
64
|
<img
|
|
65
65
|
class="udex-phone-number-field__flag"
|
|
66
66
|
aria-label="{{selectedCountryName}}"
|
|
67
|
-
style="{{selectedFlagBackgroundPosition}}">
|
|
67
|
+
style="background-position-x: {{selectedFlagBackgroundPosition.x}}; background-position-y: {{selectedFlagBackgroundPosition.y}}">
|
|
68
68
|
</div>
|
|
69
69
|
</udex-button>
|
|
70
70
|
{{/unless}}
|
package/src/PhoneNumberField.ts
CHANGED
|
@@ -44,6 +44,11 @@ export enum UDExPhoneNumberFieldValueState {
|
|
|
44
44
|
Success = "Success",
|
|
45
45
|
}
|
|
46
46
|
|
|
47
|
+
export type BackgroundPosition = {
|
|
48
|
+
x?: string,
|
|
49
|
+
y?: string,
|
|
50
|
+
};
|
|
51
|
+
|
|
47
52
|
const initialPlaceholder: string = "+X XXX-XXX-XXXX";
|
|
48
53
|
/**
|
|
49
54
|
* Maximum number of possible digits based on international standard https://en.wikipedia.org/wiki/E.164
|
|
@@ -564,7 +569,7 @@ class UDExPhoneNumberField extends UI5Element {
|
|
|
564
569
|
|| this.updatedCountriesList[0]?.countryName;
|
|
565
570
|
}
|
|
566
571
|
|
|
567
|
-
get selectedFlagBackgroundPosition() {
|
|
572
|
+
get selectedFlagBackgroundPosition(): BackgroundPosition {
|
|
568
573
|
if (!this.countryIso) {
|
|
569
574
|
return {};
|
|
570
575
|
}
|
|
@@ -575,7 +580,7 @@ class UDExPhoneNumberField extends UI5Element {
|
|
|
575
580
|
return {};
|
|
576
581
|
}
|
|
577
582
|
|
|
578
|
-
return {
|
|
583
|
+
return { x: selectedCountry?.flagX, y: selectedCountry?.flagY };
|
|
579
584
|
}
|
|
580
585
|
|
|
581
586
|
get ariaInvalid(): string | null {
|
|
@@ -97,6 +97,15 @@ class UDExSearchableListBase extends UI5Element {
|
|
|
97
97
|
@property({ type: Boolean })
|
|
98
98
|
busy?: boolean;
|
|
99
99
|
|
|
100
|
+
/**
|
|
101
|
+
* Defines if the search input is visible.
|
|
102
|
+
*
|
|
103
|
+
* @default false
|
|
104
|
+
* @public
|
|
105
|
+
*/
|
|
106
|
+
@property({ type: Boolean })
|
|
107
|
+
showSearchInput!: boolean;
|
|
108
|
+
|
|
100
109
|
/**
|
|
101
110
|
* Defines the delay in milliseconds, after which the busy indicator will show up for this component.
|
|
102
111
|
*
|
|
@@ -502,8 +511,15 @@ class UDExSearchableListBase extends UI5Element {
|
|
|
502
511
|
}
|
|
503
512
|
|
|
504
513
|
get showSearch(): boolean {
|
|
505
|
-
|
|
506
|
-
|
|
514
|
+
return this.showSearchInput || (this.isSearchActive && !this.modeRadioGroup);
|
|
515
|
+
}
|
|
516
|
+
|
|
517
|
+
get isSearchActive(): boolean {
|
|
518
|
+
return this.nonGroupItems.length > SHOW_SEARCH_AFTER_COUNT;
|
|
519
|
+
}
|
|
520
|
+
|
|
521
|
+
get nonGroupItems(): Array<UDExListItemBase> {
|
|
522
|
+
return this.getSlottedItems(this.items).filter(item => !item.isGroup);
|
|
507
523
|
}
|
|
508
524
|
|
|
509
525
|
get roleForGroupList(): string {
|
package/src/TextField.ts
CHANGED
|
@@ -224,6 +224,15 @@ class UDExTextField extends UI5Element {
|
|
|
224
224
|
@property({ type: Boolean })
|
|
225
225
|
active!: boolean;
|
|
226
226
|
|
|
227
|
+
/**
|
|
228
|
+
* Defines if dropdown associated with text-field trigger has opened dropdown. It indicates active state of control button.
|
|
229
|
+
*
|
|
230
|
+
* @default false
|
|
231
|
+
* @public
|
|
232
|
+
*/
|
|
233
|
+
@property({ type: Boolean })
|
|
234
|
+
iconActive!: boolean;
|
|
235
|
+
|
|
227
236
|
/**
|
|
228
237
|
* Defines the behaviour of autocomplete.
|
|
229
238
|
* @default "off"
|
package/src/Wizard.ts
CHANGED
|
@@ -85,6 +85,30 @@ class UDExWizard extends UI5Wizard {
|
|
|
85
85
|
@property({ type: Boolean })
|
|
86
86
|
indeterminate!: boolean;
|
|
87
87
|
|
|
88
|
+
/**
|
|
89
|
+
* Defines aria-label of the wizard, read by screen readers with the first step.
|
|
90
|
+
*
|
|
91
|
+
* @public
|
|
92
|
+
*/
|
|
93
|
+
@property({ type: String })
|
|
94
|
+
accessibleName!: string;
|
|
95
|
+
|
|
96
|
+
/**
|
|
97
|
+
* Defines the title of the current step.
|
|
98
|
+
*
|
|
99
|
+
* @private
|
|
100
|
+
*/
|
|
101
|
+
@property({ type: String })
|
|
102
|
+
_currentStepTitle?: string;
|
|
103
|
+
|
|
104
|
+
/**
|
|
105
|
+
* Defines the subtitle of the current step.
|
|
106
|
+
*
|
|
107
|
+
* @private
|
|
108
|
+
*/
|
|
109
|
+
@property({ type: String })
|
|
110
|
+
_currentStepSubTitle?: string;
|
|
111
|
+
|
|
88
112
|
/**
|
|
89
113
|
* Defines the current breakpoint.
|
|
90
114
|
*
|
|
@@ -115,10 +139,6 @@ class UDExWizard extends UI5Wizard {
|
|
|
115
139
|
ResizeHandler.deregister(this, this._handleResizeBound);
|
|
116
140
|
}
|
|
117
141
|
|
|
118
|
-
onAfterRendering(): void {
|
|
119
|
-
this._calcCurrentBreakpoint();
|
|
120
|
-
}
|
|
121
|
-
|
|
122
142
|
_adjustHeaderOverflow = () => {
|
|
123
143
|
const tabs = this.stepsInHeaderDOM;
|
|
124
144
|
tabs.forEach(step => {
|
|
@@ -168,13 +188,9 @@ class UDExWizard extends UI5Wizard {
|
|
|
168
188
|
return this.steps.map((step, idx) => {
|
|
169
189
|
const pos = idx + 1;
|
|
170
190
|
const hideSeparator = idx === stepsCount - 1 && !this.indeterminate;
|
|
171
|
-
const
|
|
172
|
-
?
|
|
173
|
-
: this.
|
|
174
|
-
const ariaLabel = (
|
|
175
|
-
step.titleText
|
|
176
|
-
? `${pos} ${step.titleText} ${stepStateText}`
|
|
177
|
-
: `${this.navStepDefaultHeading} ${pos} ${stepStateText}`
|
|
191
|
+
const ariaLabel = (`${idx === 0 ? this.effectiveAccessibleName : ""} ${step.titleText
|
|
192
|
+
? `${pos} ${step.titleText}`
|
|
193
|
+
: `${this.navStepDefaultHeading} ${pos}`}`
|
|
178
194
|
).trim();
|
|
179
195
|
const isAfterCurrent = idx > selectedStepIndex;
|
|
180
196
|
accInfo = {
|
|
@@ -209,6 +225,18 @@ class UDExWizard extends UI5Wizard {
|
|
|
209
225
|
this._calcCurrentBreakpoint();
|
|
210
226
|
}
|
|
211
227
|
|
|
228
|
+
onAfterRendering(): void {
|
|
229
|
+
this.attachStepsResizeObserver();
|
|
230
|
+
this._calcCurrentBreakpoint();
|
|
231
|
+
this.previouslySelectedStepIndex = this.selectedStepIndex;
|
|
232
|
+
this._currentStepTitle = this._steps[this.selectedStepIndex].titleText;
|
|
233
|
+
this._currentStepSubTitle = this._steps[this.selectedStepIndex].subtitleText;
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
get effectiveAccessibleName(): string {
|
|
237
|
+
return this.accessibleName || this.ariaLabelText;
|
|
238
|
+
}
|
|
239
|
+
|
|
212
240
|
get slottedSteps(): UDExWizardStep[] {
|
|
213
241
|
return this.getSlottedNodes("steps");
|
|
214
242
|
}
|
package/src/WizardTemplate.tsx
CHANGED
|
@@ -5,9 +5,13 @@ export default function WizardTemplate(this: UDExWizard) {
|
|
|
5
5
|
return (
|
|
6
6
|
<div
|
|
7
7
|
class={this.classes.root}
|
|
8
|
-
aria-label={this.
|
|
8
|
+
aria-label={this.effectiveAccessibleName}
|
|
9
9
|
role="region"
|
|
10
10
|
part="ui5-wiz-root">
|
|
11
|
+
<div role="alert" class="ui5-hidden-text">
|
|
12
|
+
{this._currentStepTitle && <div>{this._currentStepTitle}</div>}
|
|
13
|
+
{this._currentStepSubTitle && <div>{this._currentStepSubTitle}</div>}
|
|
14
|
+
</div>
|
|
11
15
|
<nav class="ui5-wiz-nav" part="navigator" aria-label={this.navAriaLabelText} tabindex={-1}>
|
|
12
16
|
<div class="ui5-wiz-nav-list" role="list" aria-label={this.listAriaLabelText} aria-describedby="wiz-nav-descr">
|
|
13
17
|
{this.stepsInfo.map(headerStep =>
|
|
@@ -5,8 +5,8 @@ export type Country = {
|
|
|
5
5
|
countryName: string,
|
|
6
6
|
localName?: string,
|
|
7
7
|
phonePrefix: string;
|
|
8
|
-
flagX
|
|
9
|
-
flagY
|
|
8
|
+
flagX?: string;
|
|
9
|
+
flagY?: string;
|
|
10
10
|
}
|
|
11
11
|
|
|
12
12
|
export const CountryListDB = [
|
|
@@ -40,6 +40,14 @@ export const CountryListDB = [
|
|
|
40
40
|
"flagX": "-1800px",
|
|
41
41
|
"flagY": "0px",
|
|
42
42
|
},
|
|
43
|
+
{
|
|
44
|
+
"locKey": "COUNTRY_AQ",
|
|
45
|
+
"iso": "AQ",
|
|
46
|
+
"phoneFmt": " XX XXXX",
|
|
47
|
+
"countryName": "Antarctica",
|
|
48
|
+
"localName": "Antarctica",
|
|
49
|
+
"phonePrefix": "+672",
|
|
50
|
+
},
|
|
43
51
|
{
|
|
44
52
|
"locKey": "COUNTRY_AS",
|
|
45
53
|
"iso": "AS",
|
|
@@ -6,7 +6,7 @@ import type Pagination from "../../Pagination.js";
|
|
|
6
6
|
import type { ClassMapValue } from "@ui5/webcomponents-base/dist/types.js";
|
|
7
7
|
|
|
8
8
|
function block0 (this: Pagination, context: UI5Element, tags: string[], suffix: string | undefined) { return html`${ this.pages ? block1.call(this, context, tags, suffix) : undefined } `;}
|
|
9
|
-
function block1 (this: Pagination, context: UI5Element, tags: string[], suffix: string | undefined) { return suffix ? html`<nav class="${ifDefined(this.paginationClass)}" role="navigation" aria-label="${ifDefined(this.paginationAccessibleName)}"><ul class="udex-pagination__list"><li class="udex-pagination__item--prev udex-pagination__item"><${scopeTag("udex-button", tags, suffix)} ?disabled="${this.
|
|
9
|
+
function block1 (this: Pagination, context: UI5Element, tags: string[], suffix: string | undefined) { return suffix ? html`<nav class="${ifDefined(this.paginationClass)}" role="navigation" aria-label="${ifDefined(this.paginationAccessibleName)}"><ul class="udex-pagination__list"><li class="udex-pagination__item--prev udex-pagination__item"><${scopeTag("udex-button", tags, suffix)} aria-disabled="${ifDefined(this.effectivePrevButtonDisabled)}" ?_aria-disabled="${ifDefined(this._prevButtonPseudoDisabled)}" accessible-name="${ifDefined(this.previousPageAccessibleName)}" tooltip="${ifDefined(this.previousBtnTooltip)}" size="Large" icon="navigation-left-arrow" design="Tertiary" @click="${this.setPrevPage}" @focusout="${this.handlePrevFocusOut}"></${scopeTag("udex-button", tags, suffix)}></li>${ this.typeFull ? block2.call(this, context, tags, suffix) : undefined }${ this.typeShort ? block4.call(this, context, tags, suffix) : undefined }<li class="udex-pagination__item--next udex-pagination__item"><${scopeTag("udex-button", tags, suffix)} aria-disabled="${ifDefined(this.effectiveNextButtonDisabled)}" ?_aria-disabled="${ifDefined(this._nextButtonPseudoDisabled)}" tooltip="${ifDefined(this.nextBtnTooltip)}" accessible-name="${ifDefined(this.nextPageAccessibleName)}" size="Large" icon="navigation-right-arrow" design="Tertiary" @click="${this.setNextPage}" @focusout="${this.handleNextFocusOut}"></${scopeTag("udex-button", tags, suffix)}></li></ul></nav>` : html`<nav class="${ifDefined(this.paginationClass)}" role="navigation" aria-label="${ifDefined(this.paginationAccessibleName)}"><ul class="udex-pagination__list"><li class="udex-pagination__item--prev udex-pagination__item"><udex-button aria-disabled="${ifDefined(this.effectivePrevButtonDisabled)}" ?_aria-disabled="${ifDefined(this._prevButtonPseudoDisabled)}" accessible-name="${ifDefined(this.previousPageAccessibleName)}" tooltip="${ifDefined(this.previousBtnTooltip)}" size="Large" icon="navigation-left-arrow" design="Tertiary" @click="${this.setPrevPage}" @focusout="${this.handlePrevFocusOut}"></udex-button></li>${ this.typeFull ? block2.call(this, context, tags, suffix) : undefined }${ this.typeShort ? block4.call(this, context, tags, suffix) : undefined }<li class="udex-pagination__item--next udex-pagination__item"><udex-button aria-disabled="${ifDefined(this.effectiveNextButtonDisabled)}" ?_aria-disabled="${ifDefined(this._nextButtonPseudoDisabled)}" tooltip="${ifDefined(this.nextBtnTooltip)}" accessible-name="${ifDefined(this.nextPageAccessibleName)}" size="Large" icon="navigation-right-arrow" design="Tertiary" @click="${this.setNextPage}" @focusout="${this.handleNextFocusOut}"></udex-button></li></ul></nav>`;}
|
|
10
10
|
function block2 (this: Pagination, context: UI5Element, tags: string[], suffix: string | undefined) { return html`${ repeat(this.pagination, (item, index) => (item as typeof item & {_id?: any})._id || index, (item, index: number) => block3.call(this, context, tags, suffix, item, index)) }`;}
|
|
11
11
|
function block3 (this: Pagination, context: UI5Element, tags: string[], suffix: string | undefined, item: any, index: number) { return html`<li class="udex-pagination__item"><a class="udex-pagination__page" href="#" aria-label="${ifDefined(item.accessibleName)}" @click="${this.onPageClick}" ?active="${item.active}" aria-current="${ifDefined(item.ariaCurrent)}" index="${ifDefined(item.index)}"><span class="udex-pagination__page--value">${ifDefined(item.value)}</span></a></li>`;}
|
|
12
12
|
function block4 (this: Pagination, context: UI5Element, tags: string[], suffix: string | undefined) { return html`<li class="udex-pagination__item udex-pagination__item--short" tabindex="-1" aria-label="${ifDefined(this.paginationShortAccessibleName)}"><span class="udex-pagination__item--short-value">${ifDefined(this.shortTextStart)}</span><span class="udex-pagination__item--short-separator">${ifDefined(this.shortTextSeparator)}</span><span class="udex-pagination__item--short-value">${ifDefined(this.shortTextEnd)}</span></li>`;}
|
|
@@ -10,7 +10,7 @@ function block1 (this: PhoneNumberField, context: UI5Element, tags: string[], su
|
|
|
10
10
|
function block2 (this: PhoneNumberField, context: UI5Element, tags: string[], suffix: string | undefined) { return html` * `;}
|
|
11
11
|
function block3 (this: PhoneNumberField, context: UI5Element, tags: string[], suffix: string | undefined, item: any, index: number) { return suffix ? html`<${scopeTag("udex-list-item", tags, suffix)} id="${ifDefined(item.iso)}" ?selected="${item.selected}"><div class="udex-phone-number-field__dropdown-list-item"><div class="udex-phone-number-field__flag" style="background-position-x: ${ifDefined(item.flagX)}; background-position-y: ${ifDefined(item.flagY)}"></div><span class="udex-phone-number-field__country-name">${ifDefined(item.countryName)}${ item.localName ? block4.call(this, context, tags, suffix, item, index) : undefined }${ifDefined(item.phonePrefix)}</span></div></${scopeTag("udex-list-item", tags, suffix)}>` : html`<udex-list-item id="${ifDefined(item.iso)}" ?selected="${item.selected}"><div class="udex-phone-number-field__dropdown-list-item"><div class="udex-phone-number-field__flag" style="background-position-x: ${ifDefined(item.flagX)}; background-position-y: ${ifDefined(item.flagY)}"></div><span class="udex-phone-number-field__country-name">${ifDefined(item.countryName)}${ item.localName ? block4.call(this, context, tags, suffix, item, index) : undefined }${ifDefined(item.phonePrefix)}</span></div></udex-list-item>`;}
|
|
12
12
|
function block4 (this: PhoneNumberField, context: UI5Element, tags: string[], suffix: string | undefined, item: any, index: number) { return html` (${ifDefined(item.localName)}) `;}
|
|
13
|
-
function block5 (this: PhoneNumberField, context: UI5Element, tags: string[], suffix: string | undefined) { return suffix ? html`<${scopeTag("udex-button", tags, suffix)} id="udex-${ifDefined(this._id)}-phone-number__opener" class="udex-phone-number-field__open-button" size="Large" end-icon="${ifDefined(this.buttonIcon)}" design="Tertiary" ?disabled="${this.isButtonDisabled}" aria-haspopup="true" accessible-name-ref="${ifDefined(this._id)}-countrySelectorAriaLabel ${ifDefined(this.ariaDescribedById)}" aria-label="${ifDefined(this.countrySelectorAriaLabel)}" aria-expanded="${ifDefined(this._dropdownExpanded)}" aria-controls="${ifDefined(this._id)}_dropdown-menu" role="combobox" @click="${this.openDropdown}"><div class="udex-phone-number-field__open-button-text">${ifDefined(this.selectedCountryName)}${ifDefined(this.selectedPhonePrefix)}</div><div class="udex-phone-number-field__button-content"><img class="udex-phone-number-field__flag" aria-label="${ifDefined(this.selectedCountryName)}" style="${
|
|
13
|
+
function block5 (this: PhoneNumberField, context: UI5Element, tags: string[], suffix: string | undefined) { return suffix ? html`<${scopeTag("udex-button", tags, suffix)} id="udex-${ifDefined(this._id)}-phone-number__opener" class="udex-phone-number-field__open-button" size="Large" end-icon="${ifDefined(this.buttonIcon)}" design="Tertiary" ?disabled="${this.isButtonDisabled}" aria-haspopup="true" accessible-name-ref="${ifDefined(this._id)}-countrySelectorAriaLabel ${ifDefined(this.ariaDescribedById)}" aria-label="${ifDefined(this.countrySelectorAriaLabel)}" aria-expanded="${ifDefined(this._dropdownExpanded)}" aria-controls="${ifDefined(this._id)}_dropdown-menu" role="combobox" @click="${this.openDropdown}"><div class="udex-phone-number-field__open-button-text">${ifDefined(this.selectedCountryName)}${ifDefined(this.selectedPhonePrefix)}</div><div class="udex-phone-number-field__button-content"><img class="udex-phone-number-field__flag" aria-label="${ifDefined(this.selectedCountryName)}" style="background-position-x: ${ifDefined(this.selectedFlagBackgroundPosition.x)}; background-position-y: ${ifDefined(this.selectedFlagBackgroundPosition.y)}"></div></${scopeTag("udex-button", tags, suffix)}>` : html`<udex-button id="udex-${ifDefined(this._id)}-phone-number__opener" class="udex-phone-number-field__open-button" size="Large" end-icon="${ifDefined(this.buttonIcon)}" design="Tertiary" ?disabled="${this.isButtonDisabled}" aria-haspopup="true" accessible-name-ref="${ifDefined(this._id)}-countrySelectorAriaLabel ${ifDefined(this.ariaDescribedById)}" aria-label="${ifDefined(this.countrySelectorAriaLabel)}" aria-expanded="${ifDefined(this._dropdownExpanded)}" aria-controls="${ifDefined(this._id)}_dropdown-menu" role="combobox" @click="${this.openDropdown}"><div class="udex-phone-number-field__open-button-text">${ifDefined(this.selectedCountryName)}${ifDefined(this.selectedPhonePrefix)}</div><div class="udex-phone-number-field__button-content"><img class="udex-phone-number-field__flag" aria-label="${ifDefined(this.selectedCountryName)}" style="background-position-x: ${ifDefined(this.selectedFlagBackgroundPosition.x)}; background-position-y: ${ifDefined(this.selectedFlagBackgroundPosition.y)}"></div></udex-button>`;}
|
|
14
14
|
function block6 (this: PhoneNumberField, 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>`;}
|
|
15
15
|
function block7 (this: PhoneNumberField, context: UI5Element, tags: string[], suffix: string | undefined) { return html`<span id="${ifDefined(this._id)}-supportingTextDesc" class="hidden-text">${ifDefined(this.supportingText)}</span>`;}
|
|
16
16
|
function block8 (this: PhoneNumberField, context: UI5Element, tags: string[], suffix: string | undefined) { return html`<span id="${ifDefined(this._id)}-valueStateDesc" class="hidden-text">${ifDefined(this.valueStateText)}</span>`;}
|