@sapudex/web-components 0.176.0 → 0.192.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundle.esm.js +1 -1
- package/dist/Accordion.js +2 -1
- package/dist/Accordion.js.map +1 -1
- package/dist/AccordionItem.d.ts +0 -1
- package/dist/AccordionItem.js +2 -2
- package/dist/AccordionItem.js.map +1 -1
- package/dist/Badge.js +2 -1
- package/dist/Badge.js.map +1 -1
- package/dist/Breadcrumbs.d.ts +7 -7
- package/dist/Breadcrumbs.js +3 -3
- package/dist/Breadcrumbs.js.map +1 -1
- package/dist/CountrySelector.d.ts +2 -0
- package/dist/CountrySelector.js +10 -6
- package/dist/CountrySelector.js.map +1 -1
- package/dist/DatePicker.d.ts +53 -26
- package/dist/DatePicker.js +205 -39
- package/dist/DatePicker.js.map +1 -1
- package/dist/FilterMenu.d.ts +4 -6
- package/dist/FilterMenu.js +10 -10
- package/dist/FilterMenu.js.map +1 -1
- package/dist/Footer.js +6 -2
- package/dist/Footer.js.map +1 -1
- package/dist/HeroBanner.d.ts +0 -1
- package/dist/HeroBanner.js +2 -1
- package/dist/HeroBanner.js.map +1 -1
- package/dist/Link.js +2 -0
- package/dist/Link.js.map +1 -1
- package/dist/ListSelectAll.js +2 -0
- package/dist/ListSelectAll.js.map +1 -1
- package/dist/MastheadItem.d.ts +10 -1
- package/dist/MastheadItem.js +12 -6
- package/dist/MastheadItem.js.map +1 -1
- package/dist/MastheadMenu.d.ts +6 -0
- package/dist/MastheadMenu.js +4 -1
- package/dist/MastheadMenu.js.map +1 -1
- package/dist/MastheadMenuItem.d.ts +1 -0
- package/dist/MastheadMenuItem.js +3 -0
- package/dist/MastheadMenuItem.js.map +1 -1
- package/dist/MastheadMobileMenu.js +1 -1
- package/dist/MastheadMobileMenu.js.map +1 -1
- package/dist/MastheadProfileMenu.d.ts +6 -0
- package/dist/MastheadProfileMenu.js +3 -0
- package/dist/MastheadProfileMenu.js.map +1 -1
- package/dist/MastheadShell.d.ts +35 -4
- package/dist/MastheadShell.js +141 -11
- package/dist/MastheadShell.js.map +1 -1
- package/dist/MediaPlayer.js +2 -2
- package/dist/MediaPlayer.js.map +1 -1
- package/dist/MessageStrip.js +2 -1
- package/dist/MessageStrip.js.map +1 -1
- package/dist/Pagination.d.ts +3 -2
- package/dist/Pagination.js +4 -2
- package/dist/Pagination.js.map +1 -1
- package/dist/RadioButton.js +0 -1
- package/dist/RadioButton.js.map +1 -1
- package/dist/Search.js +0 -1
- package/dist/Search.js.map +1 -1
- package/dist/SearchableListBase.js +3 -3
- package/dist/SearchableListBase.js.map +1 -1
- package/dist/SecondaryNavigation.js +1 -1
- package/dist/SecondaryNavigation.js.map +1 -1
- package/dist/SecondaryNavigationItem.js +1 -1
- package/dist/SecondaryNavigationItem.js.map +1 -1
- package/dist/SelectBox.d.ts +5 -3
- package/dist/SelectBox.js +11 -7
- package/dist/SelectBox.js.map +1 -1
- package/dist/SideNavigationMobile.js +1 -1
- package/dist/SideNavigationMobile.js.map +1 -1
- package/dist/StepInput.js +1 -1
- package/dist/StepInput.js.map +1 -1
- package/dist/Tab.d.ts +4 -13
- package/dist/Tab.js +11 -14
- package/dist/Tab.js.map +1 -1
- package/dist/TabNavigation.d.ts +4 -5
- package/dist/TabNavigation.js +16 -15
- package/dist/TabNavigation.js.map +1 -1
- package/dist/Table.js +2 -2
- package/dist/Table.js.map +1 -1
- package/dist/TextArea.d.ts +13 -22
- package/dist/TextArea.js +30 -33
- package/dist/TextArea.js.map +1 -1
- package/dist/assets/{css_variables-a92ef9ad.css → bundle-c5e3cbf2.css} +1 -1
- package/dist/assets/{bundle.esm-f0e73f3b.js → bundle.esm-809b9769.js} +188 -188
- package/dist/assets/messagebundle_en-06c0dadc.js +1 -0
- package/dist/css/themes/AccordionItem.css +1 -1
- package/dist/css/themes/Button.css +1 -1
- package/dist/css/themes/CountrySelector.css +1 -1
- package/dist/css/themes/ListItem.css +1 -1
- package/dist/css/themes/MastheadItem.css +1 -1
- package/dist/css/themes/MastheadMenu.css +1 -1
- package/dist/css/themes/MastheadMenuItem.css +1 -1
- package/dist/css/themes/MastheadMobileMenu.css +1 -1
- package/dist/css/themes/MastheadProfileMenu.css +1 -1
- package/dist/css/themes/MastheadShell.css +1 -1
- package/dist/css/themes/MediaPlayer.css +1 -1
- package/dist/css/themes/MessageStrip.css +1 -1
- package/dist/css/themes/PhoneNumberField.css +1 -1
- package/dist/css/themes/RatingIndicator.css +1 -1
- package/dist/css/themes/Review.css +1 -1
- package/dist/css/themes/ReviewItem.css +1 -1
- package/dist/css/themes/Search.css +1 -1
- package/dist/css/themes/SegmentedButton.css +1 -1
- package/dist/css/themes/SideNavigationMobileDropdown.css +1 -1
- package/dist/css/themes/Slider.css +1 -1
- package/dist/css/themes/StepInput.css +1 -1
- package/dist/css/themes/TabNavigation.css +1 -1
- package/dist/css/themes/Table.css +1 -1
- package/dist/css/themes/TextArea.css +1 -1
- package/dist/custom-elements-internal.json +127 -107
- package/dist/custom-elements.json +122 -104
- package/dist/features/SearchSuggestionsPopover.d.ts +1 -1
- package/dist/generated/assets/i18n/messagebundle_en.json +1 -1
- package/dist/generated/i18n/i18n-defaults.d.ts +2 -1
- package/dist/generated/i18n/i18n-defaults.js +2 -1
- package/dist/generated/i18n/i18n-defaults.js.map +1 -1
- package/dist/generated/templates/BreadcrumbsPopoverTemplate.lit.js +1 -1
- package/dist/generated/templates/BreadcrumbsPopoverTemplate.lit.js.map +1 -1
- package/dist/generated/templates/DatePickerPopoverTemplate.lit.js +1 -1
- package/dist/generated/templates/DatePickerPopoverTemplate.lit.js.map +1 -1
- package/dist/generated/templates/DatePickerTemplate.lit.js +1 -1
- package/dist/generated/templates/DatePickerTemplate.lit.js.map +1 -1
- package/dist/generated/templates/FilterMenuTemplate.lit.js +2 -2
- package/dist/generated/templates/FilterMenuTemplate.lit.js.map +1 -1
- package/dist/generated/templates/MastheadItemTemplate.lit.js +3 -3
- package/dist/generated/templates/MastheadItemTemplate.lit.js.map +1 -1
- package/dist/generated/templates/MastheadMenuItemTemplate.lit.js +2 -2
- package/dist/generated/templates/MastheadMenuItemTemplate.lit.js.map +1 -1
- package/dist/generated/templates/MastheadShellTemplate.lit.js +8 -9
- package/dist/generated/templates/MastheadShellTemplate.lit.js.map +1 -1
- package/dist/generated/templates/PaginationTemplate.lit.js +1 -1
- package/dist/generated/templates/PaginationTemplate.lit.js.map +1 -1
- package/dist/generated/templates/TabHeaderTemplate.lit.js +1 -1
- package/dist/generated/templates/TabHeaderTemplate.lit.js.map +1 -1
- package/dist/generated/templates/TabNavigationTemplate.lit.js +1 -1
- package/dist/generated/templates/TabNavigationTemplate.lit.js.map +1 -1
- package/dist/generated/templates/TextAreaTemplate.lit.js +5 -4
- package/dist/generated/templates/TextAreaTemplate.lit.js.map +1 -1
- package/dist/generated/templates/TextFieldTemplate.lit.js +1 -1
- package/dist/generated/templates/TextFieldTemplate.lit.js.map +1 -1
- package/dist/generated/themes/AccordionItem.css.js +1 -1
- package/dist/generated/themes/AccordionItem.css.js.map +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/CountrySelector.css.js +1 -1
- package/dist/generated/themes/CountrySelector.css.js.map +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/MastheadItem.css.js +1 -1
- package/dist/generated/themes/MastheadItem.css.js.map +1 -1
- package/dist/generated/themes/MastheadMenu.css.js +1 -1
- package/dist/generated/themes/MastheadMenu.css.js.map +1 -1
- package/dist/generated/themes/MastheadMenuItem.css.js +1 -1
- package/dist/generated/themes/MastheadMenuItem.css.js.map +1 -1
- package/dist/generated/themes/MastheadMobileMenu.css.js +1 -1
- package/dist/generated/themes/MastheadMobileMenu.css.js.map +1 -1
- package/dist/generated/themes/MastheadProfileMenu.css.js +1 -1
- package/dist/generated/themes/MastheadProfileMenu.css.js.map +1 -1
- package/dist/generated/themes/MastheadShell.css.js +1 -1
- package/dist/generated/themes/MastheadShell.css.js.map +1 -1
- package/dist/generated/themes/MediaPlayer.css.js +1 -1
- package/dist/generated/themes/MediaPlayer.css.js.map +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/PhoneNumberField.css.js +1 -1
- package/dist/generated/themes/PhoneNumberField.css.js.map +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/Review.css.js +1 -1
- package/dist/generated/themes/Review.css.js.map +1 -1
- package/dist/generated/themes/ReviewItem.css.js +1 -1
- package/dist/generated/themes/ReviewItem.css.js.map +1 -1
- package/dist/generated/themes/Search.css.js +1 -1
- package/dist/generated/themes/Search.css.js.map +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/SideNavigationMobileDropdown.css.js +1 -1
- package/dist/generated/themes/SideNavigationMobileDropdown.css.js.map +1 -1
- package/dist/generated/themes/Slider.css.js +1 -1
- package/dist/generated/themes/Slider.css.js.map +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/TabNavigation.css.js +1 -1
- package/dist/generated/themes/TabNavigation.css.js.map +1 -1
- package/dist/generated/themes/Table.css.js +1 -1
- package/dist/generated/themes/Table.css.js.map +1 -1
- package/dist/generated/themes/TextArea.css.js +1 -1
- package/dist/generated/themes/TextArea.css.js.map +1 -1
- package/dist/i18n/messagebundle.properties +3 -0
- package/dist/i18n/messagebundle_en.properties +1 -0
- package/dist/vscode.html-custom-data.json +2 -12
- package/dist/web-types.json +21 -25
- package/package.json +2 -2
- package/src/Accordion.ts +2 -1
- package/src/AccordionItem.ts +2 -2
- package/src/Badge.ts +2 -1
- package/src/Breadcrumbs.hbs +3 -3
- package/src/Breadcrumbs.ts +14 -14
- package/src/BreadcrumbsPopover.hbs +1 -1
- package/src/CountrySelector.hbs +30 -30
- package/src/CountrySelector.ts +23 -18
- package/src/DatePicker.hbs +4 -5
- package/src/DatePicker.ts +257 -64
- package/src/DatePickerPopover.hbs +2 -2
- package/src/FilterMenu.hbs +2 -1
- package/src/FilterMenu.ts +13 -14
- package/src/Footer.ts +6 -2
- package/src/HeroBanner.ts +2 -1
- package/src/Link.ts +2 -0
- package/src/ListSelectAll.ts +2 -0
- package/src/MastheadItem.hbs +3 -3
- package/src/MastheadItem.ts +23 -11
- package/src/MastheadMenu.ts +9 -1
- package/src/MastheadMenuItem.hbs +2 -1
- package/src/MastheadMenuItem.ts +4 -0
- package/src/MastheadMobileMenu.ts +1 -1
- package/src/MastheadProfileMenu.ts +8 -0
- package/src/MastheadShell.hbs +69 -67
- package/src/MastheadShell.ts +177 -16
- package/src/MediaPlayer.ts +2 -2
- package/src/MessageStrip.ts +2 -1
- package/src/Pagination.hbs +2 -2
- package/src/Pagination.ts +8 -5
- package/src/RadioButton.ts +0 -1
- package/src/Search.ts +0 -1
- package/src/SearchableListBase.ts +3 -3
- package/src/SecondaryNavigation.ts +1 -1
- package/src/SecondaryNavigationItem.ts +1 -1
- package/src/SelectBox.ts +16 -10
- package/src/SideNavigationMobile.ts +1 -1
- package/src/StepInput.ts +1 -1
- package/src/Tab.ts +18 -29
- package/src/TabHeader.hbs +1 -1
- package/src/TabNavigation.hbs +1 -2
- package/src/TabNavigation.ts +21 -19
- package/src/Table.ts +2 -2
- package/src/TextArea.hbs +21 -21
- package/src/TextArea.ts +82 -78
- package/src/TextField.hbs +4 -2
- package/src/generated/i18n/i18n-defaults.ts +2 -2
- package/src/generated/templates/BreadcrumbsPopoverTemplate.lit.ts +1 -1
- package/src/generated/templates/DatePickerPopoverTemplate.lit.ts +1 -1
- package/src/generated/templates/DatePickerTemplate.lit.ts +1 -1
- package/src/generated/templates/FilterMenuTemplate.lit.ts +2 -2
- package/src/generated/templates/MastheadItemTemplate.lit.ts +3 -3
- package/src/generated/templates/MastheadMenuItemTemplate.lit.ts +2 -2
- package/src/generated/templates/MastheadShellTemplate.lit.ts +8 -9
- package/src/generated/templates/PaginationTemplate.lit.ts +1 -1
- package/src/generated/templates/TabHeaderTemplate.lit.ts +1 -1
- package/src/generated/templates/TabNavigationTemplate.lit.ts +1 -1
- package/src/generated/templates/TextAreaTemplate.lit.ts +5 -4
- package/src/generated/templates/TextFieldTemplate.lit.ts +1 -1
- package/src/generated/themes/AccordionItem.css.ts +1 -1
- package/src/generated/themes/Button.css.ts +1 -1
- package/src/generated/themes/CountrySelector.css.ts +1 -1
- package/src/generated/themes/ListItem.css.ts +1 -1
- package/src/generated/themes/MastheadItem.css.ts +1 -1
- package/src/generated/themes/MastheadMenu.css.ts +1 -1
- package/src/generated/themes/MastheadMenuItem.css.ts +1 -1
- package/src/generated/themes/MastheadMobileMenu.css.ts +1 -1
- package/src/generated/themes/MastheadProfileMenu.css.ts +1 -1
- package/src/generated/themes/MastheadShell.css.ts +1 -1
- package/src/generated/themes/MediaPlayer.css.ts +1 -1
- package/src/generated/themes/MessageStrip.css.ts +1 -1
- package/src/generated/themes/PhoneNumberField.css.ts +1 -1
- package/src/generated/themes/RatingIndicator.css.ts +1 -1
- package/src/generated/themes/Review.css.ts +1 -1
- package/src/generated/themes/ReviewItem.css.ts +1 -1
- package/src/generated/themes/Search.css.ts +1 -1
- package/src/generated/themes/SegmentedButton.css.ts +1 -1
- package/src/generated/themes/SideNavigationMobileDropdown.css.ts +1 -1
- package/src/generated/themes/Slider.css.ts +1 -1
- package/src/generated/themes/StepInput.css.ts +1 -1
- package/src/generated/themes/TabNavigation.css.ts +1 -1
- package/src/generated/themes/Table.css.ts +1 -1
- package/src/generated/themes/TextArea.css.ts +1 -1
- package/src/i18n/messagebundle.properties +3 -0
- package/src/i18n/messagebundle_en.properties +1 -0
- package/src/themes/AccordionItem.css +2 -2
- package/src/themes/Button.css +5 -5
- package/src/themes/CountrySelector.css +35 -28
- package/src/themes/ListItem.css +1 -1
- package/src/themes/MastheadItem.css +40 -2
- package/src/themes/MastheadMenu.css +74 -2
- package/src/themes/MastheadMenuItem.css +1 -0
- package/src/themes/MastheadMobileMenu.css +2 -2
- package/src/themes/MastheadProfileMenu.css +10 -2
- package/src/themes/MastheadShell.css +59 -27
- package/src/themes/MediaPlayer.css +18 -9
- package/src/themes/MessageStrip.css +6 -6
- package/src/themes/PhoneNumberField.css +2 -2
- package/src/themes/Review.css +1 -1
- package/src/themes/ReviewItem.css +1 -1
- package/src/themes/Search.css +8 -2
- package/src/themes/SegmentedButton.css +1 -1
- package/src/themes/SelectBox.css +1 -1
- package/src/themes/SideNavigationMobileDropdown.css +1 -1
- package/src/themes/StepInput.css +5 -5
- package/src/themes/TabNavigation.css +6 -6
- package/src/themes/Table.css +5 -5
- package/src/themes/TextArea.css +12 -1
- package/dist/assets/messagebundle_en-4997b226.js +0 -1
package/dist/DatePicker.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
1
|
+
import DateComponentBase from "@ui5/webcomponents/dist/DateComponentBase.js";
|
|
2
|
+
import { CalendarSelectedDatesChangeEventDetail } from "@ui5/webcomponents/dist/Calendar.js";
|
|
3
3
|
import "@ui5/webcomponents/dist/Icon.js";
|
|
4
4
|
import "@ui5/webcomponents-icons/dist/appointment-2.js";
|
|
5
5
|
import type I18nBundle from "@ui5/webcomponents-base/dist/i18nBundle.js";
|
|
@@ -11,7 +11,7 @@ export declare enum UDExDatePickerSelectionMode {
|
|
|
11
11
|
}
|
|
12
12
|
export type DatePickerSelectionChangeEventDetail = {
|
|
13
13
|
selectedValues: Array<string>;
|
|
14
|
-
selectedDates: Array<number>;
|
|
14
|
+
selectedDates: Array<number | undefined>;
|
|
15
15
|
timestamp: number | undefined;
|
|
16
16
|
};
|
|
17
17
|
/**
|
|
@@ -29,11 +29,11 @@ export type DatePickerSelectionChangeEventDetail = {
|
|
|
29
29
|
*
|
|
30
30
|
* @constructor
|
|
31
31
|
* @author SAP SE
|
|
32
|
-
* @extends
|
|
32
|
+
* @extends DateComponentBase
|
|
33
33
|
* @tagname udex-date-picker
|
|
34
34
|
* @public
|
|
35
35
|
*/
|
|
36
|
-
declare class UDExDatePicker extends
|
|
36
|
+
declare class UDExDatePicker extends DateComponentBase {
|
|
37
37
|
/**
|
|
38
38
|
* Defines selection mode of the calendar component.
|
|
39
39
|
*
|
|
@@ -101,24 +101,6 @@ declare class UDExDatePicker extends UI5Element {
|
|
|
101
101
|
* @public
|
|
102
102
|
*/
|
|
103
103
|
label: string;
|
|
104
|
-
/**
|
|
105
|
-
* Determines the minimum date available for selection.
|
|
106
|
-
* <br/><br/>
|
|
107
|
-
* <b>Note:</b> The minDate value must be provided in the ISO date format (YYYY-MM-dd).
|
|
108
|
-
*
|
|
109
|
-
* @default ""
|
|
110
|
-
* @public
|
|
111
|
-
*/
|
|
112
|
-
minDate: string;
|
|
113
|
-
/**
|
|
114
|
-
* Determines the maximum date available for selection.
|
|
115
|
-
* <br/><br/>
|
|
116
|
-
* <b>Note:</b> The maxDate value must be provided in the ISO date format (YYYY-MM-dd).
|
|
117
|
-
*
|
|
118
|
-
* @default ""
|
|
119
|
-
* @public
|
|
120
|
-
*/
|
|
121
|
-
maxDate: string;
|
|
122
104
|
/**
|
|
123
105
|
* Defines selected dates values.
|
|
124
106
|
*
|
|
@@ -139,10 +121,15 @@ declare class UDExDatePicker extends UI5Element {
|
|
|
139
121
|
* @public
|
|
140
122
|
*/
|
|
141
123
|
formatPattern: string;
|
|
124
|
+
/**
|
|
125
|
+
* The first date in the range during selection (this is a temporary value, not the first date in the value range)
|
|
126
|
+
* @private
|
|
127
|
+
*/
|
|
128
|
+
_tempValue: string;
|
|
142
129
|
responsivePopover?: UDExDropdown;
|
|
143
130
|
static i18nBundle: I18nBundle;
|
|
131
|
+
private _prevDelimiter;
|
|
144
132
|
static onDefine(): Promise<void>;
|
|
145
|
-
_getCalendar(): Promise<Calendar>;
|
|
146
133
|
_getResponsePopover(): Promise<UDExDropdown>;
|
|
147
134
|
/**
|
|
148
135
|
* Getter for the interactive element that opens the overflow
|
|
@@ -156,9 +143,49 @@ declare class UDExDatePicker extends UI5Element {
|
|
|
156
143
|
hideCalendar(): void;
|
|
157
144
|
showCalendar(): void;
|
|
158
145
|
handleCalendarChange(e: CustomEvent<CalendarSelectedDatesChangeEventDetail>): void;
|
|
146
|
+
get _effectiveDelimiter(): string;
|
|
147
|
+
_getInput(): HTMLInputElement | null | undefined;
|
|
148
|
+
_splitValueByDelimiter(value: string): string[];
|
|
149
|
+
/**
|
|
150
|
+
* Returns a UTC timestamp, representing the last date in the value string or undefined if the value is empty or there is just one date
|
|
151
|
+
* @private
|
|
152
|
+
*/
|
|
153
|
+
_extractLastTimestamp(value: string): number | undefined;
|
|
154
|
+
/**
|
|
155
|
+
* Returns a UTC timestamp, representing the first date in the value string or undefined if the value is empty
|
|
156
|
+
* @private
|
|
157
|
+
*/
|
|
158
|
+
_extractFirstTimestamp(value: string): number | undefined;
|
|
159
|
+
/**
|
|
160
|
+
* Checks if a value is valid against the current date format of the DatePicker.
|
|
161
|
+
* @public
|
|
162
|
+
* @param value A value to be tested against the current date format
|
|
163
|
+
*/
|
|
164
|
+
isValid(value: string): boolean;
|
|
165
|
+
isValidRange(value: string): boolean;
|
|
166
|
+
isInValidRange(value: string): boolean;
|
|
167
|
+
/**
|
|
168
|
+
* Checks if a date is between the minimum and maximum date.
|
|
169
|
+
* @public
|
|
170
|
+
* @param value A value to be checked
|
|
171
|
+
*/
|
|
172
|
+
isInValidRangeRange(value: string): boolean;
|
|
173
|
+
_checkValueValidity(value: string): boolean;
|
|
174
|
+
/**
|
|
175
|
+
* Builds a string value out of two UTC timestamps - this method is the counterpart to _extractFirstTimestamp/_extractLastTimestamp
|
|
176
|
+
* @private
|
|
177
|
+
*/
|
|
178
|
+
_buildValue(firstDateTimestamp: number | undefined, lastDateTimestamp: number | undefined): string;
|
|
179
|
+
/**
|
|
180
|
+
* The parser understands many formats, but we need one format OR extract both dates as timestamps, flip if necessary, and build (which will use the desired format so we enforce the format too)
|
|
181
|
+
* @protected
|
|
182
|
+
*/
|
|
183
|
+
normalizeValue(value: string): string;
|
|
184
|
+
_updateValueState(): void;
|
|
185
|
+
_buildEventData(value: string): DatePickerSelectionChangeEventDetail;
|
|
186
|
+
_updateValueAndFireEvents(value: string, normalizeValue: boolean, e?: CustomEvent<CalendarSelectedDatesChangeEventDetail> | null): void;
|
|
187
|
+
_onInputChange(e: Event): void;
|
|
159
188
|
handleInputClick(e: Event | KeyboardEvent): void;
|
|
160
|
-
handleInputMouseDown(e: Event): void;
|
|
161
|
-
handleInputKeyDown(e: KeyboardEvent): void;
|
|
162
189
|
/**
|
|
163
190
|
* Used to provide selectedDates to the calendar based on the component's state
|
|
164
191
|
* Override in derivatives to provide different rules for setting the calendar's selected dates
|
package/dist/DatePicker.js
CHANGED
|
@@ -5,14 +5,14 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
5
5
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
6
|
};
|
|
7
7
|
var UDExDatePicker_1;
|
|
8
|
-
import
|
|
8
|
+
import DateComponentBase from "@ui5/webcomponents/dist/DateComponentBase.js";
|
|
9
9
|
import litRender from "@ui5/webcomponents-base/dist/renderer/LitRenderer.js";
|
|
10
10
|
import customElement from "@ui5/webcomponents-base/dist/decorators/customElement.js";
|
|
11
11
|
import property from "@ui5/webcomponents-base/dist/decorators/property.js";
|
|
12
12
|
import event from "@ui5/webcomponents-base/dist/decorators/event.js";
|
|
13
13
|
// eslint-disable-next-line
|
|
14
14
|
import Calendar from "@ui5/webcomponents/dist/Calendar.js";
|
|
15
|
-
import
|
|
15
|
+
import CalendarDateComponent from "@ui5/webcomponents/dist/CalendarDate.js";
|
|
16
16
|
import "@ui5/webcomponents/dist/Icon.js";
|
|
17
17
|
import "@ui5/webcomponents-icons/dist/appointment-2.js";
|
|
18
18
|
import { getI18nBundle } from "@ui5/webcomponents-base/dist/i18nBundle.js";
|
|
@@ -47,18 +47,14 @@ export var UDExDatePickerSelectionMode;
|
|
|
47
47
|
*
|
|
48
48
|
* @constructor
|
|
49
49
|
* @author SAP SE
|
|
50
|
-
* @extends
|
|
50
|
+
* @extends DateComponentBase
|
|
51
51
|
* @tagname udex-date-picker
|
|
52
52
|
* @public
|
|
53
53
|
*/
|
|
54
|
-
let UDExDatePicker = UDExDatePicker_1 = class UDExDatePicker extends
|
|
54
|
+
let UDExDatePicker = UDExDatePicker_1 = class UDExDatePicker extends DateComponentBase {
|
|
55
55
|
static async onDefine() {
|
|
56
56
|
UDExDatePicker_1.i18nBundle = await getI18nBundle("@udex/web-components");
|
|
57
57
|
}
|
|
58
|
-
async _getCalendar() {
|
|
59
|
-
const staticAreaItem = await this.getStaticAreaItemDomRef();
|
|
60
|
-
return staticAreaItem.querySelector("#ui5-calendar");
|
|
61
|
-
}
|
|
62
58
|
async _getResponsePopover() {
|
|
63
59
|
const staticAreaItem = await this.getStaticAreaItemDomRef();
|
|
64
60
|
return staticAreaItem.querySelector(`#udex-${this.__id}-calendar__popover`);
|
|
@@ -68,11 +64,12 @@ let UDExDatePicker = UDExDatePicker_1 = class UDExDatePicker extends UI5Element
|
|
|
68
64
|
* @private
|
|
69
65
|
*/
|
|
70
66
|
get _dropdownTrigger() {
|
|
71
|
-
return this.shadowRoot.querySelector(".udex-date-
|
|
67
|
+
return this.shadowRoot.querySelector(".udex-date-picker__input");
|
|
72
68
|
}
|
|
73
69
|
_afterDropdownClose() {
|
|
74
70
|
this._dropdownTrigger.active = false;
|
|
75
|
-
this._dropdownTrigger.shadowRoot?.querySelector("input")?.
|
|
71
|
+
this._dropdownTrigger.shadowRoot?.querySelector("input")?.blur();
|
|
72
|
+
this._tempValue = "";
|
|
76
73
|
}
|
|
77
74
|
_afterDropdownOpen() {
|
|
78
75
|
this._dropdownTrigger.active = true;
|
|
@@ -92,26 +89,203 @@ let UDExDatePicker = UDExDatePicker_1 = class UDExDatePicker extends UI5Element
|
|
|
92
89
|
this._openRespPopover();
|
|
93
90
|
}
|
|
94
91
|
handleCalendarChange(e) {
|
|
95
|
-
|
|
96
|
-
const formattedValues = values;
|
|
92
|
+
e.preventDefault();
|
|
97
93
|
if (this.selectionMode === UDExDatePickerSelectionMode.Single) {
|
|
98
|
-
|
|
99
|
-
this.
|
|
94
|
+
const newValue = e.detail.values && e.detail.values[0];
|
|
95
|
+
this._updateValueAndFireEvents(newValue, true, e);
|
|
100
96
|
}
|
|
101
97
|
if (this.selectionMode === UDExDatePickerSelectionMode.Range) {
|
|
102
|
-
|
|
98
|
+
const values = e.detail.values;
|
|
99
|
+
if (values.length === 0) {
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
if (values.length === 1) { // Do nothing until the user selects 2 dates, we don't change any state at all for one date
|
|
103
|
+
this._tempValue = values[0];
|
|
103
104
|
return;
|
|
104
105
|
}
|
|
105
|
-
|
|
106
|
-
this.
|
|
107
|
-
}
|
|
108
|
-
this.fireEvent("selection-change", {
|
|
109
|
-
timestamp,
|
|
110
|
-
selectedDates: [...dates],
|
|
111
|
-
selectedValues: formattedValues,
|
|
112
|
-
}, true);
|
|
106
|
+
const newValue = this._buildValue(e.detail.dates[0], e.detail.dates[1]);
|
|
107
|
+
this._updateValueAndFireEvents(newValue, true, e);
|
|
108
|
+
}
|
|
113
109
|
this.hideCalendar();
|
|
114
110
|
}
|
|
111
|
+
get _effectiveDelimiter() {
|
|
112
|
+
return "-";
|
|
113
|
+
}
|
|
114
|
+
_getInput() {
|
|
115
|
+
return this._dropdownTrigger.shadowRoot?.querySelector("input");
|
|
116
|
+
}
|
|
117
|
+
_splitValueByDelimiter(value) {
|
|
118
|
+
const valuesArray = [];
|
|
119
|
+
const partsArray = value.split(this._prevDelimiter || this._effectiveDelimiter);
|
|
120
|
+
// if format successfully parse the value, the value contains only single date
|
|
121
|
+
if (this.getFormat().parse(value)) {
|
|
122
|
+
valuesArray[0] = partsArray.join(this._effectiveDelimiter);
|
|
123
|
+
valuesArray[1] = "";
|
|
124
|
+
return valuesArray;
|
|
125
|
+
}
|
|
126
|
+
valuesArray[0] = partsArray.slice(0, partsArray.length / 2).join(this._effectiveDelimiter);
|
|
127
|
+
valuesArray[1] = partsArray.slice(partsArray.length / 2).join(this._effectiveDelimiter);
|
|
128
|
+
return valuesArray;
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Returns a UTC timestamp, representing the last date in the value string or undefined if the value is empty or there is just one date
|
|
132
|
+
* @private
|
|
133
|
+
*/
|
|
134
|
+
_extractLastTimestamp(value) {
|
|
135
|
+
if (!value || !this._checkValueValidity(value)) {
|
|
136
|
+
return undefined;
|
|
137
|
+
}
|
|
138
|
+
const dateStrings = this._splitValueByDelimiter(value);
|
|
139
|
+
if (dateStrings[1]) {
|
|
140
|
+
const parsedDate = this.getFormat().parse(dateStrings[1], true);
|
|
141
|
+
return parsedDate.getTime() / 1000;
|
|
142
|
+
}
|
|
143
|
+
return undefined;
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Returns a UTC timestamp, representing the first date in the value string or undefined if the value is empty
|
|
147
|
+
* @private
|
|
148
|
+
*/
|
|
149
|
+
_extractFirstTimestamp(value) {
|
|
150
|
+
if (!value || !this._checkValueValidity(value)) {
|
|
151
|
+
return undefined;
|
|
152
|
+
}
|
|
153
|
+
const dateStrings = this._splitValueByDelimiter(value); // at least one item guaranteed due to the checks above (non-empty and valid)
|
|
154
|
+
const parsedDate = this.getFormat().parse(dateStrings[0], true);
|
|
155
|
+
return parsedDate.getTime() / 1000;
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Checks if a value is valid against the current date format of the DatePicker.
|
|
159
|
+
* @public
|
|
160
|
+
* @param value A value to be tested against the current date format
|
|
161
|
+
*/
|
|
162
|
+
isValid(value) {
|
|
163
|
+
if (value === "" || value === undefined) {
|
|
164
|
+
return true;
|
|
165
|
+
}
|
|
166
|
+
return !!this.getFormat().parse(value);
|
|
167
|
+
}
|
|
168
|
+
isValidRange(value) {
|
|
169
|
+
const parts = this._splitValueByDelimiter(value);
|
|
170
|
+
return parts.length <= 2 && parts.every(dateString => this.isValid(dateString)); // must be at most 2 dates and each must be valid
|
|
171
|
+
}
|
|
172
|
+
isInValidRange(value) {
|
|
173
|
+
if (value === "" || value === undefined) {
|
|
174
|
+
return true;
|
|
175
|
+
}
|
|
176
|
+
const calendarDate = this._getCalendarDateFromString(value);
|
|
177
|
+
if (!calendarDate || !this._minDate || !this._maxDate) {
|
|
178
|
+
return false;
|
|
179
|
+
}
|
|
180
|
+
return calendarDate.valueOf() >= this._minDate.valueOf() && calendarDate.valueOf() <= this._maxDate.valueOf();
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* Checks if a date is between the minimum and maximum date.
|
|
184
|
+
* @public
|
|
185
|
+
* @param value A value to be checked
|
|
186
|
+
*/
|
|
187
|
+
isInValidRangeRange(value) {
|
|
188
|
+
return this._splitValueByDelimiter(value).every(dateString => this.isInValidRange(dateString));
|
|
189
|
+
}
|
|
190
|
+
_checkValueValidity(value) {
|
|
191
|
+
let result = false;
|
|
192
|
+
if (value === "") {
|
|
193
|
+
return true;
|
|
194
|
+
}
|
|
195
|
+
if (this.selectionMode === UDExDatePickerSelectionMode.Single) {
|
|
196
|
+
result = this.isValid(value) && this.isInValidRange(value);
|
|
197
|
+
}
|
|
198
|
+
if (this.selectionMode === UDExDatePickerSelectionMode.Range) {
|
|
199
|
+
result = this.isValidRange(value) && this.isInValidRangeRange(value);
|
|
200
|
+
}
|
|
201
|
+
return result;
|
|
202
|
+
}
|
|
203
|
+
/**
|
|
204
|
+
* Builds a string value out of two UTC timestamps - this method is the counterpart to _extractFirstTimestamp/_extractLastTimestamp
|
|
205
|
+
* @private
|
|
206
|
+
*/
|
|
207
|
+
_buildValue(firstDateTimestamp, lastDateTimestamp) {
|
|
208
|
+
this._prevDelimiter = this._effectiveDelimiter;
|
|
209
|
+
if (firstDateTimestamp) {
|
|
210
|
+
const firstDateString = this._getStringFromTimestamp(firstDateTimestamp * 1000);
|
|
211
|
+
if (!lastDateTimestamp) {
|
|
212
|
+
return firstDateString;
|
|
213
|
+
}
|
|
214
|
+
const lastDateString = this._getStringFromTimestamp(lastDateTimestamp * 1000);
|
|
215
|
+
return `${firstDateString} ${this._effectiveDelimiter} ${lastDateString}`;
|
|
216
|
+
}
|
|
217
|
+
return "";
|
|
218
|
+
}
|
|
219
|
+
/**
|
|
220
|
+
* The parser understands many formats, but we need one format OR extract both dates as timestamps, flip if necessary, and build (which will use the desired format so we enforce the format too)
|
|
221
|
+
* @protected
|
|
222
|
+
*/
|
|
223
|
+
normalizeValue(value) {
|
|
224
|
+
let result = "";
|
|
225
|
+
if (this.selectionMode === UDExDatePickerSelectionMode.Single) {
|
|
226
|
+
if (value === "") {
|
|
227
|
+
return value;
|
|
228
|
+
}
|
|
229
|
+
result = this.getFormat().format(this.getFormat().parse(value, true), true); // it is important to both parse and format the date as UTC
|
|
230
|
+
}
|
|
231
|
+
if (this.selectionMode === UDExDatePickerSelectionMode.Range) {
|
|
232
|
+
const firstDateTimestamp = this._extractFirstTimestamp(value);
|
|
233
|
+
const lastDateTimestamp = this._extractLastTimestamp(value);
|
|
234
|
+
if (firstDateTimestamp && lastDateTimestamp && firstDateTimestamp > lastDateTimestamp) { // if both are timestamps (not undefined), flip if necessary
|
|
235
|
+
return this._buildValue(lastDateTimestamp, firstDateTimestamp);
|
|
236
|
+
}
|
|
237
|
+
result = this._buildValue(firstDateTimestamp, lastDateTimestamp);
|
|
238
|
+
}
|
|
239
|
+
return result;
|
|
240
|
+
}
|
|
241
|
+
_updateValueState() {
|
|
242
|
+
const valid = this._checkValueValidity(this.value);
|
|
243
|
+
const previousValueState = this.valueState;
|
|
244
|
+
this.valueState = valid ? ValueState.Standard : ValueState.Error;
|
|
245
|
+
const eventPrevented = !this.fireEvent("value-state-change", { valueState: this.valueState, valid });
|
|
246
|
+
if (eventPrevented) {
|
|
247
|
+
this.valueState = previousValueState;
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
_buildEventData(value) {
|
|
251
|
+
if (this.selectionMode === UDExDatePickerSelectionMode.Range) {
|
|
252
|
+
return {
|
|
253
|
+
selectedDates: [this._extractFirstTimestamp(value), this._extractLastTimestamp(value)],
|
|
254
|
+
selectedValues: this._splitValueByDelimiter(this.value),
|
|
255
|
+
timestamp: this._extractLastTimestamp(value),
|
|
256
|
+
};
|
|
257
|
+
}
|
|
258
|
+
return {
|
|
259
|
+
selectedDates: [this._extractFirstTimestamp(value)],
|
|
260
|
+
selectedValues: [value],
|
|
261
|
+
timestamp: this._extractFirstTimestamp(value),
|
|
262
|
+
};
|
|
263
|
+
}
|
|
264
|
+
_updateValueAndFireEvents(value, normalizeValue, e) {
|
|
265
|
+
const valid = this._checkValueValidity(value);
|
|
266
|
+
if (valid && normalizeValue) {
|
|
267
|
+
value = this.normalizeValue(value); // transform valid values (in any format) to the correct format
|
|
268
|
+
}
|
|
269
|
+
this.value = value;
|
|
270
|
+
this._updateValueState(); // Change the value state to Error/None, but only if needed
|
|
271
|
+
if (!valid) {
|
|
272
|
+
return;
|
|
273
|
+
}
|
|
274
|
+
if (e) {
|
|
275
|
+
const { dates, timestamp, values } = e.detail;
|
|
276
|
+
this.fireEvent("selection-change", {
|
|
277
|
+
timestamp,
|
|
278
|
+
selectedDates: [...dates],
|
|
279
|
+
selectedValues: values,
|
|
280
|
+
}, true);
|
|
281
|
+
}
|
|
282
|
+
else {
|
|
283
|
+
this.fireEvent("selection-change", this._buildEventData(value), true);
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
_onInputChange(e) {
|
|
287
|
+
this._updateValueAndFireEvents(e.target.value, true);
|
|
288
|
+
}
|
|
115
289
|
handleInputClick(e) {
|
|
116
290
|
e.preventDefault();
|
|
117
291
|
if (this.disabled || this.readonly) {
|
|
@@ -119,21 +293,16 @@ let UDExDatePicker = UDExDatePicker_1 = class UDExDatePicker extends UI5Element
|
|
|
119
293
|
}
|
|
120
294
|
this.showCalendar();
|
|
121
295
|
}
|
|
122
|
-
handleInputMouseDown(e) {
|
|
123
|
-
e.preventDefault();
|
|
124
|
-
}
|
|
125
|
-
handleInputKeyDown(e) {
|
|
126
|
-
if (e.key === "Enter") {
|
|
127
|
-
this.handleInputClick(e);
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
296
|
/**
|
|
131
297
|
* Used to provide selectedDates to the calendar based on the component's state
|
|
132
298
|
* Override in derivatives to provide different rules for setting the calendar's selected dates
|
|
133
299
|
* @protected
|
|
134
300
|
*/
|
|
135
301
|
get _calendarSelectedDates() {
|
|
136
|
-
if (this.
|
|
302
|
+
if (this._tempValue) {
|
|
303
|
+
return [this._tempValue];
|
|
304
|
+
}
|
|
305
|
+
if (this.value && this._checkValueValidity(this.value)) {
|
|
137
306
|
return this.value.split(" - ");
|
|
138
307
|
}
|
|
139
308
|
return [];
|
|
@@ -172,12 +341,6 @@ __decorate([
|
|
|
172
341
|
__decorate([
|
|
173
342
|
property({ type: String, defaultValue: "" })
|
|
174
343
|
], UDExDatePicker.prototype, "label", void 0);
|
|
175
|
-
__decorate([
|
|
176
|
-
property({ type: String, defaultValue: "" })
|
|
177
|
-
], UDExDatePicker.prototype, "minDate", void 0);
|
|
178
|
-
__decorate([
|
|
179
|
-
property({ type: String, defaultValue: "" })
|
|
180
|
-
], UDExDatePicker.prototype, "maxDate", void 0);
|
|
181
344
|
__decorate([
|
|
182
345
|
property({ type: String, noAttribute: true, defaultValue: "" })
|
|
183
346
|
], UDExDatePicker.prototype, "selectedDates", void 0);
|
|
@@ -187,6 +350,9 @@ __decorate([
|
|
|
187
350
|
__decorate([
|
|
188
351
|
property({ type: String, defaultValue: "MMM dd, yyyy" })
|
|
189
352
|
], UDExDatePicker.prototype, "formatPattern", void 0);
|
|
353
|
+
__decorate([
|
|
354
|
+
property()
|
|
355
|
+
], UDExDatePicker.prototype, "_tempValue", void 0);
|
|
190
356
|
UDExDatePicker = UDExDatePicker_1 = __decorate([
|
|
191
357
|
customElement({
|
|
192
358
|
tag: "udex-date-picker",
|
|
@@ -195,7 +361,7 @@ UDExDatePicker = UDExDatePicker_1 = __decorate([
|
|
|
195
361
|
template: DatePickerTemplate,
|
|
196
362
|
staticAreaTemplate: DatePickerPopover,
|
|
197
363
|
staticAreaStyles: [DatePickerPopoverCss],
|
|
198
|
-
dependencies: [
|
|
364
|
+
dependencies: [CalendarDateComponent, Calendar, UDExTextField, UDExDropdown, UDExStatusMessage],
|
|
199
365
|
})
|
|
200
366
|
/**
|
|
201
367
|
* Fired when the selected dates change.
|
package/dist/DatePicker.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DatePicker.js","sourceRoot":"","sources":["../src/DatePicker.ts"],"names":[],"mappings":"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","sourcesContent":["import UI5Element from \"@ui5/webcomponents-base/dist/UI5Element.js\";\nimport litRender from \"@ui5/webcomponents-base/dist/renderer/LitRenderer.js\";\nimport customElement from \"@ui5/webcomponents-base/dist/decorators/customElement.js\";\nimport property from \"@ui5/webcomponents-base/dist/decorators/property.js\";\nimport event from \"@ui5/webcomponents-base/dist/decorators/event.js\";\n// eslint-disable-next-line\nimport Calendar, { CalendarSelectedDatesChangeEventDetail } from \"@ui5/webcomponents/dist/Calendar.js\";\nimport CalendarDate from \"@ui5/webcomponents/dist/CalendarDate.js\";\nimport \"@ui5/webcomponents/dist/Icon.js\";\nimport \"@ui5/webcomponents-icons/dist/appointment-2.js\";\nimport type I18nBundle from \"@ui5/webcomponents-base/dist/i18nBundle.js\";\nimport { getI18nBundle } from \"@ui5/webcomponents-base/dist/i18nBundle.js\";\nimport { CALENDAR_ICON, DATEPICKER_DATE_DESCRIPTION } from \"./generated/i18n/i18n-defaults.js\";\n\n// Template\nimport DatePickerTemplate from \"./generated/templates/DatePickerTemplate.lit.js\";\nimport DatePickerPopover from \"./generated/templates/DatePickerPopoverTemplate.lit.js\";\n\n// Styles\nimport DatePickerCss from \"./generated/themes/DatePicker.css\";\nimport UDExTextField from \"./TextField.js\";\nimport UDExDropdown from \"./Dropdown.js\";\nimport DatePickerPopoverCss from \"./generated/themes/DatePickerPopover.css.js\";\nimport UDExStatusMessage from \"./StatusMessage.js\";\nimport ValueState from \"./types/common.js\";\n\nexport enum UDExDatePickerSelectionMode {\n Single = \"Single\",\n Range = \"Range\",\n}\n\nexport type DatePickerSelectionChangeEventDetail = {\n selectedValues: Array<string>;\n selectedDates: Array<number>;\n timestamp: number | undefined;\n};\n\n/**\n * @class\n *\n * <h3 class=\"comment-api-title\">Overview</h3>\n *\n *\n * <h3>Usage</h3>\n *\n * For the <code>udex-date-picker</code>\n * <h3>ES6 Module Import</h3>\n *\n * <code>import \"@udex/web-components/dist/DatePicker.js\";</code>\n *\n * @constructor\n * @author SAP SE\n * @extends UI5Element\n * @tagname udex-date-picker\n * @public\n */\n@customElement({\n tag: \"udex-date-picker\",\n renderer: litRender,\n styles: DatePickerCss,\n template: DatePickerTemplate,\n staticAreaTemplate: DatePickerPopover,\n staticAreaStyles: [DatePickerPopoverCss],\n dependencies: [CalendarDate, Calendar, UDExTextField, UDExDropdown, UDExStatusMessage],\n})\n/**\n * Fired when the selected dates change.\n *\n * @allowPreventDefault\n * @param {Array<string>} selectedValues The selected dates\n * @param {Array<number>} selectedDates The selected dates as UTC timestamps\n * @public\n */\n@event<DatePickerSelectionChangeEventDetail>(\"selection-change\", {\n detail: {\n /**\n * @public\n */\n selectedDates: { type: Array },\n /**\n * @public\n */\n selectedValues: { type: Array },\n\n timestamp: { type: Number },\n },\n})\nclass UDExDatePicker extends UI5Element {\n /**\n * Defines selection mode of the calendar component.\n *\n * @default \"Single\"\n * @public\n */\n @property({ type: UDExDatePickerSelectionMode, defaultValue: \"Single\" })\n selectionMode?: `${UDExDatePickerSelectionMode}`;\n\n /**\n * Defines whether the component is read-only.\n * <br><br>\n * <b>Note:</b> A read-only component is not editable,\n * but still provides visual feedback upon user interaction.\n *\n * @default false\n * @public\n */\n @property({ type: Boolean })\n readonly!: boolean;\n\n /**\n * Defines whether the component is required.\n *\n * @default false\n * @public\n */\n @property({ type: Boolean })\n required!: boolean;\n\n /**\n * Defines whether the component is in disabled state.\n * <br><br>\n * <b>Note:</b> A disabled component is completely noninteractive.\n *\n * @default false\n * @public\n */\n @property({ type: Boolean })\n disabled!: boolean;\n\n /**\n * Defines supporting text under the input field.\n *\n * @default \"\"\n * @public\n */\n @property({ type: String })\n supportingText!: string;\n\n /**\n * Defines the value of the input.\n *\n * @default \"\"\n * @public\n */\n @property({ type: String, defaultValue: \"\" })\n value!: string;\n\n /**\n * Sets the accessible ARIA name of the component.\n *\n * @default \"\"\n * @public\n */\n @property({ type: String, defaultValue: \"\" })\n accessibleName!: string;\n\n /**\n * Receives id (or many ids) of the elements that label the component.\n * @default \"\"\n * @public\n */\n @property({ defaultValue: \"\" })\n accessibleNameRef!: string;\n\n /**\n * Defines label text for the input field.\n *\n * @default \"\"\n * @public\n */\n @property({ type: String, defaultValue: \"\" })\n label!: string;\n\n /**\n * Determines the minimum date available for selection.\n * <br/><br/>\n * <b>Note:</b> The minDate value must be provided in the ISO date format (YYYY-MM-dd).\n *\n * @default \"\"\n * @public\n */\n @property({ type: String, defaultValue: \"\" })\n minDate!: string;\n\n /**\n * Determines the maximum date available for selection.\n * <br/><br/>\n * <b>Note:</b> The maxDate value must be provided in the ISO date format (YYYY-MM-dd).\n *\n * @default \"\"\n * @public\n */\n @property({ type: String, defaultValue: \"\" })\n maxDate!: string;\n\n /**\n * Defines selected dates values.\n *\n * @default \"\"\n * @private\n */\n @property({ type: String, noAttribute: true, defaultValue: \"\" })\n selectedDates!: string;\n\n /**\n * Defines the value state of the component.\n *\n * @default \"Standard\"\n * @public\n */\n @property({ type: ValueState, defaultValue: \"Standard\" })\n valueState!: \"Standard\" | \"Warning\" | \"Error\" | \"Success\";\n\n /**\n * Defines the date format pattern (e.g., \\\"MMM dd, yyyy\\\" or \\\"MM/dd/yyyy\\\").\n * @default \"MMM dd, yyyy\"\n * @public\n */\n @property({ type: String, defaultValue: \"MMM dd, yyyy\" })\n formatPattern!: string;\n\n responsivePopover?: UDExDropdown;\n\n static i18nBundle: I18nBundle;\n\n static async onDefine(): Promise<void> {\n UDExDatePicker.i18nBundle = await getI18nBundle(\"@udex/web-components\");\n }\n\n async _getCalendar(): Promise<Calendar> {\n const staticAreaItem = await this.getStaticAreaItemDomRef();\n return staticAreaItem!.querySelector<Calendar>(\"#ui5-calendar\")!;\n }\n\n async _getResponsePopover(): Promise<UDExDropdown> {\n const staticAreaItem = await this.getStaticAreaItemDomRef();\n return staticAreaItem!.querySelector<UDExDropdown>(`#udex-${this.__id!}-calendar__popover`)!;\n }\n\n /**\n * Getter for the interactive element that opens the overflow\n * @private\n */\n get _dropdownTrigger(): UDExTextField {\n return this.shadowRoot!.querySelector<UDExTextField>(\".udex-date-picker__trigger\")!;\n }\n\n _afterDropdownClose(): void {\n this._dropdownTrigger.active = false;\n this._dropdownTrigger.shadowRoot?.querySelector(\"input\")?.focus();\n }\n\n _afterDropdownOpen(): void {\n this._dropdownTrigger.active = true;\n }\n\n _closeRespPopover(): void {\n this.responsivePopover && this.responsivePopover.onClose();\n }\n\n async _openRespPopover(): Promise<void> {\n this._dropdownTrigger.active = true;\n this.responsivePopover = await this._getResponsePopover();\n this.responsivePopover?.onOpen(this._dropdownTrigger);\n }\n\n hideCalendar(): void {\n this._closeRespPopover();\n }\n\n showCalendar(): void {\n this._openRespPopover();\n }\n\n handleCalendarChange(e: CustomEvent<CalendarSelectedDatesChangeEventDetail>): void {\n const { dates, timestamp, values } = e.detail;\n\n const formattedValues = values;\n\n if (this.selectionMode === UDExDatePickerSelectionMode.Single) {\n this.value = formattedValues[0];\n this.selectedDates = formattedValues[0];\n }\n\n if (this.selectionMode === UDExDatePickerSelectionMode.Range) {\n if (dates.length < 2) {\n return;\n }\n\n this.value = `${formattedValues[0]} - ${formattedValues[1]}`;\n this.selectedDates = `${formattedValues[0]}, ${formattedValues[1]}`;\n }\n\n this.fireEvent(\n \"selection-change\",\n {\n timestamp,\n selectedDates: [...dates],\n selectedValues: formattedValues,\n },\n true,\n );\n\n this.hideCalendar();\n }\n\n handleInputClick(e: Event | KeyboardEvent): void {\n e.preventDefault();\n\n if (this.disabled || this.readonly) {\n return;\n }\n\n this.showCalendar();\n }\n\n handleInputMouseDown(e: Event): void {\n e.preventDefault();\n }\n\n handleInputKeyDown(e: KeyboardEvent): void {\n if (e.key === \"Enter\") {\n this.handleInputClick(e);\n }\n }\n\n /**\n * Used to provide selectedDates to the calendar based on the component's state\n * Override in derivatives to provide different rules for setting the calendar's selected dates\n * @protected\n */\n get _calendarSelectedDates(): Array<string> {\n if (this.value) {\n return this.value.split(\" - \");\n }\n\n return [];\n }\n\n get accessibleIconName(): string {\n return UDExDatePicker.i18nBundle.getText(CALENDAR_ICON);\n }\n\n get dateAccessibleName(): string {\n return this.accessibleName || UDExDatePicker.i18nBundle.getText(DATEPICKER_DATE_DESCRIPTION);\n }\n}\n\nUDExDatePicker.define();\n\nexport default UDExDatePicker;\n"]}
|
|
1
|
+
{"version":3,"file":"DatePicker.js","sourceRoot":"","sources":["../src/DatePicker.ts"],"names":[],"mappings":"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","sourcesContent":["import DateComponentBase from \"@ui5/webcomponents/dist/DateComponentBase.js\";\nimport litRender from \"@ui5/webcomponents-base/dist/renderer/LitRenderer.js\";\nimport customElement from \"@ui5/webcomponents-base/dist/decorators/customElement.js\";\nimport property from \"@ui5/webcomponents-base/dist/decorators/property.js\";\nimport event from \"@ui5/webcomponents-base/dist/decorators/event.js\";\n// eslint-disable-next-line\nimport Calendar, { CalendarSelectedDatesChangeEventDetail } from \"@ui5/webcomponents/dist/Calendar.js\";\nimport CalendarDateComponent from \"@ui5/webcomponents/dist/CalendarDate.js\";\nimport \"@ui5/webcomponents/dist/Icon.js\";\nimport \"@ui5/webcomponents-icons/dist/appointment-2.js\";\nimport type I18nBundle from \"@ui5/webcomponents-base/dist/i18nBundle.js\";\nimport { getI18nBundle } from \"@ui5/webcomponents-base/dist/i18nBundle.js\";\nimport { CALENDAR_ICON, DATEPICKER_DATE_DESCRIPTION } from \"./generated/i18n/i18n-defaults.js\";\n\n// Template\nimport DatePickerTemplate from \"./generated/templates/DatePickerTemplate.lit.js\";\nimport DatePickerPopover from \"./generated/templates/DatePickerPopoverTemplate.lit.js\";\n\n// Styles\nimport DatePickerCss from \"./generated/themes/DatePicker.css\";\nimport UDExTextField from \"./TextField.js\";\nimport UDExDropdown from \"./Dropdown.js\";\nimport DatePickerPopoverCss from \"./generated/themes/DatePickerPopover.css.js\";\nimport UDExStatusMessage from \"./StatusMessage.js\";\nimport ValueState from \"./types/common.js\";\n\nexport enum UDExDatePickerSelectionMode {\n Single = \"Single\",\n Range = \"Range\",\n}\n\nexport type DatePickerSelectionChangeEventDetail = {\n selectedValues: Array<string>;\n selectedDates: Array<number | undefined>;\n timestamp: number | undefined;\n};\n\n/**\n * @class\n *\n * <h3 class=\"comment-api-title\">Overview</h3>\n *\n *\n * <h3>Usage</h3>\n *\n * For the <code>udex-date-picker</code>\n * <h3>ES6 Module Import</h3>\n *\n * <code>import \"@udex/web-components/dist/DatePicker.js\";</code>\n *\n * @constructor\n * @author SAP SE\n * @extends DateComponentBase\n * @tagname udex-date-picker\n * @public\n */\n@customElement({\n tag: \"udex-date-picker\",\n renderer: litRender,\n styles: DatePickerCss,\n template: DatePickerTemplate,\n staticAreaTemplate: DatePickerPopover,\n staticAreaStyles: [DatePickerPopoverCss],\n dependencies: [CalendarDateComponent, Calendar, UDExTextField, UDExDropdown, UDExStatusMessage],\n})\n/**\n * Fired when the selected dates change.\n *\n * @allowPreventDefault\n * @param {Array<string>} selectedValues The selected dates\n * @param {Array<number>} selectedDates The selected dates as UTC timestamps\n * @public\n */\n@event<DatePickerSelectionChangeEventDetail>(\"selection-change\", {\n detail: {\n /**\n * @public\n */\n selectedDates: { type: Array },\n /**\n * @public\n */\n selectedValues: { type: Array },\n\n timestamp: { type: Number },\n },\n})\nclass UDExDatePicker extends DateComponentBase {\n /**\n * Defines selection mode of the calendar component.\n *\n * @default \"Single\"\n * @public\n */\n @property({ type: UDExDatePickerSelectionMode, defaultValue: \"Single\" })\n selectionMode?: `${UDExDatePickerSelectionMode}`;\n\n /**\n * Defines whether the component is read-only.\n * <br><br>\n * <b>Note:</b> A read-only component is not editable,\n * but still provides visual feedback upon user interaction.\n *\n * @default false\n * @public\n */\n @property({ type: Boolean })\n readonly!: boolean;\n\n /**\n * Defines whether the component is required.\n *\n * @default false\n * @public\n */\n @property({ type: Boolean })\n required!: boolean;\n\n /**\n * Defines whether the component is in disabled state.\n * <br><br>\n * <b>Note:</b> A disabled component is completely noninteractive.\n *\n * @default false\n * @public\n */\n @property({ type: Boolean })\n disabled!: boolean;\n\n /**\n * Defines supporting text under the input field.\n *\n * @default \"\"\n * @public\n */\n @property({ type: String })\n supportingText!: string;\n\n /**\n * Defines the value of the input.\n *\n * @default \"\"\n * @public\n */\n @property({ type: String, defaultValue: \"\" })\n value!: string;\n\n /**\n * Sets the accessible ARIA name of the component.\n *\n * @default \"\"\n * @public\n */\n @property({ type: String, defaultValue: \"\" })\n accessibleName!: string;\n\n /**\n * Receives id (or many ids) of the elements that label the component.\n * @default \"\"\n * @public\n */\n @property({ defaultValue: \"\" })\n accessibleNameRef!: string;\n\n /**\n * Defines label text for the input field.\n *\n * @default \"\"\n * @public\n */\n @property({ type: String, defaultValue: \"\" })\n label!: string;\n\n /**\n * Defines selected dates values.\n *\n * @default \"\"\n * @private\n */\n @property({ type: String, noAttribute: true, defaultValue: \"\" })\n selectedDates!: string;\n\n /**\n * Defines the value state of the component.\n *\n * @default \"Standard\"\n * @public\n */\n @property({ type: ValueState, defaultValue: \"Standard\" })\n valueState!: \"Standard\" | \"Warning\" | \"Error\" | \"Success\";\n\n /**\n * Defines the date format pattern (e.g., \\\"MMM dd, yyyy\\\" or \\\"MM/dd/yyyy\\\").\n * @default \"MMM dd, yyyy\"\n * @public\n */\n @property({ type: String, defaultValue: \"MMM dd, yyyy\" })\n formatPattern!: string;\n\n /**\n * The first date in the range during selection (this is a temporary value, not the first date in the value range)\n * @private\n */\n @property()\n _tempValue!: string;\n\n responsivePopover?: UDExDropdown;\n\n static i18nBundle: I18nBundle;\n\n private _prevDelimiter!: string | null;\n\n static async onDefine(): Promise<void> {\n UDExDatePicker.i18nBundle = await getI18nBundle(\"@udex/web-components\");\n }\n\n async _getResponsePopover(): Promise<UDExDropdown> {\n const staticAreaItem = await this.getStaticAreaItemDomRef();\n return staticAreaItem!.querySelector<UDExDropdown>(`#udex-${this.__id!}-calendar__popover`)!;\n }\n\n /**\n * Getter for the interactive element that opens the overflow\n * @private\n */\n get _dropdownTrigger(): UDExTextField {\n return this.shadowRoot!.querySelector<UDExTextField>(\".udex-date-picker__input\")!;\n }\n\n _afterDropdownClose(): void {\n this._dropdownTrigger.active = false;\n this._dropdownTrigger.shadowRoot?.querySelector(\"input\")?.blur();\n this._tempValue = \"\";\n }\n\n _afterDropdownOpen(): void {\n this._dropdownTrigger.active = true;\n }\n\n _closeRespPopover(): void {\n this.responsivePopover && this.responsivePopover.onClose();\n }\n\n async _openRespPopover(): Promise<void> {\n this._dropdownTrigger.active = true;\n this.responsivePopover = await this._getResponsePopover();\n this.responsivePopover?.onOpen(this._dropdownTrigger);\n }\n\n hideCalendar(): void {\n this._closeRespPopover();\n }\n\n showCalendar(): void {\n this._openRespPopover();\n }\n\n handleCalendarChange(e: CustomEvent<CalendarSelectedDatesChangeEventDetail>): void {\n e.preventDefault();\n if (this.selectionMode === UDExDatePickerSelectionMode.Single) {\n const newValue = e.detail.values && e.detail.values[0];\n this._updateValueAndFireEvents(newValue, true, e);\n }\n\n if (this.selectionMode === UDExDatePickerSelectionMode.Range) {\n const values = e.detail.values;\n\n if (values.length === 0) {\n return;\n }\n\n if (values.length === 1) { // Do nothing until the user selects 2 dates, we don't change any state at all for one date\n this._tempValue = values[0];\n return;\n }\n\n const newValue = this._buildValue(e.detail.dates[0], e.detail.dates[1]);\n this._updateValueAndFireEvents(newValue, true, e);\n }\n\n this.hideCalendar();\n }\n\n get _effectiveDelimiter(): string {\n return \"-\";\n }\n\n _getInput(): HTMLInputElement | null | undefined {\n return this._dropdownTrigger.shadowRoot?.querySelector(\"input\");\n }\n\n _splitValueByDelimiter(value: string) {\n const valuesArray: Array<string> = [];\n const partsArray = value.split(this._prevDelimiter || this._effectiveDelimiter);\n\n // if format successfully parse the value, the value contains only single date\n if (this.getFormat().parse(value)) {\n valuesArray[0] = partsArray.join(this._effectiveDelimiter);\n valuesArray[1] = \"\";\n\n return valuesArray;\n }\n\n valuesArray[0] = partsArray.slice(0, partsArray.length / 2).join(this._effectiveDelimiter);\n valuesArray[1] = partsArray.slice(partsArray.length / 2).join(this._effectiveDelimiter);\n\n return valuesArray;\n }\n\n /**\n * Returns a UTC timestamp, representing the last date in the value string or undefined if the value is empty or there is just one date\n * @private\n */\n _extractLastTimestamp(value: string) {\n if (!value || !this._checkValueValidity(value)) {\n return undefined;\n }\n\n const dateStrings = this._splitValueByDelimiter(value);\n if (dateStrings[1]) {\n const parsedDate = this.getFormat().parse(dateStrings[1], true) as Date;\n return parsedDate.getTime() / 1000;\n }\n\n return undefined;\n }\n\n /**\n * Returns a UTC timestamp, representing the first date in the value string or undefined if the value is empty\n * @private\n */\n _extractFirstTimestamp(value: string) {\n if (!value || !this._checkValueValidity(value)) {\n return undefined;\n }\n\n const dateStrings = this._splitValueByDelimiter(value); // at least one item guaranteed due to the checks above (non-empty and valid)\n\n const parsedDate = this.getFormat().parse(dateStrings[0], true) as Date;\n return parsedDate.getTime() / 1000;\n }\n\n /**\n * Checks if a value is valid against the current date format of the DatePicker.\n * @public\n * @param value A value to be tested against the current date format\n */\n isValid(value: string): boolean {\n if (value === \"\" || value === undefined) {\n return true;\n }\n\n return !!this.getFormat().parse(value);\n }\n\n isValidRange(value: string): boolean {\n const parts = this._splitValueByDelimiter(value);\n return parts.length <= 2 && parts.every(dateString => this.isValid(dateString)); // must be at most 2 dates and each must be valid\n }\n\n isInValidRange(value: string): boolean {\n if (value === \"\" || value === undefined) {\n return true;\n }\n\n const calendarDate = this._getCalendarDateFromString(value);\n\n if (!calendarDate || !this._minDate || !this._maxDate) {\n return false;\n }\n\n return calendarDate.valueOf() >= this._minDate.valueOf() && calendarDate.valueOf() <= this._maxDate.valueOf();\n }\n\n /**\n * Checks if a date is between the minimum and maximum date.\n * @public\n * @param value A value to be checked\n */\n isInValidRangeRange(value: string): boolean {\n return this._splitValueByDelimiter(value).every(dateString => this.isInValidRange(dateString));\n }\n\n _checkValueValidity(value: string): boolean {\n let result = false;\n if (value === \"\") {\n return true;\n }\n if (this.selectionMode === UDExDatePickerSelectionMode.Single) {\n result = this.isValid(value) && this.isInValidRange(value);\n }\n if (this.selectionMode === UDExDatePickerSelectionMode.Range) {\n result = this.isValidRange(value) && this.isInValidRangeRange(value);\n }\n return result;\n }\n\n /**\n * Builds a string value out of two UTC timestamps - this method is the counterpart to _extractFirstTimestamp/_extractLastTimestamp\n * @private\n */\n _buildValue(firstDateTimestamp: number | undefined, lastDateTimestamp: number | undefined) {\n this._prevDelimiter = this._effectiveDelimiter;\n if (firstDateTimestamp) {\n const firstDateString = this._getStringFromTimestamp(firstDateTimestamp * 1000);\n\n if (!lastDateTimestamp) {\n return firstDateString;\n }\n\n const lastDateString = this._getStringFromTimestamp(lastDateTimestamp * 1000);\n return `${firstDateString} ${this._effectiveDelimiter} ${lastDateString}`;\n }\n\n return \"\";\n }\n\n /**\n * The parser understands many formats, but we need one format OR extract both dates as timestamps, flip if necessary, and build (which will use the desired format so we enforce the format too)\n * @protected\n */\n normalizeValue(value: string) {\n let result = \"\";\n if (this.selectionMode === UDExDatePickerSelectionMode.Single) {\n if (value === \"\") {\n return value;\n }\n result = this.getFormat().format(this.getFormat().parse(value, true), true); // it is important to both parse and format the date as UTC\n }\n if (this.selectionMode === UDExDatePickerSelectionMode.Range) {\n const firstDateTimestamp = this._extractFirstTimestamp(value);\n const lastDateTimestamp = this._extractLastTimestamp(value);\n if (firstDateTimestamp && lastDateTimestamp && firstDateTimestamp > lastDateTimestamp) { // if both are timestamps (not undefined), flip if necessary\n return this._buildValue(lastDateTimestamp, firstDateTimestamp);\n }\n result = this._buildValue(firstDateTimestamp, lastDateTimestamp);\n }\n return result;\n }\n\n _updateValueState() {\n const valid = this._checkValueValidity(this.value);\n const previousValueState = this.valueState;\n\n this.valueState = valid ? ValueState.Standard : ValueState.Error;\n\n const eventPrevented = !this.fireEvent(\"value-state-change\", { valueState: this.valueState, valid });\n\n if (eventPrevented) {\n this.valueState = previousValueState;\n }\n }\n\n _buildEventData(value: string): DatePickerSelectionChangeEventDetail {\n if (this.selectionMode === UDExDatePickerSelectionMode.Range) {\n return {\n selectedDates: [this._extractFirstTimestamp(value), this._extractLastTimestamp(value)],\n selectedValues: this._splitValueByDelimiter(this.value),\n timestamp: this._extractLastTimestamp(value),\n };\n }\n return {\n selectedDates: [this._extractFirstTimestamp(value)],\n selectedValues: [value],\n timestamp: this._extractFirstTimestamp(value),\n };\n }\n\n _updateValueAndFireEvents(value: string, normalizeValue: boolean, e?: CustomEvent<CalendarSelectedDatesChangeEventDetail> | null) {\n const valid = this._checkValueValidity(value);\n\n if (valid && normalizeValue) {\n value = this.normalizeValue(value); // transform valid values (in any format) to the correct format\n }\n\n this.value = value;\n this._updateValueState(); // Change the value state to Error/None, but only if needed\n\n if (!valid) { return; }\n\n if (e) {\n const { dates, timestamp, values } = e.detail;\n\n this.fireEvent(\n \"selection-change\",\n {\n timestamp,\n selectedDates: [...dates],\n selectedValues: values,\n },\n true,\n );\n } else {\n this.fireEvent(\n \"selection-change\",\n this._buildEventData(value),\n true,\n );\n }\n }\n\n _onInputChange(e: Event) {\n this._updateValueAndFireEvents((e.target as UDExDatePicker).value, true);\n }\n\n handleInputClick(e: Event | KeyboardEvent): void {\n e.preventDefault();\n\n if (this.disabled || this.readonly) {\n return;\n }\n\n this.showCalendar();\n }\n\n /**\n * Used to provide selectedDates to the calendar based on the component's state\n * Override in derivatives to provide different rules for setting the calendar's selected dates\n * @protected\n */\n get _calendarSelectedDates(): Array<string> {\n if (this._tempValue) {\n return [this._tempValue];\n }\n\n if (this.value && this._checkValueValidity(this.value)) {\n return this.value.split(\" - \");\n }\n\n return [];\n }\n\n get accessibleIconName(): string {\n return UDExDatePicker.i18nBundle.getText(CALENDAR_ICON);\n }\n\n get dateAccessibleName(): string {\n return this.accessibleName || UDExDatePicker.i18nBundle.getText(DATEPICKER_DATE_DESCRIPTION);\n }\n}\n\nUDExDatePicker.define();\n\nexport default UDExDatePicker;\n"]}
|
package/dist/FilterMenu.d.ts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import "@ui5/webcomponents/dist/Icon.js";
|
|
2
1
|
import "@ui5/webcomponents-icons/dist/navigation-down-arrow.js";
|
|
3
2
|
import PopupAccessibleRole from "@ui5/webcomponents/dist/types/PopupAccessibleRole.js";
|
|
4
|
-
import
|
|
3
|
+
import Popover from "@ui5/webcomponents/dist/Popover.js";
|
|
5
4
|
import UDExSearch from "./Search.js";
|
|
6
5
|
import UDExButton from "./Button.js";
|
|
7
6
|
import UDExSearchableListBase from "./SearchableListBase.js";
|
|
@@ -149,8 +148,7 @@ declare class UDExFilterMenu extends UDExSearchableListBase {
|
|
|
149
148
|
triggerAccessibleRole: string;
|
|
150
149
|
_trigger: UDExButton;
|
|
151
150
|
_search: UDExSearch;
|
|
152
|
-
|
|
153
|
-
_popover: ResponsivePopover;
|
|
151
|
+
_popover: Popover;
|
|
154
152
|
_breakpointSizeXS: number;
|
|
155
153
|
onEnterDOM(): void;
|
|
156
154
|
onBeforeRendering(): void;
|
|
@@ -180,7 +178,7 @@ declare class UDExFilterMenu extends UDExSearchableListBase {
|
|
|
180
178
|
get hasFilterNamePrefix(): boolean;
|
|
181
179
|
get getResultLabelText(): string;
|
|
182
180
|
get getResetLabelText(): string;
|
|
183
|
-
get
|
|
181
|
+
get disabledButtons(): boolean;
|
|
184
182
|
get _iconAccessibleNameText(): string;
|
|
185
183
|
get triggerButtonAccessibleName(): string;
|
|
186
184
|
get searchableList(): object;
|
|
@@ -189,7 +187,7 @@ declare class UDExFilterMenu extends UDExSearchableListBase {
|
|
|
189
187
|
get hasResultBtn(): boolean;
|
|
190
188
|
get hasResetBtn(): boolean;
|
|
191
189
|
getTriggerButton(): UDExButton;
|
|
192
|
-
getPopover():
|
|
190
|
+
getPopover(): Popover;
|
|
193
191
|
getItems(): Array<UDExListItemBase>;
|
|
194
192
|
static get searchableListBaseTemplate(): typeof SearchableListBaseTemplate;
|
|
195
193
|
}
|