@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/MessageStrip.js
CHANGED
|
@@ -10,7 +10,14 @@ import MessageStripDesign from "./types/MessageStripDesign.js";
|
|
|
10
10
|
import MessageStripTemplate from "./generated/templates/MessageStripTemplate.lit.js";
|
|
11
11
|
import Icon from "./Icon.js";
|
|
12
12
|
import Button from "./Button.js";
|
|
13
|
-
import {
|
|
13
|
+
import {
|
|
14
|
+
MESSAGE_STRIP_CLOSE_BUTTON,
|
|
15
|
+
MESSAGE_STRIP_CLOSABLE,
|
|
16
|
+
MESSAGE_STRIP_ERROR,
|
|
17
|
+
MESSAGE_STRIP_WARNING,
|
|
18
|
+
MESSAGE_STRIP_SUCCESS,
|
|
19
|
+
MESSAGE_STRIP_INFORMATION,
|
|
20
|
+
} from "./generated/i18n/i18n-defaults.js";
|
|
14
21
|
|
|
15
22
|
// Styles
|
|
16
23
|
import messageStripCss from "./generated/themes/MessageStrip.css.js";
|
|
@@ -22,6 +29,7 @@ const metadata = {
|
|
|
22
29
|
tag: "ui5-message-strip",
|
|
23
30
|
altTag: "ui5-messagestrip",
|
|
24
31
|
languageAware: true,
|
|
32
|
+
fastNavigation: true,
|
|
25
33
|
properties: /** @lends sap.ui.webcomponents.main.MessageStrip.prototype */ {
|
|
26
34
|
|
|
27
35
|
/**
|
|
@@ -124,6 +132,14 @@ const metadata = {
|
|
|
124
132
|
* an icon in the beginning and a close button. Moreover, its size and background
|
|
125
133
|
* can be controlled with CSS.
|
|
126
134
|
*
|
|
135
|
+
* <h3>Keyboard Handling</h3>
|
|
136
|
+
*
|
|
137
|
+
* <h4>Fast Navigation</h4>
|
|
138
|
+
* 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>.
|
|
139
|
+
* In order to use this functionality, you need to import the following module:
|
|
140
|
+
* <code>import "@ui5/webcomponents-base/dist/features/F6Navigation.js"</code>
|
|
141
|
+
* <br><br>
|
|
142
|
+
*
|
|
127
143
|
* <h3>ES6 Module Import</h3>
|
|
128
144
|
*
|
|
129
145
|
* <code>import "@ui5/webcomponents/dist/MessageStrip";</code>
|
|
@@ -190,14 +206,27 @@ class MessageStrip extends UI5Element {
|
|
|
190
206
|
};
|
|
191
207
|
}
|
|
192
208
|
|
|
209
|
+
static designAnnouncementMappings() {
|
|
210
|
+
return {
|
|
211
|
+
"Information": MessageStrip.i18nBundle.getText(MESSAGE_STRIP_INFORMATION),
|
|
212
|
+
"Positive": MessageStrip.i18nBundle.getText(MESSAGE_STRIP_SUCCESS),
|
|
213
|
+
"Negative": MessageStrip.i18nBundle.getText(MESSAGE_STRIP_ERROR),
|
|
214
|
+
"Warning": MessageStrip.i18nBundle.getText(MESSAGE_STRIP_WARNING),
|
|
215
|
+
};
|
|
216
|
+
}
|
|
217
|
+
|
|
193
218
|
get hiddenText() {
|
|
194
|
-
return
|
|
219
|
+
return `${MessageStrip.designAnnouncementMappings()[this.design]} ${this.hideCloseButton ? "" : this._closableText}`;
|
|
195
220
|
}
|
|
196
221
|
|
|
197
222
|
get _closeButtonText() {
|
|
198
223
|
return MessageStrip.i18nBundle.getText(MESSAGE_STRIP_CLOSE_BUTTON);
|
|
199
224
|
}
|
|
200
225
|
|
|
226
|
+
get _closableText() {
|
|
227
|
+
return MessageStrip.i18nBundle.getText(MESSAGE_STRIP_CLOSABLE);
|
|
228
|
+
}
|
|
229
|
+
|
|
201
230
|
get classes() {
|
|
202
231
|
return {
|
|
203
232
|
root: {
|
|
@@ -220,6 +249,14 @@ class MessageStrip extends UI5Element {
|
|
|
220
249
|
get designClasses() {
|
|
221
250
|
return MessageStrip.designClassesMappings()[this.design];
|
|
222
251
|
}
|
|
252
|
+
|
|
253
|
+
get accInfo() {
|
|
254
|
+
return {
|
|
255
|
+
"button": {
|
|
256
|
+
"title": this._closeButtonText,
|
|
257
|
+
},
|
|
258
|
+
};
|
|
259
|
+
}
|
|
223
260
|
}
|
|
224
261
|
|
|
225
262
|
MessageStrip.define();
|
package/src/MultiComboBox.js
CHANGED
|
@@ -537,7 +537,7 @@ class MultiComboBox extends UI5Element {
|
|
|
537
537
|
|
|
538
538
|
const tokensCount = this._tokenizer.tokens.length - 1;
|
|
539
539
|
|
|
540
|
-
if (!event.relatedTarget || event.relatedTarget.
|
|
540
|
+
if (!event.relatedTarget || !event.relatedTarget.hasAttribute("ui5-token")) {
|
|
541
541
|
this._tokenizer.tokens.forEach(token => { token.selected = false; });
|
|
542
542
|
this._tokenizer.scrollToStart();
|
|
543
543
|
}
|
|
@@ -912,7 +912,7 @@ class MultiComboBox extends UI5Element {
|
|
|
912
912
|
}
|
|
913
913
|
|
|
914
914
|
inputFocusIn() {
|
|
915
|
-
if (!isPhone()) {
|
|
915
|
+
if (!isPhone() || this.readonly) {
|
|
916
916
|
this.focused = true;
|
|
917
917
|
} else {
|
|
918
918
|
this._innerInput.blur();
|
|
@@ -1012,7 +1012,7 @@ class MultiComboBox extends UI5Element {
|
|
|
1012
1012
|
}
|
|
1013
1013
|
|
|
1014
1014
|
get shouldDisplayOnlyValueStateMessage() {
|
|
1015
|
-
return this.focused && this.hasValueStateMessage && !this._iconPressed;
|
|
1015
|
+
return this.focused && !this.readonly && this.hasValueStateMessage && !this._iconPressed;
|
|
1016
1016
|
}
|
|
1017
1017
|
|
|
1018
1018
|
get valueStateTextMappings() {
|
|
@@ -1051,6 +1051,10 @@ class MultiComboBox extends UI5Element {
|
|
|
1051
1051
|
return (this._isFocusInside || this.open) && !this.readonly;
|
|
1052
1052
|
}
|
|
1053
1053
|
|
|
1054
|
+
get _valueStatePopoverHorizontalAlign() {
|
|
1055
|
+
return this.effectiveDir !== "rtl" ? "Left" : "Right";
|
|
1056
|
+
}
|
|
1057
|
+
|
|
1054
1058
|
get classes() {
|
|
1055
1059
|
return {
|
|
1056
1060
|
popover: {
|
package/src/MultiComboBoxItem.js
CHANGED
|
@@ -100,7 +100,7 @@
|
|
|
100
100
|
hide-arrow
|
|
101
101
|
class="ui5-valuestatemessage-popover"
|
|
102
102
|
placement-type="Bottom"
|
|
103
|
-
horizontal-align="
|
|
103
|
+
horizontal-align="{{_valueStatePopoverHorizontalAlign}}"
|
|
104
104
|
>
|
|
105
105
|
<div slot="header" class="{{classes.popoverValueState}}" style="{{styles.popoverHeader}}">
|
|
106
106
|
<ui5-icon class="ui5-input-value-state-message-icon" name="{{_valueStateMessageIcon}}"></ui5-icon>
|
package/src/MultiInput.js
CHANGED
|
@@ -4,6 +4,9 @@ import {
|
|
|
4
4
|
isBackSpace,
|
|
5
5
|
isLeft,
|
|
6
6
|
isRight,
|
|
7
|
+
isRightCtrl,
|
|
8
|
+
isHome,
|
|
9
|
+
isEnd,
|
|
7
10
|
} from "@ui5/webcomponents-base/dist/Keys.js";
|
|
8
11
|
import { MULTIINPUT_ROLEDESCRIPTION_TEXT } from "./generated/i18n/i18n-defaults.js";
|
|
9
12
|
import Input from "./Input.js";
|
|
@@ -136,8 +139,15 @@ class MultiInput extends Input {
|
|
|
136
139
|
}
|
|
137
140
|
|
|
138
141
|
tokenDelete(event) {
|
|
139
|
-
|
|
140
|
-
|
|
142
|
+
const focusedToken = event.detail.ref;
|
|
143
|
+
const selectedTokens = this.tokens.filter(token => token.selected);
|
|
144
|
+
|
|
145
|
+
if (selectedTokens.indexOf(focusedToken) === -1) {
|
|
146
|
+
selectedTokens.push(focusedToken);
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
selectedTokens.forEach(token => {
|
|
150
|
+
this.fireEvent("token-delete", { token });
|
|
141
151
|
});
|
|
142
152
|
|
|
143
153
|
this.focus();
|
|
@@ -170,7 +180,9 @@ class MultiInput extends Input {
|
|
|
170
180
|
_onkeydown(event) {
|
|
171
181
|
super._onkeydown(event);
|
|
172
182
|
|
|
173
|
-
|
|
183
|
+
const isHomeInBeginning = isHome(event) && event.target.selectionStart === 0;
|
|
184
|
+
|
|
185
|
+
if (isLeft(event) || isHomeInBeginning) {
|
|
174
186
|
this._skipOpenSuggestions = true; // Prevent input focus when navigating through the tokens.
|
|
175
187
|
|
|
176
188
|
return this._handleLeft(event);
|
|
@@ -189,22 +201,57 @@ class MultiInput extends Input {
|
|
|
189
201
|
}
|
|
190
202
|
|
|
191
203
|
_onTokenizerKeydown(event) {
|
|
192
|
-
|
|
193
|
-
|
|
204
|
+
const rightCtrl = isRightCtrl(event);
|
|
205
|
+
const isCtrl = !!(event.metaKey || event.ctrlKey);
|
|
206
|
+
const tokens = this.tokens;
|
|
194
207
|
|
|
195
|
-
|
|
208
|
+
if (isRight(event) || isEnd(event) || rightCtrl) {
|
|
209
|
+
event.preventDefault();
|
|
210
|
+
const lastTokenIndex = this.tokens.length - 1;
|
|
211
|
+
|
|
212
|
+
if (event.target === this.tokens[lastTokenIndex] && this.tokens[lastTokenIndex] === document.activeElement) {
|
|
196
213
|
setTimeout(() => {
|
|
197
214
|
this.focus();
|
|
198
215
|
}, 0);
|
|
216
|
+
} else if (rightCtrl) {
|
|
217
|
+
event.preventDefault();
|
|
218
|
+
return this.tokenizer._handleArrowCtrl(event.target, this.tokens, true);
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
this.tokenizer._handleItemNavigation(event, tokens);
|
|
223
|
+
|
|
224
|
+
if (isCtrl && ["c", "x"].includes(event.key.toLowerCase())) {
|
|
225
|
+
event.preventDefault();
|
|
226
|
+
|
|
227
|
+
const isCut = event.key.toLowerCase() === "x";
|
|
228
|
+
const selectedTokens = tokens.filter(token => token.selected);
|
|
229
|
+
|
|
230
|
+
if (isCut) {
|
|
231
|
+
const cutResult = this.tokenizer._fillClipboard("cut", selectedTokens);
|
|
232
|
+
|
|
233
|
+
selectedTokens.forEach(token => {
|
|
234
|
+
this.fireEvent("token-delete", { token });
|
|
235
|
+
});
|
|
236
|
+
|
|
237
|
+
this.focus();
|
|
238
|
+
|
|
239
|
+
return cutResult;
|
|
199
240
|
}
|
|
241
|
+
|
|
242
|
+
return this.tokenizer._fillClipboard("copy", selectedTokens);
|
|
200
243
|
}
|
|
201
244
|
}
|
|
202
245
|
|
|
203
246
|
_handleLeft() {
|
|
204
247
|
const cursorPosition = this.getDomRef().querySelector(`input`).selectionStart;
|
|
248
|
+
const tokens = this.tokens;
|
|
249
|
+
const lastToken = tokens.length && tokens[tokens.length - 1];
|
|
205
250
|
|
|
206
|
-
if (cursorPosition === 0) {
|
|
207
|
-
this.tokenizer._focusLastToken();
|
|
251
|
+
if (cursorPosition === 0 && lastToken) {
|
|
252
|
+
// this.tokenizer._focusLastToken(); won't work as the tokens in the MultiInput use different slot and are not resolved properly
|
|
253
|
+
lastToken.focus();
|
|
254
|
+
this.tokenizer._itemNav.setCurrentItem(lastToken);
|
|
208
255
|
}
|
|
209
256
|
}
|
|
210
257
|
|
package/src/Option.js
CHANGED
|
@@ -31,6 +31,17 @@ const metadata = {
|
|
|
31
31
|
type: Boolean,
|
|
32
32
|
},
|
|
33
33
|
|
|
34
|
+
/**
|
|
35
|
+
* Defines the tooltip of the component.
|
|
36
|
+
* @type {string}
|
|
37
|
+
* @defaultvalue ""
|
|
38
|
+
* @private
|
|
39
|
+
* @since 1.1.0
|
|
40
|
+
*/
|
|
41
|
+
title: {
|
|
42
|
+
type: String,
|
|
43
|
+
},
|
|
44
|
+
|
|
34
45
|
/**
|
|
35
46
|
* Defines the <code>icon</code> source URI.
|
|
36
47
|
* <br><br>
|
|
@@ -106,7 +117,7 @@ class Option extends UI5Element {
|
|
|
106
117
|
}
|
|
107
118
|
|
|
108
119
|
get stableDomRef() {
|
|
109
|
-
return `${this._id}-stable-dom-ref`;
|
|
120
|
+
return this.getAttribute("stable-dom-ref") || `${this._id}-stable-dom-ref`;
|
|
110
121
|
}
|
|
111
122
|
}
|
|
112
123
|
|
package/src/Panel.hbs
CHANGED
package/src/Panel.js
CHANGED
|
@@ -24,6 +24,7 @@ const metadata = {
|
|
|
24
24
|
tag: "ui5-panel",
|
|
25
25
|
languageAware: true,
|
|
26
26
|
managedSlots: true,
|
|
27
|
+
fastNavigation: true,
|
|
27
28
|
slots: /** @lends sap.ui.webcomponents.main.Panel.prototype */ {
|
|
28
29
|
|
|
29
30
|
/**
|
|
@@ -240,6 +241,14 @@ const metadata = {
|
|
|
240
241
|
* <li>content - Used to style the wrapper of the content</li>
|
|
241
242
|
* </ul>
|
|
242
243
|
*
|
|
244
|
+
* <h3>Keyboard Handling</h3>
|
|
245
|
+
*
|
|
246
|
+
* <h4>Fast Navigation</h4>
|
|
247
|
+
* 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>.
|
|
248
|
+
* In order to use this functionality, you need to import the following module:
|
|
249
|
+
* <code>import "@ui5/webcomponents-base/dist/features/F6Navigation.js"</code>
|
|
250
|
+
* <br><br>
|
|
251
|
+
*
|
|
243
252
|
* <h3>ES6 Module Import</h3>
|
|
244
253
|
*
|
|
245
254
|
* <code>import "@ui5/webcomponents/dist/Panel";</code>
|
package/src/Popover.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import Integer from "@ui5/webcomponents-base/dist/types/Integer.js";
|
|
2
|
+
import { isIOS } from "@ui5/webcomponents-base/dist/Device.js";
|
|
2
3
|
import ResizeHandler from "@ui5/webcomponents-base/dist/delegate/ResizeHandler.js";
|
|
3
4
|
import { getClosedPopupParent } from "@ui5/webcomponents-base/dist/util/PopupUtils.js";
|
|
4
5
|
import clamp from "@ui5/webcomponents-base/dist/util/clamp.js";
|
|
@@ -187,11 +188,11 @@ const metadata = {
|
|
|
187
188
|
defaultValue: PopoverPlacementType.Right,
|
|
188
189
|
},
|
|
189
190
|
|
|
190
|
-
|
|
191
|
+
_maxHeight: {
|
|
191
192
|
type: Integer,
|
|
192
193
|
noAttribute: true,
|
|
193
194
|
},
|
|
194
|
-
|
|
195
|
+
_maxWidth: {
|
|
195
196
|
type: Integer,
|
|
196
197
|
noAttribute: true,
|
|
197
198
|
},
|
|
@@ -283,6 +284,10 @@ class Popover extends Popup {
|
|
|
283
284
|
return 10; // px
|
|
284
285
|
}
|
|
285
286
|
|
|
287
|
+
static get ARROW_MARGIN() {
|
|
288
|
+
return 6; // px
|
|
289
|
+
}
|
|
290
|
+
|
|
286
291
|
onEnterDOM() {
|
|
287
292
|
ResizeHandler.register(this, this._handleResize);
|
|
288
293
|
}
|
|
@@ -421,41 +426,94 @@ class Popover extends Popup {
|
|
|
421
426
|
top = Math.max(top, this._top);
|
|
422
427
|
}
|
|
423
428
|
|
|
424
|
-
|
|
425
|
-
const
|
|
426
|
-
|
|
429
|
+
const isVertical = this.actualPlacementType === PopoverPlacementType.Top || this.actualPlacementType === PopoverPlacementType.Bottom;
|
|
430
|
+
const borderRadius = Number.parseInt(window.getComputedStyle(this).getPropertyValue("border-radius"));
|
|
431
|
+
const arrow = this._clampArrowPlacement(placement.arrow, isVertical, this._top, this._left, popoverSize, borderRadius);
|
|
432
|
+
|
|
433
|
+
this.arrowTranslateX = arrow.x;
|
|
434
|
+
this.arrowTranslateY = arrow.y;
|
|
435
|
+
|
|
436
|
+
top = this._adjustForIOSKeyboard(top);
|
|
437
|
+
|
|
438
|
+
Object.assign(this.style, {
|
|
439
|
+
top: `${top}px`,
|
|
440
|
+
left: `${left}px`,
|
|
441
|
+
});
|
|
442
|
+
super._show();
|
|
443
|
+
|
|
444
|
+
if (stretching && this._width) {
|
|
445
|
+
this.style.width = this._width;
|
|
446
|
+
}
|
|
447
|
+
}
|
|
448
|
+
|
|
449
|
+
/**
|
|
450
|
+
* Restricts the arrow's coordinates within the bounds of the popover.
|
|
451
|
+
* @private
|
|
452
|
+
* @param {{x: number, y: number}} arrow arrow's coordinates
|
|
453
|
+
* @param {boolean} isVertical if the popover is placed vertically relative to the opener
|
|
454
|
+
* @param {number} top popover's top
|
|
455
|
+
* @param {number} left popover's left
|
|
456
|
+
* @param {{width: number, height: number}} popoverSize popover's width and height
|
|
457
|
+
* @param {number} borderRadius value of the border-radius property
|
|
458
|
+
* @returns {{x: number, y: number}} Arrow's coordinates
|
|
459
|
+
*/
|
|
460
|
+
_clampArrowPlacement({ x, y }, isVertical, top, left, { width, height }, borderRadius) {
|
|
461
|
+
const maxY = this._getArrowRange(height, borderRadius);
|
|
462
|
+
const maxX = this._getArrowRange(width, borderRadius);
|
|
427
463
|
|
|
428
464
|
if (isVertical) {
|
|
429
|
-
const popoverOnLeftBorderOffset = Popover.VIEWPORT_MARGIN -
|
|
430
|
-
const popoverOnRightBorderOffset =
|
|
465
|
+
const popoverOnLeftBorderOffset = Popover.VIEWPORT_MARGIN - left;
|
|
466
|
+
const popoverOnRightBorderOffset = left + width + Popover.VIEWPORT_MARGIN - document.documentElement.clientWidth;
|
|
467
|
+
|
|
431
468
|
if (popoverOnLeftBorderOffset > 0) {
|
|
432
|
-
|
|
469
|
+
x = Math.max(x - popoverOnLeftBorderOffset, -maxX);
|
|
433
470
|
} else if (popoverOnRightBorderOffset > 0) {
|
|
434
|
-
|
|
471
|
+
x = Math.min(x + popoverOnRightBorderOffset, maxX);
|
|
435
472
|
}
|
|
436
473
|
}
|
|
437
|
-
this.arrowTranslateX = Math.round(arrowX);
|
|
438
474
|
|
|
439
475
|
if (!isVertical) {
|
|
440
|
-
const popoverOnTopBorderOffset = Popover.VIEWPORT_MARGIN -
|
|
441
|
-
const popoverOnBottomBorderOffset =
|
|
476
|
+
const popoverOnTopBorderOffset = Popover.VIEWPORT_MARGIN - top;
|
|
477
|
+
const popoverOnBottomBorderOffset = top + height + Popover.VIEWPORT_MARGIN - document.documentElement.clientHeight;
|
|
442
478
|
if (popoverOnTopBorderOffset > 0) {
|
|
443
|
-
|
|
479
|
+
y = Math.max(y - popoverOnTopBorderOffset, -maxY);
|
|
444
480
|
} else if (popoverOnBottomBorderOffset > 0) {
|
|
445
|
-
|
|
481
|
+
y = Math.min(y + popoverOnBottomBorderOffset, maxY);
|
|
446
482
|
}
|
|
447
483
|
}
|
|
448
|
-
this.arrowTranslateY = Math.round(arrowY);
|
|
449
484
|
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
}
|
|
454
|
-
|
|
485
|
+
return {
|
|
486
|
+
x: Math.round(x),
|
|
487
|
+
y: Math.round(y),
|
|
488
|
+
};
|
|
489
|
+
}
|
|
455
490
|
|
|
456
|
-
|
|
457
|
-
|
|
491
|
+
/**
|
|
492
|
+
* Returns the allowed range for the popover arrow based on its dimension.
|
|
493
|
+
* @private
|
|
494
|
+
* @param {number} dimension the height or width of the popover
|
|
495
|
+
* @param {number} borderRadius border radius of the popover
|
|
496
|
+
* @returns {number}
|
|
497
|
+
*/
|
|
498
|
+
_getArrowRange(dimension, borderRadius) {
|
|
499
|
+
return Math.floor((dimension / 2) - (borderRadius + Popover.ARROW_MARGIN));
|
|
500
|
+
}
|
|
501
|
+
|
|
502
|
+
/**
|
|
503
|
+
* Adjust the desired top position to compensate for shift of the screen
|
|
504
|
+
* caused by opened keyboard on iOS which affects all elements with position:fixed.
|
|
505
|
+
* @private
|
|
506
|
+
* @param {int} top The target top in px.
|
|
507
|
+
* @returns {int} The adjusted top in px.
|
|
508
|
+
*/
|
|
509
|
+
_adjustForIOSKeyboard(top) {
|
|
510
|
+
if (!isIOS()) {
|
|
511
|
+
return top;
|
|
458
512
|
}
|
|
513
|
+
|
|
514
|
+
const actualTop = Math.ceil(this.getBoundingClientRect().top);
|
|
515
|
+
|
|
516
|
+
return top + (Number.parseInt(this.style.top || "0") - actualTop);
|
|
459
517
|
}
|
|
460
518
|
|
|
461
519
|
getPopoverSize() {
|
|
@@ -482,6 +540,9 @@ class Popover extends Popup {
|
|
|
482
540
|
return this.shadowRoot.querySelector(".ui5-popover-arrow");
|
|
483
541
|
}
|
|
484
542
|
|
|
543
|
+
/**
|
|
544
|
+
* @private
|
|
545
|
+
*/
|
|
485
546
|
calcPlacement(targetRect, popoverSize) {
|
|
486
547
|
let left = 0;
|
|
487
548
|
let top = 0;
|
|
@@ -493,9 +554,6 @@ class Popover extends Popup {
|
|
|
493
554
|
let maxHeight = clientHeight;
|
|
494
555
|
let maxWidth = clientWidth;
|
|
495
556
|
|
|
496
|
-
let width = "";
|
|
497
|
-
let height = "";
|
|
498
|
-
|
|
499
557
|
const placementType = this.getActualPlacementType(targetRect, popoverSize);
|
|
500
558
|
|
|
501
559
|
this._preventRepositionAndClose = this.shouldCloseDueToNoOpener(targetRect) || this.shouldCloseDueToOverflow(placementType, targetRect);
|
|
@@ -505,15 +563,11 @@ class Popover extends Popup {
|
|
|
505
563
|
|
|
506
564
|
if (this.horizontalAlign === PopoverHorizontalAlign.Stretch && isVertical) {
|
|
507
565
|
popoverSize.width = targetRect.width;
|
|
508
|
-
|
|
566
|
+
this._width = `${targetRect.width}px`;
|
|
509
567
|
} else if (this.verticalAlign === PopoverVerticalAlign.Stretch && !isVertical) {
|
|
510
568
|
popoverSize.height = targetRect.height;
|
|
511
|
-
height = `${targetRect.height}px`;
|
|
512
569
|
}
|
|
513
570
|
|
|
514
|
-
this._width = width;
|
|
515
|
-
this._height = height;
|
|
516
|
-
|
|
517
571
|
const arrowOffset = this.hideArrow ? 0 : arrowSize;
|
|
518
572
|
|
|
519
573
|
// calc popover positions
|
|
@@ -528,11 +582,11 @@ class Popover extends Popup {
|
|
|
528
582
|
break;
|
|
529
583
|
case PopoverPlacementType.Bottom:
|
|
530
584
|
left = this.getVerticalLeft(targetRect, popoverSize);
|
|
585
|
+
top = targetRect.bottom + arrowOffset;
|
|
531
586
|
|
|
532
587
|
if (allowTargetOverlap) {
|
|
533
|
-
top = Math.max(Math.min(
|
|
588
|
+
top = Math.max(Math.min(top, clientHeight - popoverSize.height), 0);
|
|
534
589
|
} else {
|
|
535
|
-
top = targetRect.bottom + arrowOffset;
|
|
536
590
|
maxHeight = clientHeight - targetRect.bottom - arrowOffset;
|
|
537
591
|
}
|
|
538
592
|
break;
|
|
@@ -545,14 +599,14 @@ class Popover extends Popup {
|
|
|
545
599
|
}
|
|
546
600
|
break;
|
|
547
601
|
case PopoverPlacementType.Right:
|
|
602
|
+
left = targetRect.left + targetRect.width + arrowOffset;
|
|
603
|
+
top = this.getHorizontalTop(targetRect, popoverSize);
|
|
604
|
+
|
|
548
605
|
if (allowTargetOverlap) {
|
|
549
|
-
left = Math.max(Math.min(
|
|
606
|
+
left = Math.max(Math.min(left, clientWidth - popoverSize.width), 0);
|
|
550
607
|
} else {
|
|
551
|
-
left = targetRect.left + targetRect.width + arrowOffset;
|
|
552
608
|
maxWidth = clientWidth - targetRect.right - arrowOffset;
|
|
553
609
|
}
|
|
554
|
-
|
|
555
|
-
top = this.getHorizontalTop(targetRect, popoverSize);
|
|
556
610
|
break;
|
|
557
611
|
}
|
|
558
612
|
|
|
@@ -571,21 +625,8 @@ class Popover extends Popup {
|
|
|
571
625
|
}
|
|
572
626
|
}
|
|
573
627
|
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
if (this._displayHeader) {
|
|
577
|
-
const headerDomRef = this.shadowRoot.querySelector(".ui5-popup-header-root")
|
|
578
|
-
|| this.shadowRoot.querySelector(".ui5-popup-header-text");
|
|
579
|
-
|
|
580
|
-
if (headerDomRef) {
|
|
581
|
-
maxContentHeight = maxHeight - headerDomRef.offsetHeight;
|
|
582
|
-
}
|
|
583
|
-
}
|
|
584
|
-
|
|
585
|
-
this._maxContentHeight = Math.round(maxContentHeight - Popover.VIEWPORT_MARGIN);
|
|
586
|
-
this._maxContentWidth = Math.round(maxWidth - Popover.VIEWPORT_MARGIN);
|
|
587
|
-
|
|
588
|
-
const arrowPos = this.getArrowPosition(targetRect, popoverSize, left, top, isVertical);
|
|
628
|
+
this._maxHeight = Math.round(maxHeight - Popover.VIEWPORT_MARGIN);
|
|
629
|
+
this._maxWidth = Math.round(maxWidth - Popover.VIEWPORT_MARGIN);
|
|
589
630
|
|
|
590
631
|
if (this._left === undefined || Math.abs(this._left - left) > 1.5) {
|
|
591
632
|
this._left = Math.round(left);
|
|
@@ -595,9 +636,10 @@ class Popover extends Popup {
|
|
|
595
636
|
this._top = Math.round(top);
|
|
596
637
|
}
|
|
597
638
|
|
|
639
|
+
const arrowPos = this.getArrowPosition(targetRect, popoverSize, left, top, isVertical);
|
|
640
|
+
|
|
598
641
|
return {
|
|
599
|
-
|
|
600
|
-
arrowY: arrowPos.y,
|
|
642
|
+
arrow: arrowPos,
|
|
601
643
|
top: this._top,
|
|
602
644
|
left: this._left,
|
|
603
645
|
placementType,
|
|
@@ -746,7 +788,7 @@ class Popover extends Popup {
|
|
|
746
788
|
}
|
|
747
789
|
|
|
748
790
|
get _ariaLabelledBy() { // Required by Popup.js
|
|
749
|
-
return this.
|
|
791
|
+
return this._ariaLabel ? undefined : "ui5-popup-header";
|
|
750
792
|
}
|
|
751
793
|
|
|
752
794
|
get _ariaModal() { // Required by Popup.js
|
|
@@ -756,9 +798,9 @@ class Popover extends Popup {
|
|
|
756
798
|
get styles() {
|
|
757
799
|
return {
|
|
758
800
|
...super.styles,
|
|
759
|
-
|
|
760
|
-
"max-height": `${this.
|
|
761
|
-
"max-width": `${this.
|
|
801
|
+
root: {
|
|
802
|
+
"max-height": `${this._maxHeight}px`,
|
|
803
|
+
"max-width": `${this._maxWidth}px`,
|
|
762
804
|
},
|
|
763
805
|
arrow: {
|
|
764
806
|
transform: `translate(${this.arrowTranslateX}px, ${this.arrowTranslateY}px)`,
|
|
@@ -766,6 +808,13 @@ class Popover extends Popup {
|
|
|
766
808
|
};
|
|
767
809
|
}
|
|
768
810
|
|
|
811
|
+
get classes() {
|
|
812
|
+
const allClasses = super.classes;
|
|
813
|
+
allClasses.root["ui5-popover-root"] = true;
|
|
814
|
+
|
|
815
|
+
return allClasses;
|
|
816
|
+
}
|
|
817
|
+
|
|
769
818
|
/**
|
|
770
819
|
* Hook for descendants to hide header.
|
|
771
820
|
*/
|
package/src/Popup.js
CHANGED
|
@@ -3,6 +3,7 @@ import litRender from "@ui5/webcomponents-base/dist/renderer/LitRenderer.js";
|
|
|
3
3
|
import UI5Element from "@ui5/webcomponents-base/dist/UI5Element.js";
|
|
4
4
|
import { isChrome } from "@ui5/webcomponents-base/dist/Device.js";
|
|
5
5
|
import { getFirstFocusableElement, getLastFocusableElement } from "@ui5/webcomponents-base/dist/util/FocusableElements.js";
|
|
6
|
+
import { getEffectiveAriaLabelText } from "@ui5/webcomponents-base/dist/util/AriaLabelHelper.js";
|
|
6
7
|
import { hasStyle, createStyle } from "@ui5/webcomponents-base/dist/ManagedStyles.js";
|
|
7
8
|
import { isTabPrevious } from "@ui5/webcomponents-base/dist/Keys.js";
|
|
8
9
|
import { getNextZIndex, getFocusedElement, isFocusedElementWithinNode } from "@ui5/webcomponents-base/dist/util/PopupUtils.js";
|
|
@@ -68,7 +69,7 @@ const metadata = {
|
|
|
68
69
|
},
|
|
69
70
|
|
|
70
71
|
/**
|
|
71
|
-
*
|
|
72
|
+
* Defines the accessible name of the component.
|
|
72
73
|
*
|
|
73
74
|
* @type {String}
|
|
74
75
|
* @defaultvalue ""
|
|
@@ -80,6 +81,19 @@ const metadata = {
|
|
|
80
81
|
defaultValue: undefined,
|
|
81
82
|
},
|
|
82
83
|
|
|
84
|
+
/**
|
|
85
|
+
* Defines the IDs of the elements that label the component.
|
|
86
|
+
*
|
|
87
|
+
* @type {String}
|
|
88
|
+
* @defaultvalue ""
|
|
89
|
+
* @public
|
|
90
|
+
* @since 1.1.0
|
|
91
|
+
*/
|
|
92
|
+
accessibleNameRef: {
|
|
93
|
+
type: String,
|
|
94
|
+
defaultValue: "",
|
|
95
|
+
},
|
|
96
|
+
|
|
83
97
|
/**
|
|
84
98
|
* @private
|
|
85
99
|
*/
|
|
@@ -535,7 +549,7 @@ class Popup extends UI5Element {
|
|
|
535
549
|
* @protected
|
|
536
550
|
*/
|
|
537
551
|
get _ariaLabel() {
|
|
538
|
-
return this
|
|
552
|
+
return getEffectiveAriaLabelText(this);
|
|
539
553
|
}
|
|
540
554
|
|
|
541
555
|
get _root() {
|
package/src/PopupBlockLayer.hbs
CHANGED
package/src/RadioButton.js
CHANGED
|
@@ -4,6 +4,7 @@ import UI5Element from "@ui5/webcomponents-base/dist/UI5Element.js";
|
|
|
4
4
|
import litRender from "@ui5/webcomponents-base/dist/renderer/LitRenderer.js";
|
|
5
5
|
import { getI18nBundle } from "@ui5/webcomponents-base/dist/i18nBundle.js";
|
|
6
6
|
import ValueState from "@ui5/webcomponents-base/dist/types/ValueState.js";
|
|
7
|
+
import { getEffectiveAriaLabelText } from "@ui5/webcomponents-base/dist/util/AriaLabelHelper.js";
|
|
7
8
|
import {
|
|
8
9
|
isSpace,
|
|
9
10
|
isEnter,
|
|
@@ -174,8 +175,7 @@ const metadata = {
|
|
|
174
175
|
},
|
|
175
176
|
|
|
176
177
|
/**
|
|
177
|
-
* Defines the
|
|
178
|
-
* If not provided a default text alternative will be set, if present.
|
|
178
|
+
* Defines the accessible name of the component.
|
|
179
179
|
*
|
|
180
180
|
* @type {string}
|
|
181
181
|
* @defaultvalue ""
|
|
@@ -186,6 +186,18 @@ const metadata = {
|
|
|
186
186
|
type: String,
|
|
187
187
|
},
|
|
188
188
|
|
|
189
|
+
/**
|
|
190
|
+
* Defines the IDs of the elements that label the component.
|
|
191
|
+
*
|
|
192
|
+
* @type {String}
|
|
193
|
+
* @defaultvalue ""
|
|
194
|
+
* @public
|
|
195
|
+
* @since 1.1.0
|
|
196
|
+
*/
|
|
197
|
+
accessibleNameRef: {
|
|
198
|
+
type: String,
|
|
199
|
+
},
|
|
200
|
+
|
|
189
201
|
_tabIndex: {
|
|
190
202
|
type: String,
|
|
191
203
|
defaultValue: "-1",
|
|
@@ -455,7 +467,7 @@ class RadioButton extends UI5Element {
|
|
|
455
467
|
}
|
|
456
468
|
|
|
457
469
|
get ariaLabelText() {
|
|
458
|
-
return [this
|
|
470
|
+
return [getEffectiveAriaLabelText(this), this.text].filter(Boolean).join(" ");
|
|
459
471
|
}
|
|
460
472
|
|
|
461
473
|
get ariaDescribedBy() {
|