@sapudex/web-components 2.39.0 → 2.41.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/Dropdown.cy.tsx +90 -0
- package/cypress/specs/PasswordField.cy.tsx +37 -0
- package/cypress/specs/Search.cy.tsx +244 -138
- package/cypress/specs/SelectBox.cy.tsx +457 -0
- package/cypress/specs/Tile.cy.tsx +96 -0
- package/cypress/support/component-imports.instrumented.ts +4 -0
- package/cypress/support/component-imports.src.ts +4 -0
- package/dist/Dropdown.d.ts +5 -0
- package/dist/Dropdown.js +56 -0
- package/dist/Dropdown.js.map +1 -1
- package/dist/List.d.ts +1 -6
- package/dist/List.js +2 -10
- package/dist/List.js.map +1 -1
- package/dist/MastheadCountrySelector.d.ts +7 -0
- package/dist/MastheadCountrySelector.js +3 -0
- package/dist/MastheadCountrySelector.js.map +1 -1
- package/dist/PasswordField.d.ts +10 -0
- package/dist/PasswordField.js +17 -2
- package/dist/PasswordField.js.map +1 -1
- package/dist/PasswordFieldTemplate.js +1 -1
- package/dist/PasswordFieldTemplate.js.map +1 -1
- package/dist/Search.d.ts +1 -1
- package/dist/Search.js +13 -9
- package/dist/Search.js.map +1 -1
- package/dist/SearchTemplate.js +3 -3
- package/dist/SearchTemplate.js.map +1 -1
- package/dist/SearchableListBase.d.ts +2 -6
- package/dist/SearchableListBase.js +6 -3
- package/dist/SearchableListBase.js.map +1 -1
- package/dist/SearchableListBaseTemplate.js +1 -1
- package/dist/SearchableListBaseTemplate.js.map +1 -1
- package/dist/SelectBase.d.ts +20 -2
- package/dist/SelectBase.js +189 -13
- package/dist/SelectBase.js.map +1 -1
- package/dist/SelectBox.js +2 -1
- package/dist/SelectBox.js.map +1 -1
- package/dist/SelectBoxTemplate.js +4 -4
- package/dist/SelectBoxTemplate.js.map +1 -1
- package/dist/TextField.d.ts +1 -1
- package/dist/TextField.js +2 -2
- package/dist/TextField.js.map +1 -1
- package/dist/TextFieldTemplate.js +1 -1
- package/dist/TextFieldTemplate.js.map +1 -1
- package/dist/assets/{InputSuggestions-jTW8u1vD.js → InputSuggestions-BSg7bjcx.js} +1 -1
- package/dist/assets/{ListItemStandardExpandableTextTemplate-ShRY1eSJ.js → ListItemStandardExpandableTextTemplate-CCEQur_J.js} +1 -1
- package/dist/assets/{bundle.esm-VI-guBTG.js → bundle.esm-I7iOjLgn.js} +232 -232
- package/dist/assets/messagebundle_en-BZqDcZHN.js +1 -0
- package/dist/assets/messagebundle_et-yYsmBPXN.js +1 -0
- package/dist/assets/messagebundle_fi-DeMNrHC9.js +1 -0
- package/dist/assets/messagebundle_fr-qEm5Eykz.js +1 -0
- package/dist/assets/messagebundle_hr-NBdiYo-T.js +1 -0
- package/dist/assets/messagebundle_hu-CBV3ISbF.js +1 -0
- package/dist/css/themes/MastheadCountrySelector.css +1 -1
- package/dist/css/themes/MastheadProfileMenu.css +1 -1
- package/dist/css/themes/SelectBase.css +1 -1
- package/dist/css/themes/SelectBox.css +1 -1
- package/dist/css/themes/StatusMessage.css +1 -1
- package/dist/css/themes/TextField.css +1 -1
- package/dist/css/themes/Tile.css +1 -1
- package/dist/css/themes/Toast.css +1 -1
- package/dist/custom-elements-internal.json +85 -161
- package/dist/custom-elements.json +56 -120
- package/dist/features/SearchSuggestionsPopover.d.ts +6 -9
- package/dist/features/SearchSuggestionsPopover.js +47 -163
- package/dist/features/SearchSuggestionsPopover.js.map +1 -1
- package/dist/generated/assets/i18n/messagebundle_en.json +1 -1
- package/dist/generated/assets/i18n/messagebundle_et.json +1 -1
- package/dist/generated/assets/i18n/messagebundle_fi.json +1 -1
- package/dist/generated/assets/i18n/messagebundle_fr.json +1 -1
- package/dist/generated/assets/i18n/messagebundle_hr.json +1 -1
- package/dist/generated/assets/i18n/messagebundle_hu.json +1 -1
- package/dist/generated/i18n/i18n-defaults.d.ts +3 -2
- package/dist/generated/i18n/i18n-defaults.js +3 -2
- package/dist/generated/i18n/i18n-defaults.js.map +1 -1
- package/dist/generated/templates/MastheadCountrySelectorTemplate.lit.js +6 -5
- package/dist/generated/templates/MastheadCountrySelectorTemplate.lit.js.map +1 -1
- package/dist/generated/templates/MastheadMobileMenuTemplate.lit.js +1 -1
- package/dist/generated/templates/MastheadMobileMenuTemplate.lit.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/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/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/SelectBox.css.d.ts +1 -1
- package/dist/generated/themes/SelectBox.css.js +1 -1
- package/dist/generated/themes/SelectBox.css.js.map +1 -1
- package/dist/generated/themes/StatusMessage.css.d.ts +1 -1
- package/dist/generated/themes/StatusMessage.css.js +1 -1
- package/dist/generated/themes/StatusMessage.css.js.map +1 -1
- package/dist/generated/themes/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/Tile.css.d.ts +1 -1
- package/dist/generated/themes/Tile.css.js +1 -1
- package/dist/generated/themes/Tile.css.js.map +1 -1
- package/dist/generated/themes/Toast.css.d.ts +1 -1
- package/dist/generated/themes/Toast.css.js +1 -1
- package/dist/generated/themes/Toast.css.js.map +1 -1
- package/dist/messagebundle.properties +2 -1
- package/dist/messagebundle_en.properties +2 -1
- package/dist/messagebundle_et.properties +126 -0
- package/dist/messagebundle_fi.properties +127 -0
- package/dist/messagebundle_fr.properties +120 -0
- package/dist/messagebundle_hr.properties +125 -0
- package/dist/messagebundle_hu.properties +125 -0
- package/dist/vscode.html-custom-data.json +12 -27
- package/dist/web-types.json +36 -44
- package/package.json +1 -1
- package/src/Dropdown.ts +62 -0
- package/src/List.ts +3 -18
- package/src/MastheadCountrySelector.hbs +2 -0
- package/src/MastheadCountrySelector.ts +9 -0
- package/src/MastheadMobileMenu.hbs +1 -0
- package/src/PasswordField.ts +24 -0
- package/src/PasswordFieldTemplate.tsx +2 -2
- package/src/Search.ts +13 -9
- package/src/SearchTemplate.tsx +0 -3
- package/src/SearchableListBase.ts +8 -9
- package/src/SearchableListBaseTemplate.tsx +0 -1
- package/src/SelectBase.ts +203 -16
- package/src/SelectBox.ts +2 -1
- package/src/SelectBoxTemplate.tsx +1 -0
- package/src/TextField.ts +1 -1
- package/src/TextFieldTemplate.tsx +1 -1
- package/src/features/SearchSuggestionsPopover.ts +55 -177
- package/src/generated/i18n/i18n-defaults.ts +2 -2
- package/src/generated/templates/MastheadCountrySelectorTemplate.lit.ts +6 -5
- package/src/generated/templates/MastheadMobileMenuTemplate.lit.ts +1 -1
- package/src/generated/themes/MastheadCountrySelector.css.ts +1 -1
- package/src/generated/themes/MastheadProfileMenu.css.ts +1 -1
- package/src/generated/themes/SelectBase.css.ts +1 -1
- package/src/generated/themes/SelectBox.css.ts +1 -1
- package/src/generated/themes/StatusMessage.css.ts +1 -1
- package/src/generated/themes/TextField.css.ts +1 -1
- package/src/generated/themes/Tile.css.ts +1 -1
- package/src/generated/themes/Toast.css.ts +1 -1
- package/src/i18n/messagebundle.properties +2 -1
- package/src/i18n/messagebundle_en.properties +2 -1
- package/src/i18n/messagebundle_et.properties +126 -0
- package/src/i18n/messagebundle_fi.properties +127 -0
- package/src/i18n/messagebundle_fr.properties +120 -0
- package/src/i18n/messagebundle_hr.properties +125 -0
- package/src/i18n/messagebundle_hu.properties +125 -0
- package/src/themes/MastheadCountrySelector.css +5 -2
- package/src/themes/MastheadProfileMenu.css +0 -5
- package/src/themes/SelectBase.css +7 -0
- package/src/themes/SelectBox.css +4 -0
- package/src/themes/StatusMessage.css +4 -4
- package/src/themes/TextField.css +3 -0
- package/src/themes/Tile.css +11 -3
- package/src/themes/Toast.css +14 -2
- package/dist/assets/messagebundle_en-BxjFAY2S.js +0 -1
- package/dist/assets/messagebundle_et-BCYOcg2t.js +0 -1
- package/dist/assets/messagebundle_fi-CssCIjmp.js +0 -1
- package/dist/assets/messagebundle_fr-CvOyuAVw.js +0 -1
- package/dist/assets/messagebundle_hr-CashhWbN.js +0 -1
- package/dist/assets/messagebundle_hu-BEMbu-EE.js +0 -1
|
@@ -440,7 +440,7 @@
|
|
|
440
440
|
},
|
|
441
441
|
{
|
|
442
442
|
"name": "udex-country-selector",
|
|
443
|
-
"description": "<h3 class=\"comment-api-title\">Overview</h3>\n\n\n<h3>Usage</h3>\n\nFor the <code>udex-country-selector</code>\n<h3>ES6 Module Import</h3>\n\n<code>import \"@sapudex/web-components/dist/CountrySelector.js\";</code>\n\n\n---\n\n\n\n\n### **Events:**\n - **change-search** - Fired event when the user submitted the value in the search.\n- **first-icon-click** - Fired event when the user clicks on the first icon.\n- **reset-search** - Fired event when the user clicks on the reset button in the search.\n- **second-icon-click** - Fired event when the user clicks on the second icon.\n- **select-all** - Fired event when the user clicks on the Select All header.\n- **selection-change** - \n- **submit-search** - Fired event when the user clicks on the submitted icon in the search.\n\n### **Methods:**\n - **resetSearch()** - Reset the search value.\n\n### **Slots:**\n - **default** - Slot for items.",
|
|
443
|
+
"description": "<h3 class=\"comment-api-title\">Overview</h3>\n\n\n<h3>Usage</h3>\n\nFor the <code>udex-country-selector</code>\n<h3>ES6 Module Import</h3>\n\n<code>import \"@sapudex/web-components/dist/CountrySelector.js\";</code>\n\n\n---\n\n\n\n\n### **Events:**\n - **change-search** - Fired event when the user submitted the value in the search.\n- **first-icon-click** - Fired event when the user clicks on the first icon.\n- **reset-search** - Fired event when the user clicks on the reset button in the search.\n- **second-icon-click** - Fired event when the user clicks on the second icon.\n- **select-all** - Fired event when the user clicks on the Select All header.\n- **selection-change** - \n- **submit-search** - Fired event when the user clicks on the submitted icon in the search.\n\n### **Methods:**\n - **resetSearch()** - Reset the search value.\n\n### **Slots:**\n - **default** - Slot for items.\n- **footer** - Defines the footer content for the component dropdown.\nPlace any content (e.g. an action button) here. Clicking footer content does not close the dropdown —\nuse the <code>close</code> method if needed.",
|
|
444
444
|
"attributes": [
|
|
445
445
|
{
|
|
446
446
|
"name": "blocked-country-codes",
|
|
@@ -516,11 +516,6 @@
|
|
|
516
516
|
"name": "show-search-input",
|
|
517
517
|
"description": "Defines if the search input is visible.",
|
|
518
518
|
"values": []
|
|
519
|
-
},
|
|
520
|
-
{
|
|
521
|
-
"name": "tab-navigation-enabled",
|
|
522
|
-
"description": "Enables tab navigation for the list.",
|
|
523
|
-
"values": []
|
|
524
519
|
}
|
|
525
520
|
],
|
|
526
521
|
"references": []
|
|
@@ -914,11 +909,6 @@
|
|
|
914
909
|
"description": "Defines if the search input is visible.",
|
|
915
910
|
"values": []
|
|
916
911
|
},
|
|
917
|
-
{
|
|
918
|
-
"name": "tab-navigation-enabled",
|
|
919
|
-
"description": "Enables tab navigation for the list.",
|
|
920
|
-
"values": []
|
|
921
|
-
},
|
|
922
912
|
{
|
|
923
913
|
"name": "trigger-accessible-role",
|
|
924
914
|
"description": "Allows setting a custom role for dropdown trigger.",
|
|
@@ -1672,11 +1662,6 @@
|
|
|
1672
1662
|
{ "name": "RadioGroup" }
|
|
1673
1663
|
]
|
|
1674
1664
|
},
|
|
1675
|
-
{
|
|
1676
|
-
"name": "tab-navigation-enabled",
|
|
1677
|
-
"description": "Enables tab navigation for the list.",
|
|
1678
|
-
"values": []
|
|
1679
|
-
},
|
|
1680
1665
|
{
|
|
1681
1666
|
"name": "type",
|
|
1682
1667
|
"description": "Defines the type of the item.",
|
|
@@ -2282,6 +2267,11 @@
|
|
|
2282
2267
|
"description": "Defines title of the countries menu",
|
|
2283
2268
|
"values": []
|
|
2284
2269
|
},
|
|
2270
|
+
{
|
|
2271
|
+
"name": "hide-search",
|
|
2272
|
+
"description": "Hides the search field in the country list view.",
|
|
2273
|
+
"values": []
|
|
2274
|
+
},
|
|
2285
2275
|
{
|
|
2286
2276
|
"name": "language-voice",
|
|
2287
2277
|
"description": "Defines the language voice of the search",
|
|
@@ -2883,6 +2873,11 @@
|
|
|
2883
2873
|
"description": "Defines the inner stored displayonly state.",
|
|
2884
2874
|
"values": []
|
|
2885
2875
|
},
|
|
2876
|
+
{
|
|
2877
|
+
"name": "hide-button-tooltip",
|
|
2878
|
+
"description": "Defines the tooltip for the hide password button.",
|
|
2879
|
+
"values": []
|
|
2880
|
+
},
|
|
2886
2881
|
{
|
|
2887
2882
|
"name": "label",
|
|
2888
2883
|
"description": "Defines label text for the input field.",
|
|
@@ -3396,11 +3391,6 @@
|
|
|
3396
3391
|
"name": "show-search-input",
|
|
3397
3392
|
"description": "Defines if the search input is visible.",
|
|
3398
3393
|
"values": []
|
|
3399
|
-
},
|
|
3400
|
-
{
|
|
3401
|
-
"name": "tab-navigation-enabled",
|
|
3402
|
-
"description": "Enables tab navigation for the list.",
|
|
3403
|
-
"values": []
|
|
3404
3394
|
}
|
|
3405
3395
|
],
|
|
3406
3396
|
"references": []
|
|
@@ -3627,7 +3617,7 @@
|
|
|
3627
3617
|
},
|
|
3628
3618
|
{
|
|
3629
3619
|
"name": "udex-select-box",
|
|
3630
|
-
"description": "<h3 class=\"comment-api-title\">Overview</h3>\n\n\n<h3>Usage</h3>\n\nFor the <code>udex-select-box</code>\n<h3>ES6 Module Import</h3>\n\n<code>import \"@sapudex/web-components/dist/UDExSelectBox.js\";</code>\n\n\n---\n\n\n\n\n### **Events:**\n - **change-search** - Fired event when the user submitted the value in the search.\n- **first-icon-click** - Fired event when the user clicks on the first icon.\n- **remove** - Fired event when the user remove tag.\n- **reset-search** - Fired event when the user clicks on the reset button in the search.\n- **second-icon-click** - Fired event when the user clicks on the second icon.\n- **select-all** - Fired event when the user clicks on the Select All header.\n- **selection-change** - \n- **show-more** - Fired event when the user clicks on the More button.\n- **submit-search** - Fired event when the user clicks on the submitted icon in the search.\n\n### **Methods:**\n - **close(): _void_** - Close the dropdown.\n- **resetSearch()** - Reset the search value.\n\n### **Slots:**\n - **default** - Slot for items.",
|
|
3620
|
+
"description": "<h3 class=\"comment-api-title\">Overview</h3>\n\n\n<h3>Usage</h3>\n\nFor the <code>udex-select-box</code>\n<h3>ES6 Module Import</h3>\n\n<code>import \"@sapudex/web-components/dist/UDExSelectBox.js\";</code>\n\n\n---\n\n\n\n\n### **Events:**\n - **change-search** - Fired event when the user submitted the value in the search.\n- **first-icon-click** - Fired event when the user clicks on the first icon.\n- **remove** - Fired event when the user remove tag.\n- **reset-search** - Fired event when the user clicks on the reset button in the search.\n- **second-icon-click** - Fired event when the user clicks on the second icon.\n- **select-all** - Fired event when the user clicks on the Select All header.\n- **selection-change** - \n- **show-more** - Fired event when the user clicks on the More button.\n- **submit-search** - Fired event when the user clicks on the submitted icon in the search.\n\n### **Methods:**\n - **close(): _void_** - Close the dropdown.\n- **resetSearch()** - Reset the search value.\n\n### **Slots:**\n - **default** - Slot for items.\n- **footer** - Defines the footer content for the component dropdown.\nPlace any content (e.g. an action button) here. Clicking footer content does not close the dropdown —\nuse the <code>close</code> method if needed.",
|
|
3631
3621
|
"attributes": [
|
|
3632
3622
|
{
|
|
3633
3623
|
"name": "busy",
|
|
@@ -3694,11 +3684,6 @@
|
|
|
3694
3684
|
"description": "Defines if the search input is visible.",
|
|
3695
3685
|
"values": []
|
|
3696
3686
|
},
|
|
3697
|
-
{
|
|
3698
|
-
"name": "tab-navigation-enabled",
|
|
3699
|
-
"description": "Enables tab navigation for the list.",
|
|
3700
|
-
"values": []
|
|
3701
|
-
},
|
|
3702
3687
|
{
|
|
3703
3688
|
"name": "tooltip-placement",
|
|
3704
3689
|
"description": "Determines on which side of the component the Tooltip is displayed.",
|
package/dist/web-types.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://raw.githubusercontent.com/JetBrains/web-types/master/schema/web-types.json",
|
|
3
3
|
"name": "@sapudex/web-components",
|
|
4
|
-
"version": "2.
|
|
4
|
+
"version": "2.41.0",
|
|
5
5
|
"description-markup": "markdown",
|
|
6
6
|
"contributions": {
|
|
7
7
|
"html": {
|
|
@@ -896,7 +896,7 @@
|
|
|
896
896
|
},
|
|
897
897
|
{
|
|
898
898
|
"name": "udex-country-selector",
|
|
899
|
-
"description": "<h3 class=\"comment-api-title\">Overview</h3>\n\n\n<h3>Usage</h3>\n\nFor the <code>udex-country-selector</code>\n<h3>ES6 Module Import</h3>\n\n<code>import \"@sapudex/web-components/dist/CountrySelector.js\";</code>\n---\n\n\n### **Events:**\n - **change-search** - Fired event when the user submitted the value in the search.\n- **first-icon-click** - Fired event when the user clicks on the first icon.\n- **reset-search** - Fired event when the user clicks on the reset button in the search.\n- **second-icon-click** - Fired event when the user clicks on the second icon.\n- **select-all** - Fired event when the user clicks on the Select All header.\n- **selection-change** - \n- **submit-search** - Fired event when the user clicks on the submitted icon in the search.\n\n### **Methods:**\n - **resetSearch()** - Reset the search value.\n\n### **Slots:**\n - **default** - Slot for items.",
|
|
899
|
+
"description": "<h3 class=\"comment-api-title\">Overview</h3>\n\n\n<h3>Usage</h3>\n\nFor the <code>udex-country-selector</code>\n<h3>ES6 Module Import</h3>\n\n<code>import \"@sapudex/web-components/dist/CountrySelector.js\";</code>\n---\n\n\n### **Events:**\n - **change-search** - Fired event when the user submitted the value in the search.\n- **first-icon-click** - Fired event when the user clicks on the first icon.\n- **reset-search** - Fired event when the user clicks on the reset button in the search.\n- **second-icon-click** - Fired event when the user clicks on the second icon.\n- **select-all** - Fired event when the user clicks on the Select All header.\n- **selection-change** - \n- **submit-search** - Fired event when the user clicks on the submitted icon in the search.\n\n### **Methods:**\n - **resetSearch()** - Reset the search value.\n\n### **Slots:**\n - **default** - Slot for items.\n- **footer** - Defines the footer content for the component dropdown.\nPlace any content (e.g. an action button) here. Clicking footer content does not close the dropdown —\nuse the <code>close</code> method if needed.",
|
|
900
900
|
"doc-url": "",
|
|
901
901
|
"attributes": [
|
|
902
902
|
{
|
|
@@ -971,14 +971,15 @@
|
|
|
971
971
|
"name": "show-search-input",
|
|
972
972
|
"description": "Defines if the search input is visible.",
|
|
973
973
|
"value": { "type": "boolean", "default": "false" }
|
|
974
|
-
}
|
|
974
|
+
}
|
|
975
|
+
],
|
|
976
|
+
"slots": [
|
|
977
|
+
{ "name": "default", "description": "Slot for items." },
|
|
975
978
|
{
|
|
976
|
-
"name": "
|
|
977
|
-
"description": "
|
|
978
|
-
"value": { "type": "boolean | undefined", "default": "\"\"" }
|
|
979
|
+
"name": "footer",
|
|
980
|
+
"description": "Defines the footer content for the component dropdown.\nPlace any content (e.g. an action button) here. Clicking footer content does not close the dropdown —\nuse the <code>close</code> method if needed."
|
|
979
981
|
}
|
|
980
982
|
],
|
|
981
|
-
"slots": [{ "name": "default", "description": "Slot for items." }],
|
|
982
983
|
"events": [
|
|
983
984
|
{
|
|
984
985
|
"name": "change-search",
|
|
@@ -1079,11 +1080,6 @@
|
|
|
1079
1080
|
"name": "show-search-input",
|
|
1080
1081
|
"description": "Defines if the search input is visible.",
|
|
1081
1082
|
"value": { "type": "boolean" }
|
|
1082
|
-
},
|
|
1083
|
-
{
|
|
1084
|
-
"name": "tab-navigation-enabled",
|
|
1085
|
-
"description": "Enables tab navigation for the list.",
|
|
1086
|
-
"value": { "type": "boolean | undefined" }
|
|
1087
1083
|
}
|
|
1088
1084
|
],
|
|
1089
1085
|
"events": [
|
|
@@ -1783,11 +1779,6 @@
|
|
|
1783
1779
|
"description": "Defines if the search input is visible.",
|
|
1784
1780
|
"value": { "type": "boolean", "default": "false" }
|
|
1785
1781
|
},
|
|
1786
|
-
{
|
|
1787
|
-
"name": "tab-navigation-enabled",
|
|
1788
|
-
"description": "Enables tab navigation for the list.",
|
|
1789
|
-
"value": { "type": "boolean | undefined", "default": "\"\"" }
|
|
1790
|
-
},
|
|
1791
1782
|
{
|
|
1792
1783
|
"name": "trigger-accessible-role",
|
|
1793
1784
|
"description": "Allows setting a custom role for dropdown trigger.",
|
|
@@ -1979,11 +1970,6 @@
|
|
|
1979
1970
|
"description": "Defines if the search input is visible.",
|
|
1980
1971
|
"value": { "type": "boolean" }
|
|
1981
1972
|
},
|
|
1982
|
-
{
|
|
1983
|
-
"name": "tab-navigation-enabled",
|
|
1984
|
-
"description": "Enables tab navigation for the list.",
|
|
1985
|
-
"value": { "type": "boolean | undefined" }
|
|
1986
|
-
},
|
|
1987
1973
|
{
|
|
1988
1974
|
"name": "trigger-accessible-role",
|
|
1989
1975
|
"description": "Allows setting a custom role for dropdown trigger.",
|
|
@@ -3743,11 +3729,6 @@
|
|
|
3743
3729
|
"default": "\"SingleSelect\""
|
|
3744
3730
|
}
|
|
3745
3731
|
},
|
|
3746
|
-
{
|
|
3747
|
-
"name": "tab-navigation-enabled",
|
|
3748
|
-
"description": "Enables tab navigation for the list.",
|
|
3749
|
-
"value": { "type": "boolean | undefined", "default": "\"\"" }
|
|
3750
|
-
},
|
|
3751
3732
|
{
|
|
3752
3733
|
"name": "type",
|
|
3753
3734
|
"description": "Defines the type of the item.",
|
|
@@ -3805,11 +3786,6 @@
|
|
|
3805
3786
|
"type": "\"SingleSelect\" | \"MultiSelect\" | \"SingleContent\" | \"RadioGroup\""
|
|
3806
3787
|
}
|
|
3807
3788
|
},
|
|
3808
|
-
{
|
|
3809
|
-
"name": "tab-navigation-enabled",
|
|
3810
|
-
"description": "Enables tab navigation for the list.",
|
|
3811
|
-
"value": { "type": "boolean | undefined" }
|
|
3812
|
-
},
|
|
3813
3789
|
{
|
|
3814
3790
|
"name": "type",
|
|
3815
3791
|
"description": "Defines the type of the item.",
|
|
@@ -4677,6 +4653,11 @@
|
|
|
4677
4653
|
"description": "Defines title of the countries menu",
|
|
4678
4654
|
"value": { "type": "string", "default": "\"\"" }
|
|
4679
4655
|
},
|
|
4656
|
+
{
|
|
4657
|
+
"name": "hide-search",
|
|
4658
|
+
"description": "Hides the search field in the country list view.",
|
|
4659
|
+
"value": { "type": "boolean", "default": "false" }
|
|
4660
|
+
},
|
|
4680
4661
|
{
|
|
4681
4662
|
"name": "language-voice",
|
|
4682
4663
|
"description": "Defines the language voice of the search",
|
|
@@ -4734,6 +4715,11 @@
|
|
|
4734
4715
|
"description": "Defines title of the countries menu",
|
|
4735
4716
|
"value": { "type": "string" }
|
|
4736
4717
|
},
|
|
4718
|
+
{
|
|
4719
|
+
"name": "hide-search",
|
|
4720
|
+
"description": "Hides the search field in the country list view.",
|
|
4721
|
+
"value": { "type": "boolean" }
|
|
4722
|
+
},
|
|
4737
4723
|
{
|
|
4738
4724
|
"name": "language-voice",
|
|
4739
4725
|
"description": "Defines the language voice of the search",
|
|
@@ -6210,6 +6196,11 @@
|
|
|
6210
6196
|
"description": "Defines the inner stored displayonly state.",
|
|
6211
6197
|
"value": { "type": "boolean", "default": "false" }
|
|
6212
6198
|
},
|
|
6199
|
+
{
|
|
6200
|
+
"name": "hide-button-tooltip",
|
|
6201
|
+
"description": "Defines the tooltip for the hide password button.",
|
|
6202
|
+
"value": { "type": "string", "default": "\"\"" }
|
|
6203
|
+
},
|
|
6213
6204
|
{
|
|
6214
6205
|
"name": "label",
|
|
6215
6206
|
"description": "Defines label text for the input field.",
|
|
@@ -6309,6 +6300,11 @@
|
|
|
6309
6300
|
"description": "Defines the inner stored displayonly state.",
|
|
6310
6301
|
"value": { "type": "boolean" }
|
|
6311
6302
|
},
|
|
6303
|
+
{
|
|
6304
|
+
"name": "hide-button-tooltip",
|
|
6305
|
+
"description": "Defines the tooltip for the hide password button.",
|
|
6306
|
+
"value": { "type": "string" }
|
|
6307
|
+
},
|
|
6312
6308
|
{
|
|
6313
6309
|
"name": "label",
|
|
6314
6310
|
"description": "Defines label text for the input field.",
|
|
@@ -7695,7 +7691,7 @@
|
|
|
7695
7691
|
},
|
|
7696
7692
|
{
|
|
7697
7693
|
"name": "udex-select-box",
|
|
7698
|
-
"description": "<h3 class=\"comment-api-title\">Overview</h3>\n\n\n<h3>Usage</h3>\n\nFor the <code>udex-select-box</code>\n<h3>ES6 Module Import</h3>\n\n<code>import \"@sapudex/web-components/dist/UDExSelectBox.js\";</code>\n---\n\n\n### **Events:**\n - **change-search** - Fired event when the user submitted the value in the search.\n- **first-icon-click** - Fired event when the user clicks on the first icon.\n- **remove** - Fired event when the user remove tag.\n- **reset-search** - Fired event when the user clicks on the reset button in the search.\n- **second-icon-click** - Fired event when the user clicks on the second icon.\n- **select-all** - Fired event when the user clicks on the Select All header.\n- **selection-change** - \n- **show-more** - Fired event when the user clicks on the More button.\n- **submit-search** - Fired event when the user clicks on the submitted icon in the search.\n\n### **Methods:**\n - **close(): _void_** - Close the dropdown.\n- **resetSearch()** - Reset the search value.\n\n### **Slots:**\n - **default** - Slot for items.",
|
|
7694
|
+
"description": "<h3 class=\"comment-api-title\">Overview</h3>\n\n\n<h3>Usage</h3>\n\nFor the <code>udex-select-box</code>\n<h3>ES6 Module Import</h3>\n\n<code>import \"@sapudex/web-components/dist/UDExSelectBox.js\";</code>\n---\n\n\n### **Events:**\n - **change-search** - Fired event when the user submitted the value in the search.\n- **first-icon-click** - Fired event when the user clicks on the first icon.\n- **remove** - Fired event when the user remove tag.\n- **reset-search** - Fired event when the user clicks on the reset button in the search.\n- **second-icon-click** - Fired event when the user clicks on the second icon.\n- **select-all** - Fired event when the user clicks on the Select All header.\n- **selection-change** - \n- **show-more** - Fired event when the user clicks on the More button.\n- **submit-search** - Fired event when the user clicks on the submitted icon in the search.\n\n### **Methods:**\n - **close(): _void_** - Close the dropdown.\n- **resetSearch()** - Reset the search value.\n\n### **Slots:**\n - **default** - Slot for items.\n- **footer** - Defines the footer content for the component dropdown.\nPlace any content (e.g. an action button) here. Clicking footer content does not close the dropdown —\nuse the <code>close</code> method if needed.",
|
|
7699
7695
|
"doc-url": "",
|
|
7700
7696
|
"attributes": [
|
|
7701
7697
|
{
|
|
@@ -7761,11 +7757,6 @@
|
|
|
7761
7757
|
"description": "Defines if the search input is visible.",
|
|
7762
7758
|
"value": { "type": "boolean", "default": "false" }
|
|
7763
7759
|
},
|
|
7764
|
-
{
|
|
7765
|
-
"name": "tab-navigation-enabled",
|
|
7766
|
-
"description": "Enables tab navigation for the list.",
|
|
7767
|
-
"value": { "type": "boolean | undefined", "default": "\"\"" }
|
|
7768
|
-
},
|
|
7769
7760
|
{
|
|
7770
7761
|
"name": "tooltip-placement",
|
|
7771
7762
|
"description": "Determines on which side of the component the Tooltip is displayed.",
|
|
@@ -7775,7 +7766,13 @@
|
|
|
7775
7766
|
}
|
|
7776
7767
|
}
|
|
7777
7768
|
],
|
|
7778
|
-
"slots": [
|
|
7769
|
+
"slots": [
|
|
7770
|
+
{ "name": "default", "description": "Slot for items." },
|
|
7771
|
+
{
|
|
7772
|
+
"name": "footer",
|
|
7773
|
+
"description": "Defines the footer content for the component dropdown.\nPlace any content (e.g. an action button) here. Clicking footer content does not close the dropdown —\nuse the <code>close</code> method if needed."
|
|
7774
|
+
}
|
|
7775
|
+
],
|
|
7779
7776
|
"events": [
|
|
7780
7777
|
{
|
|
7781
7778
|
"name": "change-search",
|
|
@@ -7875,11 +7872,6 @@
|
|
|
7875
7872
|
"description": "Defines if the search input is visible.",
|
|
7876
7873
|
"value": { "type": "boolean" }
|
|
7877
7874
|
},
|
|
7878
|
-
{
|
|
7879
|
-
"name": "tab-navigation-enabled",
|
|
7880
|
-
"description": "Enables tab navigation for the list.",
|
|
7881
|
-
"value": { "type": "boolean | undefined" }
|
|
7882
|
-
},
|
|
7883
7875
|
{
|
|
7884
7876
|
"name": "tooltip-placement",
|
|
7885
7877
|
"description": "Determines on which side of the component the Tooltip is displayed.",
|
package/package.json
CHANGED
package/src/Dropdown.ts
CHANGED
|
@@ -7,6 +7,8 @@ import property from "@ui5/webcomponents-base/dist/decorators/property.js";
|
|
|
7
7
|
import DropdownCss from "./generated/themes/Dropdown.css.js";
|
|
8
8
|
import getEffectiveScrollbarStyle from "./utils/getEffectiveScrollbarStyle.js";
|
|
9
9
|
|
|
10
|
+
type HTMLElementWithDisabled = HTMLElement & { disabled?: boolean };
|
|
11
|
+
|
|
10
12
|
/**
|
|
11
13
|
* @class
|
|
12
14
|
*
|
|
@@ -59,6 +61,66 @@ class UDExDropdown extends Popover {
|
|
|
59
61
|
content.style.maxHeight = this.height;
|
|
60
62
|
}
|
|
61
63
|
}
|
|
64
|
+
|
|
65
|
+
// Shift+Tab from first focusable element: close and return focus to opener
|
|
66
|
+
forwardToLast(): Promise<void> {
|
|
67
|
+
this.closePopup(false, false, true);
|
|
68
|
+
const openerEl = this.getOpenerHTMLElement(this.opener);
|
|
69
|
+
if (openerEl) {
|
|
70
|
+
openerEl.focus();
|
|
71
|
+
}
|
|
72
|
+
return Promise.resolve();
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
// Tab from last focusable element: close and move focus to next element after opener
|
|
76
|
+
forwardToFirst(): Promise<void> {
|
|
77
|
+
const openerHost = this._getOpenerHost();
|
|
78
|
+
this.closePopup(false, false, true);
|
|
79
|
+
if (openerHost) {
|
|
80
|
+
this._moveFocusAfter(openerHost);
|
|
81
|
+
}
|
|
82
|
+
return Promise.resolve();
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
private _getOpenerHost(): HTMLElement | null {
|
|
86
|
+
const opener = this.opener;
|
|
87
|
+
if (!opener) { return null; }
|
|
88
|
+
if (opener instanceof HTMLElement) { return opener; }
|
|
89
|
+
const root = this.getRootNode() as Document | ShadowRoot;
|
|
90
|
+
return (root as Document).getElementById?.(opener) ?? document.getElementById(opener);
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
private _moveFocusAfter(from: Element): void {
|
|
94
|
+
let node: Element | null = from;
|
|
95
|
+
while (node && node !== document.documentElement) {
|
|
96
|
+
let sibling = node.nextElementSibling;
|
|
97
|
+
while (sibling) {
|
|
98
|
+
const focusable = this._firstFocusableIn(sibling as HTMLElement);
|
|
99
|
+
if (focusable) {
|
|
100
|
+
focusable.focus();
|
|
101
|
+
return;
|
|
102
|
+
}
|
|
103
|
+
sibling = sibling.nextElementSibling;
|
|
104
|
+
}
|
|
105
|
+
node = node.parentElement;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
private _firstFocusableIn(el: HTMLElement): HTMLElement | null {
|
|
110
|
+
if (!el) { return null; }
|
|
111
|
+
if (
|
|
112
|
+
el.tabIndex >= 0
|
|
113
|
+
&& !el.hidden
|
|
114
|
+
&& !(el as HTMLElementWithDisabled).disabled
|
|
115
|
+
&& (!!el.offsetParent || el.matches("body"))
|
|
116
|
+
) {
|
|
117
|
+
return el;
|
|
118
|
+
}
|
|
119
|
+
return Array.from(el.children).reduce<HTMLElement | null>(
|
|
120
|
+
(found, child) => found ?? this._firstFocusableIn(child as HTMLElement),
|
|
121
|
+
null,
|
|
122
|
+
);
|
|
123
|
+
}
|
|
62
124
|
}
|
|
63
125
|
|
|
64
126
|
UDExDropdown.define();
|
package/src/List.ts
CHANGED
|
@@ -146,12 +146,7 @@ class UDExList extends UI5Element {
|
|
|
146
146
|
@property({ type: String })
|
|
147
147
|
itemIcon: string = "";
|
|
148
148
|
|
|
149
|
-
/**
|
|
150
|
-
* Enables tab navigation for the list.
|
|
151
|
-
*
|
|
152
|
-
* @default ""
|
|
153
|
-
* @public
|
|
154
|
-
*/
|
|
149
|
+
/** @deprecated Tab keyboard navigation is no longer allowed. */
|
|
155
150
|
@property({ type: Boolean })
|
|
156
151
|
tabNavigationEnabled?: boolean;
|
|
157
152
|
|
|
@@ -190,10 +185,6 @@ class UDExList extends UI5Element {
|
|
|
190
185
|
}
|
|
191
186
|
|
|
192
187
|
handleKeyDown(e: KeyboardEvent): void {
|
|
193
|
-
if (this.tabNavigationEnabled) {
|
|
194
|
-
return;
|
|
195
|
-
}
|
|
196
|
-
|
|
197
188
|
if (isRight(e)) {
|
|
198
189
|
this.handleArrowRight(e);
|
|
199
190
|
}
|
|
@@ -398,10 +389,8 @@ class UDExList extends UI5Element {
|
|
|
398
389
|
clickedItem.selected = true;
|
|
399
390
|
}
|
|
400
391
|
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
clickedItem._tabIndex = "0";
|
|
404
|
-
}
|
|
392
|
+
this.resetTabIndexes();
|
|
393
|
+
clickedItem._tabIndex = "0";
|
|
405
394
|
|
|
406
395
|
this.fireDecoratorEvent("selection-change", {
|
|
407
396
|
listItems: this.getItemsFromList(),
|
|
@@ -487,10 +476,6 @@ class UDExList extends UI5Element {
|
|
|
487
476
|
}
|
|
488
477
|
|
|
489
478
|
getTabIndex(index: number, item: UDExListItemBase): string {
|
|
490
|
-
if (this.tabNavigationEnabled) {
|
|
491
|
-
return "0";
|
|
492
|
-
}
|
|
493
|
-
|
|
494
479
|
const isFirstItem = this.modeSelected && index === 0;
|
|
495
480
|
const isFirstItemInGroupList = this.isGroupList && index === 1;
|
|
496
481
|
const listGroupHeader = item.closest("[udex-list-group-header]") as UDExListGroupHeader;
|
|
@@ -14,6 +14,7 @@
|
|
|
14
14
|
icon-start>
|
|
15
15
|
</udex-masthead-menu-item>
|
|
16
16
|
{{/unless}}
|
|
17
|
+
{{#unless hideSearch}}
|
|
17
18
|
<udex-search
|
|
18
19
|
class="udex-masthead-country-selector__search"
|
|
19
20
|
@ui5-handle-value-search="{{handleSearch}}"
|
|
@@ -27,6 +28,7 @@
|
|
|
27
28
|
show-submit-button>
|
|
28
29
|
</udex-search>
|
|
29
30
|
<span aria-live="polite" aria-atomic="true" class="hidden">{{_accSearchResultInfo}}</span>
|
|
31
|
+
{{/unless}}
|
|
30
32
|
<div class="udex-masthead-country-selector__list-container">
|
|
31
33
|
<div class="udex-masthead-country-selector__list-wrap" @scroll={{this.handleCountryListShadowVisible}}>
|
|
32
34
|
<ul class="udex-masthead-country-selector__list udex-masthead-country-selector__list_countries" role="menu">
|
|
@@ -192,6 +192,15 @@ class UDExMastheadCountrySelector extends UI5Element {
|
|
|
192
192
|
@property({ type: Boolean })
|
|
193
193
|
showSearchVoiceButton!: boolean;
|
|
194
194
|
|
|
195
|
+
/**
|
|
196
|
+
* Hides the search field in the country list view.
|
|
197
|
+
*
|
|
198
|
+
* @default false
|
|
199
|
+
* @public
|
|
200
|
+
*/
|
|
201
|
+
@property({ type: Boolean })
|
|
202
|
+
hideSearch!: boolean;
|
|
203
|
+
|
|
195
204
|
/**
|
|
196
205
|
* Defines the language voice of the search
|
|
197
206
|
*
|
package/src/PasswordField.ts
CHANGED
|
@@ -8,6 +8,8 @@ import type I18nBundle from "@ui5/webcomponents-base/dist/i18nBundle.js";
|
|
|
8
8
|
import UDExTextField from "./TextField.js";
|
|
9
9
|
import UDExValueState from "./types/common.js";
|
|
10
10
|
import PasswordFieldTemplate from "./PasswordFieldTemplate.js";
|
|
11
|
+
import { SHOW_PASSWORD, HIDE_PASSWORD } from "./generated/i18n/i18n-defaults.js";
|
|
12
|
+
import translate from "./utils/translate.js";
|
|
11
13
|
|
|
12
14
|
export enum UDExInputType {
|
|
13
15
|
Password = "Password",
|
|
@@ -233,6 +235,16 @@ class UDExPasswordField extends UI5Element {
|
|
|
233
235
|
@property({ type: String })
|
|
234
236
|
showButtonTooltip!: string;
|
|
235
237
|
|
|
238
|
+
/**
|
|
239
|
+
* Defines the tooltip for the hide password button.
|
|
240
|
+
*
|
|
241
|
+
* @default ""
|
|
242
|
+
* @public
|
|
243
|
+
*/
|
|
244
|
+
|
|
245
|
+
@property({ type: String })
|
|
246
|
+
hideButtonTooltip!: string;
|
|
247
|
+
|
|
236
248
|
/**
|
|
237
249
|
* Defines the inner stored readonly state.
|
|
238
250
|
*
|
|
@@ -309,6 +321,18 @@ class UDExPasswordField extends UI5Element {
|
|
|
309
321
|
get iconButton(): string | undefined {
|
|
310
322
|
return this.renderShowButton ? this.icon : undefined;
|
|
311
323
|
}
|
|
324
|
+
|
|
325
|
+
get activeButtonTooltip(): string {
|
|
326
|
+
return this.passwordVisible ? this.hideButtonTooltipText : this.showButtonTooltipText;
|
|
327
|
+
}
|
|
328
|
+
|
|
329
|
+
get hideButtonTooltipText(): string {
|
|
330
|
+
return this.hideButtonTooltip || translate(UDExPasswordField, HIDE_PASSWORD);
|
|
331
|
+
}
|
|
332
|
+
|
|
333
|
+
get showButtonTooltipText(): string {
|
|
334
|
+
return this.showButtonTooltip || translate(UDExPasswordField, SHOW_PASSWORD);
|
|
335
|
+
}
|
|
312
336
|
}
|
|
313
337
|
|
|
314
338
|
UDExPasswordField.define();
|
|
@@ -19,8 +19,8 @@ export default function PasswordFieldTemplate(this: UDExPasswordField) {
|
|
|
19
19
|
supporting-text={this.supportingText}
|
|
20
20
|
accessible-name={this.accessibleName}
|
|
21
21
|
accessible-name-ref={this.accessibleNameRef}
|
|
22
|
-
accessible-icon-name={this.
|
|
23
|
-
|
|
22
|
+
accessible-icon-name={this.activeButtonTooltip}
|
|
23
|
+
button-tooltip={this.activeButtonTooltip}
|
|
24
24
|
onui5-input={this.handleInput}
|
|
25
25
|
onui5-change={this.handleChange}
|
|
26
26
|
onui5-blur={this.handleBlur}
|
package/src/Search.ts
CHANGED
|
@@ -1005,7 +1005,7 @@ class UDExSearch extends UI5Element {
|
|
|
1005
1005
|
e.stopPropagation();
|
|
1006
1006
|
this.handleEnterKey(e);
|
|
1007
1007
|
this.handleTabKey(e);
|
|
1008
|
-
this.
|
|
1008
|
+
this.handleDownKey(e);
|
|
1009
1009
|
this.handleEscapeKey(e);
|
|
1010
1010
|
this.fireDecoratorEvent("search-keydown", { e });
|
|
1011
1011
|
};
|
|
@@ -1022,14 +1022,21 @@ class UDExSearch extends UI5Element {
|
|
|
1022
1022
|
}
|
|
1023
1023
|
|
|
1024
1024
|
handleTabKey(e: KeyboardEvent) {
|
|
1025
|
-
if (
|
|
1026
|
-
|
|
1025
|
+
if (!this.open || this.openSuggestionPopup) {
|
|
1026
|
+
return;
|
|
1027
|
+
}
|
|
1028
|
+
if (isTabNext(e) || isTabPrevious(e)) {
|
|
1029
|
+
this.onClosePopover();
|
|
1027
1030
|
}
|
|
1028
1031
|
}
|
|
1029
1032
|
|
|
1030
|
-
|
|
1031
|
-
if (
|
|
1032
|
-
|
|
1033
|
+
handleDownKey(e: KeyboardEvent) {
|
|
1034
|
+
if (isDown(e) && this.showSuggestedPopover) {
|
|
1035
|
+
e.preventDefault();
|
|
1036
|
+
if (!this.open) {
|
|
1037
|
+
this.onOpenPopover();
|
|
1038
|
+
}
|
|
1039
|
+
this.Suggestion?.onKeyDown(e);
|
|
1033
1040
|
}
|
|
1034
1041
|
}
|
|
1035
1042
|
|
|
@@ -1104,9 +1111,6 @@ class UDExSearch extends UI5Element {
|
|
|
1104
1111
|
}
|
|
1105
1112
|
|
|
1106
1113
|
handleKeyDownReset(e: KeyboardEvent) {
|
|
1107
|
-
if (isTabPrevious(e) && this.open) {
|
|
1108
|
-
this.Suggestion?.handlePrevTabReset(e);
|
|
1109
|
-
}
|
|
1110
1114
|
if (isEnter(e) || isSpace(e)) {
|
|
1111
1115
|
e.preventDefault();
|
|
1112
1116
|
e.stopPropagation();
|
package/src/SearchTemplate.tsx
CHANGED
|
@@ -232,7 +232,6 @@ function renderSearchSuggestionPopover(this: UDExSearch) {
|
|
|
232
232
|
style={this.popoverStyles}
|
|
233
233
|
id={this.getSuggestionsPopoverId}
|
|
234
234
|
aria-orientation="vertical"
|
|
235
|
-
accessible-role="Dialog"
|
|
236
235
|
onKeyDown={this.handleKeyPressSuggestionList}
|
|
237
236
|
accessible-name={this.suggestionsAccessibleName}
|
|
238
237
|
>
|
|
@@ -277,7 +276,6 @@ function renderSearchSuggestionPopoverResultsSuggestedList(this: UDExSearch) {
|
|
|
277
276
|
<div class="udex-search-suggestions__list"
|
|
278
277
|
role="listbox"
|
|
279
278
|
aria-labelledby="suggested-heading"
|
|
280
|
-
tabindex={0}
|
|
281
279
|
onKeyDown={this.handleKeyDownPopover}
|
|
282
280
|
>
|
|
283
281
|
{
|
|
@@ -317,7 +315,6 @@ function renderSearchSuggestionPopoverResultsRecommendedList(this: UDExSearch) {
|
|
|
317
315
|
<div class="udex-search-suggestions__list"
|
|
318
316
|
role="listbox"
|
|
319
317
|
aria-labelledby="recommended-heading"
|
|
320
|
-
tabindex={0}
|
|
321
318
|
onKeyDown={this.handleKeyDownPopover}
|
|
322
319
|
>
|
|
323
320
|
{
|
|
@@ -125,12 +125,7 @@ export type UDExSearchableListBaseEvents = {
|
|
|
125
125
|
|
|
126
126
|
class UDExSearchableListBase extends UI5Element {
|
|
127
127
|
eventDetails!: UDExSearchableListBaseEvents;
|
|
128
|
-
/**
|
|
129
|
-
* Enables tab navigation for the list.
|
|
130
|
-
*
|
|
131
|
-
* @default ""
|
|
132
|
-
* @public
|
|
133
|
-
*/
|
|
128
|
+
/** @deprecated Tab keyboard navigation is no longer allowed. */
|
|
134
129
|
@property({ type: Boolean })
|
|
135
130
|
tabNavigationEnabled?: boolean;
|
|
136
131
|
|
|
@@ -573,8 +568,12 @@ class UDExSearchableListBase extends UI5Element {
|
|
|
573
568
|
return item.getAttribute("data-token-id") as string;
|
|
574
569
|
}
|
|
575
570
|
|
|
571
|
+
get _validItems(): Array<UDExListItemBase | UDExListGroupHeaderBase> {
|
|
572
|
+
return this.items.filter(item => !(item instanceof HTMLElement) || "isGroup" in item);
|
|
573
|
+
}
|
|
574
|
+
|
|
576
575
|
getProcessedItems(): Array<UDExProcessedItem> {
|
|
577
|
-
return this.
|
|
576
|
+
return this._validItems.map(item => {
|
|
578
577
|
const isGroup = item.isGroup;
|
|
579
578
|
const groupItems = isGroup ? (item as UDExListGroupHeaderBase).getItems() : [];
|
|
580
579
|
|
|
@@ -632,7 +631,7 @@ class UDExSearchableListBase extends UI5Element {
|
|
|
632
631
|
}
|
|
633
632
|
|
|
634
633
|
get selectedItems(): Array<UDExListItemBase> {
|
|
635
|
-
const selectedItems: Array<UDExListItemBase> = this.getSlottedItems(this.
|
|
634
|
+
const selectedItems: Array<UDExListItemBase> = this.getSlottedItems(this._validItems).filter(({ selected }) => selected);
|
|
636
635
|
return selectedItems;
|
|
637
636
|
}
|
|
638
637
|
|
|
@@ -672,7 +671,7 @@ class UDExSearchableListBase extends UI5Element {
|
|
|
672
671
|
}
|
|
673
672
|
|
|
674
673
|
get nonGroupItems(): Array<UDExListItemBase> {
|
|
675
|
-
return this.getSlottedItems(this.
|
|
674
|
+
return this.getSlottedItems(this._validItems).filter(item => !item.isGroup);
|
|
676
675
|
}
|
|
677
676
|
|
|
678
677
|
get roleForGroupList(): string {
|
|
@@ -50,7 +50,6 @@ export default function SearchableListBaseTemplate(this: UDExSearchableListBase)
|
|
|
50
50
|
role={this.roleForGroupList as AriaRole}
|
|
51
51
|
accessible-role={this.accessibleRoleForList}
|
|
52
52
|
class="udex-filter-menu__list"
|
|
53
|
-
tab-navigation-enabled={this.tabNavigationEnabled}
|
|
54
53
|
controlled={this.isControlled}
|
|
55
54
|
mode={this.mode}>
|
|
56
55
|
{this._filteredItems.map((processedItem, index) => (
|