@ui5/webcomponents 2.12.0-rc.0 → 2.12.0-rc.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 +40 -0
- package/dist/.tsbuildinfo +1 -1
- package/dist/AvatarGroup.d.ts +17 -1
- package/dist/AvatarGroup.js +11 -0
- package/dist/AvatarGroup.js.map +1 -1
- package/dist/Calendar.d.ts +3 -0
- package/dist/Calendar.js +3 -0
- package/dist/Calendar.js.map +1 -1
- package/dist/CalendarHeaderTemplate.js +3 -3
- package/dist/CalendarHeaderTemplate.js.map +1 -1
- package/dist/CalendarTemplate.js +1 -1
- package/dist/CalendarTemplate.js.map +1 -1
- package/dist/Menu.d.ts +18 -3
- package/dist/Menu.js +60 -12
- package/dist/Menu.js.map +1 -1
- package/dist/MenuItem.d.ts +47 -12
- package/dist/MenuItem.js +119 -20
- package/dist/MenuItem.js.map +1 -1
- package/dist/MenuItemGroup.d.ts +75 -0
- package/dist/MenuItemGroup.js +127 -0
- package/dist/MenuItemGroup.js.map +1 -0
- package/dist/MenuItemGroupTemplate.d.ts +2 -0
- package/dist/MenuItemGroupTemplate.js +5 -0
- package/dist/MenuItemGroupTemplate.js.map +1 -0
- package/dist/MenuItemTemplate.js +5 -1
- package/dist/MenuItemTemplate.js.map +1 -1
- package/dist/MenuSeparator.d.ts +2 -0
- package/dist/MenuSeparator.js +4 -0
- package/dist/MenuSeparator.js.map +1 -1
- package/dist/MonthPickerTemplate.js +1 -1
- package/dist/MonthPickerTemplate.js.map +1 -1
- package/dist/Popover.d.ts +2 -2
- package/dist/Popover.js +29 -7
- package/dist/Popover.js.map +1 -1
- package/dist/StepInput.d.ts +1 -1
- package/dist/StepInput.js +5 -7
- package/dist/StepInput.js.map +1 -1
- package/dist/Switch.d.ts +8 -1
- package/dist/Switch.js +14 -1
- package/dist/Switch.js.map +1 -1
- package/dist/Table.d.ts +1 -0
- package/dist/Table.js +4 -1
- package/dist/Table.js.map +1 -1
- package/dist/TableHeaderRow.d.ts +4 -0
- package/dist/TableHeaderRow.js +13 -1
- package/dist/TableHeaderRow.js.map +1 -1
- package/dist/TableHeaderRowTemplate.js +13 -4
- package/dist/TableHeaderRowTemplate.js.map +1 -1
- package/dist/TableRow.js +2 -2
- package/dist/TableRow.js.map +1 -1
- package/dist/TableRowBase.d.ts +1 -1
- package/dist/TableRowBase.js +2 -2
- package/dist/TableRowBase.js.map +1 -1
- package/dist/TableRowTemplate.js +1 -1
- package/dist/TableRowTemplate.js.map +1 -1
- package/dist/TableSelectionMulti.d.ts +9 -0
- package/dist/TableSelectionMulti.js +23 -5
- package/dist/TableSelectionMulti.js.map +1 -1
- package/dist/Toast.js +1 -3
- package/dist/Toast.js.map +1 -1
- package/dist/YearPickerTemplate.js +1 -1
- package/dist/YearPickerTemplate.js.map +1 -1
- package/dist/bundle.esm.js +1 -0
- package/dist/bundle.esm.js.map +1 -1
- package/dist/css/themes/Avatar.css +1 -1
- package/dist/css/themes/AvatarGroup.css +1 -1
- package/dist/css/themes/Bar.css +1 -1
- package/dist/css/themes/Breadcrumbs.css +1 -1
- package/dist/css/themes/BusyIndicator.css +1 -1
- package/dist/css/themes/Button.css +1 -1
- package/dist/css/themes/ButtonBadge.css +1 -1
- package/dist/css/themes/Calendar.css +1 -1
- package/dist/css/themes/CalendarHeader.css +1 -1
- package/dist/css/themes/CalendarLegend.css +1 -1
- package/dist/css/themes/CalendarLegendItem.css +1 -1
- package/dist/css/themes/Card.css +1 -1
- package/dist/css/themes/CardHeader.css +1 -1
- package/dist/css/themes/Carousel.css +1 -1
- package/dist/css/themes/CheckBox.css +1 -1
- package/dist/css/themes/ColorPalette.css +1 -1
- package/dist/css/themes/ColorPaletteItem.css +1 -1
- package/dist/css/themes/ColorPalettePopover.css +1 -1
- package/dist/css/themes/ColorPicker.css +1 -1
- package/dist/css/themes/ComboBox.css +1 -1
- package/dist/css/themes/ComboBoxItem.css +1 -1
- package/dist/css/themes/DatePicker.css +1 -1
- package/dist/css/themes/DateTimePickerPopover.css +1 -1
- package/dist/css/themes/DayPicker.css +1 -1
- package/dist/css/themes/Dialog.css +1 -1
- package/dist/css/themes/DynamicDateRange.css +1 -1
- package/dist/css/themes/DynamicDateRangePopover.css +1 -1
- package/dist/css/themes/FileUploader.css +1 -1
- package/dist/css/themes/Form.css +1 -1
- package/dist/css/themes/FormItem.css +1 -1
- package/dist/css/themes/FormItemSpan.css +1 -1
- package/dist/css/themes/GrowingButton.css +1 -1
- package/dist/css/themes/Icon.css +1 -1
- package/dist/css/themes/Input.css +1 -1
- package/dist/css/themes/InputIcon.css +1 -1
- package/dist/css/themes/InputSharedStyles.css +1 -1
- package/dist/css/themes/Link.css +1 -1
- package/dist/css/themes/List.css +1 -1
- package/dist/css/themes/ListItem.css +1 -1
- package/dist/css/themes/ListItemBase.css +1 -1
- package/dist/css/themes/ListItemCustom.css +1 -1
- package/dist/css/themes/ListItemGroup.css +1 -1
- package/dist/css/themes/ListItemGroupHeader.css +1 -1
- package/dist/css/themes/ListItemIcon.css +1 -1
- package/dist/css/themes/Menu.css +1 -1
- package/dist/css/themes/MenuItem.css +1 -1
- package/dist/css/themes/MessageStrip.css +1 -1
- package/dist/css/themes/MonthPicker.css +1 -1
- package/dist/css/themes/MultiComboBox.css +1 -1
- package/dist/css/themes/MultiComboBoxItem.css +1 -1
- package/dist/css/themes/MultiComboBoxPopover.css +1 -1
- package/dist/css/themes/MultiInput.css +1 -1
- package/dist/css/themes/OptionBase.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/ProgressIndicator.css +1 -1
- package/dist/css/themes/RadioButton.css +1 -1
- package/dist/css/themes/RangeSlider.css +1 -1
- package/dist/css/themes/RatingIndicator.css +1 -1
- package/dist/css/themes/ResponsivePopover.css +1 -1
- package/dist/css/themes/ResponsivePopoverCommon.css +1 -1
- package/dist/css/themes/SegmentedButton.css +1 -1
- package/dist/css/themes/SegmentedButtonItem.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 -1
- package/dist/css/themes/StepInput.css +1 -1
- package/dist/css/themes/SuggestionItem.css +1 -1
- package/dist/css/themes/SuggestionItemCustom.css +1 -1
- package/dist/css/themes/Switch.css +1 -1
- 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/TabSemanticIcon.css +1 -1
- package/dist/css/themes/TabSeparatorInOverflow.css +1 -1
- package/dist/css/themes/TableCell.css +1 -1
- package/dist/css/themes/TableCellBase.css +1 -1
- package/dist/css/themes/TableHeaderRow.css +1 -1
- package/dist/css/themes/TableRow.css +1 -1
- package/dist/css/themes/TableRowActionBase.css +1 -1
- package/dist/css/themes/TableRowBase.css +1 -1
- package/dist/css/themes/Tag.css +1 -1
- package/dist/css/themes/Text.css +1 -1
- package/dist/css/themes/TextArea.css +1 -1
- package/dist/css/themes/TimePicker.css +1 -1
- package/dist/css/themes/Toast.css +1 -1
- package/dist/css/themes/ToggleButton.css +1 -1
- package/dist/css/themes/Token.css +1 -1
- package/dist/css/themes/Tokenizer.css +1 -1
- package/dist/css/themes/TokenizerPopover.css +1 -1
- package/dist/css/themes/Toolbar.css +1 -1
- package/dist/css/themes/ToolbarPopover.css +1 -1
- package/dist/css/themes/ToolbarSeparator.css +1 -1
- package/dist/css/themes/TreeItem.css +1 -1
- package/dist/css/themes/ValueStateMessage.css +1 -1
- package/dist/css/themes/YearPicker.css +1 -1
- package/dist/css/themes/YearRangePicker.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_dark/parameters-bundle.css +1 -1
- package/dist/css/themes/sap_horizon_hcb/parameters-bundle.css +1 -1
- package/dist/css/themes/sap_horizon_hcw/parameters-bundle.css +1 -1
- package/dist/custom-elements-internal.json +331 -12
- package/dist/custom-elements.json +232 -9
- 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_dark/parameters-bundle.css.json +1 -1
- package/dist/generated/assets/themes/sap_horizon_hcb/parameters-bundle.css.json +1 -1
- package/dist/generated/assets/themes/sap_horizon_hcw/parameters-bundle.css.json +1 -1
- package/dist/generated/i18n/i18n-defaults.d.ts +3 -1
- package/dist/generated/i18n/i18n-defaults.js +3 -1
- package/dist/generated/i18n/i18n-defaults.js.map +1 -1
- package/dist/generated/themes/Avatar.css.d.ts +1 -1
- package/dist/generated/themes/Avatar.css.js +1 -1
- package/dist/generated/themes/Avatar.css.js.map +1 -1
- package/dist/generated/themes/AvatarGroup.css.d.ts +1 -1
- package/dist/generated/themes/AvatarGroup.css.js +1 -1
- package/dist/generated/themes/AvatarGroup.css.js.map +1 -1
- package/dist/generated/themes/Bar.css.d.ts +1 -1
- package/dist/generated/themes/Bar.css.js +1 -1
- package/dist/generated/themes/Bar.css.js.map +1 -1
- package/dist/generated/themes/Breadcrumbs.css.d.ts +1 -1
- package/dist/generated/themes/Breadcrumbs.css.js +1 -1
- package/dist/generated/themes/Breadcrumbs.css.js.map +1 -1
- package/dist/generated/themes/BusyIndicator.css.d.ts +1 -1
- package/dist/generated/themes/BusyIndicator.css.js +1 -1
- package/dist/generated/themes/BusyIndicator.css.js.map +1 -1
- package/dist/generated/themes/Button.css.d.ts +1 -1
- package/dist/generated/themes/Button.css.js +1 -1
- package/dist/generated/themes/Button.css.js.map +1 -1
- package/dist/generated/themes/ButtonBadge.css.d.ts +1 -1
- package/dist/generated/themes/ButtonBadge.css.js +1 -1
- package/dist/generated/themes/ButtonBadge.css.js.map +1 -1
- package/dist/generated/themes/Calendar.css.d.ts +1 -1
- package/dist/generated/themes/Calendar.css.js +1 -1
- package/dist/generated/themes/Calendar.css.js.map +1 -1
- package/dist/generated/themes/CalendarHeader.css.d.ts +1 -1
- package/dist/generated/themes/CalendarHeader.css.js +1 -1
- package/dist/generated/themes/CalendarHeader.css.js.map +1 -1
- package/dist/generated/themes/CalendarLegend.css.d.ts +1 -1
- package/dist/generated/themes/CalendarLegend.css.js +1 -1
- package/dist/generated/themes/CalendarLegend.css.js.map +1 -1
- package/dist/generated/themes/CalendarLegendItem.css.d.ts +1 -1
- package/dist/generated/themes/CalendarLegendItem.css.js +1 -1
- package/dist/generated/themes/CalendarLegendItem.css.js.map +1 -1
- package/dist/generated/themes/Card.css.d.ts +1 -1
- package/dist/generated/themes/Card.css.js +1 -1
- package/dist/generated/themes/Card.css.js.map +1 -1
- package/dist/generated/themes/CardHeader.css.d.ts +1 -1
- package/dist/generated/themes/CardHeader.css.js +1 -1
- package/dist/generated/themes/CardHeader.css.js.map +1 -1
- package/dist/generated/themes/Carousel.css.d.ts +1 -1
- package/dist/generated/themes/Carousel.css.js +1 -1
- package/dist/generated/themes/Carousel.css.js.map +1 -1
- package/dist/generated/themes/CheckBox.css.d.ts +1 -1
- package/dist/generated/themes/CheckBox.css.js +1 -1
- package/dist/generated/themes/CheckBox.css.js.map +1 -1
- package/dist/generated/themes/ColorPalette.css.d.ts +1 -1
- package/dist/generated/themes/ColorPalette.css.js +1 -1
- package/dist/generated/themes/ColorPalette.css.js.map +1 -1
- package/dist/generated/themes/ColorPaletteItem.css.d.ts +1 -1
- package/dist/generated/themes/ColorPaletteItem.css.js +1 -1
- package/dist/generated/themes/ColorPaletteItem.css.js.map +1 -1
- package/dist/generated/themes/ColorPalettePopover.css.d.ts +1 -1
- package/dist/generated/themes/ColorPalettePopover.css.js +1 -1
- package/dist/generated/themes/ColorPalettePopover.css.js.map +1 -1
- package/dist/generated/themes/ColorPicker.css.d.ts +1 -1
- package/dist/generated/themes/ColorPicker.css.js +1 -1
- package/dist/generated/themes/ColorPicker.css.js.map +1 -1
- package/dist/generated/themes/ComboBox.css.d.ts +1 -1
- package/dist/generated/themes/ComboBox.css.js +1 -1
- package/dist/generated/themes/ComboBox.css.js.map +1 -1
- package/dist/generated/themes/ComboBoxItem.css.d.ts +1 -1
- package/dist/generated/themes/ComboBoxItem.css.js +1 -1
- package/dist/generated/themes/ComboBoxItem.css.js.map +1 -1
- package/dist/generated/themes/DatePicker.css.d.ts +1 -1
- package/dist/generated/themes/DatePicker.css.js +1 -1
- package/dist/generated/themes/DatePicker.css.js.map +1 -1
- package/dist/generated/themes/DateTimePickerPopover.css.d.ts +1 -1
- package/dist/generated/themes/DateTimePickerPopover.css.js +1 -1
- package/dist/generated/themes/DateTimePickerPopover.css.js.map +1 -1
- package/dist/generated/themes/DayPicker.css.d.ts +1 -1
- package/dist/generated/themes/DayPicker.css.js +1 -1
- package/dist/generated/themes/DayPicker.css.js.map +1 -1
- package/dist/generated/themes/Dialog.css.d.ts +1 -1
- package/dist/generated/themes/Dialog.css.js +1 -1
- package/dist/generated/themes/Dialog.css.js.map +1 -1
- package/dist/generated/themes/DynamicDateRange.css.d.ts +1 -1
- package/dist/generated/themes/DynamicDateRange.css.js +1 -1
- package/dist/generated/themes/DynamicDateRange.css.js.map +1 -1
- package/dist/generated/themes/DynamicDateRangePopover.css.d.ts +1 -1
- package/dist/generated/themes/DynamicDateRangePopover.css.js +1 -1
- package/dist/generated/themes/DynamicDateRangePopover.css.js.map +1 -1
- package/dist/generated/themes/FileUploader.css.d.ts +1 -1
- package/dist/generated/themes/FileUploader.css.js +1 -1
- package/dist/generated/themes/FileUploader.css.js.map +1 -1
- package/dist/generated/themes/Form.css.d.ts +1 -1
- package/dist/generated/themes/Form.css.js +1 -1
- package/dist/generated/themes/Form.css.js.map +1 -1
- package/dist/generated/themes/FormItem.css.d.ts +1 -1
- package/dist/generated/themes/FormItem.css.js +1 -1
- package/dist/generated/themes/FormItem.css.js.map +1 -1
- package/dist/generated/themes/FormItemSpan.css.d.ts +1 -1
- package/dist/generated/themes/FormItemSpan.css.js +1 -1
- package/dist/generated/themes/FormItemSpan.css.js.map +1 -1
- package/dist/generated/themes/GrowingButton.css.d.ts +1 -1
- package/dist/generated/themes/GrowingButton.css.js +1 -1
- package/dist/generated/themes/GrowingButton.css.js.map +1 -1
- package/dist/generated/themes/Icon.css.d.ts +1 -1
- package/dist/generated/themes/Icon.css.js +1 -1
- package/dist/generated/themes/Icon.css.js.map +1 -1
- package/dist/generated/themes/Input.css.d.ts +1 -1
- package/dist/generated/themes/Input.css.js +1 -1
- package/dist/generated/themes/Input.css.js.map +1 -1
- package/dist/generated/themes/InputIcon.css.d.ts +1 -1
- package/dist/generated/themes/InputIcon.css.js +1 -1
- package/dist/generated/themes/InputIcon.css.js.map +1 -1
- package/dist/generated/themes/InputSharedStyles.css.d.ts +1 -1
- package/dist/generated/themes/InputSharedStyles.css.js +1 -1
- package/dist/generated/themes/InputSharedStyles.css.js.map +1 -1
- package/dist/generated/themes/Link.css.d.ts +1 -1
- package/dist/generated/themes/Link.css.js +1 -1
- package/dist/generated/themes/Link.css.js.map +1 -1
- package/dist/generated/themes/List.css.d.ts +1 -1
- package/dist/generated/themes/List.css.js +1 -1
- package/dist/generated/themes/List.css.js.map +1 -1
- package/dist/generated/themes/ListItem.css.d.ts +1 -1
- package/dist/generated/themes/ListItem.css.js +1 -1
- package/dist/generated/themes/ListItem.css.js.map +1 -1
- package/dist/generated/themes/ListItemBase.css.d.ts +1 -1
- package/dist/generated/themes/ListItemBase.css.js +1 -1
- package/dist/generated/themes/ListItemBase.css.js.map +1 -1
- package/dist/generated/themes/ListItemCustom.css.d.ts +1 -1
- package/dist/generated/themes/ListItemCustom.css.js +1 -1
- package/dist/generated/themes/ListItemCustom.css.js.map +1 -1
- package/dist/generated/themes/ListItemGroup.css.d.ts +1 -1
- package/dist/generated/themes/ListItemGroup.css.js +1 -1
- package/dist/generated/themes/ListItemGroup.css.js.map +1 -1
- package/dist/generated/themes/ListItemGroupHeader.css.d.ts +1 -1
- package/dist/generated/themes/ListItemGroupHeader.css.js +1 -1
- package/dist/generated/themes/ListItemGroupHeader.css.js.map +1 -1
- package/dist/generated/themes/ListItemIcon.css.d.ts +1 -1
- package/dist/generated/themes/ListItemIcon.css.js +1 -1
- package/dist/generated/themes/ListItemIcon.css.js.map +1 -1
- package/dist/generated/themes/Menu.css.d.ts +1 -1
- package/dist/generated/themes/Menu.css.js +1 -1
- package/dist/generated/themes/Menu.css.js.map +1 -1
- package/dist/generated/themes/MenuItem.css.d.ts +1 -1
- package/dist/generated/themes/MenuItem.css.js +1 -1
- package/dist/generated/themes/MenuItem.css.js.map +1 -1
- package/dist/generated/themes/MessageStrip.css.d.ts +1 -1
- package/dist/generated/themes/MessageStrip.css.js +1 -1
- package/dist/generated/themes/MessageStrip.css.js.map +1 -1
- package/dist/generated/themes/MonthPicker.css.d.ts +1 -1
- package/dist/generated/themes/MonthPicker.css.js +1 -1
- package/dist/generated/themes/MonthPicker.css.js.map +1 -1
- package/dist/generated/themes/MultiComboBox.css.d.ts +1 -1
- package/dist/generated/themes/MultiComboBox.css.js +1 -1
- package/dist/generated/themes/MultiComboBox.css.js.map +1 -1
- package/dist/generated/themes/MultiComboBoxItem.css.d.ts +1 -1
- package/dist/generated/themes/MultiComboBoxItem.css.js +1 -1
- package/dist/generated/themes/MultiComboBoxItem.css.js.map +1 -1
- package/dist/generated/themes/MultiComboBoxPopover.css.d.ts +1 -1
- package/dist/generated/themes/MultiComboBoxPopover.css.js +1 -1
- package/dist/generated/themes/MultiComboBoxPopover.css.js.map +1 -1
- package/dist/generated/themes/MultiInput.css.d.ts +1 -1
- package/dist/generated/themes/MultiInput.css.js +1 -1
- package/dist/generated/themes/MultiInput.css.js.map +1 -1
- package/dist/generated/themes/OptionBase.css.d.ts +1 -1
- package/dist/generated/themes/OptionBase.css.js +1 -1
- package/dist/generated/themes/OptionBase.css.js.map +1 -1
- package/dist/generated/themes/Panel.css.d.ts +1 -1
- package/dist/generated/themes/Panel.css.js +1 -1
- package/dist/generated/themes/Panel.css.js.map +1 -1
- package/dist/generated/themes/Popover.css.d.ts +1 -1
- package/dist/generated/themes/Popover.css.js +1 -1
- package/dist/generated/themes/Popover.css.js.map +1 -1
- package/dist/generated/themes/PopupsCommon.css.d.ts +1 -1
- package/dist/generated/themes/PopupsCommon.css.js +1 -1
- package/dist/generated/themes/PopupsCommon.css.js.map +1 -1
- package/dist/generated/themes/ProgressIndicator.css.d.ts +1 -1
- package/dist/generated/themes/ProgressIndicator.css.js +1 -1
- package/dist/generated/themes/ProgressIndicator.css.js.map +1 -1
- package/dist/generated/themes/RadioButton.css.d.ts +1 -1
- package/dist/generated/themes/RadioButton.css.js +1 -1
- package/dist/generated/themes/RadioButton.css.js.map +1 -1
- package/dist/generated/themes/RangeSlider.css.d.ts +1 -1
- package/dist/generated/themes/RangeSlider.css.js +1 -1
- package/dist/generated/themes/RangeSlider.css.js.map +1 -1
- package/dist/generated/themes/RatingIndicator.css.d.ts +1 -1
- package/dist/generated/themes/RatingIndicator.css.js +1 -1
- package/dist/generated/themes/RatingIndicator.css.js.map +1 -1
- package/dist/generated/themes/ResponsivePopover.css.d.ts +1 -1
- package/dist/generated/themes/ResponsivePopover.css.js +1 -1
- package/dist/generated/themes/ResponsivePopover.css.js.map +1 -1
- package/dist/generated/themes/ResponsivePopoverCommon.css.d.ts +1 -1
- package/dist/generated/themes/ResponsivePopoverCommon.css.js +1 -1
- package/dist/generated/themes/ResponsivePopoverCommon.css.js.map +1 -1
- package/dist/generated/themes/SegmentedButton.css.d.ts +1 -1
- package/dist/generated/themes/SegmentedButton.css.js +1 -1
- package/dist/generated/themes/SegmentedButton.css.js.map +1 -1
- package/dist/generated/themes/SegmentedButtonItem.css.d.ts +1 -1
- package/dist/generated/themes/SegmentedButtonItem.css.js +1 -1
- package/dist/generated/themes/SegmentedButtonItem.css.js.map +1 -1
- package/dist/generated/themes/Select.css.d.ts +1 -1
- package/dist/generated/themes/Select.css.js +1 -1
- package/dist/generated/themes/Select.css.js.map +1 -1
- package/dist/generated/themes/SliderBase.css.d.ts +1 -1
- package/dist/generated/themes/SliderBase.css.js +1 -1
- package/dist/generated/themes/SliderBase.css.js.map +1 -1
- package/dist/generated/themes/SplitButton.css.d.ts +1 -1
- package/dist/generated/themes/SplitButton.css.js +1 -1
- package/dist/generated/themes/SplitButton.css.js.map +1 -1
- package/dist/generated/themes/StepInput.css.d.ts +1 -1
- package/dist/generated/themes/StepInput.css.js +1 -1
- package/dist/generated/themes/StepInput.css.js.map +1 -1
- package/dist/generated/themes/SuggestionItem.css.d.ts +1 -1
- package/dist/generated/themes/SuggestionItem.css.js +1 -1
- package/dist/generated/themes/SuggestionItem.css.js.map +1 -1
- package/dist/generated/themes/SuggestionItemCustom.css.d.ts +1 -1
- package/dist/generated/themes/SuggestionItemCustom.css.js +1 -1
- package/dist/generated/themes/SuggestionItemCustom.css.js.map +1 -1
- package/dist/generated/themes/Switch.css.d.ts +1 -1
- package/dist/generated/themes/Switch.css.js +1 -1
- package/dist/generated/themes/Switch.css.js.map +1 -1
- package/dist/generated/themes/TabContainer.css.d.ts +1 -1
- package/dist/generated/themes/TabContainer.css.js +1 -1
- package/dist/generated/themes/TabContainer.css.js.map +1 -1
- package/dist/generated/themes/TabInOverflow.css.d.ts +1 -1
- package/dist/generated/themes/TabInOverflow.css.js +1 -1
- package/dist/generated/themes/TabInOverflow.css.js.map +1 -1
- package/dist/generated/themes/TabInStrip.css.d.ts +1 -1
- package/dist/generated/themes/TabInStrip.css.js +1 -1
- package/dist/generated/themes/TabInStrip.css.js.map +1 -1
- package/dist/generated/themes/TabSemanticIcon.css.d.ts +1 -1
- package/dist/generated/themes/TabSemanticIcon.css.js +1 -1
- package/dist/generated/themes/TabSemanticIcon.css.js.map +1 -1
- package/dist/generated/themes/TabSeparatorInOverflow.css.d.ts +1 -1
- package/dist/generated/themes/TabSeparatorInOverflow.css.js +1 -1
- package/dist/generated/themes/TabSeparatorInOverflow.css.js.map +1 -1
- package/dist/generated/themes/TableCell.css.d.ts +1 -1
- package/dist/generated/themes/TableCell.css.js +1 -1
- package/dist/generated/themes/TableCell.css.js.map +1 -1
- package/dist/generated/themes/TableCellBase.css.d.ts +1 -1
- package/dist/generated/themes/TableCellBase.css.js +1 -1
- package/dist/generated/themes/TableCellBase.css.js.map +1 -1
- package/dist/generated/themes/TableHeaderRow.css.d.ts +1 -1
- package/dist/generated/themes/TableHeaderRow.css.js +1 -1
- package/dist/generated/themes/TableHeaderRow.css.js.map +1 -1
- package/dist/generated/themes/TableRow.css.d.ts +1 -1
- package/dist/generated/themes/TableRow.css.js +1 -1
- package/dist/generated/themes/TableRow.css.js.map +1 -1
- package/dist/generated/themes/TableRowActionBase.css.d.ts +1 -1
- package/dist/generated/themes/TableRowActionBase.css.js +1 -1
- package/dist/generated/themes/TableRowActionBase.css.js.map +1 -1
- package/dist/generated/themes/TableRowBase.css.d.ts +1 -1
- package/dist/generated/themes/TableRowBase.css.js +1 -1
- package/dist/generated/themes/TableRowBase.css.js.map +1 -1
- package/dist/generated/themes/Tag.css.d.ts +1 -1
- package/dist/generated/themes/Tag.css.js +1 -1
- package/dist/generated/themes/Tag.css.js.map +1 -1
- package/dist/generated/themes/Text.css.d.ts +1 -1
- package/dist/generated/themes/Text.css.js +1 -1
- package/dist/generated/themes/Text.css.js.map +1 -1
- package/dist/generated/themes/TextArea.css.d.ts +1 -1
- package/dist/generated/themes/TextArea.css.js +1 -1
- package/dist/generated/themes/TextArea.css.js.map +1 -1
- package/dist/generated/themes/TimePicker.css.d.ts +1 -1
- package/dist/generated/themes/TimePicker.css.js +1 -1
- package/dist/generated/themes/TimePicker.css.js.map +1 -1
- package/dist/generated/themes/Toast.css.d.ts +1 -1
- package/dist/generated/themes/Toast.css.js +1 -1
- package/dist/generated/themes/Toast.css.js.map +1 -1
- package/dist/generated/themes/ToggleButton.css.d.ts +1 -1
- package/dist/generated/themes/ToggleButton.css.js +1 -1
- package/dist/generated/themes/ToggleButton.css.js.map +1 -1
- package/dist/generated/themes/Token.css.d.ts +1 -1
- package/dist/generated/themes/Token.css.js +1 -1
- package/dist/generated/themes/Token.css.js.map +1 -1
- package/dist/generated/themes/Tokenizer.css.d.ts +1 -1
- package/dist/generated/themes/Tokenizer.css.js +1 -1
- package/dist/generated/themes/Tokenizer.css.js.map +1 -1
- package/dist/generated/themes/TokenizerPopover.css.d.ts +1 -1
- package/dist/generated/themes/TokenizerPopover.css.js +1 -1
- package/dist/generated/themes/TokenizerPopover.css.js.map +1 -1
- package/dist/generated/themes/Toolbar.css.d.ts +1 -1
- package/dist/generated/themes/Toolbar.css.js +1 -1
- package/dist/generated/themes/Toolbar.css.js.map +1 -1
- package/dist/generated/themes/ToolbarPopover.css.d.ts +1 -1
- package/dist/generated/themes/ToolbarPopover.css.js +1 -1
- package/dist/generated/themes/ToolbarPopover.css.js.map +1 -1
- package/dist/generated/themes/ToolbarSeparator.css.d.ts +1 -1
- package/dist/generated/themes/ToolbarSeparator.css.js +1 -1
- package/dist/generated/themes/ToolbarSeparator.css.js.map +1 -1
- package/dist/generated/themes/TreeItem.css.d.ts +1 -1
- package/dist/generated/themes/TreeItem.css.js +1 -1
- package/dist/generated/themes/TreeItem.css.js.map +1 -1
- package/dist/generated/themes/ValueStateMessage.css.d.ts +1 -1
- package/dist/generated/themes/ValueStateMessage.css.js +1 -1
- package/dist/generated/themes/ValueStateMessage.css.js.map +1 -1
- package/dist/generated/themes/YearPicker.css.d.ts +1 -1
- package/dist/generated/themes/YearPicker.css.js +1 -1
- package/dist/generated/themes/YearPicker.css.js.map +1 -1
- package/dist/generated/themes/YearRangePicker.css.d.ts +1 -1
- package/dist/generated/themes/YearRangePicker.css.js +1 -1
- package/dist/generated/themes/YearRangePicker.css.js.map +1 -1
- package/dist/generated/themes/sap_fiori_3/parameters-bundle.css.d.ts +1 -1
- package/dist/generated/themes/sap_fiori_3/parameters-bundle.css.js +1 -1
- package/dist/generated/themes/sap_fiori_3/parameters-bundle.css.js.map +1 -1
- package/dist/generated/themes/sap_fiori_3_dark/parameters-bundle.css.d.ts +1 -1
- package/dist/generated/themes/sap_fiori_3_dark/parameters-bundle.css.js +1 -1
- package/dist/generated/themes/sap_fiori_3_dark/parameters-bundle.css.js.map +1 -1
- package/dist/generated/themes/sap_fiori_3_hcb/parameters-bundle.css.d.ts +1 -1
- package/dist/generated/themes/sap_fiori_3_hcb/parameters-bundle.css.js +1 -1
- package/dist/generated/themes/sap_fiori_3_hcb/parameters-bundle.css.js.map +1 -1
- package/dist/generated/themes/sap_fiori_3_hcw/parameters-bundle.css.d.ts +1 -1
- package/dist/generated/themes/sap_fiori_3_hcw/parameters-bundle.css.js +1 -1
- package/dist/generated/themes/sap_fiori_3_hcw/parameters-bundle.css.js.map +1 -1
- package/dist/generated/themes/sap_horizon/parameters-bundle.css.d.ts +1 -1
- package/dist/generated/themes/sap_horizon/parameters-bundle.css.js +1 -1
- package/dist/generated/themes/sap_horizon/parameters-bundle.css.js.map +1 -1
- package/dist/generated/themes/sap_horizon_dark/parameters-bundle.css.d.ts +1 -1
- package/dist/generated/themes/sap_horizon_dark/parameters-bundle.css.js +1 -1
- package/dist/generated/themes/sap_horizon_dark/parameters-bundle.css.js.map +1 -1
- package/dist/generated/themes/sap_horizon_hcb/parameters-bundle.css.d.ts +1 -1
- package/dist/generated/themes/sap_horizon_hcb/parameters-bundle.css.js +1 -1
- package/dist/generated/themes/sap_horizon_hcb/parameters-bundle.css.js.map +1 -1
- package/dist/generated/themes/sap_horizon_hcw/parameters-bundle.css.d.ts +1 -1
- package/dist/generated/themes/sap_horizon_hcw/parameters-bundle.css.js +1 -1
- package/dist/generated/themes/sap_horizon_hcw/parameters-bundle.css.js.map +1 -1
- package/dist/types/MenuItemGroupCheckMode.d.ts +23 -0
- package/dist/types/MenuItemGroupCheckMode.js +25 -0
- package/dist/types/MenuItemGroupCheckMode.js.map +1 -0
- package/dist/types/TableOverflowMode.d.ts +1 -1
- package/dist/types/TableOverflowMode.js +1 -1
- package/dist/types/TableOverflowMode.js.map +1 -1
- package/dist/types/TableSelectionMultiHeaderSelector.d.ts +19 -0
- package/dist/types/TableSelectionMultiHeaderSelector.js +21 -0
- package/dist/types/TableSelectionMultiHeaderSelector.js.map +1 -0
- package/dist/vscode.html-custom-data.json +47 -6
- package/dist/web-types.json +117 -12
- package/package.json +10 -10
- package/src/CalendarHeaderTemplate.tsx +3 -0
- package/src/CalendarTemplate.tsx +2 -2
- package/src/MenuItemGroupTemplate.tsx +12 -0
- package/src/MenuItemTemplate.tsx +13 -0
- package/src/MonthPickerTemplate.tsx +1 -0
- package/src/TableHeaderRowTemplate.tsx +25 -8
- package/src/TableRowTemplate.tsx +1 -1
- package/src/YearPickerTemplate.tsx +1 -0
- package/src/i18n/messagebundle.properties +4 -0
- package/src/themes/ButtonBadge.css +2 -0
- package/src/themes/ComboBoxItem.css +3 -3
- package/src/themes/MenuItem.css +13 -1
- package/src/themes/MultiComboBoxItem.css +3 -3
- package/src/themes/SuggestionItem.css +3 -3
- package/src/themes/Table.css +29 -29
- package/src/themes/TableCell.css +9 -6
- package/src/themes/TableCellBase.css +16 -16
- package/src/themes/TableGrowing.css +19 -19
- package/src/themes/TableHeaderRow.css +17 -12
- package/src/themes/TableRow.css +1 -1
- package/src/themes/TableRowActionBase.css +6 -6
- package/src/themes/TableRowBase.css +4 -1
package/dist/MenuItem.js
CHANGED
|
@@ -18,7 +18,10 @@ import "@ui5/webcomponents-icons/dist/nav-back.js";
|
|
|
18
18
|
import NavigationMode from "@ui5/webcomponents-base/dist/types/NavigationMode.js";
|
|
19
19
|
import ItemNavigation from "@ui5/webcomponents-base/dist/delegate/ItemNavigation.js";
|
|
20
20
|
import ItemNavigationBehavior from "@ui5/webcomponents-base/dist/types/ItemNavigationBehavior.js";
|
|
21
|
+
import MenuItemGroupCheckMode from "./types/MenuItemGroupCheckMode.js";
|
|
21
22
|
import ListItem from "./ListItem.js";
|
|
23
|
+
import { isInstanceOfMenuSeparator } from "./MenuSeparator.js";
|
|
24
|
+
import { isInstanceOfMenuItemGroup } from "./MenuItemGroup.js";
|
|
22
25
|
import MenuItemTemplate from "./MenuItemTemplate.js";
|
|
23
26
|
import { MENU_BACK_BUTTON_ARIA_LABEL, MENU_CLOSE_BUTTON_ARIA_LABEL, MENU_POPOVER_ACCESSIBLE_NAME, } from "./generated/i18n/i18n-defaults.js";
|
|
24
27
|
// Styles
|
|
@@ -50,39 +53,60 @@ let MenuItem = MenuItem_1 = class MenuItem extends ListItem {
|
|
|
50
53
|
constructor() {
|
|
51
54
|
super();
|
|
52
55
|
/**
|
|
53
|
-
* Defines whether
|
|
56
|
+
* Defines whether menu item is in disabled state.
|
|
54
57
|
*
|
|
55
|
-
* **Note:** A disabled
|
|
58
|
+
* **Note:** A disabled menu item is noninteractive.
|
|
56
59
|
* @default false
|
|
57
60
|
* @public
|
|
58
61
|
*/
|
|
59
62
|
this.disabled = false;
|
|
60
63
|
/**
|
|
61
|
-
* Defines the delay in milliseconds, after which the loading indicator will be displayed inside the corresponding
|
|
64
|
+
* Defines the delay in milliseconds, after which the loading indicator will be displayed inside the corresponding menu popover.
|
|
62
65
|
*
|
|
63
|
-
* **Note:** If set to `true` a
|
|
66
|
+
* **Note:** If set to `true` a busy indicator component will be displayed into the related one to the current menu item sub-menu popover.
|
|
64
67
|
* @default false
|
|
65
68
|
* @public
|
|
66
69
|
* @since 1.13.0
|
|
67
70
|
*/
|
|
68
71
|
this.loading = false;
|
|
69
72
|
/**
|
|
70
|
-
* Defines the delay in milliseconds, after which the loading indicator will be displayed inside the corresponding
|
|
73
|
+
* Defines the delay in milliseconds, after which the loading indicator will be displayed inside the corresponding menu popover.
|
|
71
74
|
* @default 1000
|
|
72
75
|
* @public
|
|
73
76
|
* @since 1.13.0
|
|
74
77
|
*/
|
|
75
78
|
this.loadingDelay = 1000;
|
|
79
|
+
/**
|
|
80
|
+
* Defines whether menu item is in checked state.
|
|
81
|
+
*
|
|
82
|
+
* **Note:** checked state is only taken into account when menu item is added to menu item group
|
|
83
|
+
* with `checkMode` other than `None`.
|
|
84
|
+
*
|
|
85
|
+
* **Note:** A checked menu item has a checkmark displayed at its end.
|
|
86
|
+
* @default false
|
|
87
|
+
* @public
|
|
88
|
+
* @since 2.12.0
|
|
89
|
+
*/
|
|
90
|
+
this.checked = false;
|
|
76
91
|
/**
|
|
77
92
|
* Indicates whether any of the element siblings have icon.
|
|
78
93
|
*/
|
|
79
94
|
this._siblingsWithIcon = false;
|
|
95
|
+
/**
|
|
96
|
+
* Defines the component's check mode.
|
|
97
|
+
* @default "None"
|
|
98
|
+
* @private
|
|
99
|
+
*/
|
|
100
|
+
this._checkMode = "None";
|
|
80
101
|
this._itemNavigation = new ItemNavigation(this, {
|
|
81
102
|
navigationMode: NavigationMode.Horizontal,
|
|
82
103
|
behavior: ItemNavigationBehavior.Static,
|
|
83
104
|
getItemsCallback: () => this._navigableItems,
|
|
84
105
|
});
|
|
85
106
|
}
|
|
107
|
+
get _list() {
|
|
108
|
+
return this.shadowRoot && this.shadowRoot.querySelector("[ui5-list]");
|
|
109
|
+
}
|
|
86
110
|
get _navigableItems() {
|
|
87
111
|
return [...this.endContent].filter(item => {
|
|
88
112
|
return item.hasAttribute("ui5-button")
|
|
@@ -133,43 +157,95 @@ let MenuItem = MenuItem_1 = class MenuItem extends ListItem {
|
|
|
133
157
|
get acessibleNameText() {
|
|
134
158
|
return MenuItem_1.i18nBundle.getText(MENU_POPOVER_ACCESSIBLE_NAME);
|
|
135
159
|
}
|
|
136
|
-
get isSeparator() {
|
|
137
|
-
return false;
|
|
138
|
-
}
|
|
139
160
|
onBeforeRendering() {
|
|
140
161
|
super.onBeforeRendering();
|
|
141
|
-
const siblingsWithIcon = this.
|
|
142
|
-
this.
|
|
162
|
+
const siblingsWithIcon = this._allMenuItems.some(menuItem => !!menuItem.icon);
|
|
163
|
+
this._setupItemNavigation();
|
|
164
|
+
this._allMenuItems.forEach(item => {
|
|
143
165
|
item._siblingsWithIcon = siblingsWithIcon;
|
|
144
166
|
});
|
|
145
167
|
}
|
|
146
168
|
async focus(focusOptions) {
|
|
147
169
|
await renderFinished();
|
|
148
170
|
if (this.hasSubmenu && this.isSubMenuOpen) {
|
|
149
|
-
|
|
171
|
+
const menuItems = this._allMenuItems;
|
|
172
|
+
return menuItems[0] && menuItems[0].focus(focusOptions);
|
|
150
173
|
}
|
|
151
174
|
return super.focus(focusOptions);
|
|
152
175
|
}
|
|
153
176
|
get _focusable() {
|
|
154
177
|
return true;
|
|
155
178
|
}
|
|
179
|
+
get _role() {
|
|
180
|
+
switch (this._checkMode) {
|
|
181
|
+
case MenuItemGroupCheckMode.Single:
|
|
182
|
+
return "menuitemradio";
|
|
183
|
+
case MenuItemGroupCheckMode.Multiple:
|
|
184
|
+
return "menuitemcheckbox";
|
|
185
|
+
default:
|
|
186
|
+
return "menuitem";
|
|
187
|
+
}
|
|
188
|
+
}
|
|
156
189
|
get _accInfo() {
|
|
157
190
|
const accInfoSettings = {
|
|
158
|
-
role: this.accessibilityAttributes.role ||
|
|
191
|
+
role: this.accessibilityAttributes.role || this._role,
|
|
159
192
|
ariaHaspopup: this.hasSubmenu ? "menu" : undefined,
|
|
160
193
|
ariaKeyShortcuts: this.accessibilityAttributes.ariaKeyShortcuts,
|
|
194
|
+
ariaExpanded: this.hasSubmenu ? this.isSubMenuOpen : undefined,
|
|
161
195
|
ariaHidden: !!this.additionalText && !!this.accessibilityAttributes.ariaKeyShortcuts ? true : undefined,
|
|
196
|
+
ariaChecked: this._markChecked ? true : undefined,
|
|
162
197
|
};
|
|
163
198
|
return { ...super._accInfo, ...accInfoSettings };
|
|
164
199
|
}
|
|
165
200
|
get _popover() {
|
|
166
|
-
return this.shadowRoot.querySelector("[ui5-responsive-popover]");
|
|
201
|
+
return this.shadowRoot && this.shadowRoot.querySelector("[ui5-responsive-popover]");
|
|
202
|
+
}
|
|
203
|
+
get _markChecked() {
|
|
204
|
+
return !this.hasSubmenu && this.checked && this._checkMode !== MenuItemGroupCheckMode.None;
|
|
205
|
+
}
|
|
206
|
+
/** Returns menu item groups */
|
|
207
|
+
get _menuItemGroups() {
|
|
208
|
+
return this.items.filter(isInstanceOfMenuItemGroup);
|
|
167
209
|
}
|
|
210
|
+
/** Returns menu items */
|
|
168
211
|
get _menuItems() {
|
|
169
|
-
return this.items.filter(
|
|
212
|
+
return this.items.filter(isInstanceOfMenuItem);
|
|
213
|
+
}
|
|
214
|
+
/** Returns all menu items (including those in groups */
|
|
215
|
+
get _allMenuItems() {
|
|
216
|
+
const items = [];
|
|
217
|
+
this.items.forEach(item => {
|
|
218
|
+
if (isInstanceOfMenuItemGroup(item)) {
|
|
219
|
+
items.push(...item._menuItems);
|
|
220
|
+
}
|
|
221
|
+
else if (!isInstanceOfMenuSeparator(item)) {
|
|
222
|
+
items.push(item);
|
|
223
|
+
}
|
|
224
|
+
});
|
|
225
|
+
return items;
|
|
226
|
+
}
|
|
227
|
+
/** Returns menu items included in the ItemNavigation */
|
|
228
|
+
get _navigatableMenuItems() {
|
|
229
|
+
const items = [];
|
|
230
|
+
const slottedItems = this.getSlottedNodes("items");
|
|
231
|
+
slottedItems.forEach(item => {
|
|
232
|
+
if (isInstanceOfMenuItemGroup(item)) {
|
|
233
|
+
const groupItems = item.getSlottedNodes("items");
|
|
234
|
+
items.push(...groupItems);
|
|
235
|
+
}
|
|
236
|
+
else if (!isInstanceOfMenuSeparator(item)) {
|
|
237
|
+
items.push(item);
|
|
238
|
+
}
|
|
239
|
+
});
|
|
240
|
+
return items;
|
|
241
|
+
}
|
|
242
|
+
_setupItemNavigation() {
|
|
243
|
+
if (this._list) {
|
|
244
|
+
this._list._itemNavigation._getItems = () => this._navigatableMenuItems;
|
|
245
|
+
}
|
|
170
246
|
}
|
|
171
247
|
_closeOtherSubMenus(item) {
|
|
172
|
-
const menuItems = this.
|
|
248
|
+
const menuItems = this._allMenuItems;
|
|
173
249
|
if (!menuItems.includes(item)) {
|
|
174
250
|
return;
|
|
175
251
|
}
|
|
@@ -192,7 +268,7 @@ let MenuItem = MenuItem_1 = class MenuItem extends ListItem {
|
|
|
192
268
|
}
|
|
193
269
|
_itemKeyDown(e) {
|
|
194
270
|
const item = e.target;
|
|
195
|
-
const itemInMenuItems = this.
|
|
271
|
+
const itemInMenuItems = this._allMenuItems.includes(item);
|
|
196
272
|
const isTabNextPrevious = isTabNext(e) || isTabPrevious(e);
|
|
197
273
|
const isItemNavigation = isUp(e) || isDown(e);
|
|
198
274
|
const isItemSelection = isSpace(e) || isEnter(e);
|
|
@@ -213,7 +289,7 @@ let MenuItem = MenuItem_1 = class MenuItem extends ListItem {
|
|
|
213
289
|
_navigateOutOfEndContent(e) {
|
|
214
290
|
const item = e.target;
|
|
215
291
|
const shouldNavigateToNextItem = e.detail.shouldNavigateToNextItem;
|
|
216
|
-
const menuItems = this.
|
|
292
|
+
const menuItems = this._allMenuItems;
|
|
217
293
|
const itemIndex = menuItems.indexOf(item);
|
|
218
294
|
if (itemIndex > -1) {
|
|
219
295
|
const nextItem = shouldNavigateToNextItem ? menuItems[itemIndex + 1] : menuItems[itemIndex - 1];
|
|
@@ -232,7 +308,7 @@ let MenuItem = MenuItem_1 = class MenuItem extends ListItem {
|
|
|
232
308
|
_close() {
|
|
233
309
|
if (this._popover) {
|
|
234
310
|
this._popover.open = false;
|
|
235
|
-
this.
|
|
311
|
+
this._allMenuItems.forEach(item => item._close());
|
|
236
312
|
}
|
|
237
313
|
this.selected = false;
|
|
238
314
|
}
|
|
@@ -243,7 +319,7 @@ let MenuItem = MenuItem_1 = class MenuItem extends ListItem {
|
|
|
243
319
|
}
|
|
244
320
|
}
|
|
245
321
|
_afterPopoverOpen() {
|
|
246
|
-
this.
|
|
322
|
+
this._allMenuItems[0]?.focus();
|
|
247
323
|
this.fireDecoratorEvent("open");
|
|
248
324
|
}
|
|
249
325
|
_beforePopoverClose(e) {
|
|
@@ -266,6 +342,14 @@ let MenuItem = MenuItem_1 = class MenuItem extends ListItem {
|
|
|
266
342
|
get isMenuItem() {
|
|
267
343
|
return true;
|
|
268
344
|
}
|
|
345
|
+
_updateCheckedState() {
|
|
346
|
+
if (this._checkMode === MenuItemGroupCheckMode.None) {
|
|
347
|
+
return;
|
|
348
|
+
}
|
|
349
|
+
const newState = !this.checked;
|
|
350
|
+
this.checked = newState;
|
|
351
|
+
this.fireDecoratorEvent("check");
|
|
352
|
+
}
|
|
269
353
|
};
|
|
270
354
|
__decorate([
|
|
271
355
|
property()
|
|
@@ -291,12 +375,18 @@ __decorate([
|
|
|
291
375
|
__decorate([
|
|
292
376
|
property()
|
|
293
377
|
], MenuItem.prototype, "tooltip", void 0);
|
|
378
|
+
__decorate([
|
|
379
|
+
property({ type: Boolean })
|
|
380
|
+
], MenuItem.prototype, "checked", void 0);
|
|
294
381
|
__decorate([
|
|
295
382
|
property({ type: Object })
|
|
296
383
|
], MenuItem.prototype, "accessibilityAttributes", void 0);
|
|
297
384
|
__decorate([
|
|
298
385
|
property({ type: Boolean, noAttribute: true })
|
|
299
386
|
], MenuItem.prototype, "_siblingsWithIcon", void 0);
|
|
387
|
+
__decorate([
|
|
388
|
+
property()
|
|
389
|
+
], MenuItem.prototype, "_checkMode", void 0);
|
|
300
390
|
__decorate([
|
|
301
391
|
slot({ "default": true, type: HTMLElement, invalidateOnChildChange: true })
|
|
302
392
|
], MenuItem.prototype, "items", void 0);
|
|
@@ -319,7 +409,7 @@ MenuItem = MenuItem_1 = __decorate([
|
|
|
319
409
|
* **Note:** Since 1.14.0 the event is also fired before a sub-menu opens.
|
|
320
410
|
* @public
|
|
321
411
|
* @since 1.10.0
|
|
322
|
-
* @param { HTMLElement } item The
|
|
412
|
+
* @param { HTMLElement } item The menu item that triggers opening of the sub-menu or undefined when fired upon root menu opening.
|
|
323
413
|
*/
|
|
324
414
|
,
|
|
325
415
|
event("before-open", {
|
|
@@ -364,6 +454,15 @@ MenuItem = MenuItem_1 = __decorate([
|
|
|
364
454
|
*/
|
|
365
455
|
,
|
|
366
456
|
event("close")
|
|
457
|
+
/**
|
|
458
|
+
* Fired when an item is checked or unchecked.
|
|
459
|
+
* @public
|
|
460
|
+
* @since 2.12.0
|
|
461
|
+
*/
|
|
462
|
+
,
|
|
463
|
+
event("check", {
|
|
464
|
+
bubbles: true,
|
|
465
|
+
})
|
|
367
466
|
], MenuItem);
|
|
368
467
|
MenuItem.define();
|
|
369
468
|
const isInstanceOfMenuItem = (object) => {
|
package/dist/MenuItem.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MenuItem.js","sourceRoot":"","sources":["../src/MenuItem.ts"],"names":[],"mappings":"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","sourcesContent":["import jsxRenderer from \"@ui5/webcomponents-base/dist/renderer/JsxRenderer.js\";\nimport customElement from \"@ui5/webcomponents-base/dist/decorators/customElement.js\";\nimport property from \"@ui5/webcomponents-base/dist/decorators/property.js\";\nimport type { AccessibilityAttributes, AriaHasPopup, AriaRole } from \"@ui5/webcomponents-base\";\nimport event from \"@ui5/webcomponents-base/dist/decorators/event-strict.js\";\nimport slot from \"@ui5/webcomponents-base/dist/decorators/slot.js\";\nimport i18n from \"@ui5/webcomponents-base/dist/decorators/i18n.js\";\nimport {\n\tisLeft,\n\tisRight,\n\tisEnter,\n\tisSpace,\n\tisTabNext,\n\tisTabPrevious,\n\tisDown,\n\tisUp,\n} from \"@ui5/webcomponents-base/dist/Keys.js\";\nimport { isDesktop, isPhone } from \"@ui5/webcomponents-base/dist/Device.js\";\nimport { renderFinished } from \"@ui5/webcomponents-base/dist/Render.js\";\nimport \"@ui5/webcomponents-icons/dist/nav-back.js\";\nimport type I18nBundle from \"@ui5/webcomponents-base/dist/i18nBundle.js\";\nimport NavigationMode from \"@ui5/webcomponents-base/dist/types/NavigationMode.js\";\nimport ItemNavigation from \"@ui5/webcomponents-base/dist/delegate/ItemNavigation.js\";\nimport ItemNavigationBehavior from \"@ui5/webcomponents-base/dist/types/ItemNavigationBehavior.js\";\nimport type { ListItemAccessibilityAttributes } from \"./ListItem.js\";\nimport ListItem from \"./ListItem.js\";\nimport type ResponsivePopover from \"./ResponsivePopover.js\";\nimport type PopoverPlacement from \"./types/PopoverPlacement.js\";\nimport MenuItemTemplate from \"./MenuItemTemplate.js\";\nimport {\n\tMENU_BACK_BUTTON_ARIA_LABEL,\n\tMENU_CLOSE_BUTTON_ARIA_LABEL,\n\tMENU_POPOVER_ACCESSIBLE_NAME,\n} from \"./generated/i18n/i18n-defaults.js\";\nimport type { IMenuItem } from \"./Menu.js\";\n\n// Styles\nimport menuItemCss from \"./generated/themes/MenuItem.css.js\";\n\ntype MenuBeforeOpenEventDetail = { item?: MenuItem };\ntype MenuBeforeCloseEventDetail = { escPressed: boolean };\n\ntype MenuNavigateOutOfEndContentEventDetail = { shouldNavigateToNextItem: boolean };\n\ntype MenuItemAccessibilityAttributes = Pick<AccessibilityAttributes, \"ariaKeyShortcuts\" | \"role\"> & ListItemAccessibilityAttributes;\n\n/**\n * @class\n *\n * ### Overview\n *\n * `ui5-menu-item` is the item to use inside a `ui5-menu`.\n * An arbitrary hierarchy structure can be represented by recursively nesting menu items.\n *\n * ### Usage\n *\n * `ui5-menu-item` represents a node in a `ui5-menu`. The menu itself is rendered as a list,\n * and each `ui5-menu-item` is represented by a list item in that list. Therefore, you should only use\n * `ui5-menu-item` directly in your apps. The `ui5-li` list item is internal for the list, and not intended for public use.\n *\n * ### ES6 Module Import\n *\n * `import \"@ui5/webcomponents/dist/MenuItem.js\";`\n * @constructor\n * @extends ListItem\n * @implements {IMenuItem}\n * @since 1.3.0\n * @public\n */\n@customElement({\n\ttag: \"ui5-menu-item\",\n\trenderer: jsxRenderer,\n\ttemplate: MenuItemTemplate,\n\tstyles: [ListItem.styles, menuItemCss],\n})\n\n/**\n * Fired before the menu is opened. This event can be cancelled, which will prevent the menu from opening.\n *\n * **Note:** Since 1.14.0 the event is also fired before a sub-menu opens.\n * @public\n * @since 1.10.0\n * @param { HTMLElement } item The `ui5-menu-item` that triggers opening of the sub-menu or undefined when fired upon root menu opening.\n */\n@event(\"before-open\", {\n\tcancelable: true,\n})\n\n/**\n * Fired after the menu is opened.\n * @public\n */\n@event(\"open\")\n\n/**\n * Fired when the menu is being closed.\n * @private\n */\n@event(\"close-menu\", {\n\tbubbles: true,\n})\n\n/**\n * Fired when navigating out of end-content.\n * @private\n */\n@event(\"exit-end-content\", {\n\tbubbles: true,\n})\n\n/**\n * Fired before the menu is closed. This event can be cancelled, which will prevent the menu from closing.\n * @public\n * @param {boolean} escPressed Indicates that `ESC` key has triggered the event.\n * @since 1.10.0\n */\n@event(\"before-close\", {\n\tcancelable: true,\n})\n\n/**\n * Fired after the menu is closed.\n * @public\n * @since 1.10.0\n */\n@event(\"close\")\nclass MenuItem extends ListItem implements IMenuItem {\n\teventDetails!: ListItem[\"eventDetails\"] & {\n\t\t\"before-open\": MenuBeforeOpenEventDetail\n\t\t\"open\": void\n\t\t\"before-close\": MenuBeforeCloseEventDetail\n\t\t\"close\": void\n\t\t\"close-menu\": void,\n\t\t\"exit-end-content\": MenuNavigateOutOfEndContentEventDetail,\n\t}\n\t/**\n\t * Defines the text of the tree item.\n\t * @default undefined\n\t * @public\n\t */\n\t@property()\n\ttext?: string;\n\n\t/**\n\t * Defines the `additionalText`, displayed in the end of the menu item.\n\t *\n\t * **Note:** The additional text will not be displayed if there are items added in `items` slot or there are\n\t * components added to `endContent` slot.\n\t *\n\t * The priority of what will be displayed at the end of the menu item is as follows:\n\t * sub-menu arrow (if there are items added in `items` slot) -> components added in `endContent` -> text set to `additionalText`.\n\t * @default undefined\n\t * @public\n\t * @since 1.8.0\n\t */\n\t@property()\n\tadditionalText?: string;\n\n\t/**\n\t * Defines the icon to be displayed as graphical element within the component.\n\t * The SAP-icons font provides numerous options.\n\t *\n\t * **Example:**\n\t *\n\t * See all the available icons in the [Icon Explorer](https://sdk.openui5.org/test-resources/sap/m/demokit/iconExplorer/webapp/index.html).\n\t * @default undefined\n\t * @public\n\t */\n\t@property()\n\ticon?: string;\n\n\t/**\n\t * Defines whether `ui5-menu-item` is in disabled state.\n\t *\n\t * **Note:** A disabled `ui5-menu-item` is noninteractive.\n\t * @default false\n\t * @public\n\t */\n\t@property({ type: Boolean })\n\tdisabled = false;\n\n\t/**\n\t * Defines the delay in milliseconds, after which the loading indicator will be displayed inside the corresponding ui5-menu popover.\n\t *\n\t * **Note:** If set to `true` a `ui5-busy-indicator` component will be displayed into the related one to the current `ui5-menu-item` sub-menu popover.\n\t * @default false\n\t * @public\n\t * @since 1.13.0\n\t */\n\t@property({ type: Boolean })\n\tloading = false;\n\n\t/**\n\t * Defines the delay in milliseconds, after which the loading indicator will be displayed inside the corresponding ui5-menu popover.\n\t * @default 1000\n\t * @public\n\t * @since 1.13.0\n\t */\n\t@property({ type: Number })\n\tloadingDelay = 1000;\n\n\t/**\n\t * Defines the accessible ARIA name of the component.\n\t * @default undefined\n\t * @public\n\t * @since 1.7.0\n\t */\n\t@property()\n\taccessibleName?: string;\n\n\t/**\n\t * Defines the text of the tooltip for the menu item.\n\t * @default undefined\n\t * @public\n\t * @since 1.23.0\n\t */\n\t@property()\n\ttooltip?: string;\n\n\t/**\n\t * Defines the additional accessibility attributes that will be applied to the component.\n\t * The following fields are supported:\n\t *\n\t * - **ariaKeyShortcuts**: Indicated the availability of a keyboard shortcuts defined for the menu item.\n\t *\n\t * - **role**: Defines the role of the menu item. If not set, menu item will have default role=\"menuitem\".\n\t *\n\t * @public\n\t * @since 2.1.0\n\t * @default {}\n\t */\n\t@property({ type: Object })\n\tdeclare accessibilityAttributes: MenuItemAccessibilityAttributes;\n\n\t/**\n\t * Indicates whether any of the element siblings have icon.\n\t */\n\t@property({ type: Boolean, noAttribute: true })\n\t_siblingsWithIcon = false;\n\n\t/**\n\t * Defines the items of this component.\n\t *\n\t * **Note:** The slot can hold `ui5-menu-item` and `ui5-menu-separator` items.\n\t *\n\t * If there are items added to this slot, an arrow will be displayed at the end\n\t * of the item in order to indicate that there are items added. In that case components added\n\t * to `endContent` slot or `additionalText` content will not be displayed.\n\t *\n\t * The priority of what will be displayed at the end of the menu item is as follows:\n\t * sub-menu arrow (if there are items added in `items` slot) -> components added in `endContent` -> text set to `additionalText`.\n\t * @public\n\t */\n\t@slot({ \"default\": true, type: HTMLElement, invalidateOnChildChange: true })\n\titems!: Array<IMenuItem>;\n\n\t/**\n\t * Defines the components that should be displayed at the end of the menu item.\n\t *\n\t * **Note:** It is highly recommended to slot only components of type `ui5-button`,`ui5-link`\n\t * or `ui5-icon` in order to preserve the intended design. If there are components added to this slot,\n\t * and there is text set in `additionalText`, it will not be displayed. If there are items added to `items` slot,\n\t * nether `additionalText` nor components added to this slot would be displayed.\n\t *\n\t * The priority of what will be displayed at the end of the menu item is as follows:\n\t * sub-menu arrow (if there are items added in `items` slot) -> components added in `endContent` -> text set to `additionalText`.\n\t * @public\n\t * @since 2.0.0\n\t */\n\t@slot({ type: HTMLElement })\n\tendContent!: Array<HTMLElement>;\n\n\t@i18n(\"@ui5/webcomponents\")\n\tstatic i18nBundle: I18nBundle;\n\n\t_itemNavigation: ItemNavigation;\n\n\tconstructor() {\n\t\tsuper();\n\n\t\tthis._itemNavigation = new ItemNavigation(this, {\n\t\t\tnavigationMode: NavigationMode.Horizontal,\n\t\t\tbehavior: ItemNavigationBehavior.Static,\n\t\t\tgetItemsCallback: () => this._navigableItems,\n\t\t});\n\t}\n\n\tget _navigableItems(): Array<HTMLElement> {\n\t\treturn [...this.endContent].filter(item => {\n\t\t\treturn item.hasAttribute(\"ui5-button\")\n\t\t\t|| item.hasAttribute(\"ui5-link\")\n\t\t\t|| (item.hasAttribute(\"ui5-icon\") && item.getAttribute(\"mode\") === \"Interactive\");\n\t\t});\n\t}\n\n\t_navigateToEndContent(shouldNavigateToPreviousItem: boolean) {\n\t\tconst navigatableItems = this._navigableItems;\n\t\tconst item = shouldNavigateToPreviousItem\n\t\t\t? navigatableItems[navigatableItems.length - 1]\n\t\t\t: navigatableItems[0];\n\n\t\tif (item) {\n\t\t\tthis._itemNavigation.setCurrentItem(item);\n\t\t\tthis._itemNavigation._focusCurrentItem();\n\t\t}\n\t}\n\n\tget placement(): `${PopoverPlacement}` {\n\t\treturn this.isRtl ? \"Start\" : \"End\";\n\t}\n\n\tget isRtl() {\n\t\treturn this.effectiveDir === \"rtl\";\n\t}\n\n\tget hasSubmenu() {\n\t\treturn !!(this.items.length || this.loading) && !this.disabled;\n\t}\n\n\tget hasEndContent() {\n\t\treturn !!(this.endContent.length);\n\t}\n\n\tget hasIcon() {\n\t\treturn !!this.icon;\n\t}\n\n\tget isSubMenuOpen() {\n\t\treturn this._popover?.open;\n\t}\n\n\tget menuHeaderTextPhone() {\n\t\treturn this.text;\n\t}\n\n\tget isPhone() {\n\t\treturn isPhone();\n\t}\n\n\tget labelBack() {\n\t\treturn MenuItem.i18nBundle.getText(MENU_BACK_BUTTON_ARIA_LABEL);\n\t}\n\n\tget labelClose() {\n\t\treturn MenuItem.i18nBundle.getText(MENU_CLOSE_BUTTON_ARIA_LABEL);\n\t}\n\n\tget acessibleNameText() {\n\t\treturn MenuItem.i18nBundle.getText(MENU_POPOVER_ACCESSIBLE_NAME);\n\t}\n\n\tget isSeparator(): boolean {\n\t\treturn false;\n\t}\n\n\tonBeforeRendering() {\n\t\tsuper.onBeforeRendering();\n\t\tconst siblingsWithIcon = this._menuItems.some(menuItem => !!menuItem.icon);\n\n\t\tthis._menuItems.forEach(item => {\n\t\t\titem._siblingsWithIcon = siblingsWithIcon;\n\t\t});\n\t}\n\n\tasync focus(focusOptions?: FocusOptions): Promise<void> {\n\t\tawait renderFinished();\n\n\t\tif (this.hasSubmenu && this.isSubMenuOpen) {\n\t\t\treturn this._menuItems[0].focus(focusOptions);\n\t\t}\n\n\t\treturn super.focus(focusOptions);\n\t}\n\n\tget _focusable() {\n\t\treturn true;\n\t}\n\n\tget _accInfo() {\n\t\tconst accInfoSettings: {\n\t\t\trole: AriaRole;\n\t\t\tariaHaspopup?: `${AriaHasPopup}`;\n\t\t\tariaKeyShortcuts?: string;\n\t\t\tariaHidden?: boolean;\n\t\t} = {\n\t\t\trole: this.accessibilityAttributes.role || \"menuitem\",\n\t\t\tariaHaspopup: this.hasSubmenu ? \"menu\" : undefined,\n\t\t\tariaKeyShortcuts: this.accessibilityAttributes.ariaKeyShortcuts,\n\t\t\tariaHidden: !!this.additionalText && !!this.accessibilityAttributes.ariaKeyShortcuts ? true : undefined,\n\t\t};\n\n\t\treturn { ...super._accInfo, ...accInfoSettings };\n\t}\n\n\tget _popover() {\n\t\treturn this.shadowRoot!.querySelector<ResponsivePopover>(\"[ui5-responsive-popover]\")!;\n\t}\n\n\tget _menuItems() {\n\t\treturn this.items.filter((item): item is MenuItem => !item.isSeparator);\n\t}\n\n\t_closeOtherSubMenus(item: MenuItem) {\n\t\tconst menuItems = this._menuItems;\n\t\tif (!menuItems.includes(item)) {\n\t\t\treturn;\n\t\t}\n\n\t\tmenuItems.forEach(menuItem => {\n\t\t\tif (menuItem !== item) {\n\t\t\t\tmenuItem._close();\n\t\t\t}\n\t\t});\n\t}\n\n\t_itemMouseOver(e: MouseEvent) {\n\t\tif (!isDesktop()) {\n\t\t\treturn;\n\t\t}\n\t\tconst item = e.target as MenuItem;\n\n\t\tif (!isInstanceOfMenuItem(item)) {\n\t\t\treturn;\n\t\t}\n\t\titem.focus();\n\n\t\tthis._closeOtherSubMenus(item);\n\t}\n\n\t_itemKeyDown(e: KeyboardEvent) {\n\t\tconst item = e.target as MenuItem;\n\t\tconst itemInMenuItems = this._menuItems.includes(item);\n\t\tconst isTabNextPrevious = isTabNext(e) || isTabPrevious(e);\n\t\tconst isItemNavigation = isUp(e) || isDown(e);\n\t\tconst isItemSelection = isSpace(e) || isEnter(e);\n\t\tconst shouldOpenMenu = this.isRtl ? isLeft(e) : isRight(e);\n\t\tconst shouldCloseMenu = !(isItemNavigation || isItemSelection || shouldOpenMenu) || isTabNextPrevious;\n\n\t\tif (itemInMenuItems && shouldCloseMenu) {\n\t\t\tthis._close();\n\t\t\tthis.focus();\n\t\t\te.stopPropagation();\n\t\t}\n\t}\n\n\t_endContentKeyDown(e: KeyboardEvent) {\n\t\tconst shouldNavigateOutOfEndContent = isUp(e) || isDown(e);\n\n\t\tif (shouldNavigateOutOfEndContent) {\n\t\t\tthis.fireDecoratorEvent(\"exit-end-content\", { shouldNavigateToNextItem: isDown(e) });\n\t\t}\n\t}\n\n\t_navigateOutOfEndContent(e: CustomEvent) {\n\t\tconst item = e.target as MenuItem;\n\t\tconst shouldNavigateToNextItem = e.detail.shouldNavigateToNextItem;\n\t\tconst menuItems = this._menuItems;\n\t\tconst itemIndex = menuItems.indexOf(item);\n\n\t\tif (itemIndex > -1) {\n\t\t\tconst nextItem = shouldNavigateToNextItem ? menuItems[itemIndex + 1] : menuItems[itemIndex - 1];\n\t\t\tconst itemToFocus = nextItem || menuItems[itemIndex];\n\t\t\titemToFocus?.focus();\n\n\t\t\te.stopPropagation();\n\t\t}\n\t}\n\n\t_closeAll() {\n\t\tif (this._popover) {\n\t\t\tthis._popover.open = false;\n\t\t}\n\t\tthis.selected = false;\n\t\tthis.fireDecoratorEvent(\"close-menu\");\n\t}\n\n\t_close() {\n\t\tif (this._popover) {\n\t\t\tthis._popover.open = false;\n\t\t\tthis._menuItems.forEach(item => item._close());\n\t\t}\n\t\tthis.selected = false;\n\t}\n\n\t_beforePopoverOpen(e: CustomEvent) {\n\t\tconst prevented = !this.fireDecoratorEvent(\"before-open\", {});\n\n\t\tif (prevented) {\n\t\t\te.preventDefault();\n\t\t}\n\t}\n\n\t_afterPopoverOpen() {\n\t\tthis.items[0]?.focus();\n\t\tthis.fireDecoratorEvent(\"open\");\n\t}\n\n\t_beforePopoverClose(e: CustomEvent) {\n\t\tconst prevented = !this.fireDecoratorEvent(\"before-close\", { escPressed: e.detail.escPressed });\n\n\t\tif (prevented) {\n\t\t\te.preventDefault();\n\t\t\treturn;\n\t\t}\n\n\t\tthis.selected = false;\n\t\tif (e.detail.escPressed) {\n\t\t\tthis.focus();\n\t\t\tif (isPhone()) {\n\t\t\t\tthis.fireDecoratorEvent(\"close-menu\");\n\t\t\t}\n\t\t}\n\t}\n\n\t_afterPopoverClose() {\n\t\tthis.fireDecoratorEvent(\"close\");\n\t}\n\n\tget isMenuItem(): boolean {\n\t\treturn true;\n\t}\n}\n\nMenuItem.define();\n\nconst isInstanceOfMenuItem = (object: any): object is MenuItem => {\n\treturn \"isMenuItem\" in object;\n};\n\nexport default MenuItem;\n\nexport type {\n\tMenuBeforeCloseEventDetail,\n\tMenuBeforeOpenEventDetail,\n\tMenuItemAccessibilityAttributes,\n};\n\nexport {\n\tisInstanceOfMenuItem,\n};\n"]}
|
|
1
|
+
{"version":3,"file":"MenuItem.js","sourceRoot":"","sources":["../src/MenuItem.ts"],"names":[],"mappings":"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","sourcesContent":["import jsxRenderer from \"@ui5/webcomponents-base/dist/renderer/JsxRenderer.js\";\nimport customElement from \"@ui5/webcomponents-base/dist/decorators/customElement.js\";\nimport property from \"@ui5/webcomponents-base/dist/decorators/property.js\";\nimport type { AccessibilityAttributes, AriaHasPopup, AriaRole } from \"@ui5/webcomponents-base\";\nimport event from \"@ui5/webcomponents-base/dist/decorators/event-strict.js\";\nimport slot from \"@ui5/webcomponents-base/dist/decorators/slot.js\";\nimport i18n from \"@ui5/webcomponents-base/dist/decorators/i18n.js\";\nimport {\n\tisLeft,\n\tisRight,\n\tisEnter,\n\tisSpace,\n\tisTabNext,\n\tisTabPrevious,\n\tisDown,\n\tisUp,\n} from \"@ui5/webcomponents-base/dist/Keys.js\";\nimport { isDesktop, isPhone } from \"@ui5/webcomponents-base/dist/Device.js\";\nimport { renderFinished } from \"@ui5/webcomponents-base/dist/Render.js\";\nimport \"@ui5/webcomponents-icons/dist/nav-back.js\";\nimport type I18nBundle from \"@ui5/webcomponents-base/dist/i18nBundle.js\";\nimport NavigationMode from \"@ui5/webcomponents-base/dist/types/NavigationMode.js\";\nimport ItemNavigation from \"@ui5/webcomponents-base/dist/delegate/ItemNavigation.js\";\nimport ItemNavigationBehavior from \"@ui5/webcomponents-base/dist/types/ItemNavigationBehavior.js\";\nimport MenuItemGroupCheckMode from \"./types/MenuItemGroupCheckMode.js\";\nimport type { ListItemAccessibilityAttributes } from \"./ListItem.js\";\nimport type List from \"./List.js\";\nimport ListItem from \"./ListItem.js\";\nimport type ResponsivePopover from \"./ResponsivePopover.js\";\nimport type PopoverPlacement from \"./types/PopoverPlacement.js\";\nimport { isInstanceOfMenuSeparator } from \"./MenuSeparator.js\";\nimport { isInstanceOfMenuItemGroup } from \"./MenuItemGroup.js\";\nimport MenuItemTemplate from \"./MenuItemTemplate.js\";\nimport {\n\tMENU_BACK_BUTTON_ARIA_LABEL,\n\tMENU_CLOSE_BUTTON_ARIA_LABEL,\n\tMENU_POPOVER_ACCESSIBLE_NAME,\n} from \"./generated/i18n/i18n-defaults.js\";\nimport type { IMenuItem } from \"./Menu.js\";\n\n// Styles\nimport menuItemCss from \"./generated/themes/MenuItem.css.js\";\n\ntype MenuBeforeOpenEventDetail = { item?: MenuItem };\ntype MenuBeforeCloseEventDetail = { escPressed: boolean };\n\ntype MenuNavigateOutOfEndContentEventDetail = { shouldNavigateToNextItem: boolean };\n\ntype MenuItemAccessibilityAttributes = Pick<AccessibilityAttributes, \"ariaKeyShortcuts\" | \"role\"> & ListItemAccessibilityAttributes;\n\n/**\n * @class\n *\n * ### Overview\n *\n * `ui5-menu-item` is the item to use inside a `ui5-menu`.\n * An arbitrary hierarchy structure can be represented by recursively nesting menu items.\n *\n * ### Usage\n *\n * `ui5-menu-item` represents a node in a `ui5-menu`. The menu itself is rendered as a list,\n * and each `ui5-menu-item` is represented by a list item in that list. Therefore, you should only use\n * `ui5-menu-item` directly in your apps. The `ui5-li` list item is internal for the list, and not intended for public use.\n *\n * ### ES6 Module Import\n *\n * `import \"@ui5/webcomponents/dist/MenuItem.js\";`\n * @constructor\n * @extends ListItem\n * @implements {IMenuItem}\n * @since 1.3.0\n * @public\n */\n@customElement({\n\ttag: \"ui5-menu-item\",\n\trenderer: jsxRenderer,\n\ttemplate: MenuItemTemplate,\n\tstyles: [ListItem.styles, menuItemCss],\n})\n\n/**\n * Fired before the menu is opened. This event can be cancelled, which will prevent the menu from opening.\n *\n * **Note:** Since 1.14.0 the event is also fired before a sub-menu opens.\n * @public\n * @since 1.10.0\n * @param { HTMLElement } item The menu item that triggers opening of the sub-menu or undefined when fired upon root menu opening.\n */\n@event(\"before-open\", {\n\tcancelable: true,\n})\n\n/**\n * Fired after the menu is opened.\n * @public\n */\n@event(\"open\")\n\n/**\n * Fired when the menu is being closed.\n * @private\n */\n@event(\"close-menu\", {\n\tbubbles: true,\n})\n\n/**\n * Fired when navigating out of end-content.\n * @private\n */\n@event(\"exit-end-content\", {\n\tbubbles: true,\n})\n\n/**\n * Fired before the menu is closed. This event can be cancelled, which will prevent the menu from closing.\n * @public\n * @param {boolean} escPressed Indicates that `ESC` key has triggered the event.\n * @since 1.10.0\n */\n@event(\"before-close\", {\n\tcancelable: true,\n})\n\n/**\n * Fired after the menu is closed.\n * @public\n * @since 1.10.0\n */\n@event(\"close\")\n\n/**\n * Fired when an item is checked or unchecked.\n * @public\n * @since 2.12.0\n */\n@event(\"check\", {\n\tbubbles: true,\n})\nclass MenuItem extends ListItem implements IMenuItem {\n\teventDetails!: ListItem[\"eventDetails\"] & {\n\t\t\"before-open\": MenuBeforeOpenEventDetail\n\t\t\"open\": void\n\t\t\"before-close\": MenuBeforeCloseEventDetail\n\t\t\"close\": void\n\t\t\"close-menu\": void\n\t\t\"check\": void\n\t\t\"exit-end-content\": MenuNavigateOutOfEndContentEventDetail\n\t}\n\n\t/**\n\t * Defines the text of the tree item.\n\t * @default undefined\n\t * @public\n\t */\n\t@property()\n\ttext?: string;\n\n\t/**\n\t * Defines the `additionalText`, displayed in the end of the menu item.\n\t *\n\t * **Note:** The additional text will not be displayed if there are items added in `items` slot or there are\n\t * components added to `endContent` slot.\n\t *\n\t * The priority of what will be displayed at the end of the menu item is as follows:\n\t * sub-menu arrow (if there are items added in `items` slot) -> components added in `endContent` -> text set to `additionalText`.\n\t * @default undefined\n\t * @public\n\t * @since 1.8.0\n\t */\n\t@property()\n\tadditionalText?: string;\n\n\t/**\n\t * Defines the icon to be displayed as graphical element within the component.\n\t * The SAP-icons font provides numerous options.\n\t *\n\t * **Example:**\n\t *\n\t * See all the available icons in the [Icon Explorer](https://sdk.openui5.org/test-resources/sap/m/demokit/iconExplorer/webapp/index.html).\n\t * @default undefined\n\t * @public\n\t */\n\t@property()\n\ticon?: string;\n\n\t/**\n\t * Defines whether menu item is in disabled state.\n\t *\n\t * **Note:** A disabled menu item is noninteractive.\n\t * @default false\n\t * @public\n\t */\n\t@property({ type: Boolean })\n\tdisabled = false;\n\n\t/**\n\t * Defines the delay in milliseconds, after which the loading indicator will be displayed inside the corresponding menu popover.\n\t *\n\t * **Note:** If set to `true` a busy indicator component will be displayed into the related one to the current menu item sub-menu popover.\n\t * @default false\n\t * @public\n\t * @since 1.13.0\n\t */\n\t@property({ type: Boolean })\n\tloading = false;\n\n\t/**\n\t * Defines the delay in milliseconds, after which the loading indicator will be displayed inside the corresponding menu popover.\n\t * @default 1000\n\t * @public\n\t * @since 1.13.0\n\t */\n\t@property({ type: Number })\n\tloadingDelay = 1000;\n\n\t/**\n\t * Defines the accessible ARIA name of the component.\n\t * @default undefined\n\t * @public\n\t * @since 1.7.0\n\t */\n\t@property()\n\taccessibleName?: string;\n\n\t/**\n\t * Defines the text of the tooltip for the menu item.\n\t * @default undefined\n\t * @public\n\t * @since 1.23.0\n\t */\n\t@property()\n\ttooltip?: string;\n\n\t/**\n\t * Defines whether menu item is in checked state.\n\t *\n\t * **Note:** checked state is only taken into account when menu item is added to menu item group\n\t * with `checkMode` other than `None`.\n\t *\n\t * **Note:** A checked menu item has a checkmark displayed at its end.\n\t * @default false\n\t * @public\n\t * @since 2.12.0\n\t */\n\t@property({ type: Boolean })\n\tchecked = false;\n\n\t/**\n\t * Defines the additional accessibility attributes that will be applied to the component.\n\t * The following fields are supported:\n\t *\n\t * - **ariaKeyShortcuts**: Indicated the availability of a keyboard shortcuts defined for the menu item.\n\t *\n\t * - **role**: Defines the role of the menu item. If not set, menu item will have default role=\"menuitem\".\n\t * @public\n\t * @since 2.1.0\n\t * @default {}\n\t */\n\t@property({ type: Object })\n\tdeclare accessibilityAttributes: MenuItemAccessibilityAttributes;\n\n\t/**\n\t * Indicates whether any of the element siblings have icon.\n\t */\n\t@property({ type: Boolean, noAttribute: true })\n\t_siblingsWithIcon = false;\n\n\t/**\n\t * Defines the component's check mode.\n\t * @default \"None\"\n\t * @private\n\t */\n\t@property()\n\t_checkMode: `${MenuItemGroupCheckMode}` = \"None\";\n\n\t/**\n\t * Defines the items of this component.\n\t *\n\t * **Note:** The slot can hold menu item and menu separator items.\n\t *\n\t * If there are items added to this slot, an arrow will be displayed at the end\n\t * of the item in order to indicate that there are items added. In that case components added\n\t * to `endContent` slot or `additionalText` content will not be displayed.\n\t *\n\t * The priority of what will be displayed at the end of the menu item is as follows:\n\t * sub-menu arrow (if there are items added in `items` slot) -> components added in `endContent` -> text set to `additionalText`.\n\t * @public\n\t */\n\t@slot({ \"default\": true, type: HTMLElement, invalidateOnChildChange: true })\n\titems!: Array<IMenuItem>;\n\n\t/**\n\t * Defines the components that should be displayed at the end of the menu item.\n\t *\n\t * **Note:** It is highly recommended to slot only components of type `ui5-button`,`ui5-link`\n\t * or `ui5-icon` in order to preserve the intended design. If there are components added to this slot,\n\t * and there is text set in `additionalText`, it will not be displayed. If there are items added to `items` slot,\n\t * nether `additionalText` nor components added to this slot would be displayed.\n\t *\n\t * The priority of what will be displayed at the end of the menu item is as follows:\n\t * sub-menu arrow (if there are items added in `items` slot) -> components added in `endContent` -> text set to `additionalText`.\n\t *\n\t * Application developers are responsible for ensuring that interactive elements placed in the `endContent` slot\n\t * have the correct accessibility behaviour, including their enabled or disabled states.\n\t * The menu does not manage these aspects when the menu item state changes.\n\t * @public\n\t * @since 2.0.0\n\t */\n\t@slot({ type: HTMLElement })\n\tendContent!: Array<HTMLElement>;\n\n\t@i18n(\"@ui5/webcomponents\")\n\tstatic i18nBundle: I18nBundle;\n\n\t_itemNavigation: ItemNavigation;\n\n\tconstructor() {\n\t\tsuper();\n\n\t\tthis._itemNavigation = new ItemNavigation(this, {\n\t\t\tnavigationMode: NavigationMode.Horizontal,\n\t\t\tbehavior: ItemNavigationBehavior.Static,\n\t\t\tgetItemsCallback: () => this._navigableItems,\n\t\t});\n\t}\n\n\tget _list() {\n\t\treturn this.shadowRoot && this.shadowRoot.querySelector<List>(\"[ui5-list]\")!;\n\t}\n\n\tget _navigableItems(): Array<HTMLElement> {\n\t\treturn [...this.endContent].filter(item => {\n\t\t\treturn item.hasAttribute(\"ui5-button\")\n\t\t\t|| item.hasAttribute(\"ui5-link\")\n\t\t\t|| (item.hasAttribute(\"ui5-icon\") && item.getAttribute(\"mode\") === \"Interactive\");\n\t\t});\n\t}\n\n\t_navigateToEndContent(shouldNavigateToPreviousItem: boolean) {\n\t\tconst navigatableItems = this._navigableItems;\n\t\tconst item = shouldNavigateToPreviousItem\n\t\t\t? navigatableItems[navigatableItems.length - 1]\n\t\t\t: navigatableItems[0];\n\n\t\tif (item) {\n\t\t\tthis._itemNavigation.setCurrentItem(item);\n\t\t\tthis._itemNavigation._focusCurrentItem();\n\t\t}\n\t}\n\n\tget placement(): `${PopoverPlacement}` {\n\t\treturn this.isRtl ? \"Start\" : \"End\";\n\t}\n\n\tget isRtl() {\n\t\treturn this.effectiveDir === \"rtl\";\n\t}\n\n\tget hasSubmenu() {\n\t\treturn !!(this.items.length || this.loading) && !this.disabled;\n\t}\n\n\tget hasEndContent() {\n\t\treturn !!(this.endContent.length);\n\t}\n\n\tget hasIcon() {\n\t\treturn !!this.icon;\n\t}\n\n\tget isSubMenuOpen() {\n\t\treturn this._popover?.open;\n\t}\n\n\tget menuHeaderTextPhone() {\n\t\treturn this.text;\n\t}\n\n\tget isPhone() {\n\t\treturn isPhone();\n\t}\n\n\tget labelBack() {\n\t\treturn MenuItem.i18nBundle.getText(MENU_BACK_BUTTON_ARIA_LABEL);\n\t}\n\n\tget labelClose() {\n\t\treturn MenuItem.i18nBundle.getText(MENU_CLOSE_BUTTON_ARIA_LABEL);\n\t}\n\n\tget acessibleNameText() {\n\t\treturn MenuItem.i18nBundle.getText(MENU_POPOVER_ACCESSIBLE_NAME);\n\t}\n\n\tonBeforeRendering() {\n\t\tsuper.onBeforeRendering();\n\n\t\tconst siblingsWithIcon = this._allMenuItems.some(menuItem => !!menuItem.icon);\n\n\t\tthis._setupItemNavigation();\n\n\t\tthis._allMenuItems.forEach(item => {\n\t\t\titem._siblingsWithIcon = siblingsWithIcon;\n\t\t});\n\t}\n\n\tasync focus(focusOptions?: FocusOptions): Promise<void> {\n\t\tawait renderFinished();\n\n\t\tif (this.hasSubmenu && this.isSubMenuOpen) {\n\t\t\tconst menuItems = this._allMenuItems;\n\t\t\treturn menuItems[0] && menuItems[0].focus(focusOptions);\n\t\t}\n\n\t\treturn super.focus(focusOptions);\n\t}\n\n\tget _focusable() {\n\t\treturn true;\n\t}\n\n\tget _role() {\n\t\tswitch (this._checkMode) {\n\t\tcase MenuItemGroupCheckMode.Single:\n\t\t\treturn \"menuitemradio\";\n\t\tcase MenuItemGroupCheckMode.Multiple:\n\t\t\treturn \"menuitemcheckbox\";\n\t\tdefault:\n\t\t\treturn \"menuitem\";\n\t\t}\n\t}\n\n\tget _accInfo() {\n\t\tconst accInfoSettings: {\n\t\t\trole: AriaRole;\n\t\t\tariaHaspopup?: `${AriaHasPopup}`;\n\t\t\tariaKeyShortcuts?: string;\n\t\t\tariaExpanded?: boolean;\n\t\t\tariaHidden?: boolean;\n\t\t\tariaChecked?: boolean;\n\t\t} = {\n\t\t\trole: this.accessibilityAttributes.role || this._role,\n\t\t\tariaHaspopup: this.hasSubmenu ? \"menu\" : undefined,\n\t\t\tariaKeyShortcuts: this.accessibilityAttributes.ariaKeyShortcuts,\n\t\t\tariaExpanded: this.hasSubmenu ? this.isSubMenuOpen : undefined,\n\t\t\tariaHidden: !!this.additionalText && !!this.accessibilityAttributes.ariaKeyShortcuts ? true : undefined,\n\t\t\tariaChecked: this._markChecked ? true : undefined,\n\t\t};\n\n\t\treturn { ...super._accInfo, ...accInfoSettings };\n\t}\n\n\tget _popover() {\n\t\treturn this.shadowRoot && this.shadowRoot.querySelector<ResponsivePopover>(\"[ui5-responsive-popover]\")!;\n\t}\n\n\tget _markChecked() {\n\t\treturn !this.hasSubmenu && this.checked && this._checkMode !== MenuItemGroupCheckMode.None;\n\t}\n\n\t/** Returns menu item groups */\n\tget _menuItemGroups() {\n\t\treturn this.items.filter(isInstanceOfMenuItemGroup);\n\t}\n\n\t/** Returns menu items */\n\tget _menuItems() {\n\t\treturn this.items.filter(isInstanceOfMenuItem);\n\t}\n\n\t/** Returns all menu items (including those in groups */\n\tget _allMenuItems() {\n\t\tconst items: MenuItem[] = [];\n\n\t\tthis.items.forEach(item => {\n\t\t\tif (isInstanceOfMenuItemGroup(item)) {\n\t\t\t\titems.push(...item._menuItems);\n\t\t\t} else if (!isInstanceOfMenuSeparator(item)) {\n\t\t\t\titems.push(item as MenuItem);\n\t\t\t}\n\t\t});\n\n\t\treturn items;\n\t}\n\n\t/** Returns menu items included in the ItemNavigation */\n\tget _navigatableMenuItems() {\n\t\tconst items: MenuItem[] = [];\n\t\tconst slottedItems = this.getSlottedNodes<MenuItem>(\"items\");\n\n\t\tslottedItems.forEach(item => {\n\t\t\tif (isInstanceOfMenuItemGroup(item)) {\n\t\t\t\tconst groupItems = item.getSlottedNodes<MenuItem>(\"items\");\n\t\t\t\titems.push(...groupItems);\n\t\t\t} else if (!isInstanceOfMenuSeparator(item)) {\n\t\t\t\titems.push(item);\n\t\t\t}\n\t\t});\n\n\t\treturn items;\n\t}\n\n\t_setupItemNavigation() {\n\t\tif (this._list) {\n\t\t\tthis._list._itemNavigation._getItems = () => this._navigatableMenuItems;\n\t\t}\n\t}\n\n\t_closeOtherSubMenus(item: MenuItem) {\n\t\tconst menuItems = this._allMenuItems;\n\t\tif (!menuItems.includes(item)) {\n\t\t\treturn;\n\t\t}\n\n\t\tmenuItems.forEach(menuItem => {\n\t\t\tif (menuItem !== item) {\n\t\t\t\tmenuItem._close();\n\t\t\t}\n\t\t});\n\t}\n\n\t_itemMouseOver(e: MouseEvent) {\n\t\tif (!isDesktop()) {\n\t\t\treturn;\n\t\t}\n\t\tconst item = e.target as MenuItem;\n\n\t\tif (!isInstanceOfMenuItem(item)) {\n\t\t\treturn;\n\t\t}\n\t\titem.focus();\n\n\t\tthis._closeOtherSubMenus(item);\n\t}\n\n\t_itemKeyDown(e: KeyboardEvent) {\n\t\tconst item = e.target as MenuItem;\n\t\tconst itemInMenuItems = this._allMenuItems.includes(item);\n\t\tconst isTabNextPrevious = isTabNext(e) || isTabPrevious(e);\n\t\tconst isItemNavigation = isUp(e) || isDown(e);\n\t\tconst isItemSelection = isSpace(e) || isEnter(e);\n\t\tconst shouldOpenMenu = this.isRtl ? isLeft(e) : isRight(e);\n\t\tconst shouldCloseMenu = !(isItemNavigation || isItemSelection || shouldOpenMenu) || isTabNextPrevious;\n\n\t\tif (itemInMenuItems && shouldCloseMenu) {\n\t\t\tthis._close();\n\t\t\tthis.focus();\n\t\t\te.stopPropagation();\n\t\t}\n\t}\n\n\t_endContentKeyDown(e: KeyboardEvent) {\n\t\tconst shouldNavigateOutOfEndContent = isUp(e) || isDown(e);\n\n\t\tif (shouldNavigateOutOfEndContent) {\n\t\t\tthis.fireDecoratorEvent(\"exit-end-content\", { shouldNavigateToNextItem: isDown(e) });\n\t\t}\n\t}\n\n\t_navigateOutOfEndContent(e: CustomEvent) {\n\t\tconst item = e.target as MenuItem;\n\t\tconst shouldNavigateToNextItem = e.detail.shouldNavigateToNextItem;\n\t\tconst menuItems = this._allMenuItems;\n\t\tconst itemIndex = menuItems.indexOf(item);\n\n\t\tif (itemIndex > -1) {\n\t\t\tconst nextItem = shouldNavigateToNextItem ? menuItems[itemIndex + 1] : menuItems[itemIndex - 1];\n\t\t\tconst itemToFocus = nextItem || menuItems[itemIndex];\n\t\t\titemToFocus?.focus();\n\n\t\t\te.stopPropagation();\n\t\t}\n\t}\n\n\t_closeAll() {\n\t\tif (this._popover) {\n\t\t\tthis._popover.open = false;\n\t\t}\n\t\tthis.selected = false;\n\t\tthis.fireDecoratorEvent(\"close-menu\");\n\t}\n\n\t_close() {\n\t\tif (this._popover) {\n\t\t\tthis._popover.open = false;\n\t\t\tthis._allMenuItems.forEach(item => item._close());\n\t\t}\n\t\tthis.selected = false;\n\t}\n\n\t_beforePopoverOpen(e: CustomEvent) {\n\t\tconst prevented = !this.fireDecoratorEvent(\"before-open\", {});\n\n\t\tif (prevented) {\n\t\t\te.preventDefault();\n\t\t}\n\t}\n\n\t_afterPopoverOpen() {\n\t\tthis._allMenuItems[0]?.focus();\n\t\tthis.fireDecoratorEvent(\"open\");\n\t}\n\n\t_beforePopoverClose(e: CustomEvent) {\n\t\tconst prevented = !this.fireDecoratorEvent(\"before-close\", { escPressed: e.detail.escPressed });\n\n\t\tif (prevented) {\n\t\t\te.preventDefault();\n\t\t\treturn;\n\t\t}\n\n\t\tthis.selected = false;\n\t\tif (e.detail.escPressed) {\n\t\t\tthis.focus();\n\t\t\tif (isPhone()) {\n\t\t\t\tthis.fireDecoratorEvent(\"close-menu\");\n\t\t\t}\n\t\t}\n\t}\n\n\t_afterPopoverClose() {\n\t\tthis.fireDecoratorEvent(\"close\");\n\t}\n\n\tget isMenuItem(): boolean {\n\t\treturn true;\n\t}\n\n\t_updateCheckedState() {\n\t\tif (this._checkMode === MenuItemGroupCheckMode.None) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst newState = !this.checked;\n\n\t\tthis.checked = newState;\n\t\tthis.fireDecoratorEvent(\"check\");\n\t}\n}\n\nMenuItem.define();\n\nconst isInstanceOfMenuItem = (object: any): object is MenuItem => {\n\treturn \"isMenuItem\" in object;\n};\n\nexport default MenuItem;\n\nexport type {\n\tMenuBeforeCloseEventDetail,\n\tMenuBeforeOpenEventDetail,\n\tMenuItemAccessibilityAttributes,\n};\n\nexport {\n\tisInstanceOfMenuItem,\n};\n"]}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import UI5Element from "@ui5/webcomponents-base/dist/UI5Element.js";
|
|
2
|
+
import type MenuItem from "./MenuItem.js";
|
|
3
|
+
import MenuItemGroupCheckMode from "./types/MenuItemGroupCheckMode.js";
|
|
4
|
+
import type { IMenuItem } from "./Menu.js";
|
|
5
|
+
/**
|
|
6
|
+
* @class
|
|
7
|
+
*
|
|
8
|
+
* ### Overview
|
|
9
|
+
*
|
|
10
|
+
* The `ui5-menu-item-group` component represents a group of items designed for use inside a `ui5-menu`.
|
|
11
|
+
* Items belonging to the same group should be wrapped by a `ui5-menu-item-group`.
|
|
12
|
+
* Each group can have an `checkMode` property, which defines the check mode for the items within the group.
|
|
13
|
+
* The possible values for `checkMode` are:
|
|
14
|
+
* - 'None' (default) - no items can be checked
|
|
15
|
+
* - 'Single' - Only one item can be checked at a time
|
|
16
|
+
* - 'Multiple' - Multiple items can be checked simultaneously
|
|
17
|
+
*
|
|
18
|
+
* **Note:** If the `checkMode` property is set to 'Single', only one item can remain checked at any given time.
|
|
19
|
+
* If multiple items are marked as checked, the last checked item will take precedence.
|
|
20
|
+
*
|
|
21
|
+
* ### Usage
|
|
22
|
+
*
|
|
23
|
+
* `ui5-menu-item-group` represents a collection of `ui5-menu-item` components that can have the same check mode.
|
|
24
|
+
* The items are addeed to the group's `items` slot.
|
|
25
|
+
*
|
|
26
|
+
* ### ES6 Module Import
|
|
27
|
+
*
|
|
28
|
+
* `import "@ui5/webcomponents/dist/MenuItemGroup.js";`
|
|
29
|
+
* @constructor
|
|
30
|
+
* @extends UI5Element
|
|
31
|
+
* @implements {IMenuItem}
|
|
32
|
+
* @since 2.12.0
|
|
33
|
+
* @public
|
|
34
|
+
*/
|
|
35
|
+
declare class MenuItemGroup extends UI5Element implements IMenuItem {
|
|
36
|
+
/**
|
|
37
|
+
* Defines the component's check mode.
|
|
38
|
+
* @default "None"
|
|
39
|
+
* @public
|
|
40
|
+
*/
|
|
41
|
+
checkMode: `${MenuItemGroupCheckMode}`;
|
|
42
|
+
/**
|
|
43
|
+
* Defines the items of this component.
|
|
44
|
+
* **Note:** The slot can hold any combination of components of type `ui5-menu-item` or `ui5-menu-separator` or both.
|
|
45
|
+
* @public
|
|
46
|
+
*/
|
|
47
|
+
items: Array<IMenuItem>;
|
|
48
|
+
get isGroup(): boolean;
|
|
49
|
+
get _menuItems(): MenuItem[];
|
|
50
|
+
onBeforeRendering(): void;
|
|
51
|
+
/**
|
|
52
|
+
* Sets <code>_checkMode</code> property of all menu items in the group.
|
|
53
|
+
* @private
|
|
54
|
+
*/
|
|
55
|
+
_updateItemsCheckMode(): void;
|
|
56
|
+
/**
|
|
57
|
+
* Sets <code>checked</code> property of all items in the group to <code>false</code>.
|
|
58
|
+
* @private
|
|
59
|
+
*/
|
|
60
|
+
_clearCheckedItems(): void;
|
|
61
|
+
/**
|
|
62
|
+
* Ensures that only one item can remain checked at any given time. If multiple items are marked as checked,
|
|
63
|
+
* the last checked item will take precedence.
|
|
64
|
+
* @private
|
|
65
|
+
*/
|
|
66
|
+
_ensureSingleItemIsChecked(): void;
|
|
67
|
+
/**
|
|
68
|
+
* Handles the checking of an item in the group and unchecks other items if the item check mode is Single.
|
|
69
|
+
* @private
|
|
70
|
+
*/
|
|
71
|
+
_handleItemCheck(e: CustomEvent): void;
|
|
72
|
+
}
|
|
73
|
+
declare const isInstanceOfMenuItemGroup: (object: any) => object is MenuItemGroup;
|
|
74
|
+
export default MenuItemGroup;
|
|
75
|
+
export { isInstanceOfMenuItemGroup, };
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
import UI5Element from "@ui5/webcomponents-base/dist/UI5Element.js";
|
|
8
|
+
import customElement from "@ui5/webcomponents-base/dist/decorators/customElement.js";
|
|
9
|
+
import property from "@ui5/webcomponents-base/dist/decorators/property.js";
|
|
10
|
+
import slot from "@ui5/webcomponents-base/dist/decorators/slot.js";
|
|
11
|
+
import jsxRenderer from "@ui5/webcomponents-base/dist/renderer/JsxRenderer.js";
|
|
12
|
+
import { isInstanceOfMenuItem } from "./MenuItem.js";
|
|
13
|
+
import MenuItemGroupTemplate from "./MenuItemGroupTemplate.js";
|
|
14
|
+
import MenuItemGroupCheckMode from "./types/MenuItemGroupCheckMode.js";
|
|
15
|
+
/**
|
|
16
|
+
* @class
|
|
17
|
+
*
|
|
18
|
+
* ### Overview
|
|
19
|
+
*
|
|
20
|
+
* The `ui5-menu-item-group` component represents a group of items designed for use inside a `ui5-menu`.
|
|
21
|
+
* Items belonging to the same group should be wrapped by a `ui5-menu-item-group`.
|
|
22
|
+
* Each group can have an `checkMode` property, which defines the check mode for the items within the group.
|
|
23
|
+
* The possible values for `checkMode` are:
|
|
24
|
+
* - 'None' (default) - no items can be checked
|
|
25
|
+
* - 'Single' - Only one item can be checked at a time
|
|
26
|
+
* - 'Multiple' - Multiple items can be checked simultaneously
|
|
27
|
+
*
|
|
28
|
+
* **Note:** If the `checkMode` property is set to 'Single', only one item can remain checked at any given time.
|
|
29
|
+
* If multiple items are marked as checked, the last checked item will take precedence.
|
|
30
|
+
*
|
|
31
|
+
* ### Usage
|
|
32
|
+
*
|
|
33
|
+
* `ui5-menu-item-group` represents a collection of `ui5-menu-item` components that can have the same check mode.
|
|
34
|
+
* The items are addeed to the group's `items` slot.
|
|
35
|
+
*
|
|
36
|
+
* ### ES6 Module Import
|
|
37
|
+
*
|
|
38
|
+
* `import "@ui5/webcomponents/dist/MenuItemGroup.js";`
|
|
39
|
+
* @constructor
|
|
40
|
+
* @extends UI5Element
|
|
41
|
+
* @implements {IMenuItem}
|
|
42
|
+
* @since 2.12.0
|
|
43
|
+
* @public
|
|
44
|
+
*/
|
|
45
|
+
let MenuItemGroup = class MenuItemGroup extends UI5Element {
|
|
46
|
+
constructor() {
|
|
47
|
+
super(...arguments);
|
|
48
|
+
/**
|
|
49
|
+
* Defines the component's check mode.
|
|
50
|
+
* @default "None"
|
|
51
|
+
* @public
|
|
52
|
+
*/
|
|
53
|
+
this.checkMode = "None";
|
|
54
|
+
}
|
|
55
|
+
get isGroup() {
|
|
56
|
+
return true;
|
|
57
|
+
}
|
|
58
|
+
get _menuItems() {
|
|
59
|
+
return this.items.filter(isInstanceOfMenuItem);
|
|
60
|
+
}
|
|
61
|
+
onBeforeRendering() {
|
|
62
|
+
this._updateItemsCheckMode();
|
|
63
|
+
if (this.checkMode === MenuItemGroupCheckMode.Single) {
|
|
64
|
+
this._ensureSingleItemIsChecked();
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Sets <code>_checkMode</code> property of all menu items in the group.
|
|
69
|
+
* @private
|
|
70
|
+
*/
|
|
71
|
+
_updateItemsCheckMode() {
|
|
72
|
+
this._menuItems.forEach((item) => {
|
|
73
|
+
item._checkMode = this.checkMode;
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Sets <code>checked</code> property of all items in the group to <code>false</code>.
|
|
78
|
+
* @private
|
|
79
|
+
*/
|
|
80
|
+
_clearCheckedItems() {
|
|
81
|
+
this._menuItems.forEach((item) => { item.checked = false; });
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Ensures that only one item can remain checked at any given time. If multiple items are marked as checked,
|
|
85
|
+
* the last checked item will take precedence.
|
|
86
|
+
* @private
|
|
87
|
+
*/
|
|
88
|
+
_ensureSingleItemIsChecked() {
|
|
89
|
+
const lastCheckedItem = this._menuItems.findLast((item) => item.checked);
|
|
90
|
+
this._clearCheckedItems();
|
|
91
|
+
if (lastCheckedItem) {
|
|
92
|
+
lastCheckedItem.checked = true;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Handles the checking of an item in the group and unchecks other items if the item check mode is Single.
|
|
97
|
+
* @private
|
|
98
|
+
*/
|
|
99
|
+
_handleItemCheck(e) {
|
|
100
|
+
const clickedItem = e.target;
|
|
101
|
+
const isChecked = clickedItem.checked;
|
|
102
|
+
if (this.checkMode === MenuItemGroupCheckMode.Single) {
|
|
103
|
+
this._clearCheckedItems();
|
|
104
|
+
clickedItem.checked = isChecked;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
};
|
|
108
|
+
__decorate([
|
|
109
|
+
property()
|
|
110
|
+
], MenuItemGroup.prototype, "checkMode", void 0);
|
|
111
|
+
__decorate([
|
|
112
|
+
slot({ "default": true, type: HTMLElement, invalidateOnChildChange: true })
|
|
113
|
+
], MenuItemGroup.prototype, "items", void 0);
|
|
114
|
+
MenuItemGroup = __decorate([
|
|
115
|
+
customElement({
|
|
116
|
+
tag: "ui5-menu-item-group",
|
|
117
|
+
renderer: jsxRenderer,
|
|
118
|
+
template: MenuItemGroupTemplate,
|
|
119
|
+
})
|
|
120
|
+
], MenuItemGroup);
|
|
121
|
+
const isInstanceOfMenuItemGroup = (object) => {
|
|
122
|
+
return "isGroup" in object;
|
|
123
|
+
};
|
|
124
|
+
MenuItemGroup.define();
|
|
125
|
+
export default MenuItemGroup;
|
|
126
|
+
export { isInstanceOfMenuItemGroup, };
|
|
127
|
+
//# sourceMappingURL=MenuItemGroup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MenuItemGroup.js","sourceRoot":"","sources":["../src/MenuItemGroup.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,UAAU,MAAM,4CAA4C,CAAC;AACpE,OAAO,aAAa,MAAM,0DAA0D,CAAC;AACrF,OAAO,QAAQ,MAAM,qDAAqD,CAAC;AAC3E,OAAO,IAAI,MAAM,iDAAiD,CAAC;AACnE,OAAO,WAAW,MAAM,sDAAsD,CAAC;AAE/E,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,qBAAqB,MAAM,4BAA4B,CAAC;AAC/D,OAAO,sBAAsB,MAAM,mCAAmC,CAAC;AAGvE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAOH,IAAM,aAAa,GAAnB,MAAM,aAAc,SAAQ,UAAU;IAAtC;;QACC;;;;WAIG;QAEH,cAAS,GAAgC,MAAM,CAAC;IAuEjD,CAAC;IA7DA,IAAI,OAAO;QACV,OAAO,IAAI,CAAC;IACb,CAAC;IAED,IAAI,UAAU;QACb,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;IAChD,CAAC;IAED,iBAAiB;QAChB,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAE7B,IAAI,IAAI,CAAC,SAAS,KAAK,sBAAsB,CAAC,MAAM,EAAE,CAAC;YACtD,IAAI,CAAC,0BAA0B,EAAE,CAAC;QACnC,CAAC;IACF,CAAC;IAED;;;OAGG;IACH,qBAAqB;QACpB,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,IAAc,EAAE,EAAE;YAC1C,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC;QAClC,CAAC,CAAC,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,kBAAkB;QACjB,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,IAAc,EAAE,EAAE,GAAG,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACxE,CAAC;IAED;;;;OAIG;IACH,0BAA0B;QACzB,MAAM,eAAe,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,IAAc,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAEnF,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC1B,IAAI,eAAe,EAAE,CAAC;YACrB,eAAe,CAAC,OAAO,GAAG,IAAI,CAAC;QAChC,CAAC;IACF,CAAC;IAED;;;OAGG;IACH,gBAAgB,CAAC,CAAc;QAC9B,MAAM,WAAW,GAAG,CAAC,CAAC,MAAkB,CAAC;QACzC,MAAM,SAAS,GAAG,WAAW,CAAC,OAAO,CAAC;QAEtC,IAAI,IAAI,CAAC,SAAS,KAAK,sBAAsB,CAAC,MAAM,EAAE,CAAC;YACtD,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC1B,WAAW,CAAC,OAAO,GAAG,SAAS,CAAC;QACjC,CAAC;IACF,CAAC;CACD,CAAA;AAvEA;IADC,QAAQ,EAAE;gDACqC;AAQhD;IADC,IAAI,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,uBAAuB,EAAE,IAAI,EAAE,CAAC;4CACnD;AAfpB,aAAa;IANlB,aAAa,CAAC;QACd,GAAG,EAAE,qBAAqB;QAC1B,QAAQ,EAAE,WAAW;QACrB,QAAQ,EAAE,qBAAqB;KAC/B,CAAC;GAEI,aAAa,CA8ElB;AAED,MAAM,yBAAyB,GAAG,CAAC,MAAW,EAA2B,EAAE;IAC1E,OAAO,SAAS,IAAI,MAAM,CAAC;AAC5B,CAAC,CAAC;AAEF,aAAa,CAAC,MAAM,EAAE,CAAC;AAEvB,eAAe,aAAa,CAAC;AAE7B,OAAO,EACN,yBAAyB,GACzB,CAAC","sourcesContent":["import UI5Element from \"@ui5/webcomponents-base/dist/UI5Element.js\";\nimport customElement from \"@ui5/webcomponents-base/dist/decorators/customElement.js\";\nimport property from \"@ui5/webcomponents-base/dist/decorators/property.js\";\nimport slot from \"@ui5/webcomponents-base/dist/decorators/slot.js\";\nimport jsxRenderer from \"@ui5/webcomponents-base/dist/renderer/JsxRenderer.js\";\nimport type MenuItem from \"./MenuItem.js\";\nimport { isInstanceOfMenuItem } from \"./MenuItem.js\";\nimport MenuItemGroupTemplate from \"./MenuItemGroupTemplate.js\";\nimport MenuItemGroupCheckMode from \"./types/MenuItemGroupCheckMode.js\";\nimport type { IMenuItem } from \"./Menu.js\";\n\n/**\n * @class\n *\n * ### Overview\n *\n * The `ui5-menu-item-group` component represents a group of items designed for use inside a `ui5-menu`.\n * Items belonging to the same group should be wrapped by a `ui5-menu-item-group`.\n * Each group can have an `checkMode` property, which defines the check mode for the items within the group.\n * The possible values for `checkMode` are:\n * - 'None' (default) - no items can be checked\n * - 'Single' - Only one item can be checked at a time\n * - 'Multiple' - Multiple items can be checked simultaneously\n *\n * **Note:** If the `checkMode` property is set to 'Single', only one item can remain checked at any given time.\n * If multiple items are marked as checked, the last checked item will take precedence.\n *\n * ### Usage\n *\n * `ui5-menu-item-group` represents a collection of `ui5-menu-item` components that can have the same check mode.\n * The items are addeed to the group's `items` slot.\n *\n * ### ES6 Module Import\n *\n * `import \"@ui5/webcomponents/dist/MenuItemGroup.js\";`\n * @constructor\n * @extends UI5Element\n * @implements {IMenuItem}\n * @since 2.12.0\n * @public\n */\n@customElement({\n\ttag: \"ui5-menu-item-group\",\n\trenderer: jsxRenderer,\n\ttemplate: MenuItemGroupTemplate,\n})\n\nclass MenuItemGroup extends UI5Element implements IMenuItem {\n\t/**\n\t * Defines the component's check mode.\n\t * @default \"None\"\n\t * @public\n\t */\n\t@property()\n\tcheckMode: `${MenuItemGroupCheckMode}` = \"None\";\n\n\t/**\n\t * Defines the items of this component.\n\t * **Note:** The slot can hold any combination of components of type `ui5-menu-item` or `ui5-menu-separator` or both.\n\t * @public\n\t */\n\t@slot({ \"default\": true, type: HTMLElement, invalidateOnChildChange: true })\n\titems!: Array<IMenuItem>;\n\n\tget isGroup(): boolean {\n\t\treturn true;\n\t}\n\n\tget _menuItems() {\n\t\treturn this.items.filter(isInstanceOfMenuItem);\n\t}\n\n\tonBeforeRendering() {\n\t\tthis._updateItemsCheckMode();\n\n\t\tif (this.checkMode === MenuItemGroupCheckMode.Single) {\n\t\t\tthis._ensureSingleItemIsChecked();\n\t\t}\n\t}\n\n\t/**\n\t * Sets <code>_checkMode</code> property of all menu items in the group.\n\t * @private\n\t */\n\t_updateItemsCheckMode() {\n\t\tthis._menuItems.forEach((item: MenuItem) => {\n\t\t\titem._checkMode = this.checkMode;\n\t\t});\n\t}\n\n\t/**\n\t * Sets <code>checked</code> property of all items in the group to <code>false</code>.\n\t * @private\n\t */\n\t_clearCheckedItems() {\n\t\tthis._menuItems.forEach((item: MenuItem) => { item.checked = false; });\n\t}\n\n\t/**\n\t * Ensures that only one item can remain checked at any given time. If multiple items are marked as checked,\n\t * the last checked item will take precedence.\n\t * @private\n\t */\n\t_ensureSingleItemIsChecked() {\n\t\tconst lastCheckedItem = this._menuItems.findLast((item: MenuItem) => item.checked);\n\n\t\tthis._clearCheckedItems();\n\t\tif (lastCheckedItem) {\n\t\t\tlastCheckedItem.checked = true;\n\t\t}\n\t}\n\n\t/**\n\t * Handles the checking of an item in the group and unchecks other items if the item check mode is Single.\n\t * @private\n\t */\n\t_handleItemCheck(e: CustomEvent) {\n\t\tconst clickedItem = e.target as MenuItem;\n\t\tconst isChecked = clickedItem.checked;\n\n\t\tif (this.checkMode === MenuItemGroupCheckMode.Single) {\n\t\t\tthis._clearCheckedItems();\n\t\t\tclickedItem.checked = isChecked;\n\t\t}\n\t}\n}\n\nconst isInstanceOfMenuItemGroup = (object: any): object is MenuItemGroup => {\n\treturn \"isGroup\" in object;\n};\n\nMenuItemGroup.define();\n\nexport default MenuItemGroup;\n\nexport {\n\tisInstanceOfMenuItemGroup,\n};\n"]}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { jsx as _jsx } from "@ui5/webcomponents-base/jsx-runtime";
|
|
2
|
+
export default function MenuItemGroupTemplate() {
|
|
3
|
+
return (_jsx("div", { role: "group", "onui5-check": this._handleItemCheck, children: _jsx("slot", {}) }));
|
|
4
|
+
}
|
|
5
|
+
//# sourceMappingURL=MenuItemGroupTemplate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MenuItemGroupTemplate.js","sourceRoot":"","sources":["../src/MenuItemGroupTemplate.tsx"],"names":[],"mappings":";AAEA,MAAM,CAAC,OAAO,UAAU,qBAAqB;IAC5C,OAAO,CACN,cACC,IAAI,EAAC,OAAO,iBACC,IAAI,CAAC,gBAAgB,YAElC,gBAAa,GACR,CACN,CAAC;AACH,CAAC","sourcesContent":["import type MenuItemGroup from \"./MenuItemGroup.js\";\n\nexport default function MenuItemGroupTemplate(this: MenuItemGroup) {\n\treturn (\n\t\t<div\n\t\t\trole=\"group\"\n\t\t\tonui5-check={this._handleItemCheck}\n\t\t>\n\t\t\t<slot></slot>\n\t\t</div>\n\t);\n}\n"]}
|