@ui5/webcomponents 2.11.0 → 2.12.0-rc.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 +25 -0
- package/dist/.tsbuildinfo +1 -1
- package/dist/Avatar.d.ts +12 -0
- package/dist/Avatar.js +68 -1
- package/dist/Avatar.js.map +1 -1
- package/dist/AvatarTemplate.js +4 -4
- package/dist/AvatarTemplate.js.map +1 -1
- package/dist/BusyIndicator.d.ts +1 -0
- package/dist/BusyIndicator.js +4 -0
- package/dist/BusyIndicator.js.map +1 -1
- package/dist/BusyIndicatorTemplate.js +4 -1
- package/dist/BusyIndicatorTemplate.js.map +1 -1
- package/dist/Button.d.ts +3 -0
- package/dist/Button.js +22 -0
- package/dist/Button.js.map +1 -1
- package/dist/DynamicDateRange.d.ts +36 -7
- package/dist/DynamicDateRange.js +45 -42
- package/dist/DynamicDateRange.js.map +1 -1
- package/dist/InputTemplate.js +1 -1
- package/dist/InputTemplate.js.map +1 -1
- package/dist/Popup.d.ts +24 -0
- package/dist/Popup.js +29 -1
- package/dist/Popup.js.map +1 -1
- package/dist/PopupTemplate.js +2 -1
- package/dist/PopupTemplate.js.map +1 -1
- package/dist/RangeSlider.d.ts +4 -9
- package/dist/RangeSlider.js +50 -133
- package/dist/RangeSlider.js.map +1 -1
- package/dist/RangeSliderTemplate.js +2 -10
- package/dist/RangeSliderTemplate.js.map +1 -1
- package/dist/ResponsivePopoverTemplate.js +1 -1
- package/dist/ResponsivePopoverTemplate.js.map +1 -1
- package/dist/SelectTemplate.js +10 -4
- package/dist/SelectTemplate.js.map +1 -1
- package/dist/Slider.d.ts +2 -6
- package/dist/Slider.js +9 -43
- package/dist/Slider.js.map +1 -1
- package/dist/SliderBase.d.ts +4 -6
- package/dist/SliderBase.js +14 -31
- package/dist/SliderBase.js.map +1 -1
- package/dist/SliderBaseTemplate.js +1 -1
- package/dist/SliderBaseTemplate.js.map +1 -1
- package/dist/SliderTemplate.js +2 -6
- package/dist/SliderTemplate.js.map +1 -1
- package/dist/SliderTooltip.d.ts +47 -0
- package/dist/SliderTooltip.js +158 -0
- package/dist/SliderTooltip.js.map +1 -0
- package/dist/SliderTooltipTemplate.d.ts +2 -0
- package/dist/SliderTooltipTemplate.js +8 -0
- package/dist/SliderTooltipTemplate.js.map +1 -0
- package/dist/ToggleButton.d.ts +1 -1
- package/dist/ToggleButton.js +21 -2
- package/dist/ToggleButton.js.map +1 -1
- package/dist/Tokenizer.js +0 -6
- package/dist/Tokenizer.js.map +1 -1
- package/dist/css/themes/Avatar.css +1 -1
- package/dist/css/themes/AvatarGroup.css +1 -1
- package/dist/css/themes/Bar.css +1 -1
- package/dist/css/themes/Breadcrumbs.css +1 -1
- package/dist/css/themes/BusyIndicator.css +1 -1
- package/dist/css/themes/Button.css +1 -1
- package/dist/css/themes/ButtonBadge.css +1 -1
- package/dist/css/themes/Calendar.css +1 -1
- package/dist/css/themes/CalendarHeader.css +1 -1
- package/dist/css/themes/CalendarLegend.css +1 -1
- package/dist/css/themes/CalendarLegendItem.css +1 -1
- package/dist/css/themes/Card.css +1 -1
- package/dist/css/themes/CardHeader.css +1 -1
- package/dist/css/themes/Carousel.css +1 -1
- package/dist/css/themes/CheckBox.css +1 -1
- package/dist/css/themes/ColorPalette.css +1 -1
- package/dist/css/themes/ColorPaletteItem.css +1 -1
- package/dist/css/themes/ColorPalettePopover.css +1 -1
- package/dist/css/themes/ColorPicker.css +1 -1
- package/dist/css/themes/ComboBox.css +1 -1
- package/dist/css/themes/ComboBoxItem.css +1 -1
- package/dist/css/themes/DatePicker.css +1 -1
- package/dist/css/themes/DateTimePickerPopover.css +1 -1
- package/dist/css/themes/DayPicker.css +1 -1
- package/dist/css/themes/Dialog.css +1 -1
- package/dist/css/themes/DynamicDateRange.css +1 -1
- package/dist/css/themes/DynamicDateRangePopover.css +1 -1
- package/dist/css/themes/FileUploader.css +1 -1
- package/dist/css/themes/Form.css +1 -1
- package/dist/css/themes/FormItem.css +1 -1
- package/dist/css/themes/FormItemSpan.css +1 -1
- package/dist/css/themes/GrowingButton.css +1 -1
- package/dist/css/themes/Icon.css +1 -1
- package/dist/css/themes/Input.css +1 -1
- package/dist/css/themes/InputIcon.css +1 -1
- package/dist/css/themes/InputSharedStyles.css +1 -1
- package/dist/css/themes/Link.css +1 -1
- package/dist/css/themes/List.css +1 -1
- package/dist/css/themes/ListItem.css +1 -1
- package/dist/css/themes/ListItemBase.css +1 -1
- package/dist/css/themes/ListItemCustom.css +1 -1
- package/dist/css/themes/ListItemGroup.css +1 -1
- package/dist/css/themes/ListItemGroupHeader.css +1 -1
- package/dist/css/themes/ListItemIcon.css +1 -1
- package/dist/css/themes/Menu.css +1 -1
- package/dist/css/themes/MenuItem.css +1 -1
- package/dist/css/themes/MessageStrip.css +1 -1
- package/dist/css/themes/MonthPicker.css +1 -1
- package/dist/css/themes/MultiComboBox.css +1 -1
- package/dist/css/themes/MultiComboBoxItem.css +1 -1
- package/dist/css/themes/MultiComboBoxPopover.css +1 -1
- package/dist/css/themes/MultiInput.css +1 -1
- package/dist/css/themes/OptionBase.css +1 -1
- package/dist/css/themes/Panel.css +1 -1
- package/dist/css/themes/Popover.css +1 -1
- package/dist/css/themes/PopupsCommon.css +1 -1
- package/dist/css/themes/ProgressIndicator.css +1 -1
- package/dist/css/themes/RadioButton.css +1 -1
- package/dist/css/themes/RangeSlider.css +1 -1
- package/dist/css/themes/RatingIndicator.css +1 -1
- package/dist/css/themes/ResponsivePopover.css +1 -1
- package/dist/css/themes/ResponsivePopoverCommon.css +1 -1
- package/dist/css/themes/SegmentedButton.css +1 -1
- package/dist/css/themes/SegmentedButtonItem.css +1 -1
- package/dist/css/themes/Select.css +1 -1
- package/dist/css/themes/SliderBase.css +1 -1
- package/dist/css/themes/SliderTooltip.css +1 -0
- 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/TableCellBase.css +1 -1
- package/dist/css/themes/TableHeaderRow.css +1 -1
- package/dist/css/themes/TableRow.css +1 -1
- package/dist/css/themes/TableRowActionBase.css +1 -1
- package/dist/css/themes/TableRowBase.css +1 -1
- package/dist/css/themes/Tag.css +1 -1
- package/dist/css/themes/Text.css +1 -1
- package/dist/css/themes/TextArea.css +1 -1
- package/dist/css/themes/TimePicker.css +1 -1
- package/dist/css/themes/Toast.css +1 -1
- package/dist/css/themes/ToggleButton.css +1 -1
- package/dist/css/themes/Token.css +1 -1
- package/dist/css/themes/Tokenizer.css +1 -1
- package/dist/css/themes/TokenizerPopover.css +1 -1
- package/dist/css/themes/Toolbar.css +1 -1
- package/dist/css/themes/ToolbarPopover.css +1 -1
- package/dist/css/themes/ToolbarSeparator.css +1 -1
- package/dist/css/themes/TreeItem.css +1 -1
- package/dist/css/themes/ValueStateMessage.css +1 -1
- package/dist/css/themes/YearPicker.css +1 -1
- package/dist/css/themes/YearRangePicker.css +1 -1
- package/dist/css/themes/sap_fiori_3/parameters-bundle.css +1 -1
- package/dist/css/themes/sap_fiori_3_dark/parameters-bundle.css +1 -1
- package/dist/css/themes/sap_fiori_3_hcb/parameters-bundle.css +1 -1
- package/dist/css/themes/sap_fiori_3_hcw/parameters-bundle.css +1 -1
- package/dist/css/themes/sap_horizon/parameters-bundle.css +1 -1
- package/dist/css/themes/sap_horizon_dark/parameters-bundle.css +1 -1
- package/dist/css/themes/sap_horizon_hcb/parameters-bundle.css +1 -1
- package/dist/css/themes/sap_horizon_hcw/parameters-bundle.css +1 -1
- package/dist/custom-elements-internal.json +259 -6
- package/dist/custom-elements.json +243 -0
- package/dist/dynamic-date-range-options/DateRange.d.ts +1 -1
- package/dist/dynamic-date-range-options/DateRange.js +1 -1
- package/dist/dynamic-date-range-options/DateRange.js.map +1 -1
- package/dist/dynamic-date-range-options/SingleDate.d.ts +1 -1
- package/dist/dynamic-date-range-options/SingleDate.js +1 -1
- package/dist/dynamic-date-range-options/SingleDate.js.map +1 -1
- package/dist/dynamic-date-range-options/Today.d.ts +1 -1
- package/dist/dynamic-date-range-options/Today.js +1 -1
- package/dist/dynamic-date-range-options/Today.js.map +1 -1
- package/dist/dynamic-date-range-options/Tomorrow.d.ts +1 -1
- package/dist/dynamic-date-range-options/Tomorrow.js +1 -1
- package/dist/dynamic-date-range-options/Tomorrow.js.map +1 -1
- package/dist/dynamic-date-range-options/Yesterday.d.ts +1 -1
- package/dist/dynamic-date-range-options/Yesterday.js +1 -1
- package/dist/dynamic-date-range-options/Yesterday.js.map +1 -1
- package/dist/generated/assets/i18n/messagebundle_en.json +1 -1
- package/dist/generated/assets/i18n/messagebundle_en_US_saprigi.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.js +1 -1
- package/dist/generated/i18n/i18n-defaults.js.map +1 -1
- package/dist/generated/themes/Avatar.css.d.ts +1 -1
- package/dist/generated/themes/Avatar.css.js +1 -1
- package/dist/generated/themes/Avatar.css.js.map +1 -1
- package/dist/generated/themes/AvatarGroup.css.d.ts +1 -1
- package/dist/generated/themes/AvatarGroup.css.js +1 -1
- package/dist/generated/themes/AvatarGroup.css.js.map +1 -1
- package/dist/generated/themes/Bar.css.d.ts +1 -1
- package/dist/generated/themes/Bar.css.js +1 -1
- package/dist/generated/themes/Bar.css.js.map +1 -1
- package/dist/generated/themes/Breadcrumbs.css.d.ts +1 -1
- package/dist/generated/themes/Breadcrumbs.css.js +1 -1
- package/dist/generated/themes/Breadcrumbs.css.js.map +1 -1
- package/dist/generated/themes/BusyIndicator.css.d.ts +1 -1
- package/dist/generated/themes/BusyIndicator.css.js +1 -1
- package/dist/generated/themes/BusyIndicator.css.js.map +1 -1
- package/dist/generated/themes/Button.css.d.ts +1 -1
- package/dist/generated/themes/Button.css.js +1 -1
- package/dist/generated/themes/Button.css.js.map +1 -1
- package/dist/generated/themes/ButtonBadge.css.d.ts +1 -1
- package/dist/generated/themes/ButtonBadge.css.js +1 -1
- package/dist/generated/themes/ButtonBadge.css.js.map +1 -1
- package/dist/generated/themes/Calendar.css.d.ts +1 -1
- package/dist/generated/themes/Calendar.css.js +1 -1
- package/dist/generated/themes/Calendar.css.js.map +1 -1
- package/dist/generated/themes/CalendarHeader.css.d.ts +1 -1
- package/dist/generated/themes/CalendarHeader.css.js +1 -1
- package/dist/generated/themes/CalendarHeader.css.js.map +1 -1
- package/dist/generated/themes/CalendarLegend.css.d.ts +1 -1
- package/dist/generated/themes/CalendarLegend.css.js +1 -1
- package/dist/generated/themes/CalendarLegend.css.js.map +1 -1
- package/dist/generated/themes/CalendarLegendItem.css.d.ts +1 -1
- package/dist/generated/themes/CalendarLegendItem.css.js +1 -1
- package/dist/generated/themes/CalendarLegendItem.css.js.map +1 -1
- package/dist/generated/themes/Card.css.d.ts +1 -1
- package/dist/generated/themes/Card.css.js +1 -1
- package/dist/generated/themes/Card.css.js.map +1 -1
- package/dist/generated/themes/CardHeader.css.d.ts +1 -1
- package/dist/generated/themes/CardHeader.css.js +1 -1
- package/dist/generated/themes/CardHeader.css.js.map +1 -1
- package/dist/generated/themes/Carousel.css.d.ts +1 -1
- package/dist/generated/themes/Carousel.css.js +1 -1
- package/dist/generated/themes/Carousel.css.js.map +1 -1
- package/dist/generated/themes/CheckBox.css.d.ts +1 -1
- package/dist/generated/themes/CheckBox.css.js +1 -1
- package/dist/generated/themes/CheckBox.css.js.map +1 -1
- package/dist/generated/themes/ColorPalette.css.d.ts +1 -1
- package/dist/generated/themes/ColorPalette.css.js +1 -1
- package/dist/generated/themes/ColorPalette.css.js.map +1 -1
- package/dist/generated/themes/ColorPaletteItem.css.d.ts +1 -1
- package/dist/generated/themes/ColorPaletteItem.css.js +1 -1
- package/dist/generated/themes/ColorPaletteItem.css.js.map +1 -1
- package/dist/generated/themes/ColorPalettePopover.css.d.ts +1 -1
- package/dist/generated/themes/ColorPalettePopover.css.js +1 -1
- package/dist/generated/themes/ColorPalettePopover.css.js.map +1 -1
- package/dist/generated/themes/ColorPicker.css.d.ts +1 -1
- package/dist/generated/themes/ColorPicker.css.js +1 -1
- package/dist/generated/themes/ColorPicker.css.js.map +1 -1
- package/dist/generated/themes/ComboBox.css.d.ts +1 -1
- package/dist/generated/themes/ComboBox.css.js +1 -1
- package/dist/generated/themes/ComboBox.css.js.map +1 -1
- package/dist/generated/themes/ComboBoxItem.css.d.ts +1 -1
- package/dist/generated/themes/ComboBoxItem.css.js +1 -1
- package/dist/generated/themes/ComboBoxItem.css.js.map +1 -1
- package/dist/generated/themes/DatePicker.css.d.ts +1 -1
- package/dist/generated/themes/DatePicker.css.js +1 -1
- package/dist/generated/themes/DatePicker.css.js.map +1 -1
- package/dist/generated/themes/DateTimePickerPopover.css.d.ts +1 -1
- package/dist/generated/themes/DateTimePickerPopover.css.js +1 -1
- package/dist/generated/themes/DateTimePickerPopover.css.js.map +1 -1
- package/dist/generated/themes/DayPicker.css.d.ts +1 -1
- package/dist/generated/themes/DayPicker.css.js +1 -1
- package/dist/generated/themes/DayPicker.css.js.map +1 -1
- package/dist/generated/themes/Dialog.css.d.ts +1 -1
- package/dist/generated/themes/Dialog.css.js +1 -1
- package/dist/generated/themes/Dialog.css.js.map +1 -1
- package/dist/generated/themes/DynamicDateRange.css.d.ts +1 -1
- package/dist/generated/themes/DynamicDateRange.css.js +1 -1
- package/dist/generated/themes/DynamicDateRange.css.js.map +1 -1
- package/dist/generated/themes/DynamicDateRangePopover.css.d.ts +1 -1
- package/dist/generated/themes/DynamicDateRangePopover.css.js +1 -1
- package/dist/generated/themes/DynamicDateRangePopover.css.js.map +1 -1
- package/dist/generated/themes/FileUploader.css.d.ts +1 -1
- package/dist/generated/themes/FileUploader.css.js +1 -1
- package/dist/generated/themes/FileUploader.css.js.map +1 -1
- package/dist/generated/themes/Form.css.d.ts +1 -1
- package/dist/generated/themes/Form.css.js +1 -1
- package/dist/generated/themes/Form.css.js.map +1 -1
- package/dist/generated/themes/FormItem.css.d.ts +1 -1
- package/dist/generated/themes/FormItem.css.js +1 -1
- package/dist/generated/themes/FormItem.css.js.map +1 -1
- package/dist/generated/themes/FormItemSpan.css.d.ts +1 -1
- package/dist/generated/themes/FormItemSpan.css.js +1 -1
- package/dist/generated/themes/FormItemSpan.css.js.map +1 -1
- package/dist/generated/themes/GrowingButton.css.d.ts +1 -1
- package/dist/generated/themes/GrowingButton.css.js +1 -1
- package/dist/generated/themes/GrowingButton.css.js.map +1 -1
- package/dist/generated/themes/Icon.css.d.ts +1 -1
- package/dist/generated/themes/Icon.css.js +1 -1
- package/dist/generated/themes/Icon.css.js.map +1 -1
- package/dist/generated/themes/Input.css.d.ts +1 -1
- package/dist/generated/themes/Input.css.js +1 -1
- package/dist/generated/themes/Input.css.js.map +1 -1
- package/dist/generated/themes/InputIcon.css.d.ts +1 -1
- package/dist/generated/themes/InputIcon.css.js +1 -1
- package/dist/generated/themes/InputIcon.css.js.map +1 -1
- package/dist/generated/themes/InputSharedStyles.css.d.ts +1 -1
- package/dist/generated/themes/InputSharedStyles.css.js +1 -1
- package/dist/generated/themes/InputSharedStyles.css.js.map +1 -1
- package/dist/generated/themes/Link.css.d.ts +1 -1
- package/dist/generated/themes/Link.css.js +1 -1
- package/dist/generated/themes/Link.css.js.map +1 -1
- package/dist/generated/themes/List.css.d.ts +1 -1
- package/dist/generated/themes/List.css.js +1 -1
- package/dist/generated/themes/List.css.js.map +1 -1
- package/dist/generated/themes/ListItem.css.d.ts +1 -1
- package/dist/generated/themes/ListItem.css.js +1 -1
- package/dist/generated/themes/ListItem.css.js.map +1 -1
- package/dist/generated/themes/ListItemBase.css.d.ts +1 -1
- package/dist/generated/themes/ListItemBase.css.js +1 -1
- package/dist/generated/themes/ListItemBase.css.js.map +1 -1
- package/dist/generated/themes/ListItemCustom.css.d.ts +1 -1
- package/dist/generated/themes/ListItemCustom.css.js +1 -1
- package/dist/generated/themes/ListItemCustom.css.js.map +1 -1
- package/dist/generated/themes/ListItemGroup.css.d.ts +1 -1
- package/dist/generated/themes/ListItemGroup.css.js +1 -1
- package/dist/generated/themes/ListItemGroup.css.js.map +1 -1
- package/dist/generated/themes/ListItemGroupHeader.css.d.ts +1 -1
- package/dist/generated/themes/ListItemGroupHeader.css.js +1 -1
- package/dist/generated/themes/ListItemGroupHeader.css.js.map +1 -1
- package/dist/generated/themes/ListItemIcon.css.d.ts +1 -1
- package/dist/generated/themes/ListItemIcon.css.js +1 -1
- package/dist/generated/themes/ListItemIcon.css.js.map +1 -1
- package/dist/generated/themes/Menu.css.d.ts +1 -1
- package/dist/generated/themes/Menu.css.js +1 -1
- package/dist/generated/themes/Menu.css.js.map +1 -1
- package/dist/generated/themes/MenuItem.css.d.ts +1 -1
- package/dist/generated/themes/MenuItem.css.js +1 -1
- package/dist/generated/themes/MenuItem.css.js.map +1 -1
- package/dist/generated/themes/MessageStrip.css.d.ts +1 -1
- package/dist/generated/themes/MessageStrip.css.js +1 -1
- package/dist/generated/themes/MessageStrip.css.js.map +1 -1
- package/dist/generated/themes/MonthPicker.css.d.ts +1 -1
- package/dist/generated/themes/MonthPicker.css.js +1 -1
- package/dist/generated/themes/MonthPicker.css.js.map +1 -1
- package/dist/generated/themes/MultiComboBox.css.d.ts +1 -1
- package/dist/generated/themes/MultiComboBox.css.js +1 -1
- package/dist/generated/themes/MultiComboBox.css.js.map +1 -1
- package/dist/generated/themes/MultiComboBoxItem.css.d.ts +1 -1
- package/dist/generated/themes/MultiComboBoxItem.css.js +1 -1
- package/dist/generated/themes/MultiComboBoxItem.css.js.map +1 -1
- package/dist/generated/themes/MultiComboBoxPopover.css.d.ts +1 -1
- package/dist/generated/themes/MultiComboBoxPopover.css.js +1 -1
- package/dist/generated/themes/MultiComboBoxPopover.css.js.map +1 -1
- package/dist/generated/themes/MultiInput.css.d.ts +1 -1
- package/dist/generated/themes/MultiInput.css.js +1 -1
- package/dist/generated/themes/MultiInput.css.js.map +1 -1
- package/dist/generated/themes/OptionBase.css.d.ts +1 -1
- package/dist/generated/themes/OptionBase.css.js +1 -1
- package/dist/generated/themes/OptionBase.css.js.map +1 -1
- package/dist/generated/themes/Panel.css.d.ts +1 -1
- package/dist/generated/themes/Panel.css.js +1 -1
- package/dist/generated/themes/Panel.css.js.map +1 -1
- package/dist/generated/themes/Popover.css.d.ts +1 -1
- package/dist/generated/themes/Popover.css.js +1 -1
- package/dist/generated/themes/Popover.css.js.map +1 -1
- package/dist/generated/themes/PopupsCommon.css.d.ts +1 -1
- package/dist/generated/themes/PopupsCommon.css.js +1 -1
- package/dist/generated/themes/PopupsCommon.css.js.map +1 -1
- package/dist/generated/themes/ProgressIndicator.css.d.ts +1 -1
- package/dist/generated/themes/ProgressIndicator.css.js +1 -1
- package/dist/generated/themes/ProgressIndicator.css.js.map +1 -1
- package/dist/generated/themes/RadioButton.css.d.ts +1 -1
- package/dist/generated/themes/RadioButton.css.js +1 -1
- package/dist/generated/themes/RadioButton.css.js.map +1 -1
- package/dist/generated/themes/RangeSlider.css.d.ts +1 -1
- package/dist/generated/themes/RangeSlider.css.js +1 -1
- package/dist/generated/themes/RangeSlider.css.js.map +1 -1
- package/dist/generated/themes/RatingIndicator.css.d.ts +1 -1
- package/dist/generated/themes/RatingIndicator.css.js +1 -1
- package/dist/generated/themes/RatingIndicator.css.js.map +1 -1
- package/dist/generated/themes/ResponsivePopover.css.d.ts +1 -1
- package/dist/generated/themes/ResponsivePopover.css.js +1 -1
- package/dist/generated/themes/ResponsivePopover.css.js.map +1 -1
- package/dist/generated/themes/ResponsivePopoverCommon.css.d.ts +1 -1
- package/dist/generated/themes/ResponsivePopoverCommon.css.js +1 -1
- package/dist/generated/themes/ResponsivePopoverCommon.css.js.map +1 -1
- package/dist/generated/themes/SegmentedButton.css.d.ts +1 -1
- package/dist/generated/themes/SegmentedButton.css.js +1 -1
- package/dist/generated/themes/SegmentedButton.css.js.map +1 -1
- package/dist/generated/themes/SegmentedButtonItem.css.d.ts +1 -1
- package/dist/generated/themes/SegmentedButtonItem.css.js +1 -1
- package/dist/generated/themes/SegmentedButtonItem.css.js.map +1 -1
- package/dist/generated/themes/Select.css.d.ts +1 -1
- package/dist/generated/themes/Select.css.js +1 -1
- package/dist/generated/themes/Select.css.js.map +1 -1
- package/dist/generated/themes/SliderBase.css.d.ts +1 -1
- package/dist/generated/themes/SliderBase.css.js +1 -1
- package/dist/generated/themes/SliderBase.css.js.map +1 -1
- package/dist/generated/themes/SliderTooltip.css.d.ts +2 -0
- package/dist/generated/themes/SliderTooltip.css.js +8 -0
- package/dist/generated/themes/SliderTooltip.css.js.map +1 -0
- 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/TableCellBase.css.d.ts +1 -1
- package/dist/generated/themes/TableCellBase.css.js +1 -1
- package/dist/generated/themes/TableCellBase.css.js.map +1 -1
- package/dist/generated/themes/TableHeaderRow.css.d.ts +1 -1
- package/dist/generated/themes/TableHeaderRow.css.js +1 -1
- package/dist/generated/themes/TableHeaderRow.css.js.map +1 -1
- package/dist/generated/themes/TableRow.css.d.ts +1 -1
- package/dist/generated/themes/TableRow.css.js +1 -1
- package/dist/generated/themes/TableRow.css.js.map +1 -1
- package/dist/generated/themes/TableRowActionBase.css.d.ts +1 -1
- package/dist/generated/themes/TableRowActionBase.css.js +1 -1
- package/dist/generated/themes/TableRowActionBase.css.js.map +1 -1
- package/dist/generated/themes/TableRowBase.css.d.ts +1 -1
- package/dist/generated/themes/TableRowBase.css.js +1 -1
- package/dist/generated/themes/TableRowBase.css.js.map +1 -1
- package/dist/generated/themes/Tag.css.d.ts +1 -1
- package/dist/generated/themes/Tag.css.js +1 -1
- package/dist/generated/themes/Tag.css.js.map +1 -1
- package/dist/generated/themes/Text.css.d.ts +1 -1
- package/dist/generated/themes/Text.css.js +1 -1
- package/dist/generated/themes/Text.css.js.map +1 -1
- package/dist/generated/themes/TextArea.css.d.ts +1 -1
- package/dist/generated/themes/TextArea.css.js +1 -1
- package/dist/generated/themes/TextArea.css.js.map +1 -1
- package/dist/generated/themes/TimePicker.css.d.ts +1 -1
- package/dist/generated/themes/TimePicker.css.js +1 -1
- package/dist/generated/themes/TimePicker.css.js.map +1 -1
- package/dist/generated/themes/Toast.css.d.ts +1 -1
- package/dist/generated/themes/Toast.css.js +1 -1
- package/dist/generated/themes/Toast.css.js.map +1 -1
- package/dist/generated/themes/ToggleButton.css.d.ts +1 -1
- package/dist/generated/themes/ToggleButton.css.js +1 -1
- package/dist/generated/themes/ToggleButton.css.js.map +1 -1
- package/dist/generated/themes/Token.css.d.ts +1 -1
- package/dist/generated/themes/Token.css.js +1 -1
- package/dist/generated/themes/Token.css.js.map +1 -1
- package/dist/generated/themes/Tokenizer.css.d.ts +1 -1
- package/dist/generated/themes/Tokenizer.css.js +1 -1
- package/dist/generated/themes/Tokenizer.css.js.map +1 -1
- package/dist/generated/themes/TokenizerPopover.css.d.ts +1 -1
- package/dist/generated/themes/TokenizerPopover.css.js +1 -1
- package/dist/generated/themes/TokenizerPopover.css.js.map +1 -1
- package/dist/generated/themes/Toolbar.css.d.ts +1 -1
- package/dist/generated/themes/Toolbar.css.js +1 -1
- package/dist/generated/themes/Toolbar.css.js.map +1 -1
- package/dist/generated/themes/ToolbarPopover.css.d.ts +1 -1
- package/dist/generated/themes/ToolbarPopover.css.js +1 -1
- package/dist/generated/themes/ToolbarPopover.css.js.map +1 -1
- package/dist/generated/themes/ToolbarSeparator.css.d.ts +1 -1
- package/dist/generated/themes/ToolbarSeparator.css.js +1 -1
- package/dist/generated/themes/ToolbarSeparator.css.js.map +1 -1
- package/dist/generated/themes/TreeItem.css.d.ts +1 -1
- package/dist/generated/themes/TreeItem.css.js +1 -1
- package/dist/generated/themes/TreeItem.css.js.map +1 -1
- package/dist/generated/themes/ValueStateMessage.css.d.ts +1 -1
- package/dist/generated/themes/ValueStateMessage.css.js +1 -1
- package/dist/generated/themes/ValueStateMessage.css.js.map +1 -1
- package/dist/generated/themes/YearPicker.css.d.ts +1 -1
- package/dist/generated/themes/YearPicker.css.js +1 -1
- package/dist/generated/themes/YearPicker.css.js.map +1 -1
- package/dist/generated/themes/YearRangePicker.css.d.ts +1 -1
- package/dist/generated/themes/YearRangePicker.css.js +1 -1
- package/dist/generated/themes/YearRangePicker.css.js.map +1 -1
- package/dist/generated/themes/sap_fiori_3/parameters-bundle.css.d.ts +1 -1
- package/dist/generated/themes/sap_fiori_3/parameters-bundle.css.js +1 -1
- package/dist/generated/themes/sap_fiori_3/parameters-bundle.css.js.map +1 -1
- package/dist/generated/themes/sap_fiori_3_dark/parameters-bundle.css.d.ts +1 -1
- package/dist/generated/themes/sap_fiori_3_dark/parameters-bundle.css.js +1 -1
- package/dist/generated/themes/sap_fiori_3_dark/parameters-bundle.css.js.map +1 -1
- package/dist/generated/themes/sap_fiori_3_hcb/parameters-bundle.css.d.ts +1 -1
- package/dist/generated/themes/sap_fiori_3_hcb/parameters-bundle.css.js +1 -1
- package/dist/generated/themes/sap_fiori_3_hcb/parameters-bundle.css.js.map +1 -1
- package/dist/generated/themes/sap_fiori_3_hcw/parameters-bundle.css.d.ts +1 -1
- package/dist/generated/themes/sap_fiori_3_hcw/parameters-bundle.css.js +1 -1
- package/dist/generated/themes/sap_fiori_3_hcw/parameters-bundle.css.js.map +1 -1
- package/dist/generated/themes/sap_horizon/parameters-bundle.css.d.ts +1 -1
- package/dist/generated/themes/sap_horizon/parameters-bundle.css.js +1 -1
- package/dist/generated/themes/sap_horizon/parameters-bundle.css.js.map +1 -1
- package/dist/generated/themes/sap_horizon_dark/parameters-bundle.css.d.ts +1 -1
- package/dist/generated/themes/sap_horizon_dark/parameters-bundle.css.js +1 -1
- package/dist/generated/themes/sap_horizon_dark/parameters-bundle.css.js.map +1 -1
- package/dist/generated/themes/sap_horizon_hcb/parameters-bundle.css.d.ts +1 -1
- package/dist/generated/themes/sap_horizon_hcb/parameters-bundle.css.js +1 -1
- package/dist/generated/themes/sap_horizon_hcb/parameters-bundle.css.js.map +1 -1
- package/dist/generated/themes/sap_horizon_hcw/parameters-bundle.css.d.ts +1 -1
- package/dist/generated/themes/sap_horizon_hcw/parameters-bundle.css.js +1 -1
- package/dist/generated/themes/sap_horizon_hcw/parameters-bundle.css.js.map +1 -1
- package/dist/vscode.html-custom-data.json +41 -1
- package/dist/web-types.json +62 -2
- package/package.json +10 -10
- package/src/AvatarTemplate.tsx +16 -10
- package/src/BusyIndicatorTemplate.tsx +4 -1
- package/src/InputTemplate.tsx +1 -1
- package/src/PopupTemplate.tsx +5 -0
- package/src/RangeSliderTemplate.tsx +25 -39
- package/src/ResponsivePopoverTemplate.tsx +2 -0
- package/src/SelectTemplate.tsx +23 -13
- package/src/SliderBaseTemplate.tsx +0 -1
- package/src/SliderTemplate.tsx +14 -21
- package/src/SliderTooltipTemplate.tsx +27 -0
- package/src/i18n/messagebundle_en.properties +246 -0
- package/src/i18n/messagebundle_en_US_saprigi.properties +18 -0
- package/src/themes/BusyIndicator.css +5 -2
- package/src/themes/PopupsCommon.css +2 -0
- package/src/themes/ResponsivePopoverCommon.css +2 -2
- package/src/themes/Select.css +19 -0
- package/src/themes/SliderTooltip.css +34 -0
- package/src/themes/base/CheckBox-parameters.css +7 -1
- package/src/themes/base/Select-parameters.css +8 -0
- package/src/themes/sap_horizon/BusyIndicator-parameters.css +0 -1
- package/src/themes/sap_horizon/Select-parameters.css +2 -0
- package/src/themes/sap_horizon_dark/BusyIndicator-parameters.css +0 -1
- package/src/themes/sap_horizon_dark/Select-parameters.css +2 -0
|
@@ -19,9 +19,6 @@ type DynamicDateRangeValue = {
|
|
|
19
19
|
*/
|
|
20
20
|
values?: Date[] | number[];
|
|
21
21
|
};
|
|
22
|
-
type DynamicDateRangeChangeEventDetail = {
|
|
23
|
-
value: DynamicDateRangeValue | undefined;
|
|
24
|
-
};
|
|
25
22
|
/**
|
|
26
23
|
* Represents a dynamic date range option used by the `ui5-dynamic-date-range` component.
|
|
27
24
|
*
|
|
@@ -44,7 +41,7 @@ type DynamicDateRangeChangeEventDetail = {
|
|
|
44
41
|
* - `isValidString(value: string): boolean`: Validates whether a given string is a valid representation of the dynamic date range value.
|
|
45
42
|
*
|
|
46
43
|
* @public
|
|
47
|
-
* @since 2.
|
|
44
|
+
* @since 2.11.0
|
|
48
45
|
*/
|
|
49
46
|
interface IDynamicDateRangeOption {
|
|
50
47
|
icon: string;
|
|
@@ -58,12 +55,42 @@ interface IDynamicDateRangeOption {
|
|
|
58
55
|
isValidString: (value: string) => boolean;
|
|
59
56
|
}
|
|
60
57
|
/**
|
|
61
|
-
*
|
|
58
|
+
* @class
|
|
59
|
+
*
|
|
60
|
+
* ### Overview
|
|
61
|
+
*
|
|
62
|
+
* The `ui5-dynamic-date-range` component provides a flexible interface to define date ranges using a combination of absolute dates, relative intervals, and preset ranges (e.g., "Today", "Yesterday", etc.).
|
|
63
|
+
* It allows users to select a date range from a predefined set of options or enter custom dates.
|
|
64
|
+
*
|
|
65
|
+
* ### Usage
|
|
66
|
+
*
|
|
67
|
+
* The component is typically used in scenarios where users need to filter data based on date ranges, such as in reports, dashboards, or data analysis tools.
|
|
68
|
+
* It can be used with the predefined options or extended with custom options to suit specific requirements. You can create your own options by extending the `IDynamicDateRangeOption` interface.
|
|
69
|
+
* Every option should be registered using the `DynamicDateRange.register` method.
|
|
70
|
+
*
|
|
71
|
+
* If needed, you can also create a range of dates based on specific option using the `toDates` method.
|
|
72
|
+
*
|
|
73
|
+
* ### Standard Options
|
|
74
|
+
*
|
|
75
|
+
* The component comes with a set of standard options, including:
|
|
76
|
+
* - "TODAY" - Represents the current date. An example value is `{ operator: "TODAY"}`. Import: `import "@ui5/webcomponents/dist/dynamic-date-range-options/Today.js";`
|
|
77
|
+
* - "YESTERDAY" - Represents the previous date. An example value is `{ operator: "YESTERDAY"}`. Import: `import "@ui5/webcomponents/dist/dynamic-date-range-options/Yesterday.js";`
|
|
78
|
+
* - "TOMORROW" - Represents the next date. An example value is `{ operator: "TOMORROW"}`. Import: `import "@ui5/webcomponents/dist/dynamic-date-range-options/Tomorrow.js";`
|
|
79
|
+
* - "DATE" - Represents a single date. An example value is `{ operator: "DATE", values: [new Date()]}`. Import: `import "@ui5/webcomponents/dist/dynamic-date-range-options/SingleDate.js";`
|
|
80
|
+
* - "DATERANGE" - Represents a range of dates. An example value is `{ operator: "DATERANGE", values: [new Date(), new Date()]}`. Import: `import "@ui5/webcomponents/dist/dynamic-date-range-options/DateRange.js";`
|
|
81
|
+
*
|
|
82
|
+
* ### ES6 Module Import
|
|
83
|
+
*
|
|
84
|
+
* `import "@ui5/webcomponents/dist/DynamicDateRange.js";`
|
|
85
|
+
*
|
|
86
|
+
* @constructor
|
|
87
|
+
* @extends UI5Element
|
|
62
88
|
* @public
|
|
89
|
+
* @since 2.11.0
|
|
63
90
|
*/
|
|
64
91
|
declare class DynamicDateRange extends UI5Element {
|
|
65
92
|
eventDetails: {
|
|
66
|
-
change:
|
|
93
|
+
change: void;
|
|
67
94
|
};
|
|
68
95
|
static i18nBundle: I18nBundle;
|
|
69
96
|
/**
|
|
@@ -107,6 +134,8 @@ declare class DynamicDateRange extends UI5Element {
|
|
|
107
134
|
/**
|
|
108
135
|
* Converts a `value` into concrete `startDate` and `endDate` JavaScript `Date` objects.
|
|
109
136
|
*
|
|
137
|
+
* @public
|
|
138
|
+
* @param value The option to convert into an array of date ranges
|
|
110
139
|
* @returns An array of two `Date` objects representing the start and end dates.
|
|
111
140
|
*/
|
|
112
141
|
toDates(value: DynamicDateRangeValue): Date[];
|
|
@@ -130,4 +159,4 @@ declare class DynamicDateRange extends UI5Element {
|
|
|
130
159
|
static getOptionClass(operator: string): (new () => IDynamicDateRangeOption) | undefined;
|
|
131
160
|
}
|
|
132
161
|
export default DynamicDateRange;
|
|
133
|
-
export type { DynamicDateRangeValue, IDynamicDateRangeOption,
|
|
162
|
+
export type { DynamicDateRangeValue, IDynamicDateRangeOption, };
|
package/dist/DynamicDateRange.js
CHANGED
|
@@ -24,8 +24,38 @@ import dynamicDateRangeCss from "./generated/themes/DynamicDateRange.css.js";
|
|
|
24
24
|
import dynamicDateRangePopoverCss from "./generated/themes/DynamicDateRangePopover.css.js";
|
|
25
25
|
import ResponsivePopoverCommonCss from "./generated/themes/ResponsivePopoverCommon.css.js";
|
|
26
26
|
/**
|
|
27
|
-
*
|
|
27
|
+
* @class
|
|
28
|
+
*
|
|
29
|
+
* ### Overview
|
|
30
|
+
*
|
|
31
|
+
* The `ui5-dynamic-date-range` component provides a flexible interface to define date ranges using a combination of absolute dates, relative intervals, and preset ranges (e.g., "Today", "Yesterday", etc.).
|
|
32
|
+
* It allows users to select a date range from a predefined set of options or enter custom dates.
|
|
33
|
+
*
|
|
34
|
+
* ### Usage
|
|
35
|
+
*
|
|
36
|
+
* The component is typically used in scenarios where users need to filter data based on date ranges, such as in reports, dashboards, or data analysis tools.
|
|
37
|
+
* It can be used with the predefined options or extended with custom options to suit specific requirements. You can create your own options by extending the `IDynamicDateRangeOption` interface.
|
|
38
|
+
* Every option should be registered using the `DynamicDateRange.register` method.
|
|
39
|
+
*
|
|
40
|
+
* If needed, you can also create a range of dates based on specific option using the `toDates` method.
|
|
41
|
+
*
|
|
42
|
+
* ### Standard Options
|
|
43
|
+
*
|
|
44
|
+
* The component comes with a set of standard options, including:
|
|
45
|
+
* - "TODAY" - Represents the current date. An example value is `{ operator: "TODAY"}`. Import: `import "@ui5/webcomponents/dist/dynamic-date-range-options/Today.js";`
|
|
46
|
+
* - "YESTERDAY" - Represents the previous date. An example value is `{ operator: "YESTERDAY"}`. Import: `import "@ui5/webcomponents/dist/dynamic-date-range-options/Yesterday.js";`
|
|
47
|
+
* - "TOMORROW" - Represents the next date. An example value is `{ operator: "TOMORROW"}`. Import: `import "@ui5/webcomponents/dist/dynamic-date-range-options/Tomorrow.js";`
|
|
48
|
+
* - "DATE" - Represents a single date. An example value is `{ operator: "DATE", values: [new Date()]}`. Import: `import "@ui5/webcomponents/dist/dynamic-date-range-options/SingleDate.js";`
|
|
49
|
+
* - "DATERANGE" - Represents a range of dates. An example value is `{ operator: "DATERANGE", values: [new Date(), new Date()]}`. Import: `import "@ui5/webcomponents/dist/dynamic-date-range-options/DateRange.js";`
|
|
50
|
+
*
|
|
51
|
+
* ### ES6 Module Import
|
|
52
|
+
*
|
|
53
|
+
* `import "@ui5/webcomponents/dist/DynamicDateRange.js";`
|
|
54
|
+
*
|
|
55
|
+
* @constructor
|
|
56
|
+
* @extends UI5Element
|
|
28
57
|
* @public
|
|
58
|
+
* @since 2.11.0
|
|
29
59
|
*/
|
|
30
60
|
let DynamicDateRange = DynamicDateRange_1 = class DynamicDateRange extends UI5Element {
|
|
31
61
|
constructor() {
|
|
@@ -110,13 +140,13 @@ let DynamicDateRange = DynamicDateRange_1 = class DynamicDateRange extends UI5El
|
|
|
110
140
|
const value = e.target?.value;
|
|
111
141
|
if (!value) {
|
|
112
142
|
this.value = undefined;
|
|
113
|
-
this.fireDecoratorEvent("change"
|
|
143
|
+
this.fireDecoratorEvent("change");
|
|
114
144
|
return;
|
|
115
145
|
}
|
|
116
146
|
const currentOption = this.optionsObjects.find(option => option.isValidString(value));
|
|
117
147
|
this.value = currentOption ? this.getOption(currentOption.operator)?.parse(value) : undefined;
|
|
118
148
|
if (this.value) {
|
|
119
|
-
this.fireDecoratorEvent("change"
|
|
149
|
+
this.fireDecoratorEvent("change");
|
|
120
150
|
}
|
|
121
151
|
}
|
|
122
152
|
onButtonBackClick() {
|
|
@@ -125,6 +155,8 @@ let DynamicDateRange = DynamicDateRange_1 = class DynamicDateRange extends UI5El
|
|
|
125
155
|
/**
|
|
126
156
|
* Converts a `value` into concrete `startDate` and `endDate` JavaScript `Date` objects.
|
|
127
157
|
*
|
|
158
|
+
* @public
|
|
159
|
+
* @param value The option to convert into an array of date ranges
|
|
128
160
|
* @returns An array of two `Date` objects representing the start and end dates.
|
|
129
161
|
*/
|
|
130
162
|
toDates(value) {
|
|
@@ -140,7 +172,7 @@ let DynamicDateRange = DynamicDateRange_1 = class DynamicDateRange extends UI5El
|
|
|
140
172
|
}
|
|
141
173
|
if (this._currentOption?.isValidString(stringValue)) {
|
|
142
174
|
this.value = this.currentValue;
|
|
143
|
-
this.fireDecoratorEvent("change"
|
|
175
|
+
this.fireDecoratorEvent("change");
|
|
144
176
|
}
|
|
145
177
|
else {
|
|
146
178
|
this.value = undefined;
|
|
@@ -236,44 +268,6 @@ __decorate([
|
|
|
236
268
|
i18n("@ui5/webcomponents")
|
|
237
269
|
], DynamicDateRange, "i18nBundle", void 0);
|
|
238
270
|
DynamicDateRange = DynamicDateRange_1 = __decorate([
|
|
239
|
-
event("change", {
|
|
240
|
-
bubbles: true,
|
|
241
|
-
cancelable: true,
|
|
242
|
-
})
|
|
243
|
-
/**
|
|
244
|
-
* @class
|
|
245
|
-
*
|
|
246
|
-
* ### Overview
|
|
247
|
-
*
|
|
248
|
-
* The `ui5-dynamic-date-range` component provides a flexible interface to define date ranges using a combination of absolute dates, relative intervals, and preset ranges (e.g., "Today", "Yesterday", etc.).
|
|
249
|
-
* It allows users to select a date range from a predefined set of options or enter custom dates.
|
|
250
|
-
*
|
|
251
|
-
* ### Usage
|
|
252
|
-
*
|
|
253
|
-
* The component is typically used in scenarios where users need to filter data based on date ranges, such as in reports, dashboards, or data analysis tools.
|
|
254
|
-
* It can be used with the predefined options or extended with custom options to suit specific requirements. You can create your own options by extending the `IDynamicDateRangeOption` interface.
|
|
255
|
-
* Every option should be registered using the `DynamicDateRange.register` method.
|
|
256
|
-
*
|
|
257
|
-
* If needed, you can also create a range of dates based on specific option using the `toDates` method.
|
|
258
|
-
*
|
|
259
|
-
* ### Standard Options
|
|
260
|
-
*
|
|
261
|
-
* The component comes with a set of standard options, including:
|
|
262
|
-
* - "TODAY" - Represents the current date. An example value is `{ operator: "TODAY"}`. Import: `import "@ui5/webcomponents/dist/dynamic-date-range-options/Today.js";`
|
|
263
|
-
* - "YESTERDAY" - Represents the previous date. An example value is `{ operator: "YESTERDAY"}`. Import: `import "@ui5/webcomponents/dist/dynamic-date-range-options/Yesterday.js";`
|
|
264
|
-
* - "TOMORROW" - Represents the next date. An example value is `{ operator: "TOMORROW"}`. Import: `import "@ui5/webcomponents/dist/dynamic-date-range-options/Tomorrow.js";`
|
|
265
|
-
* - "DATE" - Represents a single date. An example value is `{ operator: "DATE", values: [new Date()]}`. Import: `import "@ui5/webcomponents/dist/dynamic-date-range-options/SingleDate.js";`
|
|
266
|
-
* - "DATERANGE" - Represents a range of dates. An example value is `{ operator: "DATERANGE", values: [new Date(), new Date()]}`. Import: `import "@ui5/webcomponents/dist/dynamic-date-range-options/DateRange.js";`
|
|
267
|
-
*
|
|
268
|
-
* ### ES6 Module Import
|
|
269
|
-
*
|
|
270
|
-
* `import "@ui5/webcomponents/dist/DynamicDateRange.js";`
|
|
271
|
-
*
|
|
272
|
-
* @constructor
|
|
273
|
-
* @extends UI5Element
|
|
274
|
-
* @public
|
|
275
|
-
*/
|
|
276
|
-
,
|
|
277
271
|
customElement({
|
|
278
272
|
tag: "ui5-dynamic-date-range",
|
|
279
273
|
languageAware: true,
|
|
@@ -285,6 +279,15 @@ DynamicDateRange = DynamicDateRange_1 = __decorate([
|
|
|
285
279
|
dynamicDateRangePopoverCss,
|
|
286
280
|
],
|
|
287
281
|
})
|
|
282
|
+
/**
|
|
283
|
+
* Fired when the input operation has finished by pressing Enter or on focusout or a value is selected in the popover.
|
|
284
|
+
* @public
|
|
285
|
+
*/
|
|
286
|
+
,
|
|
287
|
+
event("change", {
|
|
288
|
+
bubbles: true,
|
|
289
|
+
cancelable: true,
|
|
290
|
+
})
|
|
288
291
|
], DynamicDateRange);
|
|
289
292
|
DynamicDateRange.define();
|
|
290
293
|
export default DynamicDateRange;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DynamicDateRange.js","sourceRoot":"","sources":["../src/DynamicDateRange.ts"],"names":[],"mappings":"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","sourcesContent":["import customElement from \"@ui5/webcomponents-base/dist/decorators/customElement.js\";\nimport UI5Element from \"@ui5/webcomponents-base/dist/UI5Element.js\";\nimport property from \"@ui5/webcomponents-base/dist/decorators/property.js\";\nimport jsxRenderer from \"@ui5/webcomponents-base/dist/renderer/JsxRenderer.js\";\nimport query from \"@ui5/webcomponents-base/dist/decorators/query.js\";\nimport event from \"@ui5/webcomponents-base/dist/decorators/event-strict.js\";\nimport i18n from \"@ui5/webcomponents-base/dist/decorators/i18n.js\";\nimport type I18nBundle from \"@ui5/webcomponents-base/dist/i18nBundle.js\";\nimport { isDesktop } from \"@ui5/webcomponents-base/dist/Device.js\";\nimport type { JsxTemplate } from \"@ui5/webcomponents-base\";\nimport { isF4, isShow } from \"@ui5/webcomponents-base/dist/Keys.js\";\nimport DynamicDateRangeTemplate from \"./DynamicDateRangeTemplate.js\";\nimport IconMode from \"./types/IconMode.js\";\nimport type Input from \"./Input.js\";\nimport {\n\tDYNAMIC_DATE_RANGE_SELECTED_TEXT,\n\tDYNAMIC_DATE_RANGE_EMPTY_SELECTED_TEXT,\n\tDYNAMIC_DATE_RANGE_NAVIGATION_ICON_TOOLTIP,\n} from \"./generated/i18n/i18n-defaults.js\";\n\n// default calendar for bundling\nimport \"@ui5/webcomponents-localization/dist/features/calendar/Gregorian.js\";\n\n// Styles\nimport dynamicDateRangeCss from \"./generated/themes/DynamicDateRange.css.js\";\nimport dynamicDateRangePopoverCss from \"./generated/themes/DynamicDateRangePopover.css.js\";\nimport ResponsivePopoverCommonCss from \"./generated/themes/ResponsivePopoverCommon.css.js\";\nimport type List from \"./List.js\";\nimport type ListItem from \"./ListItem.js\";\n\ntype DynamicDateRangeValue = {\n\t/**\n\t * The key of the option.\n\t * @default \"\"\n\t * @public\n\t */\n\toperator: string;\n\n /**\n * Values of the dynamic date range.\n * @default []\n * @public\n */\n values?: Date[] | number[];\n}\n\ntype DynamicDateRangeChangeEventDetail = {\n\tvalue: DynamicDateRangeValue | undefined,\n}\n\n/**\n * Represents a dynamic date range option used by the `ui5-dynamic-date-range` component.\n *\n * Represents a dynamic date range option used for handling dynamic date ranges.\n * This interface defines the structure and behavior required for implementing\n * dynamic date range options, including formatting, parsing, validation, and\n * conversion of date range values.\n *\n * * Properties:\n * - `icon`: The icon associated with the dynamic date range option, typically used for UI representation.\n * - `operator`: A unique operator identifying the dynamic date range option.\n * - `text`: The display text for the dynamic date range option.\n * - `template` (optional): A JSX template for rendering the dynamic date range option.\n *\n * Methods:\n * - `format(value: DynamicDateRangeValue): string`: Formats the given dynamic date range value into a string representation.\n * - `parse(value: string): DynamicDateRangeValue | undefined`: Parses a string into a dynamic date range value.\n * - `toDates(value: DynamicDateRangeValue): Date[]`: Converts a dynamic date range value into an array of `Date` objects.\n * - `handleSelectionChange?(event: CustomEvent): DynamicDateRangeValue | undefined`: (Optional) Handles selection changes in the UI of the dynamic date range option.\n * - `isValidString(value: string): boolean`: Validates whether a given string is a valid representation of the dynamic date range value.\n *\n * @public\n * @since 2.10.0\n */\ninterface IDynamicDateRangeOption {\n\ticon: string;\n\toperator: string;\n\ttext: string;\n\tformat: (value: DynamicDateRangeValue) => string;\n\tparse: (value: string) => DynamicDateRangeValue | undefined;\n\ttoDates: (value: DynamicDateRangeValue) => Date[];\n\thandleSelectionChange?: (event: CustomEvent) => DynamicDateRangeValue | undefined;\n\ttemplate?: JsxTemplate;\n\tisValidString: (value: string) => boolean;\n}\n\n/**\n * Fired when the input operation has finished by pressing Enter or on focusout or a value is selected in the popover.\n * @public\n */\n@event(\"change\", {\n\tbubbles: true,\n\tcancelable: true,\n})\n\n/**\n * @class\n *\n * ### Overview\n *\n * The `ui5-dynamic-date-range` component provides a flexible interface to define date ranges using a combination of absolute dates, relative intervals, and preset ranges (e.g., \"Today\", \"Yesterday\", etc.).\n * It allows users to select a date range from a predefined set of options or enter custom dates.\n *\n * ### Usage\n *\n * The component is typically used in scenarios where users need to filter data based on date ranges, such as in reports, dashboards, or data analysis tools.\n * It can be used with the predefined options or extended with custom options to suit specific requirements. You can create your own options by extending the `IDynamicDateRangeOption` interface.\n * Every option should be registered using the `DynamicDateRange.register` method.\n *\n * If needed, you can also create a range of dates based on specific option using the `toDates` method.\n *\n * ### Standard Options\n *\n * The component comes with a set of standard options, including:\n * - \"TODAY\" - Represents the current date. An example value is `{ operator: \"TODAY\"}`. Import: `import \"@ui5/webcomponents/dist/dynamic-date-range-options/Today.js\";`\n * - \"YESTERDAY\" - Represents the previous date. An example value is `{ operator: \"YESTERDAY\"}`. Import: `import \"@ui5/webcomponents/dist/dynamic-date-range-options/Yesterday.js\";`\n * - \"TOMORROW\" - Represents the next date. An example value is `{ operator: \"TOMORROW\"}`. Import: `import \"@ui5/webcomponents/dist/dynamic-date-range-options/Tomorrow.js\";`\n * - \"DATE\" - Represents a single date. An example value is `{ operator: \"DATE\", values: [new Date()]}`. Import: `import \"@ui5/webcomponents/dist/dynamic-date-range-options/SingleDate.js\";`\n * - \"DATERANGE\" - Represents a range of dates. An example value is `{ operator: \"DATERANGE\", values: [new Date(), new Date()]}`. Import: `import \"@ui5/webcomponents/dist/dynamic-date-range-options/DateRange.js\";`\n *\n * ### ES6 Module Import\n *\n * `import \"@ui5/webcomponents/dist/DynamicDateRange.js\";`\n *\n * @constructor\n * @extends UI5Element\n * @public\n */\n\n@customElement({\n\ttag: \"ui5-dynamic-date-range\",\n\tlanguageAware: true,\n\ttemplate: DynamicDateRangeTemplate,\n\trenderer: jsxRenderer,\n\tstyles: [\n\t\tdynamicDateRangeCss,\n\t\tResponsivePopoverCommonCss,\n\t\tdynamicDateRangePopoverCss,\n\t],\n})\n\nclass DynamicDateRange extends UI5Element {\n\teventDetails!: {\n\t\tchange: DynamicDateRangeChangeEventDetail,\n\t}\n\n @i18n(\"@ui5/webcomponents\")\n\tstatic i18nBundle: I18nBundle;\n\n\t/**\n\t * Defines the value object.\n\t * @default undefined\n\t * @public\n\t */\n\t@property({ noAttribute: true })\n\tvalue?: DynamicDateRangeValue;\n\n\t/**\n\t * Defines the options listed as a string, separated by commas and using capital case.\n\t * Example: \"TODAY, YESTERDAY, DATERANGE\"\n\t * @public\n\t * @default \"\"\n\t */\n\t@property({ type: String })\n\toptions = \"\";\n\n\t/**\n\t * Defines the open or closed state of the popover.\n\t * @private\n\t * @default false\n\t */\n\t@property({ type: Boolean })\n\topen = false;\n\n @property({ type: Object })\n _currentOption?: IDynamicDateRangeOption;\n\n\t@property({ type: Object })\n currentValue?: DynamicDateRangeValue;\n\n\toptionsObjects: IDynamicDateRangeOption[] = [];\n\n\tstatic optionsClasses: Map<string, new () => IDynamicDateRangeOption> = new Map();\n\n\t@query(\"[ui5-input]\")\n\t_input?: Input;\n\n\t@query(\"[ui5-list]\")\n\t_list?: List;\n\n\tonBeforeRendering() {\n\t\tconst optionKeys = this.options.split(\",\").map(option => option.trim());\n\n\t\tthis.optionsObjects = optionKeys.map(option => {\n\t\t\tconst OptionClass = DynamicDateRange.getOptionClass(option);\n\t\t\tlet optionObject;\n\n\t\t\tif (OptionClass) {\n\t\t\t\toptionObject = new OptionClass();\n\t\t\t}\n\n\t\t\treturn optionObject;\n\t\t}).filter(optionObject => optionObject !== undefined);\n\n\t\tif (this.value) {\n\t\t\tconst selectedItem = this._list?.items.find(item => {\n\t\t\t\tconst option = this.optionsObjects.find(x => x.operator === this.value?.operator);\n\t\t\t\treturn option && item.textContent === option.text;\n\t\t\t}) as ListItem;\n\n\t\t\tthis._list?.focusItem(selectedItem);\n\t\t}\n\t}\n\n\tget _optionsTitles(): Array<string> {\n\t\treturn this.optionsObjects.map(option => option.text);\n\t}\n\n\t/**\n\t * Defines whether the value help icon is hidden\n\t * @private\n\t */\n\tget _iconMode() {\n\t\treturn isDesktop() ? IconMode.Decorative : IconMode.Interactive;\n\t}\n\n\tget tooltipNavigationIcon() {\n\t\treturn DynamicDateRange.i18nBundle.getText(DYNAMIC_DATE_RANGE_NAVIGATION_ICON_TOOLTIP);\n\t}\n\n\t_togglePicker(): void {\n\t\tif (this.open) {\n\t\t\tthis.open = false;\n\t\t} else {\n\t\t\tthis.open = true;\n\t\t}\n\t}\n\n\t_selectOption(e: CustomEvent): void {\n\t\tthis._currentOption = this.optionsObjects.find(option => option.text === e.detail.item.textContent);\n\t\tif (!this._currentOption?.template) {\n\t\t\tthis.currentValue = this._currentOption?.parse(this._currentOption.text);\n\t\t\tthis._submitValue();\n\t\t}\n\n\t\tif (this._currentOption?.operator === this.value?.operator) {\n\t\t\tthis.currentValue = this.value;\n\t\t}\n\t}\n\n\tgetOption(operator: string) {\n\t\tconst resultOption = this.optionsObjects.find(option => option.operator === operator);\n\n\t\tif (!resultOption) {\n\t\t\tconst OptionClass = DynamicDateRange.getOptionClass(operator);\n\n\t\t\tif (OptionClass) {\n\t\t\t\tconst optionObject = new OptionClass();\n\t\t\t\tthis.optionsObjects.push(optionObject);\n\n\t\t\t\treturn optionObject;\n\t\t\t}\n\t\t}\n\n\t\treturn resultOption;\n\t}\n\n\tonInputChange(e: Event): void {\n\t\tconst value = (e.target as Input)?.value;\n\n\t\tif (!value) {\n\t\t\tthis.value = undefined;\n\t\t\tthis.fireDecoratorEvent(\"change\", { value: undefined });\n\n\t\t\treturn;\n\t\t}\n\n\t\tconst currentOption = this.optionsObjects.find(option => option.isValidString(value));\n\n\t\tthis.value = currentOption ? this.getOption(currentOption.operator)?.parse(value) : undefined;\n\n\t\tif (this.value) {\n\t\t\tthis.fireDecoratorEvent(\"change\", {\tvalue: this.value });\n\t\t}\n\t}\n\n\tonButtonBackClick() {\n\t\tthis._currentOption = undefined;\n\t}\n\n\t/**\n\t * Converts a `value` into concrete `startDate` and `endDate` JavaScript `Date` objects.\n\t *\n\t * @returns An array of two `Date` objects representing the start and end dates.\n\t */\n\ttoDates(value: DynamicDateRangeValue): Date[] {\n\t\treturn this.getOption(value.operator)?.toDates(value) as Date[];\n\t}\n\n\tget _hasCurrentOptionTemplate(): boolean {\n\t\treturn !!this._currentOption?.template;\n\t}\n\n\t_submitValue() {\n\t\tconst stringValue = this._currentOption?.format(this.currentValue!) as string;\n\n\t\tif (this._input) {\n\t\t\tthis._input.value = stringValue;\n\t\t}\n\n\t\tif (this._currentOption?.isValidString(stringValue)) {\n\t\t\tthis.value = this.currentValue as DynamicDateRangeValue;\n\t\t\tthis.fireDecoratorEvent(\"change\", { value: this.value });\n\t\t} else {\n\t\t\tthis.value = undefined;\n\t\t}\n\n\t\tthis._currentOption = undefined;\n\t\tthis.open = false;\n\t}\n\n\t_close() {\n\t\tthis._currentOption = undefined;\n\t\tthis.open = false;\n\t}\n\n\tonPopoverOpen() {\n\t\tif (this.currentValue !== this.value) {\n\t\t\tthis.currentValue = this.value;\n\t\t}\n\t}\n\n\tonPopoverClose() {\n\t\tthis._close();\n\t}\n\n\tget currentValueText() {\n\t\tif (this.currentValue && this.currentValue.operator === this._currentOption?.operator) {\n\t\t\treturn `${DynamicDateRange.i18nBundle.getText(DYNAMIC_DATE_RANGE_SELECTED_TEXT)}: ${this._currentOption?.format(this.currentValue)}`;\n\t\t}\n\n\t\treturn DynamicDateRange.i18nBundle.getText(DYNAMIC_DATE_RANGE_EMPTY_SELECTED_TEXT);\n\t}\n\n\thandleSelectionChange(e: CustomEvent) {\n\t\tthis.currentValue = this._currentOption?.handleSelectionChange && this._currentOption?.handleSelectionChange(e) as DynamicDateRangeValue;\n\t}\n\n\tonInputKeyDown(e: KeyboardEvent) {\n\t\tif (isShow(e)) {\n\t\t\te.preventDefault();\n\t\t\tif (this.open) {\n\t\t\t\tif (!isF4(e)) {\n\t\t\t\t\tthis._toggleAndFocusInput();\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthis._toggleAndFocusInput();\n\t\t\t}\n\t\t}\n\t}\n\n\t_toggleAndFocusInput() {\n\t\tthis._togglePicker();\n\t\tif (this.open) {\n\t\t\tthis._input?.focus();\n\t\t}\n\t}\n\n\tonKeyDownPopover(e: KeyboardEvent) {\n\t\tif (isShow(e)) {\n\t\t\te.preventDefault(); // Prevent scroll on Alt/Option + Arrow Up/Down\n\t\t\tthis._toggleAndFocusInput();\n\t\t}\n\t}\n\n\t/**\n\t * Registers a new dynamic date range option with a unique key.\n\t *\n\t * Example:\n\t * DynamicDateRange.register(\"LASTWEEK\", LastWeek);\n\t */\n\tstatic register(operator: string, option: new () => IDynamicDateRangeOption): void {\n\t\toperator = operator.toUpperCase();\n\n\t\tif (!this.optionsClasses.has(operator)) {\n\t\t\tthis.optionsClasses.set(operator, option);\n\t\t}\n\t}\n\n\tstatic getOptionClass(operator: string): (new () => IDynamicDateRangeOption) | undefined {\n\t\treturn this.optionsClasses.get(operator);\n\t}\n}\n\nDynamicDateRange.define();\n\nexport default DynamicDateRange;\n\nexport type {\n\tDynamicDateRangeValue,\n\tIDynamicDateRangeOption,\n\tDynamicDateRangeChangeEventDetail,\n};\n"]}
|
|
1
|
+
{"version":3,"file":"DynamicDateRange.js","sourceRoot":"","sources":["../src/DynamicDateRange.ts"],"names":[],"mappings":"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","sourcesContent":["import customElement from \"@ui5/webcomponents-base/dist/decorators/customElement.js\";\nimport UI5Element from \"@ui5/webcomponents-base/dist/UI5Element.js\";\nimport property from \"@ui5/webcomponents-base/dist/decorators/property.js\";\nimport jsxRenderer from \"@ui5/webcomponents-base/dist/renderer/JsxRenderer.js\";\nimport query from \"@ui5/webcomponents-base/dist/decorators/query.js\";\nimport event from \"@ui5/webcomponents-base/dist/decorators/event-strict.js\";\nimport i18n from \"@ui5/webcomponents-base/dist/decorators/i18n.js\";\nimport type I18nBundle from \"@ui5/webcomponents-base/dist/i18nBundle.js\";\nimport { isDesktop } from \"@ui5/webcomponents-base/dist/Device.js\";\nimport type { JsxTemplate } from \"@ui5/webcomponents-base\";\nimport { isF4, isShow } from \"@ui5/webcomponents-base/dist/Keys.js\";\nimport DynamicDateRangeTemplate from \"./DynamicDateRangeTemplate.js\";\nimport IconMode from \"./types/IconMode.js\";\nimport type Input from \"./Input.js\";\nimport {\n\tDYNAMIC_DATE_RANGE_SELECTED_TEXT,\n\tDYNAMIC_DATE_RANGE_EMPTY_SELECTED_TEXT,\n\tDYNAMIC_DATE_RANGE_NAVIGATION_ICON_TOOLTIP,\n} from \"./generated/i18n/i18n-defaults.js\";\n\n// default calendar for bundling\nimport \"@ui5/webcomponents-localization/dist/features/calendar/Gregorian.js\";\n\n// Styles\nimport dynamicDateRangeCss from \"./generated/themes/DynamicDateRange.css.js\";\nimport dynamicDateRangePopoverCss from \"./generated/themes/DynamicDateRangePopover.css.js\";\nimport ResponsivePopoverCommonCss from \"./generated/themes/ResponsivePopoverCommon.css.js\";\nimport type List from \"./List.js\";\nimport type ListItem from \"./ListItem.js\";\n\ntype DynamicDateRangeValue = {\n\t/**\n\t * The key of the option.\n\t * @default \"\"\n\t * @public\n\t */\n\toperator: string;\n\n\t/**\n\t * Values of the dynamic date range.\n\t * @default []\n\t * @public\n\t */\n\tvalues?: Date[] | number[];\n}\n\n/**\n * Represents a dynamic date range option used by the `ui5-dynamic-date-range` component.\n *\n * Represents a dynamic date range option used for handling dynamic date ranges.\n * This interface defines the structure and behavior required for implementing\n * dynamic date range options, including formatting, parsing, validation, and\n * conversion of date range values.\n *\n * * Properties:\n * - `icon`: The icon associated with the dynamic date range option, typically used for UI representation.\n * - `operator`: A unique operator identifying the dynamic date range option.\n * - `text`: The display text for the dynamic date range option.\n * - `template` (optional): A JSX template for rendering the dynamic date range option.\n *\n * Methods:\n * - `format(value: DynamicDateRangeValue): string`: Formats the given dynamic date range value into a string representation.\n * - `parse(value: string): DynamicDateRangeValue | undefined`: Parses a string into a dynamic date range value.\n * - `toDates(value: DynamicDateRangeValue): Date[]`: Converts a dynamic date range value into an array of `Date` objects.\n * - `handleSelectionChange?(event: CustomEvent): DynamicDateRangeValue | undefined`: (Optional) Handles selection changes in the UI of the dynamic date range option.\n * - `isValidString(value: string): boolean`: Validates whether a given string is a valid representation of the dynamic date range value.\n *\n * @public\n * @since 2.11.0\n */\ninterface IDynamicDateRangeOption {\n\ticon: string;\n\toperator: string;\n\ttext: string;\n\tformat: (value: DynamicDateRangeValue) => string;\n\tparse: (value: string) => DynamicDateRangeValue | undefined;\n\ttoDates: (value: DynamicDateRangeValue) => Date[];\n\thandleSelectionChange?: (event: CustomEvent) => DynamicDateRangeValue | undefined;\n\ttemplate?: JsxTemplate;\n\tisValidString: (value: string) => boolean;\n}\n\n/**\n * @class\n *\n * ### Overview\n *\n * The `ui5-dynamic-date-range` component provides a flexible interface to define date ranges using a combination of absolute dates, relative intervals, and preset ranges (e.g., \"Today\", \"Yesterday\", etc.).\n * It allows users to select a date range from a predefined set of options or enter custom dates.\n *\n * ### Usage\n *\n * The component is typically used in scenarios where users need to filter data based on date ranges, such as in reports, dashboards, or data analysis tools.\n * It can be used with the predefined options or extended with custom options to suit specific requirements. You can create your own options by extending the `IDynamicDateRangeOption` interface.\n * Every option should be registered using the `DynamicDateRange.register` method.\n *\n * If needed, you can also create a range of dates based on specific option using the `toDates` method.\n *\n * ### Standard Options\n *\n * The component comes with a set of standard options, including:\n * - \"TODAY\" - Represents the current date. An example value is `{ operator: \"TODAY\"}`. Import: `import \"@ui5/webcomponents/dist/dynamic-date-range-options/Today.js\";`\n * - \"YESTERDAY\" - Represents the previous date. An example value is `{ operator: \"YESTERDAY\"}`. Import: `import \"@ui5/webcomponents/dist/dynamic-date-range-options/Yesterday.js\";`\n * - \"TOMORROW\" - Represents the next date. An example value is `{ operator: \"TOMORROW\"}`. Import: `import \"@ui5/webcomponents/dist/dynamic-date-range-options/Tomorrow.js\";`\n * - \"DATE\" - Represents a single date. An example value is `{ operator: \"DATE\", values: [new Date()]}`. Import: `import \"@ui5/webcomponents/dist/dynamic-date-range-options/SingleDate.js\";`\n * - \"DATERANGE\" - Represents a range of dates. An example value is `{ operator: \"DATERANGE\", values: [new Date(), new Date()]}`. Import: `import \"@ui5/webcomponents/dist/dynamic-date-range-options/DateRange.js\";`\n *\n * ### ES6 Module Import\n *\n * `import \"@ui5/webcomponents/dist/DynamicDateRange.js\";`\n *\n * @constructor\n * @extends UI5Element\n * @public\n * @since 2.11.0\n */\n@customElement({\n\ttag: \"ui5-dynamic-date-range\",\n\tlanguageAware: true,\n\ttemplate: DynamicDateRangeTemplate,\n\trenderer: jsxRenderer,\n\tstyles: [\n\t\tdynamicDateRangeCss,\n\t\tResponsivePopoverCommonCss,\n\t\tdynamicDateRangePopoverCss,\n\t],\n})\n\n/**\n * Fired when the input operation has finished by pressing Enter or on focusout or a value is selected in the popover.\n * @public\n */\n@event(\"change\", {\n\tbubbles: true,\n\tcancelable: true,\n})\nclass DynamicDateRange extends UI5Element {\n\teventDetails!: {\n\t\tchange: void,\n\t}\n\n\t@i18n(\"@ui5/webcomponents\")\n\tstatic i18nBundle: I18nBundle;\n\n\t/**\n\t * Defines the value object.\n\t * @default undefined\n\t * @public\n\t */\n\t@property({ noAttribute: true })\n\tvalue?: DynamicDateRangeValue;\n\n\t/**\n\t * Defines the options listed as a string, separated by commas and using capital case.\n\t * Example: \"TODAY, YESTERDAY, DATERANGE\"\n\t * @public\n\t * @default \"\"\n\t */\n\t@property({ type: String })\n\toptions = \"\";\n\n\t/**\n\t * Defines the open or closed state of the popover.\n\t * @private\n\t * @default false\n\t */\n\t@property({ type: Boolean })\n\topen = false;\n\n\t@property({ type: Object })\n\t_currentOption?: IDynamicDateRangeOption;\n\n\t@property({ type: Object })\n\tcurrentValue?: DynamicDateRangeValue;\n\n\toptionsObjects: IDynamicDateRangeOption[] = [];\n\n\tstatic optionsClasses: Map<string, new () => IDynamicDateRangeOption> = new Map();\n\n\t@query(\"[ui5-input]\")\n\t_input?: Input;\n\n\t@query(\"[ui5-list]\")\n\t_list?: List;\n\n\tonBeforeRendering() {\n\t\tconst optionKeys = this.options.split(\",\").map(option => option.trim());\n\n\t\tthis.optionsObjects = optionKeys.map(option => {\n\t\t\tconst OptionClass = DynamicDateRange.getOptionClass(option);\n\t\t\tlet optionObject;\n\n\t\t\tif (OptionClass) {\n\t\t\t\toptionObject = new OptionClass();\n\t\t\t}\n\n\t\t\treturn optionObject;\n\t\t}).filter(optionObject => optionObject !== undefined);\n\n\t\tif (this.value) {\n\t\t\tconst selectedItem = this._list?.items.find(item => {\n\t\t\t\tconst option = this.optionsObjects.find(x => x.operator === this.value?.operator);\n\t\t\t\treturn option && item.textContent === option.text;\n\t\t\t}) as ListItem;\n\n\t\t\tthis._list?.focusItem(selectedItem);\n\t\t}\n\t}\n\n\tget _optionsTitles(): Array<string> {\n\t\treturn this.optionsObjects.map(option => option.text);\n\t}\n\n\t/**\n\t * Defines whether the value help icon is hidden\n\t * @private\n\t */\n\tget _iconMode() {\n\t\treturn isDesktop() ? IconMode.Decorative : IconMode.Interactive;\n\t}\n\n\tget tooltipNavigationIcon() {\n\t\treturn DynamicDateRange.i18nBundle.getText(DYNAMIC_DATE_RANGE_NAVIGATION_ICON_TOOLTIP);\n\t}\n\n\t_togglePicker(): void {\n\t\tif (this.open) {\n\t\t\tthis.open = false;\n\t\t} else {\n\t\t\tthis.open = true;\n\t\t}\n\t}\n\n\t_selectOption(e: CustomEvent): void {\n\t\tthis._currentOption = this.optionsObjects.find(option => option.text === e.detail.item.textContent);\n\t\tif (!this._currentOption?.template) {\n\t\t\tthis.currentValue = this._currentOption?.parse(this._currentOption.text);\n\t\t\tthis._submitValue();\n\t\t}\n\n\t\tif (this._currentOption?.operator === this.value?.operator) {\n\t\t\tthis.currentValue = this.value;\n\t\t}\n\t}\n\n\tgetOption(operator: string) {\n\t\tconst resultOption = this.optionsObjects.find(option => option.operator === operator);\n\n\t\tif (!resultOption) {\n\t\t\tconst OptionClass = DynamicDateRange.getOptionClass(operator);\n\n\t\t\tif (OptionClass) {\n\t\t\t\tconst optionObject = new OptionClass();\n\t\t\t\tthis.optionsObjects.push(optionObject);\n\n\t\t\t\treturn optionObject;\n\t\t\t}\n\t\t}\n\n\t\treturn resultOption;\n\t}\n\n\tonInputChange(e: Event): void {\n\t\tconst value = (e.target as Input)?.value;\n\n\t\tif (!value) {\n\t\t\tthis.value = undefined;\n\t\t\tthis.fireDecoratorEvent(\"change\");\n\n\t\t\treturn;\n\t\t}\n\n\t\tconst currentOption = this.optionsObjects.find(option => option.isValidString(value));\n\n\t\tthis.value = currentOption ? this.getOption(currentOption.operator)?.parse(value) : undefined;\n\n\t\tif (this.value) {\n\t\t\tthis.fireDecoratorEvent(\"change\");\n\t\t}\n\t}\n\n\tonButtonBackClick() {\n\t\tthis._currentOption = undefined;\n\t}\n\n\t/**\n\t * Converts a `value` into concrete `startDate` and `endDate` JavaScript `Date` objects.\n\t *\n\t * @public\n\t * @param value The option to convert into an array of date ranges\n\t * @returns An array of two `Date` objects representing the start and end dates.\n\t */\n\ttoDates(value: DynamicDateRangeValue): Date[] {\n\t\treturn this.getOption(value.operator)?.toDates(value) as Date[];\n\t}\n\n\tget _hasCurrentOptionTemplate(): boolean {\n\t\treturn !!this._currentOption?.template;\n\t}\n\n\t_submitValue() {\n\t\tconst stringValue = this._currentOption?.format(this.currentValue!) as string;\n\n\t\tif (this._input) {\n\t\t\tthis._input.value = stringValue;\n\t\t}\n\n\t\tif (this._currentOption?.isValidString(stringValue)) {\n\t\t\tthis.value = this.currentValue as DynamicDateRangeValue;\n\t\t\tthis.fireDecoratorEvent(\"change\");\n\t\t} else {\n\t\t\tthis.value = undefined;\n\t\t}\n\n\t\tthis._currentOption = undefined;\n\t\tthis.open = false;\n\t}\n\n\t_close() {\n\t\tthis._currentOption = undefined;\n\t\tthis.open = false;\n\t}\n\n\tonPopoverOpen() {\n\t\tif (this.currentValue !== this.value) {\n\t\t\tthis.currentValue = this.value;\n\t\t}\n\t}\n\n\tonPopoverClose() {\n\t\tthis._close();\n\t}\n\n\tget currentValueText() {\n\t\tif (this.currentValue && this.currentValue.operator === this._currentOption?.operator) {\n\t\t\treturn `${DynamicDateRange.i18nBundle.getText(DYNAMIC_DATE_RANGE_SELECTED_TEXT)}: ${this._currentOption?.format(this.currentValue)}`;\n\t\t}\n\n\t\treturn DynamicDateRange.i18nBundle.getText(DYNAMIC_DATE_RANGE_EMPTY_SELECTED_TEXT);\n\t}\n\n\thandleSelectionChange(e: CustomEvent) {\n\t\tthis.currentValue = this._currentOption?.handleSelectionChange && this._currentOption?.handleSelectionChange(e) as DynamicDateRangeValue;\n\t}\n\n\tonInputKeyDown(e: KeyboardEvent) {\n\t\tif (isShow(e)) {\n\t\t\te.preventDefault();\n\t\t\tif (this.open) {\n\t\t\t\tif (!isF4(e)) {\n\t\t\t\t\tthis._toggleAndFocusInput();\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthis._toggleAndFocusInput();\n\t\t\t}\n\t\t}\n\t}\n\n\t_toggleAndFocusInput() {\n\t\tthis._togglePicker();\n\t\tif (this.open) {\n\t\t\tthis._input?.focus();\n\t\t}\n\t}\n\n\tonKeyDownPopover(e: KeyboardEvent) {\n\t\tif (isShow(e)) {\n\t\t\te.preventDefault(); // Prevent scroll on Alt/Option + Arrow Up/Down\n\t\t\tthis._toggleAndFocusInput();\n\t\t}\n\t}\n\n\t/**\n\t * Registers a new dynamic date range option with a unique key.\n\t *\n\t * Example:\n\t * DynamicDateRange.register(\"LASTWEEK\", LastWeek);\n\t */\n\tstatic register(operator: string, option: new () => IDynamicDateRangeOption): void {\n\t\toperator = operator.toUpperCase();\n\n\t\tif (!this.optionsClasses.has(operator)) {\n\t\t\tthis.optionsClasses.set(operator, option);\n\t\t}\n\t}\n\n\tstatic getOptionClass(operator: string): (new () => IDynamicDateRangeOption) | undefined {\n\t\treturn this.optionsClasses.get(operator);\n\t}\n}\n\nDynamicDateRange.define();\n\nexport default DynamicDateRange;\n\nexport type {\n\tDynamicDateRangeValue,\n\tIDynamicDateRangeOption,\n};\n"]}
|
package/dist/InputTemplate.js
CHANGED
|
@@ -6,7 +6,7 @@ export default function InputTemplate(hooks) {
|
|
|
6
6
|
const suggestionsList = hooks?.suggestionsList;
|
|
7
7
|
const preContent = hooks?.preContent || defaultPreContent;
|
|
8
8
|
const postContent = hooks?.postContent || defaultPostContent;
|
|
9
|
-
return (_jsxs(_Fragment, { children: [_jsx("div", { class: "ui5-input-root ui5-input-focusable-element", part: "root", onFocusIn: this._onfocusin, onFocusOut: this._onfocusout, children: _jsxs("div", { class: "ui5-input-content", children: [preContent.call(this), _jsx("input", { id: "inner", part: "input", class: "ui5-input-inner", style: this.styles.innerInput, type: this.inputNativeType, "inner-input": true, "inner-input-with-icon": this.icon.length, disabled: this.disabled, readonly: this._readonly, value: this._innerValue, placeholder: this._placeholder, maxlength: this.maxlength, role: this.accInfo.role, enterkeyhint: this.hint, "aria-controls": this.accInfo.ariaControls, "aria-invalid": this.accInfo.ariaInvalid, "aria-haspopup": this.accInfo.ariaHasPopup, "aria-describedby": this.accInfo.ariaDescribedBy, "aria-roledescription": this.accInfo.ariaRoledescription, "aria-autocomplete": this.accInfo.ariaAutoComplete, "aria-expanded": this.accInfo.ariaExpanded, "aria-label": this.accInfo.ariaLabel, "aria-required": this.required, autocomplete: "off", "data-sap-focus-ref": true, step: this.nativeInputAttributes.step, min: this.nativeInputAttributes.min, max: this.nativeInputAttributes.max, onInput: this._handleNativeInput, onChange: this._handleChange, onSelect: this._handleSelect, onKeyDown: this._onkeydown, onKeyUp: this._onkeyup, onClick: this._click, onFocusIn: this.innerFocusIn }), this._effectiveShowClearIcon &&
|
|
9
|
+
return (_jsxs(_Fragment, { children: [_jsx("div", { class: "ui5-input-root ui5-input-focusable-element", part: "root", onFocusIn: this._onfocusin, onFocusOut: this._onfocusout, children: _jsxs("div", { class: "ui5-input-content", children: [preContent.call(this), _jsx("input", { id: "inner", part: "input", class: "ui5-input-inner", style: this.styles.innerInput, type: this.inputNativeType, "inner-input": true, "inner-input-with-icon": !!this.icon.length, disabled: this.disabled, readonly: this._readonly, value: this._innerValue, placeholder: this._placeholder, maxlength: this.maxlength, role: this.accInfo.role, enterkeyhint: this.hint, "aria-controls": this.accInfo.ariaControls, "aria-invalid": this.accInfo.ariaInvalid, "aria-haspopup": this.accInfo.ariaHasPopup, "aria-describedby": this.accInfo.ariaDescribedBy, "aria-roledescription": this.accInfo.ariaRoledescription, "aria-autocomplete": this.accInfo.ariaAutoComplete, "aria-expanded": this.accInfo.ariaExpanded, "aria-label": this.accInfo.ariaLabel, "aria-required": this.required, autocomplete: "off", "data-sap-focus-ref": true, step: this.nativeInputAttributes.step, min: this.nativeInputAttributes.min, max: this.nativeInputAttributes.max, onInput: this._handleNativeInput, onChange: this._handleChange, onSelect: this._handleSelect, onKeyDown: this._onkeydown, onKeyUp: this._onkeyup, onClick: this._click, onFocusIn: this.innerFocusIn }), this._effectiveShowClearIcon &&
|
|
10
10
|
_jsx("div", { tabindex: -1, class: "ui5-input-clear-icon-wrapper inputIcon", part: "clear-icon-wrapper", onClick: this._clear, onMouseDown: this._iconMouseDown, children: _jsx(Icon, { part: "clear-icon", class: "ui5-input-clear-icon", name: decline, tabindex: -1, accessibleName: this.clearIconAccessibleName }) }), this.icon.length > 0 &&
|
|
11
11
|
_jsx("div", { class: "ui5-input-icon-root", tabindex: -1, children: _jsx("slot", { name: "icon" }) }), _jsx("div", { class: "ui5-input-value-state-icon", children: this._valueStateInputIcon }), postContent.call(this), this._effectiveShowSuggestions &&
|
|
12
12
|
_jsxs(_Fragment, { children: [_jsx("span", { id: "suggestionsText", class: "ui5-hidden-text", children: this.suggestionsText }), _jsx("span", { id: "selectionText", class: "ui5-hidden-text", "aria-live": "polite", role: "status" }), _jsx("span", { id: "suggestionsCount", class: "ui5-hidden-text", "aria-live": "polite", children: this.availableSuggestionsCount })] }), this.accInfo.ariaDescription &&
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InputTemplate.js","sourceRoot":"","sources":["../src/InputTemplate.tsx"],"names":[],"mappings":";AAEA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,OAAO,MAAM,0CAA0C,CAAC;AAC/D,OAAO,oBAAoB,MAAM,2BAA2B,CAAC;AAI7D,MAAM,CAAC,OAAO,UAAU,aAAa,CAAc,KAA+F;IACjJ,MAAM,eAAe,GAAG,KAAK,EAAE,eAAe,CAAC;IAC/C,MAAM,UAAU,GAAG,KAAK,EAAE,UAAU,IAAI,iBAAiB,CAAC;IAC1D,MAAM,WAAW,GAAG,KAAK,EAAE,WAAW,IAAI,kBAAkB,CAAC;IAE7D,OAAO,CACN,8BACC,cACC,KAAK,EAAC,4CAA4C,EAClD,IAAI,EAAC,MAAM,EACX,SAAS,EAAE,IAAI,CAAC,UAAU,EAC1B,UAAU,EAAE,IAAI,CAAC,WAAW,YAE5B,eAAK,KAAK,EAAC,mBAAmB,aAC3B,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAEvB,gBACC,EAAE,EAAC,OAAO,EACV,IAAI,EAAC,OAAO,EACZ,KAAK,EAAC,iBAAiB,EACvB,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU,EAC7B,IAAI,EAAE,IAAI,CAAC,eAAe,gDAEH,IAAI,CAAC,IAAI,CAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"InputTemplate.js","sourceRoot":"","sources":["../src/InputTemplate.tsx"],"names":[],"mappings":";AAEA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,OAAO,MAAM,0CAA0C,CAAC;AAC/D,OAAO,oBAAoB,MAAM,2BAA2B,CAAC;AAI7D,MAAM,CAAC,OAAO,UAAU,aAAa,CAAc,KAA+F;IACjJ,MAAM,eAAe,GAAG,KAAK,EAAE,eAAe,CAAC;IAC/C,MAAM,UAAU,GAAG,KAAK,EAAE,UAAU,IAAI,iBAAiB,CAAC;IAC1D,MAAM,WAAW,GAAG,KAAK,EAAE,WAAW,IAAI,kBAAkB,CAAC;IAE7D,OAAO,CACN,8BACC,cACC,KAAK,EAAC,4CAA4C,EAClD,IAAI,EAAC,MAAM,EACX,SAAS,EAAE,IAAI,CAAC,UAAU,EAC1B,UAAU,EAAE,IAAI,CAAC,WAAW,YAE5B,eAAK,KAAK,EAAC,mBAAmB,aAC3B,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAEvB,gBACC,EAAE,EAAC,OAAO,EACV,IAAI,EAAC,OAAO,EACZ,KAAK,EAAC,iBAAiB,EACvB,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU,EAC7B,IAAI,EAAE,IAAI,CAAC,eAAe,gDAEH,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EACzC,QAAQ,EAAE,IAAI,CAAC,QAAQ,EACvB,QAAQ,EAAE,IAAI,CAAC,SAAS,EACxB,KAAK,EAAE,IAAI,CAAC,WAAW,EACvB,WAAW,EAAE,IAAI,CAAC,YAAY,EAC9B,SAAS,EAAE,IAAI,CAAC,SAAS,EACzB,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,EACvB,YAAY,EAAE,IAAI,CAAC,IAAI,mBACR,IAAI,CAAC,OAAO,CAAC,YAAY,kBAC1B,IAAI,CAAC,OAAO,CAAC,WAAW,mBACvB,IAAI,CAAC,OAAO,CAAC,YAAY,sBACtB,IAAI,CAAC,OAAO,CAAC,eAAe,0BACxB,IAAI,CAAC,OAAO,CAAC,mBAAmB,uBACnC,IAAI,CAAC,OAAO,CAAC,gBAAgB,mBACjC,IAAI,CAAC,OAAO,CAAC,YAAY,gBAC5B,IAAI,CAAC,OAAO,CAAC,SAAS,mBACnB,IAAI,CAAC,QAAQ,EAC5B,YAAY,EAAC,KAAK,8BAElB,IAAI,EAAE,IAAI,CAAC,qBAAqB,CAAC,IAAI,EACrC,GAAG,EAAE,IAAI,CAAC,qBAAqB,CAAC,GAAG,EACnC,GAAG,EAAE,IAAI,CAAC,qBAAqB,CAAC,GAAG,EACnC,OAAO,EAAE,IAAI,CAAC,kBAAkB,EAChC,QAAQ,EAAE,IAAI,CAAC,aAAa,EAC5B,QAAQ,EAAE,IAAI,CAAC,aAAa,EAC5B,SAAS,EAAE,IAAI,CAAC,UAAU,EAC1B,OAAO,EAAE,IAAI,CAAC,QAAQ,EACtB,OAAO,EAAE,IAAI,CAAC,MAAM,EACpB,SAAS,EAAE,IAAI,CAAC,YAAY,GAC3B,EAED,IAAI,CAAC,uBAAuB;4BAC5B,cACC,QAAQ,EAAE,CAAC,CAAC,EACZ,KAAK,EAAC,wCAAwC,EAC9C,IAAI,EAAC,oBAAoB,EACzB,OAAO,EAAE,IAAI,CAAC,MAAM,EACpB,WAAW,EAAE,IAAI,CAAC,cAAc,YAEhC,KAAC,IAAI,IACJ,IAAI,EAAC,YAAY,EACjB,KAAK,EAAC,sBAAsB,EAC5B,IAAI,EAAE,OAAO,EACb,QAAQ,EAAE,CAAC,CAAC,EACZ,cAAc,EAAE,IAAI,CAAC,uBAAuB,GACtC,GACF,EAGN,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC;4BACpB,cAAK,KAAK,EAAC,qBAAqB,EAC/B,QAAQ,EAAE,CAAC,CAAC,YAEZ,eAAM,IAAI,EAAC,MAAM,GAAQ,GACpB,EAGP,cAAK,KAAK,EAAC,4BAA4B,YACrC,IAAI,CAAC,oBAAoB,GACrB,EAEJ,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAEvB,IAAI,CAAC,yBAAyB;4BAC9B,8BACC,eAAM,EAAE,EAAC,iBAAiB,EAAC,KAAK,EAAC,iBAAiB,YAAE,IAAI,CAAC,eAAe,GAAQ,EAChF,eAAM,EAAE,EAAC,eAAe,EAAC,KAAK,EAAC,iBAAiB,eAAW,QAAQ,EAAC,IAAI,EAAC,QAAQ,GAAQ,EACzF,eAAM,EAAE,EAAC,kBAAkB,EAAC,KAAK,EAAC,iBAAiB,eAAW,QAAQ,YAAE,IAAI,CAAC,yBAAyB,GAAQ,IAC5G,EAGH,IAAI,CAAC,OAAO,CAAC,eAAe;4BAC5B,eAAM,EAAE,EAAC,OAAO,EAAC,KAAK,EAAC,iBAAiB,YAAE,IAAI,CAAC,OAAO,CAAC,eAAe,GAAQ,EAG9E,IAAI,CAAC,OAAO,CAAC,qBAAqB;4BAClC,eAAM,EAAE,EAAC,uBAAuB,EAAC,KAAK,EAAC,iBAAiB,YAAE,IAAI,CAAC,OAAO,CAAC,qBAAqB,GAAQ,EAGpG,IAAI,CAAC,aAAa;4BAClB,eAAM,EAAE,EAAC,gBAAgB,EAAC,KAAK,EAAC,iBAAiB,YAAE,IAAI,CAAC,wBAAwB,GAAQ,IAEpF,GACD,EAEJ,oBAAoB,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,eAAe,EAAE,CAAC,IACpD,CACH,CAAC;AACH,CAAC;AAED,SAAS,iBAAiB,KAAI,CAAC;AAE/B,SAAS,kBAAkB,KAAI,CAAC","sourcesContent":["import type Input from \"./Input.js\";\nimport type { JsxTemplateResult } from \"@ui5/webcomponents-base/dist/index.js\";\nimport Icon from \"./Icon.js\";\nimport decline from \"@ui5/webcomponents-icons/dist/decline.js\";\nimport InputPopoverTemplate from \"./InputPopoverTemplate.js\";\n\ntype TemplateHook = () => JsxTemplateResult;\n\nexport default function InputTemplate(this: Input, hooks?: { preContent: TemplateHook, postContent: TemplateHook, suggestionsList?: TemplateHook }) {\n\tconst suggestionsList = hooks?.suggestionsList;\n\tconst preContent = hooks?.preContent || defaultPreContent;\n\tconst postContent = hooks?.postContent || defaultPostContent;\n\n\treturn (\n\t\t<>\n\t\t\t<div\n\t\t\t\tclass=\"ui5-input-root ui5-input-focusable-element\"\n\t\t\t\tpart=\"root\"\n\t\t\t\tonFocusIn={this._onfocusin}\n\t\t\t\tonFocusOut={this._onfocusout}\n\t\t\t>\n\t\t\t\t<div class=\"ui5-input-content\">\n\t\t\t\t\t{ preContent.call(this) }\n\n\t\t\t\t\t<input\n\t\t\t\t\t\tid=\"inner\"\n\t\t\t\t\t\tpart=\"input\"\n\t\t\t\t\t\tclass=\"ui5-input-inner\"\n\t\t\t\t\t\tstyle={this.styles.innerInput}\n\t\t\t\t\t\ttype={this.inputNativeType}\n\t\t\t\t\t\tinner-input\n\t\t\t\t\t\tinner-input-with-icon={!!this.icon.length}\n\t\t\t\t\t\tdisabled={this.disabled}\n\t\t\t\t\t\treadonly={this._readonly}\n\t\t\t\t\t\tvalue={this._innerValue}\n\t\t\t\t\t\tplaceholder={this._placeholder}\n\t\t\t\t\t\tmaxlength={this.maxlength}\n\t\t\t\t\t\trole={this.accInfo.role}\n\t\t\t\t\t\tenterkeyhint={this.hint}\n\t\t\t\t\t\taria-controls={this.accInfo.ariaControls}\n\t\t\t\t\t\taria-invalid={this.accInfo.ariaInvalid}\n\t\t\t\t\t\taria-haspopup={this.accInfo.ariaHasPopup}\n\t\t\t\t\t\taria-describedby={this.accInfo.ariaDescribedBy}\n\t\t\t\t\t\taria-roledescription={this.accInfo.ariaRoledescription}\n\t\t\t\t\t\taria-autocomplete={this.accInfo.ariaAutoComplete}\n\t\t\t\t\t\taria-expanded={this.accInfo.ariaExpanded}\n\t\t\t\t\t\taria-label={this.accInfo.ariaLabel}\n\t\t\t\t\t\taria-required={this.required}\n\t\t\t\t\t\tautocomplete=\"off\"\n\t\t\t\t\t\tdata-sap-focus-ref\n\t\t\t\t\t\tstep={this.nativeInputAttributes.step}\n\t\t\t\t\t\tmin={this.nativeInputAttributes.min}\n\t\t\t\t\t\tmax={this.nativeInputAttributes.max}\n\t\t\t\t\t\tonInput={this._handleNativeInput}\n\t\t\t\t\t\tonChange={this._handleChange}\n\t\t\t\t\t\tonSelect={this._handleSelect}\n\t\t\t\t\t\tonKeyDown={this._onkeydown}\n\t\t\t\t\t\tonKeyUp={this._onkeyup}\n\t\t\t\t\t\tonClick={this._click}\n\t\t\t\t\t\tonFocusIn={this.innerFocusIn}\n\t\t\t\t\t/>\n\n\t\t\t\t\t{this._effectiveShowClearIcon &&\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\ttabindex={-1}\n\t\t\t\t\t\t\tclass=\"ui5-input-clear-icon-wrapper inputIcon\"\n\t\t\t\t\t\t\tpart=\"clear-icon-wrapper\"\n\t\t\t\t\t\t\tonClick={this._clear}\n\t\t\t\t\t\t\tonMouseDown={this._iconMouseDown}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\t\tpart=\"clear-icon\"\n\t\t\t\t\t\t\t\tclass=\"ui5-input-clear-icon\"\n\t\t\t\t\t\t\t\tname={decline}\n\t\t\t\t\t\t\t\ttabindex={-1}\n\t\t\t\t\t\t\t\taccessibleName={this.clearIconAccessibleName}>\n\t\t\t\t\t\t\t</Icon>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t}\n\n\t\t\t\t\t{this.icon.length > 0 &&\n\t\t\t\t\t\t<div class=\"ui5-input-icon-root\"\n\t\t\t\t\t\t\ttabindex={-1}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<slot name=\"icon\"></slot>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t}\n\n\t\t\t\t\t<div class=\"ui5-input-value-state-icon\">\n\t\t\t\t\t\t{this._valueStateInputIcon}\n\t\t\t\t\t</div>\n\n\t\t\t\t\t{ postContent.call(this) }\n\n\t\t\t\t\t{this._effectiveShowSuggestions &&\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<span id=\"suggestionsText\" class=\"ui5-hidden-text\">{this.suggestionsText}</span>\n\t\t\t\t\t\t\t<span id=\"selectionText\" class=\"ui5-hidden-text\" aria-live=\"polite\" role=\"status\"></span>\n\t\t\t\t\t\t\t<span id=\"suggestionsCount\" class=\"ui5-hidden-text\" aria-live=\"polite\">{this.availableSuggestionsCount}</span>\n\t\t\t\t\t\t</>\n\t\t\t\t\t}\n\n\t\t\t\t\t{this.accInfo.ariaDescription &&\n\t\t\t\t\t\t<span id=\"descr\" class=\"ui5-hidden-text\">{this.accInfo.ariaDescription}</span>\n\t\t\t\t\t}\n\n\t\t\t\t\t{this.accInfo.accessibleDescription &&\n\t\t\t\t\t\t<span id=\"accessibleDescription\" class=\"ui5-hidden-text\">{this.accInfo.accessibleDescription}</span>\n\t\t\t\t\t}\n\n\t\t\t\t\t{this.hasValueState &&\n\t\t\t\t\t\t<span id=\"valueStateDesc\" class=\"ui5-hidden-text\">{this.ariaValueStateHiddenText}</span>\n\t\t\t\t\t}\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t{ InputPopoverTemplate.call(this, { suggestionsList }) }\n\t\t</>\n\t);\n}\n\nfunction defaultPreContent() {}\n\nfunction defaultPostContent() {}\n"]}
|
package/dist/Popup.d.ts
CHANGED
|
@@ -80,6 +80,25 @@ declare abstract class Popup extends UI5Element {
|
|
|
80
80
|
* @since 1.10.0
|
|
81
81
|
*/
|
|
82
82
|
accessibleRole: `${PopupAccessibleRole}`;
|
|
83
|
+
/**
|
|
84
|
+
* Defines the accessible description of the component.
|
|
85
|
+
* @default undefined
|
|
86
|
+
* @public
|
|
87
|
+
* @since 2.11.0
|
|
88
|
+
*/
|
|
89
|
+
accessibleDescription?: string;
|
|
90
|
+
/**
|
|
91
|
+
* Receives id(or many ids) of the elements that describe the component.
|
|
92
|
+
* @default undefined
|
|
93
|
+
* @public
|
|
94
|
+
* @since 2.11.0
|
|
95
|
+
*/
|
|
96
|
+
accessibleDescriptionRef?: string;
|
|
97
|
+
/**
|
|
98
|
+
* Constantly updated value of texts collected from the associated labels.
|
|
99
|
+
* @private
|
|
100
|
+
*/
|
|
101
|
+
_associatedDescriptionRefTexts?: string;
|
|
83
102
|
/**
|
|
84
103
|
* Defines the current media query size.
|
|
85
104
|
* @private
|
|
@@ -177,6 +196,7 @@ declare abstract class Popup extends UI5Element {
|
|
|
177
196
|
applyFocus(): Promise<void>;
|
|
178
197
|
isFocusWithin(): boolean;
|
|
179
198
|
_updateMediaRange(): void;
|
|
199
|
+
_updateAssociatedLabelsTexts(): void;
|
|
180
200
|
/**
|
|
181
201
|
* Adds the popup to the "opened popups registry"
|
|
182
202
|
* @protected
|
|
@@ -221,6 +241,10 @@ declare abstract class Popup extends UI5Element {
|
|
|
221
241
|
* @protected
|
|
222
242
|
*/
|
|
223
243
|
get _ariaLabel(): string | undefined;
|
|
244
|
+
get _accInfoAriaDescription(): string;
|
|
245
|
+
get ariaDescriptionText(): string | undefined;
|
|
246
|
+
get ariaDescriptionTextId(): "" | "accessibleDescription";
|
|
247
|
+
get ariaDescribedByIds(): string;
|
|
224
248
|
get _root(): HTMLElement;
|
|
225
249
|
get _role(): "dialog" | "alertdialog" | undefined;
|
|
226
250
|
get _ariaModal(): "true" | undefined;
|
package/dist/Popup.js
CHANGED
|
@@ -14,7 +14,7 @@ import jsxRender from "@ui5/webcomponents-base/dist/renderer/JsxRenderer.js";
|
|
|
14
14
|
import UI5Element from "@ui5/webcomponents-base/dist/UI5Element.js";
|
|
15
15
|
import { isChrome, isDesktop, isPhone, } from "@ui5/webcomponents-base/dist/Device.js";
|
|
16
16
|
import { getFirstFocusableElement, getLastFocusableElement } from "@ui5/webcomponents-base/dist/util/FocusableElements.js";
|
|
17
|
-
import { getEffectiveAriaLabelText } from "@ui5/webcomponents-base/dist/util/AccessibilityTextsHelper.js";
|
|
17
|
+
import { registerUI5Element, getEffectiveAriaLabelText, getEffectiveAriaDescriptionText, getAllAccessibleDescriptionRefTexts, deregisterUI5Element, } from "@ui5/webcomponents-base/dist/util/AccessibilityTextsHelper.js";
|
|
18
18
|
import { hasStyle, createStyle } from "@ui5/webcomponents-base/dist/ManagedStyles.js";
|
|
19
19
|
import { isEnter, isTabPrevious } from "@ui5/webcomponents-base/dist/Keys.js";
|
|
20
20
|
import { getFocusedElement, isFocusedElementWithinNode } from "@ui5/webcomponents-base/dist/util/PopupUtils.js";
|
|
@@ -128,6 +128,7 @@ let Popup = Popup_1 = class Popup extends UI5Element {
|
|
|
128
128
|
this.showPopover();
|
|
129
129
|
this.openPopup();
|
|
130
130
|
}
|
|
131
|
+
registerUI5Element(this, this._updateAssociatedLabelsTexts.bind(this));
|
|
131
132
|
}
|
|
132
133
|
onExitDOM() {
|
|
133
134
|
if (this._opened) {
|
|
@@ -135,6 +136,7 @@ let Popup = Popup_1 = class Popup extends UI5Element {
|
|
|
135
136
|
this._removeOpenedPopup();
|
|
136
137
|
}
|
|
137
138
|
ResizeHandler.deregister(this, this._resizeHandler);
|
|
139
|
+
deregisterUI5Element(this);
|
|
138
140
|
}
|
|
139
141
|
/**
|
|
140
142
|
* Indicates if the element is open
|
|
@@ -322,6 +324,9 @@ let Popup = Popup_1 = class Popup extends UI5Element {
|
|
|
322
324
|
_updateMediaRange() {
|
|
323
325
|
this.mediaRange = MediaRange.getCurrentRange(MediaRange.RANGESETS.RANGE_4STEPS, this.getDomRef().offsetWidth);
|
|
324
326
|
}
|
|
327
|
+
_updateAssociatedLabelsTexts() {
|
|
328
|
+
this._associatedDescriptionRefTexts = getAllAccessibleDescriptionRefTexts(this);
|
|
329
|
+
}
|
|
325
330
|
/**
|
|
326
331
|
* Adds the popup to the "opened popups registry"
|
|
327
332
|
* @protected
|
|
@@ -394,6 +399,20 @@ let Popup = Popup_1 = class Popup extends UI5Element {
|
|
|
394
399
|
get _ariaLabel() {
|
|
395
400
|
return getEffectiveAriaLabelText(this);
|
|
396
401
|
}
|
|
402
|
+
get _accInfoAriaDescription() {
|
|
403
|
+
return this.ariaDescriptionText || "";
|
|
404
|
+
}
|
|
405
|
+
get ariaDescriptionText() {
|
|
406
|
+
return this._associatedDescriptionRefTexts || getEffectiveAriaDescriptionText(this);
|
|
407
|
+
}
|
|
408
|
+
get ariaDescriptionTextId() {
|
|
409
|
+
return this.ariaDescriptionText ? "accessibleDescription" : "";
|
|
410
|
+
}
|
|
411
|
+
get ariaDescribedByIds() {
|
|
412
|
+
return [
|
|
413
|
+
this.ariaDescriptionTextId,
|
|
414
|
+
].filter(Boolean).join(" ");
|
|
415
|
+
}
|
|
397
416
|
get _root() {
|
|
398
417
|
return this.shadowRoot.querySelector(".ui5-popup-root");
|
|
399
418
|
}
|
|
@@ -438,6 +457,15 @@ __decorate([
|
|
|
438
457
|
__decorate([
|
|
439
458
|
property()
|
|
440
459
|
], Popup.prototype, "accessibleRole", void 0);
|
|
460
|
+
__decorate([
|
|
461
|
+
property()
|
|
462
|
+
], Popup.prototype, "accessibleDescription", void 0);
|
|
463
|
+
__decorate([
|
|
464
|
+
property()
|
|
465
|
+
], Popup.prototype, "accessibleDescriptionRef", void 0);
|
|
466
|
+
__decorate([
|
|
467
|
+
property({ noAttribute: true })
|
|
468
|
+
], Popup.prototype, "_associatedDescriptionRefTexts", void 0);
|
|
441
469
|
__decorate([
|
|
442
470
|
property()
|
|
443
471
|
], Popup.prototype, "mediaRange", void 0);
|
package/dist/Popup.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Popup.js","sourceRoot":"","sources":["../src/Popup.ts"],"names":[],"mappings":"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","sourcesContent":["import customElement from \"@ui5/webcomponents-base/dist/decorators/customElement.js\";\nimport { renderFinished } from \"@ui5/webcomponents-base/dist/Render.js\";\nimport event from \"@ui5/webcomponents-base/dist/decorators/event-strict.js\";\nimport slot from \"@ui5/webcomponents-base/dist/decorators/slot.js\";\nimport property from \"@ui5/webcomponents-base/dist/decorators/property.js\";\nimport type { ClassMap } from \"@ui5/webcomponents-base/dist/types.js\";\nimport jsxRender from \"@ui5/webcomponents-base/dist/renderer/JsxRenderer.js\";\nimport UI5Element from \"@ui5/webcomponents-base/dist/UI5Element.js\";\nimport {\n\tisChrome,\n\tisDesktop,\n\tisPhone,\n} from \"@ui5/webcomponents-base/dist/Device.js\";\nimport { getFirstFocusableElement, getLastFocusableElement } from \"@ui5/webcomponents-base/dist/util/FocusableElements.js\";\nimport { getEffectiveAriaLabelText } from \"@ui5/webcomponents-base/dist/util/AccessibilityTextsHelper.js\";\nimport { hasStyle, createStyle } from \"@ui5/webcomponents-base/dist/ManagedStyles.js\";\nimport { isEnter, isTabPrevious } from \"@ui5/webcomponents-base/dist/Keys.js\";\nimport { getFocusedElement, isFocusedElementWithinNode } from \"@ui5/webcomponents-base/dist/util/PopupUtils.js\";\nimport ResizeHandler from \"@ui5/webcomponents-base/dist/delegate/ResizeHandler.js\";\nimport type { ResizeObserverCallback } from \"@ui5/webcomponents-base/dist/delegate/ResizeHandler.js\";\nimport MediaRange from \"@ui5/webcomponents-base/dist/MediaRange.js\";\nimport toLowercaseEnumValue from \"@ui5/webcomponents-base/dist/util/toLowercaseEnumValue.js\";\nimport PopupTemplate from \"./PopupTemplate.js\";\nimport PopupAccessibleRole from \"./types/PopupAccessibleRole.js\";\nimport { addOpenedPopup, removeOpenedPopup } from \"./popup-utils/OpenedPopupsRegistry.js\";\n\n// Styles\nimport popupStlyes from \"./generated/themes/Popup.css.js\";\nimport popupBlockLayerStyles from \"./generated/themes/PopupBlockLayer.css.js\";\nimport globalStyles from \"./generated/themes/PopupGlobal.css.js\";\n\nconst createBlockingStyle = (): void => {\n\tif (!hasStyle(\"data-ui5-popup-scroll-blocker\")) {\n\t\tcreateStyle(globalStyles, \"data-ui5-popup-scroll-blocker\");\n\t}\n};\n\ncreateBlockingStyle();\n\nconst pageScrollingBlockers = new Set<Popup>();\n\ntype PopupScrollEventDetail = {\n\tscrollTop: number;\n\ttargetRef: HTMLElement;\n}\n\ntype PopupBeforeCloseEventDetail = {\n\tescPressed: boolean;\n}\n\n/**\n * @class\n * ### Overview\n * Base class for all popup Web Components.\n *\n * If you need to create your own popup-like custom UI5 Web Components.\n *\n * 1. The Popup class handles modality:\n * - The \"isModal\" getter can be overridden by derivatives to provide their own conditions when they are modal or not\n * - Derivatives may call the \"blockPageScrolling\" and \"unblockPageScrolling\" static methods to temporarily remove scrollbars on the html element\n * - Derivatives may call the \"openPopup\" and \"closePopup\" methods which handle focus, manage the popup registry and for modal popups, manage the blocking layer\n *\n * 2. Provides blocking layer (relevant for modal popups only):\n * - Controlled by the \"open\" and \"close\" methods\n *\n * 3. The Popup class \"traps\" focus:\n * - Derivatives may call the \"applyInitialFocus\" method (usually when opening, to transfer focus inside the popup)\n *\n * 4. The template of this component exposes two inline partials you can override in derivatives:\n * - beforeContent (upper part of the box, useful for header/title/close button)\n * - afterContent (lower part, useful for footer/action buttons)\n * @constructor\n * @extends UI5Element\n * @public\n */\n@customElement({\n\trenderer: jsxRender,\n\tstyles: [popupStlyes, popupBlockLayerStyles],\n\ttemplate: PopupTemplate,\n})\n/**\n * Fired before the component is opened. This event can be cancelled, which will prevent the popup from opening.\n * @public\n */\n@event(\"before-open\", {\n\tcancelable: true,\n})\n\n/**\n * Fired after the component is opened.\n * @public\n */\n@event(\"open\")\n\n/**\n * Fired before the component is closed. This event can be cancelled, which will prevent the popup from closing.\n * @public\n * @param {boolean} escPressed Indicates that `ESC` key has triggered the event.\n */\n@event(\"before-close\", {\n\tcancelable: true,\n})\n\n/**\n * Fired after the component is closed.\n * @public\n */\n@event(\"close\")\n\n/**\n * Fired whenever the popup content area is scrolled\n * @private\n */\n@event(\"scroll\", {\n\tbubbles: true,\n})\nabstract class Popup extends UI5Element {\n\teventDetails!: {\n\t\t\"before-open\": void\n\t\t\"open\": void\n\t\t\"before-close\": PopupBeforeCloseEventDetail\n\t\t\"close\": void\n\t\t\"scroll\": PopupScrollEventDetail\n\t}\n\n\t/**\n\t * Defines the ID of the HTML Element, which will get the initial focus.\n\t *\n\t * **Note:** If an element with `autofocus` attribute is added inside the component,\n\t * `initialFocus` won't take effect.\n\t * @default undefined\n\t * @public\n\t */\n\t@property()\n\tinitialFocus?: string;\n\n\t/**\n\t * Defines if the focus should be returned to the previously focused element,\n\t * when the popup closes.\n\t * @default false\n\t * @public\n\t * @since 1.0.0-rc.8\n\t*/\n\t@property({ type: Boolean })\n\tpreventFocusRestore = false;\n\n\t/**\n\t * Defines the accessible name of the component.\n\t * @default undefined\n\t * @public\n\t * @since 1.0.0-rc.15\n\t */\n\t@property()\n\taccessibleName?: string;\n\n\t/**\n\t * Defines the IDs of the elements that label the component.\n\t * @default undefined\n\t * @public\n\t * @since 1.1.0\n\t */\n\t@property()\n\taccessibleNameRef?: string;\n\n\t/**\n\t * Allows setting a custom role.\n\t * @default \"Dialog\"\n\t * @public\n\t * @since 1.10.0\n\t */\n\t@property()\n\taccessibleRole: `${PopupAccessibleRole}` = \"Dialog\";\n\n\t/**\n\t * Defines the current media query size.\n\t * @private\n\t */\n\t@property()\n\tmediaRange?: string;\n\n\t/**\n\t * Indicates whether initial focus should be prevented.\n\t * @public\n\t * @default false\n\t * @since 2.0.0\n\t */\n\t@property({ type: Boolean })\n\tpreventInitialFocus = false;\n\n\t/**\n\t * Indicates if the element is the top modal popup\n\t *\n\t * This property is calculated automatically\n\t * @private\n\t * @default false\n\t */\n\t@property({ type: Boolean, noAttribute: true })\n\tisTopModalPopup = false;\n\n\t/**\n\t * Defines the content of the Popup.\n\t * @public\n\t */\n\t@slot({ type: HTMLElement, \"default\": true })\n\tcontent!: Array<HTMLElement>;\n\n\t/**\n\t * @private\n\t */\n\t@property({ type: Boolean })\n\tonPhone = false;\n\n\t/**\n\t * @private\n\t */\n\t@property({ type: Boolean })\n\tonDesktop = false;\n\n\t_resizeHandler: ResizeObserverCallback;\n\t_shouldFocusRoot?: boolean;\n\t_focusedElementBeforeOpen?: HTMLElement | null;\n\t_opened = false;\n\t_open = false;\n\n\tconstructor() {\n\t\tsuper();\n\n\t\tthis._resizeHandler = this._resize.bind(this);\n\n\t\tthis._getRealDomRef = () => {\n\t\t\treturn this.shadowRoot!.querySelector<HTMLElement>(\"[root-element]\")!;\n\t\t};\n\t}\n\n\tonBeforeRendering() {\n\t\tthis.onPhone = isPhone();\n\t\tthis.onDesktop = isDesktop();\n\t}\n\n\tonAfterRendering() {\n\t\trenderFinished().then(() => {\n\t\t\tthis._updateMediaRange();\n\t\t});\n\t}\n\n\tonEnterDOM() {\n\t\tthis.setAttribute(\"popover\", \"manual\");\n\t\tResizeHandler.register(this, this._resizeHandler);\n\t\tif (isDesktop()) {\n\t\t\tthis.setAttribute(\"desktop\", \"\");\n\t\t}\n\n\t\tthis.tabIndex = -1;\n\n\t\tif (this.open) {\n\t\t\tthis.showPopover();\n\t\t\tthis.openPopup();\n\t\t}\n\t}\n\n\tonExitDOM() {\n\t\tif (this._opened) {\n\t\t\tPopup.unblockPageScrolling(this);\n\t\t\tthis._removeOpenedPopup();\n\t\t}\n\n\t\tResizeHandler.deregister(this, this._resizeHandler);\n\t}\n\n\t/**\n\t * Indicates if the element is open\n\t * @public\n\t * @default false\n\t * @since 1.2.0\n\t */\n\t@property({ type: Boolean })\n\tset open(value: boolean) {\n\t\tif (this._open === value) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._open = value;\n\n\t\tif (value) {\n\t\t\tthis.openPopup();\n\t\t} else {\n\t\t\tthis.closePopup();\n\t\t}\n\t}\n\n\tget open() : boolean {\n\t\treturn this._open;\n\t}\n\n\tasync openPopup() {\n\t\tif (this._opened) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst prevented = !this.fireDecoratorEvent(\"before-open\");\n\n\t\tif (prevented) {\n\t\t\tthis.open = false;\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.isModal) {\n\t\t\tPopup.blockPageScrolling(this);\n\t\t}\n\n\t\tthis._focusedElementBeforeOpen = getFocusedElement();\n\n\t\tthis._show();\n\t\tthis._opened = true;\n\n\t\tif (this.getDomRef()) {\n\t\t\tthis._updateMediaRange();\n\t\t}\n\n\t\tthis._addOpenedPopup();\n\n\t\tthis.open = true;\n\n\t\t// initial focus, if focused element is statically created\n\t\tawait this.applyInitialFocus();\n\n\t\tawait renderFinished();\n\n\t\tif (this.isConnected) {\n\t\t\tthis.fireDecoratorEvent(\"open\");\n\t\t}\n\t}\n\n\t_resize() {\n\t\tthis._updateMediaRange();\n\t}\n\n\t/**\n\t * Prevents the user from interacting with the content under the block layer\n\t */\n\t_preventBlockLayerFocus(e: KeyboardEvent | MouseEvent) {\n\t\te.preventDefault();\n\t}\n\n\t/**\n\t * Temporarily removes scrollbars from the html element\n\t * @protected\n\t */\n\tstatic blockPageScrolling(popup: Popup) {\n\t\tpageScrollingBlockers.add(popup);\n\n\t\tif (pageScrollingBlockers.size !== 1) {\n\t\t\treturn;\n\t\t}\n\n\t\tdocument.documentElement.classList.add(\"ui5-popup-scroll-blocker\");\n\t}\n\n\t/**\n\t * Restores scrollbars on the html element, if needed\n\t * @protected\n\t */\n\tstatic unblockPageScrolling(popup: Popup) {\n\t\tpageScrollingBlockers.delete(popup);\n\n\t\tif (pageScrollingBlockers.size !== 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tdocument.documentElement.classList.remove(\"ui5-popup-scroll-blocker\");\n\t}\n\n\t_scroll(e: Event) {\n\t\tthis.fireDecoratorEvent(\"scroll\", {\n\t\t\tscrollTop: (e.target as HTMLElement).scrollTop,\n\t\t\ttargetRef: e.target as HTMLElement,\n\t\t});\n\t}\n\n\t_onkeydown(e: KeyboardEvent) {\n\t\tconst isTabOutAttempt = e.target === this._root && isTabPrevious(e);\n\t\t// if the popup is closed, focus is already moved, so Enter keydown may result in click on the newly focused element\n\t\tconst isEnterOnClosedPopupChild = isEnter(e) && !this.open;\n\n\t\tif (isTabOutAttempt || isEnterOnClosedPopupChild) {\n\t\t\te.preventDefault();\n\t\t}\n\t}\n\n\t_onfocusout(e: FocusEvent) {\n\t\t// relatedTarget is the element, which will get focus. If no such element exists, focus the root.\n\t\t// This happens after the mouse is released in order to not interrupt text selection.\n\t\tif (!e.relatedTarget) {\n\t\t\tthis._shouldFocusRoot = true;\n\t\t}\n\t}\n\n\t_onmousedown(e: MouseEvent) {\n\t\tif (this.shadowRoot!.contains(e.target as HTMLElement)) {\n\t\t\tthis._shouldFocusRoot = true;\n\t\t} else {\n\t\t\tthis._shouldFocusRoot = false;\n\t\t}\n\t}\n\n\t_onmouseup() {\n\t\tif (this._shouldFocusRoot) {\n\t\t\tif (isChrome()) {\n\t\t\t\tthis._root.focus();\n\t\t\t}\n\t\t\tthis._shouldFocusRoot = false;\n\t\t}\n\t}\n\n\t/**\n\t * Focus trapping\n\t * @private\n\t */\n\tasync forwardToFirst() {\n\t\tconst firstFocusable = await getFirstFocusableElement(this);\n\n\t\tif (firstFocusable) {\n\t\t\tfirstFocusable.focus();\n\t\t} else {\n\t\t\tthis._root.focus();\n\t\t}\n\t}\n\n\t/**\n\t * Focus trapping\n\t * @private\n\t */\n\tasync forwardToLast() {\n\t\tconst lastFocusable = await getLastFocusableElement(this);\n\n\t\tif (lastFocusable) {\n\t\t\tlastFocusable.focus();\n\t\t} else {\n\t\t\tthis._root.focus();\n\t\t}\n\t}\n\n\t/**\n\t * Use this method to focus the element denoted by \"initialFocus\", if provided,\n\t * or the first focusable element otherwise.\n\t * @protected\n\t */\n\tasync applyInitialFocus() {\n\t\tif (!this.preventInitialFocus) {\n\t\t\tawait this.applyFocus();\n\t\t}\n\t}\n\n\t/**\n\t * Focuses the element denoted by `initialFocus`, if provided,\n\t * or the first focusable element otherwise.\n\t * @public\n\t * @returns Promise that resolves when the focus is applied\n\t */\n\tasync applyFocus(): Promise<void> {\n\t\t// do nothing if the standard HTML autofocus is used\n\t\tif (this.querySelector(\"[autofocus]\")) {\n\t\t\treturn;\n\t\t}\n\n\t\tawait this._waitForDomRef();\n\n\t\tif (this.getRootNode() === this) {\n\t\t\treturn;\n\t\t}\n\n\t\tlet element;\n\n\t\tif (this.initialFocus) {\n\t\t\telement = (this.getRootNode() as Document).getElementById(this.initialFocus)\n\t\t\t|| document.getElementById(this.initialFocus);\n\t\t}\n\n\t\telement = element || await getFirstFocusableElement(this) || this._root; // in case of no focusable content focus the root\n\n\t\tif (element) {\n\t\t\tif (element === this._root) {\n\t\t\t\telement.tabIndex = -1;\n\t\t\t}\n\t\t\telement.focus();\n\t\t}\n\t}\n\n\tisFocusWithin() {\n\t\treturn isFocusedElementWithinNode(this._root);\n\t}\n\n\t_updateMediaRange() {\n\t\tthis.mediaRange = MediaRange.getCurrentRange(MediaRange.RANGESETS.RANGE_4STEPS, this.getDomRef()!.offsetWidth);\n\t}\n\n\t/**\n\t * Adds the popup to the \"opened popups registry\"\n\t * @protected\n\t */\n\t_addOpenedPopup() {\n\t\taddOpenedPopup(this);\n\t}\n\n\t/**\n\t * Closes the popup.\n\t */\n\tclosePopup(escPressed = false, preventRegistryUpdate = false, preventFocusRestore = false): void {\n\t\tif (!this._opened) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst prevented = !this.fireDecoratorEvent(\"before-close\", { escPressed });\n\t\tif (prevented) {\n\t\t\tthis.open = true;\n\t\t\treturn;\n\t\t}\n\n\t\tthis._opened = false;\n\n\t\tif (this.isModal) {\n\t\t\tPopup.unblockPageScrolling(this);\n\t\t}\n\n\t\tthis.hide();\n\t\tthis.open = false;\n\n\t\tif (!preventRegistryUpdate) {\n\t\t\tthis._removeOpenedPopup();\n\t\t}\n\n\t\tif (!this.preventFocusRestore && !preventFocusRestore) {\n\t\t\tthis.resetFocus();\n\t\t}\n\n\t\tthis.fireDecoratorEvent(\"close\");\n\t}\n\n\t/**\n\t * Removes the popup from the \"opened popups registry\"\n\t * @protected\n\t */\n\t_removeOpenedPopup() {\n\t\tremoveOpenedPopup(this);\n\t}\n\n\t/**\n\t * Returns the focus to the previously focused element\n\t * @protected\n\t */\n\tresetFocus() {\n\t\tthis._focusedElementBeforeOpen?.focus();\n\t\tthis._focusedElementBeforeOpen = null;\n\t}\n\n\t/**\n\t * Sets \"block\" display to the popup. The property can be overriden by derivatives of Popup.\n\t * @protected\n\t */\n\t_show() {\n\t\tif (this.isConnected) {\n\t\t\tthis.setAttribute(\"popover\", \"manual\");\n\t\t\tthis.showPopover();\n\t\t}\n\t}\n\n\t/**\n\t * Sets \"none\" display to the popup\n\t * @protected\n\t */\n\thide() {\n\t\tthis.isConnected && this.hidePopover();\n\t}\n\n\t/**\n\t * Implement this getter with relevant logic regarding the modality of the popup (e.g. based on a public property)\n\t * @protected\n\t */\n\tabstract get isModal(): boolean\n\n\t/**\n\t * Return the ID of an element in the shadow DOM that is going to label this popup\n\t * @protected\n\t */\n\tabstract get _ariaLabelledBy(): string | undefined\n\n\t/**\n\t * Ensures ariaLabel is never null or empty string\n\t * @protected\n\t */\n\tget _ariaLabel() {\n\t\treturn getEffectiveAriaLabelText(this);\n\t}\n\n\tget _root(): HTMLElement {\n\t\treturn this.shadowRoot!.querySelector(\".ui5-popup-root\")!;\n\t}\n\n\tget _role() {\n\t\treturn (this.accessibleRole === PopupAccessibleRole.None) ? undefined : toLowercaseEnumValue(this.accessibleRole);\n\t}\n\n\tget _ariaModal(): \"true\" | undefined {\n\t\treturn this.accessibleRole === PopupAccessibleRole.None ? undefined : \"true\";\n\t}\n\n\tget contentDOM(): HTMLElement {\n\t\treturn this.shadowRoot!.querySelector(\".ui5-popup-content\")!;\n\t}\n\n\tget styles() {\n\t\treturn {\n\t\t\troot: {},\n\t\t\tcontent: {},\n\t\t};\n\t}\n\n\tget classes(): ClassMap {\n\t\treturn {\n\t\t\troot: {\n\t\t\t\t\"ui5-popup-root\": true,\n\t\t\t},\n\t\t\tcontent: {\n\t\t\t\t\"ui5-popup-content\": true,\n\t\t\t},\n\t\t};\n\t}\n}\n\nexport default Popup;\nexport type { PopupScrollEventDetail, PopupBeforeCloseEventDetail };\n"]}
|
|
1
|
+
{"version":3,"file":"Popup.js","sourceRoot":"","sources":["../src/Popup.ts"],"names":[],"mappings":"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","sourcesContent":["import customElement from \"@ui5/webcomponents-base/dist/decorators/customElement.js\";\nimport { renderFinished } from \"@ui5/webcomponents-base/dist/Render.js\";\nimport event from \"@ui5/webcomponents-base/dist/decorators/event-strict.js\";\nimport slot from \"@ui5/webcomponents-base/dist/decorators/slot.js\";\nimport property from \"@ui5/webcomponents-base/dist/decorators/property.js\";\nimport type { ClassMap } from \"@ui5/webcomponents-base/dist/types.js\";\nimport jsxRender from \"@ui5/webcomponents-base/dist/renderer/JsxRenderer.js\";\nimport UI5Element from \"@ui5/webcomponents-base/dist/UI5Element.js\";\nimport {\n\tisChrome,\n\tisDesktop,\n\tisPhone,\n} from \"@ui5/webcomponents-base/dist/Device.js\";\nimport { getFirstFocusableElement, getLastFocusableElement } from \"@ui5/webcomponents-base/dist/util/FocusableElements.js\";\nimport {\n\tregisterUI5Element,\n\tgetEffectiveAriaLabelText,\n\tgetEffectiveAriaDescriptionText,\n\tgetAllAccessibleDescriptionRefTexts,\n\tderegisterUI5Element,\n} from \"@ui5/webcomponents-base/dist/util/AccessibilityTextsHelper.js\";\nimport { hasStyle, createStyle } from \"@ui5/webcomponents-base/dist/ManagedStyles.js\";\nimport { isEnter, isTabPrevious } from \"@ui5/webcomponents-base/dist/Keys.js\";\nimport { getFocusedElement, isFocusedElementWithinNode } from \"@ui5/webcomponents-base/dist/util/PopupUtils.js\";\nimport ResizeHandler from \"@ui5/webcomponents-base/dist/delegate/ResizeHandler.js\";\nimport type { ResizeObserverCallback } from \"@ui5/webcomponents-base/dist/delegate/ResizeHandler.js\";\nimport MediaRange from \"@ui5/webcomponents-base/dist/MediaRange.js\";\nimport toLowercaseEnumValue from \"@ui5/webcomponents-base/dist/util/toLowercaseEnumValue.js\";\nimport PopupTemplate from \"./PopupTemplate.js\";\nimport PopupAccessibleRole from \"./types/PopupAccessibleRole.js\";\nimport { addOpenedPopup, removeOpenedPopup } from \"./popup-utils/OpenedPopupsRegistry.js\";\n\n// Styles\nimport popupStlyes from \"./generated/themes/Popup.css.js\";\nimport popupBlockLayerStyles from \"./generated/themes/PopupBlockLayer.css.js\";\nimport globalStyles from \"./generated/themes/PopupGlobal.css.js\";\n\nconst createBlockingStyle = (): void => {\n\tif (!hasStyle(\"data-ui5-popup-scroll-blocker\")) {\n\t\tcreateStyle(globalStyles, \"data-ui5-popup-scroll-blocker\");\n\t}\n};\n\ncreateBlockingStyle();\n\nconst pageScrollingBlockers = new Set<Popup>();\n\ntype PopupScrollEventDetail = {\n\tscrollTop: number;\n\ttargetRef: HTMLElement;\n}\n\ntype PopupBeforeCloseEventDetail = {\n\tescPressed: boolean;\n}\n\n/**\n * @class\n * ### Overview\n * Base class for all popup Web Components.\n *\n * If you need to create your own popup-like custom UI5 Web Components.\n *\n * 1. The Popup class handles modality:\n * - The \"isModal\" getter can be overridden by derivatives to provide their own conditions when they are modal or not\n * - Derivatives may call the \"blockPageScrolling\" and \"unblockPageScrolling\" static methods to temporarily remove scrollbars on the html element\n * - Derivatives may call the \"openPopup\" and \"closePopup\" methods which handle focus, manage the popup registry and for modal popups, manage the blocking layer\n *\n * 2. Provides blocking layer (relevant for modal popups only):\n * - Controlled by the \"open\" and \"close\" methods\n *\n * 3. The Popup class \"traps\" focus:\n * - Derivatives may call the \"applyInitialFocus\" method (usually when opening, to transfer focus inside the popup)\n *\n * 4. The template of this component exposes two inline partials you can override in derivatives:\n * - beforeContent (upper part of the box, useful for header/title/close button)\n * - afterContent (lower part, useful for footer/action buttons)\n * @constructor\n * @extends UI5Element\n * @public\n */\n@customElement({\n\trenderer: jsxRender,\n\tstyles: [popupStlyes, popupBlockLayerStyles],\n\ttemplate: PopupTemplate,\n})\n/**\n * Fired before the component is opened. This event can be cancelled, which will prevent the popup from opening.\n * @public\n */\n@event(\"before-open\", {\n\tcancelable: true,\n})\n\n/**\n * Fired after the component is opened.\n * @public\n */\n@event(\"open\")\n\n/**\n * Fired before the component is closed. This event can be cancelled, which will prevent the popup from closing.\n * @public\n * @param {boolean} escPressed Indicates that `ESC` key has triggered the event.\n */\n@event(\"before-close\", {\n\tcancelable: true,\n})\n\n/**\n * Fired after the component is closed.\n * @public\n */\n@event(\"close\")\n\n/**\n * Fired whenever the popup content area is scrolled\n * @private\n */\n@event(\"scroll\", {\n\tbubbles: true,\n})\nabstract class Popup extends UI5Element {\n\teventDetails!: {\n\t\t\"before-open\": void\n\t\t\"open\": void\n\t\t\"before-close\": PopupBeforeCloseEventDetail\n\t\t\"close\": void\n\t\t\"scroll\": PopupScrollEventDetail\n\t}\n\n\t/**\n\t * Defines the ID of the HTML Element, which will get the initial focus.\n\t *\n\t * **Note:** If an element with `autofocus` attribute is added inside the component,\n\t * `initialFocus` won't take effect.\n\t * @default undefined\n\t * @public\n\t */\n\t@property()\n\tinitialFocus?: string;\n\n\t/**\n\t * Defines if the focus should be returned to the previously focused element,\n\t * when the popup closes.\n\t * @default false\n\t * @public\n\t * @since 1.0.0-rc.8\n\t*/\n\t@property({ type: Boolean })\n\tpreventFocusRestore = false;\n\n\t/**\n\t * Defines the accessible name of the component.\n\t * @default undefined\n\t * @public\n\t * @since 1.0.0-rc.15\n\t */\n\t@property()\n\taccessibleName?: string;\n\n\t/**\n\t * Defines the IDs of the elements that label the component.\n\t * @default undefined\n\t * @public\n\t * @since 1.1.0\n\t */\n\t@property()\n\taccessibleNameRef?: string;\n\n\t/**\n\t * Allows setting a custom role.\n\t * @default \"Dialog\"\n\t * @public\n\t * @since 1.10.0\n\t */\n\t@property()\n\taccessibleRole: `${PopupAccessibleRole}` = \"Dialog\";\n\n\t/**\n\t * Defines the accessible description of the component.\n\t * @default undefined\n\t * @public\n\t * @since 2.11.0\n\t */\n\t@property()\n\taccessibleDescription?: string;\n\n\t/**\n\t * Receives id(or many ids) of the elements that describe the component.\n\t * @default undefined\n\t * @public\n\t * @since 2.11.0\n\t */\n\t@property()\n\taccessibleDescriptionRef?: string;\n\n\t/**\n\t * Constantly updated value of texts collected from the associated labels.\n\t * @private\n\t */\n\t@property({ noAttribute: true })\n\t_associatedDescriptionRefTexts?: string;\n\n\t/**\n\t * Defines the current media query size.\n\t * @private\n\t */\n\t@property()\n\tmediaRange?: string;\n\n\t/**\n\t * Indicates whether initial focus should be prevented.\n\t * @public\n\t * @default false\n\t * @since 2.0.0\n\t */\n\t@property({ type: Boolean })\n\tpreventInitialFocus = false;\n\n\t/**\n\t * Indicates if the element is the top modal popup\n\t *\n\t * This property is calculated automatically\n\t * @private\n\t * @default false\n\t */\n\t@property({ type: Boolean, noAttribute: true })\n\tisTopModalPopup = false;\n\n\t/**\n\t * Defines the content of the Popup.\n\t * @public\n\t */\n\t@slot({ type: HTMLElement, \"default\": true })\n\tcontent!: Array<HTMLElement>;\n\n\t/**\n\t * @private\n\t */\n\t@property({ type: Boolean })\n\tonPhone = false;\n\n\t/**\n\t * @private\n\t */\n\t@property({ type: Boolean })\n\tonDesktop = false;\n\n\t_resizeHandler: ResizeObserverCallback;\n\t_shouldFocusRoot?: boolean;\n\t_focusedElementBeforeOpen?: HTMLElement | null;\n\t_opened = false;\n\t_open = false;\n\n\tconstructor() {\n\t\tsuper();\n\n\t\tthis._resizeHandler = this._resize.bind(this);\n\n\t\tthis._getRealDomRef = () => {\n\t\t\treturn this.shadowRoot!.querySelector<HTMLElement>(\"[root-element]\")!;\n\t\t};\n\t}\n\n\tonBeforeRendering() {\n\t\tthis.onPhone = isPhone();\n\t\tthis.onDesktop = isDesktop();\n\t}\n\n\tonAfterRendering() {\n\t\trenderFinished().then(() => {\n\t\t\tthis._updateMediaRange();\n\t\t});\n\t}\n\n\tonEnterDOM() {\n\t\tthis.setAttribute(\"popover\", \"manual\");\n\t\tResizeHandler.register(this, this._resizeHandler);\n\t\tif (isDesktop()) {\n\t\t\tthis.setAttribute(\"desktop\", \"\");\n\t\t}\n\n\t\tthis.tabIndex = -1;\n\n\t\tif (this.open) {\n\t\t\tthis.showPopover();\n\t\t\tthis.openPopup();\n\t\t}\n\n\t\tregisterUI5Element(this, this._updateAssociatedLabelsTexts.bind(this));\n\t}\n\n\tonExitDOM() {\n\t\tif (this._opened) {\n\t\t\tPopup.unblockPageScrolling(this);\n\t\t\tthis._removeOpenedPopup();\n\t\t}\n\n\t\tResizeHandler.deregister(this, this._resizeHandler);\n\t\tderegisterUI5Element(this);\n\t}\n\n\t/**\n\t * Indicates if the element is open\n\t * @public\n\t * @default false\n\t * @since 1.2.0\n\t */\n\t@property({ type: Boolean })\n\tset open(value: boolean) {\n\t\tif (this._open === value) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._open = value;\n\n\t\tif (value) {\n\t\t\tthis.openPopup();\n\t\t} else {\n\t\t\tthis.closePopup();\n\t\t}\n\t}\n\n\tget open() : boolean {\n\t\treturn this._open;\n\t}\n\n\tasync openPopup() {\n\t\tif (this._opened) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst prevented = !this.fireDecoratorEvent(\"before-open\");\n\n\t\tif (prevented) {\n\t\t\tthis.open = false;\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.isModal) {\n\t\t\tPopup.blockPageScrolling(this);\n\t\t}\n\n\t\tthis._focusedElementBeforeOpen = getFocusedElement();\n\n\t\tthis._show();\n\t\tthis._opened = true;\n\n\t\tif (this.getDomRef()) {\n\t\t\tthis._updateMediaRange();\n\t\t}\n\n\t\tthis._addOpenedPopup();\n\n\t\tthis.open = true;\n\n\t\t// initial focus, if focused element is statically created\n\t\tawait this.applyInitialFocus();\n\n\t\tawait renderFinished();\n\n\t\tif (this.isConnected) {\n\t\t\tthis.fireDecoratorEvent(\"open\");\n\t\t}\n\t}\n\n\t_resize() {\n\t\tthis._updateMediaRange();\n\t}\n\n\t/**\n\t * Prevents the user from interacting with the content under the block layer\n\t */\n\t_preventBlockLayerFocus(e: KeyboardEvent | MouseEvent) {\n\t\te.preventDefault();\n\t}\n\n\t/**\n\t * Temporarily removes scrollbars from the html element\n\t * @protected\n\t */\n\tstatic blockPageScrolling(popup: Popup) {\n\t\tpageScrollingBlockers.add(popup);\n\n\t\tif (pageScrollingBlockers.size !== 1) {\n\t\t\treturn;\n\t\t}\n\n\t\tdocument.documentElement.classList.add(\"ui5-popup-scroll-blocker\");\n\t}\n\n\t/**\n\t * Restores scrollbars on the html element, if needed\n\t * @protected\n\t */\n\tstatic unblockPageScrolling(popup: Popup) {\n\t\tpageScrollingBlockers.delete(popup);\n\n\t\tif (pageScrollingBlockers.size !== 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tdocument.documentElement.classList.remove(\"ui5-popup-scroll-blocker\");\n\t}\n\n\t_scroll(e: Event) {\n\t\tthis.fireDecoratorEvent(\"scroll\", {\n\t\t\tscrollTop: (e.target as HTMLElement).scrollTop,\n\t\t\ttargetRef: e.target as HTMLElement,\n\t\t});\n\t}\n\n\t_onkeydown(e: KeyboardEvent) {\n\t\tconst isTabOutAttempt = e.target === this._root && isTabPrevious(e);\n\t\t// if the popup is closed, focus is already moved, so Enter keydown may result in click on the newly focused element\n\t\tconst isEnterOnClosedPopupChild = isEnter(e) && !this.open;\n\n\t\tif (isTabOutAttempt || isEnterOnClosedPopupChild) {\n\t\t\te.preventDefault();\n\t\t}\n\t}\n\n\t_onfocusout(e: FocusEvent) {\n\t\t// relatedTarget is the element, which will get focus. If no such element exists, focus the root.\n\t\t// This happens after the mouse is released in order to not interrupt text selection.\n\t\tif (!e.relatedTarget) {\n\t\t\tthis._shouldFocusRoot = true;\n\t\t}\n\t}\n\n\t_onmousedown(e: MouseEvent) {\n\t\tif (this.shadowRoot!.contains(e.target as HTMLElement)) {\n\t\t\tthis._shouldFocusRoot = true;\n\t\t} else {\n\t\t\tthis._shouldFocusRoot = false;\n\t\t}\n\t}\n\n\t_onmouseup() {\n\t\tif (this._shouldFocusRoot) {\n\t\t\tif (isChrome()) {\n\t\t\t\tthis._root.focus();\n\t\t\t}\n\t\t\tthis._shouldFocusRoot = false;\n\t\t}\n\t}\n\n\t/**\n\t * Focus trapping\n\t * @private\n\t */\n\tasync forwardToFirst() {\n\t\tconst firstFocusable = await getFirstFocusableElement(this);\n\n\t\tif (firstFocusable) {\n\t\t\tfirstFocusable.focus();\n\t\t} else {\n\t\t\tthis._root.focus();\n\t\t}\n\t}\n\n\t/**\n\t * Focus trapping\n\t * @private\n\t */\n\tasync forwardToLast() {\n\t\tconst lastFocusable = await getLastFocusableElement(this);\n\n\t\tif (lastFocusable) {\n\t\t\tlastFocusable.focus();\n\t\t} else {\n\t\t\tthis._root.focus();\n\t\t}\n\t}\n\n\t/**\n\t * Use this method to focus the element denoted by \"initialFocus\", if provided,\n\t * or the first focusable element otherwise.\n\t * @protected\n\t */\n\tasync applyInitialFocus() {\n\t\tif (!this.preventInitialFocus) {\n\t\t\tawait this.applyFocus();\n\t\t}\n\t}\n\n\t/**\n\t * Focuses the element denoted by `initialFocus`, if provided,\n\t * or the first focusable element otherwise.\n\t * @public\n\t * @returns Promise that resolves when the focus is applied\n\t */\n\tasync applyFocus(): Promise<void> {\n\t\t// do nothing if the standard HTML autofocus is used\n\t\tif (this.querySelector(\"[autofocus]\")) {\n\t\t\treturn;\n\t\t}\n\n\t\tawait this._waitForDomRef();\n\n\t\tif (this.getRootNode() === this) {\n\t\t\treturn;\n\t\t}\n\n\t\tlet element;\n\n\t\tif (this.initialFocus) {\n\t\t\telement = (this.getRootNode() as Document).getElementById(this.initialFocus)\n\t\t\t|| document.getElementById(this.initialFocus);\n\t\t}\n\n\t\telement = element || await getFirstFocusableElement(this) || this._root; // in case of no focusable content focus the root\n\n\t\tif (element) {\n\t\t\tif (element === this._root) {\n\t\t\t\telement.tabIndex = -1;\n\t\t\t}\n\t\t\telement.focus();\n\t\t}\n\t}\n\n\tisFocusWithin() {\n\t\treturn isFocusedElementWithinNode(this._root);\n\t}\n\n\t_updateMediaRange() {\n\t\tthis.mediaRange = MediaRange.getCurrentRange(MediaRange.RANGESETS.RANGE_4STEPS, this.getDomRef()!.offsetWidth);\n\t}\n\n\t_updateAssociatedLabelsTexts() {\n\t\tthis._associatedDescriptionRefTexts = getAllAccessibleDescriptionRefTexts(this);\n\t}\n\n\t/**\n\t * Adds the popup to the \"opened popups registry\"\n\t * @protected\n\t */\n\t_addOpenedPopup() {\n\t\taddOpenedPopup(this);\n\t}\n\n\t/**\n\t * Closes the popup.\n\t */\n\tclosePopup(escPressed = false, preventRegistryUpdate = false, preventFocusRestore = false): void {\n\t\tif (!this._opened) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst prevented = !this.fireDecoratorEvent(\"before-close\", { escPressed });\n\t\tif (prevented) {\n\t\t\tthis.open = true;\n\t\t\treturn;\n\t\t}\n\n\t\tthis._opened = false;\n\n\t\tif (this.isModal) {\n\t\t\tPopup.unblockPageScrolling(this);\n\t\t}\n\n\t\tthis.hide();\n\t\tthis.open = false;\n\n\t\tif (!preventRegistryUpdate) {\n\t\t\tthis._removeOpenedPopup();\n\t\t}\n\n\t\tif (!this.preventFocusRestore && !preventFocusRestore) {\n\t\t\tthis.resetFocus();\n\t\t}\n\n\t\tthis.fireDecoratorEvent(\"close\");\n\t}\n\n\t/**\n\t * Removes the popup from the \"opened popups registry\"\n\t * @protected\n\t */\n\t_removeOpenedPopup() {\n\t\tremoveOpenedPopup(this);\n\t}\n\n\t/**\n\t * Returns the focus to the previously focused element\n\t * @protected\n\t */\n\tresetFocus() {\n\t\tthis._focusedElementBeforeOpen?.focus();\n\t\tthis._focusedElementBeforeOpen = null;\n\t}\n\n\t/**\n\t * Sets \"block\" display to the popup. The property can be overriden by derivatives of Popup.\n\t * @protected\n\t */\n\t_show() {\n\t\tif (this.isConnected) {\n\t\t\tthis.setAttribute(\"popover\", \"manual\");\n\t\t\tthis.showPopover();\n\t\t}\n\t}\n\n\t/**\n\t * Sets \"none\" display to the popup\n\t * @protected\n\t */\n\thide() {\n\t\tthis.isConnected && this.hidePopover();\n\t}\n\n\t/**\n\t * Implement this getter with relevant logic regarding the modality of the popup (e.g. based on a public property)\n\t * @protected\n\t */\n\tabstract get isModal(): boolean\n\n\t/**\n\t * Return the ID of an element in the shadow DOM that is going to label this popup\n\t * @protected\n\t */\n\tabstract get _ariaLabelledBy(): string | undefined\n\n\t/**\n\t * Ensures ariaLabel is never null or empty string\n\t * @protected\n\t */\n\tget _ariaLabel() {\n\t\treturn getEffectiveAriaLabelText(this);\n\t}\n\n\tget _accInfoAriaDescription() {\n\t\treturn this.ariaDescriptionText || \"\";\n\t}\n\n\tget ariaDescriptionText() {\n\t\treturn this._associatedDescriptionRefTexts || getEffectiveAriaDescriptionText(this);\n\t}\n\n\tget ariaDescriptionTextId() {\n\t\treturn this.ariaDescriptionText ? \"accessibleDescription\" : \"\";\n\t}\n\n\tget ariaDescribedByIds() {\n\t\treturn [\n\t\t\tthis.ariaDescriptionTextId,\n\t\t].filter(Boolean).join(\" \");\n\t}\n\n\tget _root(): HTMLElement {\n\t\treturn this.shadowRoot!.querySelector(\".ui5-popup-root\")!;\n\t}\n\n\tget _role() {\n\t\treturn (this.accessibleRole === PopupAccessibleRole.None) ? undefined : toLowercaseEnumValue(this.accessibleRole);\n\t}\n\n\tget _ariaModal(): \"true\" | undefined {\n\t\treturn this.accessibleRole === PopupAccessibleRole.None ? undefined : \"true\";\n\t}\n\n\tget contentDOM(): HTMLElement {\n\t\treturn this.shadowRoot!.querySelector(\".ui5-popup-content\")!;\n\t}\n\n\tget styles() {\n\t\treturn {\n\t\t\troot: {},\n\t\t\tcontent: {},\n\t\t};\n\t}\n\n\tget classes(): ClassMap {\n\t\treturn {\n\t\t\troot: {\n\t\t\t\t\"ui5-popup-root\": true,\n\t\t\t},\n\t\t\tcontent: {\n\t\t\t\t\"ui5-popup-content\": true,\n\t\t\t},\n\t\t};\n\t}\n}\n\nexport default Popup;\nexport type { PopupScrollEventDetail, PopupBeforeCloseEventDetail };\n"]}
|