@sapudex/web-components 2.21.0 → 2.23.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundle.esm.js +2 -0
- package/cypress/specs/CountrySelector.cy.tsx +158 -144
- package/cypress/specs/EventRibbon.cy.tsx +3 -1
- package/cypress/specs/ImageGridCloud.cy.tsx +78 -0
- package/cypress/specs/ImageGridCloudItem.cy.tsx +29 -0
- package/cypress/specs/SelectBox.cy.tsx +173 -206
- package/cypress/specs/Tag.cy.tsx +1 -1
- package/cypress/specs/TextField.cy.tsx +15 -0
- package/cypress/specs/Textarea.cy.tsx +15 -33
- package/cypress/support/component-imports.instrumented.ts +4 -0
- package/cypress/support/component-imports.src.ts +4 -0
- package/dist/Accordion.js +1 -0
- package/dist/Accordion.js.map +1 -1
- package/dist/AccordionItem.js +2 -0
- package/dist/AccordionItem.js.map +1 -1
- package/dist/AssetsVariables.js +2 -1
- package/dist/AssetsVariables.js.map +1 -1
- package/dist/Breadcrumbs.js +5 -0
- package/dist/Breadcrumbs.js.map +1 -1
- package/dist/ContactItem.js +2 -0
- package/dist/ContactItem.js.map +1 -1
- package/dist/CountrySelector.d.ts +25 -142
- package/dist/CountrySelector.js +91 -267
- package/dist/CountrySelector.js.map +1 -1
- package/dist/DatePicker.js +2 -1
- package/dist/DatePicker.js.map +1 -1
- package/dist/FilterMenu.d.ts +14 -2
- package/dist/FilterMenu.js +13 -1
- package/dist/FilterMenu.js.map +1 -1
- package/dist/Footer.js +27 -0
- package/dist/Footer.js.map +1 -1
- package/dist/ImageGridCloud.d.ts +76 -0
- package/dist/ImageGridCloud.js +153 -0
- package/dist/ImageGridCloud.js.map +1 -0
- package/dist/ImageGridCloudItem.d.ts +35 -0
- package/dist/ImageGridCloudItem.js +49 -0
- package/dist/ImageGridCloudItem.js.map +1 -0
- package/dist/ImageGridCloudItemTemplate.d.ts +2 -0
- package/dist/ImageGridCloudItemTemplate.js +5 -0
- package/dist/ImageGridCloudItemTemplate.js.map +1 -0
- package/dist/ImageGridCloudTemplate.d.ts +2 -0
- package/dist/ImageGridCloudTemplate.js +6 -0
- package/dist/ImageGridCloudTemplate.js.map +1 -0
- package/dist/ImageGridTicker.d.ts +2 -2
- package/dist/ImageGridTicker.js +1 -8
- package/dist/ImageGridTicker.js.map +1 -1
- package/dist/LinkListItem.js +1 -0
- package/dist/LinkListItem.js.map +1 -1
- package/dist/List.js +5 -3
- package/dist/List.js.map +1 -1
- package/dist/ListGroupHeader.js +1 -0
- package/dist/ListGroupHeader.js.map +1 -1
- package/dist/ListGroupHeaderBase.d.ts +1 -0
- package/dist/ListGroupHeaderBase.js +3 -0
- package/dist/ListGroupHeaderBase.js.map +1 -1
- package/dist/ListItem.js +2 -0
- package/dist/ListItem.js.map +1 -1
- package/dist/ListItemBase.d.ts +12 -0
- package/dist/ListItemBase.js +21 -2
- package/dist/ListItemBase.js.map +1 -1
- package/dist/ListSelectAll.js +1 -0
- package/dist/ListSelectAll.js.map +1 -1
- package/dist/MastheadCountrySelector.js +15 -0
- package/dist/MastheadCountrySelector.js.map +1 -1
- package/dist/MastheadItem.js +10 -0
- package/dist/MastheadItem.js.map +1 -1
- package/dist/MastheadMenu.js +6 -0
- package/dist/MastheadMenu.js.map +1 -1
- package/dist/MastheadMobileMenu.js +11 -0
- package/dist/MastheadMobileMenu.js.map +1 -1
- package/dist/MastheadProfileMenu.js +11 -0
- package/dist/MastheadProfileMenu.js.map +1 -1
- package/dist/MastheadShell.js +41 -0
- package/dist/MastheadShell.js.map +1 -1
- package/dist/MediaPlayer.js +3 -0
- package/dist/MediaPlayer.js.map +1 -1
- package/dist/MediaPlayerTemplate.js +4 -4
- package/dist/MediaPlayerTemplate.js.map +1 -1
- package/dist/MediaPlayerVimeo.d.ts +3 -3
- package/dist/MediaPlayerVimeo.js +1 -0
- package/dist/MediaPlayerVimeo.js.map +1 -1
- package/dist/MediaPlayerYoutube.js +3 -0
- package/dist/MediaPlayerYoutube.js.map +1 -1
- package/dist/Pagination.js +1 -1
- package/dist/Pagination.js.map +1 -1
- package/dist/Search.d.ts +2 -1
- package/dist/Search.js +18 -3
- package/dist/Search.js.map +1 -1
- package/dist/SearchTemplate.d.ts +2 -0
- package/dist/SearchTemplate.js +48 -0
- package/dist/SearchTemplate.js.map +1 -0
- package/dist/SearchableListBase.d.ts +26 -16
- package/dist/SearchableListBase.js +58 -72
- package/dist/SearchableListBase.js.map +1 -1
- package/dist/SecondaryNavigation.js +19 -0
- package/dist/SecondaryNavigation.js.map +1 -1
- package/dist/SecondaryNavigationItem.js +6 -0
- package/dist/SecondaryNavigationItem.js.map +1 -1
- package/dist/SecondaryNavigationSubItem.js +3 -0
- package/dist/SecondaryNavigationSubItem.js.map +1 -1
- package/dist/SelectBase.d.ts +193 -0
- package/dist/SelectBase.js +428 -0
- package/dist/SelectBase.js.map +1 -0
- package/dist/SelectBox.d.ts +30 -152
- package/dist/SelectBox.js +140 -348
- package/dist/SelectBox.js.map +1 -1
- package/dist/SocialMediaButton.js +2 -0
- package/dist/SocialMediaButton.js.map +1 -1
- package/dist/StepInput.js +2 -0
- package/dist/StepInput.js.map +1 -1
- package/dist/TabNavigation.js +3 -0
- package/dist/TabNavigation.js.map +1 -1
- package/dist/Tag.js +1 -0
- package/dist/Tag.js.map +1 -1
- package/dist/TagGroup.d.ts +23 -5
- package/dist/TagGroup.js +40 -16
- package/dist/TagGroup.js.map +1 -1
- package/dist/TagTemplate.js +4 -2
- package/dist/TagTemplate.js.map +1 -1
- package/dist/TextArea.d.ts +1 -1
- package/dist/TextArea.js +5 -5
- package/dist/TextArea.js.map +1 -1
- package/dist/TextAreaTemplate.d.ts +2 -0
- package/dist/TextAreaTemplate.js +13 -0
- package/dist/TextAreaTemplate.js.map +1 -0
- package/dist/TextField.d.ts +29 -4
- package/dist/TextField.js +33 -16
- package/dist/TextField.js.map +1 -1
- package/dist/TextFieldTemplate.d.ts +2 -0
- package/dist/TextFieldTemplate.js +14 -0
- package/dist/TextFieldTemplate.js.map +1 -0
- package/dist/Tile.js +1 -0
- package/dist/Tile.js.map +1 -1
- package/dist/Upload.js +5 -0
- package/dist/Upload.js.map +1 -1
- package/dist/assets/{InputSuggestions-B0P5JAFd.js → InputSuggestions-C8m6N2-d.js} +1 -1
- package/dist/assets/{ListItemStandardExpandableTextTemplate-CFj3_UAT.js → ListItemStandardExpandableTextTemplate-BwD5bYhw.js} +1 -1
- package/dist/assets/{bundle.esm-BaPBMfCT.js → bundle.esm-hGsUwmUy.js} +222 -218
- package/dist/css/themes/CountrySelector.css +1 -1
- package/dist/css/themes/EventRibbon.css +1 -1
- package/dist/css/themes/ImageGridCloud.css +1 -0
- package/dist/css/themes/ImageGridCloudItem.css +1 -0
- package/dist/css/themes/ListItem.css +1 -1
- package/dist/css/themes/MastheadItem.css +1 -1
- package/dist/css/themes/MastheadMobileMenu.css +1 -1
- package/dist/css/themes/Pagination.css +1 -1
- package/dist/css/themes/RatingIndicator.css +1 -1
- package/dist/css/themes/Search.css +1 -1
- package/dist/css/themes/SelectBase.css +1 -0
- package/dist/css/themes/SelectBox.css +1 -1
- package/dist/css/themes/Slider.css +1 -1
- package/dist/css/themes/TagGroup.css +1 -1
- package/dist/css/themes/TextField.css +1 -1
- package/dist/custom-elements-internal.json +4627 -1311
- package/dist/custom-elements.json +1260 -1249
- package/dist/generated/templates/CountrySelectorTemplate.lit.js +3 -3
- package/dist/generated/templates/CountrySelectorTemplate.lit.js.map +1 -1
- package/dist/generated/templates/ListItemTemplate.lit.js +1 -1
- package/dist/generated/templates/ListItemTemplate.lit.js.map +1 -1
- package/dist/generated/templates/SelectBoxTemplate.lit.js +10 -9
- package/dist/generated/templates/SelectBoxTemplate.lit.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/ImageGridCloud.css.d.ts +2 -0
- package/dist/generated/themes/ImageGridCloud.css.js +8 -0
- package/dist/generated/themes/ImageGridCloud.css.js.map +1 -0
- package/dist/generated/themes/ImageGridCloudItem.css.d.ts +2 -0
- package/dist/generated/themes/ImageGridCloudItem.css.js +8 -0
- package/dist/generated/themes/ImageGridCloudItem.css.js.map +1 -0
- package/dist/generated/themes/ListItem.css.d.ts +1 -1
- package/dist/generated/themes/ListItem.css.js +1 -1
- package/dist/generated/themes/ListItem.css.js.map +1 -1
- package/dist/generated/themes/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/MastheadMobileMenu.css.d.ts +1 -1
- package/dist/generated/themes/MastheadMobileMenu.css.js +1 -1
- package/dist/generated/themes/MastheadMobileMenu.css.js.map +1 -1
- package/dist/generated/themes/Pagination.css.d.ts +1 -1
- package/dist/generated/themes/Pagination.css.js +1 -1
- package/dist/generated/themes/Pagination.css.js.map +1 -1
- package/dist/generated/themes/RatingIndicator.css.d.ts +1 -1
- package/dist/generated/themes/RatingIndicator.css.js +1 -1
- package/dist/generated/themes/RatingIndicator.css.js.map +1 -1
- package/dist/generated/themes/Search.css.d.ts +1 -1
- package/dist/generated/themes/Search.css.js +1 -1
- package/dist/generated/themes/Search.css.js.map +1 -1
- package/dist/generated/themes/SelectBase.css.d.ts +2 -0
- package/dist/generated/themes/SelectBase.css.js +8 -0
- package/dist/generated/themes/SelectBase.css.js.map +1 -0
- 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/Slider.css.d.ts +1 -1
- package/dist/generated/themes/Slider.css.js +1 -1
- package/dist/generated/themes/Slider.css.js.map +1 -1
- package/dist/generated/themes/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/TextField.css.d.ts +1 -1
- package/dist/generated/themes/TextField.css.js +1 -1
- package/dist/generated/themes/TextField.css.js.map +1 -1
- package/dist/types/common.d.ts +1 -1
- package/dist/types/common.js +1 -1
- package/dist/types/common.js.map +1 -1
- package/dist/vscode.html-custom-data.json +49 -235
- package/dist/web-types.json +347 -832
- package/package.json +1 -1
- package/src/Accordion.ts +1 -0
- package/src/AccordionItem.ts +2 -0
- package/src/AssetsVariables.ts +2 -1
- package/src/Breadcrumbs.ts +5 -0
- package/src/ContactItem.ts +2 -0
- package/src/CountrySelector.hbs +6 -61
- package/src/CountrySelector.ts +93 -374
- package/src/DatePicker.ts +2 -1
- package/src/FilterMenu.ts +15 -3
- package/src/Footer.ts +27 -0
- package/src/ImageGridCloud.ts +188 -0
- package/src/ImageGridCloudItem.ts +57 -0
- package/src/ImageGridCloudItemTemplate.tsx +11 -0
- package/src/ImageGridCloudTemplate.tsx +16 -0
- package/src/ImageGridTicker.ts +3 -3
- package/src/LinkListItem.ts +1 -0
- package/src/List.ts +5 -3
- package/src/ListGroupHeader.ts +1 -0
- package/src/ListGroupHeaderBase.ts +4 -0
- package/src/ListItem.hbs +0 -1
- package/src/ListItem.ts +2 -0
- package/src/ListItemBase.ts +21 -3
- package/src/ListSelectAll.ts +1 -0
- package/src/MastheadCountrySelector.ts +15 -0
- package/src/MastheadItem.ts +10 -0
- package/src/MastheadMenu.ts +6 -0
- package/src/MastheadMobileMenu.ts +11 -0
- package/src/MastheadProfileMenu.ts +11 -0
- package/src/MastheadShell.ts +41 -0
- package/src/MediaPlayer.ts +3 -0
- package/src/MediaPlayerTemplate.tsx +0 -1
- package/src/MediaPlayerVimeo.ts +4 -3
- package/src/MediaPlayerYoutube.ts +3 -0
- package/src/Pagination.ts +1 -1
- package/src/Search.ts +20 -4
- package/src/SearchTemplate.tsx +353 -0
- package/src/SearchableListBase.ts +78 -83
- package/src/SecondaryNavigation.ts +19 -0
- package/src/SecondaryNavigationItem.ts +6 -0
- package/src/SecondaryNavigationSubItem.ts +3 -0
- package/src/SelectBase.ts +580 -0
- package/src/SelectBox.hbs +118 -107
- package/src/SelectBox.ts +156 -445
- package/src/SocialMediaButton.ts +2 -0
- package/src/StepInput.ts +2 -0
- package/src/TabNavigation.ts +3 -0
- package/src/Tag.ts +1 -0
- package/src/TagGroup.ts +56 -19
- package/src/TagTemplate.tsx +4 -2
- package/src/TextArea.ts +5 -5
- package/src/TextAreaTemplate.tsx +67 -0
- package/src/TextField.ts +58 -24
- package/src/TextFieldTemplate.tsx +90 -0
- package/src/Tile.ts +1 -0
- package/src/Upload.ts +5 -0
- package/src/generated/templates/CountrySelectorTemplate.lit.ts +2 -2
- package/src/generated/templates/ListItemTemplate.lit.ts +1 -1
- package/src/generated/templates/SelectBoxTemplate.lit.ts +10 -9
- package/src/generated/themes/CountrySelector.css.ts +1 -1
- package/src/generated/themes/EventRibbon.css.ts +1 -1
- package/src/generated/themes/ImageGridCloud.css.ts +9 -0
- package/src/generated/themes/ImageGridCloudItem.css.ts +9 -0
- package/src/generated/themes/ListItem.css.ts +1 -1
- package/src/generated/themes/MastheadItem.css.ts +1 -1
- package/src/generated/themes/MastheadMobileMenu.css.ts +1 -1
- package/src/generated/themes/Pagination.css.ts +1 -1
- package/src/generated/themes/RatingIndicator.css.ts +1 -1
- package/src/generated/themes/Search.css.ts +1 -1
- package/src/generated/themes/SelectBase.css.ts +9 -0
- package/src/generated/themes/SelectBox.css.ts +1 -1
- package/src/generated/themes/Slider.css.ts +1 -1
- package/src/generated/themes/TagGroup.css.ts +1 -1
- package/src/generated/themes/TextField.css.ts +1 -1
- package/src/themes/CountrySelector.css +42 -115
- package/src/themes/EventRibbon.css +21 -13
- package/src/themes/ImageGridCloud.css +55 -0
- package/src/themes/ImageGridCloudItem.css +10 -0
- package/src/themes/ListItem.css +6 -0
- package/src/themes/MastheadItem.css +0 -2
- package/src/themes/MastheadMobileMenu.css +2 -0
- package/src/themes/Pagination.css +1 -1
- package/src/themes/Search.css +0 -1
- package/src/themes/SelectBase.css +239 -0
- package/src/themes/SelectBox.css +13 -195
- package/src/themes/TagGroup.css +0 -1
- package/src/themes/TextField.css +7 -7
- package/src/types/common.ts +1 -1
- package/dist/generated/templates/SearchSuggestionsTemplate.lit.d.ts +0 -3
- package/dist/generated/templates/SearchSuggestionsTemplate.lit.js +0 -17
- package/dist/generated/templates/SearchSuggestionsTemplate.lit.js.map +0 -1
- package/dist/generated/templates/SearchTemplate.lit.d.ts +0 -3
- package/dist/generated/templates/SearchTemplate.lit.js +0 -28
- package/dist/generated/templates/SearchTemplate.lit.js.map +0 -1
- package/dist/generated/templates/TextAreaTemplate.lit.d.ts +0 -3
- package/dist/generated/templates/TextAreaTemplate.lit.js +0 -13
- package/dist/generated/templates/TextAreaTemplate.lit.js.map +0 -1
- package/dist/generated/templates/TextFieldTemplate.lit.d.ts +0 -3
- package/dist/generated/templates/TextFieldTemplate.lit.js +0 -14
- package/dist/generated/templates/TextFieldTemplate.lit.js.map +0 -1
- package/src/Search.hbs +0 -155
- package/src/SearchSuggestions.hbs +0 -91
- package/src/TextArea.hbs +0 -54
- package/src/TextField.hbs +0 -78
- package/src/generated/templates/SearchSuggestionsTemplate.lit.ts +0 -21
- package/src/generated/templates/SearchTemplate.lit.ts +0 -32
- package/src/generated/templates/TextAreaTemplate.lit.ts +0 -17
- package/src/generated/templates/TextFieldTemplate.lit.ts +0 -18
package/src/SelectBox.ts
CHANGED
|
@@ -1,18 +1,21 @@
|
|
|
1
1
|
import customElement from "@ui5/webcomponents-base/dist/decorators/customElement.js";
|
|
2
2
|
import litRender from "@ui5/webcomponents-base/dist/renderer/LitRenderer.js";
|
|
3
|
-
import property from "@ui5/webcomponents-base/dist/decorators/property.js";
|
|
4
3
|
import event from "@ui5/webcomponents-base/dist/decorators/event-strict.js";
|
|
5
|
-
import
|
|
4
|
+
import property from "@ui5/webcomponents-base/dist/decorators/property.js";
|
|
6
5
|
import {
|
|
7
|
-
isEnter, isSpace, isDelete, isTabPrevious, isTabNext, isLeft, isRight, isDown, isUp,
|
|
6
|
+
isEnter, isSpace, isDelete, isTabPrevious, isTabNext, isLeft, isRight, isDown, isUp, isBackSpace, isShift,
|
|
8
7
|
} from "@ui5/webcomponents-base/dist/Keys.js";
|
|
8
|
+
import ResizeHandler from "@ui5/webcomponents-base/dist/delegate/ResizeHandler.js";
|
|
9
|
+
import type { ResizeObserverCallback } from "@ui5/webcomponents-base/dist/delegate/ResizeHandler.js";
|
|
9
10
|
import type UI5Element from "@ui5/webcomponents-base/dist/UI5Element.js";
|
|
10
|
-
import
|
|
11
|
+
import type { UDExItemFromList } from "./SearchableListBase.js";
|
|
12
|
+
import { UDExPopoverPart } from "./types/SearchableListBase.js";
|
|
13
|
+
import { Placement } from "./types/Dropdown.js";
|
|
14
|
+
import "@ui5/webcomponents-icons/dist/navigation-down-arrow.js";
|
|
15
|
+
import "@ui5/webcomponents-icons/dist/decline.js";
|
|
11
16
|
import Icon from "@ui5/webcomponents/dist/Icon.js";
|
|
17
|
+
import Tokenizer from "@ui5/webcomponents/dist/Tokenizer.js";
|
|
12
18
|
import Token from "@ui5/webcomponents/dist/Token.js";
|
|
13
|
-
import type { ResizeObserverCallback } from "@ui5/webcomponents-base/dist/delegate/ResizeHandler.js";
|
|
14
|
-
import ResizeHandler from "@ui5/webcomponents-base/dist/delegate/ResizeHandler.js";
|
|
15
|
-
import { getAllAccessibleNameRefTexts } from "@ui5/webcomponents-base/dist/util/AccessibilityTextsHelper.js";
|
|
16
19
|
import Popover from "@ui5/webcomponents/dist/Popover.js";
|
|
17
20
|
import UDExList from "./List.js";
|
|
18
21
|
import UDExListItem from "./ListItem.js";
|
|
@@ -20,30 +23,20 @@ import UDExListGroupHeader from "./ListGroupHeader.js";
|
|
|
20
23
|
import UDExListSelectAll from "./ListSelectAll.js";
|
|
21
24
|
import UDExSelectBoxItem from "./SelectBoxItem.js";
|
|
22
25
|
import UDExSelectBoxGroupHeader from "./SelectBoxGroupHeader.js";
|
|
23
|
-
import type { UDExItemFromList, UDExSearchableListBaseEvents } from "./SearchableListBase.js";
|
|
24
|
-
import UDExSearchableListBase from "./SearchableListBase.js";
|
|
25
|
-
import type { UDExSearchKeydownEventDetail } from "./Search.js";
|
|
26
|
-
import UDExSearch from "./Search.js";
|
|
27
26
|
import UDExTag from "./Tag.js";
|
|
28
|
-
import UDExButton from "./Button.js";
|
|
29
|
-
import UDExValueState from "./types/common.js";
|
|
30
27
|
import UDExStatusMessage from "./StatusMessage.js";
|
|
31
|
-
import UDExControlButton from "./ControlButton.js";
|
|
32
28
|
import UDExBusyIndicator from "./BusyIndicator.js";
|
|
33
|
-
import { Placement } from "./types/Dropdown.js";
|
|
34
|
-
import { UDExPopoverPart } from "./types/SearchableListBase.js";
|
|
35
29
|
import UDExTagGroup from "./TagGroup.js";
|
|
36
|
-
import "
|
|
37
|
-
import "@ui5/webcomponents-icons/dist/navigation-down-arrow.js";
|
|
38
|
-
import { SELECT_OPTIONS } from "./generated/i18n/i18n-defaults.js";
|
|
30
|
+
import UDExSelectBase from "./SelectBase.js";
|
|
39
31
|
import SelectBoxTemplate from "./generated/templates/SelectBoxTemplate.lit.js";
|
|
40
|
-
import
|
|
32
|
+
import getEffectiveScrollbarStyle from "./utils/getEffectiveScrollbarStyle.js";
|
|
33
|
+
import type { UDExSelectBaseEvents } from "./SelectBase.js";
|
|
41
34
|
|
|
42
35
|
// Styles
|
|
43
|
-
import SelectBoxCss from "./generated/themes/SelectBox.css.js";
|
|
44
36
|
import TextFieldCss from "./generated/themes/TextField.css.js";
|
|
45
37
|
import SearchableListCss from "./generated/themes/SearchableList.css.js";
|
|
46
|
-
import
|
|
38
|
+
import SelectBoxCss from "./generated/themes/SelectBox.css.js";
|
|
39
|
+
import SelectBaseCss from "./generated/themes/SelectBase.css.js";
|
|
47
40
|
|
|
48
41
|
export type SelectBoxAccessibilityAttributes = {
|
|
49
42
|
controls?: string,
|
|
@@ -77,7 +70,13 @@ type UDExSelectBoxRemoveEventDetail = {
|
|
|
77
70
|
@customElement({
|
|
78
71
|
tag: "udex-select-box",
|
|
79
72
|
renderer: litRender,
|
|
80
|
-
styles: [
|
|
73
|
+
styles: [
|
|
74
|
+
TextFieldCss,
|
|
75
|
+
SelectBoxCss,
|
|
76
|
+
SelectBaseCss,
|
|
77
|
+
SearchableListCss,
|
|
78
|
+
getEffectiveScrollbarStyle(),
|
|
79
|
+
],
|
|
81
80
|
template: SelectBoxTemplate,
|
|
82
81
|
dependencies: [
|
|
83
82
|
UDExSelectBoxGroupHeader,
|
|
@@ -85,25 +84,23 @@ type UDExSelectBoxRemoveEventDetail = {
|
|
|
85
84
|
UDExListSelectAll,
|
|
86
85
|
UDExSelectBoxItem,
|
|
87
86
|
UDExStatusMessage,
|
|
88
|
-
UDExControlButton,
|
|
89
|
-
UDExTagGroup,
|
|
90
87
|
UDExBusyIndicator,
|
|
88
|
+
UDExTagGroup,
|
|
91
89
|
UDExListItem,
|
|
92
90
|
UDExList,
|
|
93
|
-
UDExSearch,
|
|
94
|
-
UDExButton,
|
|
95
91
|
UDExTag,
|
|
96
92
|
Tokenizer,
|
|
93
|
+
Popover,
|
|
97
94
|
Token,
|
|
98
95
|
Icon,
|
|
99
|
-
Popover,
|
|
100
96
|
],
|
|
101
97
|
})
|
|
102
98
|
|
|
103
99
|
/**
|
|
104
|
-
* Fired event when the user
|
|
100
|
+
* Fired event when the user remove tag.
|
|
105
101
|
*
|
|
106
102
|
* @public
|
|
103
|
+
* @param {UDExItemFromList} item The removed item
|
|
107
104
|
*/
|
|
108
105
|
@event("remove", { bubbles: true })
|
|
109
106
|
|
|
@@ -114,19 +111,12 @@ type UDExSelectBoxRemoveEventDetail = {
|
|
|
114
111
|
*/
|
|
115
112
|
@event("show-more", { bubbles: true })
|
|
116
113
|
|
|
117
|
-
|
|
118
|
-
* Fired before the dropdown pane is opened.
|
|
119
|
-
*
|
|
120
|
-
* @public
|
|
121
|
-
*/
|
|
122
|
-
@event("before-open", { bubbles: true })
|
|
123
|
-
|
|
124
|
-
class UDExSelectBox extends UDExSearchableListBase {
|
|
114
|
+
class UDExSelectBox extends UDExSelectBase {
|
|
125
115
|
eventDetails!: {
|
|
126
116
|
"remove": UDExSelectBoxRemoveEventDetail,
|
|
127
117
|
"show-more": void,
|
|
128
|
-
|
|
129
|
-
|
|
118
|
+
} & UDExSelectBaseEvents;
|
|
119
|
+
|
|
130
120
|
/**
|
|
131
121
|
* Determines if there is no enough space, the component can be placed
|
|
132
122
|
* over the target.
|
|
@@ -137,86 +127,6 @@ class UDExSelectBox extends UDExSearchableListBase {
|
|
|
137
127
|
@property({ type: Boolean })
|
|
138
128
|
disableTargetOverlap?: boolean;
|
|
139
129
|
|
|
140
|
-
/**
|
|
141
|
-
* Defines whether the component is required.
|
|
142
|
-
*
|
|
143
|
-
* @default false
|
|
144
|
-
* @public
|
|
145
|
-
*/
|
|
146
|
-
@property({ type: Boolean })
|
|
147
|
-
required!: boolean;
|
|
148
|
-
|
|
149
|
-
/**
|
|
150
|
-
* Defines whether the component is in disabled state.
|
|
151
|
-
*
|
|
152
|
-
* @default false
|
|
153
|
-
* @public
|
|
154
|
-
*/
|
|
155
|
-
@property({ type: Boolean })
|
|
156
|
-
disabled!: boolean;
|
|
157
|
-
|
|
158
|
-
/**
|
|
159
|
-
* Defines label text for field container.
|
|
160
|
-
*
|
|
161
|
-
* @default ""
|
|
162
|
-
* @public
|
|
163
|
-
*/
|
|
164
|
-
@property({ type: String })
|
|
165
|
-
label!: string;
|
|
166
|
-
|
|
167
|
-
/**
|
|
168
|
-
* Defines the accessible ARIA name of the component.
|
|
169
|
-
*
|
|
170
|
-
* @default undefined
|
|
171
|
-
* @public
|
|
172
|
-
*/
|
|
173
|
-
@property()
|
|
174
|
-
accessibleName?: string;
|
|
175
|
-
|
|
176
|
-
/**
|
|
177
|
-
* Receives id (or many ids) of the elements that label the component.
|
|
178
|
-
* @default undefined
|
|
179
|
-
* @public
|
|
180
|
-
*/
|
|
181
|
-
@property()
|
|
182
|
-
accessibleNameRef?: string;
|
|
183
|
-
|
|
184
|
-
/**
|
|
185
|
-
* Defines whether the component is read-only.
|
|
186
|
-
*
|
|
187
|
-
* @default false
|
|
188
|
-
* @public
|
|
189
|
-
*/
|
|
190
|
-
@property({ type: Boolean })
|
|
191
|
-
readonly!: boolean;
|
|
192
|
-
|
|
193
|
-
/**
|
|
194
|
-
* Defines whether the component is display-only.
|
|
195
|
-
*
|
|
196
|
-
* @default false
|
|
197
|
-
* @public
|
|
198
|
-
*/
|
|
199
|
-
@property({ type: Boolean })
|
|
200
|
-
displayonly!: boolean;
|
|
201
|
-
|
|
202
|
-
/**
|
|
203
|
-
* Defines the value state of the trigger container.
|
|
204
|
-
*
|
|
205
|
-
* @default "Standard"
|
|
206
|
-
* @public
|
|
207
|
-
*/
|
|
208
|
-
@property()
|
|
209
|
-
valueState: `${UDExValueState}` = UDExValueState.Standard;
|
|
210
|
-
|
|
211
|
-
/**
|
|
212
|
-
* Defines supporting text under the trigger container.
|
|
213
|
-
*
|
|
214
|
-
* @default undefined
|
|
215
|
-
* @public
|
|
216
|
-
*/
|
|
217
|
-
@property({ type: String })
|
|
218
|
-
supportingText?: string;
|
|
219
|
-
|
|
220
130
|
/**
|
|
221
131
|
* Determines on which side of the component the Tooltip is displayed.
|
|
222
132
|
*
|
|
@@ -226,26 +136,6 @@ class UDExSelectBox extends UDExSearchableListBase {
|
|
|
226
136
|
@property()
|
|
227
137
|
tooltipPlacement: `${Placement}` = Placement.Bottom;
|
|
228
138
|
|
|
229
|
-
/**
|
|
230
|
-
* @private
|
|
231
|
-
*/
|
|
232
|
-
@property({ type: String, noAttribute: true })
|
|
233
|
-
_direction?: string;
|
|
234
|
-
|
|
235
|
-
/**
|
|
236
|
-
* @default false
|
|
237
|
-
* @private
|
|
238
|
-
*/
|
|
239
|
-
@property({ type: Boolean })
|
|
240
|
-
_focused!: boolean;
|
|
241
|
-
|
|
242
|
-
/**
|
|
243
|
-
* @default false
|
|
244
|
-
* @private
|
|
245
|
-
*/
|
|
246
|
-
@property({ type: Boolean })
|
|
247
|
-
_open: boolean = false;
|
|
248
|
-
|
|
249
139
|
/**
|
|
250
140
|
* @default false
|
|
251
141
|
* @private
|
|
@@ -253,78 +143,35 @@ class UDExSelectBox extends UDExSearchableListBase {
|
|
|
253
143
|
@property({ type: Boolean })
|
|
254
144
|
_showTagsDropdownContent!: boolean;
|
|
255
145
|
|
|
256
|
-
_trigger!: HTMLElement;
|
|
257
|
-
_triggerWrapper!: HTMLElement;
|
|
258
|
-
_popover!: Popover;
|
|
259
|
-
_tokenizer!: Tokenizer;
|
|
260
|
-
_search!: UDExSearch;
|
|
261
|
-
_singleSelectedOption!: string;
|
|
262
146
|
_truncatableTag!: UDExTag;
|
|
263
|
-
_tags!: Array<UDExTag>;
|
|
264
147
|
_inactiveTabIndex: number = -1;
|
|
265
|
-
|
|
266
|
-
_openedByTrigger: boolean = true;
|
|
267
|
-
_shouldScrollToEnd: boolean = false;
|
|
268
|
-
_handleResizeBound: ResizeObserverCallback;
|
|
148
|
+
_handleResizeTokenizerBound: ResizeObserverCallback;
|
|
269
149
|
|
|
270
150
|
constructor() {
|
|
271
151
|
super();
|
|
272
|
-
this.
|
|
273
|
-
this._handleResizeBound = this._handleResize.bind(this);
|
|
274
|
-
this._filteredItems = [];
|
|
152
|
+
this._handleResizeTokenizerBound = this.handleResizeTokenizer.bind(this);
|
|
275
153
|
}
|
|
276
154
|
|
|
277
155
|
onEnterDOM() {
|
|
278
|
-
|
|
156
|
+
super.onEnterDOM();
|
|
157
|
+
ResizeHandler.register(this, this._handleResizeTokenizerBound);
|
|
279
158
|
}
|
|
280
159
|
|
|
281
160
|
onExitDOM() {
|
|
282
|
-
|
|
161
|
+
super.onExitDOM();
|
|
162
|
+
ResizeHandler.deregister(this, this._handleResizeTokenizerBound);
|
|
283
163
|
}
|
|
284
164
|
|
|
285
165
|
onAfterRendering() {
|
|
286
|
-
|
|
287
|
-
this.
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
this._triggerWrapper = this.getTriggerWrapper();
|
|
291
|
-
this._tags = this.getTags();
|
|
292
|
-
this.handleDirection();
|
|
293
|
-
if (this._tokenizer?.tokens.length > 0) {
|
|
294
|
-
if (!this.displayonly) {
|
|
295
|
-
this._tokenizer.moreLink?.setAttribute("tabindex", "-1");
|
|
296
|
-
}
|
|
297
|
-
if (this._shouldScrollToEnd) {
|
|
298
|
-
this._tokenizer.scrollToEnd();
|
|
299
|
-
}
|
|
300
|
-
this.resetTagsTabIndexes();
|
|
301
|
-
}
|
|
302
|
-
this.handleOutsideClick();
|
|
303
|
-
}
|
|
304
|
-
|
|
305
|
-
onBeforeRendering() {
|
|
306
|
-
super.onBeforeRendering();
|
|
307
|
-
|
|
308
|
-
if (this.modeSingleSelect && this.hasSelectedItems) {
|
|
309
|
-
this.handleSingleSelectMode();
|
|
166
|
+
super.onAfterRendering();
|
|
167
|
+
this.handleSelectBoxOutsideClick();
|
|
168
|
+
if (this.tagGroup) {
|
|
169
|
+
this.configureTokenizer();
|
|
310
170
|
}
|
|
311
171
|
}
|
|
312
172
|
|
|
313
|
-
|
|
314
|
-
this.
|
|
315
|
-
}
|
|
316
|
-
|
|
317
|
-
handleItemPress(e:CustomEvent) {
|
|
318
|
-
this.onItemPress(e);
|
|
319
|
-
|
|
320
|
-
if (this.modeSingleSelect) {
|
|
321
|
-
this.handleSingleSelectMode();
|
|
322
|
-
this.closeDropdown();
|
|
323
|
-
}
|
|
324
|
-
}
|
|
325
|
-
|
|
326
|
-
handleSingleSelectMode() {
|
|
327
|
-
this._singleSelectedOption = this.selectedItems[0]?.label;
|
|
173
|
+
handleResizeTokenizer() {
|
|
174
|
+
this.resizeTokenizer();
|
|
328
175
|
}
|
|
329
176
|
|
|
330
177
|
handleSelectAll(e:CustomEvent) {
|
|
@@ -332,33 +179,46 @@ class UDExSelectBox extends UDExSearchableListBase {
|
|
|
332
179
|
}
|
|
333
180
|
|
|
334
181
|
handleHeaderPress(e:CustomEvent) {
|
|
182
|
+
this._search.focus();
|
|
335
183
|
this.onHeaderPress(e);
|
|
336
184
|
}
|
|
337
185
|
|
|
338
|
-
|
|
339
|
-
this.
|
|
186
|
+
handleItemPress(e:CustomEvent) {
|
|
187
|
+
this.handleItemSelection(e);
|
|
340
188
|
}
|
|
341
189
|
|
|
342
|
-
|
|
343
|
-
this.
|
|
344
|
-
|
|
190
|
+
handlerShowMoreItems(e: CustomEvent) {
|
|
191
|
+
if (!this.displayonly) {
|
|
192
|
+
this.showMoreItems(e);
|
|
193
|
+
this.handleUnselectTruncatableTag();
|
|
194
|
+
this.openDropdown();
|
|
195
|
+
}
|
|
196
|
+
this.fireDecoratorEvent("show-more");
|
|
345
197
|
}
|
|
346
198
|
|
|
347
|
-
|
|
348
|
-
this.
|
|
349
|
-
}
|
|
199
|
+
handleInputFocusIn() {
|
|
200
|
+
this.inputFocusIn();
|
|
350
201
|
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
}
|
|
355
|
-
this._focused = true;
|
|
356
|
-
if (this._tokenizer) {
|
|
357
|
-
this._tokenizer.expanded = false;
|
|
202
|
+
if (this.tokenizer) {
|
|
203
|
+
this.tokenizer.expanded = true;
|
|
204
|
+
this._requestRender = true;
|
|
358
205
|
}
|
|
359
206
|
}
|
|
360
207
|
|
|
361
|
-
|
|
208
|
+
handleInputFocusOut(e: FocusEvent) {
|
|
209
|
+
const relatedTarget = e.relatedTarget as HTMLElement;
|
|
210
|
+
const isInsideComponent = relatedTarget?.closest(`.${this._rootClass}`);
|
|
211
|
+
const hasTags = this.tokenizer?.tokens.length > 0;
|
|
212
|
+
|
|
213
|
+
if (!isInsideComponent) {
|
|
214
|
+
this.closeDropdown();
|
|
215
|
+
this.resetSearchState();
|
|
216
|
+
|
|
217
|
+
if (hasTags) {
|
|
218
|
+
this.collapseTokenizer();
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
|
|
362
222
|
this._focused = false;
|
|
363
223
|
}
|
|
364
224
|
|
|
@@ -367,35 +227,26 @@ class UDExSelectBox extends UDExSearchableListBase {
|
|
|
367
227
|
this._managePopupListeners(UDExPopoverPart.Header, "addEventListener");
|
|
368
228
|
}
|
|
369
229
|
|
|
370
|
-
|
|
371
|
-
this._setContentHeight();
|
|
372
|
-
}
|
|
373
|
-
|
|
374
|
-
this.fireDecoratorEvent("before-open");
|
|
230
|
+
this.dropdownBeforeOpen();
|
|
375
231
|
}
|
|
376
232
|
|
|
377
|
-
|
|
233
|
+
handleDropdownClose() {
|
|
378
234
|
if (this.preventPageScroll) {
|
|
379
235
|
this._managePopupListeners(UDExPopoverPart.Header, "removeEventListener");
|
|
380
236
|
}
|
|
381
237
|
|
|
382
|
-
if (this.
|
|
383
|
-
this.
|
|
238
|
+
if (this.modeMultiSelect) {
|
|
239
|
+
this.handleUnselectTruncatableTag();
|
|
384
240
|
}
|
|
385
|
-
this.handleUnselectTruncatableTag();
|
|
386
|
-
this._open = false;
|
|
387
|
-
}
|
|
388
241
|
|
|
389
|
-
|
|
390
|
-
this.
|
|
391
|
-
this._showTagsDropdownContent = false;
|
|
392
|
-
this.openDropdown();
|
|
393
|
-
this.handleUnselectTruncatableTag();
|
|
242
|
+
this._open = false;
|
|
243
|
+
this.fireEventDropdownClose();
|
|
394
244
|
}
|
|
395
245
|
|
|
396
246
|
handleRemoveTag(e: CustomEvent | null, tag?: UI5Element) {
|
|
397
247
|
tag = tag ?? (e?.detail.tag as UI5Element);
|
|
398
248
|
const tagId: string = tag.getAttribute("data-id")!;
|
|
249
|
+
this.tokenizer.deleteToken(tag as Token, true);
|
|
399
250
|
this.handleDropdownItemPress(tagId);
|
|
400
251
|
this.fireDecoratorEventRemove(tagId);
|
|
401
252
|
}
|
|
@@ -415,16 +266,7 @@ class UDExSelectBox extends UDExSearchableListBase {
|
|
|
415
266
|
handleUnselectTruncatableTag() {
|
|
416
267
|
if (this._truncatableTag?.selected) {
|
|
417
268
|
this._truncatableTag.selected = false;
|
|
418
|
-
}
|
|
419
|
-
}
|
|
420
|
-
|
|
421
|
-
handleKeyDownTrigger(e: KeyboardEvent) {
|
|
422
|
-
if (!this.isDisabled && (isSpace(e) || isEnter(e))) {
|
|
423
|
-
e.preventDefault();
|
|
424
|
-
e.stopPropagation();
|
|
425
269
|
this._showTagsDropdownContent = false;
|
|
426
|
-
this._openedByTrigger = true;
|
|
427
|
-
this.openDropdown();
|
|
428
270
|
}
|
|
429
271
|
}
|
|
430
272
|
|
|
@@ -433,18 +275,17 @@ class UDExSelectBox extends UDExSearchableListBase {
|
|
|
433
275
|
const originalEvent: KeyboardEvent = e.detail.originalEvent;
|
|
434
276
|
const tag = originalEvent.target as UDExTag;
|
|
435
277
|
const token = originalEvent.target as Token;
|
|
436
|
-
this.
|
|
437
|
-
|
|
438
|
-
this._tokenizer.expanded = (isLeft(originalEvent) || isRight(originalEvent) || isBackSpace(originalEvent) || isDelete(originalEvent)) && tagsCount > 0;
|
|
278
|
+
this.tokenizer.expanded = (isLeft(originalEvent) || isRight(originalEvent) || isBackSpace(originalEvent) || isDelete(originalEvent)) && this.tokenizer.tokens.length > 0;
|
|
279
|
+
|
|
439
280
|
if (isTabNext(originalEvent)) {
|
|
440
|
-
|
|
281
|
+
originalEvent.preventDefault();
|
|
282
|
+
this._search.focus();
|
|
441
283
|
return;
|
|
442
284
|
}
|
|
443
285
|
|
|
444
286
|
if ((isDown(originalEvent) || isUp(originalEvent))) {
|
|
445
|
-
this.
|
|
446
|
-
this.
|
|
447
|
-
this.showMoreItems();
|
|
287
|
+
this._search.focus();
|
|
288
|
+
this.openDropdown();
|
|
448
289
|
}
|
|
449
290
|
|
|
450
291
|
if (isSpace(originalEvent) || isShift(originalEvent) || isEnter(originalEvent)) {
|
|
@@ -454,9 +295,9 @@ class UDExSelectBox extends UDExSearchableListBase {
|
|
|
454
295
|
}
|
|
455
296
|
|
|
456
297
|
if (isLeft(originalEvent) || isRight(originalEvent)) {
|
|
457
|
-
const nextTokenIndex = this.
|
|
458
|
-
this.
|
|
459
|
-
this.
|
|
298
|
+
const nextTokenIndex = this.tokenizer._calcNextTokenIndex(token, this.tokenizer.tokens, isRight(originalEvent));
|
|
299
|
+
this.focusTagByIndex(nextTokenIndex);
|
|
300
|
+
this.tokenizer._scrollToToken(this.tokenizer.tokens[nextTokenIndex]);
|
|
460
301
|
return;
|
|
461
302
|
}
|
|
462
303
|
|
|
@@ -468,70 +309,73 @@ class UDExSelectBox extends UDExSearchableListBase {
|
|
|
468
309
|
|
|
469
310
|
if (isDelete(originalEvent) || isBackSpace(originalEvent)) {
|
|
470
311
|
this.handleRemoveTag(null, tag);
|
|
471
|
-
if (this.
|
|
472
|
-
this.
|
|
312
|
+
if (this.tokenizer.tokens.length === 1) {
|
|
313
|
+
this._search.focus();
|
|
473
314
|
} else {
|
|
474
|
-
this.
|
|
315
|
+
this.tokenizer.deleteToken(token, true);
|
|
475
316
|
}
|
|
476
317
|
}
|
|
477
318
|
}
|
|
478
319
|
|
|
479
|
-
|
|
480
|
-
|
|
320
|
+
handleKeyDownSearch(e: KeyboardEvent) {
|
|
321
|
+
const tokenizer = this.tokenizer;
|
|
322
|
+
const hasTags = tokenizer?.tokens.length > 0;
|
|
323
|
+
const lastTagIndex = tokenizer?.tokens.length - 1;
|
|
324
|
+
|
|
325
|
+
if (isTabPrevious(e)) {
|
|
326
|
+
this.resetTagsTabIndexes();
|
|
481
327
|
return;
|
|
482
328
|
}
|
|
483
329
|
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
if ((isTabNextPress && (!isSearchResetTrigger || this.isListEmpty)) || isTabPrevPress || isEscapePress) {
|
|
489
|
-
this.closeDropdown(e);
|
|
330
|
+
if (isLeft(e) && hasTags) {
|
|
331
|
+
e.preventDefault();
|
|
332
|
+
this.focusTagByIndex(lastTagIndex);
|
|
333
|
+
return;
|
|
490
334
|
}
|
|
491
|
-
}
|
|
492
|
-
|
|
493
|
-
handleKeyDownSearch(keyEvent: CustomEvent<UDExSearchKeydownEventDetail>) {
|
|
494
|
-
const { detail: { e } } = keyEvent;
|
|
495
335
|
|
|
496
|
-
if (
|
|
497
|
-
this.
|
|
336
|
+
if (isBackSpace(e) && this._inputValue === "" && hasTags) {
|
|
337
|
+
this.focusTagByIndex(lastTagIndex);
|
|
338
|
+
return;
|
|
498
339
|
}
|
|
340
|
+
|
|
341
|
+
this.onKeyDownSearch(e);
|
|
499
342
|
}
|
|
500
343
|
|
|
501
|
-
|
|
502
|
-
document.addEventListener("click", (e:
|
|
503
|
-
if (
|
|
504
|
-
this.
|
|
344
|
+
handleSelectBoxOutsideClick() {
|
|
345
|
+
document.addEventListener("click", (e: Event) => {
|
|
346
|
+
if (e.target !== this) {
|
|
347
|
+
this._open = this._popover.open;
|
|
348
|
+
if (this.tokenizer?.tokens.length > 0) {
|
|
349
|
+
this.collapseTokenizer();
|
|
350
|
+
}
|
|
505
351
|
}
|
|
506
|
-
this._open = this._popover.open;
|
|
507
352
|
});
|
|
508
353
|
}
|
|
509
354
|
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
this._tokenizer.expanded = true;
|
|
355
|
+
focusTagByIndex(index: number) {
|
|
356
|
+
const token = this.tokenizer.tokens[index];
|
|
357
|
+
if (token) {
|
|
358
|
+
token.focus();
|
|
359
|
+
token.forcedTabIndex = "0";
|
|
516
360
|
}
|
|
517
361
|
}
|
|
518
362
|
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
}
|
|
363
|
+
fireDecoratorEventRemove(id: string) {
|
|
364
|
+
this.fireDecoratorEvent("remove", {
|
|
365
|
+
item: this.getItemFromList(id),
|
|
366
|
+
});
|
|
367
|
+
}
|
|
525
368
|
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
369
|
+
collapseTokenizer() {
|
|
370
|
+
this.tokenizer.expanded = false;
|
|
371
|
+
this._selectedOption = "";
|
|
372
|
+
}
|
|
373
|
+
|
|
374
|
+
showMoreItems(e: CustomEvent) {
|
|
375
|
+
e.preventDefault();
|
|
376
|
+
this._focused = true;
|
|
377
|
+
this._search.focus();
|
|
378
|
+
this._showTagsDropdownContent = false;
|
|
535
379
|
}
|
|
536
380
|
|
|
537
381
|
toggleTruncatedPopover(tag: UDExTag) {
|
|
@@ -548,86 +392,20 @@ class UDExSelectBox extends UDExSearchableListBase {
|
|
|
548
392
|
}
|
|
549
393
|
}
|
|
550
394
|
|
|
551
|
-
|
|
552
|
-
this.
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
focusTag(index: number) {
|
|
556
|
-
this._tokenizer.tokens[index].focus();
|
|
557
|
-
this._tokenizer.tokens[index].forcedTabIndex = "0";
|
|
395
|
+
configureTokenizer() {
|
|
396
|
+
this.tagGroup._scrollToEnd = true;
|
|
397
|
+
this.resetTagsTabIndexes();
|
|
558
398
|
}
|
|
559
399
|
|
|
560
|
-
|
|
561
|
-
this.
|
|
562
|
-
|
|
400
|
+
resetTagsTabIndexes() {
|
|
401
|
+
this.tags.forEach(tag => {
|
|
402
|
+
this.getTagContent(tag).tabIndex = this._inactiveTabIndex;
|
|
563
403
|
});
|
|
564
404
|
}
|
|
565
405
|
|
|
566
|
-
|
|
567
|
-
if (this.
|
|
568
|
-
this.
|
|
569
|
-
} else {
|
|
570
|
-
this._showTagsDropdownContent = false;
|
|
571
|
-
this.openDropdown();
|
|
572
|
-
}
|
|
573
|
-
}
|
|
574
|
-
|
|
575
|
-
handleOpenSingleSelect() {
|
|
576
|
-
if (this._popover.open) {
|
|
577
|
-
this.closeDropdown();
|
|
578
|
-
} else {
|
|
579
|
-
this.openDropdown();
|
|
580
|
-
}
|
|
581
|
-
}
|
|
582
|
-
|
|
583
|
-
getHandleMultiSelectOpen() {
|
|
584
|
-
return !this.isDisabled && this.modeMultiSelect ? this.handleOpenMultiSelect() : undefined;
|
|
585
|
-
}
|
|
586
|
-
|
|
587
|
-
getHandleSingleSelectOpen() {
|
|
588
|
-
return !this.isDisabled && this.modeSingleSelect ? this.handleOpenSingleSelect() : undefined;
|
|
589
|
-
}
|
|
590
|
-
|
|
591
|
-
getHandlerShowMoreItems(e: CustomEvent) {
|
|
592
|
-
if (!this.displayonly) {
|
|
593
|
-
e.preventDefault();
|
|
594
|
-
this.showMoreItems();
|
|
595
|
-
}
|
|
596
|
-
this.fireDecoratorEvent("show-more");
|
|
597
|
-
}
|
|
598
|
-
|
|
599
|
-
getTrigger(): HTMLElement {
|
|
600
|
-
return this.shadowRoot!.querySelector(".udex-text-field__input")!;
|
|
601
|
-
}
|
|
602
|
-
|
|
603
|
-
getTriggerWrapper(): HTMLElement {
|
|
604
|
-
return this.shadowRoot!.querySelector(".udex-text-field__wrap")!;
|
|
605
|
-
}
|
|
606
|
-
|
|
607
|
-
getTagGroup(): UDExTagGroup {
|
|
608
|
-
return this.shadowRoot!.querySelector<UDExTagGroup>("[udex-tag-group]")!;
|
|
609
|
-
}
|
|
610
|
-
|
|
611
|
-
getTags(): Array<UDExTag> {
|
|
612
|
-
if (this.getTagGroup()) {
|
|
613
|
-
return Array.from(this.getTagGroup().shadowRoot!.querySelectorAll<UDExTag>("[udex-tag]"));
|
|
614
|
-
}
|
|
615
|
-
return [];
|
|
616
|
-
}
|
|
617
|
-
|
|
618
|
-
getTagContent(tag: UDExTag): HTMLElement {
|
|
619
|
-
return tag.shadowRoot!.querySelector(".udex-tag")!;
|
|
620
|
-
}
|
|
621
|
-
|
|
622
|
-
handleDirection() {
|
|
623
|
-
const directionStyles: string = window
|
|
624
|
-
.getComputedStyle(this)
|
|
625
|
-
.getPropertyValue("direction");
|
|
626
|
-
|
|
627
|
-
if (!directionStyles) {
|
|
628
|
-
this._direction = "ltr";
|
|
629
|
-
} else {
|
|
630
|
-
this._direction = directionStyles;
|
|
406
|
+
resizeTokenizer() {
|
|
407
|
+
if (this.tokenizer) {
|
|
408
|
+
this.tokenizer._handleResize();
|
|
631
409
|
}
|
|
632
410
|
}
|
|
633
411
|
|
|
@@ -635,8 +413,8 @@ class UDExSelectBox extends UDExSearchableListBase {
|
|
|
635
413
|
return isSpace(e) || isEnter(e);
|
|
636
414
|
}
|
|
637
415
|
|
|
638
|
-
|
|
639
|
-
|
|
416
|
+
getTagContent(tag: UDExTag): HTMLElement {
|
|
417
|
+
return tag.shadowRoot!.querySelector(".udex-tag")!;
|
|
640
418
|
}
|
|
641
419
|
|
|
642
420
|
/**
|
|
@@ -647,105 +425,38 @@ class UDExSelectBox extends UDExSearchableListBase {
|
|
|
647
425
|
this.closeDropdown();
|
|
648
426
|
}
|
|
649
427
|
|
|
650
|
-
get
|
|
651
|
-
return
|
|
428
|
+
get tokenizer(): Tokenizer {
|
|
429
|
+
return this.tagGroup?.tokenizer;
|
|
652
430
|
}
|
|
653
431
|
|
|
654
|
-
get
|
|
655
|
-
return this.
|
|
432
|
+
get tagGroup(): UDExTagGroup {
|
|
433
|
+
return this.shadowRoot!.querySelector<UDExTagGroup>("[udex-tag-group]")!;
|
|
656
434
|
}
|
|
657
435
|
|
|
658
|
-
get
|
|
659
|
-
return this.
|
|
436
|
+
get tags(): Array<UDExTag> {
|
|
437
|
+
return this.tagGroup ? Array.from(this.tagGroup.shadowRoot!.querySelectorAll<UDExTag>("[udex-tag]")) : [];
|
|
660
438
|
}
|
|
661
439
|
|
|
662
|
-
get
|
|
663
|
-
return this.
|
|
440
|
+
get truncatableTagLabel(): string {
|
|
441
|
+
return this._truncatableTag.text.replace(/<\/?b>/gi, "");
|
|
664
442
|
}
|
|
665
443
|
|
|
666
444
|
get showMultiSelectedOptions(): boolean {
|
|
667
445
|
return this.hasSelectedItems && this.modeMultiSelect;
|
|
668
446
|
}
|
|
669
447
|
|
|
670
|
-
get
|
|
671
|
-
|
|
672
|
-
const isActive = this._open || this._singleSelectedOption || this.hasSelectedItems;
|
|
673
|
-
return isActive ? `${baseClass} ${baseClass}_active` : `${baseClass}`;
|
|
674
|
-
}
|
|
675
|
-
|
|
676
|
-
get isReadOrDisplayOnly(): boolean {
|
|
677
|
-
return this.readonly || this.displayonly;
|
|
448
|
+
get allowTargetOverlap(): boolean {
|
|
449
|
+
return !this.disableTargetOverlap;
|
|
678
450
|
}
|
|
679
451
|
|
|
680
|
-
get tokenizerExpanded() {
|
|
452
|
+
get tokenizerExpanded(): boolean {
|
|
681
453
|
if (this._showTagsDropdownContent && this._truncatableTag) {
|
|
682
454
|
return false;
|
|
683
455
|
}
|
|
684
456
|
|
|
685
|
-
|
|
686
|
-
return this._tokenizer.expanded;
|
|
687
|
-
}
|
|
688
|
-
|
|
689
|
-
return this._open;
|
|
690
|
-
}
|
|
691
|
-
|
|
692
|
-
get showTrigger(): boolean {
|
|
693
|
-
return !this.displayonly;
|
|
694
|
-
}
|
|
695
|
-
|
|
696
|
-
get hasSelectedItems(): boolean {
|
|
697
|
-
return this.selectedItems.length > 0;
|
|
698
|
-
}
|
|
699
|
-
|
|
700
|
-
get effectiveTabIndex(): string {
|
|
701
|
-
const tabindex = this.getAttribute("tabindex");
|
|
702
|
-
return this.disabled ? `${this._inactiveTabIndex}` : tabindex || `${this._inactiveTabIndex}`;
|
|
703
|
-
}
|
|
704
|
-
|
|
705
|
-
get triggerTabIndex(): string {
|
|
706
|
-
return this.disabled || this.readonly ? `${this._inactiveTabIndex}` : "";
|
|
707
|
-
}
|
|
708
|
-
|
|
709
|
-
get iconAccessibleNameText(): string {
|
|
710
|
-
const selectOptionsText = UDExSelectBox.i18nBundle.getText(SELECT_OPTIONS);
|
|
711
|
-
const iconAccessibleNameTextSingleMode = this._singleSelectedOption || selectOptionsText;
|
|
712
|
-
return this.modeMultiSelect ? selectOptionsText : iconAccessibleNameTextSingleMode;
|
|
713
|
-
}
|
|
714
|
-
|
|
715
|
-
get additionalClassName(): string {
|
|
716
|
-
return `udex-list__sticky`;
|
|
717
|
-
}
|
|
718
|
-
|
|
719
|
-
get searchableList() {
|
|
720
|
-
this.defaultAccessibleRole = "listbox";
|
|
721
|
-
return executeTemplate(UDExSelectBox.searchableListBaseTemplate, this);
|
|
722
|
-
}
|
|
723
|
-
|
|
724
|
-
get accInfo() {
|
|
725
|
-
return {
|
|
726
|
-
"ariaLabel": getAllAccessibleNameRefTexts(this) || this.accessibleName || this.label || undefined,
|
|
727
|
-
};
|
|
728
|
-
}
|
|
729
|
-
|
|
730
|
-
get accessibilityAttributes(): SelectBoxAccessibilityAttributes {
|
|
731
|
-
return {
|
|
732
|
-
expanded: `${this._open}`,
|
|
733
|
-
controls: this.popoverId,
|
|
734
|
-
hasPopup: this.listboxRole,
|
|
735
|
-
ariaLabel: this.iconAccessibleNameText,
|
|
736
|
-
};
|
|
737
|
-
}
|
|
738
|
-
|
|
739
|
-
get popoverId(): string {
|
|
740
|
-
return `${this._id}_udex-select-box__dropdown`;
|
|
741
|
-
}
|
|
742
|
-
|
|
743
|
-
get listboxRole(): string {
|
|
744
|
-
return "listbox";
|
|
745
|
-
}
|
|
457
|
+
const isCurrentlyExpanded = this.tokenizer?.expanded;
|
|
746
458
|
|
|
747
|
-
|
|
748
|
-
return SearchableListBaseTemplate;
|
|
459
|
+
return this._focused || this._open || isCurrentlyExpanded;
|
|
749
460
|
}
|
|
750
461
|
}
|
|
751
462
|
|