@sapudex/web-components 2.1.1 → 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 +5 -5
- 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 +129 -131
- package/cypress/specs/SecondaryNavigationMobile.cy.tsx +27 -38
- package/cypress/specs/SelectBox.cy.tsx +93 -88
- package/cypress/specs/Slider.cy.tsx +5 -4
- 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/Badge.d.ts +2 -2
- package/dist/Badge.js +4 -4
- package/dist/Badge.js.map +1 -1
- package/dist/Breadcrumbs.d.ts +1 -0
- package/dist/Breadcrumbs.js +11 -1
- package/dist/Breadcrumbs.js.map +1 -1
- package/dist/Button.d.ts +19 -1
- package/dist/Button.js +15 -1
- package/dist/Button.js.map +1 -1
- package/dist/Checkbox.d.ts +1 -0
- package/dist/Checkbox.js +3 -0
- package/dist/Checkbox.js.map +1 -1
- package/dist/ControlButton.d.ts +2 -1
- package/dist/ControlButton.js +2 -1
- package/dist/ControlButton.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.d.ts +2 -2
- 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/InputGroup.d.ts +5 -2
- package/dist/InputGroup.js +6 -0
- package/dist/InputGroup.js.map +1 -1
- package/dist/ListItem.d.ts +3 -2
- package/dist/ListItem.js +2 -2
- package/dist/ListItem.js.map +1 -1
- package/dist/MastheadItem.js +1 -1
- package/dist/MastheadItem.js.map +1 -1
- package/dist/MastheadShell.d.ts +4 -1
- package/dist/MastheadShell.js +21 -5
- package/dist/MastheadShell.js.map +1 -1
- package/dist/MediaPlayer.d.ts +2 -1
- package/dist/MediaPlayer.js.map +1 -1
- package/dist/MediaPlayerYoutube.d.ts +2 -1
- package/dist/MediaPlayerYoutube.js.map +1 -1
- package/dist/Pagination.d.ts +18 -4
- package/dist/Pagination.js +33 -31
- package/dist/Pagination.js.map +1 -1
- package/dist/PhoneNumberField.d.ts +10 -7
- package/dist/PhoneNumberField.js +8 -2
- package/dist/PhoneNumberField.js.map +1 -1
- package/dist/ProgressBar.d.ts +2 -2
- package/dist/ProgressBar.js +6 -6
- package/dist/ProgressBar.js.map +1 -1
- package/dist/RadioButton.d.ts +2 -2
- package/dist/RadioButton.js +6 -6
- package/dist/RadioButton.js.map +1 -1
- package/dist/Search.d.ts +0 -1
- package/dist/Search.js +1 -3
- package/dist/Search.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/SecondaryNavigation.d.ts +4 -1
- package/dist/SecondaryNavigation.js +38 -10
- package/dist/SecondaryNavigation.js.map +1 -1
- package/dist/SecondaryNavigationItem.d.ts +10 -0
- package/dist/SecondaryNavigationItem.js +19 -0
- package/dist/SecondaryNavigationItem.js.map +1 -1
- package/dist/SecondaryNavigationItemBase.d.ts +1 -0
- package/dist/SecondaryNavigationItemBase.js +4 -0
- package/dist/SecondaryNavigationItemBase.js.map +1 -1
- package/dist/SecondaryNavigationSubItem.d.ts +0 -1
- package/dist/SecondaryNavigationSubItem.js +0 -4
- package/dist/SecondaryNavigationSubItem.js.map +1 -1
- package/dist/SegmentedButton.d.ts +1 -1
- package/dist/SegmentedButton.js +1 -1
- package/dist/SegmentedButton.js.map +1 -1
- package/dist/SegmentedButtonItem.d.ts +1 -1
- package/dist/SegmentedButtonItem.js +2 -2
- package/dist/SegmentedButtonItem.js.map +1 -1
- package/dist/StatusBadge.d.ts +8 -3
- package/dist/StatusBadge.js +9 -1
- package/dist/StatusBadge.js.map +1 -1
- package/dist/StepInput.d.ts +3 -3
- package/dist/StepInput.js.map +1 -1
- package/dist/TableCellBase.d.ts +2 -2
- package/dist/TableCellBase.js.map +1 -1
- package/dist/Tag.d.ts +2 -2
- package/dist/Tag.js +4 -4
- package/dist/Tag.js.map +1 -1
- package/dist/TextArea.d.ts +2 -2
- package/dist/TextArea.js +9 -9
- package/dist/TextArea.js.map +1 -1
- package/dist/TextField.d.ts +9 -2
- package/dist/TextField.js +8 -5
- package/dist/TextField.js.map +1 -1
- package/dist/Toast.js +1 -1
- package/dist/Toast.js.map +1 -1
- package/dist/Upload.d.ts +1 -1
- package/dist/Upload.js +1 -1
- package/dist/Upload.js.map +1 -1
- package/dist/UploadItem.d.ts +3 -3
- package/dist/UploadItem.js +9 -9
- package/dist/UploadItem.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-BgbbJ4tc.js +2 -0
- package/dist/assets/{ListItemStandardExpandableTextTemplate-CLBtdbBK.js → ListItemStandardExpandableTextTemplate-onAnn1Tj.js} +2 -2
- package/dist/assets/bundle.esm-CwUfibNQ.js +389 -0
- package/dist/assets/parameters-bundle.css-1GGBOW8m.js +2 -0
- package/dist/assets/parameters-bundle.css-A9eeRg2R.js +2 -0
- package/dist/assets/parameters-bundle.css-COBI_9-U.js +2 -0
- package/dist/assets/parameters-bundle.css-CgAoZ-Ir.js +2 -0
- package/dist/assets/parameters-bundle.css-DuFHHRNK.js +2 -0
- package/dist/assets/parameters-bundle.css-Pf68NO0T.js +2 -0
- package/dist/assets/parameters-bundle.css-aX_t_-9o.js +2 -0
- package/dist/assets/parameters-bundle.css-rNSryFKH.js +2 -0
- package/dist/css/themes/Breadcrumbs.css +1 -1
- 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/ListItem.css +1 -1
- 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/Search.css +1 -1
- package/dist/css/themes/SideNavigationItem.css +1 -1
- package/dist/css/themes/SideNavigationSubItem.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 +471 -37
- package/dist/custom-elements.json +442 -35
- 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/json-imports/Themes-node.d.ts +1 -0
- package/dist/generated/json-imports/Themes-node.js +19 -0
- package/dist/generated/json-imports/Themes-node.js.map +1 -0
- package/dist/generated/json-imports/i18n-node.d.ts +1 -0
- package/dist/generated/json-imports/i18n-node.js +82 -0
- package/dist/generated/json-imports/i18n-node.js.map +1 -0
- package/dist/generated/templates/BreadcrumbsPopoverTemplate.lit.js +1 -1
- package/dist/generated/templates/BreadcrumbsPopoverTemplate.lit.js.map +1 -1
- package/dist/generated/templates/BreadcrumbsTemplate.lit.js +1 -1
- package/dist/generated/templates/BreadcrumbsTemplate.lit.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/templates/SearchTemplate.lit.js +3 -3
- package/dist/generated/templates/SearchTemplate.lit.js.map +1 -1
- package/dist/generated/templates/SecondaryNavigationItemTemplate.lit.js +2 -2
- package/dist/generated/templates/SecondaryNavigationItemTemplate.lit.js.map +1 -1
- package/dist/generated/templates/SecondaryNavigationTemplate.lit.js +1 -1
- package/dist/generated/templates/SecondaryNavigationTemplate.lit.js.map +1 -1
- package/dist/generated/themes/Breadcrumbs.css.d.ts +1 -1
- package/dist/generated/themes/Breadcrumbs.css.js +1 -1
- package/dist/generated/themes/Breadcrumbs.css.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/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/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/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/SideNavigationItem.css.d.ts +1 -1
- package/dist/generated/themes/SideNavigationItem.css.js +1 -1
- package/dist/generated/themes/SideNavigationItem.css.js.map +1 -1
- package/dist/generated/themes/SideNavigationSubItem.css.d.ts +1 -1
- package/dist/generated/themes/SideNavigationSubItem.css.js +1 -1
- package/dist/generated/themes/SideNavigationSubItem.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/ButtonAccessibleRole.d.ts +8 -0
- package/dist/types/ButtonAccessibleRole.js +10 -0
- package/dist/types/ButtonAccessibleRole.js.map +1 -0
- package/dist/types/{Button.d.ts → ButtonDesign.d.ts} +1 -15
- package/dist/types/ButtonDesign.js +16 -0
- package/dist/types/ButtonDesign.js.map +1 -0
- package/dist/types/ButtonSize.d.ts +6 -0
- package/dist/types/ButtonSize.js +8 -0
- package/dist/types/ButtonSize.js.map +1 -0
- package/dist/types/ControlButtonDesign.d.ts +10 -0
- package/dist/types/ControlButtonDesign.js +12 -0
- package/dist/types/ControlButtonDesign.js.map +1 -0
- 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/types/ProgressBar.d.ts +1 -1
- package/dist/types/ProgressBar.js +1 -1
- package/dist/types/ProgressBar.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 +110 -10
- package/dist/web-types.json +159 -13
- package/filter-coverage.js +58 -0
- package/package.json +14 -9
- package/src/AssetsVariables.ts +4 -0
- package/src/Badge.ts +4 -4
- package/src/Breadcrumbs.hbs +7 -10
- package/src/Breadcrumbs.ts +14 -1
- package/src/BreadcrumbsPopover.hbs +3 -1
- package/src/Button.ts +21 -1
- package/src/Checkbox.ts +4 -0
- package/src/ControlButton.ts +2 -1
- package/src/CountrySelector.ts +5 -3
- package/src/DatePicker.ts +4 -3
- package/src/EventRibbon.ts +143 -0
- package/src/EventRibbonTemplate.tsx +18 -0
- package/src/InputGroup.ts +5 -2
- package/src/ListItem.ts +4 -4
- package/src/MastheadItem.ts +1 -1
- package/src/MastheadShell.ts +25 -5
- package/src/MediaPlayer.ts +3 -1
- package/src/MediaPlayerYoutube.ts +4 -2
- package/src/Pagination.hbs +7 -3
- package/src/Pagination.ts +49 -32
- package/src/PhoneNumberField.hbs +1 -1
- package/src/PhoneNumberField.ts +13 -5
- package/src/ProgressBar.ts +6 -6
- package/src/RadioButton.ts +6 -6
- package/src/Search.hbs +3 -2
- package/src/Search.ts +1 -3
- package/src/SearchableListBase.ts +18 -2
- package/src/SecondaryNavigation.hbs +1 -0
- package/src/SecondaryNavigation.ts +41 -12
- package/src/SecondaryNavigationItem.hbs +2 -1
- package/src/SecondaryNavigationItem.ts +31 -0
- package/src/SecondaryNavigationItemBase.ts +3 -0
- package/src/SecondaryNavigationSubItem.ts +0 -3
- package/src/SegmentedButton.ts +1 -1
- package/src/SegmentedButtonItem.ts +2 -2
- package/src/StatusBadge.ts +8 -3
- package/src/StepInput.ts +3 -3
- package/src/TableCellBase.ts +2 -2
- package/src/Tag.ts +4 -4
- package/src/TextArea.ts +9 -9
- package/src/TextField.ts +14 -5
- package/src/Toast.ts +1 -1
- package/src/Upload.ts +1 -1
- package/src/UploadItem.ts +9 -9
- package/src/Wizard.ts +39 -11
- package/src/WizardTemplate.tsx +5 -1
- package/src/data/CountryListISO3166.ts +10 -2
- package/src/generated/json-imports/Themes-node.ts +21 -0
- package/src/generated/json-imports/i18n-node.ts +85 -0
- package/src/generated/templates/BreadcrumbsPopoverTemplate.lit.ts +1 -1
- package/src/generated/templates/BreadcrumbsTemplate.lit.ts +1 -1
- package/src/generated/templates/PaginationTemplate.lit.ts +1 -1
- package/src/generated/templates/PhoneNumberFieldTemplate.lit.ts +1 -1
- package/src/generated/templates/SearchTemplate.lit.ts +3 -3
- package/src/generated/templates/SecondaryNavigationItemTemplate.lit.ts +2 -2
- package/src/generated/templates/SecondaryNavigationTemplate.lit.ts +1 -1
- package/src/generated/themes/Breadcrumbs.css.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/ListItem.css.ts +1 -1
- 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/Search.css.ts +1 -1
- package/src/generated/themes/SideNavigationItem.css.ts +1 -1
- package/src/generated/themes/SideNavigationSubItem.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/Breadcrumbs.css +3 -0
- package/src/themes/Button.css +71 -29
- package/src/themes/DatePickerPopover.css +64 -6
- package/src/themes/EventRibbon.css +411 -0
- package/src/themes/ListItem.css +4 -0
- package/src/themes/MastheadCountrySelector.css +8 -5
- package/src/themes/MastheadItem.css +12 -4
- package/src/themes/MastheadShell.css +5 -2
- package/src/themes/Modal.css +6 -1
- package/src/themes/Pagination.css +19 -0
- package/src/themes/Search.css +8 -1
- package/src/themes/SideNavigationItem.css +9 -1
- package/src/themes/SideNavigationSubItem.css +7 -0
- package/src/themes/TextField.css +2 -13
- package/src/types/ButtonAccessibleRole.ts +9 -0
- package/src/types/{Button.ts → ButtonDesign.ts} +1 -17
- package/src/types/ButtonSize.ts +7 -0
- package/src/types/ControlButtonDesign.ts +11 -0
- package/src/types/EventRibbon.ts +51 -0
- package/src/types/ProgressBar.ts +1 -1
- package/src/types/common.ts +1 -1
- package/swap-component-imports.js +18 -0
- package/dist/assets/InputSuggestions-CP3cBQsh.js +0 -2
- package/dist/assets/bundle.esm-jHcdiVfj.js +0 -380
- package/dist/assets/parameters-bundle.css-BU4Bi-ho.js +0 -2
- package/dist/assets/parameters-bundle.css-Beilb2gS.js +0 -2
- package/dist/assets/parameters-bundle.css-BzQMaZUt.js +0 -2
- package/dist/assets/parameters-bundle.css-Bzfv_Fox.js +0 -2
- package/dist/assets/parameters-bundle.css-CLwmjytB.js +0 -2
- package/dist/assets/parameters-bundle.css-CU3plTdF.js +0 -2
- package/dist/assets/parameters-bundle.css-DRX-o-Cb.js +0 -2
- package/dist/assets/parameters-bundle.css-DhFMZJhW.js +0 -2
- package/dist/css/themes/overrides/@ui5/webcomponents/sap_glow/parameters-bundle.css +0 -1
- package/dist/generated/assets/themes/overrides/@ui5/webcomponents/sap_glow/parameters-bundle.css.json +0 -1
- package/dist/generated/themes/overrides/@ui5/webcomponents/sap_glow/parameters-bundle.css.d.ts +0 -2
- package/dist/generated/themes/overrides/@ui5/webcomponents/sap_glow/parameters-bundle.css.js +0 -3
- package/dist/generated/themes/overrides/@ui5/webcomponents/sap_glow/parameters-bundle.css.js.map +0 -1
- package/dist/types/Button.js +0 -33
- package/dist/types/Button.js.map +0 -1
- package/src/generated/themes/overrides/@ui5/webcomponents/sap_glow/parameters-bundle.css.ts +0 -2
- package/src/themes/overrides/@ui5/webcomponents/sap_glow/parameters-bundle.css +0 -195
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";
|
|
@@ -46,7 +47,7 @@ export enum UDExDisplayType {
|
|
|
46
47
|
mobile = "mobile"
|
|
47
48
|
}
|
|
48
49
|
|
|
49
|
-
type UDExPaginationChangeEventDetail = {
|
|
50
|
+
export type UDExPaginationChangeEventDetail = {
|
|
50
51
|
currentPage: number,
|
|
51
52
|
}
|
|
52
53
|
|
|
@@ -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
|
@@ -24,7 +24,6 @@ import "@ui5/webcomponents-icons/dist/slim-arrow-up.js";
|
|
|
24
24
|
import "@ui5/webcomponents-icons/dist/slim-arrow-down.js";
|
|
25
25
|
|
|
26
26
|
import PhoneNumberFieldTemplate from "./generated/templates/PhoneNumberFieldTemplate.lit.js";
|
|
27
|
-
import type UDExValueState from "./types/common.js";
|
|
28
27
|
|
|
29
28
|
// Styles
|
|
30
29
|
import PhoneNumberFieldCss from "./generated/themes/PhoneNumberField.css.js";
|
|
@@ -39,7 +38,16 @@ export enum UDExOpenButtonIcon {
|
|
|
39
38
|
iconDown = "slim-arrow-down",
|
|
40
39
|
}
|
|
41
40
|
|
|
42
|
-
export
|
|
41
|
+
export enum UDExPhoneNumberFieldValueState {
|
|
42
|
+
Standard = "Standard",
|
|
43
|
+
Error = "Error",
|
|
44
|
+
Success = "Success",
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
export type BackgroundPosition = {
|
|
48
|
+
x?: string,
|
|
49
|
+
y?: string,
|
|
50
|
+
};
|
|
43
51
|
|
|
44
52
|
const initialPlaceholder: string = "+X XXX-XXX-XXXX";
|
|
45
53
|
/**
|
|
@@ -101,7 +109,7 @@ class UDExPhoneNumberField extends UI5Element {
|
|
|
101
109
|
* @public
|
|
102
110
|
*/
|
|
103
111
|
@property()
|
|
104
|
-
valueState: `${UDExPhoneNumberFieldValueState}` =
|
|
112
|
+
valueState: `${UDExPhoneNumberFieldValueState}` = UDExPhoneNumberFieldValueState.Standard;
|
|
105
113
|
|
|
106
114
|
/**
|
|
107
115
|
* Defines supporting text under the input field.
|
|
@@ -561,7 +569,7 @@ class UDExPhoneNumberField extends UI5Element {
|
|
|
561
569
|
|| this.updatedCountriesList[0]?.countryName;
|
|
562
570
|
}
|
|
563
571
|
|
|
564
|
-
get selectedFlagBackgroundPosition() {
|
|
572
|
+
get selectedFlagBackgroundPosition(): BackgroundPosition {
|
|
565
573
|
if (!this.countryIso) {
|
|
566
574
|
return {};
|
|
567
575
|
}
|
|
@@ -572,7 +580,7 @@ class UDExPhoneNumberField extends UI5Element {
|
|
|
572
580
|
return {};
|
|
573
581
|
}
|
|
574
582
|
|
|
575
|
-
return {
|
|
583
|
+
return { x: selectedCountry?.flagX, y: selectedCountry?.flagY };
|
|
576
584
|
}
|
|
577
585
|
|
|
578
586
|
get ariaInvalid(): string | null {
|
package/src/ProgressBar.ts
CHANGED
|
@@ -7,7 +7,7 @@ import type I18nBundle from "@ui5/webcomponents-base/dist/i18nBundle.js";
|
|
|
7
7
|
import {
|
|
8
8
|
VALUE_STATE_ERROR, VALUE_STATE_SUCCESS, VALUE_STATE_WARNING, VALUE_STATE_INFORMATION,
|
|
9
9
|
} from "./generated/i18n/i18n-defaults.js";
|
|
10
|
-
import
|
|
10
|
+
import UDExProgressBarValueState from "./types/ProgressBar.js";
|
|
11
11
|
|
|
12
12
|
// Styles
|
|
13
13
|
import ProgressBarCss from "./generated/themes/ProgressBar.css.js";
|
|
@@ -47,17 +47,17 @@ class UDExProgressBar extends ProgressIndicator {
|
|
|
47
47
|
*/
|
|
48
48
|
@property()
|
|
49
49
|
/** @ts-expect-error */
|
|
50
|
-
valueState!: `${
|
|
50
|
+
valueState!: `${UDExProgressBarValueState}` = UDExProgressBarValueState.None;
|
|
51
51
|
|
|
52
52
|
@i18n("@sapudex/web-components")
|
|
53
53
|
static i18nBundle: I18nBundle;
|
|
54
54
|
|
|
55
55
|
valueStateTextMappings(): Record<string, string> {
|
|
56
56
|
return {
|
|
57
|
-
[
|
|
58
|
-
[
|
|
59
|
-
[
|
|
60
|
-
[
|
|
57
|
+
[UDExProgressBarValueState.Error]: UDExProgressBar.i18nBundle.getText(VALUE_STATE_ERROR),
|
|
58
|
+
[UDExProgressBarValueState.Warning]: UDExProgressBar.i18nBundle.getText(VALUE_STATE_WARNING),
|
|
59
|
+
[UDExProgressBarValueState.Success]: UDExProgressBar.i18nBundle.getText(VALUE_STATE_SUCCESS),
|
|
60
|
+
[UDExProgressBarValueState.Information]: UDExProgressBar.i18nBundle.getText(VALUE_STATE_INFORMATION),
|
|
61
61
|
};
|
|
62
62
|
}
|
|
63
63
|
}
|
package/src/RadioButton.ts
CHANGED
|
@@ -7,7 +7,7 @@ import {
|
|
|
7
7
|
} from "./generated/i18n/i18n-defaults.js";
|
|
8
8
|
import RadioButton from "@ui5/webcomponents/dist/RadioButton.js";
|
|
9
9
|
import property from "@ui5/webcomponents-base/dist/decorators/property.js";
|
|
10
|
-
import
|
|
10
|
+
import UDExRadioButtonValueState from "./types/RadioButton.js";
|
|
11
11
|
|
|
12
12
|
// Styles
|
|
13
13
|
import RadioButtonCss from "./generated/themes/RadioButton.css.js";
|
|
@@ -53,7 +53,7 @@ class UDExRadioButton extends RadioButton {
|
|
|
53
53
|
*/
|
|
54
54
|
@property()
|
|
55
55
|
/** @ts-expect-error */
|
|
56
|
-
valueState!: `${
|
|
56
|
+
valueState!: `${UDExRadioButtonValueState}` = UDExRadioButtonValueState.None;
|
|
57
57
|
|
|
58
58
|
@i18n("@sapudex/web-components")
|
|
59
59
|
static i18nBundle: I18nBundle;
|
|
@@ -65,13 +65,13 @@ class UDExRadioButton extends RadioButton {
|
|
|
65
65
|
|
|
66
66
|
get valueStateText(): string {
|
|
67
67
|
switch (this.valueState) {
|
|
68
|
-
case
|
|
68
|
+
case UDExRadioButtonValueState.Error:
|
|
69
69
|
return RadioButton.i18nBundle.getText(VALUE_STATE_ERROR);
|
|
70
|
-
case
|
|
70
|
+
case UDExRadioButtonValueState.Success:
|
|
71
71
|
return RadioButton.i18nBundle.getText(VALUE_STATE_SUCCESS);
|
|
72
|
-
case
|
|
72
|
+
case UDExRadioButtonValueState.Information:
|
|
73
73
|
return RadioButton.i18nBundle.getText(VALUE_STATE_INFORMATION);
|
|
74
|
-
case
|
|
74
|
+
case UDExRadioButtonValueState.Warning:
|
|
75
75
|
return RadioButton.i18nBundle.getText(VALUE_STATE_WARNING);
|
|
76
76
|
default:
|
|
77
77
|
return "";
|
package/src/Search.hbs
CHANGED
|
@@ -73,8 +73,8 @@
|
|
|
73
73
|
@click="{{handleInputClick}}"
|
|
74
74
|
/>
|
|
75
75
|
{{/if}}
|
|
76
|
-
{{#if
|
|
77
|
-
<span
|
|
76
|
+
{{#if open}}
|
|
77
|
+
<span aria-live="polite" aria-atomic="true" id="search-description" class="hidden" aria-hidden="true">{{suggestionsDescription}}</span>
|
|
78
78
|
{{/if}}
|
|
79
79
|
<div class="udex-search__icons">
|
|
80
80
|
{{#if isShowHomeResetButton}}
|
|
@@ -123,6 +123,7 @@
|
|
|
123
123
|
class="udex-search__icon"
|
|
124
124
|
aria-hidden="true"
|
|
125
125
|
accessible-name="{{accInfo.accessibleNameSearchIcon}}"
|
|
126
|
+
show-tooltip
|
|
126
127
|
name="search">
|
|
127
128
|
</ui5-icon>
|
|
128
129
|
{{/if}}
|
package/src/Search.ts
CHANGED
|
@@ -710,7 +710,6 @@ class UDExSearch extends UI5Element {
|
|
|
710
710
|
|
|
711
711
|
getTextWithSuggestion(text: string): string {
|
|
712
712
|
const escapedValue = this.escapeRegExp(this.value);
|
|
713
|
-
console.warn(escapedValue);
|
|
714
713
|
const search = new RegExp(escapedValue, "i");
|
|
715
714
|
return text.replace(search, "<b>$&</b>");
|
|
716
715
|
}
|
|
@@ -1285,14 +1284,13 @@ class UDExSearch extends UI5Element {
|
|
|
1285
1284
|
get accInfo() {
|
|
1286
1285
|
return {
|
|
1287
1286
|
"ariaLabel": this.accessibleName || undefined,
|
|
1288
|
-
"ariaDescription": this.open ? this.suggestionsDescription : undefined,
|
|
1289
1287
|
"accessibleNameResetIcon": this.accessibleNameResetIcon || UDExSearch.i18nBundle.getText(ACCESSIBLE_NAME_RESET_ICON),
|
|
1290
1288
|
"accessibleNameSearchIcon": this.accessibleNameSearchIcon || UDExSearch.i18nBundle.getText(ACCESSIBLE_NAME_SEARCH_ICON),
|
|
1291
1289
|
};
|
|
1292
1290
|
}
|
|
1293
1291
|
|
|
1294
1292
|
get suggestionsDescription(): string {
|
|
1295
|
-
return this.
|
|
1293
|
+
return !this.showNoResultMessage ? `${this.suggestedList.length} ${this._suggestionLabel}, ${this.recommendedList.length} ${this._recommendLabel}` : `${this.noResultMessage}`;
|
|
1296
1294
|
}
|
|
1297
1295
|
|
|
1298
1296
|
get tooltipInfo() {
|
|
@@ -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 {
|
|
@@ -145,7 +145,8 @@ class UDExSecondaryNavigation extends UI5Element {
|
|
|
145
145
|
_mobileBtnExpanded = false;
|
|
146
146
|
|
|
147
147
|
_navItems!: Array<NavItem>;
|
|
148
|
-
_showMoreButton: boolean;
|
|
148
|
+
_showMoreButton: boolean = true;
|
|
149
|
+
_shouldFocusFirstItem: boolean = true;
|
|
149
150
|
_rootHolder!: HTMLElement | null | undefined;
|
|
150
151
|
_clickedNavItem!: UDExSecondaryNavigationItem;
|
|
151
152
|
_boundReflowItems: () => void;
|
|
@@ -155,7 +156,6 @@ class UDExSecondaryNavigation extends UI5Element {
|
|
|
155
156
|
|
|
156
157
|
constructor() {
|
|
157
158
|
super();
|
|
158
|
-
this._showMoreButton = true;
|
|
159
159
|
this._boundReflowItems = this._handleResize.bind(this);
|
|
160
160
|
}
|
|
161
161
|
|
|
@@ -171,13 +171,6 @@ class UDExSecondaryNavigation extends UI5Element {
|
|
|
171
171
|
ResizeHandler.deregister(this, this._boundReflowItems);
|
|
172
172
|
}
|
|
173
173
|
|
|
174
|
-
_handleResize() {
|
|
175
|
-
this.reflowItems();
|
|
176
|
-
if (this._clickedNavItem && this.isDesktopScreen) {
|
|
177
|
-
this._clickedNavItem.closeDropdown();
|
|
178
|
-
}
|
|
179
|
-
}
|
|
180
|
-
|
|
181
174
|
onInvalidation(changeInfo: ChangeInfo): void {
|
|
182
175
|
if (changeInfo.name === "navItems") {
|
|
183
176
|
this.reflowItems();
|
|
@@ -186,6 +179,12 @@ class UDExSecondaryNavigation extends UI5Element {
|
|
|
186
179
|
|
|
187
180
|
onAfterRendering(): void {
|
|
188
181
|
this._rootHolder = this.rootHolder;
|
|
182
|
+
if (!this._overflowItems.length) {
|
|
183
|
+
this._showMoreButton = true;
|
|
184
|
+
}
|
|
185
|
+
if (this._shouldFocusFirstItem && this.isDesktopScreen) {
|
|
186
|
+
this.domNavItems[0]._tabIndex = "0";
|
|
187
|
+
}
|
|
189
188
|
this.handleOutsideClick();
|
|
190
189
|
}
|
|
191
190
|
|
|
@@ -193,6 +192,16 @@ class UDExSecondaryNavigation extends UI5Element {
|
|
|
193
192
|
this._requestRender = !this._requestRender;
|
|
194
193
|
}
|
|
195
194
|
|
|
195
|
+
_handleResize() {
|
|
196
|
+
this.reflowItems();
|
|
197
|
+
if (this.isDesktopScreen) {
|
|
198
|
+
this.resetTabIndex();
|
|
199
|
+
}
|
|
200
|
+
if (this._clickedNavItem && this.isDesktopScreen) {
|
|
201
|
+
this._clickedNavItem.closeDropdown();
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
|
|
196
205
|
reflowItems(): void {
|
|
197
206
|
const availableWidth = this.rootHolder.offsetWidth - (this.headingHolder?.offsetWidth || 0) - (this.optionalButtons?.offsetWidth || 0);
|
|
198
207
|
const moreButtonWidth = this.getMoreButtonWidth();
|
|
@@ -243,9 +252,12 @@ class UDExSecondaryNavigation extends UI5Element {
|
|
|
243
252
|
const item = e.target as UDExSecondaryNavigationItem;
|
|
244
253
|
const currentSelectedIndex = this.getCurrentIndex(item);
|
|
245
254
|
const previousSelectIndex = currentSelectedIndex - 1;
|
|
255
|
+
const previousItem = this.domNavItems[previousSelectIndex];
|
|
246
256
|
if (currentSelectedIndex > 0) {
|
|
247
257
|
e.preventDefault();
|
|
248
|
-
this.domNavItems[
|
|
258
|
+
this.domNavItems[currentSelectedIndex]._tabIndex = "-1";
|
|
259
|
+
previousItem._tabIndex = "0";
|
|
260
|
+
previousItem?.focus();
|
|
249
261
|
}
|
|
250
262
|
}
|
|
251
263
|
|
|
@@ -254,9 +266,12 @@ class UDExSecondaryNavigation extends UI5Element {
|
|
|
254
266
|
const currentSelectedIndex = this.getCurrentIndex(item);
|
|
255
267
|
const lastItemIndex = this.domNavItems.length - 1;
|
|
256
268
|
const nextSelectIndex = currentSelectedIndex + 1;
|
|
269
|
+
const nextItem = this.domNavItems[nextSelectIndex];
|
|
257
270
|
if (nextSelectIndex < lastItemIndex) {
|
|
258
271
|
e.preventDefault();
|
|
259
|
-
this.domNavItems[
|
|
272
|
+
this.domNavItems[currentSelectedIndex]._tabIndex = "-1";
|
|
273
|
+
nextItem._tabIndex = "0";
|
|
274
|
+
nextItem.focus();
|
|
260
275
|
}
|
|
261
276
|
}
|
|
262
277
|
|
|
@@ -305,6 +320,8 @@ class UDExSecondaryNavigation extends UI5Element {
|
|
|
305
320
|
}
|
|
306
321
|
|
|
307
322
|
this._clickedNavItem = clickedItem;
|
|
323
|
+
this._shouldFocusFirstItem = false;
|
|
324
|
+
this.setTabIndexById(_id);
|
|
308
325
|
this.closePrevDropdown(_id);
|
|
309
326
|
|
|
310
327
|
if (!subItems.length) {
|
|
@@ -401,7 +418,7 @@ class UDExSecondaryNavigation extends UI5Element {
|
|
|
401
418
|
|
|
402
419
|
closePrevDropdown(clickedItemId: string): void {
|
|
403
420
|
this.domNavItems.forEach(item => {
|
|
404
|
-
if (
|
|
421
|
+
if (item.isOpen && item._id !== clickedItemId) {
|
|
405
422
|
item.closeDropdown();
|
|
406
423
|
}
|
|
407
424
|
});
|
|
@@ -411,6 +428,18 @@ class UDExSecondaryNavigation extends UI5Element {
|
|
|
411
428
|
return string ? JSON.parse(string) as T[] : [];
|
|
412
429
|
}
|
|
413
430
|
|
|
431
|
+
resetTabIndex(): void {
|
|
432
|
+
this.domNavItems.forEach((item, index) => {
|
|
433
|
+
item._tabIndex = index === 0 ? "0" : "-1";
|
|
434
|
+
});
|
|
435
|
+
}
|
|
436
|
+
|
|
437
|
+
setTabIndexById(id: string): void {
|
|
438
|
+
this.domNavItems.forEach(item => {
|
|
439
|
+
item._tabIndex = id === item._id ? "0" : "-1";
|
|
440
|
+
});
|
|
441
|
+
}
|
|
442
|
+
|
|
414
443
|
get domNavItems(): Array<UDExSecondaryNavigationItem> {
|
|
415
444
|
const items = this.shadowRoot?.querySelectorAll<UDExSecondaryNavigationItem>("[udex-secondary-navigation-item]");
|
|
416
445
|
return items ? Array.from(items) : [];
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
?active="{{isActive}}"
|
|
6
6
|
href="{{path}}"
|
|
7
7
|
target="{{target}}"
|
|
8
|
+
tabindex="{{_tabIndex}}"
|
|
8
9
|
aria-current="{{ariaCurrent}}"
|
|
9
10
|
@keydown="{{handleItemLinkKeyDown}}"
|
|
10
11
|
@click="{{fireNavItemClickEvent}}">
|
|
@@ -14,7 +15,7 @@
|
|
|
14
15
|
<button
|
|
15
16
|
class="udex-secondary-navigation__item"
|
|
16
17
|
role="{{itemRole}}"
|
|
17
|
-
tabindex="
|
|
18
|
+
tabindex="{{menuOpenerTabIndex}}"
|
|
18
19
|
?active="{{isActive}}"
|
|
19
20
|
aria-haspopup="{{hasNestedItems}}"
|
|
20
21
|
aria-expanded="{{isOpen}}"
|
|
@@ -157,9 +157,20 @@ class UDExSecondaryNavigationItem extends UDExSecondaryNavigationItemBase {
|
|
|
157
157
|
@property({ type: Object })
|
|
158
158
|
_processedItems: Array<NavItem> = [];
|
|
159
159
|
|
|
160
|
+
/**
|
|
161
|
+
* Defines if item is mobile menu opener.
|
|
162
|
+
*
|
|
163
|
+
* @private
|
|
164
|
+
* @default false
|
|
165
|
+
*/
|
|
166
|
+
@property({ type: Boolean })
|
|
167
|
+
_isMobileMenuOpener!: boolean;
|
|
168
|
+
|
|
160
169
|
_dropdownHistory: Array<Array<NavItem>> = [];
|
|
161
170
|
_shouldFocusFirstSubItem!: boolean;
|
|
162
171
|
_subTitle!: string | undefined;
|
|
172
|
+
_shouldResetTabIndex!: boolean;
|
|
173
|
+
_shouldSetTabIndex!: boolean;
|
|
163
174
|
|
|
164
175
|
onAfterRendering(): void {
|
|
165
176
|
if (this.isLastItem && this.isOpen && !this._isMobileView) {
|
|
@@ -174,6 +185,16 @@ class UDExSecondaryNavigationItem extends UDExSecondaryNavigationItemBase {
|
|
|
174
185
|
if (this._isMobileView && this.isOpen) {
|
|
175
186
|
this.setDropdownHeight();
|
|
176
187
|
}
|
|
188
|
+
|
|
189
|
+
if (this._shouldSetTabIndex) {
|
|
190
|
+
this._tabIndex = "0";
|
|
191
|
+
this._shouldSetTabIndex = false;
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
if (this._shouldResetTabIndex) {
|
|
195
|
+
this._tabIndex = "-1";
|
|
196
|
+
this._shouldResetTabIndex = false;
|
|
197
|
+
}
|
|
177
198
|
}
|
|
178
199
|
|
|
179
200
|
onBeforeRendering() : void {
|
|
@@ -202,6 +223,7 @@ class UDExSecondaryNavigationItem extends UDExSecondaryNavigationItemBase {
|
|
|
202
223
|
if (this.hasNestedItems) {
|
|
203
224
|
this.setDropdownItems();
|
|
204
225
|
this.isOpen = !this.isOpen;
|
|
226
|
+
this._shouldResetTabIndex = true;
|
|
205
227
|
this.onShouldFocusFirstSubItem();
|
|
206
228
|
}
|
|
207
229
|
|
|
@@ -210,6 +232,7 @@ class UDExSecondaryNavigationItem extends UDExSecondaryNavigationItemBase {
|
|
|
210
232
|
|
|
211
233
|
closeDropdown(): void {
|
|
212
234
|
this.isOpen = false;
|
|
235
|
+
this._shouldSetTabIndex = true;
|
|
213
236
|
}
|
|
214
237
|
|
|
215
238
|
handleItemLinkKeyDown(e: KeyboardEvent): void {
|
|
@@ -425,6 +448,14 @@ class UDExSecondaryNavigationItem extends UDExSecondaryNavigationItemBase {
|
|
|
425
448
|
return this.shadowRoot!.querySelector<HTMLElement>(".udex-secondary-navigation__dropdown")!;
|
|
426
449
|
}
|
|
427
450
|
|
|
451
|
+
get menuOpenerTabIndex(): string {
|
|
452
|
+
if (this._isMobileMenuOpener) {
|
|
453
|
+
return "0";
|
|
454
|
+
}
|
|
455
|
+
|
|
456
|
+
return this._tabIndex;
|
|
457
|
+
}
|
|
458
|
+
|
|
428
459
|
get isLastItem(): boolean {
|
|
429
460
|
return this._navItemsLength === this.index;
|
|
430
461
|
}
|
|
@@ -89,9 +89,6 @@ class UDExSecondaryNavigationSubItem extends UDExSecondaryNavigationItemBase {
|
|
|
89
89
|
@property({ type: Object })
|
|
90
90
|
nestedItems: Array<NavItem> = [];
|
|
91
91
|
|
|
92
|
-
@property({ type: String })
|
|
93
|
-
_tabIndex: string = "-1";
|
|
94
|
-
|
|
95
92
|
@i18n("@sapudex/web-components")
|
|
96
93
|
static i18nBundle: I18nBundle;
|
|
97
94
|
|
package/src/SegmentedButton.ts
CHANGED
|
@@ -9,7 +9,7 @@ import { getScopedVarName } from "@ui5/webcomponents-base/dist/CustomElementsSco
|
|
|
9
9
|
import SegmentedButtonSelectionMode from "@ui5/webcomponents/dist/types/SegmentedButtonSelectionMode.js";
|
|
10
10
|
import SegmentedButtonCss from "./generated/themes/SegmentedButton.css.js";
|
|
11
11
|
import UDExSegmentedButtonItem from "./SegmentedButtonItem.js";
|
|
12
|
-
import
|
|
12
|
+
import UDExButtonSize from "./types/ButtonSize.js";
|
|
13
13
|
|
|
14
14
|
/**
|
|
15
15
|
* @class
|
|
@@ -5,7 +5,7 @@ import SegmentedButtonItem from "@ui5/webcomponents/dist/SegmentedButtonItem.js"
|
|
|
5
5
|
// Styles
|
|
6
6
|
import property from "@ui5/webcomponents-base/dist/decorators/property.js";
|
|
7
7
|
import SegmentedButtonItemCss from "./generated/themes/SegmentedButtonItem.css.js";
|
|
8
|
-
import
|
|
8
|
+
import UDExButtonSize from "./types/ButtonSize.js";
|
|
9
9
|
|
|
10
10
|
/**
|
|
11
11
|
* @class
|
|
@@ -44,7 +44,7 @@ class UDExSegmentedButtonItem extends SegmentedButtonItem {
|
|
|
44
44
|
*
|
|
45
45
|
* @private
|
|
46
46
|
*/
|
|
47
|
-
@property()
|
|
47
|
+
@property({ type: Boolean })
|
|
48
48
|
hasIcon: boolean = false;
|
|
49
49
|
|
|
50
50
|
constructor() {
|
package/src/StatusBadge.ts
CHANGED
|
@@ -23,7 +23,6 @@ import StatusBadgeTemplate from "./generated/templates/StatusBadgeTemplate.lit.j
|
|
|
23
23
|
|
|
24
24
|
// Styles
|
|
25
25
|
import StatusBadgeCss from "./generated/themes/StatusBadge.css.js";
|
|
26
|
-
import type UDExProgressBarValueState from "./types/ProgressBar.js";
|
|
27
26
|
|
|
28
27
|
export enum IconMapping {
|
|
29
28
|
Success = "sys-enter-2",
|
|
@@ -41,7 +40,13 @@ export enum BadgeSize {
|
|
|
41
40
|
XL = "XL",
|
|
42
41
|
}
|
|
43
42
|
|
|
44
|
-
export
|
|
43
|
+
export enum UDExStatusBadgeValueState {
|
|
44
|
+
Warning = "Warning",
|
|
45
|
+
Error = "Error",
|
|
46
|
+
Success = "Success",
|
|
47
|
+
Information = "Information",
|
|
48
|
+
Edit = "Edit"
|
|
49
|
+
}
|
|
45
50
|
|
|
46
51
|
/**
|
|
47
52
|
* @class
|
|
@@ -75,7 +80,7 @@ class UDExStatusBadge extends UI5Element {
|
|
|
75
80
|
* @public
|
|
76
81
|
*/
|
|
77
82
|
@property()
|
|
78
|
-
valueState: UDExStatusBadgeValueState =
|
|
83
|
+
valueState: `${UDExStatusBadgeValueState}` = UDExStatusBadgeValueState.Information;
|
|
79
84
|
|
|
80
85
|
/**
|
|
81
86
|
* Defines predefined size of the component.
|