@ui5/webcomponents 2.13.2 → 2.14.0-rc.1
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 +24 -4
- package/dist/.tsbuildinfo +1 -1
- package/dist/Button.js +2 -1
- package/dist/Button.js.map +1 -1
- package/dist/DateComponentBase.d.ts +24 -0
- package/dist/DateComponentBase.js +80 -1
- package/dist/DateComponentBase.js.map +1 -1
- package/dist/DatePicker.d.ts +32 -1
- package/dist/DatePicker.js +94 -10
- package/dist/DatePicker.js.map +1 -1
- package/dist/DatePickerInputTemplate.js +1 -1
- package/dist/DatePickerInputTemplate.js.map +1 -1
- package/dist/DateRangePicker.d.ts +35 -0
- package/dist/DateRangePicker.js +119 -9
- package/dist/DateRangePicker.js.map +1 -1
- package/dist/DateTimePicker.d.ts +10 -0
- package/dist/DateTimePicker.js +54 -4
- package/dist/DateTimePicker.js.map +1 -1
- package/dist/DynamicDateRange.d.ts +24 -9
- package/dist/DynamicDateRange.js +83 -22
- package/dist/DynamicDateRange.js.map +1 -1
- package/dist/DynamicDateRangeInputTemplate.js +1 -3
- package/dist/DynamicDateRangeInputTemplate.js.map +1 -1
- package/dist/DynamicDateRangePopoverTemplate.js +1 -3
- package/dist/DynamicDateRangePopoverTemplate.js.map +1 -1
- package/dist/List.d.ts +2 -0
- package/dist/List.js +13 -26
- package/dist/List.js.map +1 -1
- package/dist/ListItemGroup.d.ts +4 -0
- package/dist/ListItemGroup.js +20 -53
- package/dist/ListItemGroup.js.map +1 -1
- package/dist/Select.d.ts +1 -0
- package/dist/Select.js +3 -0
- package/dist/Select.js.map +1 -1
- package/dist/SelectPopoverTemplate.js +1 -1
- package/dist/SelectPopoverTemplate.js.map +1 -1
- package/dist/SelectTemplate.js +2 -2
- package/dist/SelectTemplate.js.map +1 -1
- package/dist/Tree.d.ts +7 -0
- package/dist/Tree.js +37 -38
- package/dist/Tree.js.map +1 -1
- package/dist/bundle.esm.js +2 -0
- package/dist/bundle.esm.js.map +1 -1
- package/dist/css/themes/Avatar.css +1 -1
- package/dist/css/themes/AvatarGroup.css +1 -1
- package/dist/css/themes/Bar.css +1 -1
- package/dist/css/themes/Breadcrumbs.css +1 -1
- package/dist/css/themes/BusyIndicator.css +1 -1
- package/dist/css/themes/Button.css +1 -1
- package/dist/css/themes/ButtonBadge.css +1 -1
- package/dist/css/themes/Calendar.css +1 -1
- package/dist/css/themes/CalendarHeader.css +1 -1
- package/dist/css/themes/CalendarLegend.css +1 -1
- package/dist/css/themes/CalendarLegendItem.css +1 -1
- package/dist/css/themes/Card.css +1 -1
- package/dist/css/themes/CardHeader.css +1 -1
- package/dist/css/themes/Carousel.css +1 -1
- package/dist/css/themes/CheckBox.css +1 -1
- package/dist/css/themes/ColorPalette.css +1 -1
- package/dist/css/themes/ColorPaletteItem.css +1 -1
- package/dist/css/themes/ColorPalettePopover.css +1 -1
- package/dist/css/themes/ColorPicker.css +1 -1
- package/dist/css/themes/ComboBox.css +1 -1
- package/dist/css/themes/ComboBoxItem.css +1 -1
- package/dist/css/themes/DatePicker.css +1 -1
- package/dist/css/themes/DateTimePickerPopover.css +1 -1
- package/dist/css/themes/DayPicker.css +1 -1
- package/dist/css/themes/Dialog.css +1 -1
- package/dist/css/themes/DynamicDateRange.css +1 -1
- package/dist/css/themes/DynamicDateRangePopover.css +1 -1
- package/dist/css/themes/FileUploader.css +1 -1
- package/dist/css/themes/Form.css +1 -1
- package/dist/css/themes/FormItem.css +1 -1
- package/dist/css/themes/FormItemSpan.css +1 -1
- package/dist/css/themes/GrowingButton.css +1 -1
- package/dist/css/themes/Icon.css +1 -1
- package/dist/css/themes/Input.css +1 -1
- package/dist/css/themes/InputIcon.css +1 -1
- package/dist/css/themes/InputSharedStyles.css +1 -1
- package/dist/css/themes/Link.css +1 -1
- package/dist/css/themes/List.css +1 -1
- package/dist/css/themes/ListItem.css +1 -1
- package/dist/css/themes/ListItemBase.css +1 -1
- package/dist/css/themes/ListItemCustom.css +1 -1
- package/dist/css/themes/ListItemGroup.css +1 -1
- package/dist/css/themes/ListItemGroupHeader.css +1 -1
- package/dist/css/themes/ListItemIcon.css +1 -1
- package/dist/css/themes/Menu.css +1 -1
- package/dist/css/themes/MenuItem.css +1 -1
- package/dist/css/themes/MessageStrip.css +1 -1
- package/dist/css/themes/MonthPicker.css +1 -1
- package/dist/css/themes/MultiComboBox.css +1 -1
- package/dist/css/themes/MultiComboBoxItem.css +1 -1
- package/dist/css/themes/MultiComboBoxPopover.css +1 -1
- package/dist/css/themes/MultiInput.css +1 -1
- package/dist/css/themes/OptionBase.css +1 -1
- package/dist/css/themes/Panel.css +1 -1
- package/dist/css/themes/Popover.css +1 -1
- package/dist/css/themes/PopupsCommon.css +1 -1
- package/dist/css/themes/ProgressIndicator.css +1 -1
- package/dist/css/themes/RadioButton.css +1 -1
- package/dist/css/themes/RangeSlider.css +1 -1
- package/dist/css/themes/RatingIndicator.css +1 -1
- package/dist/css/themes/ResponsivePopover.css +1 -1
- package/dist/css/themes/ResponsivePopoverCommon.css +1 -1
- package/dist/css/themes/SegmentedButton.css +1 -1
- package/dist/css/themes/SegmentedButtonItem.css +1 -1
- package/dist/css/themes/Select.css +1 -1
- package/dist/css/themes/SliderBase.css +1 -1
- package/dist/css/themes/SplitButton.css +1 -1
- package/dist/css/themes/StepInput.css +1 -1
- package/dist/css/themes/SuggestionItem.css +1 -1
- package/dist/css/themes/SuggestionItemCustom.css +1 -1
- package/dist/css/themes/Switch.css +1 -1
- package/dist/css/themes/TabContainer.css +1 -1
- package/dist/css/themes/TabInOverflow.css +1 -1
- package/dist/css/themes/TabInStrip.css +1 -1
- package/dist/css/themes/TabSemanticIcon.css +1 -1
- package/dist/css/themes/TabSeparatorInOverflow.css +1 -1
- package/dist/css/themes/TableCellBase.css +1 -1
- package/dist/css/themes/TableHeaderRow.css +1 -1
- package/dist/css/themes/TableRow.css +1 -1
- package/dist/css/themes/TableRowActionBase.css +1 -1
- package/dist/css/themes/TableRowBase.css +1 -1
- package/dist/css/themes/Tag.css +1 -1
- package/dist/css/themes/Text.css +1 -1
- package/dist/css/themes/TextArea.css +1 -1
- package/dist/css/themes/TimePicker.css +1 -1
- package/dist/css/themes/Toast.css +1 -1
- package/dist/css/themes/ToggleButton.css +1 -1
- package/dist/css/themes/Token.css +1 -1
- package/dist/css/themes/Tokenizer.css +1 -1
- package/dist/css/themes/TokenizerPopover.css +1 -1
- package/dist/css/themes/Toolbar.css +1 -1
- package/dist/css/themes/ToolbarButton.css +1 -1
- package/dist/css/themes/ToolbarPopover.css +1 -1
- package/dist/css/themes/ToolbarSeparator.css +1 -1
- package/dist/css/themes/TreeItem.css +1 -1
- package/dist/css/themes/ValueStateMessage.css +1 -1
- package/dist/css/themes/ValueStateVariables.css +1 -1
- package/dist/css/themes/YearPicker.css +1 -1
- package/dist/css/themes/YearRangePicker.css +1 -1
- package/dist/css/themes/sap_fiori_3/parameters-bundle.css +1 -1
- package/dist/css/themes/sap_fiori_3_dark/parameters-bundle.css +1 -1
- package/dist/css/themes/sap_fiori_3_hcb/parameters-bundle.css +1 -1
- package/dist/css/themes/sap_fiori_3_hcw/parameters-bundle.css +1 -1
- package/dist/css/themes/sap_horizon/parameters-bundle.css +1 -1
- package/dist/css/themes/sap_horizon_dark/parameters-bundle.css +1 -1
- package/dist/css/themes/sap_horizon_hcb/parameters-bundle.css +1 -1
- package/dist/css/themes/sap_horizon_hcw/parameters-bundle.css +1 -1
- package/dist/custom-elements-internal.json +558 -9
- package/dist/custom-elements.json +527 -8
- package/dist/delegate/DragAndDropHandler.d.ts +33 -0
- package/dist/delegate/DragAndDropHandler.js +96 -0
- package/dist/delegate/DragAndDropHandler.js.map +1 -0
- package/dist/dynamic-date-range-options/DateRange.d.ts +3 -3
- package/dist/dynamic-date-range-options/DateRange.js +18 -8
- package/dist/dynamic-date-range-options/DateRange.js.map +1 -1
- package/dist/dynamic-date-range-options/DateRangeTemplate.d.ts +1 -1
- package/dist/dynamic-date-range-options/DateRangeTemplate.js +1 -1
- package/dist/dynamic-date-range-options/DateRangeTemplate.js.map +1 -1
- package/dist/dynamic-date-range-options/LastNextTemplate.d.ts +2 -0
- package/dist/dynamic-date-range-options/LastNextTemplate.js +32 -0
- package/dist/dynamic-date-range-options/LastNextTemplate.js.map +1 -0
- package/dist/dynamic-date-range-options/LastNextUtils.d.ts +65 -0
- package/dist/dynamic-date-range-options/LastNextUtils.js +123 -0
- package/dist/dynamic-date-range-options/LastNextUtils.js.map +1 -0
- package/dist/dynamic-date-range-options/LastOptions.d.ts +32 -0
- package/dist/dynamic-date-range-options/LastOptions.js +107 -0
- package/dist/dynamic-date-range-options/LastOptions.js.map +1 -0
- package/dist/dynamic-date-range-options/NextOptions.d.ts +32 -0
- package/dist/dynamic-date-range-options/NextOptions.js +107 -0
- package/dist/dynamic-date-range-options/NextOptions.js.map +1 -0
- 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.map +1 -1
- package/dist/dynamic-date-range-options/Tomorrow.d.ts +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.map +1 -1
- package/dist/dynamic-date-range-options/toDates.d.ts +13 -7
- package/dist/dynamic-date-range-options/toDates.js +137 -20
- package/dist/dynamic-date-range-options/toDates.js.map +1 -1
- package/dist/generated/assets/i18n/messagebundle_en_US_sappsd.json +1 -1
- package/dist/generated/assets/themes/sap_fiori_3/parameters-bundle.css.json +1 -1
- package/dist/generated/assets/themes/sap_fiori_3_dark/parameters-bundle.css.json +1 -1
- package/dist/generated/assets/themes/sap_fiori_3_hcb/parameters-bundle.css.json +1 -1
- package/dist/generated/assets/themes/sap_fiori_3_hcw/parameters-bundle.css.json +1 -1
- package/dist/generated/assets/themes/sap_horizon/parameters-bundle.css.json +1 -1
- package/dist/generated/assets/themes/sap_horizon_dark/parameters-bundle.css.json +1 -1
- package/dist/generated/assets/themes/sap_horizon_hcb/parameters-bundle.css.json +1 -1
- package/dist/generated/assets/themes/sap_horizon_hcw/parameters-bundle.css.json +1 -1
- package/dist/generated/i18n/i18n-defaults.d.ts +21 -1
- package/dist/generated/i18n/i18n-defaults.js +21 -1
- package/dist/generated/i18n/i18n-defaults.js.map +1 -1
- package/dist/generated/themes/Avatar.css.d.ts +1 -1
- package/dist/generated/themes/Avatar.css.js +1 -1
- package/dist/generated/themes/Avatar.css.js.map +1 -1
- package/dist/generated/themes/AvatarGroup.css.d.ts +1 -1
- package/dist/generated/themes/AvatarGroup.css.js +1 -1
- package/dist/generated/themes/AvatarGroup.css.js.map +1 -1
- package/dist/generated/themes/Bar.css.d.ts +1 -1
- package/dist/generated/themes/Bar.css.js +1 -1
- package/dist/generated/themes/Bar.css.js.map +1 -1
- package/dist/generated/themes/Breadcrumbs.css.d.ts +1 -1
- package/dist/generated/themes/Breadcrumbs.css.js +1 -1
- package/dist/generated/themes/Breadcrumbs.css.js.map +1 -1
- package/dist/generated/themes/BusyIndicator.css.d.ts +1 -1
- package/dist/generated/themes/BusyIndicator.css.js +1 -1
- package/dist/generated/themes/BusyIndicator.css.js.map +1 -1
- package/dist/generated/themes/Button.css.d.ts +1 -1
- package/dist/generated/themes/Button.css.js +1 -1
- package/dist/generated/themes/Button.css.js.map +1 -1
- package/dist/generated/themes/ButtonBadge.css.d.ts +1 -1
- package/dist/generated/themes/ButtonBadge.css.js +1 -1
- package/dist/generated/themes/ButtonBadge.css.js.map +1 -1
- package/dist/generated/themes/Calendar.css.d.ts +1 -1
- package/dist/generated/themes/Calendar.css.js +1 -1
- package/dist/generated/themes/Calendar.css.js.map +1 -1
- package/dist/generated/themes/CalendarHeader.css.d.ts +1 -1
- package/dist/generated/themes/CalendarHeader.css.js +1 -1
- package/dist/generated/themes/CalendarHeader.css.js.map +1 -1
- package/dist/generated/themes/CalendarLegend.css.d.ts +1 -1
- package/dist/generated/themes/CalendarLegend.css.js +1 -1
- package/dist/generated/themes/CalendarLegend.css.js.map +1 -1
- package/dist/generated/themes/CalendarLegendItem.css.d.ts +1 -1
- package/dist/generated/themes/CalendarLegendItem.css.js +1 -1
- package/dist/generated/themes/CalendarLegendItem.css.js.map +1 -1
- package/dist/generated/themes/Card.css.d.ts +1 -1
- package/dist/generated/themes/Card.css.js +1 -1
- package/dist/generated/themes/Card.css.js.map +1 -1
- package/dist/generated/themes/CardHeader.css.d.ts +1 -1
- package/dist/generated/themes/CardHeader.css.js +1 -1
- package/dist/generated/themes/CardHeader.css.js.map +1 -1
- package/dist/generated/themes/Carousel.css.d.ts +1 -1
- package/dist/generated/themes/Carousel.css.js +1 -1
- package/dist/generated/themes/Carousel.css.js.map +1 -1
- package/dist/generated/themes/CheckBox.css.d.ts +1 -1
- package/dist/generated/themes/CheckBox.css.js +1 -1
- package/dist/generated/themes/CheckBox.css.js.map +1 -1
- package/dist/generated/themes/ColorPalette.css.d.ts +1 -1
- package/dist/generated/themes/ColorPalette.css.js +1 -1
- package/dist/generated/themes/ColorPalette.css.js.map +1 -1
- package/dist/generated/themes/ColorPaletteItem.css.d.ts +1 -1
- package/dist/generated/themes/ColorPaletteItem.css.js +1 -1
- package/dist/generated/themes/ColorPaletteItem.css.js.map +1 -1
- package/dist/generated/themes/ColorPalettePopover.css.d.ts +1 -1
- package/dist/generated/themes/ColorPalettePopover.css.js +1 -1
- package/dist/generated/themes/ColorPalettePopover.css.js.map +1 -1
- package/dist/generated/themes/ColorPicker.css.d.ts +1 -1
- package/dist/generated/themes/ColorPicker.css.js +1 -1
- package/dist/generated/themes/ColorPicker.css.js.map +1 -1
- package/dist/generated/themes/ComboBox.css.d.ts +1 -1
- package/dist/generated/themes/ComboBox.css.js +1 -1
- package/dist/generated/themes/ComboBox.css.js.map +1 -1
- package/dist/generated/themes/ComboBoxItem.css.d.ts +1 -1
- package/dist/generated/themes/ComboBoxItem.css.js +1 -1
- package/dist/generated/themes/ComboBoxItem.css.js.map +1 -1
- package/dist/generated/themes/DatePicker.css.d.ts +1 -1
- package/dist/generated/themes/DatePicker.css.js +1 -1
- package/dist/generated/themes/DatePicker.css.js.map +1 -1
- package/dist/generated/themes/DateTimePickerPopover.css.d.ts +1 -1
- package/dist/generated/themes/DateTimePickerPopover.css.js +1 -1
- package/dist/generated/themes/DateTimePickerPopover.css.js.map +1 -1
- package/dist/generated/themes/DayPicker.css.d.ts +1 -1
- package/dist/generated/themes/DayPicker.css.js +1 -1
- package/dist/generated/themes/DayPicker.css.js.map +1 -1
- package/dist/generated/themes/Dialog.css.d.ts +1 -1
- package/dist/generated/themes/Dialog.css.js +1 -1
- package/dist/generated/themes/Dialog.css.js.map +1 -1
- package/dist/generated/themes/DynamicDateRange.css.d.ts +1 -1
- package/dist/generated/themes/DynamicDateRange.css.js +1 -1
- package/dist/generated/themes/DynamicDateRange.css.js.map +1 -1
- package/dist/generated/themes/DynamicDateRangePopover.css.d.ts +1 -1
- package/dist/generated/themes/DynamicDateRangePopover.css.js +1 -1
- package/dist/generated/themes/DynamicDateRangePopover.css.js.map +1 -1
- package/dist/generated/themes/FileUploader.css.d.ts +1 -1
- package/dist/generated/themes/FileUploader.css.js +1 -1
- package/dist/generated/themes/FileUploader.css.js.map +1 -1
- package/dist/generated/themes/Form.css.d.ts +1 -1
- package/dist/generated/themes/Form.css.js +1 -1
- package/dist/generated/themes/Form.css.js.map +1 -1
- package/dist/generated/themes/FormItem.css.d.ts +1 -1
- package/dist/generated/themes/FormItem.css.js +1 -1
- package/dist/generated/themes/FormItem.css.js.map +1 -1
- package/dist/generated/themes/FormItemSpan.css.d.ts +1 -1
- package/dist/generated/themes/FormItemSpan.css.js +1 -1
- package/dist/generated/themes/FormItemSpan.css.js.map +1 -1
- package/dist/generated/themes/GrowingButton.css.d.ts +1 -1
- package/dist/generated/themes/GrowingButton.css.js +1 -1
- package/dist/generated/themes/GrowingButton.css.js.map +1 -1
- package/dist/generated/themes/Icon.css.d.ts +1 -1
- package/dist/generated/themes/Icon.css.js +1 -1
- package/dist/generated/themes/Icon.css.js.map +1 -1
- package/dist/generated/themes/Input.css.d.ts +1 -1
- package/dist/generated/themes/Input.css.js +1 -1
- package/dist/generated/themes/Input.css.js.map +1 -1
- package/dist/generated/themes/InputIcon.css.d.ts +1 -1
- package/dist/generated/themes/InputIcon.css.js +1 -1
- package/dist/generated/themes/InputIcon.css.js.map +1 -1
- package/dist/generated/themes/InputSharedStyles.css.d.ts +1 -1
- package/dist/generated/themes/InputSharedStyles.css.js +1 -1
- package/dist/generated/themes/InputSharedStyles.css.js.map +1 -1
- package/dist/generated/themes/Link.css.d.ts +1 -1
- package/dist/generated/themes/Link.css.js +1 -1
- package/dist/generated/themes/Link.css.js.map +1 -1
- package/dist/generated/themes/List.css.d.ts +1 -1
- package/dist/generated/themes/List.css.js +1 -1
- package/dist/generated/themes/List.css.js.map +1 -1
- package/dist/generated/themes/ListItem.css.d.ts +1 -1
- package/dist/generated/themes/ListItem.css.js +1 -1
- package/dist/generated/themes/ListItem.css.js.map +1 -1
- package/dist/generated/themes/ListItemBase.css.d.ts +1 -1
- package/dist/generated/themes/ListItemBase.css.js +1 -1
- package/dist/generated/themes/ListItemBase.css.js.map +1 -1
- package/dist/generated/themes/ListItemCustom.css.d.ts +1 -1
- package/dist/generated/themes/ListItemCustom.css.js +1 -1
- package/dist/generated/themes/ListItemCustom.css.js.map +1 -1
- package/dist/generated/themes/ListItemGroup.css.d.ts +1 -1
- package/dist/generated/themes/ListItemGroup.css.js +1 -1
- package/dist/generated/themes/ListItemGroup.css.js.map +1 -1
- package/dist/generated/themes/ListItemGroupHeader.css.d.ts +1 -1
- package/dist/generated/themes/ListItemGroupHeader.css.js +1 -1
- package/dist/generated/themes/ListItemGroupHeader.css.js.map +1 -1
- package/dist/generated/themes/ListItemIcon.css.d.ts +1 -1
- package/dist/generated/themes/ListItemIcon.css.js +1 -1
- package/dist/generated/themes/ListItemIcon.css.js.map +1 -1
- package/dist/generated/themes/Menu.css.d.ts +1 -1
- package/dist/generated/themes/Menu.css.js +1 -1
- package/dist/generated/themes/Menu.css.js.map +1 -1
- package/dist/generated/themes/MenuItem.css.d.ts +1 -1
- package/dist/generated/themes/MenuItem.css.js +1 -1
- package/dist/generated/themes/MenuItem.css.js.map +1 -1
- package/dist/generated/themes/MessageStrip.css.d.ts +1 -1
- package/dist/generated/themes/MessageStrip.css.js +1 -1
- package/dist/generated/themes/MessageStrip.css.js.map +1 -1
- package/dist/generated/themes/MonthPicker.css.d.ts +1 -1
- package/dist/generated/themes/MonthPicker.css.js +1 -1
- package/dist/generated/themes/MonthPicker.css.js.map +1 -1
- package/dist/generated/themes/MultiComboBox.css.d.ts +1 -1
- package/dist/generated/themes/MultiComboBox.css.js +1 -1
- package/dist/generated/themes/MultiComboBox.css.js.map +1 -1
- package/dist/generated/themes/MultiComboBoxItem.css.d.ts +1 -1
- package/dist/generated/themes/MultiComboBoxItem.css.js +1 -1
- package/dist/generated/themes/MultiComboBoxItem.css.js.map +1 -1
- package/dist/generated/themes/MultiComboBoxPopover.css.d.ts +1 -1
- package/dist/generated/themes/MultiComboBoxPopover.css.js +1 -1
- package/dist/generated/themes/MultiComboBoxPopover.css.js.map +1 -1
- package/dist/generated/themes/MultiInput.css.d.ts +1 -1
- package/dist/generated/themes/MultiInput.css.js +1 -1
- package/dist/generated/themes/MultiInput.css.js.map +1 -1
- package/dist/generated/themes/OptionBase.css.d.ts +1 -1
- package/dist/generated/themes/OptionBase.css.js +1 -1
- package/dist/generated/themes/OptionBase.css.js.map +1 -1
- package/dist/generated/themes/Panel.css.d.ts +1 -1
- package/dist/generated/themes/Panel.css.js +1 -1
- package/dist/generated/themes/Panel.css.js.map +1 -1
- package/dist/generated/themes/Popover.css.d.ts +1 -1
- package/dist/generated/themes/Popover.css.js +1 -1
- package/dist/generated/themes/Popover.css.js.map +1 -1
- package/dist/generated/themes/PopupsCommon.css.d.ts +1 -1
- package/dist/generated/themes/PopupsCommon.css.js +1 -1
- package/dist/generated/themes/PopupsCommon.css.js.map +1 -1
- package/dist/generated/themes/ProgressIndicator.css.d.ts +1 -1
- package/dist/generated/themes/ProgressIndicator.css.js +1 -1
- package/dist/generated/themes/ProgressIndicator.css.js.map +1 -1
- package/dist/generated/themes/RadioButton.css.d.ts +1 -1
- package/dist/generated/themes/RadioButton.css.js +1 -1
- package/dist/generated/themes/RadioButton.css.js.map +1 -1
- package/dist/generated/themes/RangeSlider.css.d.ts +1 -1
- package/dist/generated/themes/RangeSlider.css.js +1 -1
- package/dist/generated/themes/RangeSlider.css.js.map +1 -1
- package/dist/generated/themes/RatingIndicator.css.d.ts +1 -1
- package/dist/generated/themes/RatingIndicator.css.js +1 -1
- package/dist/generated/themes/RatingIndicator.css.js.map +1 -1
- package/dist/generated/themes/ResponsivePopover.css.d.ts +1 -1
- package/dist/generated/themes/ResponsivePopover.css.js +1 -1
- package/dist/generated/themes/ResponsivePopover.css.js.map +1 -1
- package/dist/generated/themes/ResponsivePopoverCommon.css.d.ts +1 -1
- package/dist/generated/themes/ResponsivePopoverCommon.css.js +1 -1
- package/dist/generated/themes/ResponsivePopoverCommon.css.js.map +1 -1
- package/dist/generated/themes/SegmentedButton.css.d.ts +1 -1
- package/dist/generated/themes/SegmentedButton.css.js +1 -1
- package/dist/generated/themes/SegmentedButton.css.js.map +1 -1
- package/dist/generated/themes/SegmentedButtonItem.css.d.ts +1 -1
- package/dist/generated/themes/SegmentedButtonItem.css.js +1 -1
- package/dist/generated/themes/SegmentedButtonItem.css.js.map +1 -1
- package/dist/generated/themes/Select.css.d.ts +1 -1
- package/dist/generated/themes/Select.css.js +1 -1
- package/dist/generated/themes/Select.css.js.map +1 -1
- package/dist/generated/themes/SliderBase.css.d.ts +1 -1
- package/dist/generated/themes/SliderBase.css.js +1 -1
- package/dist/generated/themes/SliderBase.css.js.map +1 -1
- package/dist/generated/themes/SplitButton.css.d.ts +1 -1
- package/dist/generated/themes/SplitButton.css.js +1 -1
- package/dist/generated/themes/SplitButton.css.js.map +1 -1
- package/dist/generated/themes/StepInput.css.d.ts +1 -1
- package/dist/generated/themes/StepInput.css.js +1 -1
- package/dist/generated/themes/StepInput.css.js.map +1 -1
- package/dist/generated/themes/SuggestionItem.css.d.ts +1 -1
- package/dist/generated/themes/SuggestionItem.css.js +1 -1
- package/dist/generated/themes/SuggestionItem.css.js.map +1 -1
- package/dist/generated/themes/SuggestionItemCustom.css.d.ts +1 -1
- package/dist/generated/themes/SuggestionItemCustom.css.js +1 -1
- package/dist/generated/themes/SuggestionItemCustom.css.js.map +1 -1
- package/dist/generated/themes/Switch.css.d.ts +1 -1
- package/dist/generated/themes/Switch.css.js +1 -1
- package/dist/generated/themes/Switch.css.js.map +1 -1
- package/dist/generated/themes/TabContainer.css.d.ts +1 -1
- package/dist/generated/themes/TabContainer.css.js +1 -1
- package/dist/generated/themes/TabContainer.css.js.map +1 -1
- package/dist/generated/themes/TabInOverflow.css.d.ts +1 -1
- package/dist/generated/themes/TabInOverflow.css.js +1 -1
- package/dist/generated/themes/TabInOverflow.css.js.map +1 -1
- package/dist/generated/themes/TabInStrip.css.d.ts +1 -1
- package/dist/generated/themes/TabInStrip.css.js +1 -1
- package/dist/generated/themes/TabInStrip.css.js.map +1 -1
- package/dist/generated/themes/TabSemanticIcon.css.d.ts +1 -1
- package/dist/generated/themes/TabSemanticIcon.css.js +1 -1
- package/dist/generated/themes/TabSemanticIcon.css.js.map +1 -1
- package/dist/generated/themes/TabSeparatorInOverflow.css.d.ts +1 -1
- package/dist/generated/themes/TabSeparatorInOverflow.css.js +1 -1
- package/dist/generated/themes/TabSeparatorInOverflow.css.js.map +1 -1
- package/dist/generated/themes/TableCellBase.css.d.ts +1 -1
- package/dist/generated/themes/TableCellBase.css.js +1 -1
- package/dist/generated/themes/TableCellBase.css.js.map +1 -1
- package/dist/generated/themes/TableHeaderRow.css.d.ts +1 -1
- package/dist/generated/themes/TableHeaderRow.css.js +1 -1
- package/dist/generated/themes/TableHeaderRow.css.js.map +1 -1
- package/dist/generated/themes/TableRow.css.d.ts +1 -1
- package/dist/generated/themes/TableRow.css.js +1 -1
- package/dist/generated/themes/TableRow.css.js.map +1 -1
- package/dist/generated/themes/TableRowActionBase.css.d.ts +1 -1
- package/dist/generated/themes/TableRowActionBase.css.js +1 -1
- package/dist/generated/themes/TableRowActionBase.css.js.map +1 -1
- package/dist/generated/themes/TableRowBase.css.d.ts +1 -1
- package/dist/generated/themes/TableRowBase.css.js +1 -1
- package/dist/generated/themes/TableRowBase.css.js.map +1 -1
- package/dist/generated/themes/Tag.css.d.ts +1 -1
- package/dist/generated/themes/Tag.css.js +1 -1
- package/dist/generated/themes/Tag.css.js.map +1 -1
- package/dist/generated/themes/Text.css.d.ts +1 -1
- package/dist/generated/themes/Text.css.js +1 -1
- package/dist/generated/themes/Text.css.js.map +1 -1
- package/dist/generated/themes/TextArea.css.d.ts +1 -1
- package/dist/generated/themes/TextArea.css.js +1 -1
- package/dist/generated/themes/TextArea.css.js.map +1 -1
- package/dist/generated/themes/TimePicker.css.d.ts +1 -1
- package/dist/generated/themes/TimePicker.css.js +1 -1
- package/dist/generated/themes/TimePicker.css.js.map +1 -1
- package/dist/generated/themes/Toast.css.d.ts +1 -1
- package/dist/generated/themes/Toast.css.js +1 -1
- package/dist/generated/themes/Toast.css.js.map +1 -1
- package/dist/generated/themes/ToggleButton.css.d.ts +1 -1
- package/dist/generated/themes/ToggleButton.css.js +1 -1
- package/dist/generated/themes/ToggleButton.css.js.map +1 -1
- package/dist/generated/themes/Token.css.d.ts +1 -1
- package/dist/generated/themes/Token.css.js +1 -1
- package/dist/generated/themes/Token.css.js.map +1 -1
- package/dist/generated/themes/Tokenizer.css.d.ts +1 -1
- package/dist/generated/themes/Tokenizer.css.js +1 -1
- package/dist/generated/themes/Tokenizer.css.js.map +1 -1
- package/dist/generated/themes/TokenizerPopover.css.d.ts +1 -1
- package/dist/generated/themes/TokenizerPopover.css.js +1 -1
- package/dist/generated/themes/TokenizerPopover.css.js.map +1 -1
- package/dist/generated/themes/Toolbar.css.d.ts +1 -1
- package/dist/generated/themes/Toolbar.css.js +1 -1
- package/dist/generated/themes/Toolbar.css.js.map +1 -1
- package/dist/generated/themes/ToolbarButton.css.d.ts +1 -1
- package/dist/generated/themes/ToolbarButton.css.js +1 -1
- package/dist/generated/themes/ToolbarButton.css.js.map +1 -1
- package/dist/generated/themes/ToolbarPopover.css.d.ts +1 -1
- package/dist/generated/themes/ToolbarPopover.css.js +1 -1
- package/dist/generated/themes/ToolbarPopover.css.js.map +1 -1
- package/dist/generated/themes/ToolbarSeparator.css.d.ts +1 -1
- package/dist/generated/themes/ToolbarSeparator.css.js +1 -1
- package/dist/generated/themes/ToolbarSeparator.css.js.map +1 -1
- package/dist/generated/themes/TreeItem.css.d.ts +1 -1
- package/dist/generated/themes/TreeItem.css.js +1 -1
- package/dist/generated/themes/TreeItem.css.js.map +1 -1
- package/dist/generated/themes/ValueStateMessage.css.d.ts +1 -1
- package/dist/generated/themes/ValueStateMessage.css.js +1 -1
- package/dist/generated/themes/ValueStateMessage.css.js.map +1 -1
- package/dist/generated/themes/ValueStateVariables.css.d.ts +1 -1
- package/dist/generated/themes/ValueStateVariables.css.js +1 -1
- package/dist/generated/themes/ValueStateVariables.css.js.map +1 -1
- package/dist/generated/themes/YearPicker.css.d.ts +1 -1
- package/dist/generated/themes/YearPicker.css.js +1 -1
- package/dist/generated/themes/YearPicker.css.js.map +1 -1
- package/dist/generated/themes/YearRangePicker.css.d.ts +1 -1
- package/dist/generated/themes/YearRangePicker.css.js +1 -1
- package/dist/generated/themes/YearRangePicker.css.js.map +1 -1
- package/dist/generated/themes/sap_fiori_3/parameters-bundle.css.d.ts +1 -1
- package/dist/generated/themes/sap_fiori_3/parameters-bundle.css.js +1 -1
- package/dist/generated/themes/sap_fiori_3/parameters-bundle.css.js.map +1 -1
- package/dist/generated/themes/sap_fiori_3_dark/parameters-bundle.css.d.ts +1 -1
- package/dist/generated/themes/sap_fiori_3_dark/parameters-bundle.css.js +1 -1
- package/dist/generated/themes/sap_fiori_3_dark/parameters-bundle.css.js.map +1 -1
- package/dist/generated/themes/sap_fiori_3_hcb/parameters-bundle.css.d.ts +1 -1
- package/dist/generated/themes/sap_fiori_3_hcb/parameters-bundle.css.js +1 -1
- package/dist/generated/themes/sap_fiori_3_hcb/parameters-bundle.css.js.map +1 -1
- package/dist/generated/themes/sap_fiori_3_hcw/parameters-bundle.css.d.ts +1 -1
- package/dist/generated/themes/sap_fiori_3_hcw/parameters-bundle.css.js +1 -1
- package/dist/generated/themes/sap_fiori_3_hcw/parameters-bundle.css.js.map +1 -1
- package/dist/generated/themes/sap_horizon/parameters-bundle.css.d.ts +1 -1
- package/dist/generated/themes/sap_horizon/parameters-bundle.css.js +1 -1
- package/dist/generated/themes/sap_horizon/parameters-bundle.css.js.map +1 -1
- package/dist/generated/themes/sap_horizon_dark/parameters-bundle.css.d.ts +1 -1
- package/dist/generated/themes/sap_horizon_dark/parameters-bundle.css.js +1 -1
- package/dist/generated/themes/sap_horizon_dark/parameters-bundle.css.js.map +1 -1
- package/dist/generated/themes/sap_horizon_hcb/parameters-bundle.css.d.ts +1 -1
- package/dist/generated/themes/sap_horizon_hcb/parameters-bundle.css.js +1 -1
- package/dist/generated/themes/sap_horizon_hcb/parameters-bundle.css.js.map +1 -1
- package/dist/generated/themes/sap_horizon_hcw/parameters-bundle.css.d.ts +1 -1
- package/dist/generated/themes/sap_horizon_hcw/parameters-bundle.css.js +1 -1
- package/dist/generated/themes/sap_horizon_hcw/parameters-bundle.css.js.map +1 -1
- package/dist/types/AvatarColorScheme.d.ts +5 -1
- package/dist/types/AvatarColorScheme.js +4 -0
- package/dist/types/AvatarColorScheme.js.map +1 -1
- package/dist/vscode.html-custom-data.json +70 -9
- package/dist/web-types.json +95 -15
- package/package.json +9 -9
- package/src/DatePickerInputTemplate.tsx +1 -1
- package/src/DynamicDateRangeInputTemplate.tsx +1 -6
- package/src/DynamicDateRangePopoverTemplate.tsx +7 -5
- package/src/SelectPopoverTemplate.tsx +1 -0
- package/src/SelectTemplate.tsx +7 -5
- package/src/dynamic-date-range-options/DateRangeTemplate.tsx +1 -1
- package/src/dynamic-date-range-options/LastNextTemplate.tsx +71 -0
- package/src/i18n/messagebundle.properties +60 -0
- package/src/i18n/messagebundle_en_US_sappsd.properties +7 -0
- package/src/themes/Avatar.css +6 -0
- package/src/themes/DayPicker.css +6 -1
- package/src/themes/DynamicDateRange.css +4 -0
- package/src/themes/DynamicDateRangePopover.css +85 -38
- package/src/themes/ListItem.css +1 -2
- package/src/themes/MonthPicker.css +1 -1
- package/src/themes/YearPicker.css +1 -1
- package/src/themes/YearRangePicker.css +1 -1
- package/src/themes/base/sizes-parameters.css +6 -0
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import Orientation from "@ui5/webcomponents-base/dist/types/Orientation.js";
|
|
2
|
+
import type UI5Element from "@ui5/webcomponents-base/dist/UI5Element.js";
|
|
3
|
+
import type DropIndicator from "../DropIndicator.js";
|
|
4
|
+
import type MovePlacement from "@ui5/webcomponents-base/dist/types/MovePlacement.js";
|
|
5
|
+
type DragAndDropConfig = {
|
|
6
|
+
getItems: () => Array<HTMLElement>;
|
|
7
|
+
getDropIndicator: () => DropIndicator | null;
|
|
8
|
+
orientation?: Orientation;
|
|
9
|
+
useOriginalEvent?: boolean;
|
|
10
|
+
clientCoordinate?: "clientX" | "clientY";
|
|
11
|
+
transformElement?: (element: HTMLElement) => HTMLElement;
|
|
12
|
+
validateDraggedElement?: (draggedElement: HTMLElement, targetElement: HTMLElement) => boolean;
|
|
13
|
+
filterPlacements?: (placements: MovePlacement[], draggedElement: HTMLElement, targetElement: HTMLElement) => MovePlacement[];
|
|
14
|
+
};
|
|
15
|
+
declare class DragAndDropHandler {
|
|
16
|
+
component: UI5Element;
|
|
17
|
+
config: DragAndDropConfig;
|
|
18
|
+
constructor(component: UI5Element, config: DragAndDropConfig);
|
|
19
|
+
ondragenter(e: DragEvent): void;
|
|
20
|
+
ondragleave(e: DragEvent): void;
|
|
21
|
+
ondragover(e: DragEvent): void;
|
|
22
|
+
ondrop(e: DragEvent): void;
|
|
23
|
+
_validateDragOver(e: DragEvent): boolean;
|
|
24
|
+
_findClosestPosition(e: DragEvent): {
|
|
25
|
+
element: HTMLElement;
|
|
26
|
+
placements: MovePlacement[];
|
|
27
|
+
} | null;
|
|
28
|
+
_transformTargetElement(element: HTMLElement): HTMLElement;
|
|
29
|
+
_isValidDragTarget(draggedElement: HTMLElement, targetElement: HTMLElement): boolean;
|
|
30
|
+
_filterPlacements(placements: MovePlacement[], draggedElement: HTMLElement, targetElement: HTMLElement): MovePlacement[];
|
|
31
|
+
}
|
|
32
|
+
export default DragAndDropHandler;
|
|
33
|
+
export type { DragAndDropConfig, };
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import DragRegistry from "@ui5/webcomponents-base/dist/util/dragAndDrop/DragRegistry.js";
|
|
2
|
+
import handleDragOver from "@ui5/webcomponents-base/dist/util/dragAndDrop/handleDragOver.js";
|
|
3
|
+
import handleDrop from "@ui5/webcomponents-base/dist/util/dragAndDrop/handleDrop.js";
|
|
4
|
+
import { findClosestPosition } from "@ui5/webcomponents-base/dist/util/dragAndDrop/findClosestPosition.js";
|
|
5
|
+
import Orientation from "@ui5/webcomponents-base/dist/types/Orientation.js";
|
|
6
|
+
class DragAndDropHandler {
|
|
7
|
+
constructor(component, config) {
|
|
8
|
+
this.component = component;
|
|
9
|
+
this.config = {
|
|
10
|
+
orientation: Orientation.Vertical,
|
|
11
|
+
clientCoordinate: "clientY",
|
|
12
|
+
...config,
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
ondragenter(e) {
|
|
16
|
+
e.preventDefault();
|
|
17
|
+
}
|
|
18
|
+
ondragleave(e) {
|
|
19
|
+
if (e.relatedTarget instanceof Node && this.component.shadowRoot?.contains(e.relatedTarget)) {
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
const dropIndicator = this.config.getDropIndicator();
|
|
23
|
+
if (dropIndicator) {
|
|
24
|
+
dropIndicator.targetReference = null;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
ondragover(e) {
|
|
28
|
+
if (!this._validateDragOver(e)) {
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
const draggedElement = DragRegistry.getDraggedElement();
|
|
32
|
+
const dropIndicator = this.config.getDropIndicator();
|
|
33
|
+
const closestPosition = this._findClosestPosition(e);
|
|
34
|
+
if (!closestPosition) {
|
|
35
|
+
dropIndicator.targetReference = null;
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
const targetElement = this._transformTargetElement(closestPosition.element);
|
|
39
|
+
if (!this._isValidDragTarget(draggedElement, targetElement)) {
|
|
40
|
+
dropIndicator.targetReference = null;
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
// Filter placements if needed (e.g., ListItemGroup filtering out MovePlacement.On)
|
|
44
|
+
const placements = this._filterPlacements(closestPosition.placements, draggedElement, targetElement);
|
|
45
|
+
const settings = this.config.useOriginalEvent ? { originalEvent: true } : {};
|
|
46
|
+
const { targetReference, placement } = handleDragOver(e, this.component, {
|
|
47
|
+
element: targetElement,
|
|
48
|
+
placements,
|
|
49
|
+
}, targetElement, settings);
|
|
50
|
+
dropIndicator.targetReference = targetReference;
|
|
51
|
+
dropIndicator.placement = placement;
|
|
52
|
+
}
|
|
53
|
+
ondrop(e) {
|
|
54
|
+
const dropIndicator = this.config.getDropIndicator();
|
|
55
|
+
if (!dropIndicator?.targetReference || !dropIndicator?.placement) {
|
|
56
|
+
e.preventDefault();
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
const settings = this.config.useOriginalEvent ? { originalEvent: true } : {};
|
|
60
|
+
handleDrop(e, this.component, dropIndicator.targetReference, dropIndicator.placement, settings);
|
|
61
|
+
dropIndicator.targetReference = null;
|
|
62
|
+
}
|
|
63
|
+
_validateDragOver(e) {
|
|
64
|
+
if (!(e.target instanceof HTMLElement)) {
|
|
65
|
+
return false;
|
|
66
|
+
}
|
|
67
|
+
const draggedElement = DragRegistry.getDraggedElement();
|
|
68
|
+
const dropIndicator = this.config.getDropIndicator();
|
|
69
|
+
return !!(draggedElement && dropIndicator);
|
|
70
|
+
}
|
|
71
|
+
_findClosestPosition(e) {
|
|
72
|
+
const items = this.config.getItems();
|
|
73
|
+
const coordinate = this.config.clientCoordinate === "clientX" ? e.clientX : e.clientY;
|
|
74
|
+
return findClosestPosition(items, coordinate, this.config.orientation);
|
|
75
|
+
}
|
|
76
|
+
_transformTargetElement(element) {
|
|
77
|
+
if (this.config.transformElement) {
|
|
78
|
+
return this.config.transformElement(element);
|
|
79
|
+
}
|
|
80
|
+
return element;
|
|
81
|
+
}
|
|
82
|
+
_isValidDragTarget(draggedElement, targetElement) {
|
|
83
|
+
if (this.config.validateDraggedElement) {
|
|
84
|
+
return this.config.validateDraggedElement(draggedElement, targetElement);
|
|
85
|
+
}
|
|
86
|
+
return true;
|
|
87
|
+
}
|
|
88
|
+
_filterPlacements(placements, draggedElement, targetElement) {
|
|
89
|
+
if (this.config.filterPlacements) {
|
|
90
|
+
return this.config.filterPlacements(placements, draggedElement, targetElement);
|
|
91
|
+
}
|
|
92
|
+
return placements;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
export default DragAndDropHandler;
|
|
96
|
+
//# sourceMappingURL=DragAndDropHandler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DragAndDropHandler.js","sourceRoot":"","sources":["../../src/delegate/DragAndDropHandler.ts"],"names":[],"mappings":"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","sourcesContent":["import DragRegistry from \"@ui5/webcomponents-base/dist/util/dragAndDrop/DragRegistry.js\";\nimport handleDragOver from \"@ui5/webcomponents-base/dist/util/dragAndDrop/handleDragOver.js\";\nimport handleDrop from \"@ui5/webcomponents-base/dist/util/dragAndDrop/handleDrop.js\";\nimport { findClosestPosition } from \"@ui5/webcomponents-base/dist/util/dragAndDrop/findClosestPosition.js\";\nimport Orientation from \"@ui5/webcomponents-base/dist/types/Orientation.js\";\nimport type UI5Element from \"@ui5/webcomponents-base/dist/UI5Element.js\";\nimport type DropIndicator from \"../DropIndicator.js\";\nimport type MovePlacement from \"@ui5/webcomponents-base/dist/types/MovePlacement.js\";\n\ntype DragAndDropConfig = {\n\tgetItems: () => Array<HTMLElement>;\n\tgetDropIndicator: () => DropIndicator | null;\n\torientation?: Orientation;\n\tuseOriginalEvent?: boolean;\n\tclientCoordinate?: \"clientX\" | \"clientY\";\n\ttransformElement?: (element: HTMLElement) => HTMLElement;\n\tvalidateDraggedElement?: (draggedElement: HTMLElement, targetElement: HTMLElement) => boolean;\n\tfilterPlacements?: (placements: MovePlacement[], draggedElement: HTMLElement, targetElement: HTMLElement) => MovePlacement[];\n};\n\nclass DragAndDropHandler {\n\tcomponent: UI5Element;\n\tconfig: DragAndDropConfig;\n\n\tconstructor(component: UI5Element, config: DragAndDropConfig) {\n\t\tthis.component = component;\n\t\tthis.config = {\n\t\t\torientation: Orientation.Vertical,\n\t\t\tclientCoordinate: \"clientY\",\n\t\t\t...config,\n\t\t};\n\t}\n\n\tondragenter(e: DragEvent) {\n\t\te.preventDefault();\n\t}\n\n\tondragleave(e: DragEvent) {\n\t\tif (e.relatedTarget instanceof Node && this.component.shadowRoot?.contains(e.relatedTarget)) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst dropIndicator = this.config.getDropIndicator();\n\t\tif (dropIndicator) {\n\t\t\tdropIndicator.targetReference = null;\n\t\t}\n\t}\n\n\tondragover(e: DragEvent) {\n\t\tif (!this._validateDragOver(e)) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst draggedElement = DragRegistry.getDraggedElement()!;\n\t\tconst dropIndicator = this.config.getDropIndicator()!;\n\t\tconst closestPosition = this._findClosestPosition(e);\n\n\t\tif (!closestPosition) {\n\t\t\tdropIndicator.targetReference = null;\n\t\t\treturn;\n\t\t}\n\n\t\tconst targetElement = this._transformTargetElement(closestPosition.element);\n\n\t\tif (!this._isValidDragTarget(draggedElement, targetElement)) {\n\t\t\tdropIndicator.targetReference = null;\n\t\t\treturn;\n\t\t}\n\n\t\t// Filter placements if needed (e.g., ListItemGroup filtering out MovePlacement.On)\n\t\tconst placements = this._filterPlacements(closestPosition.placements, draggedElement, targetElement);\n\n\t\tconst settings = this.config.useOriginalEvent ? { originalEvent: true } : {};\n\t\tconst { targetReference, placement } = handleDragOver(e, this.component, {\n\t\t\telement: targetElement,\n\t\t\tplacements,\n\t\t}, targetElement, settings);\n\n\t\tdropIndicator.targetReference = targetReference;\n\t\tdropIndicator.placement = placement;\n\t}\n\n\tondrop(e: DragEvent) {\n\t\tconst dropIndicator = this.config.getDropIndicator();\n\n\t\tif (!dropIndicator?.targetReference || !dropIndicator?.placement) {\n\t\t\te.preventDefault();\n\t\t\treturn;\n\t\t}\n\n\t\tconst settings = this.config.useOriginalEvent ? { originalEvent: true } : {};\n\t\thandleDrop(e, this.component, dropIndicator.targetReference, dropIndicator.placement, settings);\n\t\tdropIndicator.targetReference = null;\n\t}\n\n\t_validateDragOver(e: DragEvent): boolean {\n\t\tif (!(e.target instanceof HTMLElement)) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst draggedElement = DragRegistry.getDraggedElement();\n\t\tconst dropIndicator = this.config.getDropIndicator();\n\n\t\treturn !!(draggedElement && dropIndicator);\n\t}\n\n\t_findClosestPosition(e: DragEvent) {\n\t\tconst items = this.config.getItems();\n\t\tconst coordinate = this.config.clientCoordinate === \"clientX\" ? e.clientX : e.clientY;\n\n\t\treturn findClosestPosition(\n\t\t\titems,\n\t\t\tcoordinate,\n\t\t\tthis.config.orientation!,\n\t\t);\n\t}\n\n\t_transformTargetElement(element: HTMLElement): HTMLElement {\n\t\tif (this.config.transformElement) {\n\t\t\treturn this.config.transformElement(element);\n\t\t}\n\t\treturn element;\n\t}\n\n\t_isValidDragTarget(draggedElement: HTMLElement, targetElement: HTMLElement): boolean {\n\t\tif (this.config.validateDraggedElement) {\n\t\t\treturn this.config.validateDraggedElement(draggedElement, targetElement);\n\t\t}\n\t\treturn true;\n\t}\n\n\t_filterPlacements(placements: MovePlacement[], draggedElement: HTMLElement, targetElement: HTMLElement): MovePlacement[] {\n\t\tif (this.config.filterPlacements) {\n\t\t\treturn this.config.filterPlacements(placements, draggedElement, targetElement);\n\t\t}\n\t\treturn placements;\n\t}\n}\n\nexport default DragAndDropHandler;\nexport type {\n\tDragAndDropConfig,\n};\n"]}
|
|
@@ -7,12 +7,12 @@ import type { JsxTemplate } from "@ui5/webcomponents-base/dist/index.js";
|
|
|
7
7
|
* @public
|
|
8
8
|
* @since 2.11.0
|
|
9
9
|
*/
|
|
10
|
-
declare class
|
|
10
|
+
declare class DateRange implements IDynamicDateRangeOption {
|
|
11
11
|
template: JsxTemplate;
|
|
12
12
|
constructor();
|
|
13
13
|
parse(value: string): DynamicDateRangeValue;
|
|
14
14
|
format(value: DynamicDateRangeValue): string;
|
|
15
|
-
toDates(value: DynamicDateRangeValue): Date
|
|
15
|
+
toDates(value: DynamicDateRangeValue): Array<Date>;
|
|
16
16
|
get text(): string;
|
|
17
17
|
get operator(): string;
|
|
18
18
|
get icon(): string;
|
|
@@ -20,4 +20,4 @@ declare class DateRangeRange implements IDynamicDateRangeOption {
|
|
|
20
20
|
getFormat(): DateFormat;
|
|
21
21
|
handleSelectionChange(e: CustomEvent): DynamicDateRangeValue | undefined;
|
|
22
22
|
}
|
|
23
|
-
export default
|
|
23
|
+
export default DateRange;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import
|
|
1
|
+
import DateRangeTemplate from "./DateRangeTemplate.js";
|
|
2
2
|
import DateFormat from "@ui5/webcomponents-localization/dist/DateFormat.js";
|
|
3
|
+
import UI5Date from "@ui5/webcomponents-localization/dist/dates/UI5Date.js";
|
|
3
4
|
import { DYNAMIC_DATE_RANGE_DATERANGE_TEXT, } from "../generated/i18n/i18n-defaults.js";
|
|
4
5
|
import { dateRangeOptionToDates } from "./toDates.js";
|
|
5
6
|
import DynamicDateRange from "../DynamicDateRange.js";
|
|
@@ -9,9 +10,9 @@ import DynamicDateRange from "../DynamicDateRange.js";
|
|
|
9
10
|
* @public
|
|
10
11
|
* @since 2.11.0
|
|
11
12
|
*/
|
|
12
|
-
class
|
|
13
|
+
class DateRange {
|
|
13
14
|
constructor() {
|
|
14
|
-
this.template =
|
|
15
|
+
this.template = DateRangeTemplate;
|
|
15
16
|
}
|
|
16
17
|
parse(value) {
|
|
17
18
|
const returnValue = { operator: "", values: [] };
|
|
@@ -21,7 +22,7 @@ class DateRangeRange {
|
|
|
21
22
|
}
|
|
22
23
|
format(value) {
|
|
23
24
|
const valuesArray = value?.values;
|
|
24
|
-
if (!valuesArray || valuesArray.length !== 2) {
|
|
25
|
+
if (!valuesArray || valuesArray.length !== 2 || !valuesArray[1]) {
|
|
25
26
|
return "";
|
|
26
27
|
}
|
|
27
28
|
const formattedValue = this.getFormat().format(valuesArray);
|
|
@@ -58,14 +59,23 @@ class DateRangeRange {
|
|
|
58
59
|
currentValue.values = [];
|
|
59
60
|
currentValue.operator = this.operator;
|
|
60
61
|
if (e.detail.selectedDates[0]) {
|
|
61
|
-
currentValue.values[0] =
|
|
62
|
+
currentValue.values[0] = UI5Date.getInstance(e.detail.selectedDates[0] * 1000);
|
|
62
63
|
}
|
|
63
64
|
if (e.detail.selectedDates[1]) {
|
|
64
|
-
currentValue.values[1] =
|
|
65
|
+
currentValue.values[1] = UI5Date.getInstance(e.detail.selectedDates[1] * 1000);
|
|
66
|
+
}
|
|
67
|
+
// Handle backwards date ranges by automatically flipping them
|
|
68
|
+
if (currentValue.values.length === 2 && currentValue.values[0] && currentValue.values[1]) {
|
|
69
|
+
const startDate = currentValue.values[0];
|
|
70
|
+
const endDate = currentValue.values[1];
|
|
71
|
+
// If start date is after end date, flip them
|
|
72
|
+
if (startDate.getTime() > endDate.getTime()) {
|
|
73
|
+
currentValue.values = [endDate, startDate];
|
|
74
|
+
}
|
|
65
75
|
}
|
|
66
76
|
return currentValue;
|
|
67
77
|
}
|
|
68
78
|
}
|
|
69
|
-
DynamicDateRange.register("DATERANGE",
|
|
70
|
-
export default
|
|
79
|
+
DynamicDateRange.register("DATERANGE", DateRange);
|
|
80
|
+
export default DateRange;
|
|
71
81
|
//# sourceMappingURL=DateRange.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DateRange.js","sourceRoot":"","sources":["../../src/dynamic-date-range-options/DateRange.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"DateRange.js","sourceRoot":"","sources":["../../src/dynamic-date-range-options/DateRange.ts"],"names":[],"mappings":"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","sourcesContent":["import DateRangeTemplate from \"./DateRangeTemplate.js\";\nimport type { DynamicDateRangeValue, IDynamicDateRangeOption } from \"../DynamicDateRange.js\";\nimport DateFormat from \"@ui5/webcomponents-localization/dist/DateFormat.js\";\nimport UI5Date from \"@ui5/webcomponents-localization/dist/dates/UI5Date.js\";\nimport type { JsxTemplate } from \"@ui5/webcomponents-base/dist/index.js\";\nimport {\n\tDYNAMIC_DATE_RANGE_DATERANGE_TEXT,\n} from \"../generated/i18n/i18n-defaults.js\";\nimport { dateRangeOptionToDates } from \"./toDates.js\";\nimport DynamicDateRange from \"../DynamicDateRange.js\";\n\n/**\n * @class\n * @constructor\n * @public\n * @since 2.11.0\n */\n\nclass DateRange implements IDynamicDateRangeOption {\n\ttemplate: JsxTemplate;\n\n\tconstructor() {\n\t\tthis.template = DateRangeTemplate;\n\t}\n\n\tparse(value: string): DynamicDateRangeValue {\n\t\tconst returnValue = { operator: \"\", values: [] } as DynamicDateRangeValue;\n\n\t\treturnValue.operator = this.operator;\n\t\treturnValue.values = this.getFormat().parse(value) as Date[];\n\n\t\treturn returnValue;\n\t}\n\n\tformat(value: DynamicDateRangeValue) {\n\t\tconst valuesArray = value?.values as Array<Date>;\n\n\t\tif (!valuesArray || valuesArray.length !== 2 || !valuesArray[1]) {\n\t\t\treturn \"\";\n\t\t}\n\n\t\tconst formattedValue = this.getFormat().format(valuesArray);\n\n\t\treturn formattedValue;\n\t}\n\n\ttoDates(value: DynamicDateRangeValue): Array<Date> {\n\t\treturn dateRangeOptionToDates(value);\n\t}\n\n\tget text(): string {\n\t\treturn DynamicDateRange.i18nBundle.getText(DYNAMIC_DATE_RANGE_DATERANGE_TEXT);\n\t}\n\n\tget operator() {\n\t\treturn \"DATERANGE\";\n\t}\n\n\tget icon() {\n\t\treturn \"appointment-2\";\n\t}\n\n\tisValidString(value: string): boolean {\n\t\tconst dates = this.getFormat().parse(value) as Array<Date>;\n\n\t\tif (!dates[0] || !dates[1] || Number.isNaN(dates[0].getTime()) || Number.isNaN(dates[1].getTime())) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t}\n\n\tgetFormat(): DateFormat {\n\t\treturn DateFormat.getDateInstance({\n\t\t\tstrictParsing: true,\n\t\t\tinterval: true,\n\t\t\tintervalDelimiter: \" - \",\n\t\t});\n\t}\n\n\thandleSelectionChange(e: CustomEvent): DynamicDateRangeValue | undefined {\n\t\tconst currentValue = { operator: \"\", values: [] } as DynamicDateRangeValue;\n\t\tcurrentValue.values = [];\n\t\tcurrentValue.operator = this.operator;\n\n\t\tif (e.detail.selectedDates[0]) {\n\t\t\tcurrentValue.values[0] = UI5Date.getInstance(e.detail.selectedDates[0] * 1000);\n\t\t}\n\n\t\tif (e.detail.selectedDates[1]) {\n\t\t\tcurrentValue.values[1] = UI5Date.getInstance(e.detail.selectedDates[1] * 1000);\n\t\t}\n\n\t\t// Handle backwards date ranges by automatically flipping them\n\t\tif (currentValue.values.length === 2 && currentValue.values[0] && currentValue.values[1]) {\n\t\t\tconst startDate = currentValue.values[0] as UI5Date;\n\t\t\tconst endDate = currentValue.values[1] as UI5Date;\n\n\t\t\t// If start date is after end date, flip them\n\t\t\tif (startDate.getTime() > endDate.getTime()) {\n\t\t\t\tcurrentValue.values = [endDate, startDate];\n\t\t\t}\n\t\t}\n\n\t\treturn currentValue;\n\t}\n}\n\nDynamicDateRange.register(\"DATERANGE\", DateRange);\n\nexport default DateRange;\n"]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import type DynamicDateRange from "../DynamicDateRange.js";
|
|
2
|
-
export default function
|
|
2
|
+
export default function DateRangeTemplate(this: DynamicDateRange): import("@ui5/webcomponents-base/jsx-runtime").JSX.Element;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { jsx as _jsx } from "@ui5/webcomponents-base/jsx-runtime";
|
|
2
2
|
import Calendar from "../Calendar.js";
|
|
3
3
|
import CalendarDateRange from "../CalendarDateRange.js";
|
|
4
|
-
export default function
|
|
4
|
+
export default function DateRangeTemplate() {
|
|
5
5
|
return (_jsx(Calendar, { onSelectionChange: this.handleSelectionChange, selectionMode: "Range", children: _jsx(CalendarDateRange, { startValue: this.value?.operator === "DATERANGE"
|
|
6
6
|
? this.getOption(this.value.operator)?.format(this.value)?.split("-")[0] || undefined
|
|
7
7
|
: undefined, endValue: this.value?.operator === "DATERANGE"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DateRangeTemplate.js","sourceRoot":"","sources":["../../src/dynamic-date-range-options/DateRangeTemplate.tsx"],"names":[],"mappings":";AACA,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AACtC,OAAO,iBAAiB,MAAM,yBAAyB,CAAC;AAExD,MAAM,CAAC,OAAO,UAAU,
|
|
1
|
+
{"version":3,"file":"DateRangeTemplate.js","sourceRoot":"","sources":["../../src/dynamic-date-range-options/DateRangeTemplate.tsx"],"names":[],"mappings":";AACA,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AACtC,OAAO,iBAAiB,MAAM,yBAAyB,CAAC;AAExD,MAAM,CAAC,OAAO,UAAU,iBAAiB;IACxC,OAAO,CACN,KAAC,QAAQ,IAAC,iBAAiB,EAAE,IAAI,CAAC,qBAAqB,EAAE,aAAa,EAAC,OAAO,YAC7E,KAAC,iBAAiB,IACjB,UAAU,EACT,IAAI,CAAC,KAAK,EAAE,QAAQ,KAAK,WAAW;gBACnC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,SAAS;gBACrF,CAAC,CAAC,SAAS,EAEb,QAAQ,EACP,IAAI,CAAC,KAAK,EAAE,QAAQ,KAAK,WAAW;gBACnC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,SAAS;gBACrF,CAAC,CAAC,SAAS,GAEO,GACX,CACX,CAAC;AACH,CAAC","sourcesContent":["import type DynamicDateRange from \"../DynamicDateRange.js\";\nimport Calendar from \"../Calendar.js\";\nimport CalendarDateRange from \"../CalendarDateRange.js\";\n\nexport default function DateRangeTemplate(this: DynamicDateRange) {\n\treturn (\n\t\t<Calendar onSelectionChange={this.handleSelectionChange} selectionMode=\"Range\">\n\t\t\t<CalendarDateRange\n\t\t\t\tstartValue={\n\t\t\t\t\tthis.value?.operator === \"DATERANGE\"\n\t\t\t\t\t\t? this.getOption(this.value.operator)?.format(this.value)?.split(\"-\")[0] || undefined\n\t\t\t\t\t\t: undefined\n\t\t\t\t}\n\t\t\t\tendValue={\n\t\t\t\t\tthis.value?.operator === \"DATERANGE\"\n\t\t\t\t\t\t? this.getOption(this.value.operator)?.format(this.value)?.split(\"-\")[1] || undefined\n\t\t\t\t\t\t: undefined\n\t\t\t\t}\n\t\t\t></CalendarDateRange>\n\t\t</Calendar>\n\t);\n}\n"]}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "@ui5/webcomponents-base/jsx-runtime";
|
|
2
|
+
import DynamicDateRange from "../DynamicDateRange.js";
|
|
3
|
+
import StepInput from "../StepInput.js";
|
|
4
|
+
import Select from "../Select.js";
|
|
5
|
+
import Option from "../Option.js";
|
|
6
|
+
import Label from "../Label.js";
|
|
7
|
+
import { DYNAMIC_DATE_RANGE_VALUE_LABEL_TEXT, DYNAMIC_DATE_RANGE_UNIT_OF_TIME_LABEL_TEXT, } from "../generated/i18n/i18n-defaults.js";
|
|
8
|
+
export default function LastNextTemplate() {
|
|
9
|
+
const currentOption = this._currentOption;
|
|
10
|
+
const availableOptionInfos = currentOption.availableOptions;
|
|
11
|
+
const filteredOptions = availableOptionInfos.filter(info => currentOption.options?.includes(info.operator) || currentOption.operator === info.operator);
|
|
12
|
+
const isGrouped = filteredOptions.length > 1;
|
|
13
|
+
const currentNumber = this.currentValue?.values ? typeof this.currentValue.values[0] === "number" ? this.currentValue.values[0] : 1 : 1;
|
|
14
|
+
const currentOperator = this.currentValue?.operator || filteredOptions[0]?.operator || "";
|
|
15
|
+
// Input handlers
|
|
16
|
+
const handleNumberChange = (e) => {
|
|
17
|
+
const newValue = Number(e.target.value);
|
|
18
|
+
this.currentValue = {
|
|
19
|
+
operator: currentOperator,
|
|
20
|
+
values: [newValue],
|
|
21
|
+
};
|
|
22
|
+
};
|
|
23
|
+
const handleUnitChange = (e) => {
|
|
24
|
+
const newOperator = String(e.detail.selectedOption.value);
|
|
25
|
+
this.currentValue = {
|
|
26
|
+
operator: newOperator,
|
|
27
|
+
values: [currentNumber],
|
|
28
|
+
};
|
|
29
|
+
};
|
|
30
|
+
return (_jsx("div", { class: "ui5-last-next-container ui5-last-next-container-padded", children: _jsxs("div", { class: "ui5-ddr-input-container ui5-ddr-input-container-right-aligned", children: [_jsx(Label, { class: "ui5-ddr-label", children: DynamicDateRange.i18nBundle.getText(DYNAMIC_DATE_RANGE_VALUE_LABEL_TEXT) }), _jsx(StepInput, { value: currentNumber, min: 1, max: isGrouped ? 9999 : 999, onChange: handleNumberChange }), isGrouped && (_jsxs(_Fragment, { children: [_jsx(Label, { class: "ui5-ddr-label", children: DynamicDateRange.i18nBundle.getText(DYNAMIC_DATE_RANGE_UNIT_OF_TIME_LABEL_TEXT) }), _jsx(Select, { value: currentOperator, onChange: handleUnitChange, children: filteredOptions.map(option => (_jsx(Option, { value: option.operator, children: option.unitText }, option.operator))) })] }))] }) }));
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=LastNextTemplate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LastNextTemplate.js","sourceRoot":"","sources":["../../src/dynamic-date-range-options/LastNextTemplate.tsx"],"names":[],"mappings":";AAAA,OAAO,gBAAgB,MAAM,wBAAwB,CAAC;AACtD,OAAO,SAAS,MAAM,iBAAiB,CAAC;AACxC,OAAO,MAAM,MAAM,cAAc,CAAC;AAElC,OAAO,MAAM,MAAM,cAAc,CAAC;AAClC,OAAO,KAAK,MAAM,aAAa,CAAC;AAGhC,OAAO,EACN,mCAAmC,EACnC,0CAA0C,GAC1C,MAAM,oCAAoC,CAAC;AAE5C,MAAM,CAAC,OAAO,UAAU,gBAAgB;IACvC,MAAM,aAAa,GAAG,IAAI,CAAC,cAA2C,CAAC;IAEvE,MAAM,oBAAoB,GAAG,aAAa,CAAC,gBAAgB,CAAC;IAE5D,MAAM,eAAe,GAAG,oBAAoB,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAC1D,aAAa,CAAC,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,aAAa,CAAC,QAAQ,KAAK,IAAI,CAAC,QAAQ,CAC1F,CAAC;IAEF,MAAM,SAAS,GAAG,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC;IAE7C,MAAM,aAAa,GAAG,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACxI,MAAM,eAAe,GAAG,IAAI,CAAC,YAAY,EAAE,QAAQ,IAAI,eAAe,CAAC,CAAC,CAAC,EAAE,QAAQ,IAAI,EAAE,CAAC;IAE1F,iBAAiB;IACjB,MAAM,kBAAkB,GAAG,CAAC,CAAc,EAAE,EAAE;QAC7C,MAAM,QAAQ,GAAG,MAAM,CAAE,CAAC,CAAC,MAAoB,CAAC,KAAK,CAAC,CAAC;QACvD,IAAI,CAAC,YAAY,GAAG;YACnB,QAAQ,EAAE,eAAe;YACzB,MAAM,EAAE,CAAC,QAAQ,CAAC;SAClB,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,gBAAgB,GAAG,CAAC,CAAuC,EAAE,EAAE;QACpE,MAAM,WAAW,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAC1D,IAAI,CAAC,YAAY,GAAG;YACnB,QAAQ,EAAE,WAAW;YACrB,MAAM,EAAE,CAAC,aAAa,CAAC;SACvB,CAAC;IACH,CAAC,CAAC;IAEF,OAAO,CACN,cAAK,KAAK,EAAC,wDAAwD,YAClE,eAAK,KAAK,EAAC,+DAA+D,aACzE,KAAC,KAAK,IAAC,KAAK,EAAC,eAAe,YAAE,gBAAgB,CAAC,UAAU,CAAC,OAAO,CAAC,mCAAmC,CAAC,GAAS,EAC/G,KAAC,SAAS,IACT,KAAK,EAAE,aAAa,EACpB,GAAG,EAAE,CAAC,EACN,GAAG,EAAE,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,EAC3B,QAAQ,EAAE,kBAAkB,GAC3B,EAED,SAAS,IAAI,CACb,8BACC,KAAC,KAAK,IAAC,KAAK,EAAC,eAAe,YAAE,gBAAgB,CAAC,UAAU,CAAC,OAAO,CAAC,0CAA0C,CAAC,GAAS,EACtH,KAAC,MAAM,IAAC,KAAK,EAAE,eAAe,EAAE,QAAQ,EAAE,gBAAgB,YACxD,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAC9B,KAAC,MAAM,IAAC,KAAK,EAAE,MAAM,CAAC,QAAQ,YAC5B,MAAM,CAAC,QAAQ,IADoB,MAAM,CAAC,QAAQ,CAE3C,CACT,CAAC,GACM,IACP,CACH,IACI,GACD,CACN,CAAC;AACH,CAAC","sourcesContent":["import DynamicDateRange from \"../DynamicDateRange.js\";\nimport StepInput from \"../StepInput.js\";\nimport Select from \"../Select.js\";\nimport type { SelectChangeEventDetail } from \"../Select.js\";\nimport Option from \"../Option.js\";\nimport Label from \"../Label.js\";\nimport type LastOptions from \"./LastOptions.js\";\nimport type NextOptions from \"./NextOptions.js\";\nimport {\n\tDYNAMIC_DATE_RANGE_VALUE_LABEL_TEXT,\n\tDYNAMIC_DATE_RANGE_UNIT_OF_TIME_LABEL_TEXT,\n} from \"../generated/i18n/i18n-defaults.js\";\n\nexport default function LastNextTemplate(this: DynamicDateRange) {\n\tconst currentOption = this._currentOption as LastOptions | NextOptions;\n\n\tconst availableOptionInfos = currentOption.availableOptions;\n\n\tconst filteredOptions = availableOptionInfos.filter(info =>\n\t\tcurrentOption.options?.includes(info.operator) || currentOption.operator === info.operator\n\t);\n\n\tconst isGrouped = filteredOptions.length > 1;\n\n\tconst currentNumber = this.currentValue?.values ? typeof this.currentValue.values[0] === \"number\" ? this.currentValue.values[0] : 1 : 1;\n\tconst currentOperator = this.currentValue?.operator || filteredOptions[0]?.operator || \"\";\n\n\t// Input handlers\n\tconst handleNumberChange = (e: CustomEvent) => {\n\t\tconst newValue = Number((e.target as StepInput).value);\n\t\tthis.currentValue = {\n\t\t\toperator: currentOperator,\n\t\t\tvalues: [newValue],\n\t\t};\n\t};\n\n\tconst handleUnitChange = (e: CustomEvent<SelectChangeEventDetail>) => {\n\t\tconst newOperator = String(e.detail.selectedOption.value);\n\t\tthis.currentValue = {\n\t\t\toperator: newOperator,\n\t\t\tvalues: [currentNumber],\n\t\t};\n\t};\n\n\treturn (\n\t\t<div class=\"ui5-last-next-container ui5-last-next-container-padded\">\n\t\t\t<div class=\"ui5-ddr-input-container ui5-ddr-input-container-right-aligned\">\n\t\t\t\t<Label class=\"ui5-ddr-label\">{DynamicDateRange.i18nBundle.getText(DYNAMIC_DATE_RANGE_VALUE_LABEL_TEXT)}</Label>\n\t\t\t\t<StepInput\n\t\t\t\t\tvalue={currentNumber}\n\t\t\t\t\tmin={1}\n\t\t\t\t\tmax={isGrouped ? 9999 : 999}\n\t\t\t\t\tonChange={handleNumberChange}\n\t\t\t\t/>\n\n\t\t\t\t{isGrouped && (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<Label class=\"ui5-ddr-label\">{DynamicDateRange.i18nBundle.getText(DYNAMIC_DATE_RANGE_UNIT_OF_TIME_LABEL_TEXT)}</Label>\n\t\t\t\t\t\t<Select value={currentOperator} onChange={handleUnitChange}>\n\t\t\t\t\t\t\t{filteredOptions.map(option => (\n\t\t\t\t\t\t\t\t<Option value={option.operator} key={option.operator}>\n\t\t\t\t\t\t\t\t\t{option.unitText}\n\t\t\t\t\t\t\t\t</Option>\n\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t</Select>\n\t\t\t\t\t</>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n"]}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import type { DynamicDateRangeValue, IDynamicDateRangeOption } from "../DynamicDateRange.js";
|
|
2
|
+
type LastNextOption = {
|
|
3
|
+
operator: string;
|
|
4
|
+
text: string;
|
|
5
|
+
unitText: string;
|
|
6
|
+
};
|
|
7
|
+
/**
|
|
8
|
+
* Interface for Last/Next options that have additional methods
|
|
9
|
+
*/
|
|
10
|
+
interface ILastNextOption extends IDynamicDateRangeOption {
|
|
11
|
+
availableOptions: Array<LastNextOption>;
|
|
12
|
+
options?: Array<string>;
|
|
13
|
+
_operator: string;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Parses a string value for Last/Next options
|
|
17
|
+
* @param value - The string to parse (e.g., "Last 7 Days")
|
|
18
|
+
* @param option - The option instance
|
|
19
|
+
* @returns Parsed DynamicDateRangeValue
|
|
20
|
+
*/
|
|
21
|
+
export declare function parseLastNext(value: string, option: IDynamicDateRangeOption): DynamicDateRangeValue | undefined;
|
|
22
|
+
/**
|
|
23
|
+
* Formats a DynamicDateRangeValue for Last/Next options
|
|
24
|
+
* @param value - The value to format
|
|
25
|
+
* @param option - The option instance
|
|
26
|
+
* @returns Formatted string
|
|
27
|
+
*/
|
|
28
|
+
export declare function formatLastNext(value: DynamicDateRangeValue, option: IDynamicDateRangeOption): string;
|
|
29
|
+
/**
|
|
30
|
+
* Validates if a string is valid for Last/Next options
|
|
31
|
+
* @param value - The string to validate
|
|
32
|
+
* @param option - The option instance
|
|
33
|
+
* @returns True if valid, false otherwise
|
|
34
|
+
*/
|
|
35
|
+
export declare function isValidStringLastNext(value: string, option: IDynamicDateRangeOption): boolean;
|
|
36
|
+
/**
|
|
37
|
+
* Handles selection change events for Last/Next options
|
|
38
|
+
* @param e - The custom event
|
|
39
|
+
* @param option - The option instance
|
|
40
|
+
* @returns Updated DynamicDateRangeValue
|
|
41
|
+
*/
|
|
42
|
+
export declare function handleSelectionChangeLastNext(e: CustomEvent, option: IDynamicDateRangeOption): DynamicDateRangeValue | undefined;
|
|
43
|
+
/**
|
|
44
|
+
* Checks if a date range represents a single day
|
|
45
|
+
* @param startDate - The start date
|
|
46
|
+
* @param endDate - The end date
|
|
47
|
+
* @returns True if the range is a single day
|
|
48
|
+
*/
|
|
49
|
+
export declare function isSingleDayRange(startDate: Date, endDate: Date): boolean;
|
|
50
|
+
/**
|
|
51
|
+
* Formats date values for Last/Next options
|
|
52
|
+
* @param startDate - The start date
|
|
53
|
+
* @param endDate - The end date
|
|
54
|
+
* @param operator - The operator (used to check for DAYS operations)
|
|
55
|
+
* @returns Formatted date string
|
|
56
|
+
*/
|
|
57
|
+
export declare function formatDateRange(startDate: Date, endDate: Date, operator: string): string;
|
|
58
|
+
/**
|
|
59
|
+
* Complete format function for Last/Next options that handles all value types
|
|
60
|
+
* @param value - The value to format
|
|
61
|
+
* @param option - The Last/Next option instance
|
|
62
|
+
* @returns Formatted string
|
|
63
|
+
*/
|
|
64
|
+
export declare function formatLastNextValue(value: DynamicDateRangeValue, option: ILastNextOption): string;
|
|
65
|
+
export {};
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import DateFormat from "@ui5/webcomponents-localization/dist/DateFormat.js";
|
|
2
|
+
import UI5Date from "@ui5/webcomponents-localization/dist/dates/UI5Date.js";
|
|
3
|
+
/**
|
|
4
|
+
* Parses a string value for Last/Next options
|
|
5
|
+
* @param value - The string to parse (e.g., "Last 7 Days")
|
|
6
|
+
* @param option - The option instance
|
|
7
|
+
* @returns Parsed DynamicDateRangeValue
|
|
8
|
+
*/
|
|
9
|
+
export function parseLastNext(value, option) {
|
|
10
|
+
const returnValue = { operator: "", values: [] };
|
|
11
|
+
returnValue.operator = option.operator;
|
|
12
|
+
// Extract number from text like "Last 7 Days" or "Next 3 Months"
|
|
13
|
+
const match = value.match(/(\d+)/);
|
|
14
|
+
if (match) {
|
|
15
|
+
returnValue.values = [Number.parseInt(match[1])];
|
|
16
|
+
}
|
|
17
|
+
else {
|
|
18
|
+
returnValue.values = [1];
|
|
19
|
+
}
|
|
20
|
+
return returnValue;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Formats a DynamicDateRangeValue for Last/Next options
|
|
24
|
+
* @param value - The value to format
|
|
25
|
+
* @param option - The option instance
|
|
26
|
+
* @returns Formatted string
|
|
27
|
+
*/
|
|
28
|
+
export function formatLastNext(value, option) {
|
|
29
|
+
const amount = value?.values?.[0] || 1;
|
|
30
|
+
return option.text.replace("X", amount.toString());
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Validates if a string is valid for Last/Next options
|
|
34
|
+
* @param value - The string to validate
|
|
35
|
+
* @param option - The option instance
|
|
36
|
+
* @returns True if valid, false otherwise
|
|
37
|
+
*/
|
|
38
|
+
export function isValidStringLastNext(value, option) {
|
|
39
|
+
// Check if string matches the pattern "Last X Days" or "Next X Months"
|
|
40
|
+
const pattern = option.text.replace("X", "\\d+");
|
|
41
|
+
const regex = new RegExp(`^${pattern}$`, "i");
|
|
42
|
+
return regex.test(value);
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Handles selection change events for Last/Next options
|
|
46
|
+
* @param e - The custom event
|
|
47
|
+
* @param option - The option instance
|
|
48
|
+
* @returns Updated DynamicDateRangeValue
|
|
49
|
+
*/
|
|
50
|
+
export function handleSelectionChangeLastNext(e, option) {
|
|
51
|
+
const currentValue = { operator: "", values: [] };
|
|
52
|
+
currentValue.operator = option.operator;
|
|
53
|
+
// For StepInput, the value is accessed from the target element itself
|
|
54
|
+
const stepInputValue = e.target?.value;
|
|
55
|
+
currentValue.values = [stepInputValue || 1];
|
|
56
|
+
return currentValue;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Checks if a date range represents a single day
|
|
60
|
+
* @param startDate - The start date
|
|
61
|
+
* @param endDate - The end date
|
|
62
|
+
* @returns True if the range is a single day
|
|
63
|
+
*/
|
|
64
|
+
export function isSingleDayRange(startDate, endDate) {
|
|
65
|
+
const normalizedStart = UI5Date.getInstance(startDate.getTime());
|
|
66
|
+
const normalizedEnd = UI5Date.getInstance(endDate.getTime());
|
|
67
|
+
const diffInDays = Math.round((normalizedEnd.getTime() - normalizedStart.getTime()) / (1000 * 60 * 60 * 24));
|
|
68
|
+
return diffInDays + 1 === 1;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Formats date values for Last/Next options
|
|
72
|
+
* @param startDate - The start date
|
|
73
|
+
* @param endDate - The end date
|
|
74
|
+
* @param operator - The operator (used to check for DAYS operations)
|
|
75
|
+
* @returns Formatted date string
|
|
76
|
+
*/
|
|
77
|
+
export function formatDateRange(startDate, endDate, operator) {
|
|
78
|
+
const dateFormat = DateFormat.getDateInstance({ strictParsing: true });
|
|
79
|
+
// Single day check for DAYS operations
|
|
80
|
+
const isSingleDay = operator.includes("DAYS") && isSingleDayRange(startDate, endDate);
|
|
81
|
+
const isSameDay = startDate.getFullYear() === endDate.getFullYear()
|
|
82
|
+
&& startDate.getMonth() === endDate.getMonth()
|
|
83
|
+
&& startDate.getDate() === endDate.getDate();
|
|
84
|
+
if (isSingleDay || isSameDay) {
|
|
85
|
+
return dateFormat.format(startDate);
|
|
86
|
+
}
|
|
87
|
+
return `${dateFormat.format(startDate)} - ${dateFormat.format(endDate)}`;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Complete format function for Last/Next options that handles all value types
|
|
91
|
+
* @param value - The value to format
|
|
92
|
+
* @param option - The Last/Next option instance
|
|
93
|
+
* @returns Formatted string
|
|
94
|
+
*/
|
|
95
|
+
export function formatLastNextValue(value, option) {
|
|
96
|
+
// for empty/default values, convert to actual dates and format them
|
|
97
|
+
if (!value.values || value.values.length === 0) {
|
|
98
|
+
const firstOption = option.availableOptions.find(info => option.options?.includes(info.operator) || info.operator === option._operator);
|
|
99
|
+
if (firstOption) {
|
|
100
|
+
// Create default value with numeric 1, convert to dates, then format the dates directly
|
|
101
|
+
const defaultValue = { operator: firstOption.operator, values: [1] };
|
|
102
|
+
const dates = option.toDates(defaultValue);
|
|
103
|
+
// Format the dates directly
|
|
104
|
+
if (dates && dates.length >= 2) {
|
|
105
|
+
const [startDate, endDate] = dates;
|
|
106
|
+
return formatDateRange(startDate, endDate, firstOption.operator);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
// for date values
|
|
111
|
+
if (value.values && value.values.length >= 2 && value.values[0] instanceof Date && value.values[1] instanceof Date) {
|
|
112
|
+
const [startDate, endDate] = value.values;
|
|
113
|
+
return formatDateRange(startDate, endDate, value.operator);
|
|
114
|
+
}
|
|
115
|
+
// for numeric values
|
|
116
|
+
const optionInfo = option.availableOptions.find(info => info.operator === value.operator);
|
|
117
|
+
if (optionInfo) {
|
|
118
|
+
const numberValue = value.values?.[0] || 1;
|
|
119
|
+
return formatLastNext({ operator: value.operator, values: [numberValue] }, { text: optionInfo.text });
|
|
120
|
+
}
|
|
121
|
+
return "";
|
|
122
|
+
}
|
|
123
|
+
//# sourceMappingURL=LastNextUtils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LastNextUtils.js","sourceRoot":"","sources":["../../src/dynamic-date-range-options/LastNextUtils.ts"],"names":[],"mappings":"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","sourcesContent":["import type { DynamicDateRangeValue, IDynamicDateRangeOption } from \"../DynamicDateRange.js\";\nimport type StepInput from \"../StepInput.js\";\nimport DateFormat from \"@ui5/webcomponents-localization/dist/DateFormat.js\";\nimport UI5Date from \"@ui5/webcomponents-localization/dist/dates/UI5Date.js\";\n\ntype LastNextOption = {\n\toperator: string;\n\ttext: string;\n\tunitText: string;\n}\n\n/**\n * Interface for Last/Next options that have additional methods\n */\ninterface ILastNextOption extends IDynamicDateRangeOption {\n\tavailableOptions: Array<LastNextOption>;\n\toptions?: Array<string>;\n\t_operator: string;\n}\n\n/**\n * Parses a string value for Last/Next options\n * @param value - The string to parse (e.g., \"Last 7 Days\")\n * @param option - The option instance\n * @returns Parsed DynamicDateRangeValue\n */\nexport function parseLastNext(value: string, option: IDynamicDateRangeOption): DynamicDateRangeValue | undefined {\n\tconst returnValue = { operator: \"\", values: [] } as DynamicDateRangeValue;\n\treturnValue.operator = option.operator;\n\n\t// Extract number from text like \"Last 7 Days\" or \"Next 3 Months\"\n\tconst match = value.match(/(\\d+)/);\n\tif (match) {\n\t\treturnValue.values = [Number.parseInt(match[1])];\n\t} else {\n\t\treturnValue.values = [1];\n\t}\n\n\treturn returnValue;\n}\n\n/**\n * Formats a DynamicDateRangeValue for Last/Next options\n * @param value - The value to format\n * @param option - The option instance\n * @returns Formatted string\n */\nexport function formatLastNext(value: DynamicDateRangeValue, option: IDynamicDateRangeOption): string {\n\tconst amount = value?.values?.[0] as number || 1;\n\treturn option.text.replace(\"X\", amount.toString());\n}\n\n/**\n * Validates if a string is valid for Last/Next options\n * @param value - The string to validate\n * @param option - The option instance\n * @returns True if valid, false otherwise\n */\nexport function isValidStringLastNext(value: string, option: IDynamicDateRangeOption): boolean {\n\t// Check if string matches the pattern \"Last X Days\" or \"Next X Months\"\n\tconst pattern = option.text.replace(\"X\", \"\\\\d+\");\n\tconst regex = new RegExp(`^${pattern}$`, \"i\");\n\treturn regex.test(value);\n}\n\n/**\n * Handles selection change events for Last/Next options\n * @param e - The custom event\n * @param option - The option instance\n * @returns Updated DynamicDateRangeValue\n */\nexport function handleSelectionChangeLastNext(e: CustomEvent, option: IDynamicDateRangeOption): DynamicDateRangeValue | undefined {\n\tconst currentValue = { operator: \"\", values: [] } as DynamicDateRangeValue;\n\tcurrentValue.operator = option.operator;\n\n\t// For StepInput, the value is accessed from the target element itself\n\tconst stepInputValue = (e.target as StepInput)?.value;\n\tcurrentValue.values = [stepInputValue || 1];\n\n\treturn currentValue;\n}\n\n/**\n * Checks if a date range represents a single day\n * @param startDate - The start date\n * @param endDate - The end date\n * @returns True if the range is a single day\n */\nexport function isSingleDayRange(startDate: Date, endDate: Date): boolean {\n\tconst normalizedStart = UI5Date.getInstance(startDate.getTime());\n\tconst normalizedEnd = UI5Date.getInstance(endDate.getTime());\n\tconst diffInDays = Math.round((normalizedEnd.getTime() - normalizedStart.getTime()) / (1000 * 60 * 60 * 24));\n\treturn diffInDays + 1 === 1;\n}\n\n/**\n * Formats date values for Last/Next options\n * @param startDate - The start date\n * @param endDate - The end date\n * @param operator - The operator (used to check for DAYS operations)\n * @returns Formatted date string\n */\nexport function formatDateRange(startDate: Date, endDate: Date, operator: string): string {\n\tconst dateFormat = DateFormat.getDateInstance({ strictParsing: true });\n\n\t// Single day check for DAYS operations\n\tconst isSingleDay = operator.includes(\"DAYS\") && isSingleDayRange(startDate, endDate);\n\tconst isSameDay = startDate.getFullYear() === endDate.getFullYear()\n\t\t&& startDate.getMonth() === endDate.getMonth()\n\t\t&& startDate.getDate() === endDate.getDate();\n\n\tif (isSingleDay || isSameDay) {\n\t\treturn dateFormat.format(startDate);\n\t}\n\treturn `${dateFormat.format(startDate)} - ${dateFormat.format(endDate)}`;\n}\n\n/**\n * Complete format function for Last/Next options that handles all value types\n * @param value - The value to format\n * @param option - The Last/Next option instance\n * @returns Formatted string\n */\nexport function formatLastNextValue(value: DynamicDateRangeValue, option: ILastNextOption): string {\n\t// for empty/default values, convert to actual dates and format them\n\tif (!value.values || value.values.length === 0) {\n\t\tconst firstOption = option.availableOptions.find(info => option.options?.includes(info.operator) || info.operator === option._operator);\n\t\tif (firstOption) {\n\t\t\t// Create default value with numeric 1, convert to dates, then format the dates directly\n\t\t\tconst defaultValue = { operator: firstOption.operator, values: [1] };\n\t\t\tconst dates = option.toDates(defaultValue);\n\n\t\t\t// Format the dates directly\n\t\t\tif (dates && dates.length >= 2) {\n\t\t\t\tconst [startDate, endDate] = dates;\n\t\t\t\treturn formatDateRange(startDate, endDate, firstOption.operator);\n\t\t\t}\n\t\t}\n\t}\n\n\t// for date values\n\tif (value.values && value.values.length >= 2 && value.values[0] instanceof Date && value.values[1] instanceof Date) {\n\t\tconst [startDate, endDate] = value.values;\n\t\treturn formatDateRange(startDate, endDate, value.operator);\n\t}\n\n\t// for numeric values\n\tconst optionInfo = option.availableOptions.find(info => info.operator === value.operator);\n\tif (optionInfo) {\n\t\tconst numberValue = (value.values?.[0] as number) || 1;\n\t\treturn formatLastNext({ operator: value.operator, values: [numberValue] }, { text: optionInfo.text } as IDynamicDateRangeOption);\n\t}\n\n\treturn \"\";\n}\n"]}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { DynamicDateRangeValue, IDynamicDateRangeOption } from "../DynamicDateRange.js";
|
|
2
|
+
import type { JsxTemplate } from "@ui5/webcomponents-base/dist/index.js";
|
|
3
|
+
import type { I18nText } from "@ui5/webcomponents-base/dist/i18nBundle.js";
|
|
4
|
+
/**
|
|
5
|
+
* @class
|
|
6
|
+
* @constructor
|
|
7
|
+
* @public
|
|
8
|
+
* @since 2.14.0
|
|
9
|
+
*/
|
|
10
|
+
declare class LastOptions implements IDynamicDateRangeOption {
|
|
11
|
+
template: JsxTemplate;
|
|
12
|
+
_operator: string;
|
|
13
|
+
i18nKey: I18nText;
|
|
14
|
+
options?: Array<string>;
|
|
15
|
+
constructor(operators?: Array<string>);
|
|
16
|
+
_getI18nKeyForOperator(operator: string): I18nText;
|
|
17
|
+
parse(value: string): DynamicDateRangeValue | undefined;
|
|
18
|
+
format(value: DynamicDateRangeValue): string;
|
|
19
|
+
toDates(value: DynamicDateRangeValue): Array<Date>;
|
|
20
|
+
isValidString(value: string): boolean;
|
|
21
|
+
handleSelectionChange(e: CustomEvent): DynamicDateRangeValue | undefined;
|
|
22
|
+
get text(): string;
|
|
23
|
+
get icon(): string;
|
|
24
|
+
get availableOptions(): {
|
|
25
|
+
operator: string;
|
|
26
|
+
unitText: string;
|
|
27
|
+
text: string;
|
|
28
|
+
}[];
|
|
29
|
+
get operator(): string;
|
|
30
|
+
set operator(value: string);
|
|
31
|
+
}
|
|
32
|
+
export default LastOptions;
|