@ui5/webcomponents 0.0.0-aeb93167c → 0.0.0-b053ad005
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 +343 -0
- package/README.md +144 -52
- package/csp.js +7 -0
- package/customI18n.js +50 -0
- package/dist/Assets-static.js +6 -0
- package/dist/Assets.js +2 -1
- package/dist/Avatar.js +189 -49
- package/dist/AvatarGroup.js +603 -0
- package/dist/Badge.js +45 -19
- package/dist/Breadcrumbs.js +563 -0
- package/dist/BreadcrumbsItem.js +109 -0
- package/dist/BusyIndicator.js +121 -34
- package/dist/Button.js +110 -66
- package/dist/Calendar.js +324 -648
- package/dist/CalendarDate.js +45 -0
- package/dist/CalendarHeader.js +110 -59
- package/dist/CalendarPart.js +111 -0
- package/dist/Card.js +38 -198
- package/dist/CardHeader.js +288 -0
- package/dist/Carousel.js +253 -94
- package/dist/CheckBox.js +138 -70
- package/dist/ColorPalette.js +493 -0
- package/dist/ColorPaletteItem.js +137 -0
- package/dist/ColorPalettePopover.js +219 -0
- package/dist/ColorPicker.js +524 -0
- package/dist/ComboBox.js +348 -144
- package/dist/ComboBoxFilters.js +8 -1
- package/dist/ComboBoxGroupItem.js +70 -0
- package/dist/ComboBoxItem.js +11 -24
- package/dist/CustomListItem.js +36 -2
- package/dist/DateComponentBase.js +170 -0
- package/dist/DatePicker.js +264 -519
- package/dist/DateRangePicker.js +162 -426
- package/dist/DateTimePicker.js +94 -413
- package/dist/DayPicker.js +443 -648
- package/dist/Dialog.js +220 -58
- package/dist/DurationPicker.js +109 -511
- package/dist/FileUploader.js +70 -31
- package/dist/GroupHeaderListItem.js +22 -13
- package/dist/Icon.js +103 -41
- package/dist/Input.js +346 -155
- package/dist/Interfaces.js +192 -0
- package/dist/Label.js +27 -12
- package/dist/Link.js +105 -43
- package/dist/List.js +377 -104
- package/dist/ListItem.js +60 -13
- package/dist/ListItemBase.js +29 -2
- package/dist/MessageStrip.js +47 -46
- package/dist/MonthPicker.js +171 -225
- package/dist/MultiComboBox.js +356 -135
- package/dist/MultiComboBoxItem.js +7 -2
- package/dist/MultiInput.js +55 -24
- package/dist/Option.js +48 -5
- package/dist/Panel.js +63 -73
- package/dist/Popover.js +195 -80
- package/dist/Popup.js +151 -61
- package/dist/ProgressIndicator.js +28 -20
- package/dist/RadioButton.js +126 -43
- package/dist/RadioButtonGroup.js +53 -29
- package/dist/RangeSlider.js +769 -0
- package/dist/RatingIndicator.js +27 -37
- package/dist/ResponsivePopover.js +56 -42
- package/dist/SegmentedButton.js +102 -68
- package/dist/SegmentedButtonItem.js +109 -0
- package/dist/Select.js +275 -116
- package/dist/Slider.js +320 -0
- package/dist/SliderBase.js +842 -0
- package/dist/StandardListItem.js +35 -9
- package/dist/StepInput.js +681 -0
- package/dist/SuggestionGroupItem.js +64 -0
- package/dist/SuggestionItem.js +13 -26
- package/dist/SuggestionListItem.js +17 -6
- package/dist/Switch.js +52 -32
- package/dist/Tab.js +47 -26
- package/dist/TabContainer.js +94 -34
- package/dist/TabSeparator.js +1 -0
- package/dist/Table.js +474 -22
- package/dist/TableCell.js +11 -9
- package/dist/TableColumn.js +13 -3
- package/dist/TableGroupRow.js +160 -0
- package/dist/TableRow.js +210 -11
- package/dist/TextArea.js +86 -46
- package/dist/TimePicker.js +27 -743
- package/dist/TimePickerBase.js +463 -0
- package/dist/TimeSelection.js +493 -0
- package/dist/Title.js +16 -9
- package/dist/Toast.js +19 -8
- package/dist/ToggleButton.js +21 -8
- package/dist/Token.js +32 -16
- package/dist/Tokenizer.js +75 -42
- package/dist/Tree.js +97 -41
- package/dist/TreeItem.js +44 -9
- package/dist/TreeListItem.js +86 -2
- package/dist/WheelSlider.js +58 -58
- package/dist/YearPicker.js +188 -284
- package/dist/api.json +6877 -1
- package/dist/features/ColorPaletteMoreColors.js +42 -0
- package/dist/features/InputElementsFormSupport.js +0 -1
- package/dist/features/InputSuggestions.js +131 -30
- package/dist/generated/assets/i18n/messagebundle_ar.json +1 -1
- package/dist/generated/assets/i18n/messagebundle_bg.json +1 -1
- package/dist/generated/assets/i18n/messagebundle_ca.json +1 -1
- package/dist/generated/assets/i18n/messagebundle_cs.json +1 -1
- package/dist/generated/assets/i18n/messagebundle_cy.json +1 -0
- package/dist/generated/assets/i18n/messagebundle_da.json +1 -1
- package/dist/generated/assets/i18n/messagebundle_de.json +1 -1
- package/dist/generated/assets/i18n/messagebundle_el.json +1 -1
- package/dist/generated/assets/i18n/messagebundle_en.json +1 -1
- package/dist/generated/assets/i18n/messagebundle_en_GB.json +1 -0
- package/dist/generated/assets/i18n/messagebundle_en_US_sappsd.json +1 -0
- package/dist/generated/assets/i18n/messagebundle_en_US_saprigi.json +1 -0
- package/dist/generated/assets/i18n/messagebundle_en_US_saptrc.json +1 -0
- package/dist/generated/assets/i18n/messagebundle_es.json +1 -1
- package/dist/generated/assets/i18n/messagebundle_es_MX.json +1 -0
- package/dist/generated/assets/i18n/messagebundle_et.json +1 -1
- package/dist/generated/assets/i18n/messagebundle_fi.json +1 -1
- package/dist/generated/assets/i18n/messagebundle_fr.json +1 -1
- package/dist/generated/assets/i18n/messagebundle_fr_CA.json +1 -0
- package/dist/generated/assets/i18n/messagebundle_hi.json +1 -1
- package/dist/generated/assets/i18n/messagebundle_hr.json +1 -1
- package/dist/generated/assets/i18n/messagebundle_hu.json +1 -1
- package/dist/generated/assets/i18n/messagebundle_in.json +1 -0
- package/dist/generated/assets/i18n/messagebundle_it.json +1 -1
- package/dist/generated/assets/i18n/messagebundle_iw.json +1 -1
- package/dist/generated/assets/i18n/messagebundle_ja.json +1 -1
- package/dist/generated/assets/i18n/messagebundle_kk.json +1 -1
- package/dist/generated/assets/i18n/messagebundle_ko.json +1 -1
- package/dist/generated/assets/i18n/messagebundle_lt.json +1 -1
- package/dist/generated/assets/i18n/messagebundle_lv.json +1 -1
- package/dist/generated/assets/i18n/messagebundle_ms.json +1 -1
- package/dist/generated/assets/i18n/messagebundle_nl.json +1 -1
- package/dist/generated/assets/i18n/messagebundle_no.json +1 -1
- package/dist/generated/assets/i18n/messagebundle_pl.json +1 -1
- package/dist/generated/assets/i18n/messagebundle_pt.json +1 -1
- package/dist/generated/assets/i18n/messagebundle_pt_PT.json +1 -0
- package/dist/generated/assets/i18n/messagebundle_ro.json +1 -1
- package/dist/generated/assets/i18n/messagebundle_ru.json +1 -1
- package/dist/generated/assets/i18n/messagebundle_sh.json +1 -1
- package/dist/generated/assets/i18n/messagebundle_sk.json +1 -1
- package/dist/generated/assets/i18n/messagebundle_sl.json +1 -1
- package/dist/generated/assets/i18n/messagebundle_sv.json +1 -1
- package/dist/generated/assets/i18n/messagebundle_th.json +1 -1
- package/dist/generated/assets/i18n/messagebundle_tr.json +1 -1
- package/dist/generated/assets/i18n/messagebundle_uk.json +1 -1
- package/dist/generated/assets/i18n/messagebundle_vi.json +1 -1
- package/dist/generated/assets/i18n/messagebundle_zh_CN.json +1 -1
- package/dist/generated/assets/i18n/messagebundle_zh_TW.json +1 -1
- package/dist/generated/assets/themes/sap_belize/parameters-bundle.css.json +1 -1
- package/dist/generated/assets/themes/sap_belize_hcb/parameters-bundle.css.json +1 -1
- package/dist/generated/assets/themes/sap_belize_hcw/parameters-bundle.css.json +1 -1
- package/dist/generated/assets/themes/sap_fiori_3/parameters-bundle.css.json +1 -1
- package/dist/generated/assets/themes/sap_fiori_3_dark/parameters-bundle.css.json +1 -1
- package/dist/generated/assets/themes/sap_fiori_3_hcb/parameters-bundle.css.json +1 -1
- package/dist/generated/assets/themes/sap_fiori_3_hcw/parameters-bundle.css.json +1 -1
- package/dist/generated/assets/themes/sap_horizon/parameters-bundle.css.json +1 -0
- package/dist/generated/assets/themes/sap_horizon_exp/parameters-bundle.css.json +1 -0
- package/dist/generated/i18n/i18n-defaults.js +2 -2
- package/dist/generated/json-imports/Themes-static.js +35 -0
- package/dist/generated/json-imports/Themes.js +23 -19
- package/dist/generated/json-imports/i18n-static.js +162 -0
- package/dist/generated/json-imports/i18n.js +113 -89
- package/dist/generated/templates/AvatarGroupTemplate.lit.js +9 -0
- package/dist/generated/templates/AvatarTemplate.lit.js +9 -16
- package/dist/generated/templates/BadgeTemplate.lit.js +5 -13
- package/dist/generated/templates/BreadcrumbsPopoverTemplate.lit.js +8 -0
- package/dist/generated/templates/BreadcrumbsTemplate.lit.js +9 -0
- package/dist/generated/templates/BusyIndicatorTemplate.lit.js +7 -13
- package/dist/generated/templates/ButtonTemplate.lit.js +6 -13
- package/dist/generated/templates/CalendarHeaderTemplate.lit.js +6 -11
- package/dist/generated/templates/CalendarTemplate.lit.js +4 -11
- package/dist/generated/templates/CardHeaderTemplate.lit.js +12 -0
- package/dist/generated/templates/CardTemplate.lit.js +5 -17
- package/dist/generated/templates/CarouselTemplate.lit.js +13 -19
- package/dist/generated/templates/CheckBoxTemplate.lit.js +7 -14
- package/dist/generated/templates/ColorPaletteDialogTemplate.lit.js +7 -0
- package/dist/generated/templates/ColorPaletteItemTemplate.lit.js +7 -0
- package/dist/generated/templates/ColorPalettePopoverTemplate.lit.js +8 -0
- package/dist/generated/templates/ColorPaletteTemplate.lit.js +12 -0
- package/dist/generated/templates/ColorPickerTemplate.lit.js +7 -0
- package/dist/generated/templates/ComboBoxPopoverTemplate.lit.js +20 -25
- package/dist/generated/templates/ComboBoxTemplate.lit.js +8 -14
- package/dist/generated/templates/CustomListItemTemplate.lit.js +13 -20
- package/dist/generated/templates/DatePickerPopoverTemplate.lit.js +7 -13
- package/dist/generated/templates/DatePickerTemplate.lit.js +6 -13
- package/dist/generated/templates/DateTimePickerPopoverTemplate.lit.js +9 -19
- package/dist/generated/templates/DayPickerTemplate.lit.js +13 -19
- package/dist/generated/templates/DialogTemplate.lit.js +9 -15
- package/dist/generated/templates/FileUploaderPopoverTemplate.lit.js +7 -14
- package/dist/generated/templates/FileUploaderTemplate.lit.js +7 -14
- package/dist/generated/templates/GroupHeaderListItemTemplate.lit.js +4 -11
- package/dist/generated/templates/IconTemplate.lit.js +6 -13
- package/dist/generated/templates/InputPopoverTemplate.lit.js +24 -31
- package/dist/generated/templates/InputTemplate.lit.js +9 -15
- package/dist/generated/templates/LabelTemplate.lit.js +4 -11
- package/dist/generated/templates/LinkTemplate.lit.js +5 -12
- package/dist/generated/templates/ListItemTemplate.lit.js +13 -20
- package/dist/generated/templates/ListTemplate.lit.js +12 -16
- package/dist/generated/templates/MessageStripTemplate.lit.js +8 -15
- package/dist/generated/templates/MonthPickerTemplate.lit.js +6 -13
- package/dist/generated/templates/MultiComboBoxPopoverTemplate.lit.js +23 -27
- package/dist/generated/templates/MultiComboBoxTemplate.lit.js +10 -16
- package/dist/generated/templates/MultiInputTemplate.lit.js +13 -19
- package/dist/generated/templates/PanelTemplate.lit.js +9 -14
- package/dist/generated/templates/PopoverTemplate.lit.js +9 -16
- package/dist/generated/templates/PopupBlockLayerTemplate.lit.js +4 -11
- package/dist/generated/templates/PopupTemplate.lit.js +4 -11
- package/dist/generated/templates/ProgressIndicatorTemplate.lit.js +14 -17
- package/dist/generated/templates/RadioButtonTemplate.lit.js +7 -14
- package/dist/generated/templates/RangeSliderTemplate.lit.js +13 -0
- package/dist/generated/templates/RatingIndicatorTemplate.lit.js +11 -16
- package/dist/generated/templates/ResponsivePopoverTemplate.lit.js +16 -21
- package/dist/generated/templates/SegmentedButtonItemTemplate.lit.js +8 -0
- package/dist/generated/templates/SegmentedButtonTemplate.lit.js +4 -11
- package/dist/generated/templates/SelectPopoverTemplate.lit.js +20 -27
- package/dist/generated/templates/SelectTemplate.lit.js +6 -12
- package/dist/generated/templates/SliderBaseTemplate.lit.js +11 -0
- package/dist/generated/templates/SliderTemplate.lit.js +12 -0
- package/dist/generated/templates/StandardListItemTemplate.lit.js +21 -28
- package/dist/generated/templates/StepInputTemplate.lit.js +8 -0
- package/dist/generated/templates/SuggestionListItemTemplate.lit.js +24 -31
- package/dist/generated/templates/SwitchTemplate.lit.js +8 -13
- package/dist/generated/templates/TabContainerPopoverTemplate.lit.js +6 -13
- package/dist/generated/templates/TabContainerTemplate.lit.js +16 -23
- package/dist/generated/templates/TabInOverflowTemplate.lit.js +6 -13
- package/dist/generated/templates/TabInStripTemplate.lit.js +8 -17
- package/dist/generated/templates/TabSeparatorTemplate.lit.js +4 -11
- package/dist/generated/templates/TabTemplate.lit.js +4 -11
- package/dist/generated/templates/TableCellTemplate.lit.js +4 -11
- package/dist/generated/templates/TableColumnTemplate.lit.js +4 -11
- package/dist/generated/templates/TableGroupRowTemplate.lit.js +7 -0
- package/dist/generated/templates/TableRowTemplate.lit.js +12 -18
- package/dist/generated/templates/TableTemplate.lit.js +13 -15
- package/dist/generated/templates/TextAreaPopoverTemplate.lit.js +8 -15
- package/dist/generated/templates/TextAreaTemplate.lit.js +8 -15
- package/dist/generated/templates/TimePickerPopoverTemplate.lit.js +4 -15
- package/dist/generated/templates/TimePickerTemplate.lit.js +6 -13
- package/dist/generated/templates/TimeSelectionTemplate.lit.js +11 -0
- package/dist/generated/templates/TitleTemplate.lit.js +10 -17
- package/dist/generated/templates/ToastTemplate.lit.js +5 -11
- package/dist/generated/templates/ToggleButtonTemplate.lit.js +6 -13
- package/dist/generated/templates/TokenTemplate.lit.js +7 -14
- package/dist/generated/templates/TokenizerPopoverTemplate.lit.js +9 -16
- package/dist/generated/templates/TokenizerTemplate.lit.js +6 -13
- package/dist/generated/templates/TreeListItemTemplate.lit.js +18 -24
- package/dist/generated/templates/TreeTemplate.lit.js +5 -12
- package/dist/generated/templates/WheelSliderTemplate.lit.js +7 -14
- package/dist/generated/templates/YearPickerTemplate.lit.js +6 -13
- package/dist/generated/themes/Avatar.css.js +5 -5
- package/dist/generated/themes/AvatarGroup.css.js +8 -0
- package/dist/generated/themes/Badge.css.js +5 -5
- package/dist/generated/themes/Breadcrumbs.css.js +8 -0
- package/dist/generated/themes/BreadcrumbsPopover.css.js +8 -0
- package/dist/generated/themes/BrowserScrollbar.css.js +8 -0
- package/dist/generated/themes/BusyIndicator.css.js +5 -5
- package/dist/generated/themes/Button.css.js +5 -5
- package/dist/generated/themes/Button.ie11.css.js +8 -0
- package/dist/generated/themes/Calendar.css.js +5 -5
- package/dist/generated/themes/CalendarHeader.css.js +5 -5
- package/dist/generated/themes/Card.css.js +5 -5
- package/dist/generated/themes/CardHeader.css.js +8 -0
- package/dist/generated/themes/Carousel.css.js +5 -5
- package/dist/generated/themes/CheckBox.css.js +5 -5
- package/dist/generated/themes/ColorPalette.css.js +8 -0
- package/dist/generated/themes/ColorPaletteItem.css.js +8 -0
- package/dist/generated/themes/ColorPalettePopover.css.js +8 -0
- package/dist/generated/themes/ColorPaletteStaticArea.css.js +8 -0
- package/dist/generated/themes/ColorPicker.css.js +8 -0
- package/dist/generated/themes/ComboBox.css.js +5 -5
- package/dist/generated/themes/ComboBoxPopover.css.js +5 -5
- package/dist/generated/themes/CustomListItem.css.js +5 -5
- package/dist/generated/themes/DatePicker.css.js +5 -5
- package/dist/generated/themes/DatePickerPopover.css.js +5 -5
- package/dist/generated/themes/DateRangePicker.css.js +5 -5
- package/dist/generated/themes/DateTimePicker.css.js +5 -5
- package/dist/generated/themes/DateTimePickerPopover.css.js +5 -5
- package/dist/generated/themes/DayPicker.css.js +5 -5
- package/dist/generated/themes/Dialog.css.js +5 -5
- package/dist/generated/themes/FileUploader.css.js +5 -5
- package/dist/generated/themes/GroupHeaderListItem.css.js +5 -5
- package/dist/generated/themes/GrowingButton.css.js +8 -0
- package/dist/generated/themes/Icon.css.js +5 -5
- package/dist/generated/themes/Input.css.js +5 -5
- package/dist/generated/themes/InputIcon.css.js +5 -5
- package/dist/generated/themes/InvisibleTextStyles.css.js +5 -5
- package/dist/generated/themes/Label.css.js +5 -5
- package/dist/generated/themes/Link.css.js +5 -5
- package/dist/generated/themes/List.css.js +5 -5
- package/dist/generated/themes/ListItem.css.js +5 -5
- package/dist/generated/themes/ListItemBase.css.js +5 -5
- package/dist/generated/themes/MessageStrip.css.js +5 -5
- package/dist/generated/themes/MonthPicker.css.js +5 -5
- package/dist/generated/themes/MultiComboBox.css.js +5 -5
- package/dist/generated/themes/MultiInput.css.js +5 -5
- package/dist/generated/themes/Panel.css.js +5 -5
- package/dist/generated/themes/Popover.css.js +5 -5
- package/dist/generated/themes/Popup.css.js +5 -5
- package/dist/generated/themes/PopupGlobal.css.js +8 -0
- package/dist/generated/themes/PopupStaticAreaStyles.css.js +5 -5
- package/dist/generated/themes/PopupsCommon.css.js +5 -5
- package/dist/generated/themes/ProgressIndicator.css.js +5 -5
- package/dist/generated/themes/RadioButton.css.js +5 -5
- package/dist/generated/themes/RatingIndicator.css.js +5 -5
- package/dist/generated/themes/ResponsivePopover.css.js +5 -5
- package/dist/generated/themes/ResponsivePopoverCommon.css.js +5 -5
- package/dist/generated/themes/SegmentedButton.css.js +5 -5
- package/dist/generated/themes/Select.css.js +5 -5
- package/dist/generated/themes/SelectPopover.css.js +5 -5
- package/dist/generated/themes/SliderBase.css.js +8 -0
- package/dist/generated/themes/StepInput.css.js +8 -0
- package/dist/generated/themes/Suggestions.css.js +8 -0
- package/dist/generated/themes/Switch.css.js +5 -5
- package/dist/generated/themes/Tab.css.js +5 -5
- package/dist/generated/themes/TabContainer.css.js +5 -5
- package/dist/generated/themes/TabInOverflow.css.js +5 -5
- package/dist/generated/themes/TabInStrip.css.js +5 -5
- package/dist/generated/themes/Table.css.js +5 -5
- package/dist/generated/themes/TableCell.css.js +5 -5
- package/dist/generated/themes/TableColumn.css.js +5 -5
- package/dist/generated/themes/TableGroupRow.css.js +8 -0
- package/dist/generated/themes/TableRow.css.js +5 -5
- package/dist/generated/themes/TapHighlightColor.css.js +8 -0
- package/dist/generated/themes/TextArea.css.js +5 -5
- package/dist/generated/themes/TimePicker.css.js +5 -5
- package/dist/generated/themes/TimePickerPopover.css.js +5 -5
- package/dist/generated/themes/TimeSelection.css.js +8 -0
- package/dist/generated/themes/Title.css.js +5 -5
- package/dist/generated/themes/Toast.css.js +5 -5
- package/dist/generated/themes/ToggleButton.css.js +5 -5
- package/dist/generated/themes/ToggleButton.ie11.css.js +8 -0
- package/dist/generated/themes/Token.css.js +5 -5
- package/dist/generated/themes/Tokenizer.css.js +5 -5
- package/dist/generated/themes/Tree.css.js +5 -5
- package/dist/generated/themes/TreeListItem.css.js +5 -5
- package/dist/generated/themes/ValueStateMessage.css.js +5 -5
- package/dist/generated/themes/WheelSlider.css.js +5 -5
- package/dist/generated/themes/YearPicker.css.js +5 -5
- package/dist/generated/themes/sap_belize/parameters-bundle.css.js +1 -1
- package/dist/generated/themes/sap_belize_hcb/parameters-bundle.css.js +1 -1
- package/dist/generated/themes/sap_belize_hcw/parameters-bundle.css.js +1 -1
- package/dist/generated/themes/sap_fiori_3/parameters-bundle.css.js +1 -1
- package/dist/generated/themes/sap_fiori_3_dark/parameters-bundle.css.js +1 -1
- package/dist/generated/themes/sap_fiori_3_hcb/parameters-bundle.css.js +1 -1
- package/dist/generated/themes/sap_fiori_3_hcw/parameters-bundle.css.js +1 -1
- package/dist/generated/themes/sap_horizon/parameters-bundle.css.js +1 -0
- package/dist/generated/themes/sap_horizon_exp/parameters-bundle.css.js +1 -0
- package/dist/i18n/messagebundle.properties +335 -0
- package/dist/i18n/messagebundle_ar.properties +224 -0
- package/dist/i18n/messagebundle_bg.properties +224 -0
- package/dist/i18n/messagebundle_ca.properties +224 -0
- package/dist/i18n/messagebundle_cs.properties +224 -0
- package/dist/i18n/messagebundle_cy.properties +224 -0
- package/dist/i18n/messagebundle_da.properties +224 -0
- package/dist/i18n/messagebundle_de.properties +224 -0
- package/dist/i18n/messagebundle_el.properties +224 -0
- package/dist/i18n/messagebundle_en.properties +224 -0
- package/dist/i18n/messagebundle_en_GB.properties +224 -0
- package/dist/i18n/messagebundle_en_US_sappsd.properties +224 -0
- package/dist/i18n/messagebundle_en_US_saprigi.properties +224 -0
- package/dist/i18n/messagebundle_en_US_saptrc.properties +224 -0
- package/dist/i18n/messagebundle_es.properties +224 -0
- package/dist/i18n/messagebundle_es_MX.properties +224 -0
- package/dist/i18n/messagebundle_et.properties +224 -0
- package/dist/i18n/messagebundle_fi.properties +224 -0
- package/dist/i18n/messagebundle_fr.properties +224 -0
- package/dist/i18n/messagebundle_fr_CA.properties +224 -0
- package/dist/i18n/messagebundle_hi.properties +224 -0
- package/dist/i18n/messagebundle_hr.properties +224 -0
- package/dist/i18n/messagebundle_hu.properties +224 -0
- package/dist/i18n/messagebundle_id.properties +224 -0
- package/dist/i18n/messagebundle_in.properties +172 -0
- package/dist/i18n/messagebundle_it.properties +224 -0
- package/dist/i18n/messagebundle_iw.properties +224 -0
- package/dist/i18n/messagebundle_ja.properties +224 -0
- package/dist/i18n/messagebundle_kk.properties +224 -0
- package/dist/i18n/messagebundle_ko.properties +224 -0
- package/dist/i18n/messagebundle_lt.properties +224 -0
- package/dist/i18n/messagebundle_lv.properties +224 -0
- package/dist/i18n/messagebundle_ms.properties +224 -0
- package/dist/i18n/messagebundle_nl.properties +224 -0
- package/dist/i18n/messagebundle_no.properties +224 -0
- package/dist/i18n/messagebundle_pl.properties +224 -0
- package/dist/i18n/messagebundle_pt.properties +224 -0
- package/dist/i18n/messagebundle_pt_PT.properties +224 -0
- package/dist/i18n/messagebundle_ro.properties +224 -0
- package/dist/i18n/messagebundle_ru.properties +224 -0
- package/dist/i18n/messagebundle_sh.properties +224 -0
- package/dist/i18n/messagebundle_sk.properties +224 -0
- package/dist/i18n/messagebundle_sl.properties +224 -0
- package/dist/i18n/messagebundle_sv.properties +224 -0
- package/dist/i18n/messagebundle_th.properties +224 -0
- package/dist/i18n/messagebundle_tr.properties +224 -0
- package/dist/i18n/messagebundle_uk.properties +224 -0
- package/dist/i18n/messagebundle_vi.properties +224 -0
- package/dist/i18n/messagebundle_zh_CN.properties +224 -0
- package/dist/i18n/messagebundle_zh_TW.properties +224 -0
- package/dist/popup-utils/OpenedPopupsRegistry.js +1 -1
- package/dist/popup-utils/PopoverRegistry.js +2 -4
- package/dist/timepicker-utils/TimeSlider.js +15 -13
- package/{src/types/AvatarBackgroundColor.js → dist/types/AvatarColorScheme.js} +9 -9
- package/dist/types/AvatarGroupType.js +43 -0
- package/dist/types/AvatarShape.js +1 -1
- package/dist/types/AvatarSize.js +1 -1
- package/dist/types/BreadcrumbsDesign.js +42 -0
- package/dist/types/BreadcrumbsSeparatorStyle.js +69 -0
- package/dist/types/BusyIndicatorSize.js +1 -1
- package/dist/types/ButtonDesign.js +8 -1
- package/dist/types/CalendarSelectionMode.js +47 -0
- package/dist/types/CarouselArrowsPlacement.js +3 -3
- package/dist/types/GrowingMode.js +48 -0
- package/dist/types/InputType.js +7 -7
- package/dist/types/LinkDesign.js +1 -1
- package/dist/types/ListGrowingMode.js +15 -0
- package/dist/types/ListItemType.js +1 -1
- package/dist/types/ListMode.js +1 -1
- package/dist/types/ListSeparators.js +1 -1
- package/dist/types/{MessageStripType.js → MessageStripDesign.js} +7 -7
- package/dist/types/PanelAccessibleRole.js +1 -1
- package/dist/types/PopoverHorizontalAlign.js +1 -1
- package/dist/types/PopoverPlacementType.js +2 -2
- package/dist/types/PopoverVerticalAlign.js +1 -2
- package/dist/types/Priority.js +1 -1
- package/dist/types/SemanticColor.js +1 -1
- package/dist/types/SwitchDesign.js +40 -0
- package/dist/types/TabContainerTabsPlacement.js +5 -5
- package/dist/types/TabLayout.js +1 -1
- package/dist/types/TableGrowingMode.js +15 -0
- package/dist/types/TableMode.js +47 -0
- package/dist/types/TableRowType.js +40 -0
- package/dist/types/TitleLevel.js +1 -1
- package/dist/types/ToastPlacement.js +1 -2
- package/dist/types/WrappingType.js +41 -0
- package/dist/webcomponentsjs/CHANGELOG.md +61 -0
- package/dist/webcomponentsjs/README.md +64 -47
- package/dist/webcomponentsjs/bundles/webcomponents-ce.js +38 -38
- package/dist/webcomponentsjs/bundles/webcomponents-ce.js.map +1 -1
- package/dist/webcomponentsjs/bundles/webcomponents-pf_dom.js +60 -0
- package/dist/webcomponentsjs/bundles/webcomponents-pf_dom.js.map +1 -0
- package/dist/webcomponentsjs/bundles/webcomponents-pf_js.js +95 -0
- package/dist/webcomponentsjs/bundles/webcomponents-pf_js.js.map +1 -0
- package/dist/webcomponentsjs/bundles/webcomponents-sd-ce-pf.js +292 -229
- package/dist/webcomponentsjs/bundles/webcomponents-sd-ce-pf.js.map +1 -1
- package/dist/webcomponentsjs/bundles/webcomponents-sd-ce.js +190 -170
- package/dist/webcomponentsjs/bundles/webcomponents-sd-ce.js.map +1 -1
- package/dist/webcomponentsjs/bundles/webcomponents-sd.js +151 -132
- package/dist/webcomponentsjs/bundles/webcomponents-sd.js.map +1 -1
- package/dist/webcomponentsjs/custom-elements-es5-adapter.js +2 -2
- package/dist/webcomponentsjs/webcomponents-bundle.js +302 -230
- package/dist/webcomponentsjs/webcomponents-bundle.js.map +1 -1
- package/dist/webcomponentsjs/webcomponents-loader.js +49 -28
- package/package-scripts.js +1 -0
- package/package.json +18 -7
- package/src/Assets-static.js +6 -0
- package/src/Assets.js +2 -1
- package/src/Avatar.hbs +14 -3
- package/src/Avatar.js +189 -49
- package/src/AvatarGroup.hbs +30 -0
- package/src/AvatarGroup.js +603 -0
- package/src/Badge.hbs +7 -4
- package/src/Badge.js +45 -19
- package/src/Breadcrumbs.hbs +42 -0
- package/src/Breadcrumbs.js +563 -0
- package/src/BreadcrumbsItem.js +109 -0
- package/src/BreadcrumbsPopover.hbs +28 -0
- package/src/BusyIndicator.hbs +28 -14
- package/src/BusyIndicator.js +121 -34
- package/src/Button.hbs +5 -3
- package/src/Button.js +110 -66
- package/src/Calendar.hbs +53 -48
- package/src/Calendar.js +324 -648
- package/src/CalendarDate.js +45 -0
- package/src/CalendarHeader.hbs +29 -36
- package/src/CalendarHeader.js +110 -59
- package/src/CalendarPart.js +111 -0
- package/src/Card.hbs +7 -39
- package/src/Card.js +38 -198
- package/src/CardHeader.hbs +35 -0
- package/src/CardHeader.js +288 -0
- package/src/Carousel.hbs +23 -16
- package/src/Carousel.js +253 -94
- package/src/CheckBox.hbs +10 -7
- package/src/CheckBox.js +138 -70
- package/src/ColorPalette.hbs +52 -0
- package/src/ColorPalette.js +493 -0
- package/src/ColorPaletteDialog.hbs +18 -0
- package/src/ColorPaletteItem.hbs +11 -0
- package/src/ColorPaletteItem.js +137 -0
- package/src/ColorPalettePopover.hbs +29 -0
- package/src/ColorPalettePopover.js +219 -0
- package/src/ColorPicker.hbs +98 -0
- package/src/ColorPicker.js +524 -0
- package/src/ComboBox.hbs +7 -2
- package/src/ComboBox.js +348 -144
- package/src/ComboBoxFilters.js +8 -1
- package/src/ComboBoxGroupItem.js +70 -0
- package/src/ComboBoxItem.js +11 -24
- package/src/ComboBoxPopover.hbs +26 -16
- package/src/CustomListItem.js +36 -2
- package/src/DateComponentBase.js +170 -0
- package/src/DatePicker.hbs +5 -4
- package/src/DatePicker.js +264 -519
- package/src/DatePickerPopover.hbs +22 -17
- package/src/DateRangePicker.js +162 -426
- package/src/DateTimePicker.js +94 -413
- package/src/DateTimePickerPopover.hbs +28 -52
- package/src/DayPicker.hbs +18 -12
- package/src/DayPicker.js +443 -648
- package/src/Dialog.hbs +14 -10
- package/src/Dialog.js +220 -58
- package/src/DurationPicker.js +109 -511
- package/src/FileUploader.hbs +3 -0
- package/src/FileUploader.js +70 -31
- package/src/FileUploaderPopover.hbs +2 -1
- package/src/GroupHeaderListItem.hbs +4 -4
- package/src/GroupHeaderListItem.js +22 -13
- package/src/Icon.hbs +4 -3
- package/src/Icon.js +103 -41
- package/src/Input.hbs +17 -6
- package/src/Input.js +346 -155
- package/src/InputPopover.hbs +11 -7
- package/src/Interfaces.js +192 -0
- package/src/Label.hbs +1 -1
- package/src/Label.js +27 -12
- package/src/Link.hbs +3 -2
- package/src/Link.js +105 -43
- package/src/List.hbs +76 -37
- package/src/List.js +377 -104
- package/src/ListItem.hbs +20 -7
- package/src/ListItem.js +60 -13
- package/src/ListItemBase.js +29 -2
- package/src/MessageStrip.hbs +10 -11
- package/src/MessageStrip.js +47 -46
- package/src/MonthPicker.hbs +6 -6
- package/src/MonthPicker.js +171 -225
- package/src/MultiComboBox.hbs +10 -6
- package/src/MultiComboBox.js +356 -135
- package/src/MultiComboBoxItem.js +7 -2
- package/src/MultiComboBoxPopover.hbs +42 -18
- package/src/MultiInput.hbs +2 -1
- package/src/MultiInput.js +55 -24
- package/src/Option.js +48 -5
- package/src/Panel.hbs +23 -16
- package/src/Panel.js +63 -73
- package/src/Popover.js +195 -80
- package/src/Popup.hbs +5 -0
- package/src/Popup.js +151 -61
- package/src/ProgressIndicator.hbs +7 -1
- package/src/ProgressIndicator.js +28 -20
- package/src/RadioButton.hbs +7 -4
- package/src/RadioButton.js +126 -43
- package/src/RadioButtonGroup.js +53 -29
- package/src/RangeSlider.hbs +70 -0
- package/src/RangeSlider.js +769 -0
- package/src/RatingIndicator.hbs +5 -3
- package/src/RatingIndicator.js +27 -37
- package/src/ResponsivePopover.hbs +13 -8
- package/src/ResponsivePopover.js +56 -42
- package/src/SegmentedButton.hbs +12 -5
- package/src/SegmentedButton.js +102 -68
- package/src/SegmentedButtonItem.hbs +42 -0
- package/src/SegmentedButtonItem.js +109 -0
- package/src/Select.hbs +26 -17
- package/src/Select.js +275 -116
- package/src/SelectPopover.hbs +27 -24
- package/src/Slider.hbs +42 -0
- package/src/Slider.js +320 -0
- package/src/SliderBase.hbs +38 -0
- package/src/SliderBase.js +842 -0
- package/src/StandardListItem.hbs +7 -5
- package/src/StandardListItem.js +35 -9
- package/src/StepInput.hbs +77 -0
- package/src/StepInput.js +681 -0
- package/src/SuggestionGroupItem.js +64 -0
- package/src/SuggestionItem.js +13 -26
- package/src/SuggestionListItem.hbs +4 -4
- package/src/SuggestionListItem.js +17 -6
- package/src/Switch.hbs +19 -3
- package/src/Switch.js +52 -32
- package/src/Tab.js +47 -26
- package/src/TabContainer.hbs +43 -26
- package/src/TabContainer.js +94 -34
- package/src/TabContainerPopover.hbs +2 -1
- package/src/TabInStrip.hbs +1 -6
- package/src/TabSeparator.hbs +1 -1
- package/src/TabSeparator.js +1 -0
- package/src/Table.hbs +95 -25
- package/src/Table.js +474 -22
- package/src/TableCell.hbs +1 -0
- package/src/TableCell.js +11 -9
- package/src/TableColumn.hbs +2 -0
- package/src/TableColumn.js +13 -3
- package/src/TableGroupRow.hbs +12 -0
- package/src/TableGroupRow.js +160 -0
- package/src/TableRow.hbs +29 -2
- package/src/TableRow.js +210 -11
- package/src/TextArea.hbs +1 -3
- package/src/TextArea.js +86 -46
- package/src/TextAreaPopover.hbs +2 -1
- package/src/TimePicker.hbs +6 -3
- package/src/TimePicker.js +27 -743
- package/src/TimePickerBase.js +463 -0
- package/src/TimePickerPopover.hbs +28 -52
- package/src/TimeSelection.hbs +60 -0
- package/src/TimeSelection.js +493 -0
- package/src/Title.js +16 -9
- package/src/Toast.hbs +13 -11
- package/src/Toast.js +19 -8
- package/src/ToggleButton.js +21 -8
- package/src/Token.hbs +2 -0
- package/src/Token.js +32 -16
- package/src/Tokenizer.hbs +1 -0
- package/src/Tokenizer.js +75 -42
- package/src/TokenizerPopover.hbs +1 -1
- package/src/Tree.hbs +10 -2
- package/src/Tree.js +97 -41
- package/src/TreeItem.js +44 -9
- package/src/TreeListItem.hbs +15 -4
- package/src/TreeListItem.js +86 -2
- package/src/WheelSlider.hbs +17 -10
- package/src/WheelSlider.js +58 -58
- package/src/YearPicker.hbs +9 -7
- package/src/YearPicker.js +188 -284
- package/src/features/ColorPaletteMoreColors.js +42 -0
- package/src/features/InputElementsFormSupport.js +0 -1
- package/src/features/InputSuggestions.js +131 -30
- package/src/i18n/messagebundle.properties +144 -189
- package/src/i18n/messagebundle_ar.properties +99 -115
- package/src/i18n/messagebundle_bg.properties +99 -115
- package/src/i18n/messagebundle_ca.properties +99 -115
- package/src/i18n/messagebundle_cs.properties +99 -115
- package/src/i18n/messagebundle_cy.properties +224 -0
- package/src/i18n/messagebundle_da.properties +99 -115
- package/src/i18n/messagebundle_de.properties +99 -115
- package/src/i18n/messagebundle_el.properties +99 -115
- package/src/i18n/messagebundle_en.properties +99 -115
- package/src/i18n/messagebundle_en_GB.properties +224 -0
- package/src/i18n/messagebundle_en_US_sappsd.properties +99 -115
- package/src/i18n/messagebundle_en_US_saprigi.properties +224 -0
- package/src/i18n/messagebundle_en_US_saptrc.properties +99 -115
- package/src/i18n/messagebundle_es.properties +99 -115
- package/src/i18n/messagebundle_es_MX.properties +224 -0
- package/src/i18n/messagebundle_et.properties +99 -115
- package/src/i18n/messagebundle_fi.properties +99 -115
- package/src/i18n/messagebundle_fr.properties +99 -115
- package/src/i18n/messagebundle_fr_CA.properties +224 -0
- package/src/i18n/messagebundle_hi.properties +99 -115
- package/src/i18n/messagebundle_hr.properties +99 -115
- package/src/i18n/messagebundle_hu.properties +99 -115
- package/src/i18n/messagebundle_id.properties +224 -0
- package/src/i18n/messagebundle_in.properties +172 -0
- package/src/i18n/messagebundle_it.properties +99 -115
- package/src/i18n/messagebundle_iw.properties +99 -115
- package/src/i18n/messagebundle_ja.properties +100 -116
- package/src/i18n/messagebundle_kk.properties +99 -115
- package/src/i18n/messagebundle_ko.properties +99 -115
- package/src/i18n/messagebundle_lt.properties +99 -115
- package/src/i18n/messagebundle_lv.properties +99 -115
- package/src/i18n/messagebundle_ms.properties +99 -115
- package/src/i18n/messagebundle_nl.properties +99 -115
- package/src/i18n/messagebundle_no.properties +99 -115
- package/src/i18n/messagebundle_pl.properties +99 -115
- package/src/i18n/messagebundle_pt.properties +99 -115
- package/src/i18n/messagebundle_pt_PT.properties +224 -0
- package/src/i18n/messagebundle_ro.properties +98 -114
- package/src/i18n/messagebundle_ru.properties +99 -115
- package/src/i18n/messagebundle_sh.properties +99 -115
- package/src/i18n/messagebundle_sk.properties +99 -115
- package/src/i18n/messagebundle_sl.properties +99 -115
- package/src/i18n/messagebundle_sv.properties +99 -115
- package/src/i18n/messagebundle_th.properties +99 -115
- package/src/i18n/messagebundle_tr.properties +99 -115
- package/src/i18n/messagebundle_uk.properties +101 -117
- package/src/i18n/messagebundle_vi.properties +99 -115
- package/src/i18n/messagebundle_zh_CN.properties +99 -115
- package/src/i18n/messagebundle_zh_TW.properties +99 -115
- package/src/popup-utils/OpenedPopupsRegistry.js +1 -1
- package/src/popup-utils/PopoverRegistry.js +2 -4
- package/src/timepicker-utils/TimeSlider.js +15 -13
- package/{dist/types/AvatarBackgroundColor.js → src/types/AvatarColorScheme.js} +9 -9
- package/src/types/AvatarGroupType.js +43 -0
- package/src/types/AvatarShape.js +1 -1
- package/src/types/AvatarSize.js +1 -1
- package/src/types/BreadcrumbsDesign.js +42 -0
- package/src/types/BreadcrumbsSeparatorStyle.js +69 -0
- package/src/types/BusyIndicatorSize.js +1 -1
- package/src/types/ButtonDesign.js +8 -1
- package/src/types/CalendarSelectionMode.js +47 -0
- package/src/types/CarouselArrowsPlacement.js +3 -3
- package/src/types/GrowingMode.js +48 -0
- package/src/types/InputType.js +7 -7
- package/src/types/LinkDesign.js +1 -1
- package/src/types/ListGrowingMode.js +15 -0
- package/src/types/ListItemType.js +1 -1
- package/src/types/ListMode.js +1 -1
- package/src/types/ListSeparators.js +1 -1
- package/src/types/{MessageStripType.js → MessageStripDesign.js} +7 -7
- package/src/types/PanelAccessibleRole.js +1 -1
- package/src/types/PopoverHorizontalAlign.js +1 -1
- package/src/types/PopoverPlacementType.js +2 -2
- package/src/types/PopoverVerticalAlign.js +1 -2
- package/src/types/Priority.js +1 -1
- package/src/types/SemanticColor.js +1 -1
- package/src/types/SwitchDesign.js +40 -0
- package/src/types/TabContainerTabsPlacement.js +5 -5
- package/src/types/TabLayout.js +1 -1
- package/src/types/TableGrowingMode.js +15 -0
- package/src/types/TableMode.js +47 -0
- package/src/types/TableRowType.js +40 -0
- package/src/types/TitleLevel.js +1 -1
- package/src/types/ToastPlacement.js +1 -2
- package/src/types/WrappingType.js +41 -0
- package/dist/Timeline.js +0 -99
- package/dist/TimelineItem.js +0 -156
- package/dist/generated/templates/ComboBoxItemTemplate.lit.js +0 -14
- package/dist/generated/templates/DateRangePickerTemplate.lit.js +0 -16
- package/dist/generated/templates/DurationPickerPopoverTemplate.lit.js +0 -17
- package/dist/generated/templates/DurationPickerTemplate.lit.js +0 -16
- package/dist/generated/templates/TimelineItemTemplate.lit.js +0 -19
- package/dist/generated/templates/TimelineTemplate.lit.js +0 -15
- package/dist/generated/themes/ComboBoxItem.css.js +0 -8
- package/dist/generated/themes/DurationPicker.css.js +0 -8
- package/dist/generated/themes/DurationPickerPopover.css.js +0 -8
- package/dist/generated/themes/Timeline.css.js +0 -8
- package/dist/generated/themes/TimelineItem.css.js +0 -8
- package/dist/popup-utils/PopupUtils.js +0 -84
- package/dist/types/AvatarFitType.js +0 -40
- package/dist/webcomponentsjs/package.json +0 -46
- package/dist/webcomponentsjs/src/entrypoints/custom-elements-es5-adapter-index.js +0 -16
- package/dist/webcomponentsjs/src/entrypoints/webcomponents-bundle-index.js +0 -53
- package/dist/webcomponentsjs/src/entrypoints/webcomponents-ce-index.js +0 -17
- package/dist/webcomponentsjs/src/entrypoints/webcomponents-sd-ce-index.js +0 -19
- package/dist/webcomponentsjs/src/entrypoints/webcomponents-sd-ce-pf-index.js +0 -28
- package/dist/webcomponentsjs/src/entrypoints/webcomponents-sd-index.js +0 -18
- package/src/ComboBoxItem.hbs +0 -0
- package/src/DateRangePicker.hbs +0 -1
- package/src/DurationPicker.hbs +0 -29
- package/src/DurationPickerPopover.hbs +0 -48
- package/src/Timeline.hbs +0 -9
- package/src/Timeline.js +0 -99
- package/src/TimelineItem.hbs +0 -39
- package/src/TimelineItem.js +0 -156
- package/src/popup-utils/PopupUtils.js +0 -84
- package/src/types/AvatarFitType.js +0 -40
package/dist/DayPicker.js
CHANGED
|
@@ -1,125 +1,76 @@
|
|
|
1
|
-
import UI5Element from "@ui5/webcomponents-base/dist/UI5Element.js";
|
|
2
|
-
import litRender from "@ui5/webcomponents-base/dist/renderer/LitRenderer.js";
|
|
3
|
-
import { fetchCldr } from "@ui5/webcomponents-base/dist/asset-registries/LocaleData.js";
|
|
4
1
|
import getLocale from "@ui5/webcomponents-base/dist/locale/getLocale.js";
|
|
5
2
|
import { getFirstDayOfWeek } from "@ui5/webcomponents-base/dist/config/FormatSettings.js";
|
|
6
|
-
import DateFormat from "@ui5/webcomponents-localization/dist/DateFormat.js";
|
|
7
3
|
import getCachedLocaleDataInstance from "@ui5/webcomponents-localization/dist/getCachedLocaleDataInstance.js";
|
|
8
|
-
import { getCalendarType } from "@ui5/webcomponents-base/dist/config/CalendarType.js";
|
|
9
|
-
import ItemNavigation from "@ui5/webcomponents-base/dist/delegate/ItemNavigation.js";
|
|
10
4
|
import {
|
|
11
5
|
isSpace,
|
|
6
|
+
isSpaceShift,
|
|
12
7
|
isEnter,
|
|
8
|
+
isEnterShift,
|
|
13
9
|
isUp,
|
|
14
10
|
isDown,
|
|
15
11
|
isLeft,
|
|
16
12
|
isRight,
|
|
13
|
+
isHome,
|
|
14
|
+
isEnd,
|
|
17
15
|
isHomeCtrl,
|
|
18
16
|
isEndCtrl,
|
|
19
17
|
isPageUp,
|
|
20
18
|
isPageDown,
|
|
21
19
|
isPageUpShift,
|
|
20
|
+
isPageUpAlt,
|
|
22
21
|
isPageUpShiftCtrl,
|
|
23
22
|
isPageDownShift,
|
|
23
|
+
isPageDownAlt,
|
|
24
24
|
isPageDownShiftCtrl,
|
|
25
25
|
} from "@ui5/webcomponents-base/dist/Keys.js";
|
|
26
26
|
import Integer from "@ui5/webcomponents-base/dist/types/Integer.js";
|
|
27
27
|
import CalendarDate from "@ui5/webcomponents-localization/dist/dates/CalendarDate.js";
|
|
28
28
|
import calculateWeekNumber from "@ui5/webcomponents-localization/dist/dates/calculateWeekNumber.js";
|
|
29
29
|
import CalendarType from "@ui5/webcomponents-base/dist/types/CalendarType.js";
|
|
30
|
-
import
|
|
31
|
-
import
|
|
32
|
-
import RenderScheduler from "@ui5/webcomponents-base/dist/RenderScheduler.js";
|
|
30
|
+
import CalendarSelectionMode from "./types/CalendarSelectionMode.js";
|
|
31
|
+
import CalendarPart from "./CalendarPart.js";
|
|
33
32
|
import DayPickerTemplate from "./generated/templates/DayPickerTemplate.lit.js";
|
|
34
33
|
|
|
35
34
|
import {
|
|
36
35
|
DAY_PICKER_WEEK_NUMBER_TEXT,
|
|
37
36
|
DAY_PICKER_NON_WORKING_DAY,
|
|
37
|
+
DAY_PICKER_TODAY,
|
|
38
38
|
} from "./generated/i18n/i18n-defaults.js";
|
|
39
39
|
|
|
40
|
-
// Styles
|
|
41
40
|
import dayPickerCSS from "./generated/themes/DayPicker.css.js";
|
|
42
41
|
|
|
43
|
-
const monthDiff = (startDate, endDate) => {
|
|
44
|
-
let months;
|
|
45
|
-
const _startDate = CalendarDate.fromTimestamp(startDate).toLocalJSDate(),
|
|
46
|
-
_endDate = CalendarDate.fromTimestamp(endDate).toLocalJSDate();
|
|
47
|
-
|
|
48
|
-
months = (_endDate.getFullYear() - _startDate.getFullYear()) * 12;
|
|
49
|
-
months -= _startDate.getMonth();
|
|
50
|
-
months += _endDate.getMonth();
|
|
51
|
-
return months;
|
|
52
|
-
};
|
|
53
|
-
|
|
54
42
|
/**
|
|
55
43
|
* @public
|
|
56
44
|
*/
|
|
57
45
|
const metadata = {
|
|
58
46
|
tag: "ui5-daypicker",
|
|
59
|
-
languageAware: true,
|
|
60
47
|
properties: /** @lends sap.ui.webcomponents.main.DayPicker.prototype */ {
|
|
61
48
|
/**
|
|
62
|
-
*
|
|
63
|
-
* @type {number}
|
|
64
|
-
* @public
|
|
65
|
-
*/
|
|
66
|
-
timestamp: {
|
|
67
|
-
type: Integer,
|
|
68
|
-
},
|
|
69
|
-
|
|
70
|
-
/**
|
|
71
|
-
* Sets a calendar type used for display.
|
|
72
|
-
* If not set, the calendar type of the global configuration is used.
|
|
73
|
-
* @type {CalendarType}
|
|
74
|
-
* @public
|
|
75
|
-
*/
|
|
76
|
-
primaryCalendarType: {
|
|
77
|
-
type: CalendarType,
|
|
78
|
-
},
|
|
79
|
-
|
|
80
|
-
/**
|
|
81
|
-
* Sets the selected dates as UTC timestamps.
|
|
49
|
+
* An array of UTC timestamps representing the selected date or dates depending on the capabilities of the picker component.
|
|
82
50
|
* @type {Array}
|
|
83
51
|
* @public
|
|
84
52
|
*/
|
|
85
53
|
selectedDates: {
|
|
86
54
|
type: Integer,
|
|
87
55
|
multiple: true,
|
|
56
|
+
compareValues: true,
|
|
88
57
|
},
|
|
89
58
|
|
|
90
59
|
/**
|
|
91
|
-
*
|
|
92
|
-
*
|
|
93
|
-
*
|
|
94
|
-
*
|
|
95
|
-
*
|
|
96
|
-
*
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
},
|
|
101
|
-
|
|
102
|
-
/**
|
|
103
|
-
* Determines the maximum date available for selection.
|
|
104
|
-
*
|
|
105
|
-
* @type {string}
|
|
106
|
-
* @defaultvalue ""
|
|
107
|
-
* @since 1.0.0-rc.6
|
|
60
|
+
* Defines the type of selection used in the day picker component.
|
|
61
|
+
* Accepted property values are:<br>
|
|
62
|
+
* <ul>
|
|
63
|
+
* <li><code>CalendarSelectionMode.Single</code> - enables a single date selection.(default value)</li>
|
|
64
|
+
* <li><code>CalendarSelectionMode.Range</code> - enables selection of a date range.</li>
|
|
65
|
+
* <li><code>CalendarSelectionMode.Multiple</code> - enables selection of multiple dates.</li>
|
|
66
|
+
* </ul>
|
|
67
|
+
* @type {CalendarSelectionMode}
|
|
68
|
+
* @defaultvalue "Single"
|
|
108
69
|
* @public
|
|
109
70
|
*/
|
|
110
|
-
|
|
111
|
-
type:
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
/**
|
|
115
|
-
* Determines the format, displayed in the input field.
|
|
116
|
-
*
|
|
117
|
-
* @type {string}
|
|
118
|
-
* @defaultvalue ""
|
|
119
|
-
* @public
|
|
120
|
-
*/
|
|
121
|
-
formatPattern: {
|
|
122
|
-
type: String,
|
|
71
|
+
selectionMode: {
|
|
72
|
+
type: CalendarSelectionMode,
|
|
73
|
+
defaultValue: CalendarSelectionMode.Single,
|
|
123
74
|
},
|
|
124
75
|
|
|
125
76
|
/**
|
|
@@ -138,16 +89,6 @@ const metadata = {
|
|
|
138
89
|
type: Boolean,
|
|
139
90
|
},
|
|
140
91
|
|
|
141
|
-
/**
|
|
142
|
-
* Defines the effective weeks numbers visibility,
|
|
143
|
-
* based on the <code>primaryCalendarType</code> and <code>hideWeekNumbers</code> property.
|
|
144
|
-
* @type {boolean}
|
|
145
|
-
* @private
|
|
146
|
-
*/
|
|
147
|
-
_hideWeekNumbers: {
|
|
148
|
-
type: Boolean,
|
|
149
|
-
},
|
|
150
|
-
|
|
151
92
|
/**
|
|
152
93
|
* @type {Object}
|
|
153
94
|
* @private
|
|
@@ -157,7 +98,13 @@ const metadata = {
|
|
|
157
98
|
multiple: true,
|
|
158
99
|
},
|
|
159
100
|
|
|
101
|
+
_dayNames: {
|
|
102
|
+
type: Object,
|
|
103
|
+
multiple: true,
|
|
104
|
+
},
|
|
105
|
+
|
|
160
106
|
/**
|
|
107
|
+
* When set, the component will skip all work in onBeforeRendering and will not automatically set the focus on itself
|
|
161
108
|
* @type {boolean}
|
|
162
109
|
* @private
|
|
163
110
|
*/
|
|
@@ -165,16 +112,24 @@ const metadata = {
|
|
|
165
112
|
type: Boolean,
|
|
166
113
|
noAttribute: true,
|
|
167
114
|
},
|
|
115
|
+
|
|
116
|
+
/**
|
|
117
|
+
* When selectionMode="Range" and the first day in the range is selected, this is the currently hovered (when using mouse) or focused (when using keyboard) day by the user
|
|
118
|
+
* @private
|
|
119
|
+
*/
|
|
120
|
+
_secondTimestamp: {
|
|
121
|
+
type: String,
|
|
122
|
+
},
|
|
168
123
|
},
|
|
169
124
|
events: /** @lends sap.ui.webcomponents.main.DayPicker.prototype */ {
|
|
170
125
|
/**
|
|
171
|
-
* Fired when the
|
|
126
|
+
* Fired when the selected date(s) change
|
|
172
127
|
* @public
|
|
173
128
|
* @event
|
|
174
129
|
*/
|
|
175
130
|
change: {},
|
|
176
131
|
/**
|
|
177
|
-
* Fired when
|
|
132
|
+
* Fired when the timestamp changes (user navigates with the keyboard) or clicks with the mouse
|
|
178
133
|
* @public
|
|
179
134
|
* @event
|
|
180
135
|
*/
|
|
@@ -182,6 +137,10 @@ const metadata = {
|
|
|
182
137
|
},
|
|
183
138
|
};
|
|
184
139
|
|
|
140
|
+
const isBetween = (x, num1, num2) => x > Math.min(num1, num2) && x < Math.max(num1, num2);
|
|
141
|
+
|
|
142
|
+
const DAYS_IN_WEEK = 7;
|
|
143
|
+
|
|
185
144
|
/**
|
|
186
145
|
* @class
|
|
187
146
|
*
|
|
@@ -190,19 +149,15 @@ const metadata = {
|
|
|
190
149
|
* @constructor
|
|
191
150
|
* @author SAP SE
|
|
192
151
|
* @alias sap.ui.webcomponents.main.DayPicker
|
|
193
|
-
* @extends
|
|
152
|
+
* @extends CalendarPart
|
|
194
153
|
* @tagname ui5-daypicker
|
|
195
154
|
* @public
|
|
196
155
|
*/
|
|
197
|
-
class DayPicker extends
|
|
156
|
+
class DayPicker extends CalendarPart {
|
|
198
157
|
static get metadata() {
|
|
199
158
|
return metadata;
|
|
200
159
|
}
|
|
201
160
|
|
|
202
|
-
static get render() {
|
|
203
|
-
return litRender;
|
|
204
|
-
}
|
|
205
|
-
|
|
206
161
|
static get template() {
|
|
207
162
|
return DayPickerTemplate;
|
|
208
163
|
}
|
|
@@ -211,173 +166,158 @@ class DayPicker extends UI5Element {
|
|
|
211
166
|
return dayPickerCSS;
|
|
212
167
|
}
|
|
213
168
|
|
|
214
|
-
constructor() {
|
|
215
|
-
super();
|
|
216
|
-
|
|
217
|
-
this._itemNav = new ItemNavigation(this, {
|
|
218
|
-
rowSize: 7,
|
|
219
|
-
pageSize: 42,
|
|
220
|
-
behavior: ItemNavigationBehavior.Paging,
|
|
221
|
-
});
|
|
222
|
-
|
|
223
|
-
this._itemNav.getItemsCallback = function getItemsCallback() {
|
|
224
|
-
return this.focusableDays;
|
|
225
|
-
}.bind(this);
|
|
226
|
-
|
|
227
|
-
this._itemNav.attachEvent(
|
|
228
|
-
ItemNavigation.BORDER_REACH,
|
|
229
|
-
this._handleItemNavigationBorderReach.bind(this)
|
|
230
|
-
);
|
|
231
|
-
|
|
232
|
-
this._itemNav.attachEvent(
|
|
233
|
-
ItemNavigation.AFTER_FOCUS,
|
|
234
|
-
this._handleItemNavigationAfterFocus.bind(this)
|
|
235
|
-
);
|
|
236
|
-
|
|
237
|
-
this._itemNav.attachEvent(
|
|
238
|
-
"PageBottom",
|
|
239
|
-
this._handleMonthBottomOverflow.bind(this)
|
|
240
|
-
);
|
|
241
|
-
|
|
242
|
-
this._itemNav.attachEvent(
|
|
243
|
-
"PageTop",
|
|
244
|
-
this._handleMonthTopOverflow.bind(this)
|
|
245
|
-
);
|
|
246
|
-
|
|
247
|
-
this.i18nBundle = getI18nBundle("@ui5/webcomponents");
|
|
248
|
-
}
|
|
249
|
-
|
|
250
169
|
onBeforeRendering() {
|
|
251
170
|
const localeData = getCachedLocaleDataInstance(getLocale());
|
|
171
|
+
this._buildWeeks(localeData);
|
|
172
|
+
this._buildDayNames(localeData);
|
|
173
|
+
}
|
|
252
174
|
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
175
|
+
/**
|
|
176
|
+
* Builds the _weeks object that represents the month
|
|
177
|
+
* @param localeData
|
|
178
|
+
* @private
|
|
179
|
+
*/
|
|
180
|
+
_buildWeeks(localeData) {
|
|
181
|
+
if (this._hidden) {
|
|
182
|
+
return; // Optimization to not do any work unless the current picker
|
|
183
|
+
}
|
|
259
184
|
|
|
260
|
-
const _aVisibleDays = this._getVisibleDays(this._calendarDate);
|
|
261
185
|
this._weeks = [];
|
|
186
|
+
|
|
187
|
+
const firstDayOfWeek = this._getFirstDayOfWeek();
|
|
188
|
+
const monthsNames = localeData.getMonths("wide", this._primaryCalendarType);
|
|
189
|
+
const secondaryMonthsNames = this.hasSecondaryCalendarType && localeData.getMonths("wide", this.secondaryCalendarType);
|
|
190
|
+
const nonWorkingDayLabel = DayPicker.i18nBundle.getText(DAY_PICKER_NON_WORKING_DAY);
|
|
191
|
+
const todayLabel = DayPicker.i18nBundle.getText(DAY_PICKER_TODAY);
|
|
192
|
+
const tempDate = this._getFirstDay(); // date that will be changed by 1 day 42 times
|
|
193
|
+
const todayDate = CalendarDate.fromLocalJSDate(new Date(), this._primaryCalendarType); // current day date - calculate once
|
|
194
|
+
const calendarDate = this._calendarDate; // store the _calendarDate value as this getter is expensive and degrades IE11 perf
|
|
195
|
+
const minDate = this._minDate; // store the _minDate (expensive getter)
|
|
196
|
+
const maxDate = this._maxDate; // store the _maxDate (expensive getter)
|
|
197
|
+
|
|
198
|
+
const tempSecondDate = this.hasSecondaryCalendarType && this._getSecondaryDay(tempDate);
|
|
199
|
+
|
|
262
200
|
let week = [];
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
const _monthsNameWide = localeData.getMonths("wide", this._calendarDate._oUDate.sCalendarType);
|
|
266
|
-
|
|
267
|
-
this._minDateObject = new Date(this._minDate);
|
|
268
|
-
this._maxDateObject = new Date(this._maxDate);
|
|
269
|
-
|
|
270
|
-
/* eslint-disable no-loop-func */
|
|
271
|
-
for (let i = 0; i < _aVisibleDays.length; i++) {
|
|
272
|
-
oCalDate = _aVisibleDays[i];
|
|
273
|
-
timestamp = oCalDate.valueOf() / 1000; // no need to round because CalendarDate does it
|
|
274
|
-
|
|
275
|
-
// day of the week
|
|
276
|
-
weekday = oCalDate.getDay() - this._getFirstDayOfWeek();
|
|
277
|
-
if (weekday < 0) {
|
|
278
|
-
weekday += 7;
|
|
279
|
-
}
|
|
201
|
+
for (let i = 0; i < DAYS_IN_WEEK * 6; i++) { // always show 6 weeks total, 42 days to avoid jumping
|
|
202
|
+
const timestamp = tempDate.valueOf() / 1000; // no need to round because CalendarDate does it
|
|
280
203
|
|
|
281
|
-
|
|
204
|
+
let dayOfTheWeek = tempDate.getDay() - firstDayOfWeek;
|
|
205
|
+
if (dayOfTheWeek < 0) {
|
|
206
|
+
dayOfTheWeek += DAYS_IN_WEEK;
|
|
207
|
+
}
|
|
282
208
|
|
|
283
|
-
|
|
209
|
+
const isFocused = tempDate.getMonth() === calendarDate.getMonth() && tempDate.getDate() === calendarDate.getDate();
|
|
210
|
+
const isSelected = this._isDaySelected(timestamp);
|
|
211
|
+
const isSelectedBetween = this._isDayInsideSelectionRange(timestamp);
|
|
212
|
+
const isOtherMonth = tempDate.getMonth() !== calendarDate.getMonth();
|
|
213
|
+
const isWeekend = this._isWeekend(tempDate);
|
|
214
|
+
const isDisabled = tempDate.valueOf() < minDate.valueOf() || tempDate.valueOf() > maxDate.valueOf();
|
|
215
|
+
const isToday = tempDate.isSame(todayDate);
|
|
216
|
+
const isFirstDayOfWeek = tempDate.getDay() === firstDayOfWeek;
|
|
217
|
+
|
|
218
|
+
const nonWorkingAriaLabel = isWeekend ? `${nonWorkingDayLabel} ` : "";
|
|
219
|
+
const todayAriaLabel = isToday ? `${todayLabel} ` : "";
|
|
220
|
+
const ariaLabel = this.hasSecondaryCalendarType
|
|
221
|
+
? `${todayAriaLabel}${nonWorkingAriaLabel}${monthsNames[tempDate.getMonth()]} ${tempDate.getDate()}, ${tempDate.getYear()}; ${secondaryMonthsNames[tempSecondDate.getMonth()]} ${tempSecondDate.getDate()}, ${tempSecondDate.getYear()}`
|
|
222
|
+
: `${todayAriaLabel}${nonWorkingAriaLabel}${monthsNames[tempDate.getMonth()]} ${tempDate.getDate()}, ${tempDate.getYear()}`;
|
|
223
|
+
|
|
224
|
+
const day = {
|
|
284
225
|
timestamp: timestamp.toString(),
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
226
|
+
focusRef: isFocused,
|
|
227
|
+
_tabIndex: isFocused ? "0" : "-1",
|
|
228
|
+
selected: isSelected,
|
|
229
|
+
day: tempDate.getDate(),
|
|
230
|
+
secondDay: this.hasSecondaryCalendarType && tempSecondDate.getDate(),
|
|
231
|
+
_isSecondaryCalendarType: this.hasSecondaryCalendarType,
|
|
232
|
+
classes: `ui5-dp-item ui5-dp-wday${dayOfTheWeek}`,
|
|
233
|
+
ariaLabel,
|
|
234
|
+
ariaSelected: isSelected ? "true" : "false",
|
|
235
|
+
ariaDisabled: isOtherMonth ? "true" : undefined,
|
|
236
|
+
disabled: isDisabled,
|
|
295
237
|
};
|
|
296
238
|
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
week.push(day);
|
|
300
|
-
|
|
301
|
-
if (oCalDate.getDay() === this._getFirstDayOfWeek()) {
|
|
239
|
+
if (isFirstDayOfWeek) {
|
|
302
240
|
day.classes += " ui5-dp-firstday";
|
|
303
241
|
}
|
|
304
242
|
|
|
305
|
-
if (
|
|
243
|
+
if (isSelected) {
|
|
306
244
|
day.classes += " ui5-dp-item--selected";
|
|
307
|
-
isDaySelected = true;
|
|
308
245
|
}
|
|
309
246
|
|
|
310
|
-
if (
|
|
247
|
+
if (isSelectedBetween) {
|
|
311
248
|
day.classes += " ui5-dp-item--selected-between";
|
|
312
249
|
}
|
|
313
250
|
|
|
314
251
|
if (isToday) {
|
|
315
252
|
day.classes += " ui5-dp-item--now";
|
|
316
|
-
todayIndex = i;
|
|
317
|
-
day.ariaLabel = `today ${day.ariaLabel}`;
|
|
318
253
|
}
|
|
319
254
|
|
|
320
|
-
if (
|
|
255
|
+
if (isOtherMonth) {
|
|
321
256
|
day.classes += " ui5-dp-item--othermonth";
|
|
322
|
-
day.ariaDisabled = "true";
|
|
323
257
|
}
|
|
324
258
|
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
if (this._isWeekend(oCalDate)) {
|
|
259
|
+
if (isWeekend) {
|
|
328
260
|
day.classes += " ui5-dp-item--weeekend";
|
|
329
261
|
}
|
|
330
|
-
|
|
262
|
+
|
|
263
|
+
if (isDisabled) {
|
|
331
264
|
day.classes += " ui5-dp-item--disabled";
|
|
332
|
-
day.disabled = true;
|
|
333
265
|
}
|
|
334
266
|
|
|
335
|
-
this.
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|| _aVisibleDays.length - 1 === i) {
|
|
339
|
-
const weekNumber = calculateWeekNumber(getFirstDayOfWeek(), oCalDate.toUTCJSDate(), oCalDate.getYear(), getLocale(), localeData);
|
|
340
|
-
if (lastWeekNumber !== weekNumber) {
|
|
341
|
-
const weekNum = {
|
|
342
|
-
weekNum: weekNumber,
|
|
343
|
-
isHidden: this._hideWeekNumbers,
|
|
344
|
-
};
|
|
345
|
-
week.unshift(weekNum);
|
|
346
|
-
lastWeekNumber = weekNumber;
|
|
347
|
-
}
|
|
267
|
+
if (this.hasSecondaryCalendarType) {
|
|
268
|
+
day.classes += " ui5-dp-item--withsecondtype";
|
|
269
|
+
}
|
|
348
270
|
|
|
271
|
+
week.push(day);
|
|
272
|
+
|
|
273
|
+
if (dayOfTheWeek === DAYS_IN_WEEK - 1) { // 0-indexed so 6 is the last day of the week
|
|
274
|
+
week.unshift({
|
|
275
|
+
weekNum: calculateWeekNumber(getFirstDayOfWeek(), tempDate.toUTCJSDate(), tempDate.getYear(), getLocale(), localeData),
|
|
276
|
+
isHidden: this.shouldHideWeekNumbers,
|
|
277
|
+
});
|
|
278
|
+
}
|
|
279
|
+
|
|
280
|
+
if (week.length === DAYS_IN_WEEK + 1) { // 7 entries for each day + 1 for the week numbers
|
|
349
281
|
this._weeks.push(week);
|
|
350
282
|
week = [];
|
|
351
283
|
}
|
|
284
|
+
|
|
285
|
+
tempDate.setDate(tempDate.getDate() + 1);
|
|
286
|
+
if (this.hasSecondaryCalendarType) {
|
|
287
|
+
tempSecondDate.setDate(tempSecondDate.getDate() + 1);
|
|
288
|
+
}
|
|
352
289
|
}
|
|
353
|
-
|
|
354
|
-
this._weeks.push([]);
|
|
355
|
-
}
|
|
356
|
-
/* eslint-enable no-loop-func */
|
|
290
|
+
}
|
|
357
291
|
|
|
358
|
-
|
|
359
|
-
|
|
292
|
+
/**
|
|
293
|
+
* Builds the dayNames object (header of the month)
|
|
294
|
+
* @param localeData
|
|
295
|
+
* @private
|
|
296
|
+
*/
|
|
297
|
+
_buildDayNames(localeData) {
|
|
298
|
+
if (this._hidden) {
|
|
299
|
+
return; // Optimization to not do any work unless the current picker
|
|
360
300
|
}
|
|
361
301
|
|
|
302
|
+
let dayOfTheWeek;
|
|
303
|
+
|
|
362
304
|
const aDayNamesWide = localeData.getDays("wide", this._primaryCalendarType);
|
|
363
305
|
const aDayNamesAbbreviated = localeData.getDays("abbreviated", this._primaryCalendarType);
|
|
364
|
-
const aUltraShortNames = aDayNamesAbbreviated.map(n => n);
|
|
365
306
|
let dayName;
|
|
366
307
|
|
|
367
308
|
this._dayNames = [];
|
|
368
309
|
this._dayNames.push({
|
|
369
310
|
classes: "ui5-dp-dayname",
|
|
370
|
-
name:
|
|
311
|
+
name: DayPicker.i18nBundle.getText(DAY_PICKER_WEEK_NUMBER_TEXT),
|
|
371
312
|
});
|
|
372
|
-
for (let i = 0; i <
|
|
373
|
-
|
|
374
|
-
if (
|
|
375
|
-
|
|
313
|
+
for (let i = 0; i < DAYS_IN_WEEK; i++) {
|
|
314
|
+
dayOfTheWeek = i + this._getFirstDayOfWeek();
|
|
315
|
+
if (dayOfTheWeek > DAYS_IN_WEEK - 1) { // 0-indexed so index of 6 is the maximum allowed
|
|
316
|
+
dayOfTheWeek -= DAYS_IN_WEEK;
|
|
376
317
|
}
|
|
377
318
|
dayName = {
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
ultraShortName: aUltraShortNames[weekday],
|
|
319
|
+
name: aDayNamesWide[dayOfTheWeek],
|
|
320
|
+
ultraShortName: aDayNamesAbbreviated[dayOfTheWeek],
|
|
381
321
|
classes: "ui5-dp-dayname",
|
|
382
322
|
};
|
|
383
323
|
|
|
@@ -385,413 +325,363 @@ class DayPicker extends UI5Element {
|
|
|
385
325
|
}
|
|
386
326
|
|
|
387
327
|
this._dayNames[1].classes += " ui5-dp-firstday";
|
|
328
|
+
|
|
329
|
+
if (this.shouldHideWeekNumbers) {
|
|
330
|
+
this._dayNames.shift();
|
|
331
|
+
}
|
|
388
332
|
}
|
|
389
333
|
|
|
390
334
|
onAfterRendering() {
|
|
391
|
-
this.
|
|
335
|
+
if (this._autoFocus && !this._hidden) {
|
|
336
|
+
this.focus();
|
|
337
|
+
}
|
|
392
338
|
}
|
|
393
339
|
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
if (dayPressed) {
|
|
399
|
-
const targetDate = parseInt(target.getAttribute("data-sap-timestamp"));
|
|
400
|
-
|
|
401
|
-
// findIndex, give it to item navigation
|
|
402
|
-
for (let i = 0; i < this._weeks.length; i++) {
|
|
403
|
-
for (let j = 0; j < this._weeks[i].length; j++) {
|
|
404
|
-
if (parseInt(this._weeks[i][j].timestamp) === targetDate) {
|
|
405
|
-
let index = parseInt(target.getAttribute("data-sap-index"));
|
|
406
|
-
if (this.minDate || this.maxDate) {
|
|
407
|
-
const focusableItem = this.focusableDays.find(item => parseInt(item._index) === index);
|
|
408
|
-
index = focusableItem ? this.focusableDays.indexOf(focusableItem) : index;
|
|
409
|
-
}
|
|
410
|
-
|
|
411
|
-
this._itemNav.current = index;
|
|
412
|
-
this._itemNav.update();
|
|
413
|
-
break;
|
|
414
|
-
}
|
|
415
|
-
}
|
|
416
|
-
}
|
|
340
|
+
_onfocusin() {
|
|
341
|
+
this._autoFocus = true;
|
|
342
|
+
}
|
|
417
343
|
|
|
418
|
-
|
|
419
|
-
|
|
344
|
+
_onfocusout() {
|
|
345
|
+
this._autoFocus = false;
|
|
420
346
|
}
|
|
421
347
|
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
348
|
+
/**
|
|
349
|
+
* Tells if the day is selected (dark blue)
|
|
350
|
+
* @param timestamp
|
|
351
|
+
* @returns {boolean}
|
|
352
|
+
* @private
|
|
353
|
+
*/
|
|
354
|
+
_isDaySelected(timestamp) {
|
|
355
|
+
if (this.selectionMode === CalendarSelectionMode.Single) {
|
|
356
|
+
return timestamp === this.selectedDates[0];
|
|
427
357
|
}
|
|
428
358
|
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
}
|
|
359
|
+
// Multiple, Range
|
|
360
|
+
return this.selectedDates.includes(timestamp);
|
|
432
361
|
}
|
|
433
362
|
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
363
|
+
/**
|
|
364
|
+
* Tells if the day is inside a selection range (light blue)
|
|
365
|
+
* @param timestamp
|
|
366
|
+
* @returns {*}
|
|
367
|
+
* @private
|
|
368
|
+
*/
|
|
369
|
+
_isDayInsideSelectionRange(timestamp) {
|
|
370
|
+
// No selection at all (or not in range selection mode)
|
|
371
|
+
if (this.selectionMode !== CalendarSelectionMode.Range || !this.selectedDates.length) {
|
|
372
|
+
return false;
|
|
437
373
|
}
|
|
438
|
-
}
|
|
439
374
|
|
|
440
|
-
|
|
441
|
-
if (this.selectedDates.length === 1) {
|
|
442
|
-
this.
|
|
375
|
+
// Only one date selected - the user is hovering with the mouse or navigating with the keyboard to select the second one
|
|
376
|
+
if (this.selectedDates.length === 1 && this._secondTimestamp) {
|
|
377
|
+
return isBetween(timestamp, this.selectedDates[0], this._secondTimestamp);
|
|
443
378
|
}
|
|
379
|
+
|
|
380
|
+
// Two dates selected - stable range
|
|
381
|
+
return isBetween(timestamp, this.selectedDates[0], this.selectedDates[1]);
|
|
444
382
|
}
|
|
445
383
|
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
384
|
+
/**
|
|
385
|
+
* Selects/deselects a day
|
|
386
|
+
* @param event
|
|
387
|
+
* @param isShift true if the user did Click+Shift or Enter+Shift (but not Space+Shift)
|
|
388
|
+
* @private
|
|
389
|
+
*/
|
|
390
|
+
_selectDate(event, isShift) {
|
|
391
|
+
const target = event.target;
|
|
450
392
|
|
|
451
|
-
if (
|
|
452
|
-
event.preventDefault();
|
|
393
|
+
if (!this._isDayPressed(target)) {
|
|
453
394
|
return;
|
|
454
395
|
}
|
|
455
396
|
|
|
456
|
-
|
|
457
|
-
this._navToStartEndDayOfTheMonth(event, true);
|
|
458
|
-
}
|
|
397
|
+
const timestamp = this._getTimestampFromDom(target);
|
|
459
398
|
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
}
|
|
463
|
-
|
|
464
|
-
if (isPageUpShift(event)) {
|
|
465
|
-
this._changeYears(event, false, 1);
|
|
466
|
-
}
|
|
467
|
-
|
|
468
|
-
if (isPageUpShiftCtrl(event)) {
|
|
469
|
-
this._changeYears(event, false, 10);
|
|
470
|
-
}
|
|
399
|
+
this._safelySetTimestamp(timestamp);
|
|
400
|
+
this._updateSecondTimestamp();
|
|
471
401
|
|
|
472
|
-
if (
|
|
473
|
-
this.
|
|
402
|
+
if (this.selectionMode === CalendarSelectionMode.Single) {
|
|
403
|
+
this.selectedDates = [timestamp];
|
|
404
|
+
} else if (this.selectionMode === CalendarSelectionMode.Multiple) {
|
|
405
|
+
if (this.selectedDates.length > 0 && isShift) {
|
|
406
|
+
this._multipleSelection(timestamp);
|
|
407
|
+
} else {
|
|
408
|
+
this._toggleTimestampInSelection(timestamp);
|
|
409
|
+
}
|
|
410
|
+
} else {
|
|
411
|
+
this.selectedDates = (this.selectedDates.length === 1) ? [...this.selectedDates, timestamp] : [timestamp];
|
|
474
412
|
}
|
|
475
413
|
|
|
476
|
-
|
|
477
|
-
this.
|
|
478
|
-
|
|
414
|
+
this.fireEvent("change", {
|
|
415
|
+
timestamp: this.timestamp,
|
|
416
|
+
dates: this.selectedDates,
|
|
417
|
+
});
|
|
479
418
|
}
|
|
480
419
|
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
420
|
+
/**
|
|
421
|
+
* Selects/deselects the whole row (week)
|
|
422
|
+
* @param event
|
|
423
|
+
* @private
|
|
424
|
+
*/
|
|
425
|
+
_selectWeek(event) {
|
|
426
|
+
this._weeks.forEach(week => {
|
|
427
|
+
const dayInThisWeek = week.findIndex(item => {
|
|
428
|
+
const date = CalendarDate.fromTimestamp(parseInt(item.timestamp) * 1000);
|
|
429
|
+
return date.getMonth() === this._calendarDate.getMonth() && date.getDate() === this._calendarDate.getDate();
|
|
430
|
+
}) !== -1;
|
|
431
|
+
if (dayInThisWeek) { // The current day is in this week
|
|
432
|
+
const notAllDaysOfThisWeekSelected = week.some(item => item.timestamp && !this.selectedDates.includes(parseInt(item.timestamp)));
|
|
433
|
+
if (notAllDaysOfThisWeekSelected) { // even if one day is not selected, select the whole week
|
|
434
|
+
week.filter(item => item.timestamp).forEach(item => {
|
|
435
|
+
this._addTimestampToSelection(parseInt(item.timestamp));
|
|
436
|
+
});
|
|
437
|
+
} else { // only if all days of this week are selected, deselect them
|
|
438
|
+
week.filter(item => item.timestamp).forEach(item => {
|
|
439
|
+
this._removeTimestampFromSelection(parseInt(item.timestamp));
|
|
440
|
+
});
|
|
441
|
+
}
|
|
442
|
+
}
|
|
443
|
+
});
|
|
486
444
|
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
this._modifySelectionAndNotifySubscribers(targetDate, event.ctrlKey);
|
|
492
|
-
}
|
|
445
|
+
this.fireEvent("change", {
|
|
446
|
+
timestamp: this.timestamp,
|
|
447
|
+
dates: this.selectedDates,
|
|
448
|
+
});
|
|
493
449
|
}
|
|
494
450
|
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
this.
|
|
451
|
+
_toggleTimestampInSelection(timestamp) {
|
|
452
|
+
if (this.selectedDates.includes(timestamp)) {
|
|
453
|
+
this._removeTimestampFromSelection(timestamp);
|
|
454
|
+
} else {
|
|
455
|
+
this._addTimestampToSelection(timestamp);
|
|
500
456
|
}
|
|
501
457
|
}
|
|
502
458
|
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
const currentItem = this._itemNav._getCurrentItem();
|
|
507
|
-
let currentTimestamp = parseInt(currentItem.getAttribute("data-sap-timestamp")) * 1000;
|
|
508
|
-
let calDate = CalendarDate.fromTimestamp(currentTimestamp, this._primaryCalendarType);
|
|
509
|
-
|
|
510
|
-
if (currentItem.classList.contains("ui5-dp-item--othermonth")) {
|
|
511
|
-
return;
|
|
512
|
-
}
|
|
513
|
-
|
|
514
|
-
calDate.setDate(1);
|
|
515
|
-
if (!start) {
|
|
516
|
-
// set the day to be the last day of the current month
|
|
517
|
-
calDate.setMonth(calDate.getMonth() + 1, 0);
|
|
518
|
-
}
|
|
519
|
-
|
|
520
|
-
if (calDate.valueOf() < this._minDate) {
|
|
521
|
-
calDate = CalendarDate.fromLocalJSDate(new Date(this._minDate), this._primaryCalendarType);
|
|
522
|
-
} else if (calDate.valueOf() > this._maxDate) {
|
|
523
|
-
calDate = CalendarDate.fromLocalJSDate(new Date(this._maxDate), this._primaryCalendarType);
|
|
459
|
+
_addTimestampToSelection(timestamp) {
|
|
460
|
+
if (!this.selectedDates.includes(timestamp)) {
|
|
461
|
+
this.selectedDates = [...this.selectedDates, timestamp];
|
|
524
462
|
}
|
|
463
|
+
}
|
|
525
464
|
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
this._itemNav.currentIndex = newItemIndex;
|
|
530
|
-
this._itemNav.focusCurrent();
|
|
465
|
+
_removeTimestampFromSelection(timestamp) {
|
|
466
|
+
this.selectedDates = this.selectedDates.filter(value => value !== timestamp);
|
|
531
467
|
}
|
|
532
468
|
|
|
533
469
|
/**
|
|
534
|
-
*
|
|
535
|
-
*
|
|
536
|
-
*
|
|
537
|
-
* @param {object} event used to prevent the default browser behavior
|
|
538
|
-
* @param {boolean} forward if true indicates addition
|
|
539
|
-
* @param {int} step for year number to substract or add
|
|
470
|
+
* When at least one day is selected and the user pressed shift
|
|
471
|
+
* @param timestamp
|
|
472
|
+
* @private
|
|
540
473
|
*/
|
|
541
|
-
|
|
542
|
-
const
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
let
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
474
|
+
_multipleSelection(timestamp) {
|
|
475
|
+
const min = Math.min(...this.selectedDates);
|
|
476
|
+
const max = Math.max(...this.selectedDates);
|
|
477
|
+
let start;
|
|
478
|
+
let end;
|
|
479
|
+
let toggle = false;
|
|
480
|
+
|
|
481
|
+
if (timestamp < min) {
|
|
482
|
+
start = timestamp;
|
|
483
|
+
end = min;
|
|
484
|
+
} else if (timestamp >= min && timestamp <= max) { // inside the current range - toggle all between the selected and focused
|
|
485
|
+
const distanceToMin = Math.abs(timestamp - min);
|
|
486
|
+
const distanceToMax = Math.abs(timestamp - max);
|
|
487
|
+
|
|
488
|
+
if (distanceToMin < distanceToMax) {
|
|
489
|
+
start = timestamp;
|
|
490
|
+
end = max;
|
|
491
|
+
} else {
|
|
492
|
+
start = min;
|
|
493
|
+
end = timestamp;
|
|
494
|
+
}
|
|
495
|
+
toggle = true;
|
|
549
496
|
} else {
|
|
550
|
-
|
|
497
|
+
start = max;
|
|
498
|
+
end = timestamp;
|
|
551
499
|
}
|
|
552
500
|
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
}
|
|
501
|
+
const startDate = CalendarDate.fromTimestamp(start * 1000);
|
|
502
|
+
const endDate = CalendarDate.fromTimestamp(end * 1000);
|
|
556
503
|
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
newDate = CalendarDate.fromLocalJSDate(new Date(this._maxDate), this._primaryCalendarType);
|
|
504
|
+
while (startDate.valueOf() <= endDate.valueOf()) {
|
|
505
|
+
this[toggle ? "_toggleTimestampInSelection" : "_addTimestampToSelection"](startDate.valueOf() / 1000);
|
|
506
|
+
startDate.setDate(startDate.getDate() + 1);
|
|
561
507
|
}
|
|
562
|
-
|
|
563
|
-
currentTimestamp = (newDate.valueOf() / 1000);
|
|
564
|
-
|
|
565
|
-
this._navigateAndWaitRerender(currentTimestamp);
|
|
566
|
-
|
|
567
|
-
event.preventDefault();
|
|
568
508
|
}
|
|
569
509
|
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
510
|
+
/**
|
|
511
|
+
* Set the hovered day as the _secondTimestamp
|
|
512
|
+
* @param event
|
|
513
|
+
* @private
|
|
514
|
+
*/
|
|
515
|
+
_onmouseover(event) {
|
|
516
|
+
const hoveredItem = event.target.closest(".ui5-dp-item");
|
|
517
|
+
if (hoveredItem && this.selectionMode === CalendarSelectionMode.Range && this.selectedDates.length === 1) {
|
|
518
|
+
this._secondTimestamp = this._getTimestampFromDom(hoveredItem);
|
|
573
519
|
}
|
|
574
|
-
|
|
575
|
-
return this.hideWeekNumbers;
|
|
576
520
|
}
|
|
577
521
|
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
}
|
|
581
|
-
|
|
582
|
-
get _localDate() {
|
|
583
|
-
return new Date(this._timestamp * 1000);
|
|
584
|
-
}
|
|
585
|
-
|
|
586
|
-
get _calendarDate() {
|
|
587
|
-
return CalendarDate.fromTimestamp(this._localDate.getTime(), this._primaryCalendarType);
|
|
588
|
-
}
|
|
522
|
+
_onkeydown(event) {
|
|
523
|
+
let preventDefault = true;
|
|
589
524
|
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
525
|
+
if (isEnter(event) || isEnterShift(event)) {
|
|
526
|
+
this._selectDate(event, isEnterShift(event));
|
|
527
|
+
} else if (isSpace(event) || isSpaceShift(event)) {
|
|
528
|
+
event.preventDefault();
|
|
529
|
+
} else if (isLeft(event)) {
|
|
530
|
+
this._modifyTimestampBy(-1, "day");
|
|
531
|
+
} else if (isRight(event)) {
|
|
532
|
+
this._modifyTimestampBy(1, "day");
|
|
533
|
+
} else if (isUp(event)) {
|
|
534
|
+
this._modifyTimestampBy(-7, "day");
|
|
535
|
+
} else if (isDown(event)) {
|
|
536
|
+
this._modifyTimestampBy(7, "day");
|
|
537
|
+
} else if (isPageUp(event)) {
|
|
538
|
+
this._modifyTimestampBy(-1, "month");
|
|
539
|
+
} else if (isPageDown(event)) {
|
|
540
|
+
this._modifyTimestampBy(1, "month");
|
|
541
|
+
} else if (isPageUpShift(event) || isPageUpAlt(event)) {
|
|
542
|
+
this._modifyTimestampBy(-1, "year");
|
|
543
|
+
} else if (isPageDownShift(event) || isPageDownAlt(event)) {
|
|
544
|
+
this._modifyTimestampBy(1, "year");
|
|
545
|
+
} else if (isPageUpShiftCtrl(event)) {
|
|
546
|
+
this._modifyTimestampBy(-10, "year");
|
|
547
|
+
} else if (isPageDownShiftCtrl(event)) {
|
|
548
|
+
this._modifyTimestampBy(10, "year");
|
|
549
|
+
} else if (isHome(event) || isEnd(event)) {
|
|
550
|
+
this._onHomeOrEnd(isHome(event));
|
|
551
|
+
} else if (isHomeCtrl(event)) {
|
|
552
|
+
const tempDate = new CalendarDate(this._calendarDate, this._primaryCalendarType);
|
|
553
|
+
tempDate.setDate(1); // Set the first day of the month
|
|
554
|
+
this._setTimestamp(tempDate.valueOf() / 1000);
|
|
555
|
+
} else if (isEndCtrl(event)) {
|
|
556
|
+
const tempDate = new CalendarDate(this._calendarDate, this._primaryCalendarType);
|
|
557
|
+
tempDate.setMonth(tempDate.getMonth() + 1);
|
|
558
|
+
tempDate.setDate(0); // Set the last day of the month (0th day of next month)
|
|
559
|
+
this._setTimestamp(tempDate.valueOf() / 1000);
|
|
560
|
+
} else {
|
|
561
|
+
preventDefault = false;
|
|
562
|
+
}
|
|
593
563
|
|
|
594
|
-
|
|
595
|
-
|
|
564
|
+
if (preventDefault) {
|
|
565
|
+
event.preventDefault();
|
|
566
|
+
}
|
|
596
567
|
}
|
|
597
568
|
|
|
598
|
-
|
|
599
|
-
|
|
569
|
+
_onkeyup(event) {
|
|
570
|
+
// Even if Space+Shift was pressed, ignore the shift unless in Multiple selection
|
|
571
|
+
if (isSpace(event) || (isSpaceShift(event) && this.selectionMode !== CalendarSelectionMode.Multiple)) {
|
|
572
|
+
this._selectDate(event, false);
|
|
573
|
+
} else if (isSpaceShift(event)) {
|
|
574
|
+
this._selectWeek(event);
|
|
575
|
+
}
|
|
600
576
|
}
|
|
601
577
|
|
|
602
|
-
|
|
603
|
-
|
|
578
|
+
/**
|
|
579
|
+
* Click is the same as Enter: Click+Shift has the same effect as Enter+Shift
|
|
580
|
+
* @param event
|
|
581
|
+
* @private
|
|
582
|
+
*/
|
|
583
|
+
_onclick(event) {
|
|
584
|
+
this._selectDate(event, event.shiftKey);
|
|
604
585
|
}
|
|
605
586
|
|
|
606
|
-
|
|
607
|
-
|
|
587
|
+
/**
|
|
588
|
+
* One Home or End, move the focus to the first or last item in the row
|
|
589
|
+
* @param homePressed
|
|
590
|
+
* @private
|
|
591
|
+
*/
|
|
592
|
+
_onHomeOrEnd(homePressed) {
|
|
593
|
+
this._weeks.forEach(week => {
|
|
594
|
+
const dayInThisWeek = week.findIndex(item => {
|
|
595
|
+
const date = CalendarDate.fromTimestamp(parseInt(item.timestamp) * 1000);
|
|
596
|
+
return date.getMonth() === this._calendarDate.getMonth() && date.getDate() === this._calendarDate.getDate();
|
|
597
|
+
}) !== -1;
|
|
598
|
+
if (dayInThisWeek) { // The current day is in this week
|
|
599
|
+
const index = homePressed ? 1 : 7; // select the first (if Home) or last (if End) day of the week
|
|
600
|
+
this._setTimestamp(parseInt(week[index].timestamp));
|
|
601
|
+
}
|
|
602
|
+
});
|
|
608
603
|
}
|
|
609
604
|
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
605
|
+
/**
|
|
606
|
+
* Called from Calendar.js
|
|
607
|
+
* @protected
|
|
608
|
+
*/
|
|
609
|
+
_hasPreviousPage() {
|
|
610
|
+
return !(this._calendarDate.getMonth() === this._minDate.getMonth() && this._calendarDate.getYear() === this._minDate.getYear());
|
|
613
611
|
}
|
|
614
612
|
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
}
|
|
622
|
-
|
|
623
|
-
return [].concat(...focusableDays);
|
|
613
|
+
/**
|
|
614
|
+
* Called from Calendar.js
|
|
615
|
+
* @protected
|
|
616
|
+
*/
|
|
617
|
+
_hasNextPage() {
|
|
618
|
+
return !(this._calendarDate.getMonth() === this._maxDate.getMonth() && this._calendarDate.getYear() === this._maxDate.getYear());
|
|
624
619
|
}
|
|
625
620
|
|
|
626
|
-
|
|
627
|
-
|
|
621
|
+
/**
|
|
622
|
+
* Called from Calendar.js
|
|
623
|
+
* Same as PageUp
|
|
624
|
+
* @protected
|
|
625
|
+
*/
|
|
626
|
+
_showPreviousPage() {
|
|
627
|
+
this._modifyTimestampBy(-1, "month");
|
|
628
628
|
}
|
|
629
629
|
|
|
630
|
-
|
|
631
|
-
|
|
630
|
+
/**
|
|
631
|
+
* Called from Calendar.js
|
|
632
|
+
* Same as PageDown
|
|
633
|
+
* @protected
|
|
634
|
+
*/
|
|
635
|
+
_showNextPage() {
|
|
636
|
+
this._modifyTimestampBy(1, "month");
|
|
632
637
|
}
|
|
633
638
|
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
639
|
+
/**
|
|
640
|
+
* Modifies the timestamp by a certain amount of days/months/years
|
|
641
|
+
* @param amount
|
|
642
|
+
* @param unit
|
|
643
|
+
* @private
|
|
644
|
+
*/
|
|
645
|
+
_modifyTimestampBy(amount, unit) {
|
|
646
|
+
// Modify the current timestamp
|
|
647
|
+
this._safelyModifyTimestampBy(amount, unit);
|
|
648
|
+
this._updateSecondTimestamp();
|
|
643
649
|
|
|
644
|
-
|
|
645
|
-
this.
|
|
650
|
+
// Notify the calendar to update its timestamp
|
|
651
|
+
this.fireEvent("navigate", { timestamp: this.timestamp });
|
|
646
652
|
}
|
|
647
653
|
|
|
648
|
-
|
|
649
|
-
|
|
654
|
+
/**
|
|
655
|
+
* Sets the timestamp to an absolute value
|
|
656
|
+
* @param value
|
|
657
|
+
* @private
|
|
658
|
+
*/
|
|
659
|
+
_setTimestamp(value) {
|
|
660
|
+
this._safelySetTimestamp(value);
|
|
661
|
+
this._updateSecondTimestamp();
|
|
662
|
+
this.fireEvent("navigate", { timestamp: this.timestamp });
|
|
650
663
|
}
|
|
651
664
|
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
if (
|
|
658
|
-
|
|
659
|
-
newYear++;
|
|
660
|
-
}
|
|
661
|
-
|
|
662
|
-
if (newYear > maxCalendarYear && newMonth === 0) {
|
|
663
|
-
return false;
|
|
664
|
-
}
|
|
665
|
-
|
|
666
|
-
if (!this.maxDate) {
|
|
667
|
-
return true;
|
|
668
|
-
}
|
|
669
|
-
|
|
670
|
-
const oNewDate = this._calendarDate;
|
|
671
|
-
oNewDate.setDate(oNewDate.getDate());
|
|
672
|
-
oNewDate.setYear(newYear);
|
|
673
|
-
oNewDate.setMonth(newMonth);
|
|
674
|
-
|
|
675
|
-
const monthsBetween = monthDiff(oNewDate.valueOf(), this._maxDate);
|
|
676
|
-
if (monthsBetween < 0) {
|
|
677
|
-
return false;
|
|
678
|
-
}
|
|
679
|
-
|
|
680
|
-
const lastFocusableDay = this.focusableDays[this.focusableDays.length - 1].iDay;
|
|
681
|
-
if (monthsBetween === 0 && CalendarDate.fromTimestamp(this._maxDate).toLocalJSDate().getDate() === lastFocusableDay) {
|
|
682
|
-
return false;
|
|
665
|
+
/**
|
|
666
|
+
* During range selection, when the user is navigating with the keyboard, the currently focused day is considered the "second day"
|
|
667
|
+
* @private
|
|
668
|
+
*/
|
|
669
|
+
_updateSecondTimestamp() {
|
|
670
|
+
if (this.selectionMode === CalendarSelectionMode.Range && this.selectedDates.length === 1) {
|
|
671
|
+
this._secondTimestamp = this.timestamp;
|
|
683
672
|
}
|
|
684
|
-
|
|
685
|
-
return true;
|
|
686
673
|
}
|
|
687
674
|
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
let newYear = this._year;
|
|
691
|
-
const minCalendarYear = CalendarDate.fromTimestamp(this._getMinCalendarDate(), this._primaryCalendarType).getYear();
|
|
692
|
-
|
|
693
|
-
if (newMonth < 0) {
|
|
694
|
-
newMonth = 11;
|
|
695
|
-
newYear--;
|
|
696
|
-
}
|
|
697
|
-
|
|
698
|
-
if (newYear < minCalendarYear && newMonth === 11) {
|
|
699
|
-
return false;
|
|
700
|
-
}
|
|
701
|
-
|
|
702
|
-
if (!this.minDate) {
|
|
675
|
+
get shouldHideWeekNumbers() {
|
|
676
|
+
if (this._primaryCalendarType !== CalendarType.Gregorian) {
|
|
703
677
|
return true;
|
|
704
678
|
}
|
|
705
679
|
|
|
706
|
-
|
|
707
|
-
oNewDate.setDate(oNewDate.getDate());
|
|
708
|
-
oNewDate.setYear(newYear);
|
|
709
|
-
oNewDate.setMonth(newMonth);
|
|
710
|
-
|
|
711
|
-
const monthsBetween = monthDiff(this._minDate, oNewDate.valueOf());
|
|
712
|
-
if (this.minDate && monthsBetween < 0) {
|
|
713
|
-
return false;
|
|
714
|
-
}
|
|
715
|
-
|
|
716
|
-
return true;
|
|
717
|
-
}
|
|
718
|
-
|
|
719
|
-
_handleItemNavigationBorderReach(event) {
|
|
720
|
-
const currentItem = this._itemNav._getCurrentItem();
|
|
721
|
-
let newDate;
|
|
722
|
-
let currentDate;
|
|
723
|
-
let currentTimestamp;
|
|
724
|
-
|
|
725
|
-
if (isUp(event.originalEvent) || isLeft(event.originalEvent)) {
|
|
726
|
-
currentTimestamp = this._weeks[0][event.offset + 1].timestamp * 1000;
|
|
727
|
-
newDate = CalendarDate.fromTimestamp(currentTimestamp, this._primaryCalendarType);
|
|
728
|
-
newDate.setDate(newDate.getDate() - 7);
|
|
729
|
-
}
|
|
730
|
-
|
|
731
|
-
if (isDown(event.originalEvent) || isRight(event.originalEvent)) {
|
|
732
|
-
currentTimestamp = this._weeks[this._weeks.length - 1][event.offset + 1].timestamp * 1000;
|
|
733
|
-
newDate = CalendarDate.fromTimestamp(currentTimestamp, this._primaryCalendarType);
|
|
734
|
-
newDate.setDate(newDate.getDate() + 7);
|
|
735
|
-
}
|
|
736
|
-
|
|
737
|
-
if (isPageUp(event.originalEvent)) {
|
|
738
|
-
currentTimestamp = parseInt(currentItem.getAttribute("data-sap-timestamp") * 1000);
|
|
739
|
-
currentDate = CalendarDate.fromTimestamp(currentTimestamp, this._primaryCalendarType);
|
|
740
|
-
newDate = new CalendarDate(currentDate, this._primaryCalendarType);
|
|
741
|
-
newDate.setMonth(newDate.getMonth() - 1);
|
|
742
|
-
if (currentDate.getMonth() === newDate.getMonth()) {
|
|
743
|
-
newDate.setDate(0);
|
|
744
|
-
}
|
|
745
|
-
}
|
|
746
|
-
|
|
747
|
-
if (isPageDown(event.originalEvent)) {
|
|
748
|
-
currentTimestamp = parseInt(currentItem.getAttribute("data-sap-timestamp") * 1000);
|
|
749
|
-
currentDate = CalendarDate.fromTimestamp(currentTimestamp, this._primaryCalendarType);
|
|
750
|
-
newDate = new CalendarDate(currentDate, this._primaryCalendarType);
|
|
751
|
-
newDate.setMonth(newDate.getMonth() + 1);
|
|
752
|
-
if (newDate.getMonth() - currentDate.getMonth() > 1) {
|
|
753
|
-
newDate.setDate(0);
|
|
754
|
-
}
|
|
755
|
-
}
|
|
756
|
-
|
|
757
|
-
if (!newDate) {
|
|
758
|
-
return;
|
|
759
|
-
}
|
|
760
|
-
|
|
761
|
-
if (newDate.valueOf() < this._minDate) {
|
|
762
|
-
newDate = CalendarDate.fromLocalJSDate(new Date(this._minDate), this._primaryCalendarType);
|
|
763
|
-
} else if (newDate.valueOf() > this._maxDate) {
|
|
764
|
-
newDate = CalendarDate.fromLocalJSDate(new Date(this._maxDate), this._primaryCalendarType);
|
|
765
|
-
}
|
|
766
|
-
|
|
767
|
-
currentTimestamp = (newDate.valueOf() / 1000);
|
|
768
|
-
|
|
769
|
-
this._navigateAndWaitRerender(currentTimestamp);
|
|
770
|
-
}
|
|
771
|
-
|
|
772
|
-
_handleItemNavigationAfterFocus() {
|
|
773
|
-
const currentItem = this._itemNav._getCurrentItem();
|
|
774
|
-
const currentTimestamp = parseInt(currentItem.getAttribute("data-sap-timestamp"));
|
|
775
|
-
|
|
776
|
-
if (currentItem.classList.contains("ui5-dp-item--othermonth")) {
|
|
777
|
-
this._navigateAndWaitRerender(currentTimestamp);
|
|
778
|
-
}
|
|
779
|
-
}
|
|
780
|
-
|
|
781
|
-
async _navigateAndWaitRerender(timestamp) {
|
|
782
|
-
this.fireEvent("navigate", { timestamp });
|
|
783
|
-
await RenderScheduler.whenFinished();
|
|
784
|
-
|
|
785
|
-
const newItemIndex = this._itemNav._getItems().findIndex(item => parseInt(item.timestamp) === timestamp);
|
|
786
|
-
this._itemNav.currentIndex = newItemIndex;
|
|
787
|
-
this._itemNav.focusCurrent();
|
|
788
|
-
this._fireDayPickerRendered();
|
|
680
|
+
return this.hideWeekNumbers;
|
|
789
681
|
}
|
|
790
682
|
|
|
791
|
-
|
|
792
|
-
|
|
793
|
-
this.fireEvent("daypickerrendered", { focusedItemIndex: this._itemNav.currentIndex });
|
|
794
|
-
}
|
|
683
|
+
get hasSecondaryCalendarType() {
|
|
684
|
+
return !!this.secondaryCalendarType;
|
|
795
685
|
}
|
|
796
686
|
|
|
797
687
|
_isWeekend(oDate) {
|
|
@@ -807,126 +697,31 @@ class DayPicker extends UI5Element {
|
|
|
807
697
|
|
|
808
698
|
_isDayPressed(target) {
|
|
809
699
|
const targetParent = target.parentNode;
|
|
810
|
-
return (target.className.indexOf("ui5-dp-item") > -1) || (targetParent &&
|
|
700
|
+
return (target.className.indexOf("ui5-dp-item") > -1) || (targetParent && targetParent.classList && targetParent.classList.contains("ui5-dp-item"));
|
|
811
701
|
}
|
|
812
702
|
|
|
813
|
-
|
|
814
|
-
|
|
815
|
-
const minDate = this._minDateObject;
|
|
816
|
-
const maxDate = this._maxDateObject;
|
|
817
|
-
|
|
818
|
-
currentDate.setHours(0);
|
|
819
|
-
if (minDate) {
|
|
820
|
-
minDate.setHours(0);
|
|
821
|
-
}
|
|
822
|
-
if (maxDate) {
|
|
823
|
-
maxDate.setHours(0);
|
|
824
|
-
}
|
|
825
|
-
|
|
826
|
-
return currentDate > maxDate || currentDate < minDate;
|
|
703
|
+
_getSecondaryDay(tempDate) {
|
|
704
|
+
return new CalendarDate(tempDate, this.secondaryCalendarType);
|
|
827
705
|
}
|
|
828
706
|
|
|
829
|
-
|
|
830
|
-
|
|
831
|
-
}
|
|
707
|
+
_getFirstDay() {
|
|
708
|
+
let daysFromPreviousMonth;
|
|
832
709
|
|
|
833
|
-
|
|
834
|
-
return this.minDate ? this._getTimeStampFromString(this.minDate) : this._getMinCalendarDate();
|
|
835
|
-
}
|
|
836
|
-
|
|
837
|
-
_getTimeStampFromString(value) {
|
|
838
|
-
const jsDate = this.getFormat().parse(value);
|
|
839
|
-
if (jsDate) {
|
|
840
|
-
const calDate = CalendarDate.fromLocalJSDate(jsDate, this._primaryCalendarType);
|
|
841
|
-
return calDate.toUTCJSDate().valueOf();
|
|
842
|
-
}
|
|
843
|
-
return undefined;
|
|
844
|
-
}
|
|
845
|
-
|
|
846
|
-
_getMinCalendarDate() {
|
|
847
|
-
const minDate = new CalendarDate(1, 0, 1, this._primaryCalendarType);
|
|
848
|
-
minDate.setYear(1);
|
|
849
|
-
minDate.setMonth(0);
|
|
850
|
-
minDate.setDate(1);
|
|
851
|
-
return minDate.toUTCJSDate().valueOf();
|
|
852
|
-
}
|
|
853
|
-
|
|
854
|
-
_getMaxCalendarDate() {
|
|
855
|
-
const maxDate = new CalendarDate(1, 0, 1, this._primaryCalendarType);
|
|
856
|
-
maxDate.setYear(9999);
|
|
857
|
-
maxDate.setMonth(11);
|
|
858
|
-
const tempDate = new CalendarDate(maxDate, this._primaryCalendarType);
|
|
859
|
-
tempDate.setDate(1);
|
|
860
|
-
tempDate.setMonth(tempDate.getMonth() + 1, 0);
|
|
861
|
-
maxDate.setDate(tempDate.getDate());// 31st for Gregorian Calendar
|
|
862
|
-
return maxDate.toUTCJSDate().valueOf();
|
|
863
|
-
}
|
|
864
|
-
|
|
865
|
-
getFormat() {
|
|
866
|
-
if (this._isPattern) {
|
|
867
|
-
this._oDateFormat = DateFormat.getInstance({
|
|
868
|
-
pattern: this._formatPattern,
|
|
869
|
-
calendarType: this._primaryCalendarType,
|
|
870
|
-
});
|
|
871
|
-
} else {
|
|
872
|
-
this._oDateFormat = DateFormat.getInstance({
|
|
873
|
-
style: this._formatPattern,
|
|
874
|
-
calendarType: this._primaryCalendarType,
|
|
875
|
-
});
|
|
876
|
-
}
|
|
877
|
-
return this._oDateFormat;
|
|
878
|
-
}
|
|
879
|
-
|
|
880
|
-
get _isPattern() {
|
|
881
|
-
return this._formatPattern !== "medium" && this._formatPattern !== "short" && this._formatPattern !== "long";
|
|
882
|
-
}
|
|
883
|
-
|
|
884
|
-
_getVisibleDays(oStartDate, bIncludeBCDates) {
|
|
885
|
-
let oCalDate,
|
|
886
|
-
iDaysOldMonth,
|
|
887
|
-
iYear;
|
|
888
|
-
|
|
889
|
-
const minCalendarDateYear = CalendarDate.fromTimestamp(this._getMinCalendarDate(), this._primaryCalendarType).getYear();
|
|
890
|
-
const maxCalendarDateYear = CalendarDate.fromTimestamp(this._getMaxCalendarDate(), this._primaryCalendarType).getYear();
|
|
891
|
-
const _aVisibleDays = [];
|
|
892
|
-
|
|
893
|
-
// If date passed generate days for new start date else return the current one
|
|
894
|
-
if (!oStartDate) {
|
|
895
|
-
return _aVisibleDays;
|
|
896
|
-
}
|
|
897
|
-
|
|
898
|
-
const iFirstDayOfWeek = this._getFirstDayOfWeek();
|
|
710
|
+
const firstDayOfWeek = this._getFirstDayOfWeek();
|
|
899
711
|
|
|
900
712
|
// determine weekday of first day in month
|
|
901
|
-
const
|
|
902
|
-
|
|
903
|
-
|
|
904
|
-
if (
|
|
905
|
-
|
|
906
|
-
}
|
|
907
|
-
|
|
908
|
-
if (iDaysOldMonth > 0) {
|
|
909
|
-
// determine first day for display
|
|
910
|
-
oFirstDay.setDate(1 - iDaysOldMonth);
|
|
713
|
+
const firstDay = new CalendarDate(this._calendarDate, this._primaryCalendarType);
|
|
714
|
+
firstDay.setDate(1);
|
|
715
|
+
daysFromPreviousMonth = firstDay.getDay() - firstDayOfWeek;
|
|
716
|
+
if (daysFromPreviousMonth < 0) {
|
|
717
|
+
daysFromPreviousMonth = 7 + daysFromPreviousMonth;
|
|
911
718
|
}
|
|
912
719
|
|
|
913
|
-
|
|
914
|
-
|
|
915
|
-
iYear = oDay.getYear();
|
|
916
|
-
oCalDate = new CalendarDate(oDay, this._primaryCalendarType);
|
|
917
|
-
if (bIncludeBCDates && iYear < minCalendarDateYear) {
|
|
918
|
-
// For dates before 0001-01-01 we should render only empty squares to keep
|
|
919
|
-
// the month square matrix correct.
|
|
920
|
-
oCalDate._bBeforeFirstYear = true;
|
|
921
|
-
_aVisibleDays.push(oCalDate);
|
|
922
|
-
} else if (iYear >= minCalendarDateYear && iYear <= maxCalendarDateYear) {
|
|
923
|
-
// Days before 0001-01-01 or after 9999-12-31 should not be rendered.
|
|
924
|
-
_aVisibleDays.push(oCalDate);
|
|
925
|
-
}
|
|
926
|
-
oDay.setDate(oDay.getDate() + 1);
|
|
720
|
+
if (daysFromPreviousMonth > 0) {
|
|
721
|
+
firstDay.setDate(1 - daysFromPreviousMonth);
|
|
927
722
|
}
|
|
928
723
|
|
|
929
|
-
return
|
|
724
|
+
return firstDay;
|
|
930
725
|
}
|
|
931
726
|
|
|
932
727
|
_getFirstDayOfWeek() {
|
|
@@ -939,6 +734,7 @@ class DayPicker extends UI5Element {
|
|
|
939
734
|
return {
|
|
940
735
|
wrapper: {
|
|
941
736
|
display: this._hidden ? "none" : "flex",
|
|
737
|
+
"justify-content": "center",
|
|
942
738
|
},
|
|
943
739
|
main: {
|
|
944
740
|
width: "100%",
|
|
@@ -946,11 +742,10 @@ class DayPicker extends UI5Element {
|
|
|
946
742
|
};
|
|
947
743
|
}
|
|
948
744
|
|
|
949
|
-
|
|
950
|
-
|
|
951
|
-
|
|
952
|
-
|
|
953
|
-
]);
|
|
745
|
+
get ariaRoledescription() {
|
|
746
|
+
return this.hasSecondaryCalendarType
|
|
747
|
+
? `${this._primaryCalendarType} calendar with secondary ${this.secondaryCalendarType} calendar`
|
|
748
|
+
: `${this._primaryCalendarType} calendar`;
|
|
954
749
|
}
|
|
955
750
|
}
|
|
956
751
|
|