@ui5/webcomponents 1.0.1 → 1.1.2
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/CHANGELOG.md +118 -0
- package/dist/Breadcrumbs.js +8 -6
- package/dist/BreadcrumbsItem.js +1 -1
- package/dist/BusyIndicator.js +2 -3
- package/dist/Button.js +28 -1
- package/dist/Calendar.js +7 -0
- package/dist/Carousel.js +9 -0
- package/dist/CheckBox.js +34 -1
- package/dist/ColorPalette.js +5 -4
- package/dist/ColorPalettePopover.js +27 -2
- package/dist/ComboBox.js +91 -23
- package/dist/DateComponentBase.js +6 -8
- package/dist/DatePicker.js +10 -2
- package/dist/DateRangePicker.js +22 -0
- package/dist/Dialog.js +5 -22
- package/dist/Icon.js +11 -8
- package/dist/Input.js +107 -15
- package/dist/Link.js +32 -14
- package/dist/List.js +14 -4
- package/dist/MessageStrip.js +39 -2
- package/dist/MultiComboBox.js +7 -3
- package/dist/MultiComboBoxItem.js +1 -1
- package/dist/MultiInput.js +55 -8
- package/dist/Option.js +12 -1
- package/dist/Panel.js +9 -0
- package/dist/Popover.js +106 -57
- package/dist/Popup.js +16 -2
- package/dist/RadioButton.js +15 -3
- package/dist/RatingIndicator.js +37 -7
- package/dist/ResponsivePopover.js +1 -0
- package/dist/SegmentedButton.js +14 -1
- package/dist/Select.js +2 -1
- package/dist/SliderBase.js +4 -0
- package/dist/SplitButton.js +425 -0
- package/dist/Switch.js +18 -0
- package/dist/Tab.js +10 -6
- package/dist/TabContainer.js +480 -108
- package/dist/TabSeparator.js +42 -3
- package/dist/Table.js +15 -5
- package/dist/TextArea.js +9 -3
- package/dist/ToggleButton.js +5 -0
- package/dist/Tokenizer.js +134 -7
- package/dist/TreeItem.js +21 -0
- package/dist/TreeListItem.js +8 -0
- package/dist/api.json +299 -26
- package/dist/css/themes/Badge.css +1 -1
- package/dist/css/themes/Breadcrumbs.css +1 -1
- package/dist/css/themes/BrowserScrollbar.css +1 -1
- package/dist/css/themes/BusyIndicator.css +1 -1
- package/dist/css/themes/CardHeader.css +1 -1
- package/dist/css/themes/CheckBox.css +1 -1
- package/dist/css/themes/ComboBox.css +1 -1
- package/dist/css/themes/CustomListItem.css +1 -1
- package/dist/css/themes/Dialog.css +1 -1
- package/dist/css/themes/Input.css +1 -1
- package/dist/css/themes/List.css +1 -1
- package/dist/css/themes/MultiComboBox.css +1 -1
- package/dist/css/themes/Panel.css +1 -1
- package/dist/css/themes/Popover.css +1 -1
- package/dist/css/themes/PopupsCommon.css +1 -1
- package/dist/css/themes/RadioButton.css +1 -1
- package/dist/css/themes/RatingIndicator.css +1 -1
- package/dist/css/themes/Select.css +1 -1
- package/dist/css/themes/SliderBase.css +1 -1
- package/dist/css/themes/SplitButton.css +1 -0
- package/dist/css/themes/TabContainer.css +1 -1
- package/dist/css/themes/TabInOverflow.css +1 -1
- package/dist/css/themes/TabInStrip.css +1 -1
- package/dist/css/themes/TabSeparatorInOverflow.css +1 -0
- package/dist/css/themes/TabSeparatorInStrip.css +1 -0
- package/dist/css/themes/Table.css +1 -1
- package/dist/css/themes/TableColumn.css +1 -1
- package/dist/css/themes/TextArea.css +1 -1
- package/dist/css/themes/TimeSelection.css +1 -1
- package/dist/css/themes/Token.css +1 -1
- package/dist/css/themes/ValueStateMessage.css +1 -1
- package/dist/css/themes/sap_belize/parameters-bundle.css +1 -1
- package/dist/css/themes/sap_belize_hcb/parameters-bundle.css +1 -1
- package/dist/css/themes/sap_belize_hcw/parameters-bundle.css +1 -1
- package/dist/css/themes/sap_fiori_3/parameters-bundle.css +1 -1
- package/dist/css/themes/sap_fiori_3_dark/parameters-bundle.css +1 -1
- package/dist/css/themes/sap_fiori_3_hcb/parameters-bundle.css +1 -1
- package/dist/css/themes/sap_fiori_3_hcw/parameters-bundle.css +1 -1
- package/dist/css/themes/sap_horizon/parameters-bundle.css +1 -1
- package/dist/css/themes/sap_horizon_exp/parameters-bundle.css +1 -1
- package/dist/features/InputSuggestions.js +88 -15
- package/dist/generated/assets/i18n/messagebundle_ar.json +1 -1
- package/dist/generated/assets/i18n/messagebundle_bg.json +1 -1
- package/dist/generated/assets/i18n/messagebundle_ca.json +1 -1
- package/dist/generated/assets/i18n/messagebundle_cs.json +1 -1
- package/dist/generated/assets/i18n/messagebundle_cy.json +1 -1
- package/dist/generated/assets/i18n/messagebundle_da.json +1 -1
- package/dist/generated/assets/i18n/messagebundle_de.json +1 -1
- package/dist/generated/assets/i18n/messagebundle_el.json +1 -1
- package/dist/generated/assets/i18n/messagebundle_en.json +1 -1
- package/dist/generated/assets/i18n/messagebundle_en_GB.json +1 -1
- package/dist/generated/assets/i18n/messagebundle_en_US_sappsd.json +1 -1
- package/dist/generated/assets/i18n/messagebundle_en_US_saprigi.json +1 -1
- package/dist/generated/assets/i18n/messagebundle_en_US_saptrc.json +1 -1
- package/dist/generated/assets/i18n/messagebundle_es.json +1 -1
- package/dist/generated/assets/i18n/messagebundle_es_MX.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_fr_CA.json +1 -1
- package/dist/generated/assets/i18n/messagebundle_hi.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/assets/i18n/messagebundle_it.json +1 -1
- package/dist/generated/assets/i18n/messagebundle_iw.json +1 -1
- package/dist/generated/assets/i18n/messagebundle_ja.json +1 -1
- package/dist/generated/assets/i18n/messagebundle_kk.json +1 -1
- package/dist/generated/assets/i18n/messagebundle_ko.json +1 -1
- package/dist/generated/assets/i18n/messagebundle_lt.json +1 -1
- package/dist/generated/assets/i18n/messagebundle_lv.json +1 -1
- package/dist/generated/assets/i18n/messagebundle_ms.json +1 -1
- package/dist/generated/assets/i18n/messagebundle_nl.json +1 -1
- package/dist/generated/assets/i18n/messagebundle_no.json +1 -1
- package/dist/generated/assets/i18n/messagebundle_pl.json +1 -1
- package/dist/generated/assets/i18n/messagebundle_pt.json +1 -1
- package/dist/generated/assets/i18n/messagebundle_pt_PT.json +1 -1
- package/dist/generated/assets/i18n/messagebundle_ro.json +1 -1
- package/dist/generated/assets/i18n/messagebundle_ru.json +1 -1
- package/dist/generated/assets/i18n/messagebundle_sh.json +1 -1
- package/dist/generated/assets/i18n/messagebundle_sk.json +1 -1
- package/dist/generated/assets/i18n/messagebundle_sl.json +1 -1
- package/dist/generated/assets/i18n/messagebundle_sv.json +1 -1
- package/dist/generated/assets/i18n/messagebundle_th.json +1 -1
- package/dist/generated/assets/i18n/messagebundle_tr.json +1 -1
- package/dist/generated/assets/i18n/messagebundle_uk.json +1 -1
- package/dist/generated/assets/i18n/messagebundle_vi.json +1 -1
- package/dist/generated/assets/i18n/messagebundle_zh_CN.json +1 -1
- package/dist/generated/assets/i18n/messagebundle_zh_TW.json +1 -1
- package/dist/generated/assets/themes/sap_belize/parameters-bundle.css.json +1 -1
- package/dist/generated/assets/themes/sap_belize_hcb/parameters-bundle.css.json +1 -1
- package/dist/generated/assets/themes/sap_belize_hcw/parameters-bundle.css.json +1 -1
- package/dist/generated/assets/themes/sap_fiori_3/parameters-bundle.css.json +1 -1
- package/dist/generated/assets/themes/sap_fiori_3_dark/parameters-bundle.css.json +1 -1
- package/dist/generated/assets/themes/sap_fiori_3_hcb/parameters-bundle.css.json +1 -1
- package/dist/generated/assets/themes/sap_fiori_3_hcw/parameters-bundle.css.json +1 -1
- package/dist/generated/assets/themes/sap_horizon/parameters-bundle.css.json +1 -1
- package/dist/generated/assets/themes/sap_horizon_exp/parameters-bundle.css.json +1 -1
- package/dist/generated/i18n/i18n-defaults.js +2 -2
- package/dist/generated/templates/BreadcrumbsPopoverTemplate.lit.js +1 -1
- package/dist/generated/templates/BreadcrumbsTemplate.lit.js +1 -1
- package/dist/generated/templates/BusyIndicatorTemplate.lit.js +1 -1
- package/dist/generated/templates/ButtonTemplate.lit.js +1 -1
- package/dist/generated/templates/CardHeaderTemplate.lit.js +1 -1
- package/dist/generated/templates/CarouselTemplate.lit.js +1 -1
- package/dist/generated/templates/CheckBoxTemplate.lit.js +1 -1
- package/dist/generated/templates/ColorPalettePopoverTemplate.lit.js +1 -1
- package/dist/generated/templates/ComboBoxPopoverTemplate.lit.js +1 -1
- package/dist/generated/templates/ComboBoxTemplate.lit.js +1 -1
- package/dist/generated/templates/CustomListItemTemplate.lit.js +2 -2
- package/dist/generated/templates/DialogTemplate.lit.js +1 -1
- package/dist/generated/templates/InputPopoverTemplate.lit.js +3 -3
- package/dist/generated/templates/InputTemplate.lit.js +1 -1
- package/dist/generated/templates/LinkTemplate.lit.js +1 -1
- package/dist/generated/templates/ListItemTemplate.lit.js +2 -2
- package/dist/generated/templates/MessageStripTemplate.lit.js +1 -1
- package/dist/generated/templates/MultiComboBoxPopoverTemplate.lit.js +1 -1
- package/dist/generated/templates/MultiInputTemplate.lit.js +1 -1
- package/dist/generated/templates/PanelTemplate.lit.js +1 -1
- package/dist/generated/templates/PopupBlockLayerTemplate.lit.js +1 -1
- package/dist/generated/templates/RangeSliderTemplate.lit.js +1 -1
- package/dist/generated/templates/ResponsivePopoverTemplate.lit.js +1 -1
- package/dist/generated/templates/SegmentedButtonTemplate.lit.js +1 -1
- package/dist/generated/templates/SelectPopoverTemplate.lit.js +2 -2
- package/dist/generated/templates/SliderBaseTemplate.lit.js +1 -1
- package/dist/generated/templates/SliderTemplate.lit.js +1 -1
- package/dist/generated/templates/SplitButtonTemplate.lit.js +7 -0
- package/dist/generated/templates/StandardListItemTemplate.lit.js +2 -2
- package/dist/generated/templates/SuggestionListItemTemplate.lit.js +2 -2
- package/dist/generated/templates/SwitchTemplate.lit.js +1 -1
- package/dist/generated/templates/TabContainerPopoverTemplate.lit.js +4 -2
- package/dist/generated/templates/TabContainerTemplate.lit.js +9 -10
- package/dist/generated/templates/TabInOverflowTemplate.lit.js +1 -1
- package/dist/generated/templates/TabInStripTemplate.lit.js +1 -1
- package/dist/generated/templates/TabSeparatorInOverflowTemplate.lit.js +7 -0
- package/dist/generated/templates/TabSeparatorInStripTemplate.lit.js +7 -0
- package/dist/generated/templates/TableTemplate.lit.js +1 -1
- package/dist/generated/templates/TextAreaPopoverTemplate.lit.js +1 -1
- package/dist/generated/templates/ToggleButtonTemplate.lit.js +1 -1
- package/dist/generated/templates/TreeListItemTemplate.lit.js +2 -2
- package/dist/generated/templates/TreeTemplate.lit.js +1 -1
- package/dist/generated/themes/Badge.css.js +1 -1
- package/dist/generated/themes/Breadcrumbs.css.js +1 -1
- package/dist/generated/themes/BrowserScrollbar.css.js +1 -1
- package/dist/generated/themes/BusyIndicator.css.js +1 -1
- package/dist/generated/themes/CardHeader.css.js +1 -1
- package/dist/generated/themes/CheckBox.css.js +1 -1
- package/dist/generated/themes/ComboBox.css.js +1 -1
- package/dist/generated/themes/CustomListItem.css.js +1 -1
- package/dist/generated/themes/Dialog.css.js +1 -1
- package/dist/generated/themes/Input.css.js +1 -1
- package/dist/generated/themes/List.css.js +1 -1
- package/dist/generated/themes/MultiComboBox.css.js +1 -1
- package/dist/generated/themes/Panel.css.js +1 -1
- package/dist/generated/themes/Popover.css.js +1 -1
- package/dist/generated/themes/PopupsCommon.css.js +1 -1
- package/dist/generated/themes/RadioButton.css.js +1 -1
- package/dist/generated/themes/RatingIndicator.css.js +1 -1
- package/dist/generated/themes/Select.css.js +1 -1
- package/dist/generated/themes/SliderBase.css.js +1 -1
- package/dist/generated/themes/SplitButton.css.js +8 -0
- package/dist/generated/themes/TabContainer.css.js +1 -1
- package/dist/generated/themes/TabInOverflow.css.js +1 -1
- package/dist/generated/themes/TabInStrip.css.js +1 -1
- package/dist/generated/themes/TabSeparatorInOverflow.css.js +8 -0
- package/dist/generated/themes/TabSeparatorInStrip.css.js +8 -0
- package/dist/generated/themes/Table.css.js +1 -1
- package/dist/generated/themes/TableColumn.css.js +1 -1
- package/dist/generated/themes/TextArea.css.js +1 -1
- package/dist/generated/themes/TimeSelection.css.js +1 -1
- package/dist/generated/themes/Token.css.js +1 -1
- package/dist/generated/themes/ValueStateMessage.css.js +1 -1
- package/dist/generated/themes/sap_belize/parameters-bundle.css.js +1 -1
- package/dist/generated/themes/sap_belize_hcb/parameters-bundle.css.js +1 -1
- package/dist/generated/themes/sap_belize_hcw/parameters-bundle.css.js +1 -1
- package/dist/generated/themes/sap_fiori_3/parameters-bundle.css.js +1 -1
- package/dist/generated/themes/sap_fiori_3_dark/parameters-bundle.css.js +1 -1
- package/dist/generated/themes/sap_fiori_3_hcb/parameters-bundle.css.js +1 -1
- package/dist/generated/themes/sap_fiori_3_hcw/parameters-bundle.css.js +1 -1
- package/dist/generated/themes/sap_horizon/parameters-bundle.css.js +1 -1
- package/dist/generated/themes/sap_horizon_exp/parameters-bundle.css.js +1 -1
- package/dist/i18n/messagebundle.properties +26 -1
- package/dist/i18n/messagebundle_ar.properties +13 -1
- package/dist/i18n/messagebundle_bg.properties +13 -1
- package/dist/i18n/messagebundle_ca.properties +13 -1
- package/dist/i18n/messagebundle_cs.properties +13 -1
- package/dist/i18n/messagebundle_cy.properties +13 -1
- package/dist/i18n/messagebundle_da.properties +13 -1
- package/dist/i18n/messagebundle_de.properties +13 -1
- package/dist/i18n/messagebundle_el.properties +13 -1
- package/dist/i18n/messagebundle_en.properties +13 -1
- package/dist/i18n/messagebundle_en_GB.properties +13 -1
- package/dist/i18n/messagebundle_en_US_sappsd.properties +18 -1
- package/dist/i18n/messagebundle_en_US_saprigi.properties +18 -1
- package/dist/i18n/messagebundle_en_US_saptrc.properties +18 -1
- package/dist/i18n/messagebundle_es.properties +13 -1
- package/dist/i18n/messagebundle_es_MX.properties +13 -1
- package/dist/i18n/messagebundle_et.properties +13 -1
- package/dist/i18n/messagebundle_fi.properties +14 -2
- package/dist/i18n/messagebundle_fr.properties +13 -1
- package/dist/i18n/messagebundle_fr_CA.properties +13 -1
- package/dist/i18n/messagebundle_hi.properties +13 -1
- package/dist/i18n/messagebundle_hr.properties +13 -1
- package/dist/i18n/messagebundle_hu.properties +13 -1
- package/dist/i18n/messagebundle_id.properties +13 -1
- package/dist/i18n/messagebundle_it.properties +13 -1
- package/dist/i18n/messagebundle_iw.properties +13 -1
- package/dist/i18n/messagebundle_ja.properties +13 -1
- package/dist/i18n/messagebundle_kk.properties +13 -1
- package/dist/i18n/messagebundle_ko.properties +13 -1
- package/dist/i18n/messagebundle_lt.properties +13 -1
- package/dist/i18n/messagebundle_lv.properties +13 -1
- package/dist/i18n/messagebundle_ms.properties +13 -1
- package/dist/i18n/messagebundle_nl.properties +13 -1
- package/dist/i18n/messagebundle_no.properties +13 -1
- package/dist/i18n/messagebundle_pl.properties +13 -1
- package/dist/i18n/messagebundle_pt.properties +13 -1
- package/dist/i18n/messagebundle_pt_PT.properties +13 -1
- package/dist/i18n/messagebundle_ro.properties +13 -1
- package/dist/i18n/messagebundle_ru.properties +13 -1
- package/dist/i18n/messagebundle_sh.properties +13 -1
- package/dist/i18n/messagebundle_sk.properties +13 -1
- package/dist/i18n/messagebundle_sl.properties +13 -1
- package/dist/i18n/messagebundle_sv.properties +13 -1
- package/dist/i18n/messagebundle_th.properties +12 -0
- package/dist/i18n/messagebundle_tr.properties +13 -1
- package/dist/i18n/messagebundle_uk.properties +13 -1
- package/dist/i18n/messagebundle_vi.properties +13 -1
- package/dist/i18n/messagebundle_zh_CN.properties +13 -1
- package/dist/i18n/messagebundle_zh_TW.properties +12 -0
- package/dist/types/HasPopup.js +62 -0
- package/dist/types/TabsOverflowMode.js +40 -0
- package/package.json +9 -9
- package/src/Breadcrumbs.hbs +3 -2
- package/src/Breadcrumbs.js +8 -6
- package/src/BreadcrumbsItem.js +1 -1
- package/src/BreadcrumbsPopover.hbs +2 -2
- package/src/BusyIndicator.hbs +1 -1
- package/src/BusyIndicator.js +2 -3
- package/src/Button.hbs +1 -1
- package/src/Button.js +28 -1
- package/src/Calendar.js +7 -0
- package/src/CardHeader.hbs +12 -5
- package/src/Carousel.hbs +1 -0
- package/src/Carousel.js +9 -0
- package/src/CheckBox.hbs +1 -0
- package/src/CheckBox.js +34 -1
- package/src/ColorPalette.js +5 -4
- package/src/ColorPalettePopover.hbs +7 -5
- package/src/ColorPalettePopover.js +27 -2
- package/src/ComboBox.hbs +1 -0
- package/src/ComboBox.js +91 -23
- package/src/ComboBoxPopover.hbs +1 -0
- package/src/DateComponentBase.js +6 -8
- package/src/DatePicker.js +10 -2
- package/src/DateRangePicker.js +22 -0
- package/src/Dialog.hbs +1 -1
- package/src/Dialog.js +5 -22
- package/src/Icon.js +11 -8
- package/src/Input.hbs +1 -1
- package/src/Input.js +107 -15
- package/src/InputPopover.hbs +2 -3
- package/src/Link.hbs +2 -1
- package/src/Link.js +32 -14
- package/src/List.js +14 -4
- package/src/ListItem.hbs +1 -0
- package/src/MessageStrip.hbs +1 -1
- package/src/MessageStrip.js +39 -2
- package/src/MultiComboBox.js +7 -3
- package/src/MultiComboBoxItem.js +1 -1
- package/src/MultiComboBoxPopover.hbs +1 -1
- package/src/MultiInput.js +55 -8
- package/src/Option.js +12 -1
- package/src/Panel.hbs +1 -1
- package/src/Panel.js +9 -0
- package/src/Popover.js +106 -57
- package/src/Popup.js +16 -2
- package/src/PopupBlockLayer.hbs +1 -1
- package/src/RadioButton.js +15 -3
- package/src/RatingIndicator.js +37 -7
- package/src/ResponsivePopover.hbs +2 -0
- package/src/ResponsivePopover.js +1 -0
- package/src/SegmentedButton.hbs +1 -0
- package/src/SegmentedButton.js +14 -1
- package/src/Select.js +2 -1
- package/src/SelectPopover.hbs +2 -1
- package/src/SliderBase.hbs +1 -1
- package/src/SliderBase.js +4 -0
- package/src/SplitButton.hbs +53 -0
- package/src/SplitButton.js +425 -0
- package/src/Switch.hbs +1 -0
- package/src/Switch.js +18 -0
- package/src/Tab.js +10 -6
- package/src/TabContainer.hbs +48 -58
- package/src/TabContainer.js +480 -108
- package/src/TabContainerPopover.hbs +9 -6
- package/src/TabInOverflow.hbs +0 -1
- package/src/TabInStrip.hbs +3 -8
- package/src/TabSeparator.js +42 -3
- package/src/TabSeparatorInOverflow.hbs +8 -0
- package/src/TabSeparatorInStrip.hbs +6 -0
- package/src/Table.hbs +1 -1
- package/src/Table.js +15 -5
- package/src/TextArea.js +9 -3
- package/src/TextAreaPopover.hbs +1 -1
- package/src/ToggleButton.js +5 -0
- package/src/Tokenizer.js +134 -7
- package/src/Tree.hbs +1 -0
- package/src/TreeItem.js +21 -0
- package/src/TreeListItem.js +8 -0
- package/src/features/InputSuggestions.js +88 -15
- package/src/i18n/messagebundle.properties +26 -1
- package/src/i18n/messagebundle_ar.properties +13 -1
- package/src/i18n/messagebundle_bg.properties +13 -1
- package/src/i18n/messagebundle_ca.properties +13 -1
- package/src/i18n/messagebundle_cs.properties +13 -1
- package/src/i18n/messagebundle_cy.properties +13 -1
- package/src/i18n/messagebundle_da.properties +13 -1
- package/src/i18n/messagebundle_de.properties +13 -1
- package/src/i18n/messagebundle_el.properties +13 -1
- package/src/i18n/messagebundle_en.properties +13 -1
- package/src/i18n/messagebundle_en_GB.properties +13 -1
- package/src/i18n/messagebundle_en_US_sappsd.properties +18 -1
- package/src/i18n/messagebundle_en_US_saprigi.properties +18 -1
- package/src/i18n/messagebundle_en_US_saptrc.properties +18 -1
- package/src/i18n/messagebundle_es.properties +13 -1
- package/src/i18n/messagebundle_es_MX.properties +13 -1
- package/src/i18n/messagebundle_et.properties +13 -1
- package/src/i18n/messagebundle_fi.properties +14 -2
- package/src/i18n/messagebundle_fr.properties +13 -1
- package/src/i18n/messagebundle_fr_CA.properties +13 -1
- package/src/i18n/messagebundle_hi.properties +13 -1
- package/src/i18n/messagebundle_hr.properties +13 -1
- package/src/i18n/messagebundle_hu.properties +13 -1
- package/src/i18n/messagebundle_id.properties +13 -1
- package/src/i18n/messagebundle_it.properties +13 -1
- package/src/i18n/messagebundle_iw.properties +13 -1
- package/src/i18n/messagebundle_ja.properties +13 -1
- package/src/i18n/messagebundle_kk.properties +13 -1
- package/src/i18n/messagebundle_ko.properties +13 -1
- package/src/i18n/messagebundle_lt.properties +13 -1
- package/src/i18n/messagebundle_lv.properties +13 -1
- package/src/i18n/messagebundle_ms.properties +13 -1
- package/src/i18n/messagebundle_nl.properties +13 -1
- package/src/i18n/messagebundle_no.properties +13 -1
- package/src/i18n/messagebundle_pl.properties +13 -1
- package/src/i18n/messagebundle_pt.properties +13 -1
- package/src/i18n/messagebundle_pt_PT.properties +13 -1
- package/src/i18n/messagebundle_ro.properties +13 -1
- package/src/i18n/messagebundle_ru.properties +13 -1
- package/src/i18n/messagebundle_sh.properties +13 -1
- package/src/i18n/messagebundle_sk.properties +13 -1
- package/src/i18n/messagebundle_sl.properties +13 -1
- package/src/i18n/messagebundle_sv.properties +13 -1
- package/src/i18n/messagebundle_th.properties +12 -0
- package/src/i18n/messagebundle_tr.properties +13 -1
- package/src/i18n/messagebundle_uk.properties +13 -1
- package/src/i18n/messagebundle_vi.properties +13 -1
- package/src/i18n/messagebundle_zh_CN.properties +13 -1
- package/src/i18n/messagebundle_zh_TW.properties +12 -0
- package/src/themes/Badge.css +3 -1
- package/src/themes/Breadcrumbs.css +100 -99
- package/src/themes/BrowserScrollbar.css +2 -0
- package/src/themes/BusyIndicator.css +3 -3
- package/src/themes/CardHeader.css +7 -3
- package/src/themes/CheckBox.css +15 -7
- package/src/themes/CustomListItem.css +2 -1
- package/src/themes/Dialog.css +1 -0
- package/src/themes/Input.css +14 -0
- package/src/themes/List.css +1 -0
- package/src/themes/Panel.css +4 -0
- package/src/themes/Popover.css +4 -0
- package/src/themes/PopupsCommon.css +0 -1
- package/src/themes/RadioButton.css +4 -3
- package/src/themes/RatingIndicator.css +0 -1
- package/src/themes/SliderBase.css +3 -2
- package/src/themes/SplitButton.css +98 -0
- package/src/themes/TabContainer.css +17 -53
- package/src/themes/TabInOverflow.css +25 -21
- package/src/themes/TabInStrip.css +124 -100
- package/src/themes/TabSeparatorInOverflow.css +8 -0
- package/src/themes/TabSeparatorInStrip.css +5 -0
- package/src/themes/Table.css +1 -1
- package/src/themes/TableColumn.css +0 -1
- package/src/themes/TextArea.css +9 -1
- package/src/themes/TimeSelection.css +4 -0
- package/src/themes/Token.css +2 -1
- package/src/themes/Tokenizer.css +1 -1
- package/src/themes/ValueStateMessage.css +3 -3
- package/src/themes/base/BrowserScrollbar-parameters.css +4 -0
- package/src/themes/base/Card-parameters.css +1 -1
- package/src/themes/base/Input-parameters.css +5 -0
- package/src/themes/base/TabContainer-parameters.css +1 -1
- package/src/themes/base/TextArea-parameters.css +1 -0
- package/src/themes/base/Title-parameters.css +6 -6
- package/src/themes/base/Token-parameters.css +1 -0
- package/src/themes/base/sizes-parameters.css +2 -2
- package/src/themes/sap_belize/BrowserScrollbar-parameters.css +4 -0
- package/src/themes/sap_belize/Table-parameters.css +3 -0
- package/src/themes/sap_belize/parameters-bundle.css +1 -0
- package/src/themes/sap_belize_hcb/BrowserScrollbar-parameters.css +4 -0
- package/src/themes/sap_belize_hcb/Input-parameters.css +1 -0
- package/src/themes/sap_belize_hcb/Table-parameters.css +1 -0
- package/src/themes/sap_belize_hcb/Token-parameters.css +1 -0
- package/src/themes/sap_belize_hcb/parameters-bundle.css +1 -0
- package/src/themes/sap_belize_hcw/BrowserScrollbar-parameters.css +4 -0
- package/src/themes/sap_belize_hcw/Input-parameters.css +1 -0
- package/src/themes/sap_belize_hcw/Table-parameters.css +1 -0
- package/src/themes/sap_belize_hcw/Token-parameters.css +1 -0
- package/src/themes/sap_belize_hcw/parameters-bundle.css +1 -0
- package/src/themes/sap_fiori_3/TabContainer-parameters.css +1 -1
- package/src/themes/sap_fiori_3/parameters-bundle.css +1 -0
- package/src/themes/sap_fiori_3_dark/parameters-bundle.css +1 -0
- package/src/themes/sap_fiori_3_hcb/Input-parameters.css +7 -0
- package/src/themes/sap_fiori_3_hcb/TextArea-parameters.css +2 -0
- package/src/themes/sap_fiori_3_hcb/Token-parameters.css +2 -1
- package/src/themes/sap_fiori_3_hcb/parameters-bundle.css +1 -0
- package/src/themes/sap_fiori_3_hcw/Input-parameters.css +7 -0
- package/src/themes/sap_fiori_3_hcw/TextArea-parameters.css +2 -0
- package/src/themes/sap_fiori_3_hcw/Token-parameters.css +2 -1
- package/src/themes/sap_fiori_3_hcw/parameters-bundle.css +1 -0
- package/src/themes/sap_horizon/Card-parameters.css +0 -1
- package/src/themes/sap_horizon/Table-parameters.css +1 -0
- package/src/themes/sap_horizon/parameters-bundle.css +1 -0
- package/src/themes/sap_horizon_exp/parameters-bundle.css +1 -0
- package/src/types/HasPopup.js +62 -0
- package/src/types/TabsOverflowMode.js +40 -0
- package/csp.js +0 -7
- package/dist/generated/templates/TabSeparatorTemplate.lit.js +0 -7
- package/src/TabSeparator.hbs +0 -1
package/src/TabContainer.js
CHANGED
|
@@ -1,20 +1,28 @@
|
|
|
1
1
|
import UI5Element from "@ui5/webcomponents-base/dist/UI5Element.js";
|
|
2
2
|
import litRender from "@ui5/webcomponents-base/dist/renderer/LitRenderer.js";
|
|
3
3
|
import ResizeHandler from "@ui5/webcomponents-base/dist/delegate/ResizeHandler.js";
|
|
4
|
-
import ScrollEnablement from "@ui5/webcomponents-base/dist/delegate/ScrollEnablement.js";
|
|
5
4
|
import slideDown from "@ui5/webcomponents-base/dist/animations/slideDown.js";
|
|
6
5
|
import slideUp from "@ui5/webcomponents-base/dist/animations/slideUp.js";
|
|
7
6
|
import AnimationMode from "@ui5/webcomponents-base/dist/types/AnimationMode.js";
|
|
8
7
|
import { getAnimationMode } from "@ui5/webcomponents-base/dist/config/AnimationMode.js";
|
|
9
8
|
import ItemNavigation from "@ui5/webcomponents-base/dist/delegate/ItemNavigation.js";
|
|
10
|
-
import {
|
|
9
|
+
import {
|
|
10
|
+
isSpace,
|
|
11
|
+
isEnter,
|
|
12
|
+
isDown,
|
|
13
|
+
isRight,
|
|
14
|
+
isLeft,
|
|
15
|
+
} from "@ui5/webcomponents-base/dist/Keys.js";
|
|
11
16
|
import MediaRange from "@ui5/webcomponents-base/dist/MediaRange.js";
|
|
12
17
|
import { getI18nBundle } from "@ui5/webcomponents-base/dist/i18nBundle.js";
|
|
13
18
|
import "@ui5/webcomponents-icons/dist/slim-arrow-up.js";
|
|
14
19
|
import "@ui5/webcomponents-icons/dist/slim-arrow-down.js";
|
|
15
|
-
import
|
|
16
|
-
|
|
17
|
-
|
|
20
|
+
import {
|
|
21
|
+
TABCONTAINER_PREVIOUS_ICON_ACC_NAME,
|
|
22
|
+
TABCONTAINER_NEXT_ICON_ACC_NAME,
|
|
23
|
+
TABCONTAINER_OVERFLOW_MENU_TITLE,
|
|
24
|
+
TABCONTAINER_END_OVERFLOW,
|
|
25
|
+
} from "./generated/i18n/i18n-defaults.js";
|
|
18
26
|
import Button from "./Button.js";
|
|
19
27
|
import Icon from "./Icon.js";
|
|
20
28
|
import List from "./List.js";
|
|
@@ -29,8 +37,7 @@ import TabContainerPopoverTemplate from "./generated/templates/TabContainerPopov
|
|
|
29
37
|
import tabContainerCss from "./generated/themes/TabContainer.css.js";
|
|
30
38
|
import ResponsivePopoverCommonCss from "./generated/themes/ResponsivePopoverCommon.css.js";
|
|
31
39
|
import TabLayout from "./types/TabLayout.js";
|
|
32
|
-
|
|
33
|
-
const SCROLL_STEP = 128;
|
|
40
|
+
import TabsOverflowMode from "./types/TabsOverflowMode.js";
|
|
34
41
|
|
|
35
42
|
const tabStyles = [];
|
|
36
43
|
const staticAreaTabStyles = [];
|
|
@@ -42,6 +49,7 @@ const metadata = {
|
|
|
42
49
|
tag: "ui5-tabcontainer",
|
|
43
50
|
languageAware: true,
|
|
44
51
|
managedSlots: true,
|
|
52
|
+
fastNavigation: true,
|
|
45
53
|
slots: /** @lends sap.ui.webcomponents.main.TabContainer.prototype */ {
|
|
46
54
|
/**
|
|
47
55
|
* Defines the tabs.
|
|
@@ -63,7 +71,8 @@ const metadata = {
|
|
|
63
71
|
},
|
|
64
72
|
|
|
65
73
|
/**
|
|
66
|
-
* Defines the button which will open the overflow menu. If nothing is provided to this slot,
|
|
74
|
+
* Defines the button which will open the overflow menu. If nothing is provided to this slot,
|
|
75
|
+
* the default button will be used.
|
|
67
76
|
*
|
|
68
77
|
* @type {sap.ui.webcomponents.main.IButton}
|
|
69
78
|
* @public
|
|
@@ -73,6 +82,19 @@ const metadata = {
|
|
|
73
82
|
overflowButton: {
|
|
74
83
|
type: HTMLElement,
|
|
75
84
|
},
|
|
85
|
+
|
|
86
|
+
/**
|
|
87
|
+
* Defines the button which will open the start overflow menu if available. If nothing is provided to this slot,
|
|
88
|
+
* the default button will be used.
|
|
89
|
+
*
|
|
90
|
+
* @type {sap.ui.webcomponents.main.IButton}
|
|
91
|
+
* @public
|
|
92
|
+
* @slot
|
|
93
|
+
* @since 1.1.0
|
|
94
|
+
*/
|
|
95
|
+
startOverflowButton: {
|
|
96
|
+
type: HTMLElement,
|
|
97
|
+
},
|
|
76
98
|
},
|
|
77
99
|
properties: /** @lends sap.ui.webcomponents.main.TabContainer.prototype */ {
|
|
78
100
|
/**
|
|
@@ -99,7 +121,7 @@ const metadata = {
|
|
|
99
121
|
},
|
|
100
122
|
|
|
101
123
|
/**
|
|
102
|
-
* Defines the placement of the tab strip
|
|
124
|
+
* Defines the placement of the tab strip relative to the actual tabs' content.
|
|
103
125
|
* <br><br>
|
|
104
126
|
* <b>Note:</b> By default the tab strip is displayed above the tabs' content area and this is the recommended
|
|
105
127
|
* layout for most scenarios. Set to <code>Bottom</code> only when the component is at the
|
|
@@ -125,12 +147,14 @@ const metadata = {
|
|
|
125
147
|
/**
|
|
126
148
|
* Defines whether the overflow select list is displayed.
|
|
127
149
|
* <br><br>
|
|
128
|
-
* The overflow select list represents a list, where all
|
|
129
|
-
* so that it's easier for the user to select a specific tab
|
|
150
|
+
* The overflow select list represents a list, where all tabs are displayed
|
|
151
|
+
* so that it's easier for the user to select a specific tab.
|
|
130
152
|
*
|
|
131
153
|
* @type {boolean}
|
|
132
154
|
* @defaultvalue false
|
|
133
155
|
* @public
|
|
156
|
+
* @deprecated Since the introduction of TabsOverflowMode overflows will always be visible if there is not enough space for all tabs,
|
|
157
|
+
* all hidden tabs are moved to a select list in the respective overflows and are accessible via the overflowButton and / or startOverflowButton
|
|
134
158
|
*/
|
|
135
159
|
showOverflow: {
|
|
136
160
|
type: Boolean,
|
|
@@ -160,6 +184,32 @@ const metadata = {
|
|
|
160
184
|
defaultValue: TabLayout.Standard,
|
|
161
185
|
},
|
|
162
186
|
|
|
187
|
+
/**
|
|
188
|
+
* Defines the overflow mode of the tab strip. If you have a large number of tabs, only the tabs that can fit on screen will be visible.
|
|
189
|
+
* All other tabs that can 't fit on the screen are available in an overflow tab "More".
|
|
190
|
+
*
|
|
191
|
+
* <br><br>
|
|
192
|
+
* <b>Note:</b>
|
|
193
|
+
* Only one overflow at the end would be displayed by default,
|
|
194
|
+
* but when set to <code>StartAndEnd</code>, there will be two overflows on both ends, and tab order will not change on tab selection.
|
|
195
|
+
*
|
|
196
|
+
* <br><br>
|
|
197
|
+
* Available options are:
|
|
198
|
+
* <ul>
|
|
199
|
+
* <li><code>End</code></li>
|
|
200
|
+
* <li><code>StartAndEnd</code></li>
|
|
201
|
+
* </ul>
|
|
202
|
+
*
|
|
203
|
+
* @type {TabsOverflowMode}
|
|
204
|
+
* @defaultvalue "End"
|
|
205
|
+
* @since 1.1.0
|
|
206
|
+
* @public
|
|
207
|
+
*/
|
|
208
|
+
tabsOverflowMode: {
|
|
209
|
+
type: TabsOverflowMode,
|
|
210
|
+
defaultValue: TabsOverflowMode.End,
|
|
211
|
+
},
|
|
212
|
+
|
|
163
213
|
/**
|
|
164
214
|
* Defines the current media query size.
|
|
165
215
|
*
|
|
@@ -174,29 +224,35 @@ const metadata = {
|
|
|
174
224
|
type: Object,
|
|
175
225
|
},
|
|
176
226
|
|
|
177
|
-
|
|
227
|
+
_animationRunning: {
|
|
178
228
|
type: Boolean,
|
|
179
229
|
noAttribute: true,
|
|
180
230
|
},
|
|
181
231
|
|
|
182
|
-
|
|
232
|
+
_contentCollapsed: {
|
|
183
233
|
type: Boolean,
|
|
184
234
|
noAttribute: true,
|
|
185
235
|
},
|
|
186
236
|
|
|
187
|
-
|
|
188
|
-
type:
|
|
237
|
+
_startOverflowText: {
|
|
238
|
+
type: String,
|
|
189
239
|
noAttribute: true,
|
|
190
240
|
},
|
|
191
241
|
|
|
192
|
-
|
|
193
|
-
type:
|
|
242
|
+
_endOverflowText: {
|
|
243
|
+
type: String,
|
|
194
244
|
noAttribute: true,
|
|
245
|
+
defaultValue: "More",
|
|
195
246
|
},
|
|
196
247
|
|
|
197
|
-
|
|
198
|
-
type:
|
|
199
|
-
|
|
248
|
+
_startOverflowItems: {
|
|
249
|
+
type: Object,
|
|
250
|
+
multiple: true,
|
|
251
|
+
},
|
|
252
|
+
|
|
253
|
+
_endOverflowItems: {
|
|
254
|
+
type: Object,
|
|
255
|
+
multiple: true,
|
|
200
256
|
},
|
|
201
257
|
},
|
|
202
258
|
events: /** @lends sap.ui.webcomponents.main.TabContainer.prototype */ {
|
|
@@ -235,6 +291,14 @@ const metadata = {
|
|
|
235
291
|
* <li><code>ui5-tab-separator</code> - used to separate tabs with a vertical line</li>
|
|
236
292
|
* </ul>
|
|
237
293
|
*
|
|
294
|
+
* <h3>Keyboard Handling</h3>
|
|
295
|
+
*
|
|
296
|
+
* <h4>Fast Navigation</h4>
|
|
297
|
+
* This component provides a build in fast navigation group which can be used via <code>F6 / Shift + F6</code> or <code> Ctrl + Alt(Option) + Down / Ctrl + Alt(Option) + Up</code>.
|
|
298
|
+
* In order to use this functionality, you need to import the following module:
|
|
299
|
+
* <code>import "@ui5/webcomponents-base/dist/features/F6Navigation.js"</code>
|
|
300
|
+
* <br><br>
|
|
301
|
+
*
|
|
238
302
|
* <h3>ES6 Module Import</h3>
|
|
239
303
|
*
|
|
240
304
|
* <code>import "@ui5/webcomponents/dist/TabContainer";</code>
|
|
@@ -289,17 +353,25 @@ class TabContainer extends UI5Element {
|
|
|
289
353
|
|
|
290
354
|
this._handleResize = this._handleResize.bind(this);
|
|
291
355
|
|
|
292
|
-
// Init ScrollEnablement
|
|
293
|
-
this._scrollEnablement = new ScrollEnablement(this);
|
|
294
|
-
this._scrollEnablement.attachEvent("scroll", this._updateScrolling.bind(this));
|
|
295
|
-
|
|
296
356
|
// Init ItemNavigation
|
|
297
357
|
this._itemNavigation = new ItemNavigation(this, {
|
|
298
|
-
getItemsCallback: () => this.
|
|
358
|
+
getItemsCallback: () => this._getFocusableTabs(),
|
|
299
359
|
});
|
|
300
360
|
}
|
|
301
361
|
|
|
302
362
|
onBeforeRendering() {
|
|
363
|
+
// update selected tab
|
|
364
|
+
const tabs = this._getTabs();
|
|
365
|
+
if (tabs.length) {
|
|
366
|
+
const selectedTabs = tabs.filter(tab => tab.selected);
|
|
367
|
+
if (selectedTabs.length) {
|
|
368
|
+
this._selectedTab = selectedTabs[0];
|
|
369
|
+
} else {
|
|
370
|
+
this._selectedTab = tabs[0];
|
|
371
|
+
this._selectedTab._selected = true;
|
|
372
|
+
}
|
|
373
|
+
}
|
|
374
|
+
|
|
303
375
|
// Set external properties to items
|
|
304
376
|
this.items.filter(item => !item.isSeparator).forEach((item, index, arr) => {
|
|
305
377
|
item._isInline = this.tabLayout === TabLayout.Inline;
|
|
@@ -316,12 +388,13 @@ class TabContainer extends UI5Element {
|
|
|
316
388
|
if (!this._animationRunning) {
|
|
317
389
|
this._contentCollapsed = this.collapsed;
|
|
318
390
|
}
|
|
391
|
+
|
|
392
|
+
if (this.showOverflow) {
|
|
393
|
+
console.warn(`The "show-overflow" property is deprecated and will be removed in a future release.`); // eslint-disable-line
|
|
394
|
+
}
|
|
319
395
|
}
|
|
320
396
|
|
|
321
397
|
onAfterRendering() {
|
|
322
|
-
this._scrollEnablement.scrollContainer = this._getHeaderScrollContainer();
|
|
323
|
-
this._updateScrolling();
|
|
324
|
-
|
|
325
398
|
this.items.forEach(item => {
|
|
326
399
|
item._getTabInStripDomRef = this.getDomRef().querySelector(`*[data-ui5-stable="${item.stableDomRef}"]`);
|
|
327
400
|
});
|
|
@@ -335,27 +408,7 @@ class TabContainer extends UI5Element {
|
|
|
335
408
|
ResizeHandler.deregister(this._getHeader(), this._handleResize);
|
|
336
409
|
}
|
|
337
410
|
|
|
338
|
-
|
|
339
|
-
const target = event.target;
|
|
340
|
-
|
|
341
|
-
if (!this._scrollable || !target.classList.contains("ui5-tab-strip-item")) {
|
|
342
|
-
return;
|
|
343
|
-
}
|
|
344
|
-
|
|
345
|
-
const headerScrollContainer = this._getHeaderScrollContainer();
|
|
346
|
-
const leftArrowWidth = this.shadowRoot.querySelector(".ui5-tc__headerArrowLeft").offsetWidth;
|
|
347
|
-
const rightArrowWidth = this.shadowRoot.querySelector(".ui5-tc__headerArrowRight").offsetWidth;
|
|
348
|
-
|
|
349
|
-
if (this._scrollableBack && (target.offsetLeft - leftArrowWidth < headerScrollContainer.scrollLeft)) {
|
|
350
|
-
this._scrollEnablement.move(target.offsetLeft - leftArrowWidth - headerScrollContainer.scrollLeft, 0, true);
|
|
351
|
-
this._updateScrolling();
|
|
352
|
-
} else if (this._scrollableForward && (target.offsetLeft + target.offsetWidth > headerScrollContainer.scrollLeft + headerScrollContainer.offsetWidth - rightArrowWidth)) {
|
|
353
|
-
this._scrollEnablement.move(target.offsetLeft + target.offsetWidth - headerScrollContainer.scrollLeft - headerScrollContainer.offsetWidth + rightArrowWidth, 0, true);
|
|
354
|
-
this._updateScrolling();
|
|
355
|
-
}
|
|
356
|
-
}
|
|
357
|
-
|
|
358
|
-
_onHeaderClick(event) {
|
|
411
|
+
_onTabStripClick(event) {
|
|
359
412
|
const tab = getTab(event.target);
|
|
360
413
|
if (!tab) {
|
|
361
414
|
return;
|
|
@@ -364,7 +417,7 @@ class TabContainer extends UI5Element {
|
|
|
364
417
|
this._onHeaderItemSelect(tab);
|
|
365
418
|
}
|
|
366
419
|
|
|
367
|
-
|
|
420
|
+
_onTabStripKeyDown(event) {
|
|
368
421
|
const tab = getTab(event.target);
|
|
369
422
|
if (!tab) {
|
|
370
423
|
return;
|
|
@@ -380,7 +433,7 @@ class TabContainer extends UI5Element {
|
|
|
380
433
|
}
|
|
381
434
|
}
|
|
382
435
|
|
|
383
|
-
|
|
436
|
+
_onTabStripKeyUp(event) {
|
|
384
437
|
const tab = getTab(event.target);
|
|
385
438
|
if (!tab) {
|
|
386
439
|
return;
|
|
@@ -394,13 +447,21 @@ class TabContainer extends UI5Element {
|
|
|
394
447
|
_onHeaderItemSelect(tab) {
|
|
395
448
|
if (!tab.hasAttribute("disabled")) {
|
|
396
449
|
this._onItemSelect(tab);
|
|
450
|
+
|
|
451
|
+
if (!this.isModeStartAndEnd) {
|
|
452
|
+
this._setItemsForStrip();
|
|
453
|
+
}
|
|
397
454
|
}
|
|
398
455
|
}
|
|
399
456
|
|
|
400
|
-
|
|
401
|
-
|
|
457
|
+
_onOverflowListItemClick(event) {
|
|
458
|
+
event.preventDefault(); // cancel the item selection
|
|
459
|
+
const { item } = event.detail;
|
|
460
|
+
|
|
461
|
+
this._onItemSelect(item);
|
|
402
462
|
this.responsivePopover.close();
|
|
403
|
-
this.
|
|
463
|
+
this._setItemsForStrip();
|
|
464
|
+
this.shadowRoot.querySelector(`#${item.id}`).focus();
|
|
404
465
|
}
|
|
405
466
|
|
|
406
467
|
_onItemSelect(target) {
|
|
@@ -409,16 +470,15 @@ class TabContainer extends UI5Element {
|
|
|
409
470
|
const selectedTab = this.items[selectedIndex];
|
|
410
471
|
|
|
411
472
|
// update selected items
|
|
412
|
-
this.items
|
|
413
|
-
|
|
473
|
+
this.items
|
|
474
|
+
.forEach((item, index) => {
|
|
414
475
|
const selected = selectedIndex === index;
|
|
415
476
|
item.selected = selected;
|
|
416
477
|
|
|
417
|
-
if (
|
|
418
|
-
|
|
478
|
+
if (item._selected) {
|
|
479
|
+
item._selected = false;
|
|
419
480
|
}
|
|
420
|
-
}
|
|
421
|
-
}, this);
|
|
481
|
+
});
|
|
422
482
|
|
|
423
483
|
if (this.fixed) {
|
|
424
484
|
this.selectTab(selectedTab, selectedTabIndex);
|
|
@@ -481,34 +541,343 @@ class TabContainer extends UI5Element {
|
|
|
481
541
|
return slideUp({ element }).promise();
|
|
482
542
|
}
|
|
483
543
|
|
|
484
|
-
async
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
if (event.target !== button) {
|
|
544
|
+
async _onOverflowClick(event) {
|
|
545
|
+
if (event.target.classList.contains("ui5-tc__overflow")) {
|
|
546
|
+
// the empty area in the overflow was clicked
|
|
488
547
|
return;
|
|
489
548
|
}
|
|
490
549
|
|
|
550
|
+
const overflow = event.currentTarget;
|
|
551
|
+
const isEndOverflow = overflow.classList.contains("ui5-tc__overflow--end");
|
|
552
|
+
const isStartOverflow = overflow.classList.contains("ui5-tc__overflow--start");
|
|
553
|
+
const items = [];
|
|
554
|
+
|
|
555
|
+
const overflowAttr = isEndOverflow ? "end-overflow" : "start-overflow";
|
|
556
|
+
|
|
557
|
+
this._startOverflowItems = [];
|
|
558
|
+
this._endOverflowItems = [];
|
|
559
|
+
|
|
560
|
+
this.items.forEach(item => {
|
|
561
|
+
if (item.getTabInStripDomRef() && item.getTabInStripDomRef().hasAttribute(overflowAttr)) {
|
|
562
|
+
items.push(item);
|
|
563
|
+
}
|
|
564
|
+
});
|
|
565
|
+
|
|
566
|
+
let button;
|
|
567
|
+
if (isEndOverflow) {
|
|
568
|
+
button = this.overflowButton[0] || overflow.querySelector("[ui5-button]");
|
|
569
|
+
this._endOverflowItems = items;
|
|
570
|
+
}
|
|
571
|
+
|
|
572
|
+
if (isStartOverflow) {
|
|
573
|
+
button = this.startOverflowButton[0] || overflow.querySelector("[ui5-button]");
|
|
574
|
+
this._startOverflowItems = items;
|
|
575
|
+
}
|
|
576
|
+
|
|
491
577
|
this.responsivePopover = await this._respPopover();
|
|
492
578
|
if (this.responsivePopover.opened) {
|
|
493
579
|
this.responsivePopover.close();
|
|
494
580
|
} else {
|
|
581
|
+
this.responsivePopover.initialFocus = this.responsivePopover.content[0].items.filter(item => item.classList.contains("ui5-tab-overflow-item"))[0].id;
|
|
495
582
|
this.responsivePopover.showAt(button);
|
|
496
583
|
}
|
|
497
584
|
}
|
|
498
585
|
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
}
|
|
586
|
+
async _onOverflowKeyDown(event) {
|
|
587
|
+
const isEndOverflow = event.currentTarget.classList.contains("ui5-tc__overflow--end");
|
|
588
|
+
const isStartOverflow = event.currentTarget.classList.contains("ui5-tc__overflow--start");
|
|
503
589
|
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
590
|
+
switch (true) {
|
|
591
|
+
case isDown(event):
|
|
592
|
+
case isStartOverflow && isLeft(event):
|
|
593
|
+
case isEndOverflow && isRight(event):
|
|
594
|
+
await this._onOverflowClick(event);
|
|
595
|
+
}
|
|
507
596
|
}
|
|
508
597
|
|
|
509
598
|
_handleResize() {
|
|
510
|
-
this.
|
|
599
|
+
if (this.responsivePopover && this.responsivePopover.opened) {
|
|
600
|
+
this.responsivePopover.close();
|
|
601
|
+
}
|
|
511
602
|
this._updateMediaRange();
|
|
603
|
+
this._setItemsForStrip();
|
|
604
|
+
}
|
|
605
|
+
|
|
606
|
+
_setItemsForStrip() {
|
|
607
|
+
const tabStrip = this._getTabStrip();
|
|
608
|
+
let allItemsWidth = 0;
|
|
609
|
+
|
|
610
|
+
if (!this._selectedTab) {
|
|
611
|
+
return;
|
|
612
|
+
}
|
|
613
|
+
|
|
614
|
+
const itemsDomRefs = this.items.map(item => item.getTabInStripDomRef());
|
|
615
|
+
|
|
616
|
+
// make sure the overflows are hidden
|
|
617
|
+
this._getStartOverflow().setAttribute("hidden", "");
|
|
618
|
+
this._getEndOverflow().setAttribute("hidden", "");
|
|
619
|
+
|
|
620
|
+
// show all tabs
|
|
621
|
+
for (let i = 0; i < itemsDomRefs.length; i++) {
|
|
622
|
+
itemsDomRefs[i].removeAttribute("hidden");
|
|
623
|
+
itemsDomRefs[i].removeAttribute("start-overflow");
|
|
624
|
+
itemsDomRefs[i].removeAttribute("end-overflow");
|
|
625
|
+
}
|
|
626
|
+
|
|
627
|
+
itemsDomRefs.forEach(item => {
|
|
628
|
+
allItemsWidth += this._getItemWidth(item);
|
|
629
|
+
});
|
|
630
|
+
|
|
631
|
+
const hasOverflow = tabStrip.offsetWidth < allItemsWidth;
|
|
632
|
+
|
|
633
|
+
if (!hasOverflow) {
|
|
634
|
+
this._closeRespPopover();
|
|
635
|
+
return;
|
|
636
|
+
}
|
|
637
|
+
|
|
638
|
+
if (this.isModeStartAndEnd) {
|
|
639
|
+
this._updateStartAndEndOverflow(itemsDomRefs);
|
|
640
|
+
this._updateOverflowCounters();
|
|
641
|
+
} else {
|
|
642
|
+
this._updateEndOverflow(itemsDomRefs);
|
|
643
|
+
}
|
|
644
|
+
|
|
645
|
+
this._itemNavigation._init();
|
|
646
|
+
this._itemNavigation.setCurrentItem(this._selectedTab);
|
|
647
|
+
}
|
|
648
|
+
|
|
649
|
+
_updateEndOverflow(itemsDomRefs) {
|
|
650
|
+
// show end overflow
|
|
651
|
+
this._getEndOverflow().removeAttribute("hidden");
|
|
652
|
+
|
|
653
|
+
const selectedTabDomRef = this._selectedTab.getTabInStripDomRef();
|
|
654
|
+
const containerWidth = this._getTabStrip().offsetWidth;
|
|
655
|
+
|
|
656
|
+
const selectedItemIndexAndWidth = this._getSelectedItemIndexAndWidth(itemsDomRefs, selectedTabDomRef);
|
|
657
|
+
const lastVisibleTabIndex = this._findLastVisibleItem(itemsDomRefs, containerWidth, selectedItemIndexAndWidth.width);
|
|
658
|
+
|
|
659
|
+
for (let i = lastVisibleTabIndex + 1; i < itemsDomRefs.length; i++) {
|
|
660
|
+
itemsDomRefs[i].setAttribute("hidden", "");
|
|
661
|
+
itemsDomRefs[i].setAttribute("end-overflow", "");
|
|
662
|
+
}
|
|
663
|
+
|
|
664
|
+
this._endOverflowText = this.overflowButtonText;
|
|
665
|
+
}
|
|
666
|
+
|
|
667
|
+
_updateStartAndEndOverflow(itemsDomRefs) {
|
|
668
|
+
let containerWidth = this._getTabStrip().offsetWidth;
|
|
669
|
+
const selectedTabDomRef = this._selectedTab.getTabInStripDomRef();
|
|
670
|
+
const selectedItemIndexAndWidth = this._getSelectedItemIndexAndWidth(itemsDomRefs, selectedTabDomRef);
|
|
671
|
+
const hasStartOverflow = this._hasStartOverflow(containerWidth, itemsDomRefs, selectedItemIndexAndWidth);
|
|
672
|
+
const hasEndOverflow = this._hasEndOverflow(containerWidth, itemsDomRefs, selectedItemIndexAndWidth);
|
|
673
|
+
let firstVisible;
|
|
674
|
+
let lastVisible;
|
|
675
|
+
|
|
676
|
+
// has "end", but no "start" overflow
|
|
677
|
+
if (!hasStartOverflow) {
|
|
678
|
+
// show "end" overflow
|
|
679
|
+
this._getEndOverflow().removeAttribute("hidden");
|
|
680
|
+
// width is changed
|
|
681
|
+
containerWidth = this._getTabStrip().offsetWidth;
|
|
682
|
+
|
|
683
|
+
lastVisible = this._findLastVisibleItem(itemsDomRefs, containerWidth, selectedItemIndexAndWidth.width);
|
|
684
|
+
|
|
685
|
+
for (let i = lastVisible + 1; i < itemsDomRefs.length; i++) {
|
|
686
|
+
itemsDomRefs[i].setAttribute("hidden", "");
|
|
687
|
+
itemsDomRefs[i].setAttribute("end-overflow", "");
|
|
688
|
+
}
|
|
689
|
+
|
|
690
|
+
return;
|
|
691
|
+
}
|
|
692
|
+
|
|
693
|
+
// has "start", but no "end" overflow
|
|
694
|
+
if (!hasEndOverflow) {
|
|
695
|
+
// show "start" overflow
|
|
696
|
+
this._getStartOverflow().removeAttribute("hidden");
|
|
697
|
+
// width is changed
|
|
698
|
+
containerWidth = this._getTabStrip().offsetWidth;
|
|
699
|
+
|
|
700
|
+
firstVisible = this._findFirstVisibleItem(itemsDomRefs, containerWidth, selectedItemIndexAndWidth.width);
|
|
701
|
+
|
|
702
|
+
for (let i = firstVisible - 1; i >= 0; i--) {
|
|
703
|
+
itemsDomRefs[i].setAttribute("hidden", "");
|
|
704
|
+
itemsDomRefs[i].setAttribute("start-overflow", "");
|
|
705
|
+
}
|
|
706
|
+
|
|
707
|
+
return;
|
|
708
|
+
}
|
|
709
|
+
|
|
710
|
+
// show "start" overflow
|
|
711
|
+
this._getStartOverflow().removeAttribute("hidden");
|
|
712
|
+
// show "end" overflow
|
|
713
|
+
this._getEndOverflow().removeAttribute("hidden");
|
|
714
|
+
// width is changed
|
|
715
|
+
containerWidth = this._getTabStrip().offsetWidth;
|
|
716
|
+
|
|
717
|
+
firstVisible = this._findFirstVisibleItem(itemsDomRefs, containerWidth, selectedItemIndexAndWidth.width, selectedItemIndexAndWidth.index - 1);
|
|
718
|
+
lastVisible = this._findLastVisibleItem(itemsDomRefs, containerWidth, selectedItemIndexAndWidth.width, firstVisible);
|
|
719
|
+
|
|
720
|
+
for (let i = firstVisible - 1; i >= 0; i--) {
|
|
721
|
+
itemsDomRefs[i].setAttribute("hidden", "");
|
|
722
|
+
itemsDomRefs[i].setAttribute("start-overflow", "");
|
|
723
|
+
}
|
|
724
|
+
|
|
725
|
+
for (let i = lastVisible + 1; i < itemsDomRefs.length; i++) {
|
|
726
|
+
itemsDomRefs[i].setAttribute("hidden", "");
|
|
727
|
+
itemsDomRefs[i].setAttribute("end-overflow", "");
|
|
728
|
+
}
|
|
729
|
+
}
|
|
730
|
+
|
|
731
|
+
_hasStartOverflow(containerWidth, itemsDomRefs, selectedItemIndexAndWidth) {
|
|
732
|
+
if (selectedItemIndexAndWidth.index === 0) {
|
|
733
|
+
return false;
|
|
734
|
+
}
|
|
735
|
+
|
|
736
|
+
let leftItemsWidth = 0;
|
|
737
|
+
|
|
738
|
+
for (let i = selectedItemIndexAndWidth.index - 1; i >= 0; i--) {
|
|
739
|
+
leftItemsWidth += this._getItemWidth(itemsDomRefs[i]);
|
|
740
|
+
}
|
|
741
|
+
|
|
742
|
+
let hasStartOverflow = containerWidth < leftItemsWidth + selectedItemIndexAndWidth.width;
|
|
743
|
+
|
|
744
|
+
// if there is no "start" overflow, it has "end" overflow
|
|
745
|
+
// check it again with the "end" overflow
|
|
746
|
+
if (!hasStartOverflow) {
|
|
747
|
+
this._getEndOverflow().removeAttribute("hidden");
|
|
748
|
+
containerWidth = this._getTabStrip().offsetWidth;
|
|
749
|
+
hasStartOverflow = containerWidth < leftItemsWidth + selectedItemIndexAndWidth.width;
|
|
750
|
+
this._getEndOverflow().setAttribute("hidden", "");
|
|
751
|
+
}
|
|
752
|
+
|
|
753
|
+
return hasStartOverflow;
|
|
754
|
+
}
|
|
755
|
+
|
|
756
|
+
_hasEndOverflow(containerWidth, itemsDomRefs, selectedItemIndexAndWidth) {
|
|
757
|
+
if (selectedItemIndexAndWidth.index >= itemsDomRefs.length) {
|
|
758
|
+
return false;
|
|
759
|
+
}
|
|
760
|
+
|
|
761
|
+
let rightItemsWidth = 0;
|
|
762
|
+
|
|
763
|
+
for (let i = selectedItemIndexAndWidth.index; i < itemsDomRefs.length; i++) {
|
|
764
|
+
rightItemsWidth += this._getItemWidth(itemsDomRefs[i]);
|
|
765
|
+
}
|
|
766
|
+
|
|
767
|
+
let hasEndOverflow = containerWidth < rightItemsWidth + selectedItemIndexAndWidth.width;
|
|
768
|
+
|
|
769
|
+
// if there is no "end" overflow, it has "start" overflow
|
|
770
|
+
// check it again with the "start" overflow
|
|
771
|
+
if (!hasEndOverflow) {
|
|
772
|
+
this._getStartOverflow().removeAttribute("hidden");
|
|
773
|
+
containerWidth = this._getTabStrip().offsetWidth;
|
|
774
|
+
hasEndOverflow = containerWidth < rightItemsWidth + selectedItemIndexAndWidth.width;
|
|
775
|
+
this._getStartOverflow().setAttribute("hidden", "");
|
|
776
|
+
}
|
|
777
|
+
|
|
778
|
+
return hasEndOverflow;
|
|
779
|
+
}
|
|
780
|
+
|
|
781
|
+
_getItemWidth(itemDomRef) {
|
|
782
|
+
const styles = window.getComputedStyle(itemDomRef);
|
|
783
|
+
const margins = Number.parseInt(styles.marginLeft) + Number.parseInt(styles.marginRight);
|
|
784
|
+
|
|
785
|
+
return itemDomRef.offsetWidth + margins;
|
|
786
|
+
}
|
|
787
|
+
|
|
788
|
+
_getSelectedItemIndexAndWidth(itemsDomRefs, selectedTabDomRef) {
|
|
789
|
+
let index = itemsDomRefs.indexOf(selectedTabDomRef);
|
|
790
|
+
let width = selectedTabDomRef.offsetWidth;
|
|
791
|
+
let selectedSeparator;
|
|
792
|
+
|
|
793
|
+
if (itemsDomRefs[index - 1] && itemsDomRefs[index - 1].isSeparator) {
|
|
794
|
+
selectedSeparator = itemsDomRefs[index - 1];
|
|
795
|
+
width += this._getItemWidth(selectedSeparator);
|
|
796
|
+
}
|
|
797
|
+
|
|
798
|
+
itemsDomRefs.splice(index, 1);
|
|
799
|
+
|
|
800
|
+
// if previous item is a separator - remove it
|
|
801
|
+
if (selectedSeparator) {
|
|
802
|
+
itemsDomRefs.splice(index - 1, 1);
|
|
803
|
+
index--;
|
|
804
|
+
}
|
|
805
|
+
|
|
806
|
+
return {
|
|
807
|
+
index,
|
|
808
|
+
width,
|
|
809
|
+
};
|
|
810
|
+
}
|
|
811
|
+
|
|
812
|
+
_findFirstVisibleItem(itemsDomRefs, containerWidth, selectedItemWidth, startIndex) {
|
|
813
|
+
if (startIndex === undefined) {
|
|
814
|
+
startIndex = itemsDomRefs.length - 1;
|
|
815
|
+
}
|
|
816
|
+
|
|
817
|
+
let lastVisible = startIndex + 1;
|
|
818
|
+
|
|
819
|
+
for (let index = startIndex; index >= 0; index--) {
|
|
820
|
+
const itemWidth = this._getItemWidth(itemsDomRefs[index]);
|
|
821
|
+
|
|
822
|
+
if (containerWidth < selectedItemWidth + itemWidth) {
|
|
823
|
+
break;
|
|
824
|
+
}
|
|
825
|
+
|
|
826
|
+
selectedItemWidth += itemWidth;
|
|
827
|
+
lastVisible = index;
|
|
828
|
+
}
|
|
829
|
+
|
|
830
|
+
return lastVisible;
|
|
831
|
+
}
|
|
832
|
+
|
|
833
|
+
_findLastVisibleItem(itemsDomRefs, containerWidth, selectedItemWidth, startIndex) {
|
|
834
|
+
startIndex = startIndex || 0;
|
|
835
|
+
|
|
836
|
+
let lastVisibleIndex = startIndex - 1;
|
|
837
|
+
let index = startIndex;
|
|
838
|
+
|
|
839
|
+
for (; index < itemsDomRefs.length; index++) {
|
|
840
|
+
const itemWidth = this._getItemWidth(itemsDomRefs[index]);
|
|
841
|
+
|
|
842
|
+
if (containerWidth < selectedItemWidth + itemWidth) {
|
|
843
|
+
break;
|
|
844
|
+
}
|
|
845
|
+
|
|
846
|
+
selectedItemWidth += itemWidth;
|
|
847
|
+
lastVisibleIndex = index;
|
|
848
|
+
}
|
|
849
|
+
|
|
850
|
+
// if prev item is separator - hide it
|
|
851
|
+
const prevItem = itemsDomRefs[index - 1];
|
|
852
|
+
if (prevItem && prevItem.isSeparator) {
|
|
853
|
+
lastVisibleIndex -= 1;
|
|
854
|
+
}
|
|
855
|
+
|
|
856
|
+
return lastVisibleIndex;
|
|
857
|
+
}
|
|
858
|
+
|
|
859
|
+
get isModeStartAndEnd() {
|
|
860
|
+
return this.tabsOverflowMode === TabsOverflowMode.StartAndEnd;
|
|
861
|
+
}
|
|
862
|
+
|
|
863
|
+
_updateOverflowCounters() {
|
|
864
|
+
let startOverflowItemsCount = 0;
|
|
865
|
+
let endOverflowItemsCount = 0;
|
|
866
|
+
|
|
867
|
+
this._getTabs()
|
|
868
|
+
.map(tab => tab.getTabInStripDomRef())
|
|
869
|
+
.forEach(tab => {
|
|
870
|
+
if (tab.hasAttribute("start-overflow")) {
|
|
871
|
+
startOverflowItemsCount++;
|
|
872
|
+
}
|
|
873
|
+
|
|
874
|
+
if (tab.hasAttribute("end-overflow")) {
|
|
875
|
+
endOverflowItemsCount++;
|
|
876
|
+
}
|
|
877
|
+
});
|
|
878
|
+
|
|
879
|
+
this._startOverflowText = `+${startOverflowItemsCount}`;
|
|
880
|
+
this._endOverflowText = `+${endOverflowItemsCount}`;
|
|
512
881
|
}
|
|
513
882
|
|
|
514
883
|
async _closeRespPopover() {
|
|
@@ -516,16 +885,28 @@ class TabContainer extends UI5Element {
|
|
|
516
885
|
this.responsivePopover.close();
|
|
517
886
|
}
|
|
518
887
|
|
|
519
|
-
|
|
520
|
-
|
|
888
|
+
_getFocusableTabs() {
|
|
889
|
+
if (!this.getDomRef()) {
|
|
890
|
+
return [];
|
|
891
|
+
}
|
|
521
892
|
|
|
522
|
-
|
|
523
|
-
this._scrollableBack = headerScrollContainer.scrollLeft > 0;
|
|
524
|
-
this._scrollableForward = Math.ceil(headerScrollContainer.scrollLeft) < headerScrollContainer.scrollWidth - headerScrollContainer.offsetWidth;
|
|
893
|
+
const focusableTabs = [];
|
|
525
894
|
|
|
526
|
-
if (!this.
|
|
527
|
-
this.
|
|
895
|
+
if (!this._getStartOverflow().hasAttribute("hidden")) {
|
|
896
|
+
focusableTabs.push(this._getStartOverflow().querySelector("[ui5-button]"));
|
|
528
897
|
}
|
|
898
|
+
|
|
899
|
+
this._getTabs().forEach(tab => {
|
|
900
|
+
if (tab.getTabInStripDomRef() && !tab.getTabInStripDomRef().hasAttribute("hidden")) {
|
|
901
|
+
focusableTabs.push(tab);
|
|
902
|
+
}
|
|
903
|
+
});
|
|
904
|
+
|
|
905
|
+
if (!this._getEndOverflow().hasAttribute("hidden")) {
|
|
906
|
+
focusableTabs.push(this._getEndOverflow().querySelector("[ui5-button]"));
|
|
907
|
+
}
|
|
908
|
+
|
|
909
|
+
return focusableTabs;
|
|
529
910
|
}
|
|
530
911
|
|
|
531
912
|
_updateMediaRange() {
|
|
@@ -540,8 +921,16 @@ class TabContainer extends UI5Element {
|
|
|
540
921
|
return this.items.filter(item => !item.isSeparator);
|
|
541
922
|
}
|
|
542
923
|
|
|
543
|
-
|
|
544
|
-
return this.shadowRoot.querySelector(`#${this._id}-
|
|
924
|
+
_getTabStrip() {
|
|
925
|
+
return this.shadowRoot.querySelector(`#${this._id}-tabStrip`);
|
|
926
|
+
}
|
|
927
|
+
|
|
928
|
+
_getStartOverflow() {
|
|
929
|
+
return this.shadowRoot.querySelector(".ui5-tc__overflow--start");
|
|
930
|
+
}
|
|
931
|
+
|
|
932
|
+
_getEndOverflow() {
|
|
933
|
+
return this.shadowRoot.querySelector(".ui5-tc__overflow--end");
|
|
545
934
|
}
|
|
546
935
|
|
|
547
936
|
async _respPopover() {
|
|
@@ -549,44 +938,23 @@ class TabContainer extends UI5Element {
|
|
|
549
938
|
return staticAreaItem.querySelector(`#${this._id}-overflowMenu`);
|
|
550
939
|
}
|
|
551
940
|
|
|
552
|
-
get shouldShowOverflow() {
|
|
553
|
-
return this.showOverflow && this._scrollable;
|
|
554
|
-
}
|
|
555
|
-
|
|
556
941
|
get classes() {
|
|
557
942
|
return {
|
|
558
943
|
root: {
|
|
559
944
|
"ui5-tc-root": true,
|
|
560
945
|
"ui5-tc--textOnly": this.textOnly,
|
|
561
|
-
"ui5-tc--
|
|
946
|
+
"ui5-tc--withAdditionalText": this.withAdditionalText,
|
|
562
947
|
"ui5-tc--standardTabLayout": this.standardTabLayout,
|
|
563
948
|
},
|
|
564
949
|
header: {
|
|
565
950
|
"ui5-tc__header": true,
|
|
566
|
-
"ui5-tc__header--scrollable": this._scrollable,
|
|
567
951
|
},
|
|
568
|
-
|
|
569
|
-
"ui5-
|
|
570
|
-
},
|
|
571
|
-
headerScrollContainer: {
|
|
572
|
-
"ui-tc__headerScrollContainer": true,
|
|
573
|
-
},
|
|
574
|
-
headerList: {
|
|
575
|
-
"ui5-tc__headerList": true,
|
|
952
|
+
tabStrip: {
|
|
953
|
+
"ui5-tc__tabStrip": true,
|
|
576
954
|
},
|
|
577
955
|
separator: {
|
|
578
956
|
"ui5-tc__separator": true,
|
|
579
957
|
},
|
|
580
|
-
headerBackArrow: {
|
|
581
|
-
"ui5-tc__headerArrow": true,
|
|
582
|
-
"ui5-tc__headerArrowLeft": true,
|
|
583
|
-
"ui5-tc__headerArrow--visible": this._scrollableBack,
|
|
584
|
-
},
|
|
585
|
-
headerForwardArrow: {
|
|
586
|
-
"ui5-tc__headerArrow": true,
|
|
587
|
-
"ui5-tc__headerArrowRight": true,
|
|
588
|
-
"ui5-tc__headerArrow--visible": this._scrollableForward,
|
|
589
|
-
},
|
|
590
958
|
content: {
|
|
591
959
|
"ui5-tc__content": true,
|
|
592
960
|
"ui5-tc__content--collapsed": this._contentCollapsed,
|
|
@@ -602,7 +970,7 @@ class TabContainer extends UI5Element {
|
|
|
602
970
|
return this.items.every(item => !item.icon);
|
|
603
971
|
}
|
|
604
972
|
|
|
605
|
-
get
|
|
973
|
+
get withAdditionalText() {
|
|
606
974
|
return this.items.some(item => !!item.additionalText);
|
|
607
975
|
}
|
|
608
976
|
|
|
@@ -630,6 +998,10 @@ class TabContainer extends UI5Element {
|
|
|
630
998
|
return this.tabsAtTheBottom ? "slim-arrow-up" : "slim-arrow-down";
|
|
631
999
|
}
|
|
632
1000
|
|
|
1001
|
+
get overflowButtonText() {
|
|
1002
|
+
return TabContainer.i18nBundle.getText(TABCONTAINER_END_OVERFLOW);
|
|
1003
|
+
}
|
|
1004
|
+
|
|
633
1005
|
get animate() {
|
|
634
1006
|
return getAnimationMode() !== AnimationMode.None;
|
|
635
1007
|
}
|
|
@@ -648,11 +1020,11 @@ class TabContainer extends UI5Element {
|
|
|
648
1020
|
}
|
|
649
1021
|
}
|
|
650
1022
|
|
|
651
|
-
const
|
|
1023
|
+
const isTabDiv = el => el.localName === "div" && el.getAttribute("role") === "tab";
|
|
652
1024
|
|
|
653
1025
|
const getTab = el => {
|
|
654
1026
|
while (el) {
|
|
655
|
-
if (
|
|
1027
|
+
if (isTabDiv(el)) {
|
|
656
1028
|
return el;
|
|
657
1029
|
}
|
|
658
1030
|
|