@ui5/webcomponents 2.15.0-rc.3 → 2.15.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +12 -0
- package/dist/.tsbuildinfo +1 -1
- package/dist/DateTimePicker.js +1 -1
- package/dist/DateTimePicker.js.map +1 -1
- package/dist/Table.d.ts +2 -0
- package/dist/Table.js +6 -1
- package/dist/Table.js.map +1 -1
- package/dist/TableCell.d.ts +4 -2
- package/dist/TableCell.js +9 -2
- package/dist/TableCell.js.map +1 -1
- package/dist/TableCellTemplate.js +4 -2
- package/dist/TableCellTemplate.js.map +1 -1
- package/dist/TableCustomAnnouncement.d.ts +23 -0
- package/dist/TableCustomAnnouncement.js +189 -0
- package/dist/TableCustomAnnouncement.js.map +1 -0
- package/dist/TableHeaderCell.d.ts +5 -0
- package/dist/TableHeaderCell.js +12 -0
- package/dist/TableHeaderCell.js.map +1 -1
- package/dist/TableHeaderCellActionBase.d.ts +3 -0
- package/dist/TableHeaderCellActionBase.js +6 -0
- package/dist/TableHeaderCellActionBase.js.map +1 -1
- package/dist/TableHeaderRowTemplate.js +9 -5
- package/dist/TableHeaderRowTemplate.js.map +1 -1
- package/dist/TableNavigation.js +0 -1
- package/dist/TableNavigation.js.map +1 -1
- package/dist/TableRow.d.ts +7 -3
- package/dist/TableRow.js +33 -6
- package/dist/TableRow.js.map +1 -1
- package/dist/TableRowTemplate.d.ts +1 -1
- package/dist/TableRowTemplate.js +14 -6
- package/dist/TableRowTemplate.js.map +1 -1
- package/dist/TableSelection.js +3 -3
- package/dist/TableSelection.js.map +1 -1
- package/dist/TableSelectionMulti.js +6 -6
- package/dist/TableSelectionMulti.js.map +1 -1
- package/dist/TableUtils.d.ts +3 -3
- package/dist/TableUtils.js +5 -5
- package/dist/TableUtils.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/DatePickerPopover.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/ToolbarButton.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/ValueStateVariables.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 +15 -1
- package/dist/custom-elements.json +15 -0
- package/dist/generated/assets/i18n/messagebundle_en.json +1 -1
- package/dist/generated/assets/i18n/messagebundle_fr.json +1 -1
- package/dist/generated/assets/themes/sap_fiori_3/parameters-bundle.css.json +1 -1
- package/dist/generated/assets/themes/sap_fiori_3_dark/parameters-bundle.css.json +1 -1
- package/dist/generated/assets/themes/sap_fiori_3_hcb/parameters-bundle.css.json +1 -1
- package/dist/generated/assets/themes/sap_fiori_3_hcw/parameters-bundle.css.json +1 -1
- package/dist/generated/assets/themes/sap_horizon/parameters-bundle.css.json +1 -1
- package/dist/generated/assets/themes/sap_horizon_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 +15 -3
- package/dist/generated/i18n/i18n-defaults.js +16 -4
- 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/DatePickerPopover.css.d.ts +1 -1
- package/dist/generated/themes/DatePickerPopover.css.js +1 -1
- package/dist/generated/themes/DatePickerPopover.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/ToolbarButton.css.d.ts +1 -1
- package/dist/generated/themes/ToolbarButton.css.js +1 -1
- package/dist/generated/themes/ToolbarButton.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/ValueStateVariables.css.d.ts +1 -1
- package/dist/generated/themes/ValueStateVariables.css.js +1 -1
- package/dist/generated/themes/ValueStateVariables.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/TableGrowingMode.d.ts +0 -1
- package/dist/types/TableGrowingMode.js +0 -1
- package/dist/types/TableGrowingMode.js.map +1 -1
- package/dist/web-types.json +1 -1
- package/package.json +9 -9
- package/src/TableCellTemplate.tsx +6 -4
- package/src/TableHeaderRowTemplate.tsx +12 -5
- package/src/TableRowTemplate.tsx +28 -13
- package/src/i18n/messagebundle.properties +30 -6
- package/src/i18n/messagebundle_en.properties +1 -1
- package/src/i18n/messagebundle_fr.properties +13 -13
- package/src/themes/TableCell.css +4 -3
- package/src/themes/TableHeaderRow.css +5 -0
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
import TableExtension from "./TableExtension.js";
|
|
2
|
+
import I18nBundle from "@ui5/webcomponents-base/dist/i18nBundle.js";
|
|
3
|
+
import { getTabbableElements } from "@ui5/webcomponents-base/dist/util/TabbableElements.js";
|
|
4
|
+
import { TABLE_ROW, TABLE_ROW_INDEX, TABLE_ROW_SELECTED, TABLE_ROW_ACTIVE, TABLE_ROW_NAVIGABLE, TABLE_COLUMN_HEADER_ROW, TABLE_CELL_SINGLE_CONTROL, TABLE_CELL_MULTIPLE_CONTROLS, TABLE_ACC_STATE_EMPTY, TABLE_ACC_STATE_REQUIRED, TABLE_ACC_STATE_DISABLED, TABLE_ACC_STATE_READONLY, } from "./generated/i18n/i18n-defaults.js";
|
|
5
|
+
let invisibleText;
|
|
6
|
+
const i18nBundle = new I18nBundle("@ui5/webcomponents/main");
|
|
7
|
+
const checkVisibility = (element) => {
|
|
8
|
+
return element.checkVisibility() || getComputedStyle(element).display === "contents";
|
|
9
|
+
};
|
|
10
|
+
const updateInvisibleText = (element, text = []) => {
|
|
11
|
+
const invisibleTextId = "ui5-table-invisible-text";
|
|
12
|
+
if (!invisibleText || !invisibleText.isConnected) {
|
|
13
|
+
invisibleText = document.createElement("span");
|
|
14
|
+
invisibleText.id = invisibleTextId;
|
|
15
|
+
invisibleText.ariaHidden = "true";
|
|
16
|
+
invisibleText.style.display = "none";
|
|
17
|
+
document.body.appendChild(invisibleText);
|
|
18
|
+
}
|
|
19
|
+
let ariaLabelledBy = (element.getAttribute("aria-labelledby") || "").split(" ").filter(Boolean);
|
|
20
|
+
const invisibleTextAssociated = ariaLabelledBy.includes(invisibleTextId);
|
|
21
|
+
text = Array.isArray(text) ? text.filter(Boolean).join(" . ").trim() : text.trim();
|
|
22
|
+
if (text && !invisibleTextAssociated) {
|
|
23
|
+
ariaLabelledBy.push(invisibleTextId);
|
|
24
|
+
}
|
|
25
|
+
else if (!text && invisibleTextAssociated) {
|
|
26
|
+
ariaLabelledBy = ariaLabelledBy.filter(id => id !== invisibleTextId);
|
|
27
|
+
}
|
|
28
|
+
invisibleText.textContent = text;
|
|
29
|
+
if (ariaLabelledBy.length > 0) {
|
|
30
|
+
element.setAttribute("aria-labelledby", ariaLabelledBy.join(" "));
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
element.removeAttribute("aria-labelledby");
|
|
34
|
+
}
|
|
35
|
+
};
|
|
36
|
+
const getAccessibilityDescription = (element, lessDetails = false, _isRootElement = true) => {
|
|
37
|
+
if (!element) {
|
|
38
|
+
return "";
|
|
39
|
+
}
|
|
40
|
+
if (element.nodeType === Node.TEXT_NODE) {
|
|
41
|
+
return element.data.trim();
|
|
42
|
+
}
|
|
43
|
+
if (!(element instanceof HTMLElement)) {
|
|
44
|
+
return "";
|
|
45
|
+
}
|
|
46
|
+
if (element.hasAttribute("data-ui5-table-acc-text")) {
|
|
47
|
+
return element.getAttribute("data-ui5-table-acc-text") || "";
|
|
48
|
+
}
|
|
49
|
+
if (element.ariaHidden === "true" || !checkVisibility(element)) {
|
|
50
|
+
return _isRootElement ? i18nBundle.getText(TABLE_ACC_STATE_EMPTY) : "";
|
|
51
|
+
}
|
|
52
|
+
let childNodes = [];
|
|
53
|
+
const descriptions = [];
|
|
54
|
+
const accessibilityInfo = element.accessibilityInfo;
|
|
55
|
+
if (accessibilityInfo) {
|
|
56
|
+
const { type, description, required, disabled, readonly, children, } = accessibilityInfo;
|
|
57
|
+
childNodes = children || [];
|
|
58
|
+
type && descriptions.push(type);
|
|
59
|
+
description && descriptions.push(description);
|
|
60
|
+
if (!lessDetails) {
|
|
61
|
+
required && descriptions.push(i18nBundle.getText(TABLE_ACC_STATE_REQUIRED));
|
|
62
|
+
disabled && descriptions.push(i18nBundle.getText(TABLE_ACC_STATE_DISABLED));
|
|
63
|
+
readonly && descriptions.push(i18nBundle.getText(TABLE_ACC_STATE_READONLY));
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
else if (element.localName === "slot") {
|
|
67
|
+
childNodes = element.assignedNodes({ flatten: true });
|
|
68
|
+
}
|
|
69
|
+
else {
|
|
70
|
+
childNodes = element.shadowRoot ? [...element.shadowRoot.childNodes] : [...element.childNodes];
|
|
71
|
+
}
|
|
72
|
+
childNodes.forEach(child => {
|
|
73
|
+
const childDescription = getAccessibilityDescription(child, lessDetails, false);
|
|
74
|
+
childDescription && descriptions.push(childDescription);
|
|
75
|
+
});
|
|
76
|
+
if (_isRootElement) {
|
|
77
|
+
const hasDescription = descriptions.length > 0;
|
|
78
|
+
if (!hasDescription || !lessDetails) {
|
|
79
|
+
const tabbables = getTabbableElements(element);
|
|
80
|
+
const bundleKey = [
|
|
81
|
+
hasDescription ? "" : TABLE_ACC_STATE_EMPTY,
|
|
82
|
+
TABLE_CELL_SINGLE_CONTROL,
|
|
83
|
+
TABLE_CELL_MULTIPLE_CONTROLS,
|
|
84
|
+
][Math.min(tabbables.length, 2)];
|
|
85
|
+
if (bundleKey) {
|
|
86
|
+
hasDescription && descriptions.push(".");
|
|
87
|
+
descriptions.push(i18nBundle.getText(bundleKey));
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
return descriptions.join(" ").trim();
|
|
92
|
+
};
|
|
93
|
+
/**
|
|
94
|
+
* Handles the custom announcement for the ui5-table.
|
|
95
|
+
*
|
|
96
|
+
* @class
|
|
97
|
+
* @private
|
|
98
|
+
*/
|
|
99
|
+
class TableCustomAnnouncement extends TableExtension {
|
|
100
|
+
constructor(table) {
|
|
101
|
+
super();
|
|
102
|
+
this._tableAttributes = ["ui5-table-header-row", "ui5-table-header-cell", "ui5-table-row", "ui5-table-cell"];
|
|
103
|
+
this._table = table;
|
|
104
|
+
}
|
|
105
|
+
_onfocusin(e, eventOrigin) {
|
|
106
|
+
const tableAttribute = this._tableAttributes.find(attr => eventOrigin.hasAttribute(attr));
|
|
107
|
+
if (!tableAttribute) {
|
|
108
|
+
return;
|
|
109
|
+
}
|
|
110
|
+
const tableElementName = tableAttribute.replace("ui5-table", "Table").replace(/-([a-z])/g, g => g[1].toUpperCase());
|
|
111
|
+
const eventHandlerName = `_handle${tableElementName}Focusin`;
|
|
112
|
+
const eventHandler = this[eventHandlerName];
|
|
113
|
+
if (typeof eventHandler === "function") {
|
|
114
|
+
eventHandler.call(this, eventOrigin, e);
|
|
115
|
+
}
|
|
116
|
+
else {
|
|
117
|
+
this._handleTableElementFocusin(eventOrigin);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
_onfocusout(e, eventOrigin) {
|
|
121
|
+
const isTableElement = this._tableAttributes.some(attr => eventOrigin.hasAttribute(attr));
|
|
122
|
+
isTableElement && updateInvisibleText(eventOrigin);
|
|
123
|
+
}
|
|
124
|
+
_handleTableElementFocusin(element) {
|
|
125
|
+
const description = getAccessibilityDescription(element);
|
|
126
|
+
updateInvisibleText(element, description);
|
|
127
|
+
}
|
|
128
|
+
_handleTableHeaderRowFocusin(headerRow) {
|
|
129
|
+
const descriptions = [
|
|
130
|
+
i18nBundle.getText(TABLE_COLUMN_HEADER_ROW),
|
|
131
|
+
];
|
|
132
|
+
if (headerRow._hasSelector) {
|
|
133
|
+
descriptions.push(headerRow._isMultiSelect ? headerRow._selectionCellAriaDescription : headerRow._i18nSelection);
|
|
134
|
+
}
|
|
135
|
+
headerRow._visibleCells.forEach(headerCell => {
|
|
136
|
+
const cellDescription = getAccessibilityDescription(headerCell, true);
|
|
137
|
+
descriptions.push(cellDescription);
|
|
138
|
+
});
|
|
139
|
+
if (headerRow._rowActionCount > 0) {
|
|
140
|
+
descriptions.push(headerRow._i18nRowActions);
|
|
141
|
+
}
|
|
142
|
+
updateInvisibleText(headerRow, descriptions);
|
|
143
|
+
}
|
|
144
|
+
_handleTableRowFocusin(row) {
|
|
145
|
+
if (!row._table) {
|
|
146
|
+
return;
|
|
147
|
+
}
|
|
148
|
+
const descriptions = [
|
|
149
|
+
i18nBundle.getText(TABLE_ROW),
|
|
150
|
+
i18nBundle.getText(TABLE_ROW_INDEX, row.ariaRowIndex, this._table._ariaRowCount),
|
|
151
|
+
];
|
|
152
|
+
if (row._isSelected) {
|
|
153
|
+
descriptions.push(i18nBundle.getText(TABLE_ROW_SELECTED));
|
|
154
|
+
}
|
|
155
|
+
if (row._isNavigable) {
|
|
156
|
+
descriptions.push(i18nBundle.getText(TABLE_ROW_NAVIGABLE));
|
|
157
|
+
}
|
|
158
|
+
else if (row.interactive) {
|
|
159
|
+
descriptions.push(i18nBundle.getText(TABLE_ROW_ACTIVE));
|
|
160
|
+
}
|
|
161
|
+
const cells = [...row._visibleCells, ...row._popinCells];
|
|
162
|
+
cells.flatMap(cell => {
|
|
163
|
+
return cell._popin ? [cell._popinHeader, cell._popinContent] : [cell._headerCell, cell];
|
|
164
|
+
}).forEach(node => {
|
|
165
|
+
const nodeDescription = getAccessibilityDescription(node, true);
|
|
166
|
+
descriptions.push(nodeDescription);
|
|
167
|
+
});
|
|
168
|
+
if (row._availableActionsCount > 0) {
|
|
169
|
+
descriptions.push(row._actionCellAccText);
|
|
170
|
+
}
|
|
171
|
+
updateInvisibleText(row, descriptions);
|
|
172
|
+
}
|
|
173
|
+
_handleTableCellFocusin(cell) {
|
|
174
|
+
if (cell.hasAttribute("data-ui5-table-popin-cell")) {
|
|
175
|
+
const popinCells = cell.getDomRef().assignedNodes({ flatten: true });
|
|
176
|
+
const descriptions = popinCells.flatMap(popinCell => {
|
|
177
|
+
const headerDescription = getAccessibilityDescription(popinCell._popinHeader);
|
|
178
|
+
const contentDescription = getAccessibilityDescription(popinCell._popinContent);
|
|
179
|
+
return [headerDescription, contentDescription];
|
|
180
|
+
});
|
|
181
|
+
updateInvisibleText(cell, descriptions);
|
|
182
|
+
}
|
|
183
|
+
else {
|
|
184
|
+
this._handleTableElementFocusin(cell);
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
export default TableCustomAnnouncement;
|
|
189
|
+
//# sourceMappingURL=TableCustomAnnouncement.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TableCustomAnnouncement.js","sourceRoot":"","sources":["../src/TableCustomAnnouncement.ts"],"names":[],"mappings":"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","sourcesContent":["import TableExtension from \"./TableExtension.js\";\nimport I18nBundle from \"@ui5/webcomponents-base/dist/i18nBundle.js\";\nimport { getTabbableElements } from \"@ui5/webcomponents-base/dist/util/TabbableElements.js\";\nimport type { AccessibilityInfo } from \"@ui5/webcomponents-base\";\nimport type Table from \"./Table.js\";\nimport type TableRow from \"./TableRow.js\";\nimport type TableCell from \"./TableCell.js\";\nimport type TableHeaderRow from \"./TableHeaderRow.js\";\nimport {\n\tTABLE_ROW,\n\tTABLE_ROW_INDEX,\n\tTABLE_ROW_SELECTED,\n\tTABLE_ROW_ACTIVE,\n\tTABLE_ROW_NAVIGABLE,\n\tTABLE_COLUMN_HEADER_ROW,\n\tTABLE_CELL_SINGLE_CONTROL,\n\tTABLE_CELL_MULTIPLE_CONTROLS,\n\tTABLE_ACC_STATE_EMPTY,\n\tTABLE_ACC_STATE_REQUIRED,\n\tTABLE_ACC_STATE_DISABLED,\n\tTABLE_ACC_STATE_READONLY,\n} from \"./generated/i18n/i18n-defaults.js\";\n\nlet invisibleText: HTMLElement;\nconst i18nBundle = new I18nBundle(\"@ui5/webcomponents/main\");\n\nconst checkVisibility = (element: HTMLElement): boolean => {\n\treturn element.checkVisibility() || getComputedStyle(element).display === \"contents\";\n};\n\nconst updateInvisibleText = (element: HTMLElement, text: string | string[] = []) => {\n\tconst invisibleTextId = \"ui5-table-invisible-text\";\n\tif (!invisibleText || !invisibleText.isConnected) {\n\t\tinvisibleText = document.createElement(\"span\");\n\t\tinvisibleText.id = invisibleTextId;\n\t\tinvisibleText.ariaHidden = \"true\";\n\t\tinvisibleText.style.display = \"none\";\n\t\tdocument.body.appendChild(invisibleText);\n\t}\n\n\tlet ariaLabelledBy = (element.getAttribute(\"aria-labelledby\") || \"\").split(\" \").filter(Boolean);\n\tconst invisibleTextAssociated = ariaLabelledBy.includes(invisibleTextId);\n\n\ttext = Array.isArray(text) ? text.filter(Boolean).join(\" . \").trim() : text.trim();\n\tif (text && !invisibleTextAssociated) {\n\t\tariaLabelledBy.push(invisibleTextId);\n\t} else if (!text && invisibleTextAssociated) {\n\t\tariaLabelledBy = ariaLabelledBy.filter(id => id !== invisibleTextId);\n\t}\n\n\tinvisibleText.textContent = text;\n\tif (ariaLabelledBy.length > 0) {\n\t\telement.setAttribute(\"aria-labelledby\", ariaLabelledBy.join(\" \"));\n\t} else {\n\t\telement.removeAttribute(\"aria-labelledby\");\n\t}\n};\n\nconst getAccessibilityDescription = (element: Node, lessDetails: boolean = false, _isRootElement: boolean = true): string => {\n\tif (!element) {\n\t\treturn \"\";\n\t}\n\n\tif (element.nodeType === Node.TEXT_NODE) {\n\t\treturn (element as Text).data.trim();\n\t}\n\n\tif (!(element instanceof HTMLElement)) {\n\t\treturn \"\";\n\t}\n\n\tif (element.hasAttribute(\"data-ui5-table-acc-text\")) {\n\t\treturn element.getAttribute(\"data-ui5-table-acc-text\") || \"\";\n\t}\n\n\tif (element.ariaHidden === \"true\" || !checkVisibility(element)) {\n\t\treturn _isRootElement ? i18nBundle.getText(TABLE_ACC_STATE_EMPTY) : \"\";\n\t}\n\n\tlet childNodes = [] as Array<Node>;\n\tconst descriptions = [] as Array<string>;\n\tconst accessibilityInfo = (element as any).accessibilityInfo as AccessibilityInfo | undefined;\n\tif (accessibilityInfo) {\n\t\tconst {\n\t\t\ttype, description, required, disabled, readonly, children,\n\t\t} = accessibilityInfo;\n\n\t\tchildNodes = children || [];\n\t\ttype && descriptions.push(type);\n\t\tdescription && descriptions.push(description);\n\n\t\tif (!lessDetails) {\n\t\t\trequired && descriptions.push(i18nBundle.getText(TABLE_ACC_STATE_REQUIRED));\n\t\t\tdisabled && descriptions.push(i18nBundle.getText(TABLE_ACC_STATE_DISABLED));\n\t\t\treadonly && descriptions.push(i18nBundle.getText(TABLE_ACC_STATE_READONLY));\n\t\t}\n\t} else if (element.localName === \"slot\") {\n\t\tchildNodes = (element as HTMLSlotElement).assignedNodes({ flatten: true });\n\t} else {\n\t\tchildNodes = element.shadowRoot ? [...element.shadowRoot.childNodes] : [...element.childNodes];\n\t}\n\n\tchildNodes.forEach(child => {\n\t\tconst childDescription = getAccessibilityDescription(child, lessDetails, false);\n\t\tchildDescription && descriptions.push(childDescription);\n\t});\n\n\tif (_isRootElement) {\n\t\tconst hasDescription = descriptions.length > 0;\n\t\tif (!hasDescription || !lessDetails) {\n\t\t\tconst tabbables = getTabbableElements(element);\n\t\t\tconst bundleKey = [\n\t\t\t\thasDescription ? \"\" : TABLE_ACC_STATE_EMPTY,\n\t\t\t\tTABLE_CELL_SINGLE_CONTROL,\n\t\t\t\tTABLE_CELL_MULTIPLE_CONTROLS,\n\t\t\t][Math.min(tabbables.length, 2)];\n\t\t\tif (bundleKey) {\n\t\t\t\thasDescription && descriptions.push(\".\");\n\t\t\t\tdescriptions.push(i18nBundle.getText(bundleKey));\n\t\t\t}\n\t\t}\n\t}\n\n\treturn descriptions.join(\" \").trim();\n};\n\n/**\n * Handles the custom announcement for the ui5-table.\n *\n * @class\n * @private\n */\nclass TableCustomAnnouncement extends TableExtension {\n\t_table: Table;\n\t_tableAttributes = [\"ui5-table-header-row\", \"ui5-table-header-cell\", \"ui5-table-row\", \"ui5-table-cell\"];\n\n\tconstructor(table: Table) {\n\t\tsuper();\n\t\tthis._table = table;\n\t}\n\n\t_onfocusin(e: FocusEvent, eventOrigin: HTMLElement) {\n\t\tconst tableAttribute = this._tableAttributes.find(attr => eventOrigin.hasAttribute(attr));\n\t\tif (!tableAttribute) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst tableElementName = tableAttribute.replace(\"ui5-table\", \"Table\").replace(/-([a-z])/g, g => g[1].toUpperCase());\n\t\tconst eventHandlerName = `_handle${tableElementName}Focusin` as keyof TableCustomAnnouncement;\n\t\tconst eventHandler = this[eventHandlerName] as (target: HTMLElement, e?: FocusEvent) => void;\n\t\tif (typeof eventHandler === \"function\") {\n\t\t\teventHandler.call(this, eventOrigin, e);\n\t\t} else {\n\t\t\tthis._handleTableElementFocusin(eventOrigin);\n\t\t}\n\t}\n\n\t_onfocusout(e: FocusEvent, eventOrigin: HTMLElement) {\n\t\tconst isTableElement = this._tableAttributes.some(attr => eventOrigin.hasAttribute(attr));\n\t\tisTableElement && updateInvisibleText(eventOrigin);\n\t}\n\n\t_handleTableElementFocusin(element: HTMLElement) {\n\t\tconst description = getAccessibilityDescription(element);\n\t\tupdateInvisibleText(element, description);\n\t}\n\n\t_handleTableHeaderRowFocusin(headerRow: TableHeaderRow) {\n\t\tconst descriptions = [\n\t\t\ti18nBundle.getText(TABLE_COLUMN_HEADER_ROW),\n\t\t];\n\n\t\tif (headerRow._hasSelector) {\n\t\t\tdescriptions.push(headerRow._isMultiSelect ? headerRow._selectionCellAriaDescription! : headerRow._i18nSelection);\n\t\t}\n\n\t\theaderRow._visibleCells.forEach(headerCell => {\n\t\t\tconst cellDescription = getAccessibilityDescription(headerCell, true);\n\t\t\tdescriptions.push(cellDescription);\n\t\t});\n\n\t\tif (headerRow._rowActionCount > 0) {\n\t\t\tdescriptions.push(headerRow._i18nRowActions);\n\t\t}\n\n\t\tupdateInvisibleText(headerRow, descriptions);\n\t}\n\n\t_handleTableRowFocusin(row: TableRow) {\n\t\tif (!row._table) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst descriptions = [\n\t\t\ti18nBundle.getText(TABLE_ROW),\n\t\t\ti18nBundle.getText(TABLE_ROW_INDEX, row.ariaRowIndex!, this._table._ariaRowCount),\n\t\t];\n\n\t\tif (row._isSelected) {\n\t\t\tdescriptions.push(i18nBundle.getText(TABLE_ROW_SELECTED));\n\t\t}\n\n\t\tif (row._isNavigable) {\n\t\t\tdescriptions.push(i18nBundle.getText(TABLE_ROW_NAVIGABLE));\n\t\t} else if (row.interactive) {\n\t\t\tdescriptions.push(i18nBundle.getText(TABLE_ROW_ACTIVE));\n\t\t}\n\n\t\tconst cells = [...row._visibleCells, ...row._popinCells] as TableCell[];\n\t\tcells.flatMap(cell => {\n\t\t\treturn cell._popin ? [cell._popinHeader!, cell._popinContent!] : [cell._headerCell, cell];\n\t\t}).forEach(node => {\n\t\t\tconst nodeDescription = getAccessibilityDescription(node, true);\n\t\t\tdescriptions.push(nodeDescription);\n\t\t});\n\n\t\tif (row._availableActionsCount > 0) {\n\t\t\tdescriptions.push(row._actionCellAccText!);\n\t\t}\n\n\t\tupdateInvisibleText(row, descriptions);\n\t}\n\n\t_handleTableCellFocusin(cell: TableCell) {\n\t\tif (cell.hasAttribute(\"data-ui5-table-popin-cell\")) {\n\t\t\tconst popinCells = (cell.getDomRef() as HTMLSlotElement).assignedNodes({ flatten: true }) as TableCell[];\n\t\t\tconst descriptions = popinCells.flatMap(popinCell => {\n\t\t\t\tconst headerDescription = getAccessibilityDescription(popinCell._popinHeader!);\n\t\t\t\tconst contentDescription = getAccessibilityDescription(popinCell._popinContent!);\n\t\t\t\treturn [headerDescription, contentDescription];\n\t\t\t});\n\t\t\tupdateInvisibleText(cell, descriptions);\n\t\t} else {\n\t\t\tthis._handleTableElementFocusin(cell);\n\t\t}\n\t}\n}\n\nexport default TableCustomAnnouncement;\n"]}
|
|
@@ -98,8 +98,13 @@ declare class TableHeaderCell extends TableCellBase {
|
|
|
98
98
|
*/
|
|
99
99
|
action: Array<TableHeaderCellActionBase>;
|
|
100
100
|
_popin: boolean;
|
|
101
|
+
_defaultSlot: HTMLSlotElement;
|
|
102
|
+
_actionSlot: HTMLSlotElement;
|
|
101
103
|
protected ariaRole: string;
|
|
102
104
|
_popinWidth: number;
|
|
103
105
|
onBeforeRendering(): void;
|
|
106
|
+
get accessibilityInfo(): {
|
|
107
|
+
children: HTMLSlotElement[];
|
|
108
|
+
};
|
|
104
109
|
}
|
|
105
110
|
export default TableHeaderCell;
|
package/dist/TableHeaderCell.js
CHANGED
|
@@ -10,6 +10,7 @@ import TableCellBase from "./TableCellBase.js";
|
|
|
10
10
|
import TableHeaderCellTemplate from "./TableHeaderCellTemplate.js";
|
|
11
11
|
import TableHeaderCellStyles from "./generated/themes/TableHeaderCell.css.js";
|
|
12
12
|
import SortOrder from "@ui5/webcomponents-base/dist/types/SortOrder.js";
|
|
13
|
+
import query from "@ui5/webcomponents-base/dist/decorators/query.js";
|
|
13
14
|
/**
|
|
14
15
|
* @class
|
|
15
16
|
*
|
|
@@ -74,6 +75,11 @@ let TableHeaderCell = class TableHeaderCell extends TableCellBase {
|
|
|
74
75
|
}
|
|
75
76
|
toggleAttribute(this, "aria-sort", this.sortIndicator !== SortOrder.None, this.sortIndicator.toLowerCase());
|
|
76
77
|
}
|
|
78
|
+
get accessibilityInfo() {
|
|
79
|
+
return {
|
|
80
|
+
children: [this._defaultSlot, this._actionSlot],
|
|
81
|
+
};
|
|
82
|
+
}
|
|
77
83
|
};
|
|
78
84
|
__decorate([
|
|
79
85
|
property()
|
|
@@ -99,6 +105,12 @@ __decorate([
|
|
|
99
105
|
__decorate([
|
|
100
106
|
property({ type: Boolean, noAttribute: true })
|
|
101
107
|
], TableHeaderCell.prototype, "_popin", void 0);
|
|
108
|
+
__decorate([
|
|
109
|
+
query("slot:not([name])")
|
|
110
|
+
], TableHeaderCell.prototype, "_defaultSlot", void 0);
|
|
111
|
+
__decorate([
|
|
112
|
+
query("slot[name=action]")
|
|
113
|
+
], TableHeaderCell.prototype, "_actionSlot", void 0);
|
|
102
114
|
TableHeaderCell = __decorate([
|
|
103
115
|
customElement({
|
|
104
116
|
tag: "ui5-table-header-cell",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TableHeaderCell.js","sourceRoot":"","sources":["../src/TableHeaderCell.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,4CAA4C,CAAC;AAC3F,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,aAAa,MAAM,oBAAoB,CAAC;AAC/C,OAAO,uBAAuB,MAAM,8BAA8B,CAAC;AACnE,OAAO,qBAAqB,MAAM,2CAA2C,CAAC;AAC9E,OAAO,SAAS,MAAM,iDAAiD,CAAC;
|
|
1
|
+
{"version":3,"file":"TableHeaderCell.js","sourceRoot":"","sources":["../src/TableHeaderCell.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,4CAA4C,CAAC;AAC3F,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,aAAa,MAAM,oBAAoB,CAAC;AAC/C,OAAO,uBAAuB,MAAM,8BAA8B,CAAC;AACnE,OAAO,qBAAqB,MAAM,2CAA2C,CAAC;AAC9E,OAAO,SAAS,MAAM,iDAAiD,CAAC;AACxE,OAAO,KAAK,MAAM,kDAAkD,CAAC;AAGrE;;;;;;;;;;;;;;;;;;GAkBG;AAMH,IAAM,eAAe,GAArB,MAAM,eAAgB,SAAQ,aAAa;IAA3C;;QAkCC;;;;;;;;;WASG;QAEH,eAAU,GAAG,CAAC,CAAC;QAYf;;;;;;WAMG;QAEH,kBAAa,GAAmB,MAAM,CAAC;QAEvC;;;;;;;;;WASG;QAEH,gBAAW,GAAY,KAAK,CAAC;QAc7B,WAAM,GAAG,KAAK,CAAC;QAQL,aAAQ,GAAW,cAAc,CAAC;QAC5C,gBAAW,GAAW,CAAC,CAAC;IAgBzB,CAAC;IAdA,iBAAiB;QAChB,KAAK,CAAC,iBAAiB,EAAE,CAAC;QAC1B,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YAC1B,+FAA+F;YAC/F,IAAI,CAAC,KAAK,CAAC,cAAc,GAAG,0BAA0B,IAAI,CAAC,eAAe,GAAG,CAAC;QAC/E,CAAC;QACD,eAAe,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,CAAC,aAAa,KAAK,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC,CAAC;IAC7G,CAAC;IAED,IAAI,iBAAiB;QACpB,OAAO;YACN,QAAQ,EAAE,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,WAAW,CAAC;SAC/C,CAAC;IACH,CAAC;CACD,CAAA;AAvGA;IADC,QAAQ,EAAE;8CACI;AAkBf;IADC,QAAQ,EAAE;iDACO;AAalB;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;mDACZ;AAUf;IADC,QAAQ,EAAE;kDACQ;AAUnB;IADC,QAAQ,EAAE;sDAC4B;AAavC;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;oDACC;AAW7B;IADC,IAAI,EAAE;+CACmC;AAG1C;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;+CAChC;AAGf;IADC,KAAK,CAAC,kBAAkB,CAAC;qDACK;AAG/B;IADC,KAAK,CAAC,mBAAmB,CAAC;oDACG;AAlGzB,eAAe;IALpB,aAAa,CAAC;QACd,GAAG,EAAE,uBAAuB;QAC5B,MAAM,EAAE,CAAC,aAAa,CAAC,MAAM,EAAE,qBAAqB,CAAC;QACrD,QAAQ,EAAE,uBAAuB;KACjC,CAAC;GACI,eAAe,CAqHpB;AAED,eAAe,CAAC,MAAM,EAAE,CAAC;AAEzB,eAAe,eAAe,CAAC","sourcesContent":["import { customElement, property, slot } from \"@ui5/webcomponents-base/dist/decorators.js\";\nimport { toggleAttribute } from \"./TableUtils.js\";\nimport TableCellBase from \"./TableCellBase.js\";\nimport TableHeaderCellTemplate from \"./TableHeaderCellTemplate.js\";\nimport TableHeaderCellStyles from \"./generated/themes/TableHeaderCell.css.js\";\nimport SortOrder from \"@ui5/webcomponents-base/dist/types/SortOrder.js\";\nimport query from \"@ui5/webcomponents-base/dist/decorators/query.js\";\nimport type TableHeaderCellActionBase from \"./TableHeaderCellActionBase.js\";\n\n/**\n * @class\n *\n * ### Overview\n *\n * The `ui5-table-header-cell` component represents a column in the `ui5-table`.\n *\n * As it is tightly coupled to the `ui5-table`, it should only be used in the `ui5-table-header-row`\n * to ensure correct layout and design.\n *\n * ### ES6 Module Import\n *\n * `import \"@ui5/webcomponents/dist/TableHeaderCell.js\";`\n *\n * @constructor\n * @extends TableCellBase\n * @since 2.0.0\n * @public\n */\n@customElement({\n\ttag: \"ui5-table-header-cell\",\n\tstyles: [TableCellBase.styles, TableHeaderCellStyles],\n\ttemplate: TableHeaderCellTemplate,\n})\nclass TableHeaderCell extends TableCellBase {\n\t/**\n\t * Defines the width of the column.\n\t *\n\t * By default, the column will grow and shrink according to the available space.\n\t * This will distribute the space proportionally among all columns with no specific width set.\n\t *\n\t * See [\\<length\\>](https://developer.mozilla.org/en-US/docs/Web/CSS/length) and\n\t * [\\<percentage\\>](https://developer.mozilla.org/en-US/docs/Web/CSS/percentage) for possible width values.\n\t *\n\t * @default undefined\n\t * @public\n\t */\n\t@property()\n\twidth?: string;\n\n\t/**\n \t * Defines the minimum width of the column.\n\t *\n\t * If the table is in `Popin` mode and the minimum width does not fit anymore,\n\t * the column will move into the popin.\n\t *\n\t * By default, the table prevents the column from becoming too small.\n\t * Changing this value to a small value might lead to accessibility issues.\n\t *\n\t * **Note:** This property only takes effect for columns with a [\\<percentage\\>](https://developer.mozilla.org/en-US/docs/Web/CSS/percentage) value\n\t * or the default width.\n\t *\n\t * @public\n\t * @default undefined\n\t */\n\t@property()\n\tminWidth?: string;\n\n\t/**\n\t * Defines the importance of the column.\n\t *\n\t * This property affects the popin behaviour.\n\t * Columns with higher importance will move into the popin area later then less important\n\t * columns.\n\t *\n\t * @default 0\n\t * @public\n\t */\n\t@property({ type: Number })\n\timportance = 0;\n\n\t/**\n\t * The text for the column when it pops in.\n\t *\n\t * @default undefined\n\t * @since 2.7.0\n\t * @public\n\t */\n\t@property()\n\tpopinText?: string;\n\n\t/**\n\t * Defines the sort indicator of the column.\n\t *\n\t * @default \"None\"\n\t * @since 2.8.0\n\t * @public\n\t */\n\t@property()\n\tsortIndicator: `${SortOrder}` = \"None\";\n\n\t/**\n\t * Defines if the column is hidden in the popin.\n\t *\n\t * **Note:** Please be aware that hiding the column in the popin might lead to accessibility issues as\n\t * users might not be able to access the content of the column on small screens.\n\t *\n\t * @default false\n\t * @since 2.8.0\n\t * @public\n\t */\n\t@property({ type: Boolean })\n\tpopinHidden: boolean = false;\n\n\t/**\n\t * Defines the action of the column.\n\t *\n\t * **Note:** While multiple actions are technically possible, this is not supported.\n\t *\n\t * @public\n\t * @since 2.8.0\n\t */\n\t@slot()\n\taction!: Array<TableHeaderCellActionBase>;\n\n\t@property({ type: Boolean, noAttribute: true })\n\t_popin = false;\n\n\t@query(\"slot:not([name])\")\n\t_defaultSlot!: HTMLSlotElement;\n\n\t@query(\"slot[name=action]\")\n\t_actionSlot!: HTMLSlotElement;\n\n\tprotected ariaRole: string = \"columnheader\";\n\t_popinWidth: number = 0;\n\n\tonBeforeRendering() {\n\t\tsuper.onBeforeRendering();\n\t\tif (this._individualSlot) {\n\t\t\t// overwrite setting of TableCellBase so that the TableHeaderCell always uses the slot variable\n\t\t\tthis.style.justifyContent = `var(--horizontal-align-${this._individualSlot})`;\n\t\t}\n\t\ttoggleAttribute(this, \"aria-sort\", this.sortIndicator !== SortOrder.None, this.sortIndicator.toLowerCase());\n\t}\n\n\tget accessibilityInfo() {\n\t\treturn {\n\t\t\tchildren: [this._defaultSlot, this._actionSlot],\n\t\t};\n\t}\n}\n\nTableHeaderCell.define();\n\nexport default TableHeaderCell;\n"]}
|
|
@@ -28,6 +28,9 @@ declare abstract class TableHeaderCellActionBase extends UI5Element {
|
|
|
28
28
|
};
|
|
29
29
|
onBeforeRendering(): void;
|
|
30
30
|
_onClick(e: UI5CustomEvent<Button, "click">): void;
|
|
31
|
+
get accessibilityInfo(): {
|
|
32
|
+
description: string;
|
|
33
|
+
};
|
|
31
34
|
get _tooltip(): string;
|
|
32
35
|
get _icon(): string;
|
|
33
36
|
}
|
|
@@ -9,6 +9,7 @@ import { customElement, eventStrict } from "@ui5/webcomponents-base/dist/decorat
|
|
|
9
9
|
import jsxRenderer from "@ui5/webcomponents-base/dist/renderer/JsxRenderer.js";
|
|
10
10
|
import TableHeaderCellActionBaseTemplate from "./TableHeaderCellActionBaseTemplate.js";
|
|
11
11
|
import TableHeaderCellActionBaseStyles from "./generated/themes/TableHeaderCellActionBase.css.js";
|
|
12
|
+
import getActiveElement from "@ui5/webcomponents-base/dist/util/getActiveElement.js";
|
|
12
13
|
/**
|
|
13
14
|
* Fired when a header cell action is clicked.
|
|
14
15
|
*
|
|
@@ -26,6 +27,11 @@ let TableHeaderCellActionBase = class TableHeaderCellActionBase extends UI5Eleme
|
|
|
26
27
|
action.fireDecoratorEvent("click", { targetRef: e.target });
|
|
27
28
|
e.stopPropagation();
|
|
28
29
|
}
|
|
30
|
+
get accessibilityInfo() {
|
|
31
|
+
return {
|
|
32
|
+
description: getActiveElement()?.hasAttribute("ui5-table-cell-base") ? this._tooltip : "",
|
|
33
|
+
};
|
|
34
|
+
}
|
|
29
35
|
get _tooltip() {
|
|
30
36
|
return this.getRenderInfo().tooltip;
|
|
31
37
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TableHeaderCellActionBase.js","sourceRoot":"","sources":["../src/TableHeaderCellActionBase.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,UAAU,MAAM,4CAA4C,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,4CAA4C,CAAC;AACxF,OAAO,WAAW,MAAM,sDAAsD,CAAC;
|
|
1
|
+
{"version":3,"file":"TableHeaderCellActionBase.js","sourceRoot":"","sources":["../src/TableHeaderCellActionBase.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,UAAU,MAAM,4CAA4C,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,4CAA4C,CAAC;AACxF,OAAO,WAAW,MAAM,sDAAsD,CAAC;AAC/E,OAAO,iCAAiC,MAAM,wCAAwC,CAAC;AACvF,OAAO,+BAA+B,MAAM,qDAAqD,CAAC;AAClG,OAAO,gBAAgB,MAAM,uDAAuD,CAAC;AAgBrF;;;;;;GAMG;AAmBH,IAAe,yBAAyB,GAAxC,MAAe,yBAA0B,SAAQ,UAAU;IAU1D,iBAAiB;QAChB,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IACrD,CAAC;IAED,QAAQ,CAAC,CAAkC;QAC1C,wHAAwH;QACxH,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,EAAE,YAAY,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAG,IAAI,CAAC,WAAW,EAAiB,CAAC,IAAkB,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAS,CAAC;QACvK,MAAM,CAAC,kBAAkB,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC,MAAqB,EAAE,CAAC,CAAC;QAC3E,CAAC,CAAC,eAAe,EAAE,CAAC;IACrB,CAAC;IAED,IAAI,iBAAiB;QACpB,OAAO;YACN,WAAW,EAAE,gBAAgB,EAAE,EAAE,YAAY,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;SACzF,CAAC;IACH,CAAC;IAED,IAAI,QAAQ;QACX,OAAO,IAAI,CAAC,aAAa,EAAE,CAAC,OAAO,CAAC;IACrC,CAAC;IAED,IAAI,KAAK;QACR,OAAO,IAAI,CAAC,aAAa,EAAE,CAAC,IAAI,CAAC;IAClC,CAAC;CACD,CAAA;AAlCc,yBAAyB;IAlBvC,WAAW,CAAC,OAAO,EAAE;QACrB,OAAO,EAAE,KAAK;KACd,CAAC;IAEF;;;;;;;;OAQG;;IACF,aAAa,CAAC;QACd,QAAQ,EAAE,WAAW;QACrB,MAAM,EAAE,+BAA+B;QACvC,QAAQ,EAAE,iCAAiC;KAC3C,CAAC;GACa,yBAAyB,CAkCvC;AAED,eAAe,yBAAyB,CAAC","sourcesContent":["import UI5Element from \"@ui5/webcomponents-base/dist/UI5Element.js\";\nimport { customElement, eventStrict } from \"@ui5/webcomponents-base/dist/decorators.js\";\nimport jsxRenderer from \"@ui5/webcomponents-base/dist/renderer/JsxRenderer.js\";\nimport TableHeaderCellActionBaseTemplate from \"./TableHeaderCellActionBaseTemplate.js\";\nimport TableHeaderCellActionBaseStyles from \"./generated/themes/TableHeaderCellActionBase.css.js\";\nimport getActiveElement from \"@ui5/webcomponents-base/dist/util/getActiveElement.js\";\nimport type { UI5CustomEvent } from \"@ui5/webcomponents-base\";\nimport type TableCell from \"./TableCell.js\";\nimport type Button from \"./Button.js\";\n\n/**\n * Fired when a header cell action is clicked.\n *\n * @param {HTMLElement} targetRef The reference to the element that triggered the event\n * @public\n * @since 2.8.0\n */\ntype TableHeaderCellActionClickEventDetail = {\n\ttargetRef: HTMLElement;\n};\n\n/**\n * Fired when a header cell action is clicked.\n *\n * @param {HTMLElement} targetRef The reference to the element that triggered the event\n * @public\n * @since 2.8.0\n */\n@eventStrict(\"click\", {\n\tbubbles: false,\n})\n\n/**\n * @class\n * The `TableHeaderCellActionBase` class serves as a foundation for table header cell actions.\n * @constructor\n * @abstract\n * @extends UI5Element\n * @since 2.8.0\n * @public\n */\n@customElement({\n\trenderer: jsxRenderer,\n\tstyles: TableHeaderCellActionBaseStyles,\n\ttemplate: TableHeaderCellActionBaseTemplate,\n})\nabstract class TableHeaderCellActionBase extends UI5Element {\n\teventDetails!: {\n\t\t\"click\": TableHeaderCellActionClickEventDetail,\n\t}\n\n\tabstract getRenderInfo(): {\n\t\ticon: string;\n\t\ttooltip: string;\n\t};\n\n\tonBeforeRendering() {\n\t\tthis.toggleAttribute(\"_popin\", !this.parentElement);\n\t}\n\n\t_onClick(e: UI5CustomEvent<Button, \"click\">) {\n\t\t// Retrieve the real action (if parent is header cell this instance is fine, otherwise retrieve it from the header cell)\n\t\tconst action = this.parentElement?.hasAttribute(\"ui5-table-header-cell\") ? this : ((this.getRootNode() as ShadowRoot).host as TableCell)._headerCell.action[0] as this;\n\t\taction.fireDecoratorEvent(\"click\", { targetRef: e.target as HTMLElement });\n\t\te.stopPropagation();\n\t}\n\n\tget accessibilityInfo() {\n\t\treturn {\n\t\t\tdescription: getActiveElement()?.hasAttribute(\"ui5-table-cell-base\") ? this._tooltip : \"\",\n\t\t};\n\t}\n\n\tget _tooltip() {\n\t\treturn this.getRenderInfo().tooltip;\n\t}\n\n\tget _icon() {\n\t\treturn this.getRenderInfo().icon;\n\t}\n}\n\nexport default TableHeaderCellActionBase;\n\nexport type {\n\tTableHeaderCellActionClickEventDetail,\n};\n"]}
|
|
@@ -7,17 +7,21 @@ import ClearAll from "@ui5/webcomponents-icons/dist/clear-all.js";
|
|
|
7
7
|
import IconDesign from "./types/IconDesign.js";
|
|
8
8
|
export default function TableHeaderRowTemplate(ariaColIndex = 1) {
|
|
9
9
|
return (_jsxs(_Fragment, { children: [this._hasSelector &&
|
|
10
|
-
_jsx(TableHeaderCell, { id: "selection-cell", "aria-selected": this._isSelected, "aria-label": this._i18nSelection, "aria-description": this._selectionCellAriaDescription, "aria-colindex": ariaColIndex++, "data-ui5-table-cell-fixed": true, "data-ui5-table-
|
|
10
|
+
_jsx(TableHeaderCell, { id: "selection-cell", "aria-selected": this._isSelected, "aria-label": this._i18nSelection, "aria-description": this._selectionCellAriaDescription, "aria-colindex": ariaColIndex++, "data-ui5-table-selection-cell": true, "data-ui5-table-cell-fixed": true, "data-ui5-table-acc-text": "", children: !this._isMultiSelect ?
|
|
11
11
|
_jsx(_Fragment, {})
|
|
12
12
|
:
|
|
13
13
|
this._shouldRenderClearAll ?
|
|
14
14
|
_jsx(Icon, { name: ClearAll, mode: IconMode.Decorative, showTooltip: true, accessibleName: this._i18nDeselectAllRows, design: this._hasSelectedRows ? IconDesign.Default : IconDesign.NonInteractive, onClick: this._onSelectionChange })
|
|
15
15
|
:
|
|
16
|
-
_jsx(CheckBox, { id: "selection-component", tabindex: -1, checked: this._isSelected, onChange: this._onSelectionChange, accessibleName: this._i18nRowSelector, title: this._isSelected ? this._i18nDeselectAllRows : this._i18nSelectAllRows }) }), this.
|
|
16
|
+
_jsx(CheckBox, { id: "selection-component", tabindex: -1, checked: this._isSelected, onChange: this._onSelectionChange, accessibleName: this._i18nRowSelector, title: this._isSelected ? this._i18nDeselectAllRows : this._i18nSelectAllRows }) }), this.cells.flatMap(cell => {
|
|
17
|
+
if (cell._popin) {
|
|
18
|
+
cell.ariaColIndex = null;
|
|
19
|
+
return [];
|
|
20
|
+
}
|
|
17
21
|
cell.ariaColIndex = `${ariaColIndex++}`;
|
|
18
|
-
return _jsx("slot", { name: cell._individualSlot }
|
|
22
|
+
return [_jsx("slot", { name: cell._individualSlot })];
|
|
19
23
|
}), this._rowActionCount > 0 &&
|
|
20
|
-
_jsx(TableHeaderCell, { id: "actions-cell", "aria-colindex": ariaColIndex++, "
|
|
21
|
-
_jsx(TableHeaderCell, { id: "popin-cell", "aria-label": this._i18nRowPopin, "data-excluded-from-navigation": true })] }));
|
|
24
|
+
_jsx(TableHeaderCell, { id: "actions-cell", "aria-colindex": ariaColIndex++, children: _jsx("div", { id: "actions-cell-content", children: this._i18nRowActions }) }), this._popinCells.length > 0 &&
|
|
25
|
+
_jsx(TableHeaderCell, { id: "popin-cell", "aria-colindex": ariaColIndex++, "aria-label": this._i18nRowPopin, "data-excluded-from-navigation": true })] }));
|
|
22
26
|
}
|
|
23
27
|
//# sourceMappingURL=TableHeaderRowTemplate.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TableHeaderRowTemplate.js","sourceRoot":"","sources":["../src/TableHeaderRowTemplate.tsx"],"names":[],"mappings":";AAAA,OAAO,QAAQ,MAAM,eAAe,CAAC;AACrC,OAAO,eAAe,MAAM,sBAAsB,CAAC;AACnD,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,QAAQ,MAAM,qBAAqB,CAAC;AAC3C,OAAO,QAAQ,MAAM,4CAA4C,CAAC;AAClE,OAAO,UAAU,MAAM,uBAAuB,CAAC;AAG/C,MAAM,CAAC,OAAO,UAAU,sBAAsB,CAAuB,eAAuB,CAAC;IAC5F,OAAO,CACN,8BACG,IAAI,CAAC,YAAY;gBAClB,KAAC,eAAe,IAAC,EAAE,EAAC,gBAAgB,mBACpB,IAAI,CAAC,WAAW,gBACnB,IAAI,CAAC,cAAc,sBACb,IAAI,CAAC,6BAA6B,mBACrC,YAAY,EAAE,
|
|
1
|
+
{"version":3,"file":"TableHeaderRowTemplate.js","sourceRoot":"","sources":["../src/TableHeaderRowTemplate.tsx"],"names":[],"mappings":";AAAA,OAAO,QAAQ,MAAM,eAAe,CAAC;AACrC,OAAO,eAAe,MAAM,sBAAsB,CAAC;AACnD,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,QAAQ,MAAM,qBAAqB,CAAC;AAC3C,OAAO,QAAQ,MAAM,4CAA4C,CAAC;AAClE,OAAO,UAAU,MAAM,uBAAuB,CAAC;AAG/C,MAAM,CAAC,OAAO,UAAU,sBAAsB,CAAuB,eAAuB,CAAC;IAC5F,OAAO,CACN,8BACG,IAAI,CAAC,YAAY;gBAClB,KAAC,eAAe,IAAC,EAAE,EAAC,gBAAgB,mBACpB,IAAI,CAAC,WAAW,gBACnB,IAAI,CAAC,cAAc,sBACb,IAAI,CAAC,6BAA6B,mBACrC,YAAY,EAAE,uGAGL,EAAE,YAExB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;wBACvB,mBAAK;wBACL,CAAC;4BACD,IAAI,CAAC,qBAAqB,CAAC,CAAC;gCAC3B,KAAC,IAAI,IACJ,IAAI,EAAE,QAAQ,EACd,IAAI,EAAE,QAAQ,CAAC,UAAU,EACzB,WAAW,EAAE,IAAI,EACjB,cAAc,EAAE,IAAI,CAAC,oBAAoB,EACzC,MAAM,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,cAAc,EAC9E,OAAO,EAAE,IAAI,CAAC,kBAAkB,GACzB;gCACR,CAAC;oCACD,KAAC,QAAQ,IAAC,EAAE,EAAC,qBAAqB,EACjC,QAAQ,EAAE,CAAC,CAAC,EACZ,OAAO,EAAE,IAAI,CAAC,WAAW,EACzB,QAAQ,EAAE,IAAI,CAAC,kBAAkB,EACjC,cAAc,EAAE,IAAI,CAAC,gBAAgB,EACrC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB,GAClE,GAEG,EAGjB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;gBAC3B,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;oBACjB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;oBACzB,OAAO,EAAE,CAAC;gBACX,CAAC;gBACD,IAAI,CAAC,YAAY,GAAG,GAAG,YAAY,EAAE,EAAE,CAAC;gBACxC,OAAO,CAAC,eAAM,IAAI,EAAE,IAAI,CAAC,eAAe,GAAS,CAAC,CAAC;YACpD,CAAC,CAAC,EAEA,IAAI,CAAC,eAAe,GAAG,CAAC;gBACzB,KAAC,eAAe,IAAC,EAAE,EAAC,cAAc,mBAClB,YAAY,EAAE,YAE7B,cAAK,EAAE,EAAC,sBAAsB,YAAE,IAAI,CAAC,eAAe,GAAO,GAC1C,EAGjB,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC;gBAC5B,KAAC,eAAe,IAAC,EAAE,EAAC,YAAY,mBAChB,YAAY,EAAE,gBACjB,IAAI,CAAC,aAAa,0CAEZ,IAElB,CACH,CAAC;AACH,CAAC","sourcesContent":["import CheckBox from \"./CheckBox.js\";\nimport TableHeaderCell from \"./TableHeaderCell.js\";\nimport Icon from \"./Icon.js\";\nimport IconMode from \"./types/IconMode.js\";\nimport ClearAll from \"@ui5/webcomponents-icons/dist/clear-all.js\";\nimport IconDesign from \"./types/IconDesign.js\";\nimport type TableHeaderRow from \"./TableHeaderRow.js\";\n\nexport default function TableHeaderRowTemplate(this: TableHeaderRow, ariaColIndex: number = 1) {\n\treturn (\n\t\t<>\n\t\t\t{ this._hasSelector &&\n\t\t\t\t<TableHeaderCell id=\"selection-cell\"\n\t\t\t\t\taria-selected={this._isSelected}\n\t\t\t\t\taria-label={this._i18nSelection}\n\t\t\t\t\taria-description={this._selectionCellAriaDescription}\n\t\t\t\t\taria-colindex={ariaColIndex++}\n\t\t\t\t\tdata-ui5-table-selection-cell\n\t\t\t\t\tdata-ui5-table-cell-fixed\n\t\t\t\t\tdata-ui5-table-acc-text=\"\"\n\t\t\t\t>\n\t\t\t\t\t{ !this._isMultiSelect ?\n\t\t\t\t\t\t<></>\n\t\t\t\t\t\t:\n\t\t\t\t\t\tthis._shouldRenderClearAll ?\n\t\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\t\tname={ClearAll}\n\t\t\t\t\t\t\t\tmode={IconMode.Decorative}\n\t\t\t\t\t\t\t\tshowTooltip={true}\n\t\t\t\t\t\t\t\taccessibleName={this._i18nDeselectAllRows}\n\t\t\t\t\t\t\t\tdesign={this._hasSelectedRows ? IconDesign.Default : IconDesign.NonInteractive}\n\t\t\t\t\t\t\t\tonClick={this._onSelectionChange}\n\t\t\t\t\t\t\t></Icon>\n\t\t\t\t\t\t\t:\n\t\t\t\t\t\t\t<CheckBox id=\"selection-component\"\n\t\t\t\t\t\t\t\ttabindex={-1}\n\t\t\t\t\t\t\t\tchecked={this._isSelected}\n\t\t\t\t\t\t\t\tonChange={this._onSelectionChange}\n\t\t\t\t\t\t\t\taccessibleName={this._i18nRowSelector}\n\t\t\t\t\t\t\t\ttitle={this._isSelected ? this._i18nDeselectAllRows : this._i18nSelectAllRows}\n\t\t\t\t\t\t\t></CheckBox>\n\t\t\t\t\t}\n\t\t\t\t</TableHeaderCell>\n\t\t\t}\n\n\t\t\t{ this.cells.flatMap(cell => {\n\t\t\t\tif (cell._popin) {\n\t\t\t\t\tcell.ariaColIndex = null;\n\t\t\t\t\treturn [];\n\t\t\t\t}\n\t\t\t\tcell.ariaColIndex = `${ariaColIndex++}`;\n\t\t\t\treturn [<slot name={cell._individualSlot}></slot>];\n\t\t\t})}\n\n\t\t\t{ this._rowActionCount > 0 &&\n\t\t\t\t<TableHeaderCell id=\"actions-cell\"\n\t\t\t\t\taria-colindex={ariaColIndex++}\n\t\t\t\t>\n\t\t\t\t\t<div id=\"actions-cell-content\">{this._i18nRowActions}</div>\n\t\t\t\t</TableHeaderCell>\n\t\t\t}\n\n\t\t\t{ this._popinCells.length > 0 &&\n\t\t\t\t<TableHeaderCell id=\"popin-cell\"\n\t\t\t\t\taria-colindex={ariaColIndex++}\n\t\t\t\t\taria-label={this._i18nRowPopin}\n\t\t\t\t\tdata-excluded-from-navigation\n\t\t\t\t></TableHeaderCell>\n\t\t\t}\n\t\t</>\n\t);\n}\n"]}
|
package/dist/TableNavigation.js
CHANGED
|
@@ -17,7 +17,6 @@ class TableNavigation extends TableExtension {
|
|
|
17
17
|
this._tabPosition = 0;
|
|
18
18
|
this._table = table;
|
|
19
19
|
this._gridWalker = new GridWalker();
|
|
20
|
-
this._gridWalker.setGrid(this._getNavigationItemsOfGrid());
|
|
21
20
|
this._onKeyDownCaptureBound = this._onKeyDownCapture.bind(this);
|
|
22
21
|
// we register the keydown handler on the table element at the capturing phase since the
|
|
23
22
|
// busy indicator stops the propagation of the keydown event and it never reaches the table
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TableNavigation.js","sourceRoot":"","sources":["../src/TableNavigation.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n\tisUp, isUpShift, isDown, isDownShift, isLeft, isRight, isPageUp, isPageDown, isHome, isEnd, isTabNext, isTabPrevious,\n} from \"@ui5/webcomponents-base/dist/Keys.js\";\nimport isElementHidden from \"@ui5/webcomponents-base/dist/util/isElementHidden.js\";\nimport getActiveElement from \"@ui5/webcomponents-base/dist/util/getActiveElement.js\";\nimport { getTabbableElements } from \"@ui5/webcomponents-base/dist/util/TabbableElements.js\";\nimport TableExtension from \"./TableExtension.js\";\nimport GridWalker from \"./GridWalker.js\";\nimport type TableRowBase from \"./TableRowBase.js\";\nimport type Table from \"./Table.js\";\n\n/**\n * Handles the keyboard navigation for the ui5-table.\n *\n * @class\n * @private\n */\nclass TableNavigation extends TableExtension {\n\t_table: Table;\n\t_gridWalker: GridWalker;\n\t_colPosition: number = 0;\n\t_tabPosition: number = 0;\n\t_ignoreFocusIn?: boolean;\n\t_lastFocusedItem?: HTMLElement;\n\t_onKeyDownCaptureBound: (e: KeyboardEvent) => void;\n\n\tconstructor(table: Table) {\n\t\tsuper();\n\t\tthis._table = table;\n\t\tthis._gridWalker = new GridWalker();\n\t\tthis._gridWalker.setGrid(this._getNavigationItemsOfGrid());\n\t\tthis._onKeyDownCaptureBound = this._onKeyDownCapture.bind(this);\n\n\t\t// we register the keydown handler on the table element at the capturing phase since the\n\t\t// busy indicator stops the propagation of the keydown event and it never reaches the table\n\t\tthis._table.addEventListener(\"keydown\", this._onKeyDownCaptureBound, { capture: true });\n\t}\n\n\t_getNavigationItemsOfRow(row: TableRowBase) {\n\t\treturn [row, ...row.shadowRoot!.children].map(element => {\n\t\t\treturn element.localName === \"slot\" ? (element as HTMLSlotElement).assignedElements() : element;\n\t\t}).flat().filter(element => {\n\t\t\treturn element.localName.includes(\"ui5-table-\") && !element.hasAttribute(\"data-excluded-from-navigation\");\n\t\t}) as HTMLElement[];\n\t}\n\n\t_getNavigationItemsOfGrid() {\n\t\tconst items = [];\n\t\tif (this._table.headerRow[0] && !isElementHidden(this._table.headerRow[0])) {\n\t\t\titems.push(this._getNavigationItemsOfRow(this._table.headerRow[0]));\n\t\t\tthis._gridWalker.setFirstRowPos(1);\n\t\t} else {\n\t\t\tthis._gridWalker.setFirstRowPos(0);\n\t\t}\n\n\t\tif (this._table.rows.length) {\n\t\t\tthis._table.rows.forEach(row => items.push(this._getNavigationItemsOfRow(row)));\n\t\t} else if (this._table._noDataRow) {\n\t\t\titems.push(this._getNavigationItemsOfRow(this._table._noDataRow));\n\t\t}\n\n\t\tif (this._table.rows.length > 0 && this._table._getGrowing()?.hasGrowingComponent()) {\n\t\t\titems.push([this._table._getGrowing()?.getFocusDomRef()]);\n\t\t\tthis._gridWalker.setLastRowPos(-1);\n\t\t} else {\n\t\t\tthis._gridWalker.setLastRowPos(0);\n\t\t}\n\n\t\tif (!this._gridWalker.getCurrent()) {\n\t\t\tthis._gridWalker.setRowPos(this._gridWalker.getFirstRowPos());\n\t\t}\n\n\t\tthis._gridWalker.setGrid(items);\n\t\treturn items;\n\t}\n\n\t_setCurrentItem(e: Event, callback?: (currentItem: HTMLElement) => void) {\n\t\tconst navigationItems = this._getNavigationItemsOfGrid().flat();\n\t\tconst navigationItem = e.composedPath().find(target => navigationItems.includes(target as HTMLElement)) as HTMLElement;\n\t\tif (navigationItem) {\n\t\t\tthis._gridWalker.setCurrent(navigationItem);\n\t\t\tcallback && callback(navigationItem);\n\t\t}\n\t}\n\n\t_isEventFromCurrentItem(e: Event) {\n\t\treturn e.composedPath()[0] === this._gridWalker.getCurrent();\n\t}\n\n\t_focusElement(element: HTMLElement, ignoreFocusIn: boolean = true) {\n\t\tif (!element || element === getActiveElement()) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst navigationItems = this._getNavigationItemsOfGrid().flat();\n\t\tif (navigationItems.includes(this._lastFocusedItem)) {\n\t\t\tthis._lastFocusedItem?.removeAttribute(\"tabindex\");\n\t\t}\n\n\t\tif (navigationItems.includes(element)) {\n\t\t\telement.setAttribute(\"tabindex\", \"-1\");\n\t\t\tthis._lastFocusedItem = element;\n\t\t}\n\n\t\tthis._ignoreFocusIn = ignoreFocusIn;\n\t\telement.focus({ preventScroll: element === this._table._beforeElement || element === this._table._afterElement });\n\t\tif (element instanceof HTMLInputElement) {\n\t\t\telement.select();\n\t\t}\n\t\tthis._ignoreFocusIn = false;\n\t}\n\n\t_focusCurrentItem() {\n\t\tthis._focusElement(this._gridWalker.getCurrent() as HTMLElement);\n\t}\n\n\t_handleEnter(e: KeyboardEvent, eventOrigin: HTMLElement) {\n\t\tif (eventOrigin.hasAttribute(\"ui5-table-cell-base\")) {\n\t\t\tthis._handleF2(e, eventOrigin);\n\t\t}\n\t}\n\n\t_handleF2(e: KeyboardEvent, eventOrigin: HTMLElement) {\n\t\tif (this._isEventFromCurrentItem(e)) {\n\t\t\tconst firstTabbable = getTabbableElements(eventOrigin)[0];\n\t\t\tthis._focusElement(firstTabbable);\n\t\t} else {\n\t\t\tthis._setCurrentItem(e, () => this._focusCurrentItem());\n\t\t}\n\t\te.preventDefault();\n\t}\n\n\t_handleF7(e: KeyboardEvent, eventOrigin: HTMLElement) {\n\t\tif (eventOrigin.hasAttribute(\"ui5-table-row-base\")) {\n\t\t\tthis._gridWalker.setColPos(this._colPosition);\n\t\t\tlet elementToFocus = this._gridWalker.getCurrent() as HTMLElement;\n\t\t\tif (this._tabPosition > -1) {\n\t\t\t\tconst tabbables = getTabbableElements(elementToFocus);\n\t\t\t\telementToFocus = tabbables[this._tabPosition] || tabbables.pop() || elementToFocus;\n\t\t\t}\n\t\t\tthis._focusElement(elementToFocus);\n\t\t} else {\n\t\t\tthis._setCurrentItem(e, currentItem => {\n\t\t\t\tthis._tabPosition = getTabbableElements(currentItem).indexOf(eventOrigin);\n\t\t\t\tthis._colPosition = this._gridWalker.getColPos();\n\t\t\t\tthis._gridWalker.setColPos(0);\n\t\t\t\tthis._focusCurrentItem();\n\t\t\t});\n\t\t}\n\t\te.preventDefault();\n\t}\n\n\t_handleTab(e: KeyboardEvent, eventOrigin: HTMLElement) {\n\t\tif (this._isEventFromCurrentItem(e)) {\n\t\t\tthis._focusElement(e.shiftKey ? this._table._beforeElement : this._table._afterElement);\n\t\t} else {\n\t\t\tconst tabbables = getTabbableElements(this._table._tableElement);\n\t\t\tif (e.shiftKey && tabbables[0] === eventOrigin) {\n\t\t\t\tthis._focusElement(this._table._beforeElement);\n\t\t\t}\n\t\t\tif (!e.shiftKey && tabbables[tabbables.length - 1] === eventOrigin) {\n\t\t\t\tthis._focusElement(this._table._afterElement);\n\t\t\t}\n\t\t}\n\t}\n\n\t_handleArrowUpDown(e: KeyboardEvent, eventOrigin: HTMLElement, direction: -1 | 1) {\n\t\tif (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey || e.defaultPrevented || this._isEventFromCurrentItem(e) || /^(input|textarea)$/i.test(eventOrigin.nodeName)) {\n\t\t\treturn false;\n\t\t}\n\n\t\tthis._setCurrentItem(e, currentItem => {\n\t\t\tthis._tabPosition = getTabbableElements(currentItem).indexOf(eventOrigin);\n\t\t\tthis._gridWalker.setRowPos(this._gridWalker.getRowPos() + direction);\n\t\t\tlet elementToFocus = this._gridWalker.getCurrent() as HTMLElement;\n\t\t\tconst tabbables = getTabbableElements(elementToFocus);\n\t\t\telementToFocus = tabbables[this._tabPosition] || tabbables.pop() || elementToFocus;\n\t\t\tthis._focusElement(elementToFocus);\n\t\t\te.preventDefault();\n\t\t});\n\t\treturn false;\n\t}\n\n\t_handleArrowUp(e: KeyboardEvent, eventOrigin: HTMLElement) {\n\t\treturn this._handleArrowUpDown(e, eventOrigin, -1);\n\t}\n\n\t_handleArrowDown(e: KeyboardEvent, eventOrigin: HTMLElement) {\n\t\treturn this._handleArrowUpDown(e, eventOrigin, 1);\n\t}\n\n\t_onkeydown(e: KeyboardEvent, eventOrigin: HTMLElement) {\n\t\tif (e.defaultPrevented) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (!this._isEventFromCurrentItem(e) && this._getNavigationItemsOfGrid().flat().includes(eventOrigin)) {\n\t\t\tthis._gridWalker.setCurrent(eventOrigin);\n\t\t}\n\n\t\tthis._table._getVirtualizer()?._onKeyDown(e);\n\t\tif (e.defaultPrevented) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst keydownHandlerName = `_handle${e.code}` as keyof TableNavigation;\n\t\tconst keydownHandler = this[keydownHandlerName] as (e: KeyboardEvent, eventOrigin: HTMLElement) => void | false;\n\t\tif (typeof keydownHandler === \"function\" && keydownHandler.call(this, e, eventOrigin) === undefined) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (!this._isEventFromCurrentItem(e)) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (isLeft(e)) {\n\t\t\tthis._gridWalker[this._table.effectiveDir === \"rtl\" ? \"right\" : \"left\"]();\n\t\t} else if (isRight(e)) {\n\t\t\tthis._gridWalker[this._table.effectiveDir === \"rtl\" ? \"left\" : \"right\"]();\n\t\t} else if (isUp(e) || isUpShift(e)) {\n\t\t\tthis._gridWalker.up();\n\t\t} else if (isDown(e) || isDownShift(e)) {\n\t\t\tthis._gridWalker.down();\n\t\t} else if (isHome(e)) {\n\t\t\tthis._gridWalker.home();\n\t\t} else if (isEnd(e)) {\n\t\t\tthis._gridWalker.end();\n\t\t} else if (isPageUp(e)) {\n\t\t\tthis._gridWalker.pageup();\n\t\t} else if (isPageDown(e)) {\n\t\t\tthis._gridWalker.pagedown();\n\t\t} else {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._focusCurrentItem();\n\t\te.preventDefault();\n\t}\n\n\t_onclick(e: PointerEvent) {\n\t\tconst navigationItems = this._getNavigationItemsOfGrid();\n\t\tconst flatNavigationItems = navigationItems.flat();\n\t\tlet navigationItem = null;\n\t\tlet focusableElement = null;\n\n\t\t// eslint-disable-next-line no-restricted-syntax\n\t\tfor (const target of e.composedPath() as any[]) {\n\t\t\tif (target.nodeType === Node.ELEMENT_NODE) {\n\t\t\t\tconst element = target as HTMLElement;\n\t\t\t\tif (element.matches(\":focus-within\")) {\n\t\t\t\t\tfocusableElement = element;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif (flatNavigationItems.includes(element)) {\n\t\t\t\t\tnavigationItem = element;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (focusableElement && focusableElement !== this._lastFocusedItem) {\n\t\t\tthis._lastFocusedItem?.removeAttribute(\"tabindex\");\n\t\t\tthis._lastFocusedItem = undefined;\n\t\t} else if (navigationItem) {\n\t\t\tthis._gridWalker.setCurrent(navigationItem);\n\t\t\tthis._gridWalker.setColPos(0);\n\t\t\tthis._focusCurrentItem();\n\t\t}\n\t}\n\n\t_onfocusin(e: FocusEvent, eventOrigin: HTMLElement) {\n\t\tif (this._ignoreFocusIn) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (eventOrigin === this._table._beforeElement || eventOrigin === this._table._afterElement) {\n\t\t\tif (this._table.loading) {\n\t\t\t\tthis._table._loadingElement.focus();\n\t\t\t} else {\n\t\t\t\tthis._getNavigationItemsOfGrid();\n\t\t\t\tthis._gridWalker.setColPos(0);\n\t\t\t\tthis._focusCurrentItem();\n\t\t\t}\n\t\t} else if (eventOrigin !== this._lastFocusedItem && this._getNavigationItemsOfGrid().flat().includes(eventOrigin)) {\n\t\t\tthis._lastFocusedItem = eventOrigin;\n\t\t}\n\t}\n\n\t_onKeyDownCapture(e: KeyboardEvent) {\n\t\tif (!this._table.loading) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (isTabNext(e) || isTabPrevious(e)) {\n\t\t\tthis._focusElement(e.shiftKey ? this._table._beforeElement : this._table._afterElement);\n\t\t\te.stopImmediatePropagation();\n\t\t}\n\t}\n}\n\nexport default TableNavigation;\n"]}
|
|
1
|
+
{"version":3,"file":"TableNavigation.js","sourceRoot":"","sources":["../src/TableNavigation.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n\tisUp, isUpShift, isDown, isDownShift, isLeft, isRight, isPageUp, isPageDown, isHome, isEnd, isTabNext, isTabPrevious,\n} from \"@ui5/webcomponents-base/dist/Keys.js\";\nimport isElementHidden from \"@ui5/webcomponents-base/dist/util/isElementHidden.js\";\nimport getActiveElement from \"@ui5/webcomponents-base/dist/util/getActiveElement.js\";\nimport { getTabbableElements } from \"@ui5/webcomponents-base/dist/util/TabbableElements.js\";\nimport TableExtension from \"./TableExtension.js\";\nimport GridWalker from \"./GridWalker.js\";\nimport type TableRowBase from \"./TableRowBase.js\";\nimport type Table from \"./Table.js\";\n\n/**\n * Handles the keyboard navigation for the ui5-table.\n *\n * @class\n * @private\n */\nclass TableNavigation extends TableExtension {\n\t_table: Table;\n\t_gridWalker: GridWalker;\n\t_colPosition: number = 0;\n\t_tabPosition: number = 0;\n\t_ignoreFocusIn?: boolean;\n\t_lastFocusedItem?: HTMLElement;\n\t_onKeyDownCaptureBound: (e: KeyboardEvent) => void;\n\n\tconstructor(table: Table) {\n\t\tsuper();\n\t\tthis._table = table;\n\t\tthis._gridWalker = new GridWalker();\n\t\tthis._onKeyDownCaptureBound = this._onKeyDownCapture.bind(this);\n\n\t\t// we register the keydown handler on the table element at the capturing phase since the\n\t\t// busy indicator stops the propagation of the keydown event and it never reaches the table\n\t\tthis._table.addEventListener(\"keydown\", this._onKeyDownCaptureBound, { capture: true });\n\t}\n\n\t_getNavigationItemsOfRow(row: TableRowBase) {\n\t\treturn [row, ...row.shadowRoot!.children].map(element => {\n\t\t\treturn element.localName === \"slot\" ? (element as HTMLSlotElement).assignedElements() : element;\n\t\t}).flat().filter(element => {\n\t\t\treturn element.localName.includes(\"ui5-table-\") && !element.hasAttribute(\"data-excluded-from-navigation\");\n\t\t}) as HTMLElement[];\n\t}\n\n\t_getNavigationItemsOfGrid() {\n\t\tconst items = [];\n\t\tif (this._table.headerRow[0] && !isElementHidden(this._table.headerRow[0])) {\n\t\t\titems.push(this._getNavigationItemsOfRow(this._table.headerRow[0]));\n\t\t\tthis._gridWalker.setFirstRowPos(1);\n\t\t} else {\n\t\t\tthis._gridWalker.setFirstRowPos(0);\n\t\t}\n\n\t\tif (this._table.rows.length) {\n\t\t\tthis._table.rows.forEach(row => items.push(this._getNavigationItemsOfRow(row)));\n\t\t} else if (this._table._noDataRow) {\n\t\t\titems.push(this._getNavigationItemsOfRow(this._table._noDataRow));\n\t\t}\n\n\t\tif (this._table.rows.length > 0 && this._table._getGrowing()?.hasGrowingComponent()) {\n\t\t\titems.push([this._table._getGrowing()?.getFocusDomRef()]);\n\t\t\tthis._gridWalker.setLastRowPos(-1);\n\t\t} else {\n\t\t\tthis._gridWalker.setLastRowPos(0);\n\t\t}\n\n\t\tif (!this._gridWalker.getCurrent()) {\n\t\t\tthis._gridWalker.setRowPos(this._gridWalker.getFirstRowPos());\n\t\t}\n\n\t\tthis._gridWalker.setGrid(items);\n\t\treturn items;\n\t}\n\n\t_setCurrentItem(e: Event, callback?: (currentItem: HTMLElement) => void) {\n\t\tconst navigationItems = this._getNavigationItemsOfGrid().flat();\n\t\tconst navigationItem = e.composedPath().find(target => navigationItems.includes(target as HTMLElement)) as HTMLElement;\n\t\tif (navigationItem) {\n\t\t\tthis._gridWalker.setCurrent(navigationItem);\n\t\t\tcallback && callback(navigationItem);\n\t\t}\n\t}\n\n\t_isEventFromCurrentItem(e: Event) {\n\t\treturn e.composedPath()[0] === this._gridWalker.getCurrent();\n\t}\n\n\t_focusElement(element: HTMLElement, ignoreFocusIn: boolean = true) {\n\t\tif (!element || element === getActiveElement()) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst navigationItems = this._getNavigationItemsOfGrid().flat();\n\t\tif (navigationItems.includes(this._lastFocusedItem)) {\n\t\t\tthis._lastFocusedItem?.removeAttribute(\"tabindex\");\n\t\t}\n\n\t\tif (navigationItems.includes(element)) {\n\t\t\telement.setAttribute(\"tabindex\", \"-1\");\n\t\t\tthis._lastFocusedItem = element;\n\t\t}\n\n\t\tthis._ignoreFocusIn = ignoreFocusIn;\n\t\telement.focus({ preventScroll: element === this._table._beforeElement || element === this._table._afterElement });\n\t\tif (element instanceof HTMLInputElement) {\n\t\t\telement.select();\n\t\t}\n\t\tthis._ignoreFocusIn = false;\n\t}\n\n\t_focusCurrentItem() {\n\t\tthis._focusElement(this._gridWalker.getCurrent() as HTMLElement);\n\t}\n\n\t_handleEnter(e: KeyboardEvent, eventOrigin: HTMLElement) {\n\t\tif (eventOrigin.hasAttribute(\"ui5-table-cell-base\")) {\n\t\t\tthis._handleF2(e, eventOrigin);\n\t\t}\n\t}\n\n\t_handleF2(e: KeyboardEvent, eventOrigin: HTMLElement) {\n\t\tif (this._isEventFromCurrentItem(e)) {\n\t\t\tconst firstTabbable = getTabbableElements(eventOrigin)[0];\n\t\t\tthis._focusElement(firstTabbable);\n\t\t} else {\n\t\t\tthis._setCurrentItem(e, () => this._focusCurrentItem());\n\t\t}\n\t\te.preventDefault();\n\t}\n\n\t_handleF7(e: KeyboardEvent, eventOrigin: HTMLElement) {\n\t\tif (eventOrigin.hasAttribute(\"ui5-table-row-base\")) {\n\t\t\tthis._gridWalker.setColPos(this._colPosition);\n\t\t\tlet elementToFocus = this._gridWalker.getCurrent() as HTMLElement;\n\t\t\tif (this._tabPosition > -1) {\n\t\t\t\tconst tabbables = getTabbableElements(elementToFocus);\n\t\t\t\telementToFocus = tabbables[this._tabPosition] || tabbables.pop() || elementToFocus;\n\t\t\t}\n\t\t\tthis._focusElement(elementToFocus);\n\t\t} else {\n\t\t\tthis._setCurrentItem(e, currentItem => {\n\t\t\t\tthis._tabPosition = getTabbableElements(currentItem).indexOf(eventOrigin);\n\t\t\t\tthis._colPosition = this._gridWalker.getColPos();\n\t\t\t\tthis._gridWalker.setColPos(0);\n\t\t\t\tthis._focusCurrentItem();\n\t\t\t});\n\t\t}\n\t\te.preventDefault();\n\t}\n\n\t_handleTab(e: KeyboardEvent, eventOrigin: HTMLElement) {\n\t\tif (this._isEventFromCurrentItem(e)) {\n\t\t\tthis._focusElement(e.shiftKey ? this._table._beforeElement : this._table._afterElement);\n\t\t} else {\n\t\t\tconst tabbables = getTabbableElements(this._table._tableElement);\n\t\t\tif (e.shiftKey && tabbables[0] === eventOrigin) {\n\t\t\t\tthis._focusElement(this._table._beforeElement);\n\t\t\t}\n\t\t\tif (!e.shiftKey && tabbables[tabbables.length - 1] === eventOrigin) {\n\t\t\t\tthis._focusElement(this._table._afterElement);\n\t\t\t}\n\t\t}\n\t}\n\n\t_handleArrowUpDown(e: KeyboardEvent, eventOrigin: HTMLElement, direction: -1 | 1) {\n\t\tif (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey || e.defaultPrevented || this._isEventFromCurrentItem(e) || /^(input|textarea)$/i.test(eventOrigin.nodeName)) {\n\t\t\treturn false;\n\t\t}\n\n\t\tthis._setCurrentItem(e, currentItem => {\n\t\t\tthis._tabPosition = getTabbableElements(currentItem).indexOf(eventOrigin);\n\t\t\tthis._gridWalker.setRowPos(this._gridWalker.getRowPos() + direction);\n\t\t\tlet elementToFocus = this._gridWalker.getCurrent() as HTMLElement;\n\t\t\tconst tabbables = getTabbableElements(elementToFocus);\n\t\t\telementToFocus = tabbables[this._tabPosition] || tabbables.pop() || elementToFocus;\n\t\t\tthis._focusElement(elementToFocus);\n\t\t\te.preventDefault();\n\t\t});\n\t\treturn false;\n\t}\n\n\t_handleArrowUp(e: KeyboardEvent, eventOrigin: HTMLElement) {\n\t\treturn this._handleArrowUpDown(e, eventOrigin, -1);\n\t}\n\n\t_handleArrowDown(e: KeyboardEvent, eventOrigin: HTMLElement) {\n\t\treturn this._handleArrowUpDown(e, eventOrigin, 1);\n\t}\n\n\t_onkeydown(e: KeyboardEvent, eventOrigin: HTMLElement) {\n\t\tif (e.defaultPrevented) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (!this._isEventFromCurrentItem(e) && this._getNavigationItemsOfGrid().flat().includes(eventOrigin)) {\n\t\t\tthis._gridWalker.setCurrent(eventOrigin);\n\t\t}\n\n\t\tthis._table._getVirtualizer()?._onKeyDown(e);\n\t\tif (e.defaultPrevented) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst keydownHandlerName = `_handle${e.code}` as keyof TableNavigation;\n\t\tconst keydownHandler = this[keydownHandlerName] as (e: KeyboardEvent, eventOrigin: HTMLElement) => void | false;\n\t\tif (typeof keydownHandler === \"function\" && keydownHandler.call(this, e, eventOrigin) === undefined) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (!this._isEventFromCurrentItem(e)) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (isLeft(e)) {\n\t\t\tthis._gridWalker[this._table.effectiveDir === \"rtl\" ? \"right\" : \"left\"]();\n\t\t} else if (isRight(e)) {\n\t\t\tthis._gridWalker[this._table.effectiveDir === \"rtl\" ? \"left\" : \"right\"]();\n\t\t} else if (isUp(e) || isUpShift(e)) {\n\t\t\tthis._gridWalker.up();\n\t\t} else if (isDown(e) || isDownShift(e)) {\n\t\t\tthis._gridWalker.down();\n\t\t} else if (isHome(e)) {\n\t\t\tthis._gridWalker.home();\n\t\t} else if (isEnd(e)) {\n\t\t\tthis._gridWalker.end();\n\t\t} else if (isPageUp(e)) {\n\t\t\tthis._gridWalker.pageup();\n\t\t} else if (isPageDown(e)) {\n\t\t\tthis._gridWalker.pagedown();\n\t\t} else {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._focusCurrentItem();\n\t\te.preventDefault();\n\t}\n\n\t_onclick(e: PointerEvent) {\n\t\tconst navigationItems = this._getNavigationItemsOfGrid();\n\t\tconst flatNavigationItems = navigationItems.flat();\n\t\tlet navigationItem = null;\n\t\tlet focusableElement = null;\n\n\t\t// eslint-disable-next-line no-restricted-syntax\n\t\tfor (const target of e.composedPath() as any[]) {\n\t\t\tif (target.nodeType === Node.ELEMENT_NODE) {\n\t\t\t\tconst element = target as HTMLElement;\n\t\t\t\tif (element.matches(\":focus-within\")) {\n\t\t\t\t\tfocusableElement = element;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif (flatNavigationItems.includes(element)) {\n\t\t\t\t\tnavigationItem = element;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (focusableElement && focusableElement !== this._lastFocusedItem) {\n\t\t\tthis._lastFocusedItem?.removeAttribute(\"tabindex\");\n\t\t\tthis._lastFocusedItem = undefined;\n\t\t} else if (navigationItem) {\n\t\t\tthis._gridWalker.setCurrent(navigationItem);\n\t\t\tthis._gridWalker.setColPos(0);\n\t\t\tthis._focusCurrentItem();\n\t\t}\n\t}\n\n\t_onfocusin(e: FocusEvent, eventOrigin: HTMLElement) {\n\t\tif (this._ignoreFocusIn) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (eventOrigin === this._table._beforeElement || eventOrigin === this._table._afterElement) {\n\t\t\tif (this._table.loading) {\n\t\t\t\tthis._table._loadingElement.focus();\n\t\t\t} else {\n\t\t\t\tthis._getNavigationItemsOfGrid();\n\t\t\t\tthis._gridWalker.setColPos(0);\n\t\t\t\tthis._focusCurrentItem();\n\t\t\t}\n\t\t} else if (eventOrigin !== this._lastFocusedItem && this._getNavigationItemsOfGrid().flat().includes(eventOrigin)) {\n\t\t\tthis._lastFocusedItem = eventOrigin;\n\t\t}\n\t}\n\n\t_onKeyDownCapture(e: KeyboardEvent) {\n\t\tif (!this._table.loading) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (isTabNext(e) || isTabPrevious(e)) {\n\t\t\tthis._focusElement(e.shiftKey ? this._table._beforeElement : this._table._afterElement);\n\t\t\te.stopImmediatePropagation();\n\t\t}\n\t}\n}\n\nexport default TableNavigation;\n"]}
|
package/dist/TableRow.d.ts
CHANGED
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
import type { UI5CustomEvent } from "@ui5/webcomponents-base";
|
|
2
1
|
import TableRowBase from "./TableRowBase.js";
|
|
3
2
|
import type TableCell from "./TableCell.js";
|
|
4
3
|
import type TableRowActionBase from "./TableRowActionBase.js";
|
|
5
4
|
import type Button from "./Button.js";
|
|
6
|
-
import "@ui5/webcomponents-
|
|
5
|
+
import type { UI5CustomEvent } from "@ui5/webcomponents-base";
|
|
7
6
|
/**
|
|
8
7
|
* @class
|
|
9
8
|
*
|
|
@@ -77,6 +76,8 @@ declare class TableRow extends TableRowBase {
|
|
|
77
76
|
* @public
|
|
78
77
|
*/
|
|
79
78
|
movable: boolean;
|
|
79
|
+
_popinCell?: TableCell;
|
|
80
|
+
_actionsCell?: TableCell;
|
|
80
81
|
onBeforeRendering(): void;
|
|
81
82
|
focus(focusOptions?: FocusOptions | undefined): Promise<void>;
|
|
82
83
|
_onkeydown(e: KeyboardEvent, eventOrigin: HTMLElement): void;
|
|
@@ -84,11 +85,14 @@ declare class TableRow extends TableRowBase {
|
|
|
84
85
|
_onkeyup(): void;
|
|
85
86
|
_onfocusout(): void;
|
|
86
87
|
_onOverflowButtonClick(e: UI5CustomEvent<Button, "click">): void;
|
|
87
|
-
get _isInteractive(): boolean
|
|
88
|
+
get _isInteractive(): boolean;
|
|
89
|
+
get _isNavigable(): boolean;
|
|
88
90
|
get _rowIndex(): number;
|
|
89
91
|
get _hasOverflowActions(): boolean;
|
|
90
92
|
get _flexibleActions(): TableRowActionBase[];
|
|
91
93
|
get _fixedActions(): TableRowActionBase[];
|
|
92
94
|
get _overflowActions(): TableRowActionBase[];
|
|
95
|
+
get _availableActionsCount(): number;
|
|
96
|
+
get _actionCellAccText(): string | undefined;
|
|
93
97
|
}
|
|
94
98
|
export default TableRow;
|