@sapudex/web-components 2.29.0 → 2.31.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/FilterMenu.cy.tsx +39 -1
- package/cypress/specs/List.cy.tsx +171 -0
- package/cypress/specs/ListItem.cy.tsx +22 -26
- package/cypress/specs/PromoTile.cy.tsx +10 -0
- package/cypress/specs/ReviewItem.cy.tsx +48 -14
- package/cypress/specs/SecondaryNavigationDesktop.cy.tsx +12 -12
- package/cypress/specs/SelectBox.cy.tsx +76 -0
- package/cypress/support/component-imports.instrumented.ts +4 -0
- package/cypress/support/component-imports.src.ts +5 -1
- package/dist/Avatar.d.ts +1 -0
- package/dist/Avatar.js +9 -0
- package/dist/Avatar.js.map +1 -1
- package/dist/Breadcrumbs.d.ts +0 -4
- package/dist/Breadcrumbs.js +7 -16
- package/dist/Breadcrumbs.js.map +1 -1
- package/dist/BreadcrumbsTemplate.js +1 -1
- package/dist/BreadcrumbsTemplate.js.map +1 -1
- package/dist/FilterMenu.d.ts +2 -0
- package/dist/FilterMenu.js +2 -0
- package/dist/FilterMenu.js.map +1 -1
- package/dist/ImageGridTickerTemplate.js +2 -1
- package/dist/ImageGridTickerTemplate.js.map +1 -1
- package/dist/List.d.ts +4 -2
- package/dist/List.js +45 -12
- package/dist/List.js.map +1 -1
- package/dist/ListGroupHeader.d.ts +4 -0
- package/dist/ListGroupHeader.js +26 -1
- package/dist/ListGroupHeader.js.map +1 -1
- package/dist/ListGroupHeaderBase.js +1 -1
- package/dist/ListGroupHeaderBase.js.map +1 -1
- package/dist/ListItem.js +1 -1
- package/dist/ListItem.js.map +1 -1
- package/dist/ListItemBase.d.ts +40 -3
- package/dist/ListItemBase.js +70 -9
- package/dist/ListItemBase.js.map +1 -1
- package/dist/MastheadCountrySelector.d.ts +3 -15
- package/dist/MastheadCountrySelector.js +28 -72
- package/dist/MastheadCountrySelector.js.map +1 -1
- package/dist/MastheadItem.d.ts +10 -2
- package/dist/MastheadItem.js +26 -15
- package/dist/MastheadItem.js.map +1 -1
- package/dist/MastheadMenu.d.ts +2 -2
- package/dist/MastheadMenu.js +9 -9
- package/dist/MastheadMenu.js.map +1 -1
- package/dist/MastheadMenuItem.d.ts +7 -0
- package/dist/MastheadMenuItem.js +3 -0
- package/dist/MastheadMenuItem.js.map +1 -1
- package/dist/MastheadMobileMenu.d.ts +2 -12
- package/dist/MastheadMobileMenu.js +31 -116
- package/dist/MastheadMobileMenu.js.map +1 -1
- package/dist/MastheadProfileMenu.js +1 -1
- package/dist/MastheadProfileMenu.js.map +1 -1
- package/dist/MastheadShell.d.ts +1 -6
- package/dist/MastheadShell.js +7 -44
- package/dist/MastheadShell.js.map +1 -1
- package/dist/Pagination.d.ts +14 -1
- package/dist/Pagination.js +40 -7
- package/dist/Pagination.js.map +1 -1
- package/dist/PromoTile.d.ts +8 -0
- package/dist/PromoTile.js +4 -0
- package/dist/PromoTile.js.map +1 -1
- package/dist/PromoTileTemplate.js +3 -1
- package/dist/PromoTileTemplate.js.map +1 -1
- package/dist/ReviewItem.d.ts +8 -7
- package/dist/ReviewItem.js +35 -36
- package/dist/ReviewItem.js.map +1 -1
- package/dist/ReviewItemTemplate.js +3 -1
- package/dist/ReviewItemTemplate.js.map +1 -1
- package/dist/SearchableListBase.d.ts +3 -0
- package/dist/SearchableListBase.js +37 -1
- package/dist/SearchableListBase.js.map +1 -1
- package/dist/SecondaryNavigationItem.js +7 -1
- package/dist/SecondaryNavigationItem.js.map +1 -1
- package/dist/SelectBase.js +28 -7
- package/dist/SelectBase.js.map +1 -1
- package/dist/SelectBox.js +0 -1
- package/dist/SelectBox.js.map +1 -1
- package/dist/TextField.d.ts +1 -1
- package/dist/TextField.js.map +1 -1
- package/dist/assets/{InputSuggestions-GMbG8xQ2.js → InputSuggestions-i2kFpCfC.js} +1 -1
- package/dist/assets/{ListItemStandardExpandableTextTemplate-IyZB_qzJ.js → ListItemStandardExpandableTextTemplate-C1ceDaxu.js} +1 -1
- package/dist/assets/{bundle.esm-Dg7j0PXg.js → bundle.esm-DQ3cxywT.js} +216 -216
- package/dist/assets/messagebundle_en-DWAgV5VH.js +1 -0
- package/dist/css/themes/BreadcrumbsPopover.css +1 -1
- package/dist/css/themes/Dropdown.css +1 -1
- package/dist/css/themes/FilterMenu.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/Modal.css +1 -1
- package/dist/css/themes/RatingIndicator.css +1 -1
- package/dist/css/themes/ReviewItem.css +1 -1
- package/dist/css/themes/SecondaryNavigation.css +1 -1
- package/dist/css/themes/SecondaryNavigationItem.css +1 -1
- package/dist/css/themes/SecondaryNavigationSubItem.css +1 -1
- package/dist/css/themes/Slider.css +1 -1
- package/dist/custom-elements-internal.json +986 -19
- package/dist/custom-elements.json +734 -13
- package/dist/generated/assets/i18n/messagebundle_en.json +1 -1
- package/dist/generated/i18n/i18n-defaults.d.ts +6 -1
- package/dist/generated/i18n/i18n-defaults.js +6 -1
- package/dist/generated/i18n/i18n-defaults.js.map +1 -1
- package/dist/generated/templates/ListGroupHeaderTemplate.lit.js +17 -10
- package/dist/generated/templates/ListGroupHeaderTemplate.lit.js.map +1 -1
- package/dist/generated/templates/ListItemTemplate.lit.js +32 -34
- package/dist/generated/templates/ListItemTemplate.lit.js.map +1 -1
- package/dist/generated/templates/MastheadCountrySelectorTemplate.lit.js +3 -3
- package/dist/generated/templates/MastheadCountrySelectorTemplate.lit.js.map +1 -1
- package/dist/generated/templates/MastheadItemTemplate.lit.js +33 -25
- package/dist/generated/templates/MastheadItemTemplate.lit.js.map +1 -1
- package/dist/generated/templates/MastheadMenuItemTemplate.lit.js +1 -1
- package/dist/generated/templates/MastheadMenuItemTemplate.lit.js.map +1 -1
- package/dist/generated/templates/MastheadMobileMenuTemplate.lit.js +5 -5
- package/dist/generated/templates/MastheadMobileMenuTemplate.lit.js.map +1 -1
- package/dist/generated/templates/MastheadShellTemplate.lit.js +9 -10
- package/dist/generated/templates/MastheadShellTemplate.lit.js.map +1 -1
- package/dist/generated/templates/SearchableListBaseTemplate.lit.js +1 -1
- package/dist/generated/templates/SearchableListBaseTemplate.lit.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/Dropdown.css.d.ts +1 -1
- package/dist/generated/themes/Dropdown.css.js +1 -1
- package/dist/generated/themes/Dropdown.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/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/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/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/ReviewItem.css.d.ts +1 -1
- package/dist/generated/themes/ReviewItem.css.js +1 -1
- package/dist/generated/themes/ReviewItem.css.js.map +1 -1
- package/dist/generated/themes/SecondaryNavigation.css.d.ts +1 -1
- package/dist/generated/themes/SecondaryNavigation.css.js +1 -1
- package/dist/generated/themes/SecondaryNavigation.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/SecondaryNavigationSubItem.css.d.ts +1 -1
- package/dist/generated/themes/SecondaryNavigationSubItem.css.js +1 -1
- package/dist/generated/themes/SecondaryNavigationSubItem.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/messagebundle.properties +9 -0
- package/dist/messagebundle_en.properties +3 -0
- package/dist/types/List.d.ts +0 -2
- package/dist/types/List.js +0 -2
- package/dist/types/List.js.map +1 -1
- package/dist/types/SearchableListBase.d.ts +1 -0
- package/dist/types/SearchableListBase.js.map +1 -1
- package/dist/vscode.html-custom-data.json +144 -85
- package/dist/web-types.json +303 -83
- package/package.json +2 -1
- package/src/Avatar.ts +9 -0
- package/src/Breadcrumbs.ts +8 -20
- package/src/BreadcrumbsTemplate.tsx +1 -1
- package/src/FilterMenu.ts +4 -0
- package/src/ImageGridTickerTemplate.tsx +3 -1
- package/src/List.ts +51 -14
- package/src/ListGroupHeader.hbs +128 -17
- package/src/ListGroupHeader.ts +31 -1
- package/src/ListGroupHeaderBase.ts +1 -1
- package/src/ListItem.hbs +15 -2
- package/src/ListItem.ts +1 -1
- package/src/ListItemBase.ts +105 -7
- package/src/MastheadCountrySelector.hbs +6 -3
- package/src/MastheadCountrySelector.ts +31 -85
- package/src/MastheadItem.hbs +31 -23
- package/src/MastheadItem.ts +28 -18
- package/src/MastheadMenu.ts +10 -9
- package/src/MastheadMenuItem.hbs +1 -0
- package/src/MastheadMenuItem.ts +9 -0
- package/src/MastheadMobileMenu.hbs +5 -6
- package/src/MastheadMobileMenu.ts +34 -130
- package/src/MastheadProfileMenu.ts +1 -1
- package/src/MastheadShell.hbs +9 -11
- package/src/MastheadShell.ts +8 -50
- package/src/Pagination.ts +52 -8
- package/src/PromoTile.ts +10 -0
- package/src/PromoTileTemplate.tsx +4 -1
- package/src/ReviewItem.ts +45 -35
- package/src/ReviewItemTemplate.tsx +16 -14
- package/src/SearchableListBase.hbs +3 -0
- package/src/SearchableListBase.ts +52 -1
- package/src/SecondaryNavigationItem.ts +1 -2
- package/src/SelectBase.ts +33 -7
- package/src/SelectBox.ts +0 -1
- package/src/TextField.ts +1 -1
- package/src/generated/i18n/i18n-defaults.ts +2 -2
- package/src/generated/templates/ListGroupHeaderTemplate.lit.ts +17 -10
- package/src/generated/templates/ListItemTemplate.lit.ts +32 -34
- package/src/generated/templates/MastheadCountrySelectorTemplate.lit.ts +3 -3
- package/src/generated/templates/MastheadItemTemplate.lit.ts +33 -25
- package/src/generated/templates/MastheadMenuItemTemplate.lit.ts +1 -1
- package/src/generated/templates/MastheadMobileMenuTemplate.lit.ts +5 -5
- package/src/generated/templates/MastheadShellTemplate.lit.ts +9 -10
- package/src/generated/templates/SearchableListBaseTemplate.lit.ts +1 -1
- package/src/generated/themes/BreadcrumbsPopover.css.ts +1 -1
- package/src/generated/themes/Dropdown.css.ts +1 -1
- package/src/generated/themes/FilterMenu.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/Modal.css.ts +1 -1
- package/src/generated/themes/RatingIndicator.css.ts +1 -1
- package/src/generated/themes/ReviewItem.css.ts +1 -1
- package/src/generated/themes/SecondaryNavigation.css.ts +1 -1
- package/src/generated/themes/SecondaryNavigationItem.css.ts +1 -1
- package/src/generated/themes/SecondaryNavigationSubItem.css.ts +1 -1
- package/src/generated/themes/Slider.css.ts +1 -1
- package/src/i18n/messagebundle.properties +9 -0
- package/src/i18n/messagebundle_en.properties +3 -0
- package/src/themes/BreadcrumbsPopover.css +2 -0
- package/src/themes/Dropdown.css +5 -1
- package/src/themes/FilterMenu.css +2 -2
- package/src/themes/ImageGridTicker.css +2 -26
- package/src/themes/Link.css +2 -3
- package/src/themes/ListGroupHeader.css +102 -15
- package/src/themes/ListItem.css +67 -15
- package/src/themes/MastheadCountrySelector.css +3 -1
- package/src/themes/MastheadItem.css +88 -3
- package/src/themes/MastheadProfileMenu.css +1 -9
- package/src/themes/MastheadShell.css +0 -2
- package/src/themes/Modal.css +2 -1
- package/src/themes/ReviewItem.css +18 -1
- package/src/themes/SecondaryNavigation.css +6 -3
- package/src/themes/SecondaryNavigationItem.css +11 -10
- package/src/themes/SecondaryNavigationSubItem.css +3 -2
- package/src/types/List.ts +0 -2
- package/src/types/SearchableListBase.ts +1 -0
- package/dist/assets/messagebundle_en-DfoXjU7o.js +0 -1
|
@@ -68,6 +68,30 @@ const filterMenuGroup = <><UDExFilterMenu
|
|
|
68
68
|
<a id="next-focus" href="#">Next focus</a>
|
|
69
69
|
</>
|
|
70
70
|
|
|
71
|
+
const filterMenuGroupCollapsible = <UDExFilterMenu
|
|
72
|
+
id="filter-menu-group-with-search"
|
|
73
|
+
disable-target-overlap="true"
|
|
74
|
+
badge-value="2"
|
|
75
|
+
mode={UDExListMode.MultiSelect}
|
|
76
|
+
filter-name="Filter Name">
|
|
77
|
+
<UDExFilterMenuGroupHeader collapsible collapsed label="Programming Languages" supporting-text="Digital Builders">
|
|
78
|
+
<UDExFilterMenuItem label="JavaScript" supporting-text="Frontend web development"></UDExFilterMenuItem>
|
|
79
|
+
<UDExFilterMenuItem label="Python" supporting-text="Used in data analysis"></UDExFilterMenuItem>
|
|
80
|
+
<UDExFilterMenuItem label="Java" supporting-text="Building large-scale applications"></UDExFilterMenuItem>
|
|
81
|
+
<UDExFilterMenuItem label="Swift" supporting-text="iOS app development"></UDExFilterMenuItem>
|
|
82
|
+
<UDExFilterMenuItem label="C#" supporting-text="Object-oriented language"></UDExFilterMenuItem>
|
|
83
|
+
<UDExFilterMenuItem label="Perl" supporting-text="General-purpose scripting language"></UDExFilterMenuItem>
|
|
84
|
+
<UDExFilterMenuItem label="Rust" supporting-text="Focused on safety and speed"></UDExFilterMenuItem>
|
|
85
|
+
<UDExFilterMenuItem label="PHP" supporting-text="Server-side scripting language"></UDExFilterMenuItem>
|
|
86
|
+
<UDExFilterMenuItem label="Go" supporting-text="Statically typed language"></UDExFilterMenuItem>
|
|
87
|
+
<UDExFilterMenuItem label="Kotlin" supporting-text="For Android development"></UDExFilterMenuItem>
|
|
88
|
+
<UDExFilterMenuItem label="TypeScript" supporting-text="Super set of JS with static typing"></UDExFilterMenuItem>
|
|
89
|
+
<UDExFilterMenuItem label="Ruby" supporting-text="Readable and easy-to-use"></UDExFilterMenuItem>
|
|
90
|
+
<UDExFilterMenuItem label="C++" supporting-text="Efficient and flexible language"></UDExFilterMenuItem>
|
|
91
|
+
<UDExFilterMenuItem label="R" supporting-text="Language for statistical computing"></UDExFilterMenuItem>
|
|
92
|
+
</UDExFilterMenuGroupHeader>
|
|
93
|
+
</UDExFilterMenu>
|
|
94
|
+
|
|
71
95
|
const filterMenuRadioGroup = <UDExFilterMenu
|
|
72
96
|
id="filter-menu-radio-group"
|
|
73
97
|
disable-target-overlap="true"
|
|
@@ -77,7 +101,7 @@ const filterMenuRadioGroup = <UDExFilterMenu
|
|
|
77
101
|
<UDExFilterMenuItem label="Python"></UDExFilterMenuItem>
|
|
78
102
|
<UDExFilterMenuItem label="Node.js"></UDExFilterMenuItem>
|
|
79
103
|
</UDExFilterMenuGroupHeader>
|
|
80
|
-
<UDExFilterMenuGroupHeader label="Programming Languages">
|
|
104
|
+
<UDExFilterMenuGroupHeader label="Programming Languages" collapsible>
|
|
81
105
|
<UDExFilterMenuItem label="JavaScript" supporting-text="Frontend web development"></UDExFilterMenuItem>
|
|
82
106
|
<UDExFilterMenuItem label="Python" supporting-text="Used in data analysis"></UDExFilterMenuItem>
|
|
83
107
|
<UDExFilterMenuItem label="Java" supporting-text="Building large-scale applications"></UDExFilterMenuItem>
|
|
@@ -338,6 +362,20 @@ describe("Filter Menu component", () => {
|
|
|
338
362
|
.find("udex-list-group-header")
|
|
339
363
|
.should("have.attr", "selected")
|
|
340
364
|
});
|
|
365
|
+
|
|
366
|
+
it('MultiSelect mode - expand collapsed items to show search result', () => {
|
|
367
|
+
cy.mount(filterMenuGroupCollapsible);
|
|
368
|
+
cy.get("[udex-filter-menu]").shadow().find(".udex-filter-menu__trigger").click();
|
|
369
|
+
|
|
370
|
+
cy.get("[udex-filter-menu]")
|
|
371
|
+
.shadow().find("[udex-search]")
|
|
372
|
+
.shadow().find(".udex-search__field")
|
|
373
|
+
.click().type("java");
|
|
374
|
+
|
|
375
|
+
cy.get("[udex-filter-menu]").shadow()
|
|
376
|
+
.find("udex-list-item").eq(0).shadow()
|
|
377
|
+
.find(".udex-list__item").should("not.have.attr", "collapsed");
|
|
378
|
+
})
|
|
341
379
|
});
|
|
342
380
|
|
|
343
381
|
describe("Filter Menu group", () => {
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
import { UDExList, UDExListGroupHeader, UDExListItem } from "../support/component-imports.js";
|
|
2
|
+
|
|
3
|
+
const collapsibleList = <UDExList id="list-group-header-collapsible" mode="MultiSelect">
|
|
4
|
+
<UDExListGroupHeader collapsible id="group-header-collapsible" supporting-text="Supporting text" label="Group Header">
|
|
5
|
+
<UDExListItem>List Item1</UDExListItem>
|
|
6
|
+
<UDExListItem>List Item2</UDExListItem>
|
|
7
|
+
</UDExListGroupHeader>
|
|
8
|
+
<UDExListGroupHeader collapsible collapsed id="group-header-collapsible-collapsed" supporting-text="Supporting text" label="Group Header">
|
|
9
|
+
<UDExListItem>List Item1</UDExListItem>
|
|
10
|
+
<UDExListItem>List Item2</UDExListItem>
|
|
11
|
+
</UDExListGroupHeader>
|
|
12
|
+
</UDExList>;
|
|
13
|
+
|
|
14
|
+
const collapsibleListSingleSelect = <UDExList id="list-group-header-collapsible" mode="SingleSelect">
|
|
15
|
+
<UDExListGroupHeader collapsible id="group-header-collapsible" supporting-text="Supporting text" label="Group Header">
|
|
16
|
+
<UDExListItem>List Item1</UDExListItem>
|
|
17
|
+
<UDExListItem>List Item2</UDExListItem>
|
|
18
|
+
</UDExListGroupHeader>
|
|
19
|
+
<UDExListGroupHeader collapsible collapsed id="group-header-collapsible-collapsed" supporting-text="Supporting text" label="Group Header">
|
|
20
|
+
<UDExListItem>List Item1</UDExListItem>
|
|
21
|
+
<UDExListItem>List Item2</UDExListItem>
|
|
22
|
+
</UDExListGroupHeader>
|
|
23
|
+
</UDExList>;
|
|
24
|
+
|
|
25
|
+
const collapsibleListSingleContent = <UDExList id="list-group-header-collapsible" mode="SingleContent">
|
|
26
|
+
<UDExListGroupHeader collapsible id="group-header-collapsible" supporting-text="Supporting text" label="Group Header">
|
|
27
|
+
<UDExListItem>List Item1</UDExListItem>
|
|
28
|
+
<UDExListItem>List Item2</UDExListItem>
|
|
29
|
+
</UDExListGroupHeader>
|
|
30
|
+
<UDExListGroupHeader collapsible collapsed id="group-header-collapsible-collapsed" supporting-text="Supporting text" label="Group Header">
|
|
31
|
+
<UDExListItem>List Item1</UDExListItem>
|
|
32
|
+
<UDExListItem>List Item2</UDExListItem>
|
|
33
|
+
</UDExListGroupHeader>
|
|
34
|
+
</UDExList>;
|
|
35
|
+
|
|
36
|
+
const collapsibleListRadioGroup = <UDExList id="list-group-header-collapsible" mode="RadioGroup">
|
|
37
|
+
<UDExListGroupHeader collapsible id="group-header-collapsible" supporting-text="Supporting text" label="Group Header">
|
|
38
|
+
<UDExListItem>List Item1</UDExListItem>
|
|
39
|
+
<UDExListItem>List Item2</UDExListItem>
|
|
40
|
+
</UDExListGroupHeader>
|
|
41
|
+
<UDExListGroupHeader collapsible collapsed id="group-header-collapsible-collapsed" supporting-text="Supporting text" label="Group Header">
|
|
42
|
+
<UDExListItem>List Item1</UDExListItem>
|
|
43
|
+
<UDExListItem>List Item2</UDExListItem>
|
|
44
|
+
</UDExListGroupHeader>
|
|
45
|
+
</UDExList>;
|
|
46
|
+
|
|
47
|
+
describe("List component - collapsible group header", () => {
|
|
48
|
+
it("MultiSelect - collapse and expand the group when pressing arrow keys on grouping header", () => {
|
|
49
|
+
cy.mount(collapsibleList);
|
|
50
|
+
cy.get("#group-header-collapsible").shadow().find(".udex-list__group-header").as("grouping-header");
|
|
51
|
+
cy.get("@grouping-header").shadow().find('.udex-list__item').realClick();
|
|
52
|
+
cy.get("@grouping-header").should("have.attr", "focused", "");
|
|
53
|
+
|
|
54
|
+
cy.get("@grouping-header").realPress("ArrowLeft")
|
|
55
|
+
.then(() => {
|
|
56
|
+
cy.get("@grouping-header").should("have.attr", "collapsed", "");
|
|
57
|
+
cy.get("#group-header-collapsible").find("udex-list-item").eq(0).should("have.attr", "collapsed", "");
|
|
58
|
+
});
|
|
59
|
+
|
|
60
|
+
cy.get("@grouping-header").realPress("ArrowRight")
|
|
61
|
+
.then(() => {
|
|
62
|
+
cy.get("@grouping-header").should("not.have.attr", "collapsed");
|
|
63
|
+
cy.get("#group-header-collapsible").find("udex-list-item").eq(0).should("not.have.attr", "collapsed", "");
|
|
64
|
+
});
|
|
65
|
+
});
|
|
66
|
+
|
|
67
|
+
it("MultiSelect - collapses the group when clicking on grouping header arrow icon", () => {
|
|
68
|
+
cy.mount(collapsibleList);
|
|
69
|
+
cy.get("#group-header-collapsible").shadow().find(".udex-list__group-header").as("grouping-header");
|
|
70
|
+
// First click to collapse
|
|
71
|
+
cy.get("@grouping-header").shadow().find('.udex-list__group-heading__icon').realClick();
|
|
72
|
+
cy.get("@grouping-header").should("have.attr", "collapsed", "");
|
|
73
|
+
cy.get("#group-header-collapsible").find("udex-list-item").eq(0).should("have.attr", "collapsed", "");
|
|
74
|
+
|
|
75
|
+
// Second click to expand
|
|
76
|
+
cy.get("@grouping-header").shadow().find('.udex-list__group-heading__icon').realClick();
|
|
77
|
+
cy.get("@grouping-header").should("not.have.attr", "collapsed", "");
|
|
78
|
+
cy.get("#group-header-collapsible").find("udex-list-item").eq(0).should("not.have.attr", "collapsed", "");
|
|
79
|
+
});
|
|
80
|
+
|
|
81
|
+
it("MultiSelect - focus on next grouping header on arrow down when previous grouping header is collapsed", () => {
|
|
82
|
+
cy.mount(collapsibleList);
|
|
83
|
+
cy.get("#group-header-collapsible-collapsed").shadow().find(".udex-list__group-header").as("grouping-header");
|
|
84
|
+
cy.get("@grouping-header").shadow().find('.udex-list__item').realClick();
|
|
85
|
+
cy.get("@grouping-header").should("have.attr", "focused", "");
|
|
86
|
+
|
|
87
|
+
cy.get("@grouping-header").realPress("ArrowDown")
|
|
88
|
+
.then(() => {
|
|
89
|
+
cy.get("#group-header-collapsible").shadow().find(".udex-list__group-header").should("have.attr", "focused", "");
|
|
90
|
+
});
|
|
91
|
+
});
|
|
92
|
+
|
|
93
|
+
it("SingleSelect - collapse and expand the group when pressing arrow keys on grouping header", () => {
|
|
94
|
+
cy.mount(collapsibleListSingleSelect);
|
|
95
|
+
cy.get("#group-header-collapsible").shadow().find(".udex-list__group-header-wrap").as("grouping-header");
|
|
96
|
+
cy.get("@grouping-header").realClick();
|
|
97
|
+
|
|
98
|
+
cy.get("@grouping-header").realPress("ArrowLeft")
|
|
99
|
+
.then(() => {
|
|
100
|
+
cy.get("#group-header-collapsible").should("have.attr", "collapsed", "");
|
|
101
|
+
});
|
|
102
|
+
});
|
|
103
|
+
|
|
104
|
+
it("SingleSelect - collapses the group when clicking on grouping header arrow icon", () => {
|
|
105
|
+
cy.mount(collapsibleListSingleSelect);
|
|
106
|
+
cy.get("#group-header-collapsible").shadow().find(".udex-list__group-header-wrap").as("grouping-header");
|
|
107
|
+
// First click to collapse
|
|
108
|
+
cy.get("@grouping-header").find('.udex-list__group-heading__icon').realClick();
|
|
109
|
+
cy.get("#group-header-collapsible").should("have.attr", "collapsed", "");
|
|
110
|
+
|
|
111
|
+
// Second click to expand
|
|
112
|
+
cy.get("@grouping-header").find('.udex-list__group-heading__icon').realClick();
|
|
113
|
+
cy.get("#group-header-collapsible").should("not.have.attr", "collapsed", "");
|
|
114
|
+
});
|
|
115
|
+
|
|
116
|
+
it("SingleContent - collapse and expand the group when pressing arrow keys on grouping header", () => {
|
|
117
|
+
cy.mount(collapsibleListSingleContent);
|
|
118
|
+
cy.get("#group-header-collapsible").shadow().find(".udex-list__group-header-wrap").as("grouping-header");
|
|
119
|
+
cy.get("@grouping-header").realClick();
|
|
120
|
+
|
|
121
|
+
cy.get("@grouping-header").realPress("ArrowLeft")
|
|
122
|
+
.then(() => {
|
|
123
|
+
cy.get("#group-header-collapsible").should("have.attr", "collapsed", "");
|
|
124
|
+
});
|
|
125
|
+
|
|
126
|
+
cy.get("@grouping-header").realPress("ArrowRight")
|
|
127
|
+
.then(() => {
|
|
128
|
+
cy.get("#group-header-collapsible").should("not.have.attr", "collapsed", "");
|
|
129
|
+
});
|
|
130
|
+
});
|
|
131
|
+
|
|
132
|
+
it("SingleContent - collapses the group when clicking on grouping header arrow icon", () => {
|
|
133
|
+
cy.mount(collapsibleListSingleContent);
|
|
134
|
+
cy.get("#group-header-collapsible").shadow().find(".udex-list__group-header-wrap").as("grouping-header");
|
|
135
|
+
// First click to collapse
|
|
136
|
+
cy.get("@grouping-header").find('.udex-list__group-heading__icon').realClick();
|
|
137
|
+
cy.get("#group-header-collapsible").should("have.attr", "collapsed", "");
|
|
138
|
+
|
|
139
|
+
// Second click to expand
|
|
140
|
+
cy.get("@grouping-header").find('.udex-list__group-heading__icon').realClick();
|
|
141
|
+
cy.get("#group-header-collapsible").should("not.have.attr", "collapsed", "");
|
|
142
|
+
});
|
|
143
|
+
|
|
144
|
+
it("RadioGroup - collapse and expand the group when pressing arrow keys on grouping header", () => {
|
|
145
|
+
cy.mount(collapsibleListRadioGroup);
|
|
146
|
+
cy.get("#group-header-collapsible").shadow().find(".udex-list__group-header-wrap").as("grouping-header");
|
|
147
|
+
cy.get("@grouping-header").realClick();
|
|
148
|
+
|
|
149
|
+
cy.get("@grouping-header").realPress("ArrowLeft")
|
|
150
|
+
.then(() => {
|
|
151
|
+
cy.get("#group-header-collapsible").should("have.attr", "collapsed", "");
|
|
152
|
+
});
|
|
153
|
+
|
|
154
|
+
cy.get("@grouping-header").realPress("ArrowRight")
|
|
155
|
+
.then(() => {
|
|
156
|
+
cy.get("#group-header-collapsible").should("not.have.attr", "collapsed", "");
|
|
157
|
+
});
|
|
158
|
+
});
|
|
159
|
+
|
|
160
|
+
it("RadioGroup - collapses the group when clicking on grouping header arrow icon", () => {
|
|
161
|
+
cy.mount(collapsibleListRadioGroup);
|
|
162
|
+
cy.get("#group-header-collapsible").shadow().find(".udex-list__group-header-wrap").as("grouping-header");
|
|
163
|
+
// First click to collapse
|
|
164
|
+
cy.get("@grouping-header").find('.udex-list__group-heading__icon').realClick();
|
|
165
|
+
cy.get("#group-header-collapsible").should("have.attr", "collapsed", "");
|
|
166
|
+
|
|
167
|
+
// Second click to expand
|
|
168
|
+
cy.get("@grouping-header").find('.udex-list__group-heading__icon').realClick();
|
|
169
|
+
cy.get("#group-header-collapsible").should("not.have.attr", "collapsed", "");
|
|
170
|
+
});
|
|
171
|
+
});
|
|
@@ -5,7 +5,7 @@ import { UDExAvatarSize } from "../../src/Avatar.js";
|
|
|
5
5
|
import { UDExAdditionalTextState, UDExListStyleType } from "../../src/types/List.js";
|
|
6
6
|
import UDExStatusBadgeValueState from "../../dist/types/StatusBadgeValueState.js";
|
|
7
7
|
|
|
8
|
-
const defaultListItem = <UDExListItem
|
|
8
|
+
const defaultListItem = <UDExListItem
|
|
9
9
|
id="listItem"
|
|
10
10
|
accessibleName="accessible-name"
|
|
11
11
|
supportingText="Supporting text"
|
|
@@ -20,7 +20,7 @@ const defaultListItem = <UDExListItem
|
|
|
20
20
|
Default List Item
|
|
21
21
|
</UDExListItem>
|
|
22
22
|
|
|
23
|
-
const listItemSuccess = <UDExListItem
|
|
23
|
+
const listItemSuccess = <UDExListItem
|
|
24
24
|
id="listItemSuccess"
|
|
25
25
|
accessibleName="accessible-name"
|
|
26
26
|
supportingText="Supporting text"
|
|
@@ -33,7 +33,7 @@ const listItemSuccess = <UDExListItem
|
|
|
33
33
|
Default List Item
|
|
34
34
|
</UDExListItem>
|
|
35
35
|
|
|
36
|
-
const listItemError = <UDExListItem
|
|
36
|
+
const listItemError = <UDExListItem
|
|
37
37
|
id="listItemError"
|
|
38
38
|
accessibleName="accessible-name"
|
|
39
39
|
supportingText="Supporting text"
|
|
@@ -46,7 +46,7 @@ const listItemError = <UDExListItem
|
|
|
46
46
|
Default List Item
|
|
47
47
|
</UDExListItem>
|
|
48
48
|
|
|
49
|
-
const listItemWarning = <UDExListItem
|
|
49
|
+
const listItemWarning = <UDExListItem
|
|
50
50
|
id="listItemWarning"
|
|
51
51
|
accessibleName="accessible-name"
|
|
52
52
|
supportingText="Supporting text"
|
|
@@ -59,7 +59,7 @@ const listItemWarning = <UDExListItem
|
|
|
59
59
|
Default List Item
|
|
60
60
|
</UDExListItem>
|
|
61
61
|
|
|
62
|
-
const listItemWithIcons = <UDExListItem
|
|
62
|
+
const listItemWithIcons = <UDExListItem
|
|
63
63
|
id="listItemIcons"
|
|
64
64
|
accessible-name="accessible-name"
|
|
65
65
|
supporting-text="Supporting text"
|
|
@@ -80,36 +80,32 @@ describe("ListItem", () => {
|
|
|
80
80
|
cy.get("[udex-list-item]").should("exist");
|
|
81
81
|
});
|
|
82
82
|
});
|
|
83
|
-
|
|
83
|
+
|
|
84
84
|
describe("Basic attributes", () => {
|
|
85
85
|
beforeEach(() => {
|
|
86
86
|
cy.mount(defaultListItem);
|
|
87
87
|
});
|
|
88
|
-
|
|
88
|
+
|
|
89
89
|
it("has correct supporting text", () => {
|
|
90
90
|
cy.get("#listItem").shadow().find(".udex-list__supporting-text").should("have.text", "Supporting text");
|
|
91
91
|
});
|
|
92
|
-
|
|
92
|
+
|
|
93
93
|
it("has correct avatar", () => {
|
|
94
94
|
cy.get("#listItem").shadow().find(".udex-list__avatar").should("exist");
|
|
95
95
|
});
|
|
96
|
-
|
|
96
|
+
|
|
97
97
|
it("has avatar of size M", () => {
|
|
98
98
|
cy.get("#listItem").shadow().find(".udex-list__avatar").should("have.attr", "size", "M");
|
|
99
99
|
});
|
|
100
|
-
|
|
100
|
+
|
|
101
101
|
it("has avatar of shape Square", () => {
|
|
102
102
|
cy.get("#listItem").shadow().find(".udex-list__avatar").should("have.attr", "shape", "Square");
|
|
103
103
|
});
|
|
104
|
-
|
|
104
|
+
|
|
105
105
|
it("has avatar with alternative text", () => {
|
|
106
106
|
cy.get("#listItem").shadow().find(".udex-list__avatar").find("img").should("have.attr", "alt", "Person Avatar");
|
|
107
107
|
});
|
|
108
|
-
|
|
109
|
-
it("renders bullet marker at the start of the item", () => {
|
|
110
|
-
cy.get("#listItem").shadow().find(".udex-list__circle").should("exist");
|
|
111
|
-
});
|
|
112
|
-
|
|
108
|
+
|
|
113
109
|
it("has correct accessibleName", () => {
|
|
114
110
|
cy.get("#listItem").shadow().find(".udex-list__content-wrap").should(($wrapper) => {
|
|
115
111
|
const itemId = $wrapper.attr("_id");
|
|
@@ -126,51 +122,51 @@ describe("ListItem", () => {
|
|
|
126
122
|
cy.get("#listItem").shadow().find("udex-status-badge").should("have.attr", "size", UDExAvatarSize.M);
|
|
127
123
|
});
|
|
128
124
|
});
|
|
129
|
-
|
|
125
|
+
|
|
130
126
|
describe("With Icons", () => {
|
|
131
127
|
beforeEach(() => {
|
|
132
128
|
cy.mount(listItemWithIcons);
|
|
133
129
|
});
|
|
134
|
-
|
|
130
|
+
|
|
135
131
|
it("renders first and second icons when both slots are filled", () => {
|
|
136
132
|
cy.get("#listItemIcons").find("udex-button").should("have.length", 2);
|
|
137
133
|
});
|
|
138
|
-
|
|
134
|
+
|
|
139
135
|
it("becomes selected when clicking", () => {
|
|
140
136
|
cy.get("#listItemIcons").shadow().find(".udex-list__item").click();
|
|
141
137
|
cy.get("#listItemIcons").should("have.attr", "selected");
|
|
142
138
|
});
|
|
143
|
-
|
|
139
|
+
|
|
144
140
|
it("pressing Enter sets data-selected", () => {
|
|
145
141
|
cy.realPress("Enter");
|
|
146
142
|
cy.get("#listItemIcons").shadow().find(".udex-list__item").should("have.attr", "data-selected");
|
|
147
143
|
});
|
|
148
|
-
|
|
144
|
+
|
|
149
145
|
it("pressing Space sets data-selected", () => {
|
|
150
146
|
cy.realPress("Space");
|
|
151
147
|
cy.get("#listItemIcons").shadow().find(".udex-list__item").should("have.attr", "data-selected");
|
|
152
148
|
});
|
|
153
149
|
});
|
|
154
|
-
|
|
150
|
+
|
|
155
151
|
describe("Additional Text States", () => {
|
|
156
152
|
it("shows Information state", () => {
|
|
157
153
|
cy.mount(defaultListItem);
|
|
158
154
|
cy.get("#listItem").shadow().find(".udex-list__add-text").should("have.css", "color", "rgb(0, 64, 176)");
|
|
159
155
|
});
|
|
160
|
-
|
|
156
|
+
|
|
161
157
|
it("shows Success state", () => {
|
|
162
158
|
cy.mount(listItemSuccess);
|
|
163
159
|
cy.get("#listItemSuccess").shadow().find(".udex-list__add-text").should("have.css", "color", "rgb(30, 89, 47)");
|
|
164
160
|
});
|
|
165
|
-
|
|
161
|
+
|
|
166
162
|
it("shows Error state", () => {
|
|
167
163
|
cy.mount(listItemError);
|
|
168
164
|
cy.get("#listItemError").shadow().find(".udex-list__add-text").should("have.css", "color", "rgb(132, 6, 6)");
|
|
169
165
|
});
|
|
170
|
-
|
|
166
|
+
|
|
171
167
|
it("shows Warning state", () => {
|
|
172
168
|
cy.mount(listItemWarning);
|
|
173
169
|
cy.get("#listItemWarning").shadow().find(".udex-list__add-text").should("have.css", "color", "rgb(141, 42, 0)");
|
|
174
170
|
});
|
|
175
171
|
});
|
|
176
|
-
});
|
|
172
|
+
});
|
|
@@ -8,6 +8,7 @@ const logoUrl = "http://test.com";
|
|
|
8
8
|
const buttonLabel = "Button";
|
|
9
9
|
const design = "Tertiary";
|
|
10
10
|
const colorScheme = "Grey9";
|
|
11
|
+
const gradient = "linear-gradient(135deg, var(--udexColorBlue10) 0%,var(--udexColorBlue11) 100%)";
|
|
11
12
|
const promoTile = <UDExPromoTile>Text</UDExPromoTile>;
|
|
12
13
|
const simplePromoTile = <UDExPromoTile eyebrow={eyebrow} header={header}>Text</UDExPromoTile>;
|
|
13
14
|
const iconPromoTile = <UDExPromoTile icon={iconName} image-label={imageLabel}>Text</UDExPromoTile>;
|
|
@@ -23,6 +24,7 @@ const pictogramPromoTile = <UDExPromoTile button={buttonLabel}>
|
|
|
23
24
|
/>
|
|
24
25
|
</UDExPromoTile>;
|
|
25
26
|
const darkPromoTile = <UDExPromoTile color-scheme={colorScheme} button={buttonLabel}>Text</UDExPromoTile>;
|
|
27
|
+
const gradientPromoTile = <UDExPromoTile background-gradient={gradient} button={buttonLabel}>Text</UDExPromoTile>;
|
|
26
28
|
|
|
27
29
|
describe("Promo Tile", () => {
|
|
28
30
|
it("renders simple promo tile", () => {
|
|
@@ -86,6 +88,14 @@ describe("Promo Tile", () => {
|
|
|
86
88
|
cy.get("[udex-promo-tile]").shadow().find(".udex-promo-tile__container").should("have.class", "udex-promo-tile--dark");
|
|
87
89
|
cy.get("[udex-promo-tile]").shadow().find("[udex-button]").should("have.attr", "design", "Secondary");
|
|
88
90
|
});
|
|
91
|
+
|
|
92
|
+
it("renders promo tile with gradient", () => {
|
|
93
|
+
cy.mount(gradientPromoTile);
|
|
94
|
+
cy.get("[udex-promo-tile]").shadow().find(".udex-promo-tile__container")
|
|
95
|
+
.should("have.attr", "style")
|
|
96
|
+
.and("include", gradient)
|
|
97
|
+
.and("include", "rgb(255, 255, 255)");
|
|
98
|
+
});
|
|
89
99
|
});
|
|
90
100
|
|
|
91
101
|
describe("Promo Tile - CTA button", () => {
|
|
@@ -4,7 +4,9 @@ const defaultReviewItem = <UDExReviewItem
|
|
|
4
4
|
id="review-item"
|
|
5
5
|
rating={4}
|
|
6
6
|
reviewTitle="Review title"
|
|
7
|
-
text="Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris tincidunt mauris id aliquet consectetur. Nulla euismod ligula id ante feugiat ornare. Mauris enim velit, sodales eget lectus at, tristique condimentum sapien. Integer quam lacus, faucibus in lacus ut, ullamcorper dictum lacus. In ac lectus congue, blandit quam non, congue ante. Suspendisse sem mauris, tempor dignissim nisl facilisis, vulputate tincidunt turpis. In egestas nisl ut sollicitudin rutrum.
|
|
7
|
+
text="Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris tincidunt mauris id aliquet consectetur. Nulla euismod ligula id ante feugiat ornare. Mauris enim velit, sodales eget lectus at, tristique condimentum sapien. Integer quam lacus, faucibus in lacus ut, ullamcorper dictum lacus. In ac lectus congue, blandit quam non, congue ante. Suspendisse sem mauris, tempor dignissim nisl facilisis, vulputate tincidunt turpis. In egestas nisl ut sollicitudin rutrum.
|
|
8
|
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris tincidunt mauris id aliquet consectetur. Nulla euismod ligula id ante feugiat ornare. Mauris enim velit, sodales eget lectus at, tristique condimentum sapien. Integer quam lacus, faucibus in lacus ut, ullamcorper dictum lacus. In ac lectus congue, blandit quam non, congue ante. Suspendisse sem mauris, tempor dignissim nisl facilisis, vulputate tincidunt turpis. In egestas nisl ut sollicitudin rutrum.
|
|
9
|
+
">
|
|
8
10
|
<span slot="date">Jan 7, 2025</span>
|
|
9
11
|
<span slot="author">John Ford, Job Title, Company, Inc.</span>
|
|
10
12
|
</UDExReviewItem>
|
|
@@ -19,6 +21,33 @@ const reviewItemWithTopRating = <UDExReviewItem
|
|
|
19
21
|
<span slot="author">John Ford, Job Title, Company, Inc.</span>
|
|
20
22
|
</UDExReviewItem>
|
|
21
23
|
|
|
24
|
+
const reviewItemWithTCustomContent = <UDExReviewItem
|
|
25
|
+
id="review-item-content"
|
|
26
|
+
rating={4}
|
|
27
|
+
reviewTitle="Review title"
|
|
28
|
+
showRatingTop>
|
|
29
|
+
<div slot="content">
|
|
30
|
+
<div class="truncatable-content">
|
|
31
|
+
<h4>AI agents that truly understand your business</h4>
|
|
32
|
+
<p>Amplify the impact of all your teams with Joule's AI agents that use their unique understanding
|
|
33
|
+
of your business context to offer expertise to perform complex processes across your business.
|
|
34
|
+
Reliable insights and the right business context enable Joule to act as an AI agent orchestrator,
|
|
35
|
+
triggering more impactful actions throughout your teams' workflows. And with SAP's agent builder,
|
|
36
|
+
you can scale endlessly as teams create and deploy custom AI agents tailored to their business needs.</p>
|
|
37
|
+
<h4>AI agents that truly understand your business</h4>
|
|
38
|
+
<p>SAP Business Data Cloud brings together the world's most comprehensive and mission-critical
|
|
39
|
+
data with the leading data platform to deliver transformational insights across all lines of business.</p>
|
|
40
|
+
<h4>Connect processes and empower teams with modular Cloud ERP applications</h4>
|
|
41
|
+
<p>Seamlessly connect your entire business value chain, from order to cash, procure to pay,
|
|
42
|
+
design to operate, hire to retire, and record to report, all tailored for industry nuances.
|
|
43
|
+
Power end-to-end processes with the most comprehensive and integrated portfolio of applications
|
|
44
|
+
with embedded AI capabilities.</p>
|
|
45
|
+
</div>
|
|
46
|
+
</div>
|
|
47
|
+
<span slot="date">Jan 7, 2025</span>
|
|
48
|
+
<span slot="author">John Ford, Job Title, Company, Inc.</span>
|
|
49
|
+
</UDExReviewItem>
|
|
50
|
+
|
|
22
51
|
|
|
23
52
|
describe("ReviewItem", () => {
|
|
24
53
|
it("renders correctly", () => {
|
|
@@ -27,47 +56,52 @@ describe("ReviewItem", () => {
|
|
|
27
56
|
});
|
|
28
57
|
|
|
29
58
|
it("shows review expander", () => {
|
|
30
|
-
cy.mount(defaultReviewItem)
|
|
59
|
+
cy.mount(defaultReviewItem);
|
|
31
60
|
cy.get("#review-item").shadow().find("#reviewExpander").should("be.visible")
|
|
32
61
|
});
|
|
33
62
|
|
|
34
63
|
it("review expander has correct text before clicking", () => {
|
|
35
|
-
cy.mount(defaultReviewItem)
|
|
36
|
-
const SUPPORTING_TEXT_TEST_VALUE = "
|
|
64
|
+
cy.mount(defaultReviewItem);
|
|
65
|
+
const SUPPORTING_TEXT_TEST_VALUE = "Show more";
|
|
37
66
|
cy.get("#review-item").shadow().find("#reviewExpander").should("have.text", SUPPORTING_TEXT_TEST_VALUE)
|
|
38
67
|
});
|
|
39
68
|
|
|
40
69
|
it("renders rating on top when specified", () => {
|
|
41
|
-
cy.mount(reviewItemWithTopRating)
|
|
70
|
+
cy.mount(reviewItemWithTopRating);
|
|
42
71
|
cy.get("#review-item-top").shadow().find(".udex-review-item__rating-top").should("be.visible")
|
|
43
72
|
});
|
|
44
73
|
|
|
74
|
+
it("renders custom content", () => {
|
|
75
|
+
cy.mount(reviewItemWithTCustomContent);
|
|
76
|
+
cy.get("#review-item-content").find(".truncatable-content").should("be.visible")
|
|
77
|
+
});
|
|
78
|
+
|
|
45
79
|
it("renders rating on top on mobile", () => {
|
|
46
|
-
cy.viewport(640, 640)
|
|
47
|
-
cy.mount(defaultReviewItem)
|
|
80
|
+
cy.viewport(640, 640);
|
|
81
|
+
cy.mount(defaultReviewItem);
|
|
48
82
|
cy.get("#review-item").shadow().find(".udex-review-item").then($container => {
|
|
49
|
-
const styles = window.getComputedStyle($container[0])
|
|
50
|
-
expect(styles.flexDirection).eqls("column")
|
|
83
|
+
const styles = window.getComputedStyle($container[0]);
|
|
84
|
+
expect(styles.flexDirection).eqls("column");
|
|
51
85
|
})
|
|
52
86
|
});
|
|
53
87
|
|
|
54
88
|
it("review expander has correct text after clicking on expander", () => {
|
|
55
|
-
cy.mount(defaultReviewItem)
|
|
56
|
-
const SUPPORTING_TEXT_TEST_VALUE = "
|
|
89
|
+
cy.mount(defaultReviewItem);
|
|
90
|
+
const SUPPORTING_TEXT_TEST_VALUE = "Show less";
|
|
57
91
|
cy.get("#review-item").shadow().find("#reviewExpander").click().should("have.text", SUPPORTING_TEXT_TEST_VALUE)
|
|
58
92
|
});
|
|
59
93
|
|
|
60
94
|
it("has maximum rating when the upper limit is exceeded", () => {
|
|
61
95
|
cy.mount(<UDExReviewItem rating={500} text="Lorem ipsum dolor sit amet, consectetur adipiscing elit"></UDExReviewItem>)
|
|
62
96
|
cy.get("[udex-review-item]").shadow().find("udex-rating-indicator").then($rating => {
|
|
63
|
-
expect($rating.attr("value")).eqls("5")
|
|
97
|
+
expect($rating.attr("value")).eqls("5");
|
|
64
98
|
})
|
|
65
99
|
});
|
|
66
100
|
|
|
67
101
|
it("has minimum rating when the lower limit is exceeded", () => {
|
|
68
102
|
cy.mount(<UDExReviewItem rating={-500} text="Lorem ipsum dolor sit amet, consectetur adipiscing elit"></UDExReviewItem>)
|
|
69
103
|
cy.get("[udex-review-item]").shadow().find("udex-rating-indicator").then($rating => {
|
|
70
|
-
expect($rating.attr("value")).eqls("0")
|
|
104
|
+
expect($rating.attr("value")).eqls("0");
|
|
71
105
|
})
|
|
72
106
|
});
|
|
73
|
-
})
|
|
107
|
+
})
|
|
@@ -262,27 +262,27 @@ describe("Desktop", () => {
|
|
|
262
262
|
cy.get("#secondary-nav-without-breadcrumbs").shadow().find("div").first().should("have.attr", "class", rootClass)
|
|
263
263
|
});
|
|
264
264
|
|
|
265
|
-
describe("Direction
|
|
265
|
+
describe("Direction attributes", () => {
|
|
266
266
|
beforeEach(() => {
|
|
267
267
|
cy.mount(secondaryNavigationWithoutBreadcrumbs)
|
|
268
268
|
cy.viewport(1080, 640);
|
|
269
269
|
})
|
|
270
270
|
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
271
|
+
it("has the attr \"data-horizontal-align=`right`\" when doesn't fit", () => {
|
|
272
|
+
cy.get("#secondary-nav-without-breadcrumbs").shadow().find("[udex-secondary-navigation-item]").eq(5).click();
|
|
273
|
+
cy.get("#secondary-nav-without-breadcrumbs").shadow().find("[udex-secondary-navigation-item]").eq(5)
|
|
274
|
+
.shadow().find(".udex-secondary-navigation__dropdown", { timeout: 5000 })
|
|
275
|
+
.should("be.visible")
|
|
276
|
+
.should("have.attr", "data-horizontal-align", "right")
|
|
276
277
|
});
|
|
277
278
|
|
|
278
279
|
it("has the attr \"data-horizontal-align=`left`\" when doesn't fit in the \"rtl\" mode", () => {
|
|
279
280
|
cy.get("body").invoke("attr", "dir", "rtl");
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
.should("have.attr", "data-horizontal-align", "left")
|
|
281
|
+
cy.get("#secondary-nav-without-breadcrumbs").shadow().find("[udex-secondary-navigation-item]").eq(5).click();
|
|
282
|
+
cy.get("#secondary-nav-without-breadcrumbs").shadow().find("[udex-secondary-navigation-item]").eq(5)
|
|
283
|
+
.shadow()
|
|
284
|
+
.find(".udex-secondary-navigation__dropdown")
|
|
285
|
+
.should("have.attr", "data-horizontal-align", "left")
|
|
286
286
|
});
|
|
287
287
|
})
|
|
288
288
|
|
|
@@ -25,6 +25,17 @@ const fullComponent = <UDExSelectBox
|
|
|
25
25
|
<UDExSelectBoxItem label="R" supportingText="Language for statistical computing"></UDExSelectBoxItem>
|
|
26
26
|
</UDExSelectBox>
|
|
27
27
|
|
|
28
|
+
|
|
29
|
+
const groupHeaderCollapsible = <div style="width: 350px; position:relative;"><UDExSelectBox
|
|
30
|
+
id="select-box"
|
|
31
|
+
mode={UDExListMode.MultiSelect}
|
|
32
|
+
label="Programming languages">
|
|
33
|
+
<UDExSelectBoxGroupHeader label="Programming Languages" collapsible>
|
|
34
|
+
<UDExSelectBoxItem label="JavaScript" supportingText="Frontend web development"></UDExSelectBoxItem>
|
|
35
|
+
<UDExSelectBoxItem label="Python" supportingText="Used in data analysis"></UDExSelectBoxItem>
|
|
36
|
+
</UDExSelectBoxGroupHeader>
|
|
37
|
+
</UDExSelectBox></div>
|
|
38
|
+
|
|
28
39
|
const multiSelect = <div style="width: 350px; position:relative;">
|
|
29
40
|
<a id="previous-focus" href="#">Previous focusable element</a>
|
|
30
41
|
<UDExSelectBox
|
|
@@ -590,6 +601,71 @@ describe("SelectBox", () => {
|
|
|
590
601
|
.find(".udex-list__inactive-header")
|
|
591
602
|
.should("exist")
|
|
592
603
|
});
|
|
604
|
+
|
|
605
|
+
it("MultiSelect mode - arrow keys navigate items when group header is nonInteractive", () => {
|
|
606
|
+
cy.mount(groupHeader);
|
|
607
|
+
cy.get("udex-select-box-group-header")
|
|
608
|
+
.then($el => {
|
|
609
|
+
const select = $el as any;
|
|
610
|
+
select[0].nonInteractive = true;
|
|
611
|
+
});
|
|
612
|
+
|
|
613
|
+
cy.get("#select-box").shadow().find(".udex-text-field__search").click();
|
|
614
|
+
cy.realPress("ArrowDown");
|
|
615
|
+
|
|
616
|
+
cy.get("#select-box").shadow()
|
|
617
|
+
.find("udex-list-item").eq(0)
|
|
618
|
+
.should("be.focused");
|
|
619
|
+
|
|
620
|
+
cy.realPress("ArrowDown");
|
|
621
|
+
|
|
622
|
+
cy.get("#select-box").shadow()
|
|
623
|
+
.find("udex-list-item").eq(1)
|
|
624
|
+
.should("be.focused");
|
|
625
|
+
|
|
626
|
+
cy.realPress("ArrowUp");
|
|
627
|
+
|
|
628
|
+
cy.get("#select-box").shadow()
|
|
629
|
+
.find("udex-list-item").eq(0)
|
|
630
|
+
.should("be.focused");
|
|
631
|
+
});
|
|
632
|
+
|
|
633
|
+
it("MultiSelect mode - arrow keys navigate through collapsible group header and its items", () => {
|
|
634
|
+
cy.mount(groupHeaderCollapsible);
|
|
635
|
+
|
|
636
|
+
cy.get("#select-box").shadow().find(".udex-text-field__search").click();
|
|
637
|
+
cy.realPress("ArrowDown");
|
|
638
|
+
|
|
639
|
+
cy.get("#select-box").shadow()
|
|
640
|
+
.find("udex-list-group-header").shadow()
|
|
641
|
+
.find(".udex-list__group-header-wrap")
|
|
642
|
+
.should("be.focused");
|
|
643
|
+
|
|
644
|
+
cy.realPress("ArrowDown");
|
|
645
|
+
|
|
646
|
+
cy.get("#select-box").shadow()
|
|
647
|
+
.find("udex-list-item").eq(0)
|
|
648
|
+
.should("be.focused");
|
|
649
|
+
|
|
650
|
+
cy.realPress("ArrowDown");
|
|
651
|
+
|
|
652
|
+
cy.get("#select-box").shadow()
|
|
653
|
+
.find("udex-list-item").eq(1)
|
|
654
|
+
.should("be.focused");
|
|
655
|
+
|
|
656
|
+
cy.realPress("ArrowUp");
|
|
657
|
+
|
|
658
|
+
cy.get("#select-box").shadow()
|
|
659
|
+
.find("udex-list-item").eq(0)
|
|
660
|
+
.should("be.focused");
|
|
661
|
+
|
|
662
|
+
cy.realPress("ArrowUp");
|
|
663
|
+
|
|
664
|
+
cy.get("#select-box").shadow()
|
|
665
|
+
.find("udex-list-group-header").shadow()
|
|
666
|
+
.find(".udex-list__group-header-wrap")
|
|
667
|
+
.should("be.focused");
|
|
668
|
+
});
|
|
593
669
|
});
|
|
594
670
|
|
|
595
671
|
describe("Select Box focus tests", () => {
|