@sapudex/web-components 2.54.0 → 2.56.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/Breadcrumbs.cy.tsx +3 -1
- package/cypress/specs/FilterMenu.cy.tsx +34 -2
- package/cypress/specs/Footer.cy.tsx +59 -0
- package/cypress/specs/HeroBanner.cy.tsx +35 -1
- package/cypress/specs/List.cy.tsx +63 -1
- package/cypress/specs/ListItem.cy.tsx +44 -0
- package/cypress/specs/MastheadShell.cy.tsx +39 -0
- package/cypress/specs/MediaPlayer.cy.tsx +58 -0
- package/cypress/specs/PhoneNumberField.cy.tsx +29 -1
- package/cypress/specs/SecondaryNavigationDesktop.cy.tsx +2 -2
- package/cypress/specs/SelectBox.cy.tsx +173 -0
- package/dist/BreadcrumbsTemplate.js +1 -1
- package/dist/BreadcrumbsTemplate.js.map +1 -1
- package/dist/CountrySelectorTemplate.js +1 -1
- package/dist/CountrySelectorTemplate.js.map +1 -1
- package/dist/FilterMenu.d.ts +1 -1
- package/dist/FilterMenu.js +11 -7
- package/dist/FilterMenu.js.map +1 -1
- package/dist/Footer.d.ts +20 -1
- package/dist/Footer.js +40 -3
- package/dist/Footer.js.map +1 -1
- package/dist/FooterTemplate.js +7 -2
- package/dist/FooterTemplate.js.map +1 -1
- package/dist/HeroBanner.d.ts +12 -0
- package/dist/HeroBanner.js +54 -0
- package/dist/HeroBanner.js.map +1 -1
- package/dist/List.d.ts +5 -0
- package/dist/List.js +13 -6
- package/dist/List.js.map +1 -1
- package/dist/ListGroupHeader.js +12 -5
- package/dist/ListGroupHeader.js.map +1 -1
- package/dist/ListGroupHeaderBase.d.ts +1 -1
- package/dist/ListGroupHeaderBase.js +2 -2
- package/dist/ListGroupHeaderBase.js.map +1 -1
- package/dist/ListGroupHeaderTemplate.d.ts +2 -0
- package/dist/ListGroupHeaderTemplate.js +33 -0
- package/dist/ListGroupHeaderTemplate.js.map +1 -0
- package/dist/ListItem.d.ts +1 -1
- package/dist/ListItem.js +9 -4
- package/dist/ListItem.js.map +1 -1
- package/dist/ListItemBase.d.ts +1 -0
- package/dist/ListItemBase.js +8 -4
- package/dist/ListItemBase.js.map +1 -1
- package/dist/ListItemTemplate.d.ts +2 -0
- package/dist/ListItemTemplate.js +18 -0
- package/dist/ListItemTemplate.js.map +1 -0
- package/dist/ListSelectAll.js +4 -5
- package/dist/ListSelectAll.js.map +1 -1
- package/dist/ListSelectAllTemplate.d.ts +2 -0
- package/dist/ListSelectAllTemplate.js +6 -0
- package/dist/ListSelectAllTemplate.js.map +1 -0
- package/dist/ListTemplate.d.ts +2 -0
- package/dist/ListTemplate.js +11 -0
- package/dist/ListTemplate.js.map +1 -0
- package/dist/MastheadShell.d.ts +7 -0
- package/dist/MastheadShell.js +38 -0
- package/dist/MastheadShell.js.map +1 -1
- package/dist/MediaPlayer.js +6 -0
- package/dist/MediaPlayer.js.map +1 -1
- package/dist/PhoneNumberField.d.ts +3 -3
- package/dist/PhoneNumberField.js +18 -21
- package/dist/PhoneNumberField.js.map +1 -1
- package/dist/PhoneNumberFieldTemplate.d.ts +2 -0
- package/dist/PhoneNumberFieldTemplate.js +12 -0
- package/dist/PhoneNumberFieldTemplate.js.map +1 -0
- package/dist/Search.d.ts +2 -0
- package/dist/Search.js +21 -0
- package/dist/Search.js.map +1 -1
- package/dist/SearchableListBase.d.ts +4 -0
- package/dist/SearchableListBase.js +66 -6
- package/dist/SearchableListBase.js.map +1 -1
- package/dist/SearchableListBaseTemplate.js +1 -1
- package/dist/SearchableListBaseTemplate.js.map +1 -1
- package/dist/SelectBase.js +14 -22
- package/dist/SelectBase.js.map +1 -1
- package/dist/SelectBox.js +31 -0
- package/dist/SelectBox.js.map +1 -1
- package/dist/SelectBoxTemplate.js +3 -2
- package/dist/SelectBoxTemplate.js.map +1 -1
- package/dist/StatusMessage.d.ts +2 -2
- package/dist/StatusMessage.js +1 -1
- package/dist/StatusMessage.js.map +1 -1
- package/dist/TextAreaTemplate.js +1 -1
- package/dist/TextAreaTemplate.js.map +1 -1
- package/dist/TextFieldTemplate.js +1 -1
- package/dist/TextFieldTemplate.js.map +1 -1
- package/dist/Upload.js +6 -9
- package/dist/Upload.js.map +1 -1
- package/dist/UploadItem.d.ts +2 -2
- package/dist/UploadItem.js +6 -9
- package/dist/UploadItem.js.map +1 -1
- package/dist/UploadItemTemplate.d.ts +2 -0
- package/dist/UploadItemTemplate.js +14 -0
- package/dist/UploadItemTemplate.js.map +1 -0
- package/dist/UploadTemplate.d.ts +2 -0
- package/dist/UploadTemplate.js +11 -0
- package/dist/UploadTemplate.js.map +1 -0
- package/dist/assets/{InputSuggestions-CqOrRXxa.js → InputSuggestions-ChhTxYh4.js} +1 -1
- package/dist/assets/{ListItemStandardExpandableTextTemplate-DKUm4L2B.js → ListItemStandardExpandableTextTemplate-Bh1HxZfH.js} +1 -1
- package/dist/assets/{bundle-C7Yft7IG.css → bundle-CdO3MnjQ.css} +1 -1
- package/dist/assets/{bundle.esm-CI60uvdr.js → bundle.esm-DCX_ohoZ.js} +277 -265
- package/dist/assets/messagebundle_en-B0P3kkb6.js +1 -0
- package/dist/assets/messagebundle_it-BML2SC0W.js +1 -0
- package/dist/assets/messagebundle_ja-zyFfZHcj.js +1 -0
- package/dist/assets/messagebundle_ko-BCPaSqNp.js +1 -0
- package/dist/assets/messagebundle_lt-DB4b6FVx.js +1 -0
- package/dist/assets/messagebundle_lv-tAOia5tU.js +1 -0
- package/dist/assets/messagebundle_uk-CCv57GhV.js +1 -0
- package/dist/css/themes/AccordionItem.css +1 -1
- package/dist/css/themes/AccordionSpotlight.css +1 -1
- package/dist/css/themes/Avatar.css +1 -1
- package/dist/css/themes/Breadcrumbs.css +1 -1
- package/dist/css/themes/BreadcrumbsPopover.css +1 -1
- package/dist/css/themes/CountrySelector.css +1 -1
- package/dist/css/themes/EventRibbon.css +1 -1
- package/dist/css/themes/FilterMenu.css +1 -1
- package/dist/css/themes/Footer.css +1 -1
- package/dist/css/themes/HeroBanner.css +1 -1
- package/dist/css/themes/ImageGridTicker.css +1 -1
- package/dist/css/themes/Link.css +1 -1
- package/dist/css/themes/ListGroupHeader.css +1 -1
- 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/MastheadProfileMenu.css +1 -1
- package/dist/css/themes/MastheadShell.css +1 -1
- package/dist/css/themes/MediaPlayer.css +1 -1
- package/dist/css/themes/Modal.css +1 -1
- package/dist/css/themes/PhoneNumberField.css +1 -1
- package/dist/css/themes/Search.css +1 -1
- package/dist/css/themes/SecondaryNavigationItem.css +1 -1
- package/dist/css/themes/SelectBase.css +1 -1
- package/dist/css/themes/StepInput.css +1 -1
- package/dist/css/themes/TabInOverflow.css +1 -1
- package/dist/css/themes/TabNavigation.css +1 -1
- package/dist/css/themes/TableCellBase.css +1 -1
- package/dist/css/themes/TagGroup.css +1 -1
- package/dist/css/themes/TextArea.css +1 -1
- package/dist/css/themes/TextField.css +1 -1
- package/dist/css/themes/Wizard.css +1 -1
- package/dist/custom-elements-internal.json +1191 -82
- package/dist/custom-elements.json +818 -127
- package/dist/generated/assets/i18n/messagebundle_en.json +1 -1
- package/dist/generated/assets/i18n/messagebundle_it.json +1 -1
- package/dist/generated/assets/i18n/messagebundle_ja.json +1 -1
- package/dist/generated/assets/i18n/messagebundle_ko.json +1 -1
- package/dist/generated/assets/i18n/messagebundle_lt.json +1 -1
- package/dist/generated/assets/i18n/messagebundle_lv.json +1 -1
- package/dist/generated/assets/i18n/messagebundle_uk.json +1 -1
- package/dist/generated/i18n/i18n-defaults.d.ts +2 -1
- package/dist/generated/i18n/i18n-defaults.js +2 -1
- package/dist/generated/i18n/i18n-defaults.js.map +1 -1
- package/dist/generated/themes/AccordionItem.css.d.ts +1 -1
- package/dist/generated/themes/AccordionItem.css.js +1 -1
- package/dist/generated/themes/AccordionItem.css.js.map +1 -1
- package/dist/generated/themes/AccordionSpotlight.css.d.ts +1 -1
- package/dist/generated/themes/AccordionSpotlight.css.js +1 -1
- package/dist/generated/themes/AccordionSpotlight.css.js.map +1 -1
- package/dist/generated/themes/Avatar.css.d.ts +1 -1
- package/dist/generated/themes/Avatar.css.js +1 -1
- package/dist/generated/themes/Avatar.css.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/BreadcrumbsPopover.css.d.ts +1 -1
- package/dist/generated/themes/BreadcrumbsPopover.css.js +1 -1
- package/dist/generated/themes/BreadcrumbsPopover.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/FilterMenu.css.d.ts +1 -1
- package/dist/generated/themes/FilterMenu.css.js +1 -1
- package/dist/generated/themes/FilterMenu.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/HeroBanner.css.d.ts +1 -1
- package/dist/generated/themes/HeroBanner.css.js +1 -1
- package/dist/generated/themes/HeroBanner.css.js.map +1 -1
- package/dist/generated/themes/ImageGridTicker.css.d.ts +1 -1
- package/dist/generated/themes/ImageGridTicker.css.js +1 -1
- package/dist/generated/themes/ImageGridTicker.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/ListGroupHeader.css.d.ts +1 -1
- package/dist/generated/themes/ListGroupHeader.css.js +1 -1
- package/dist/generated/themes/ListGroupHeader.css.js.map +1 -1
- package/dist/generated/themes/ListItem.css.d.ts +1 -1
- package/dist/generated/themes/ListItem.css.js +1 -1
- package/dist/generated/themes/ListItem.css.js.map +1 -1
- package/dist/generated/themes/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/MastheadProfileMenu.css.d.ts +1 -1
- package/dist/generated/themes/MastheadProfileMenu.css.js +1 -1
- package/dist/generated/themes/MastheadProfileMenu.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/MediaPlayer.css.d.ts +1 -1
- package/dist/generated/themes/MediaPlayer.css.js +1 -1
- package/dist/generated/themes/MediaPlayer.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/PhoneNumberField.css.d.ts +1 -1
- package/dist/generated/themes/PhoneNumberField.css.js +1 -1
- package/dist/generated/themes/PhoneNumberField.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/SecondaryNavigationItem.css.d.ts +1 -1
- package/dist/generated/themes/SecondaryNavigationItem.css.js +1 -1
- package/dist/generated/themes/SecondaryNavigationItem.css.js.map +1 -1
- package/dist/generated/themes/SelectBase.css.d.ts +1 -1
- package/dist/generated/themes/SelectBase.css.js +1 -1
- package/dist/generated/themes/SelectBase.css.js.map +1 -1
- package/dist/generated/themes/StepInput.css.d.ts +1 -1
- package/dist/generated/themes/StepInput.css.js +1 -1
- package/dist/generated/themes/StepInput.css.js.map +1 -1
- package/dist/generated/themes/TabInOverflow.css.d.ts +1 -1
- package/dist/generated/themes/TabInOverflow.css.js +1 -1
- package/dist/generated/themes/TabInOverflow.css.js.map +1 -1
- package/dist/generated/themes/TabNavigation.css.d.ts +1 -1
- package/dist/generated/themes/TabNavigation.css.js +1 -1
- package/dist/generated/themes/TabNavigation.css.js.map +1 -1
- package/dist/generated/themes/TableCellBase.css.d.ts +1 -1
- package/dist/generated/themes/TableCellBase.css.js +1 -1
- package/dist/generated/themes/TableCellBase.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/TextArea.css.d.ts +1 -1
- package/dist/generated/themes/TextArea.css.js +1 -1
- package/dist/generated/themes/TextArea.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/generated/themes/Wizard.css.d.ts +1 -1
- package/dist/generated/themes/Wizard.css.js +1 -1
- package/dist/generated/themes/Wizard.css.js.map +1 -1
- package/dist/messagebundle.properties +1 -0
- package/dist/messagebundle_en.properties +1 -0
- package/dist/messagebundle_it.properties +123 -0
- package/dist/messagebundle_ja.properties +127 -1
- package/dist/messagebundle_ko.properties +126 -0
- package/dist/messagebundle_lt.properties +126 -0
- package/dist/messagebundle_lv.properties +9 -0
- package/dist/messagebundle_uk.properties +8 -0
- package/dist/types/FooterAskJoulePosition.d.ts +5 -0
- package/dist/types/FooterAskJoulePosition.js +7 -0
- package/dist/types/FooterAskJoulePosition.js.map +1 -0
- package/dist/utils/searchBackdrop.d.ts +1 -0
- package/dist/utils/searchBackdrop.js +23 -0
- package/dist/utils/searchBackdrop.js.map +1 -0
- package/dist/vscode.html-custom-data.json +176 -3
- package/dist/web-types.json +396 -8
- package/package.json +1 -1
- package/src/BreadcrumbsTemplate.tsx +12 -10
- package/src/CountrySelectorTemplate.tsx +2 -2
- package/src/FilterMenu.ts +11 -7
- package/src/Footer.ts +41 -3
- package/src/FooterTemplate.tsx +28 -4
- package/src/HeroBanner.ts +66 -0
- package/src/List.ts +16 -8
- package/src/ListGroupHeader.ts +12 -5
- package/src/ListGroupHeaderBase.ts +3 -3
- package/src/ListGroupHeaderTemplate.tsx +228 -0
- package/src/ListItem.ts +10 -5
- package/src/ListItemBase.ts +9 -4
- package/src/ListItemTemplate.tsx +193 -0
- package/src/ListSelectAll.ts +4 -5
- package/src/ListSelectAllTemplate.tsx +38 -0
- package/src/ListTemplate.tsx +60 -0
- package/src/MastheadShell.ts +44 -0
- package/src/MediaPlayer.ts +6 -0
- package/src/PhoneNumberField.ts +23 -22
- package/src/PhoneNumberFieldTemplate.tsx +128 -0
- package/src/Search.ts +21 -1
- package/src/SearchableListBase.ts +62 -7
- package/src/SearchableListBaseTemplate.tsx +1 -0
- package/src/SelectBase.ts +14 -21
- package/src/SelectBox.ts +34 -0
- package/src/SelectBoxTemplate.tsx +3 -1
- package/src/StatusMessage.ts +4 -3
- package/src/TextAreaTemplate.tsx +1 -1
- package/src/TextFieldTemplate.tsx +1 -1
- package/src/Upload.ts +7 -10
- package/src/UploadItem.ts +7 -9
- package/src/UploadItemTemplate.tsx +62 -0
- package/src/UploadTemplate.tsx +53 -0
- package/src/generated/i18n/i18n-defaults.ts +2 -2
- package/src/generated/themes/AccordionItem.css.ts +1 -1
- package/src/generated/themes/AccordionSpotlight.css.ts +1 -1
- package/src/generated/themes/Avatar.css.ts +1 -1
- package/src/generated/themes/Breadcrumbs.css.ts +1 -1
- package/src/generated/themes/BreadcrumbsPopover.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/FilterMenu.css.ts +1 -1
- package/src/generated/themes/Footer.css.ts +1 -1
- package/src/generated/themes/HeroBanner.css.ts +1 -1
- package/src/generated/themes/ImageGridTicker.css.ts +1 -1
- package/src/generated/themes/Link.css.ts +1 -1
- package/src/generated/themes/ListGroupHeader.css.ts +1 -1
- 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/MastheadProfileMenu.css.ts +1 -1
- package/src/generated/themes/MastheadShell.css.ts +1 -1
- package/src/generated/themes/MediaPlayer.css.ts +1 -1
- package/src/generated/themes/Modal.css.ts +1 -1
- package/src/generated/themes/PhoneNumberField.css.ts +1 -1
- package/src/generated/themes/Search.css.ts +1 -1
- package/src/generated/themes/SecondaryNavigationItem.css.ts +1 -1
- package/src/generated/themes/SelectBase.css.ts +1 -1
- package/src/generated/themes/StepInput.css.ts +1 -1
- package/src/generated/themes/TabInOverflow.css.ts +1 -1
- package/src/generated/themes/TabNavigation.css.ts +1 -1
- package/src/generated/themes/TableCellBase.css.ts +1 -1
- package/src/generated/themes/TagGroup.css.ts +1 -1
- package/src/generated/themes/TextArea.css.ts +1 -1
- package/src/generated/themes/TextField.css.ts +1 -1
- package/src/generated/themes/Wizard.css.ts +1 -1
- package/src/i18n/messagebundle.properties +1 -0
- package/src/i18n/messagebundle_en.properties +1 -0
- package/src/i18n/messagebundle_it.properties +123 -0
- package/src/i18n/messagebundle_ja.properties +127 -1
- package/src/i18n/messagebundle_ko.properties +126 -0
- package/src/i18n/messagebundle_lt.properties +126 -0
- package/src/i18n/messagebundle_lv.properties +9 -0
- package/src/i18n/messagebundle_uk.properties +8 -0
- package/src/themes/AccordionItem.css +1 -1
- package/src/themes/AccordionSpotlight.css +1 -1
- package/src/themes/Avatar.css +1 -1
- package/src/themes/Breadcrumbs.css +46 -5
- package/src/themes/BreadcrumbsPopover.css +65 -0
- package/src/themes/CountrySelector.css +12 -2
- package/src/themes/EventRibbon.css +1 -1
- package/src/themes/FilterMenu.css +3 -2
- package/src/themes/Footer.css +98 -1
- package/src/themes/HeroBanner.css +1 -1
- package/src/themes/ImageGridTicker.css +1 -1
- package/src/themes/Link.css +127 -8
- package/src/themes/ListGroupHeader.css +6 -3
- package/src/themes/ListItem.css +10 -2
- package/src/themes/MastheadCountrySelector.css +1 -1
- package/src/themes/MastheadItem.css +1 -1
- package/src/themes/MastheadProfileMenu.css +1 -1
- package/src/themes/MastheadShell.css +1 -1
- package/src/themes/MediaPlayer.css +10 -10
- package/src/themes/Modal.css +5 -3
- package/src/themes/PhoneNumberField.css +16 -6
- package/src/themes/Search.css +9 -9
- package/src/themes/SecondaryNavigationItem.css +1 -1
- package/src/themes/SelectBase.css +2 -2
- package/src/themes/StepInput.css +1 -1
- package/src/themes/TabInOverflow.css +2 -2
- package/src/themes/TabNavigation.css +7 -7
- package/src/themes/TableCellBase.css +1 -1
- package/src/themes/TagGroup.css +1 -1
- package/src/themes/TextArea.css +1 -1
- package/src/themes/TextField.css +1 -1
- package/src/themes/Wizard.css +1 -1
- package/src/types/FooterAskJoulePosition.ts +6 -0
- package/src/utils/searchBackdrop.ts +23 -0
- package/dist/assets/messagebundle_en-DoNTK1BE.js +0 -1
- package/dist/assets/messagebundle_it-BhrBdOd4.js +0 -1
- package/dist/assets/messagebundle_ja-5P5L7sQ1.js +0 -1
- package/dist/assets/messagebundle_ko-B9H5YQlC.js +0 -1
- package/dist/assets/messagebundle_lt-BJ5gr_LF.js +0 -1
- package/dist/assets/messagebundle_lv-D06tlATH.js +0 -1
- package/dist/assets/messagebundle_uk-GmdhsMsP.js +0 -1
- package/dist/generated/templates/ListGroupHeaderTemplate.lit.d.ts +0 -3
- package/dist/generated/templates/ListGroupHeaderTemplate.lit.js +0 -30
- package/dist/generated/templates/ListGroupHeaderTemplate.lit.js.map +0 -1
- package/dist/generated/templates/ListItemTemplate.lit.d.ts +0 -3
- package/dist/generated/templates/ListItemTemplate.lit.js +0 -49
- package/dist/generated/templates/ListItemTemplate.lit.js.map +0 -1
- package/dist/generated/templates/ListSelectAllTemplate.lit.d.ts +0 -3
- package/dist/generated/templates/ListSelectAllTemplate.lit.js +0 -7
- package/dist/generated/templates/ListSelectAllTemplate.lit.js.map +0 -1
- package/dist/generated/templates/ListTemplate.lit.d.ts +0 -3
- package/dist/generated/templates/ListTemplate.lit.js +0 -11
- package/dist/generated/templates/ListTemplate.lit.js.map +0 -1
- package/dist/generated/templates/PhoneNumberFieldTemplate.lit.d.ts +0 -3
- package/dist/generated/templates/PhoneNumberFieldTemplate.lit.js +0 -16
- package/dist/generated/templates/PhoneNumberFieldTemplate.lit.js.map +0 -1
- package/dist/generated/templates/UploadItemTemplate.lit.d.ts +0 -3
- package/dist/generated/templates/UploadItemTemplate.lit.js +0 -12
- package/dist/generated/templates/UploadItemTemplate.lit.js.map +0 -1
- package/dist/generated/templates/UploadTemplate.lit.d.ts +0 -3
- package/dist/generated/templates/UploadTemplate.lit.js +0 -10
- package/dist/generated/templates/UploadTemplate.lit.js.map +0 -1
- package/src/List.hbs +0 -38
- package/src/ListGroupHeader.hbs +0 -188
- package/src/ListItem.hbs +0 -166
- package/src/ListSelectAll.hbs +0 -31
- package/src/PhoneNumberField.hbs +0 -119
- package/src/Upload.hbs +0 -21
- package/src/UploadItem.hbs +0 -32
- package/src/generated/templates/ListGroupHeaderTemplate.lit.ts +0 -34
- package/src/generated/templates/ListItemTemplate.lit.ts +0 -53
- package/src/generated/templates/ListSelectAllTemplate.lit.ts +0 -11
- package/src/generated/templates/ListTemplate.lit.ts +0 -15
- package/src/generated/templates/PhoneNumberFieldTemplate.lit.ts +0 -20
- package/src/generated/templates/UploadItemTemplate.lit.ts +0 -16
- package/src/generated/templates/UploadTemplate.lit.ts +0 -14
|
@@ -165,7 +165,9 @@ describe("Breadcrumbs", () => {
|
|
|
165
165
|
cy.get("#breadcrumbs").shadow()
|
|
166
166
|
.find("[udex-link].udex-breadcrumbs__item--hidden")
|
|
167
167
|
.each($link => {
|
|
168
|
-
cy.wrap($link)
|
|
168
|
+
cy.wrap($link)
|
|
169
|
+
.parent("li")
|
|
170
|
+
.should("exist");
|
|
169
171
|
});
|
|
170
172
|
});
|
|
171
173
|
|
|
@@ -279,12 +279,12 @@ describe("Filter Menu component", () => {
|
|
|
279
279
|
trigger().should("have.attr", "aria-expanded", "true");
|
|
280
280
|
});
|
|
281
281
|
|
|
282
|
-
it('popover exposes accessible-role="
|
|
282
|
+
it('popover exposes accessible-role="None" when opened', () => {
|
|
283
283
|
trigger().click();
|
|
284
284
|
trigger().should("have.attr", "aria-expanded", "true");
|
|
285
285
|
|
|
286
286
|
cy.get("[udex-filter-menu]").shadow()
|
|
287
|
-
.find("ui5-popover").should("have.attr", "accessible-role", "
|
|
287
|
+
.find("ui5-popover").should("have.attr", "accessible-role", "None");
|
|
288
288
|
});
|
|
289
289
|
|
|
290
290
|
it("trigger aria-controls points at the popover id", () => {
|
|
@@ -822,6 +822,38 @@ describe("Filter Menu component", () => {
|
|
|
822
822
|
|
|
823
823
|
cy.get("#next-focus").should("have.focus");
|
|
824
824
|
});
|
|
825
|
+
|
|
826
|
+
it("pressing Escape on Result button closes dropdown", () => {
|
|
827
|
+
cy.mount(filterMenuSelectAll);
|
|
828
|
+
cy.get("[udex-filter-menu]").shadow().find(".udex-filter-menu__trigger").as("triggerBtn");
|
|
829
|
+
cy.get("@triggerBtn").click();
|
|
830
|
+
|
|
831
|
+
cy.realPress("Tab");
|
|
832
|
+
cy.get("[udex-filter-menu]").shadow().find(".udex-filter-menu__result-btn").shadow().find("button")
|
|
833
|
+
.should("have.focus");
|
|
834
|
+
|
|
835
|
+
cy.realPress("Escape");
|
|
836
|
+
|
|
837
|
+
cy.get("@triggerBtn").should("not.have.class", "udex-filter-menu__trigger-active");
|
|
838
|
+
});
|
|
839
|
+
|
|
840
|
+
it("pressing Escape on Reset button closes dropdown", () => {
|
|
841
|
+
cy.mount(filterMenuSelectAll);
|
|
842
|
+
cy.get("[udex-filter-menu]").shadow().find(".udex-filter-menu__trigger").as("triggerBtn");
|
|
843
|
+
cy.get("@triggerBtn").click();
|
|
844
|
+
|
|
845
|
+
cy.realPress("Tab");
|
|
846
|
+
cy.get("[udex-filter-menu]").shadow().find(".udex-filter-menu__result-btn").shadow().find("button")
|
|
847
|
+
.should("have.focus");
|
|
848
|
+
|
|
849
|
+
cy.realPress("Tab");
|
|
850
|
+
cy.get("[udex-filter-menu]").shadow().find(".udex-filter-menu__reset-btn").shadow().find("button")
|
|
851
|
+
.should("have.focus");
|
|
852
|
+
|
|
853
|
+
cy.realPress("Escape");
|
|
854
|
+
|
|
855
|
+
cy.get("@triggerBtn").should("not.have.class", "udex-filter-menu__trigger-active");
|
|
856
|
+
});
|
|
825
857
|
});
|
|
826
858
|
|
|
827
859
|
describe('Filter menu events tests',async () => {
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { UDExFooter, UDExSocialMediaButton } from "../support/component-imports.js";
|
|
2
2
|
import { quickLinks, trendingLinks, aboutLinks, siteInformationLinks, socialLinks } from "../fixtures/footer-links.js";
|
|
3
3
|
import { setLanguage } from "@ui5/webcomponents-base/dist/config/Language.js";
|
|
4
|
+
import UDExFooterAskJoulePosition from "../../src/types/FooterAskJoulePosition.js";
|
|
4
5
|
|
|
5
6
|
const taglineAlt = "SAP tagline alt";
|
|
6
7
|
const chineseLogoUrl = "./stories/footer/chinese-logo.svg";
|
|
@@ -11,6 +12,7 @@ const chineseSecurityNetworkNumber = "Custom number";
|
|
|
11
12
|
const chineseIcpNumber = "Custom ICP";
|
|
12
13
|
const chineseIcpNumberLink = "https://custom-url.com";
|
|
13
14
|
const url = 'http://test.com';
|
|
15
|
+
const askJouleLink = "#";
|
|
14
16
|
|
|
15
17
|
const defaultFooter = <UDExFooter
|
|
16
18
|
id="footer"
|
|
@@ -196,6 +198,63 @@ describe("Footer", () => {
|
|
|
196
198
|
cy.get("#footer").shadow().find(".udex-footer__logo a").should("have.attr", "aria-label", "SAP Homepage")
|
|
197
199
|
});
|
|
198
200
|
|
|
201
|
+
it("does not render Ask Joule block when askJouleLink is not set", () => {
|
|
202
|
+
cy.get("#footer").shadow().find(".udex-footer__ask-joule").should("not.exist");
|
|
203
|
+
});
|
|
204
|
+
|
|
205
|
+
it("renders Ask Joule block at start position by default", () => {
|
|
206
|
+
cy.mount(
|
|
207
|
+
<UDExFooter id="footer" ask-joule-link={askJouleLink} chatWithUsLink="#" contactUsLink="#">
|
|
208
|
+
</UDExFooter>
|
|
209
|
+
);
|
|
210
|
+
cy.get("#footer").shadow().find(".udex-footer__ask-joule").should("exist");
|
|
211
|
+
cy.get("#footer").shadow().find(".udex-footer__ask-joule-link").should("have.attr", "href", askJouleLink);
|
|
212
|
+
});
|
|
213
|
+
|
|
214
|
+
it("renders Ask Joule link text", () => {
|
|
215
|
+
cy.mount(<UDExFooter id="footer" ask-joule-link={askJouleLink}></UDExFooter>);
|
|
216
|
+
cy.get("#footer").shadow().find(".udex-footer__ask-joule-link").should("have.text", "Ask Joule");
|
|
217
|
+
});
|
|
218
|
+
|
|
219
|
+
it("renders Ask Joule at start before phone numbers", () => {
|
|
220
|
+
cy.mount(
|
|
221
|
+
<UDExFooter
|
|
222
|
+
id="footer"
|
|
223
|
+
ask-joule-link={askJouleLink}
|
|
224
|
+
ask-joule-position={UDExFooterAskJoulePosition.Start}
|
|
225
|
+
contactNumbersList='[{"country":"France","number":"400-619-0727"}]'>
|
|
226
|
+
</UDExFooter>
|
|
227
|
+
);
|
|
228
|
+
cy.get("#footer").shadow().find(".udex-footer__contact > *").first().should("have.class", "udex-footer__ask-joule");
|
|
229
|
+
});
|
|
230
|
+
|
|
231
|
+
it("renders Ask Joule at end after other contact items", () => {
|
|
232
|
+
cy.mount(
|
|
233
|
+
<UDExFooter
|
|
234
|
+
id="footer"
|
|
235
|
+
ask-joule-link={askJouleLink}
|
|
236
|
+
ask-joule-position={UDExFooterAskJoulePosition.End}
|
|
237
|
+
contactNumbersList='[{"country":"France","number":"400-619-0727"}]'>
|
|
238
|
+
</UDExFooter>
|
|
239
|
+
);
|
|
240
|
+
cy.get("#footer").shadow().find(".udex-footer__contact > *").last().should("have.class", "udex-footer__ask-joule");
|
|
241
|
+
});
|
|
242
|
+
|
|
243
|
+
it("emits \"ui5-ask-joule-click\" when clicking the Ask Joule link", () => {
|
|
244
|
+
const askJouleClickHandler = cy.stub().as("askJouleClickHandler");
|
|
245
|
+
cy.mount(
|
|
246
|
+
<UDExFooter id="footer" ask-joule-link={askJouleLink}>
|
|
247
|
+
</UDExFooter>
|
|
248
|
+
);
|
|
249
|
+
cy.get("#footer").then($footer =>
|
|
250
|
+
$footer[0].addEventListener("ask-joule-click", askJouleClickHandler)
|
|
251
|
+
).shadow().find(".udex-footer__ask-joule-link").then($link => {
|
|
252
|
+
$link[0].removeAttribute("href");
|
|
253
|
+
}).click();
|
|
254
|
+
|
|
255
|
+
cy.get("@askJouleClickHandler").should("have.been.called");
|
|
256
|
+
});
|
|
257
|
+
|
|
199
258
|
it("emits \"ui5-logo-click\" when clicking on logo", () => {
|
|
200
259
|
const logoClickHandler = cy.stub().as("logoClickHandler")
|
|
201
260
|
cy.get("#footer").then($footer =>
|
|
@@ -1,5 +1,7 @@
|
|
|
1
|
-
import {UDExHeroBanner, UDExButton, UDExBreadcrumbs, UDExBreadcrumbsItem} from "../support/component-imports.js";
|
|
1
|
+
import {UDExHeroBanner, UDExButton, UDExBreadcrumbs, UDExBreadcrumbsItem, UDExSearch} from "../support/component-imports.js";
|
|
2
2
|
import UDExButtonDesign from "../../src/types/ButtonDesign.js";
|
|
3
|
+
// The SearchSuggestionsPopover feature must be imported so the backdrop events are enabled.
|
|
4
|
+
import "../../src/features/SearchSuggestionsPopover.js";
|
|
3
5
|
|
|
4
6
|
const primaryContentHeader = "Grow your business through enterprise";
|
|
5
7
|
const secondaryContentHeader = "Entertain an idea";
|
|
@@ -172,3 +174,35 @@ describe("Hero Banner component", () => {
|
|
|
172
174
|
});
|
|
173
175
|
});
|
|
174
176
|
});
|
|
177
|
+
|
|
178
|
+
const BACKDROP_SUGGESTION_LIST = JSON.stringify({
|
|
179
|
+
suggested: ["SAP HANA", "SAP BTP"],
|
|
180
|
+
recommended: ["What is SAP HANA"],
|
|
181
|
+
});
|
|
182
|
+
|
|
183
|
+
const heroBannerWithSearch = (
|
|
184
|
+
<UDExHeroBanner id="heroBannerSearchBackdrop">
|
|
185
|
+
<div slot="content">
|
|
186
|
+
<UDExSearch show-suggested-popover open-suggestion-popup />
|
|
187
|
+
</div>
|
|
188
|
+
</UDExHeroBanner>
|
|
189
|
+
);
|
|
190
|
+
|
|
191
|
+
describe("HeroBanner — search backdrop", () => {
|
|
192
|
+
beforeEach(() => {
|
|
193
|
+
cy.mount(heroBannerWithSearch);
|
|
194
|
+
cy.get("[udex-search]").invoke("attr", "suggestion-list", BACKDROP_SUGGESTION_LIST);
|
|
195
|
+
});
|
|
196
|
+
|
|
197
|
+
it("backdrop is rendered after search suggestions are opened", () => {
|
|
198
|
+
cy.get(".udex-search-backdrop").should("be.visible");
|
|
199
|
+
});
|
|
200
|
+
|
|
201
|
+
it("backdrop is not visible after search dropdown is closed", () => {
|
|
202
|
+
cy.get(".udex-search-backdrop").should("be.visible");
|
|
203
|
+
cy.get("[udex-search]").invoke("removeAttr", "open-suggestion-popup");
|
|
204
|
+
cy.get("[udex-search]").shadow().find("#search-input").focus();
|
|
205
|
+
cy.realPress("Escape");
|
|
206
|
+
cy.get(".udex-search-backdrop").should("not.be.visible");
|
|
207
|
+
});
|
|
208
|
+
});
|
|
@@ -421,4 +421,66 @@ describe("List component - SingleContent accessible name", () => {
|
|
|
421
421
|
);
|
|
422
422
|
cy.get("[udex-list]").shadow().find(".udex-list").should("not.have.attr", "aria-label");
|
|
423
423
|
});
|
|
424
|
-
});
|
|
424
|
+
});
|
|
425
|
+
|
|
426
|
+
// SingleContent is purely informational (no selection), so the inner list container must
|
|
427
|
+
// expose the generic list/listitem semantics instead of the listbox/option selection-widget
|
|
428
|
+
// semantics. listbox/option compute the option's accessible name from its whole subtree, which
|
|
429
|
+
// pulls a nested udex-button (e.g. an info icon) label into the option name AND announces it
|
|
430
|
+
// again when focused — a double announcement.
|
|
431
|
+
describe("List component - SingleContent uses list/listitem role", () => {
|
|
432
|
+
const innerList = () =>
|
|
433
|
+
cy.get("[udex-list]").shadow().find(".udex-list");
|
|
434
|
+
|
|
435
|
+
it("SingleContent: inner list container has role=\"list\" by default", () => {
|
|
436
|
+
cy.mount(
|
|
437
|
+
<UDExList mode="SingleContent" accessible-name="Info list">
|
|
438
|
+
<UDExListItem id="sc-item">Cloud Solution</UDExListItem>
|
|
439
|
+
</UDExList>
|
|
440
|
+
);
|
|
441
|
+
innerList().should("have.attr", "role", "list");
|
|
442
|
+
});
|
|
443
|
+
|
|
444
|
+
it("SingleContent list item: shadow [part=item] has role=\"listitem\" by default", () => {
|
|
445
|
+
cy.mount(
|
|
446
|
+
<UDExList mode="SingleContent" accessible-name="Info list">
|
|
447
|
+
<UDExListItem id="sc-item">Cloud Solution</UDExListItem>
|
|
448
|
+
</UDExList>
|
|
449
|
+
);
|
|
450
|
+
cy.get("#sc-item").shadow().find("[part=item]").should("have.attr", "role", "listitem");
|
|
451
|
+
});
|
|
452
|
+
|
|
453
|
+
|
|
454
|
+
it("SingleContent: an explicit non-listbox accessible-role is respected (not forced to \"list\")", () => {
|
|
455
|
+
cy.mount(
|
|
456
|
+
<UDExList mode="SingleContent" accessible-role="menu" accessible-name="Info list">
|
|
457
|
+
<UDExListItem>Cloud Solution</UDExListItem>
|
|
458
|
+
</UDExList>
|
|
459
|
+
);
|
|
460
|
+
innerList().should("have.attr", "role", "menu");
|
|
461
|
+
});
|
|
462
|
+
});
|
|
463
|
+
|
|
464
|
+
// The SingleContent fix must not alter the selection modes. SingleSelect / MultiSelect /
|
|
465
|
+
// RadioGroup lists (without collapsible group headers, so no tree pattern) still render the
|
|
466
|
+
// listbox/option selection-widget semantics.
|
|
467
|
+
describe("List component - selection modes keep listbox/option role", () => {
|
|
468
|
+
const listboxFixture = (mode: string) => (
|
|
469
|
+
<UDExList id="selection-list" mode={mode as "SingleSelect" | "MultiSelect" | "RadioGroup"}>
|
|
470
|
+
<UDExListItem id="selection-item">Item 1</UDExListItem>
|
|
471
|
+
<UDExListItem>Item 2</UDExListItem>
|
|
472
|
+
</UDExList>
|
|
473
|
+
);
|
|
474
|
+
|
|
475
|
+
["SingleSelect", "MultiSelect", "RadioGroup"].forEach(mode => {
|
|
476
|
+
it(`${mode}: inner #udex-list div keeps role="listbox"`, () => {
|
|
477
|
+
cy.mount(listboxFixture(mode));
|
|
478
|
+
cy.get("#selection-list").shadow().find("#udex-list").should("have.attr", "role", "listbox");
|
|
479
|
+
});
|
|
480
|
+
|
|
481
|
+
it(`${mode}: list item shadow [part=item] keeps role="option"`, () => {
|
|
482
|
+
cy.mount(listboxFixture(mode));
|
|
483
|
+
cy.get("#selection-item").shadow().find("[part=item]").should("have.attr", "role", "option");
|
|
484
|
+
});
|
|
485
|
+
});
|
|
486
|
+
});
|
|
@@ -511,4 +511,48 @@ describe("ListItem", () => {
|
|
|
511
511
|
.and("not.have.attr", "aria-checked");
|
|
512
512
|
});
|
|
513
513
|
});
|
|
514
|
+
|
|
515
|
+
// SingleContent is informational, not a selection widget, so the item's shadow
|
|
516
|
+
// [part=item] renders role="listitem" (not "option").
|
|
517
|
+
describe("SingleContent role", () => {
|
|
518
|
+
it("SingleContent item: [part=item] has role=\"listitem\" by default", () => {
|
|
519
|
+
cy.mount(<UDExListItem
|
|
520
|
+
id="sc-role-item"
|
|
521
|
+
mode={UDExListMode.SingleContent}
|
|
522
|
+
label="Cloud Solution">
|
|
523
|
+
</UDExListItem>);
|
|
524
|
+
|
|
525
|
+
cy.get("#sc-role-item").shadow()
|
|
526
|
+
.find("[part=item]").should("have.attr", "role", "listitem");
|
|
527
|
+
});
|
|
528
|
+
|
|
529
|
+
// Regression: the selection modes keep role="option" (roleItem returns the "option"
|
|
530
|
+
// fallback for every mode except SingleContent).
|
|
531
|
+
[UDExListMode.SingleSelect, UDExListMode.MultiSelect, UDExListMode.RadioGroup].forEach(mode => {
|
|
532
|
+
it(`${mode} item: [part=item] keeps role="option" by default`, () => {
|
|
533
|
+
cy.mount(<UDExListItem
|
|
534
|
+
id="sel-role-item"
|
|
535
|
+
mode={mode}
|
|
536
|
+
label="JavaScript">
|
|
537
|
+
</UDExListItem>);
|
|
538
|
+
|
|
539
|
+
cy.get("#sel-role-item").shadow()
|
|
540
|
+
.find("[part=item]").should("have.attr", "role", "option");
|
|
541
|
+
});
|
|
542
|
+
});
|
|
543
|
+
|
|
544
|
+
// An explicit accessible-role always wins over the SingleContent default (getter
|
|
545
|
+
// returns accessibleRole before falling through to the mode-based default).
|
|
546
|
+
it("explicit accessible-role overrides the SingleContent \"listitem\" default", () => {
|
|
547
|
+
cy.mount(<UDExListItem
|
|
548
|
+
id="sc-role-override"
|
|
549
|
+
accessible-role="option"
|
|
550
|
+
mode={UDExListMode.SingleContent}
|
|
551
|
+
label="Cloud Solution">
|
|
552
|
+
</UDExListItem>);
|
|
553
|
+
|
|
554
|
+
cy.get("#sc-role-override").shadow()
|
|
555
|
+
.find("[part=item]").should("have.attr", "role", "option");
|
|
556
|
+
});
|
|
557
|
+
});
|
|
514
558
|
});
|
|
@@ -8,6 +8,8 @@ import {
|
|
|
8
8
|
UDExSearch,
|
|
9
9
|
} from "../support/component-imports.js";
|
|
10
10
|
import { profileLoggedInUser, profileLinks, subItemsExplore, subItemsProduct } from "../fixtures/masthead-shell.js";
|
|
11
|
+
// The SearchSuggestionsPopover feature must be imported so the backdrop events are enabled.
|
|
12
|
+
import "../../src/features/SearchSuggestionsPopover.js";
|
|
11
13
|
|
|
12
14
|
const logoUrl = "https://cdn.udex.services.sap.com/dds/design-tokens/assets/logos/sap-logo.svg";
|
|
13
15
|
const homeUrl = "https://sap.com";
|
|
@@ -724,3 +726,40 @@ describe("MastheadShell Search-Focused", () => {
|
|
|
724
726
|
});
|
|
725
727
|
});
|
|
726
728
|
});
|
|
729
|
+
|
|
730
|
+
const BACKDROP_SUGGESTION_LIST = JSON.stringify({
|
|
731
|
+
suggested: ["SAP HANA", "SAP BTP"],
|
|
732
|
+
recommended: ["What is SAP HANA"],
|
|
733
|
+
});
|
|
734
|
+
|
|
735
|
+
const mastheadWithSuggestionsSearch = (
|
|
736
|
+
<UDExMastheadShell
|
|
737
|
+
id="mastheadBackdropTest"
|
|
738
|
+
show-search-by-default
|
|
739
|
+
logo-url={logoUrl}
|
|
740
|
+
site-label="Test"
|
|
741
|
+
homepage-aria-label="SAP Homepage"
|
|
742
|
+
close-button-accessible-name="Close Search">
|
|
743
|
+
<UDExSearch slot="search" show-suggested-popover open-suggestion-popup />
|
|
744
|
+
</UDExMastheadShell>
|
|
745
|
+
);
|
|
746
|
+
|
|
747
|
+
describe("MastheadShell — search backdrop", () => {
|
|
748
|
+
beforeEach(() => {
|
|
749
|
+
cy.viewport(1440, 900);
|
|
750
|
+
cy.mount(mastheadWithSuggestionsSearch);
|
|
751
|
+
cy.get("[udex-search]").invoke("attr", "suggestion-list", BACKDROP_SUGGESTION_LIST);
|
|
752
|
+
});
|
|
753
|
+
|
|
754
|
+
it("backdrop is rendered after search suggestions are opened", () => {
|
|
755
|
+
cy.get(".udex-search-backdrop").should("be.visible");
|
|
756
|
+
});
|
|
757
|
+
|
|
758
|
+
it("backdrop is not visible after search dropdown is closed", () => {
|
|
759
|
+
cy.get(".udex-search-backdrop").should("be.visible");
|
|
760
|
+
cy.get("[udex-search]").invoke("removeAttr", "open-suggestion-popup");
|
|
761
|
+
cy.get("[udex-search]").shadow().find("#search-input").focus();
|
|
762
|
+
cy.realPress("Escape");
|
|
763
|
+
cy.get(".udex-search-backdrop").should("not.be.visible");
|
|
764
|
+
});
|
|
765
|
+
});
|
|
@@ -6,6 +6,14 @@ import { UDExMediaPlayer } from "../support/component-imports.js";
|
|
|
6
6
|
const BLANK_SOURCE = "about:blank";
|
|
7
7
|
const BLANK_TYPE = "video/mp4";
|
|
8
8
|
|
|
9
|
+
// Minimal structural type for driving the embed (YouTube/Vimeo) code path
|
|
10
|
+
// directly, without a real iframe player. Extend as more embed handlers are
|
|
11
|
+
// exercised by tests.
|
|
12
|
+
type EmbedPlayer = HTMLElement & {
|
|
13
|
+
handleEmbedVideoPlaying: (embedEvent: CustomEvent) => void;
|
|
14
|
+
handleEmbedVideoEnded: () => void;
|
|
15
|
+
};
|
|
16
|
+
|
|
9
17
|
const basicPlayer = (
|
|
10
18
|
<UDExMediaPlayer
|
|
11
19
|
id="test-media-player"
|
|
@@ -239,3 +247,53 @@ describe("MediaPlayer — custom plugin support", () => {
|
|
|
239
247
|
});
|
|
240
248
|
});
|
|
241
249
|
});
|
|
250
|
+
|
|
251
|
+
describe("Embedded video – replay detection", () => {
|
|
252
|
+
// A YouTube source + poster forces onAfterRendering() to early-return
|
|
253
|
+
// (no video.js import) and renders only the poster, so we can drive the
|
|
254
|
+
// embed progress/ended handlers directly without a real iframe player.
|
|
255
|
+
const YT_SOURCE = "https://www.youtube.com/watch?v=dQw4w9WgXcQ";
|
|
256
|
+
|
|
257
|
+
const embedPlayer = (
|
|
258
|
+
<UDExMediaPlayer
|
|
259
|
+
id="embed-media-player"
|
|
260
|
+
source={YT_SOURCE}
|
|
261
|
+
poster={BLANK_SOURCE}
|
|
262
|
+
/>
|
|
263
|
+
);
|
|
264
|
+
|
|
265
|
+
it("re-fires video25/video50/video75 milestones on replay after the video ends", () => {
|
|
266
|
+
const video25 = cy.stub().as("video25");
|
|
267
|
+
const video50 = cy.stub().as("video50");
|
|
268
|
+
const video75 = cy.stub().as("video75");
|
|
269
|
+
|
|
270
|
+
cy.mount(embedPlayer);
|
|
271
|
+
|
|
272
|
+
// First play: a single progress update past 75% crosses all three
|
|
273
|
+
// milestones, so each event fires exactly once.
|
|
274
|
+
cy.get("#embed-media-player").then(($el) => {
|
|
275
|
+
const el = $el[0] as unknown as EmbedPlayer;
|
|
276
|
+
el.addEventListener("video25", video25);
|
|
277
|
+
el.addEventListener("video50", video50);
|
|
278
|
+
el.addEventListener("video75", video75);
|
|
279
|
+
|
|
280
|
+
el.handleEmbedVideoPlaying({ detail: { percentPlayed: 80 } } as CustomEvent);
|
|
281
|
+
});
|
|
282
|
+
|
|
283
|
+
cy.get("@video25").should("have.been.calledOnce");
|
|
284
|
+
cy.get("@video50").should("have.been.calledOnce");
|
|
285
|
+
cy.get("@video75").should("have.been.calledOnce");
|
|
286
|
+
|
|
287
|
+
// Ending the video resets the milestone flags so the events can re-fire.
|
|
288
|
+
// Replaying past 75% again must fire each milestone a second time.
|
|
289
|
+
cy.get("#embed-media-player").then(($el) => {
|
|
290
|
+
const el = $el[0] as unknown as EmbedPlayer;
|
|
291
|
+
el.handleEmbedVideoEnded();
|
|
292
|
+
el.handleEmbedVideoPlaying({ detail: { percentPlayed: 80 } } as CustomEvent);
|
|
293
|
+
});
|
|
294
|
+
|
|
295
|
+
cy.get("@video25").should("have.been.calledTwice");
|
|
296
|
+
cy.get("@video50").should("have.been.calledTwice");
|
|
297
|
+
cy.get("@video75").should("have.been.calledTwice");
|
|
298
|
+
});
|
|
299
|
+
});
|
|
@@ -116,6 +116,34 @@ describe("PhoneNumberField", () => {
|
|
|
116
116
|
cy.get("#default").shadow().find("udex-list-item[selected]").should("have.attr", "id", "UA")
|
|
117
117
|
});
|
|
118
118
|
|
|
119
|
+
it("country flag is automatically updated when value is set programmatically", () => {
|
|
120
|
+
cy.mount(defaultPhoneNumberField)
|
|
121
|
+
cy.get("#default").then($el => {
|
|
122
|
+
($el[0] as any).value = "+38012345678"
|
|
123
|
+
})
|
|
124
|
+
cy.get("#default").shadow().find("udex-list-item[selected]").should("have.attr", "id", "UA")
|
|
125
|
+
cy.get("#default").shadow().find("input").should("have.attr", "placeholder", "+380 XXXXX XXXXX")
|
|
126
|
+
});
|
|
127
|
+
|
|
128
|
+
it("country flag is updated when value is set programmatically after manual country selection", () => {
|
|
129
|
+
cy.mount(defaultPhoneNumberField)
|
|
130
|
+
cy.get("#default").shadow().find(".udex-phone-number-field__input-wrapper").find(".udex-phone-number-field__open-button").click().realPress("d").realPress("Enter")
|
|
131
|
+
cy.get("#default").shadow().find("udex-list-item[selected]").should("have.attr", "id", "DK")
|
|
132
|
+
cy.get("#default").then($el => {
|
|
133
|
+
($el[0] as any).value = "+38012345678"
|
|
134
|
+
})
|
|
135
|
+
cy.get("#default").shadow().find("udex-list-item[selected]").should("have.attr", "id", "UA")
|
|
136
|
+
});
|
|
137
|
+
|
|
138
|
+
it("changing country from dropdown updates flag and resets value to new prefix", () => {
|
|
139
|
+
cy.mount(defaultPhoneNumberField)
|
|
140
|
+
cy.get("#default").shadow().find("input").type("38012345")
|
|
141
|
+
cy.get("#default").shadow().find("udex-list-item[selected]").should("have.attr", "id", "UA")
|
|
142
|
+
cy.get("#default").shadow().find(".udex-phone-number-field__input-wrapper").find(".udex-phone-number-field__open-button").click().realPress("d").realPress("Enter")
|
|
143
|
+
cy.get("#default").shadow().find("udex-list-item[selected]").should("have.attr", "id", "DK")
|
|
144
|
+
cy.get("#default").shadow().find("input").should("have.value", "+45")
|
|
145
|
+
});
|
|
146
|
+
|
|
119
147
|
it("check that the maxlength and formatting is applied correctly", () => {
|
|
120
148
|
cy.mount(defaultPhoneNumberField)
|
|
121
149
|
cy.get("#default").shadow().find("input").type("+380123456789123456").should("have.value", "+380 12345 6789123")
|
|
@@ -192,4 +220,4 @@ describe("PhoneNumberField", () => {
|
|
|
192
220
|
cy.get("#default").shadow().find("input").type("123-abc-456!@#").should("have.value", "+1 (234) 56")
|
|
193
221
|
});
|
|
194
222
|
});
|
|
195
|
-
});
|
|
223
|
+
});
|
|
@@ -67,8 +67,8 @@ describe("Desktop", () => {
|
|
|
67
67
|
});
|
|
68
68
|
|
|
69
69
|
it("item component renders dropdown after clicking", () => {
|
|
70
|
-
cy.get("#secondary-nav").shadow().find("udex-secondary-navigation-item").first().click()
|
|
71
|
-
.shadow().find(".udex-secondary-navigation__dropdown").should("be.visible")
|
|
70
|
+
cy.get("#secondary-nav").shadow().find("udex-secondary-navigation-item").first().click();
|
|
71
|
+
cy.get("#secondary-nav").shadow().find("udex-secondary-navigation-item").first().shadow().find(".udex-secondary-navigation__dropdown").should("be.visible");
|
|
72
72
|
});
|
|
73
73
|
|
|
74
74
|
it("emits 'item-click' event and displays item info", () => {
|