@ui5/webcomponents-fiori 2.9.0-rc.0 → 2.9.0-rc.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/CHANGELOG.md +44 -0
- package/cypress/specs/DynamicPage.cy.tsx +38 -0
- package/cypress/specs/Search.cy.tsx +817 -0
- package/cypress/specs/SearchField.cy.tsx +0 -4
- package/cypress/specs/ShellBar.cy.tsx +99 -4
- package/cypress/specs/SideNavigation.cy.tsx +52 -0
- package/cypress/specs/UserMenu.cy.tsx +66 -9
- package/dist/.tsbuildinfo +1 -1
- package/dist/DynamicPage.js +12 -0
- package/dist/DynamicPage.js.map +1 -1
- package/dist/NavigationMenuItem.d.ts +1 -1
- package/dist/NavigationMenuItem.js +1 -1
- package/dist/NavigationMenuItem.js.map +1 -1
- package/dist/NavigationMenuItemTemplate.d.ts +2 -2
- package/dist/NavigationMenuItemTemplate.js +2 -12
- package/dist/NavigationMenuItemTemplate.js.map +1 -1
- package/dist/Search.d.ts +175 -0
- package/dist/Search.js +420 -0
- package/dist/Search.js.map +1 -0
- package/dist/SearchField.d.ts +3 -1
- package/dist/SearchField.js +7 -2
- package/dist/SearchField.js.map +1 -1
- package/dist/SearchFieldScopeOption.d.ts +2 -0
- package/dist/SearchFieldScopeOption.js +2 -0
- package/dist/SearchFieldScopeOption.js.map +1 -1
- package/dist/SearchFieldTemplate.js +1 -1
- package/dist/SearchFieldTemplate.js.map +1 -1
- package/dist/SearchItem.d.ts +52 -0
- package/dist/SearchItem.js +106 -0
- package/dist/SearchItem.js.map +1 -0
- package/dist/SearchItemGroup.d.ts +17 -0
- package/dist/SearchItemGroup.js +39 -0
- package/dist/SearchItemGroup.js.map +1 -0
- package/dist/SearchItemTemplate.d.ts +2 -0
- package/dist/SearchItemTemplate.js +14 -0
- package/dist/SearchItemTemplate.js.map +1 -0
- package/dist/SearchPopoverTemplate.d.ts +2 -0
- package/dist/SearchPopoverTemplate.js +22 -0
- package/dist/SearchPopoverTemplate.js.map +1 -0
- package/dist/SearchTemplate.d.ts +2 -0
- package/dist/SearchTemplate.js +7 -0
- package/dist/SearchTemplate.js.map +1 -0
- package/dist/ShellBar.d.ts +7 -2
- package/dist/ShellBar.js +31 -23
- package/dist/ShellBar.js.map +1 -1
- package/dist/ShellBarItem.d.ts +24 -0
- package/dist/ShellBarItem.js +27 -0
- package/dist/ShellBarItem.js.map +1 -1
- package/dist/ShellBarPopoverTemplate.js +1 -1
- package/dist/ShellBarPopoverTemplate.js.map +1 -1
- package/dist/ShellBarTemplate.js +11 -7
- package/dist/ShellBarTemplate.js.map +1 -1
- package/dist/SideNavigation.d.ts +21 -0
- package/dist/SideNavigation.js +22 -0
- package/dist/SideNavigation.js.map +1 -1
- package/dist/SideNavigationGroup.js +3 -3
- package/dist/SideNavigationGroup.js.map +1 -1
- package/dist/SideNavigationItem.js +3 -3
- package/dist/SideNavigationItem.js.map +1 -1
- package/dist/SideNavigationTemplate.js +1 -1
- package/dist/SideNavigationTemplate.js.map +1 -1
- package/dist/UserMenu.d.ts +6 -2
- package/dist/UserMenu.js +17 -14
- package/dist/UserMenu.js.map +1 -1
- package/dist/UserMenuAccount.d.ts +7 -0
- package/dist/UserMenuAccount.js +10 -0
- package/dist/UserMenuAccount.js.map +1 -1
- package/dist/UserMenuTemplate.js +26 -19
- package/dist/UserMenuTemplate.js.map +1 -1
- package/dist/ViewSettingsDialog.d.ts +1 -0
- package/dist/ViewSettingsDialog.js +6 -1
- package/dist/ViewSettingsDialog.js.map +1 -1
- package/dist/ViewSettingsDialogTemplate.js +1 -1
- package/dist/ViewSettingsDialogTemplate.js.map +1 -1
- package/dist/bundle.esm.js +3 -0
- package/dist/bundle.esm.js.map +1 -1
- package/dist/css/themes/DynamicPage.css +1 -1
- package/dist/css/themes/DynamicPageHeader.css +1 -1
- package/dist/css/themes/DynamicPageHeaderActions.css +1 -1
- package/dist/css/themes/DynamicPageTitle.css +1 -1
- package/dist/css/themes/FlexibleColumnLayout.css +1 -1
- package/dist/css/themes/MediaGallery.css +1 -1
- package/dist/css/themes/MediaGalleryItem.css +1 -1
- package/dist/css/themes/NavigationMenu.css +1 -1
- package/dist/css/themes/NavigationMenuItem.css +1 -1
- package/dist/css/themes/NotificationListGroupItem.css +1 -1
- package/dist/css/themes/NotificationListItem.css +1 -1
- package/dist/css/themes/NotificationListItemBase.css +1 -1
- package/dist/css/themes/NotificationStateIcon.css +1 -1
- package/dist/css/themes/Page.css +1 -1
- package/dist/css/themes/ProductSwitchItem.css +1 -1
- package/dist/css/themes/Search.css +1 -0
- package/dist/css/themes/SearchField.css +1 -1
- package/dist/css/themes/SearchItem.css +1 -0
- package/dist/css/themes/SearchItemGroup.css +1 -0
- package/dist/css/themes/ShellBar.css +1 -1
- package/dist/css/themes/ShellBarPopover.css +1 -1
- package/dist/css/themes/SideNavigation.css +1 -1
- package/dist/css/themes/SideNavigationGroup.css +1 -1
- package/dist/css/themes/SideNavigationItem.css +1 -1
- package/dist/css/themes/SideNavigationItemBase.css +1 -1
- package/dist/css/themes/SideNavigationPopover.css +1 -1
- package/dist/css/themes/SideNavigationSubItem.css +1 -1
- package/dist/css/themes/Timeline.css +1 -1
- package/dist/css/themes/TimelineGroupItem.css +1 -1
- package/dist/css/themes/TimelineItem.css +1 -1
- package/dist/css/themes/UploadCollection.css +1 -1
- package/dist/css/themes/UploadCollectionItem.css +1 -1
- package/dist/css/themes/UserMenu.css +1 -1
- package/dist/css/themes/UserMenuItem.css +1 -1
- package/dist/css/themes/UserSettingsItem.css +1 -1
- package/dist/css/themes/ViewSettingsDialog.css +1 -1
- package/dist/css/themes/Wizard.css +1 -1
- package/dist/css/themes/WizardTab.css +1 -1
- package/dist/css/themes/sap_fiori_3/parameters-bundle.css +1 -1
- package/dist/css/themes/sap_fiori_3_dark/parameters-bundle.css +1 -1
- package/dist/css/themes/sap_fiori_3_hcb/parameters-bundle.css +1 -1
- package/dist/css/themes/sap_fiori_3_hcw/parameters-bundle.css +1 -1
- package/dist/css/themes/sap_horizon/parameters-bundle.css +1 -1
- package/dist/css/themes/sap_horizon_dark/parameters-bundle.css +1 -1
- package/dist/css/themes/sap_horizon_dark_exp/parameters-bundle.css +1 -1
- package/dist/css/themes/sap_horizon_exp/parameters-bundle.css +1 -1
- package/dist/css/themes/sap_horizon_hcb/parameters-bundle.css +1 -1
- package/dist/css/themes/sap_horizon_hcb_exp/parameters-bundle.css +1 -1
- package/dist/css/themes/sap_horizon_hcw/parameters-bundle.css +1 -1
- package/dist/css/themes/sap_horizon_hcw_exp/parameters-bundle.css +1 -1
- package/dist/custom-elements-internal.json +552 -0
- package/dist/custom-elements.json +479 -0
- package/dist/generated/assets/i18n/messagebundle_en.json +1 -1
- package/dist/generated/assets/i18n/messagebundle_en_US_saprigi.json +1 -1
- package/dist/generated/assets/themes/sap_fiori_3/parameters-bundle.css.json +1 -1
- package/dist/generated/assets/themes/sap_fiori_3_dark/parameters-bundle.css.json +1 -1
- package/dist/generated/assets/themes/sap_fiori_3_hcb/parameters-bundle.css.json +1 -1
- package/dist/generated/assets/themes/sap_fiori_3_hcw/parameters-bundle.css.json +1 -1
- package/dist/generated/assets/themes/sap_horizon/parameters-bundle.css.json +1 -1
- package/dist/generated/assets/themes/sap_horizon_dark/parameters-bundle.css.json +1 -1
- package/dist/generated/assets/themes/sap_horizon_dark_exp/parameters-bundle.css.json +1 -1
- package/dist/generated/assets/themes/sap_horizon_exp/parameters-bundle.css.json +1 -1
- package/dist/generated/assets/themes/sap_horizon_hcb/parameters-bundle.css.json +1 -1
- package/dist/generated/assets/themes/sap_horizon_hcb_exp/parameters-bundle.css.json +1 -1
- package/dist/generated/assets/themes/sap_horizon_hcw/parameters-bundle.css.json +1 -1
- package/dist/generated/assets/themes/sap_horizon_hcw_exp/parameters-bundle.css.json +1 -1
- package/dist/generated/i18n/i18n-defaults.d.ts +5 -1
- package/dist/generated/i18n/i18n-defaults.js +6 -2
- package/dist/generated/i18n/i18n-defaults.js.map +1 -1
- package/dist/generated/themes/DynamicPage.css.d.ts +1 -1
- package/dist/generated/themes/DynamicPage.css.js +1 -1
- package/dist/generated/themes/DynamicPage.css.js.map +1 -1
- package/dist/generated/themes/DynamicPageHeader.css.d.ts +1 -1
- package/dist/generated/themes/DynamicPageHeader.css.js +1 -1
- package/dist/generated/themes/DynamicPageHeader.css.js.map +1 -1
- package/dist/generated/themes/DynamicPageHeaderActions.css.d.ts +1 -1
- package/dist/generated/themes/DynamicPageHeaderActions.css.js +1 -1
- package/dist/generated/themes/DynamicPageHeaderActions.css.js.map +1 -1
- package/dist/generated/themes/DynamicPageTitle.css.d.ts +1 -1
- package/dist/generated/themes/DynamicPageTitle.css.js +1 -1
- package/dist/generated/themes/DynamicPageTitle.css.js.map +1 -1
- package/dist/generated/themes/FlexibleColumnLayout.css.d.ts +1 -1
- package/dist/generated/themes/FlexibleColumnLayout.css.js +1 -1
- package/dist/generated/themes/FlexibleColumnLayout.css.js.map +1 -1
- package/dist/generated/themes/MediaGallery.css.d.ts +1 -1
- package/dist/generated/themes/MediaGallery.css.js +1 -1
- package/dist/generated/themes/MediaGallery.css.js.map +1 -1
- package/dist/generated/themes/MediaGalleryItem.css.d.ts +1 -1
- package/dist/generated/themes/MediaGalleryItem.css.js +1 -1
- package/dist/generated/themes/MediaGalleryItem.css.js.map +1 -1
- package/dist/generated/themes/NavigationMenu.css.d.ts +1 -1
- package/dist/generated/themes/NavigationMenu.css.js +1 -1
- package/dist/generated/themes/NavigationMenu.css.js.map +1 -1
- package/dist/generated/themes/NavigationMenuItem.css.d.ts +1 -1
- package/dist/generated/themes/NavigationMenuItem.css.js +1 -1
- package/dist/generated/themes/NavigationMenuItem.css.js.map +1 -1
- package/dist/generated/themes/NotificationListGroupItem.css.d.ts +1 -1
- package/dist/generated/themes/NotificationListGroupItem.css.js +1 -1
- package/dist/generated/themes/NotificationListGroupItem.css.js.map +1 -1
- package/dist/generated/themes/NotificationListItem.css.d.ts +1 -1
- package/dist/generated/themes/NotificationListItem.css.js +1 -1
- package/dist/generated/themes/NotificationListItem.css.js.map +1 -1
- package/dist/generated/themes/NotificationListItemBase.css.d.ts +1 -1
- package/dist/generated/themes/NotificationListItemBase.css.js +1 -1
- package/dist/generated/themes/NotificationListItemBase.css.js.map +1 -1
- package/dist/generated/themes/NotificationStateIcon.css.d.ts +1 -1
- package/dist/generated/themes/NotificationStateIcon.css.js +1 -1
- package/dist/generated/themes/NotificationStateIcon.css.js.map +1 -1
- package/dist/generated/themes/Page.css.d.ts +1 -1
- package/dist/generated/themes/Page.css.js +1 -1
- package/dist/generated/themes/Page.css.js.map +1 -1
- package/dist/generated/themes/ProductSwitchItem.css.d.ts +1 -1
- package/dist/generated/themes/ProductSwitchItem.css.js +1 -1
- package/dist/generated/themes/ProductSwitchItem.css.js.map +1 -1
- package/dist/generated/themes/Search.css.d.ts +2 -0
- package/dist/generated/themes/Search.css.js +8 -0
- package/dist/generated/themes/Search.css.js.map +1 -0
- package/dist/generated/themes/SearchField.css.d.ts +1 -1
- package/dist/generated/themes/SearchField.css.js +1 -1
- package/dist/generated/themes/SearchField.css.js.map +1 -1
- package/dist/generated/themes/SearchItem.css.d.ts +2 -0
- package/dist/generated/themes/SearchItem.css.js +8 -0
- package/dist/generated/themes/SearchItem.css.js.map +1 -0
- package/dist/generated/themes/SearchItemGroup.css.d.ts +2 -0
- package/dist/generated/themes/SearchItemGroup.css.js +8 -0
- package/dist/generated/themes/SearchItemGroup.css.js.map +1 -0
- package/dist/generated/themes/ShellBar.css.d.ts +1 -1
- package/dist/generated/themes/ShellBar.css.js +1 -1
- package/dist/generated/themes/ShellBar.css.js.map +1 -1
- package/dist/generated/themes/ShellBarPopover.css.d.ts +1 -1
- package/dist/generated/themes/ShellBarPopover.css.js +1 -1
- package/dist/generated/themes/ShellBarPopover.css.js.map +1 -1
- package/dist/generated/themes/SideNavigation.css.d.ts +1 -1
- package/dist/generated/themes/SideNavigation.css.js +1 -1
- package/dist/generated/themes/SideNavigation.css.js.map +1 -1
- package/dist/generated/themes/SideNavigationGroup.css.d.ts +1 -1
- package/dist/generated/themes/SideNavigationGroup.css.js +1 -1
- package/dist/generated/themes/SideNavigationGroup.css.js.map +1 -1
- package/dist/generated/themes/SideNavigationItem.css.d.ts +1 -1
- package/dist/generated/themes/SideNavigationItem.css.js +1 -1
- package/dist/generated/themes/SideNavigationItem.css.js.map +1 -1
- package/dist/generated/themes/SideNavigationItemBase.css.d.ts +1 -1
- package/dist/generated/themes/SideNavigationItemBase.css.js +1 -1
- package/dist/generated/themes/SideNavigationItemBase.css.js.map +1 -1
- package/dist/generated/themes/SideNavigationPopover.css.d.ts +1 -1
- package/dist/generated/themes/SideNavigationPopover.css.js +1 -1
- package/dist/generated/themes/SideNavigationPopover.css.js.map +1 -1
- package/dist/generated/themes/SideNavigationSubItem.css.d.ts +1 -1
- package/dist/generated/themes/SideNavigationSubItem.css.js +1 -1
- package/dist/generated/themes/SideNavigationSubItem.css.js.map +1 -1
- package/dist/generated/themes/Timeline.css.d.ts +1 -1
- package/dist/generated/themes/Timeline.css.js +1 -1
- package/dist/generated/themes/Timeline.css.js.map +1 -1
- package/dist/generated/themes/TimelineGroupItem.css.d.ts +1 -1
- package/dist/generated/themes/TimelineGroupItem.css.js +1 -1
- package/dist/generated/themes/TimelineGroupItem.css.js.map +1 -1
- package/dist/generated/themes/TimelineItem.css.d.ts +1 -1
- package/dist/generated/themes/TimelineItem.css.js +1 -1
- package/dist/generated/themes/TimelineItem.css.js.map +1 -1
- package/dist/generated/themes/UploadCollection.css.d.ts +1 -1
- package/dist/generated/themes/UploadCollection.css.js +1 -1
- package/dist/generated/themes/UploadCollection.css.js.map +1 -1
- package/dist/generated/themes/UploadCollectionItem.css.d.ts +1 -1
- package/dist/generated/themes/UploadCollectionItem.css.js +1 -1
- package/dist/generated/themes/UploadCollectionItem.css.js.map +1 -1
- package/dist/generated/themes/UserMenu.css.d.ts +1 -1
- package/dist/generated/themes/UserMenu.css.js +1 -1
- package/dist/generated/themes/UserMenu.css.js.map +1 -1
- package/dist/generated/themes/UserMenuItem.css.d.ts +1 -1
- package/dist/generated/themes/UserMenuItem.css.js +1 -1
- package/dist/generated/themes/UserMenuItem.css.js.map +1 -1
- package/dist/generated/themes/UserSettingsItem.css.d.ts +1 -1
- package/dist/generated/themes/UserSettingsItem.css.js +1 -1
- package/dist/generated/themes/UserSettingsItem.css.js.map +1 -1
- package/dist/generated/themes/ViewSettingsDialog.css.d.ts +1 -1
- package/dist/generated/themes/ViewSettingsDialog.css.js +1 -1
- package/dist/generated/themes/ViewSettingsDialog.css.js.map +1 -1
- package/dist/generated/themes/Wizard.css.d.ts +1 -1
- package/dist/generated/themes/Wizard.css.js +1 -1
- package/dist/generated/themes/Wizard.css.js.map +1 -1
- package/dist/generated/themes/WizardTab.css.d.ts +1 -1
- package/dist/generated/themes/WizardTab.css.js +1 -1
- package/dist/generated/themes/WizardTab.css.js.map +1 -1
- package/dist/generated/themes/sap_fiori_3/parameters-bundle.css.d.ts +1 -1
- package/dist/generated/themes/sap_fiori_3/parameters-bundle.css.js +1 -1
- package/dist/generated/themes/sap_fiori_3/parameters-bundle.css.js.map +1 -1
- package/dist/generated/themes/sap_fiori_3_dark/parameters-bundle.css.d.ts +1 -1
- package/dist/generated/themes/sap_fiori_3_dark/parameters-bundle.css.js +1 -1
- package/dist/generated/themes/sap_fiori_3_dark/parameters-bundle.css.js.map +1 -1
- package/dist/generated/themes/sap_fiori_3_hcb/parameters-bundle.css.d.ts +1 -1
- package/dist/generated/themes/sap_fiori_3_hcb/parameters-bundle.css.js +1 -1
- package/dist/generated/themes/sap_fiori_3_hcb/parameters-bundle.css.js.map +1 -1
- package/dist/generated/themes/sap_fiori_3_hcw/parameters-bundle.css.d.ts +1 -1
- package/dist/generated/themes/sap_fiori_3_hcw/parameters-bundle.css.js +1 -1
- package/dist/generated/themes/sap_fiori_3_hcw/parameters-bundle.css.js.map +1 -1
- package/dist/generated/themes/sap_horizon/parameters-bundle.css.d.ts +1 -1
- package/dist/generated/themes/sap_horizon/parameters-bundle.css.js +1 -1
- package/dist/generated/themes/sap_horizon/parameters-bundle.css.js.map +1 -1
- package/dist/generated/themes/sap_horizon_dark/parameters-bundle.css.d.ts +1 -1
- package/dist/generated/themes/sap_horizon_dark/parameters-bundle.css.js +1 -1
- package/dist/generated/themes/sap_horizon_dark/parameters-bundle.css.js.map +1 -1
- package/dist/generated/themes/sap_horizon_dark_exp/parameters-bundle.css.d.ts +1 -1
- package/dist/generated/themes/sap_horizon_dark_exp/parameters-bundle.css.js +1 -1
- package/dist/generated/themes/sap_horizon_dark_exp/parameters-bundle.css.js.map +1 -1
- package/dist/generated/themes/sap_horizon_exp/parameters-bundle.css.d.ts +1 -1
- package/dist/generated/themes/sap_horizon_exp/parameters-bundle.css.js +1 -1
- package/dist/generated/themes/sap_horizon_exp/parameters-bundle.css.js.map +1 -1
- package/dist/generated/themes/sap_horizon_hcb/parameters-bundle.css.d.ts +1 -1
- package/dist/generated/themes/sap_horizon_hcb/parameters-bundle.css.js +1 -1
- package/dist/generated/themes/sap_horizon_hcb/parameters-bundle.css.js.map +1 -1
- package/dist/generated/themes/sap_horizon_hcb_exp/parameters-bundle.css.d.ts +1 -1
- package/dist/generated/themes/sap_horizon_hcb_exp/parameters-bundle.css.js +1 -1
- package/dist/generated/themes/sap_horizon_hcb_exp/parameters-bundle.css.js.map +1 -1
- package/dist/generated/themes/sap_horizon_hcw/parameters-bundle.css.d.ts +1 -1
- package/dist/generated/themes/sap_horizon_hcw/parameters-bundle.css.js +1 -1
- package/dist/generated/themes/sap_horizon_hcw/parameters-bundle.css.js.map +1 -1
- package/dist/generated/themes/sap_horizon_hcw_exp/parameters-bundle.css.d.ts +1 -1
- package/dist/generated/themes/sap_horizon_hcw_exp/parameters-bundle.css.js +1 -1
- package/dist/generated/themes/sap_horizon_hcw_exp/parameters-bundle.css.js.map +1 -1
- package/dist/types/SideNavigationDesign.d.ts +17 -0
- package/dist/types/SideNavigationDesign.js +19 -0
- package/dist/types/SideNavigationDesign.js.map +1 -0
- package/dist/vscode.html-custom-data.json +99 -0
- package/dist/web-types.json +240 -1
- package/package.json +7 -7
- package/src/NavigationMenuItemTemplate.tsx +3 -83
- package/src/SearchFieldTemplate.tsx +1 -1
- package/src/SearchItemTemplate.tsx +45 -0
- package/src/SearchPopoverTemplate.tsx +68 -0
- package/src/SearchTemplate.tsx +12 -0
- package/src/ShellBarPopoverTemplate.tsx +1 -0
- package/src/ShellBarTemplate.tsx +9 -6
- package/src/SideNavigationTemplate.tsx +1 -0
- package/src/UserMenuTemplate.tsx +104 -76
- package/src/ViewSettingsDialogTemplate.tsx +1 -0
- package/src/i18n/messagebundle.properties +13 -1
- package/src/i18n/messagebundle_en.properties +184 -1
- package/src/i18n/messagebundle_en_US_saprigi.properties +7 -1
- package/src/themes/NavigationMenu.css +5 -7
- package/src/themes/NavigationMenuItem.css +21 -6
- package/src/themes/Search.css +63 -0
- package/src/themes/SearchField.css +11 -10
- package/src/themes/SearchItem.css +59 -0
- package/src/themes/SearchItemGroup.css +13 -0
- package/src/themes/SideNavigation.css +10 -1
- package/src/themes/SideNavigationItem.css +5 -7
- package/src/themes/SideNavigationItemBase.css +6 -0
- package/src/themes/SideNavigationPopover.css +0 -4
- package/src/themes/SideNavigationSubItem.css +4 -1
- package/src/themes/UserMenu.css +97 -48
- package/src/themes/UserMenuItem.css +1 -0
- package/src/themes/base/SideNavigation-parameters.css +4 -13
- package/src/themes/sap_horizon/SideNavigation-parameters.css +5 -13
- package/src/themes/sap_horizon_dark/SideNavigation-parameters.css +5 -13
- package/src/themes/sap_horizon_hcb/SideNavigation-parameters.css +5 -12
- package/src/themes/sap_horizon_hcw/SideNavigation-parameters.css +5 -12
package/dist/Search.js
ADDED
|
@@ -0,0 +1,420 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
import property from "@ui5/webcomponents-base/dist/decorators/property.js";
|
|
8
|
+
import slot from "@ui5/webcomponents-base/dist/decorators/slot.js";
|
|
9
|
+
import event from "@ui5/webcomponents-base/dist/decorators/event-strict.js";
|
|
10
|
+
import customElement from "@ui5/webcomponents-base/dist/decorators/customElement.js";
|
|
11
|
+
import SearchPopupMode from "@ui5/webcomponents/dist/types/SearchPopupMode.js";
|
|
12
|
+
import { isUp, isDown, isEnter, isBackSpace, isDelete, isEscape, isTabNext, isPageUp, isPageDown, isHome, isEnd, isRight, isTabPrevious, } from "@ui5/webcomponents-base/dist/Keys.js";
|
|
13
|
+
import SearchTemplate from "./SearchTemplate.js";
|
|
14
|
+
import SearchCss from "./generated/themes/Search.css.js";
|
|
15
|
+
import SearchField from "./SearchField.js";
|
|
16
|
+
import { StartsWith, StartsWithPerTerm } from "@ui5/webcomponents/dist/Filters.js";
|
|
17
|
+
import { renderFinished } from "@ui5/webcomponents-base/dist/Render.js";
|
|
18
|
+
import jsxRenderer from "@ui5/webcomponents-base/dist/renderer/JsxRenderer.js";
|
|
19
|
+
/**
|
|
20
|
+
* @class
|
|
21
|
+
*
|
|
22
|
+
* ### Overview
|
|
23
|
+
*
|
|
24
|
+
* A `ui5-search` is an input with suggestions, used for user search.
|
|
25
|
+
*
|
|
26
|
+
* The `ui5-search` consists of several elements parts:
|
|
27
|
+
* - Scope - displays a select in the beggining of the component, used for filtering results by their scope.
|
|
28
|
+
* - Input field - for user input value
|
|
29
|
+
* - Clear button - gives the possibility for deleting the entered value
|
|
30
|
+
* - Search button - a primary button for performing search, when the user has entered a search term
|
|
31
|
+
* - Expand/Collapse button - when there is no search term, the search button behaves as an expand/collapse button for the `ui5-search` component
|
|
32
|
+
* - Suggestions - a list with available search suggestions
|
|
33
|
+
*
|
|
34
|
+
* ### ES6 Module Import
|
|
35
|
+
*
|
|
36
|
+
* `import "@ui5/webcomponents/fiori/dist/Search.js";`
|
|
37
|
+
*
|
|
38
|
+
* @constructor
|
|
39
|
+
* @extends SearchField
|
|
40
|
+
* @public
|
|
41
|
+
* @since 2.9.0
|
|
42
|
+
* @experimental
|
|
43
|
+
*/
|
|
44
|
+
let Search = class Search extends SearchField {
|
|
45
|
+
constructor() {
|
|
46
|
+
super();
|
|
47
|
+
/**
|
|
48
|
+
* Defines the visualisation mode of the search component.
|
|
49
|
+
*
|
|
50
|
+
* @default "List"
|
|
51
|
+
* @public
|
|
52
|
+
*/
|
|
53
|
+
this.popupMode = "List";
|
|
54
|
+
/**
|
|
55
|
+
* Defines whether the value will be autcompleted to match an item.
|
|
56
|
+
* @default false
|
|
57
|
+
* @public
|
|
58
|
+
*/
|
|
59
|
+
this.noTypeahead = false;
|
|
60
|
+
/**
|
|
61
|
+
* Defines the header text to be placed in the search suggestions popup.
|
|
62
|
+
* @public
|
|
63
|
+
*/
|
|
64
|
+
this.headerText = "";
|
|
65
|
+
/**
|
|
66
|
+
* Defines the subheader text to be placed in the search suggestions popup.
|
|
67
|
+
* @public
|
|
68
|
+
*/
|
|
69
|
+
this.subheaderText = "";
|
|
70
|
+
/**
|
|
71
|
+
* Defines whether the popup footer action button is shown.
|
|
72
|
+
* Note: The footer action button is displayed only when the `popupMode` is set to `List`.
|
|
73
|
+
* @default false
|
|
74
|
+
* @public
|
|
75
|
+
*/
|
|
76
|
+
this.showPopupAction = false;
|
|
77
|
+
/**
|
|
78
|
+
* Defines the popup footer action button text.
|
|
79
|
+
* @public
|
|
80
|
+
*/
|
|
81
|
+
this.popupActionText = "";
|
|
82
|
+
/**
|
|
83
|
+
* Indicates whether the items picker is open.
|
|
84
|
+
* @public
|
|
85
|
+
*/
|
|
86
|
+
this.open = false;
|
|
87
|
+
/**
|
|
88
|
+
* Defines the inner stored value of the component.
|
|
89
|
+
*
|
|
90
|
+
* **Note:** The property is updated upon typing.
|
|
91
|
+
* @default ""
|
|
92
|
+
* @private
|
|
93
|
+
*/
|
|
94
|
+
this._innerValue = "";
|
|
95
|
+
// The typed in value.
|
|
96
|
+
this._typedInValue = "";
|
|
97
|
+
this._matchedPerTerm = false;
|
|
98
|
+
this._openPickerOnInput = false;
|
|
99
|
+
}
|
|
100
|
+
onBeforeRendering() {
|
|
101
|
+
super.onBeforeRendering();
|
|
102
|
+
const innerInput = this.nativeInput;
|
|
103
|
+
const autoCompletedChars = innerInput && (innerInput.selectionEnd - innerInput.selectionStart);
|
|
104
|
+
// If there is already a selection the autocomplete has already been performed
|
|
105
|
+
if (this._shouldAutocomplete && !autoCompletedChars) {
|
|
106
|
+
const item = this._getFirstMatchingItem(this.value);
|
|
107
|
+
this._proposedItem = item;
|
|
108
|
+
if (item) {
|
|
109
|
+
this._handleTypeAhead(item);
|
|
110
|
+
this._deselectItems();
|
|
111
|
+
item.selected = true;
|
|
112
|
+
}
|
|
113
|
+
else {
|
|
114
|
+
this._typedInValue = this.value;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
else {
|
|
118
|
+
this._typedInValue = this.value;
|
|
119
|
+
}
|
|
120
|
+
this._flattenItems.forEach(item => {
|
|
121
|
+
item.highlightText = this._typedInValue;
|
|
122
|
+
});
|
|
123
|
+
this._shouldAutocomplete = false;
|
|
124
|
+
}
|
|
125
|
+
onAfterRendering() {
|
|
126
|
+
const innerInput = this.nativeInput;
|
|
127
|
+
if (this._performTextSelection && innerInput.value !== this._innerValue) {
|
|
128
|
+
innerInput.value = this._innerValue;
|
|
129
|
+
}
|
|
130
|
+
if (this._performTextSelection && this._typedInValue.length && this.value.length) {
|
|
131
|
+
innerInput.setSelectionRange(this._typedInValue.length, this.value.length);
|
|
132
|
+
}
|
|
133
|
+
this._performTextSelection = false;
|
|
134
|
+
this.style.setProperty("--search_width", `${this.getBoundingClientRect().width}px`);
|
|
135
|
+
}
|
|
136
|
+
_handleTypeAhead(item) {
|
|
137
|
+
const originalValue = item.headingText || "";
|
|
138
|
+
let displayValue = originalValue;
|
|
139
|
+
if (!originalValue.toLowerCase().startsWith(this.value.toLowerCase())) {
|
|
140
|
+
this._matchedPerTerm = true;
|
|
141
|
+
displayValue = `${this.value} - ${originalValue}`;
|
|
142
|
+
}
|
|
143
|
+
else {
|
|
144
|
+
this._matchedPerTerm = false;
|
|
145
|
+
}
|
|
146
|
+
this._typedInValue = this.value;
|
|
147
|
+
this._innerValue = displayValue;
|
|
148
|
+
this._performTextSelection = true;
|
|
149
|
+
this.value = displayValue;
|
|
150
|
+
}
|
|
151
|
+
_startsWithMatchingItems(str) {
|
|
152
|
+
return StartsWith(str, this._flattenItems.filter(item => !this._isGroupItem(item)), "headingText");
|
|
153
|
+
}
|
|
154
|
+
_startsWithPerTermMatchingItems(str) {
|
|
155
|
+
return StartsWithPerTerm(str, this._flattenItems.filter(item => !this._isGroupItem(item)), "headingText");
|
|
156
|
+
}
|
|
157
|
+
_isGroupItem(item) {
|
|
158
|
+
return item.hasAttribute("ui5-search-item-group");
|
|
159
|
+
}
|
|
160
|
+
_deselectItems() {
|
|
161
|
+
this._flattenItems.forEach(item => {
|
|
162
|
+
item.selected = false;
|
|
163
|
+
});
|
|
164
|
+
}
|
|
165
|
+
async _handleDown(e) {
|
|
166
|
+
if (this.open) {
|
|
167
|
+
e.preventDefault();
|
|
168
|
+
await this._handleArrowDown();
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
async _handleArrowDown() {
|
|
172
|
+
const firstListItem = this._getItemsList()?.getSlottedNodes("items")[0];
|
|
173
|
+
const focusRef = firstListItem && this._isGroupItem(firstListItem) ? firstListItem.getFocusDomRef() : firstListItem;
|
|
174
|
+
if (this.open) {
|
|
175
|
+
this._deselectItems();
|
|
176
|
+
firstListItem && focusRef && this._getItemsList()?._itemNavigation.setCurrentItem(focusRef);
|
|
177
|
+
this.value = this._typedInValue || this.value;
|
|
178
|
+
this._innerValue = this.value;
|
|
179
|
+
// wait item navigation to apply correct tabindex
|
|
180
|
+
await renderFinished();
|
|
181
|
+
firstListItem?.focus();
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
_handleRight(e) {
|
|
185
|
+
if (this._matchedPerTerm) {
|
|
186
|
+
e.preventDefault();
|
|
187
|
+
this.value = this._typedInValue;
|
|
188
|
+
this._innerValue = this._typedInValue;
|
|
189
|
+
this._proposedItem = undefined;
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
_handleEnter() {
|
|
193
|
+
const prevented = !this.fireDecoratorEvent("search", { item: this._proposedItem });
|
|
194
|
+
if (prevented) {
|
|
195
|
+
return;
|
|
196
|
+
}
|
|
197
|
+
const innerInput = this.nativeInput;
|
|
198
|
+
if (this._matchedPerTerm) {
|
|
199
|
+
this.value = this._proposedItem?.headingText || this.value;
|
|
200
|
+
this._innerValue = this.value;
|
|
201
|
+
this._typedInValue = this.value;
|
|
202
|
+
this._matchedPerTerm = false;
|
|
203
|
+
}
|
|
204
|
+
innerInput.setSelectionRange(this.value.length, this.value.length);
|
|
205
|
+
this.open = false;
|
|
206
|
+
this._openPickerOnInput = true;
|
|
207
|
+
}
|
|
208
|
+
_handleSearchEvent() {
|
|
209
|
+
this.fireDecoratorEvent("search", { item: this._proposedItem });
|
|
210
|
+
}
|
|
211
|
+
_handleEscape() {
|
|
212
|
+
this.value = this._typedInValue || this.value;
|
|
213
|
+
this._innerValue = this.value;
|
|
214
|
+
this._openPickerOnInput = true;
|
|
215
|
+
}
|
|
216
|
+
_handleInput(e) {
|
|
217
|
+
super._handleInput(e);
|
|
218
|
+
if (!this._openPickerOnInput) {
|
|
219
|
+
return;
|
|
220
|
+
}
|
|
221
|
+
this.open = true;
|
|
222
|
+
this._openPickerOnInput = false;
|
|
223
|
+
}
|
|
224
|
+
_onFooterButtonKeyDown(e) {
|
|
225
|
+
if (isUp(e)) {
|
|
226
|
+
this._flattenItems[this._flattenItems.length - 1].focus();
|
|
227
|
+
}
|
|
228
|
+
if (isTabPrevious(e)) {
|
|
229
|
+
this._getItemsList().focus();
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
_onItemKeydown(e) {
|
|
233
|
+
const isFirstItem = this._flattenItems[0] === e.target;
|
|
234
|
+
const isLastItem = this._flattenItems[this._flattenItems.length - 1] === e.target;
|
|
235
|
+
const isArrowUp = isUp(e);
|
|
236
|
+
const isArrowDown = isDown(e);
|
|
237
|
+
const isTab = isTabNext(e);
|
|
238
|
+
e.preventDefault();
|
|
239
|
+
if (isFirstItem && isArrowUp) {
|
|
240
|
+
this.nativeInput?.focus();
|
|
241
|
+
this._shouldAutocomplete = true;
|
|
242
|
+
}
|
|
243
|
+
if ((isLastItem && isArrowDown) || isTab) {
|
|
244
|
+
this._getFooterButton()?.focus();
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
_onItemClick(e) {
|
|
248
|
+
const item = e.detail.item;
|
|
249
|
+
const prevented = !this.fireDecoratorEvent("search", { item });
|
|
250
|
+
if (prevented) {
|
|
251
|
+
return;
|
|
252
|
+
}
|
|
253
|
+
this.value = item.headingText;
|
|
254
|
+
this._innerValue = this.value;
|
|
255
|
+
this._typedInValue = this.value;
|
|
256
|
+
this.open = false;
|
|
257
|
+
this._openPickerOnInput = true;
|
|
258
|
+
this.focus();
|
|
259
|
+
}
|
|
260
|
+
_onkeydown(e) {
|
|
261
|
+
super._onkeydown(e);
|
|
262
|
+
this._shouldAutocomplete = !this.noTypeahead
|
|
263
|
+
&& !(isBackSpace(e) || isDelete(e) || isEscape(e) || isUp(e) || isDown(e) || isTabNext(e) || isEnter(e) || isPageUp(e) || isPageDown(e) || isHome(e) || isEnd(e) || isEscape(e));
|
|
264
|
+
if (isRight(e)) {
|
|
265
|
+
this._handleRight(e);
|
|
266
|
+
}
|
|
267
|
+
if (isDown(e)) {
|
|
268
|
+
this._handleDown(e);
|
|
269
|
+
}
|
|
270
|
+
if (isEscape(e)) {
|
|
271
|
+
this._handleEscape();
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
_onfocusin() {
|
|
275
|
+
super._onfocusin();
|
|
276
|
+
if (this._openPickerOnInput) {
|
|
277
|
+
return;
|
|
278
|
+
}
|
|
279
|
+
// prevent opening of empty picker on List Mode
|
|
280
|
+
if (this.popupMode === SearchPopupMode.List && !this.items.length) {
|
|
281
|
+
return;
|
|
282
|
+
}
|
|
283
|
+
this.open = true;
|
|
284
|
+
}
|
|
285
|
+
_onfocusout() {
|
|
286
|
+
super._onfocusout();
|
|
287
|
+
if (this._matchedPerTerm) {
|
|
288
|
+
this.value = this._typedInValue;
|
|
289
|
+
this._innerValue = this._typedInValue;
|
|
290
|
+
}
|
|
291
|
+
this._matchedPerTerm = false;
|
|
292
|
+
}
|
|
293
|
+
_onFocusOutSearch() {
|
|
294
|
+
if (!this.matches(":focus-within")) {
|
|
295
|
+
this.open = false;
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
_handleClose() {
|
|
299
|
+
this.open = false;
|
|
300
|
+
this.fireDecoratorEvent("close");
|
|
301
|
+
}
|
|
302
|
+
_handleOpen() {
|
|
303
|
+
this.fireDecoratorEvent("open");
|
|
304
|
+
}
|
|
305
|
+
_onFooterButtonClick() {
|
|
306
|
+
this.fireDecoratorEvent("popup-action-press");
|
|
307
|
+
}
|
|
308
|
+
_getFirstMatchingItem(current) {
|
|
309
|
+
if (!this._flattenItems.length || !current) {
|
|
310
|
+
return;
|
|
311
|
+
}
|
|
312
|
+
const startsWithMatches = this._startsWithMatchingItems(current);
|
|
313
|
+
const partialMatches = this._startsWithPerTermMatchingItems(current);
|
|
314
|
+
if (!startsWithMatches.length) {
|
|
315
|
+
return partialMatches[0] ?? undefined;
|
|
316
|
+
}
|
|
317
|
+
if (!partialMatches.length) {
|
|
318
|
+
return startsWithMatches[0];
|
|
319
|
+
}
|
|
320
|
+
return this._flattenItems.indexOf(startsWithMatches[0]) <= this._flattenItems.indexOf(partialMatches[0])
|
|
321
|
+
? startsWithMatches[0]
|
|
322
|
+
: partialMatches[0];
|
|
323
|
+
}
|
|
324
|
+
_getPicker() {
|
|
325
|
+
return this.shadowRoot.querySelector("[ui5-responsive-popover]");
|
|
326
|
+
}
|
|
327
|
+
_getItemsList() {
|
|
328
|
+
return this._getPicker().querySelector(".ui5-search-list");
|
|
329
|
+
}
|
|
330
|
+
_getFooterButton() {
|
|
331
|
+
return this._getPicker().querySelector(".ui5-search-footer-button");
|
|
332
|
+
}
|
|
333
|
+
get _flattenItems() {
|
|
334
|
+
return this.getSlottedNodes("items").flatMap(item => {
|
|
335
|
+
return this._isGroupItem(item) ? [item, ...item.items] : [item];
|
|
336
|
+
});
|
|
337
|
+
}
|
|
338
|
+
get nativeInput() {
|
|
339
|
+
const domRef = this.getDomRef();
|
|
340
|
+
return domRef ? domRef.querySelector(`input`) : null;
|
|
341
|
+
}
|
|
342
|
+
get _showIllustration() {
|
|
343
|
+
return !!this.illustration && this.popupMode === SearchPopupMode.Illustration;
|
|
344
|
+
}
|
|
345
|
+
get _showLoading() {
|
|
346
|
+
return this.popupMode === SearchPopupMode.Loading;
|
|
347
|
+
}
|
|
348
|
+
get _showHeader() {
|
|
349
|
+
return !!this.headerText;
|
|
350
|
+
}
|
|
351
|
+
get _showFooter() {
|
|
352
|
+
return !!this.showPopupAction && this.popupMode === SearchPopupMode.List;
|
|
353
|
+
}
|
|
354
|
+
};
|
|
355
|
+
__decorate([
|
|
356
|
+
property()
|
|
357
|
+
], Search.prototype, "popupMode", void 0);
|
|
358
|
+
__decorate([
|
|
359
|
+
property({ type: Boolean })
|
|
360
|
+
], Search.prototype, "noTypeahead", void 0);
|
|
361
|
+
__decorate([
|
|
362
|
+
property()
|
|
363
|
+
], Search.prototype, "headerText", void 0);
|
|
364
|
+
__decorate([
|
|
365
|
+
property()
|
|
366
|
+
], Search.prototype, "subheaderText", void 0);
|
|
367
|
+
__decorate([
|
|
368
|
+
property({ type: Boolean })
|
|
369
|
+
], Search.prototype, "showPopupAction", void 0);
|
|
370
|
+
__decorate([
|
|
371
|
+
property()
|
|
372
|
+
], Search.prototype, "popupActionText", void 0);
|
|
373
|
+
__decorate([
|
|
374
|
+
slot({ type: HTMLElement, "default": true })
|
|
375
|
+
], Search.prototype, "items", void 0);
|
|
376
|
+
__decorate([
|
|
377
|
+
slot()
|
|
378
|
+
], Search.prototype, "illustration", void 0);
|
|
379
|
+
__decorate([
|
|
380
|
+
property({ type: Boolean })
|
|
381
|
+
], Search.prototype, "open", void 0);
|
|
382
|
+
__decorate([
|
|
383
|
+
property({ noAttribute: true })
|
|
384
|
+
], Search.prototype, "_innerValue", void 0);
|
|
385
|
+
Search = __decorate([
|
|
386
|
+
customElement({
|
|
387
|
+
tag: "ui5-search",
|
|
388
|
+
languageAware: true,
|
|
389
|
+
renderer: jsxRenderer,
|
|
390
|
+
template: SearchTemplate,
|
|
391
|
+
styles: [
|
|
392
|
+
SearchField.styles,
|
|
393
|
+
SearchCss,
|
|
394
|
+
],
|
|
395
|
+
})
|
|
396
|
+
/**
|
|
397
|
+
* Fired when load more button is pressed.
|
|
398
|
+
*
|
|
399
|
+
* @public
|
|
400
|
+
*/
|
|
401
|
+
,
|
|
402
|
+
event("popup-action-press")
|
|
403
|
+
/**
|
|
404
|
+
* Fired when the popup is opened.
|
|
405
|
+
*
|
|
406
|
+
* @public
|
|
407
|
+
*/
|
|
408
|
+
,
|
|
409
|
+
event("open")
|
|
410
|
+
/**
|
|
411
|
+
* Fired when the popup is closed.
|
|
412
|
+
*
|
|
413
|
+
* @public
|
|
414
|
+
*/
|
|
415
|
+
,
|
|
416
|
+
event("close")
|
|
417
|
+
], Search);
|
|
418
|
+
Search.define();
|
|
419
|
+
export default Search;
|
|
420
|
+
//# sourceMappingURL=Search.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Search.js","sourceRoot":"","sources":["../src/Search.ts"],"names":[],"mappings":"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","sourcesContent":["import property from \"@ui5/webcomponents-base/dist/decorators/property.js\";\nimport slot from \"@ui5/webcomponents-base/dist/decorators/slot.js\";\nimport event from \"@ui5/webcomponents-base/dist/decorators/event-strict.js\";\nimport customElement from \"@ui5/webcomponents-base/dist/decorators/customElement.js\";\nimport SearchPopupMode from \"@ui5/webcomponents/dist/types/SearchPopupMode.js\";\nimport type Popover from \"@ui5/webcomponents/dist/Popover.js\";\nimport type List from \"@ui5/webcomponents/dist/List.js\";\nimport {\n\tisUp,\n\tisDown,\n\tisEnter,\n\tisBackSpace,\n\tisDelete,\n\tisEscape,\n\tisTabNext,\n\tisPageUp,\n\tisPageDown,\n\tisHome,\n\tisEnd,\n\tisRight,\n\tisTabPrevious,\n} from \"@ui5/webcomponents-base/dist/Keys.js\";\n\nimport SearchTemplate from \"./SearchTemplate.js\";\nimport SearchCss from \"./generated/themes/Search.css.js\";\nimport SearchField from \"./SearchField.js\";\nimport { StartsWith, StartsWithPerTerm } from \"@ui5/webcomponents/dist/Filters.js\";\nimport type UI5Element from \"@ui5/webcomponents-base/dist/UI5Element.js\";\nimport type SearchItem from \"./SearchItem.js\";\nimport { renderFinished } from \"@ui5/webcomponents-base/dist/Render.js\";\nimport jsxRenderer from \"@ui5/webcomponents-base/dist/renderer/JsxRenderer.js\";\nimport type Button from \"@ui5/webcomponents/dist/Button.js\";\n\ninterface ISearchSuggestionItem extends UI5Element {\n\tselected: boolean;\n\theadingText: string;\n\titems?: ISearchSuggestionItem[];\n}\n\ntype SearchEventDetails = {\n\titem?: ISearchSuggestionItem;\n}\n\n/**\n * @class\n *\n * ### Overview\n *\n * A `ui5-search` is an input with suggestions, used for user search.\n *\n * The `ui5-search` consists of several elements parts:\n * - Scope - displays a select in the beggining of the component, used for filtering results by their scope.\n * - Input field - for user input value\n * - Clear button - gives the possibility for deleting the entered value\n * - Search button - a primary button for performing search, when the user has entered a search term\n * - Expand/Collapse button - when there is no search term, the search button behaves as an expand/collapse button for the `ui5-search` component\n * - Suggestions - a list with available search suggestions\n *\n * ### ES6 Module Import\n *\n * `import \"@ui5/webcomponents/fiori/dist/Search.js\";`\n *\n * @constructor\n * @extends SearchField\n * @public\n * @since 2.9.0\n * @experimental\n */\n@customElement({\n\ttag: \"ui5-search\",\n\tlanguageAware: true,\n\trenderer: jsxRenderer,\n\ttemplate: SearchTemplate,\n\tstyles: [\n\t\tSearchField.styles,\n\t\tSearchCss,\n\t],\n})\n\n/**\n * Fired when load more button is pressed.\n *\n * @public\n */\n@event(\"popup-action-press\")\n\n/**\n * Fired when the popup is opened.\n *\n * @public\n */\n@event(\"open\")\n\n/**\n * Fired when the popup is closed.\n *\n * @public\n */\n@event(\"close\")\n\nclass Search extends SearchField {\n\teventDetails!: SearchField[\"eventDetails\"] & {\n\t\tsearch: SearchEventDetails,\n\t\t\"popup-action-press\": void,\n\t\t\"open\": void,\n\t\t\"close\": void,\n\t};\n\t/**\n\t * Defines the visualisation mode of the search component.\n\t *\n\t * @default \"List\"\n\t * @public\n\t */\n\t@property()\n\tpopupMode: `${SearchPopupMode}` = \"List\";\n\n\t/**\n\t * Defines whether the value will be autcompleted to match an item.\n\t * @default false\n\t * @public\n\t */\n\t@property({ type: Boolean })\n\tnoTypeahead = false;\n\n\t/**\n\t * Defines the header text to be placed in the search suggestions popup.\n\t * @public\n\t */\n\t@property()\n\theaderText = \"\";\n\n\t/**\n\t * Defines the subheader text to be placed in the search suggestions popup.\n\t * @public\n\t */\n\t@property()\n\tsubheaderText = \"\";\n\n\t/**\n\t * Defines whether the popup footer action button is shown.\n\t * Note: The footer action button is displayed only when the `popupMode` is set to `List`.\n\t * @default false\n\t * @public\n\t */\n\t@property({ type: Boolean })\n\tshowPopupAction = false;\n\n\t/**\n\t * Defines the popup footer action button text.\n\t * @public\n\t */\n\t@property()\n\tpopupActionText = \"\";\n\n\t/**\n\t * Defines the Search suggestion items.\n\t *\n\t * @public\n\t */\n\t@slot({ type: HTMLElement, \"default\": true })\n\titems!: Array<SearchItem>;\n\n\t/**\n\t * Defines the illustrated message to be shown in the popup.\n\t *\n\t * @public\n\t */\n\t@slot()\n\tillustration!: HTMLElement;\n\n\t/**\n\t * Indicates whether the items picker is open.\n\t * @public\n\t */\n\t@property({ type: Boolean })\n\topen = false;\n\n\t/**\n\t * Defines the inner stored value of the component.\n\t *\n\t * **Note:** The property is updated upon typing.\n\t * @default \"\"\n\t * @private\n\t */\n\t@property({ noAttribute: true })\n\t_innerValue = \"\";\n\n\t/**\n\t * Based on the key pressed, determines if the autocomplete should be performed.\n\t * @private\n\t */\n\t_shouldAutocomplete?: boolean;\n\n\t/**\n\t * Determines whether a text selection should be performed.\n\t * @private\n\t */\n\t_performTextSelection?: boolean;\n\n\t/**\n\t * Determines whether the picker should open on user input. In some cases we need to close the picker,\n\t * (press on an item, or pressing Esc), but still focus the input. In this case we need to open the picker on input.\n\t * @private\n\t */\n\t_openPickerOnInput?: boolean;\n\n\t/**\n\t * Holds the typed value from the user.\n\t * @private\n\t */\n\t_typedInValue: string;\n\n\t/**\n\t * True if the first matching item is matched by starts with per term, rather than by starts with.\n\t * @private\n\t */\n\t_matchedPerTerm: boolean;\n\n\t/**\n\t * Holds the currently proposed item which will be selected if the user presses Enter.\n\t * @private\n\t */\n\t_proposedItem?: ISearchSuggestionItem;\n\n\tconstructor() {\n\t\tsuper();\n\n\t\t// The typed in value.\n\t\tthis._typedInValue = \"\";\n\t\tthis._matchedPerTerm = false;\n\t\tthis._openPickerOnInput = false;\n\t}\n\n\tonBeforeRendering() {\n\t\tsuper.onBeforeRendering();\n\n\t\tconst innerInput = this.nativeInput;\n\t\tconst autoCompletedChars = innerInput && (innerInput.selectionEnd! - innerInput.selectionStart!);\n\n\t\t// If there is already a selection the autocomplete has already been performed\n\t\tif (this._shouldAutocomplete && !autoCompletedChars) {\n\t\t\tconst item = this._getFirstMatchingItem(this.value);\n\t\t\tthis._proposedItem = item;\n\n\t\t\tif (item) {\n\t\t\t\tthis._handleTypeAhead(item);\n\t\t\t\tthis._deselectItems();\n\t\t\t\titem.selected = true;\n\t\t\t} else {\n\t\t\t\tthis._typedInValue = this.value;\n\t\t\t}\n\t\t} else {\n\t\t\tthis._typedInValue = this.value;\n\t\t}\n\n\t\tthis._flattenItems.forEach(item => {\n\t\t\t(item as SearchItem).highlightText = this._typedInValue;\n\t\t});\n\n\t\tthis._shouldAutocomplete = false;\n\t}\n\n\tonAfterRendering(): void {\n\t\tconst innerInput = this.nativeInput!;\n\n\t\tif (this._performTextSelection && innerInput.value !== this._innerValue) {\n\t\t\tinnerInput.value = this._innerValue;\n\t\t}\n\n\t\tif (this._performTextSelection && this._typedInValue.length && this.value.length) {\n\t\t\tinnerInput.setSelectionRange(this._typedInValue.length, this.value.length);\n\t\t}\n\n\t\tthis._performTextSelection = false;\n\n\t\tthis.style.setProperty(\"--search_width\", `${this.getBoundingClientRect().width}px`);\n\t}\n\n\t_handleTypeAhead(item: ISearchSuggestionItem) {\n\t\tconst originalValue = item.headingText || \"\";\n\t\tlet displayValue = originalValue;\n\n\t\tif (!originalValue.toLowerCase().startsWith(this.value.toLowerCase())) {\n\t\t\tthis._matchedPerTerm = true;\n\t\t\tdisplayValue = `${this.value} - ${originalValue}`;\n\t\t} else {\n\t\t\tthis._matchedPerTerm = false;\n\t\t}\n\n\t\tthis._typedInValue = this.value;\n\t\tthis._innerValue = displayValue;\n\t\tthis._performTextSelection = true;\n\t\tthis.value = displayValue;\n\t}\n\n\t_startsWithMatchingItems(str: string): Array<ISearchSuggestionItem> {\n\t\treturn StartsWith(str, this._flattenItems.filter(item => !this._isGroupItem(item)), \"headingText\");\n\t}\n\n\t_startsWithPerTermMatchingItems(str: string): Array<ISearchSuggestionItem> {\n\t\treturn StartsWithPerTerm(str, this._flattenItems.filter(item => !this._isGroupItem(item)), \"headingText\");\n\t}\n\n\t_isGroupItem(item: ISearchSuggestionItem) {\n\t\treturn item.hasAttribute(\"ui5-search-item-group\");\n\t}\n\n\t_deselectItems() {\n\t\tthis._flattenItems.forEach(item => {\n\t\t\titem.selected = false;\n\t\t});\n\t}\n\n\tasync _handleDown(e: KeyboardEvent) {\n\t\tif (this.open) {\n\t\t\te.preventDefault();\n\t\t\tawait this._handleArrowDown();\n\t\t}\n\t}\n\n\tasync _handleArrowDown() {\n\t\tconst firstListItem = this._getItemsList()?.getSlottedNodes<ISearchSuggestionItem>(\"items\")[0];\n\t\tconst focusRef = firstListItem && this._isGroupItem(firstListItem) ? firstListItem.getFocusDomRef() : firstListItem;\n\n\t\tif (this.open) {\n\t\t\tthis._deselectItems();\n\t\t\tfirstListItem && focusRef && this._getItemsList()?._itemNavigation.setCurrentItem(focusRef);\n\t\t\tthis.value = this._typedInValue || this.value;\n\t\t\tthis._innerValue = this.value;\n\n\t\t\t// wait item navigation to apply correct tabindex\n\t\t\tawait renderFinished();\n\t\t\tfirstListItem?.focus();\n\t\t}\n\t}\n\n\t_handleRight(e: KeyboardEvent) {\n\t\tif (this._matchedPerTerm) {\n\t\t\te.preventDefault();\n\t\t\tthis.value = this._typedInValue;\n\t\t\tthis._innerValue = this._typedInValue;\n\t\t\tthis._proposedItem = undefined;\n\t\t}\n\t}\n\n\t_handleEnter() {\n\t\tconst prevented = !this.fireDecoratorEvent(\"search\", { item: this._proposedItem });\n\n\t\tif (prevented) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst innerInput = this.nativeInput!;\n\t\tif (this._matchedPerTerm) {\n\t\t\tthis.value = this._proposedItem?.headingText || this.value;\n\t\t\tthis._innerValue = this.value;\n\t\t\tthis._typedInValue = this.value;\n\t\t\tthis._matchedPerTerm = false;\n\t\t}\n\n\t\tinnerInput.setSelectionRange(this.value.length, this.value.length);\n\t\tthis.open = false;\n\t\tthis._openPickerOnInput = true;\n\t}\n\n\t_handleSearchEvent() {\n\t\tthis.fireDecoratorEvent(\"search\", { item: this._proposedItem });\n\t}\n\n\t_handleEscape() {\n\t\tthis.value = this._typedInValue || this.value;\n\t\tthis._innerValue = this.value;\n\n\t\tthis._openPickerOnInput = true;\n\t}\n\n\t_handleInput(e: InputEvent) {\n\t\tsuper._handleInput(e);\n\n\t\tif (!this._openPickerOnInput) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.open = true;\n\t\tthis._openPickerOnInput = false;\n\t}\n\n\t_onFooterButtonKeyDown(e: KeyboardEvent) {\n\t\tif (isUp(e)) {\n\t\t\tthis._flattenItems[this._flattenItems.length - 1].focus();\n\t\t}\n\t\tif (isTabPrevious(e)) {\n\t\t\tthis._getItemsList().focus();\n\t\t}\n\t}\n\n\t_onItemKeydown(e: KeyboardEvent) {\n\t\tconst isFirstItem = this._flattenItems[0] === e.target;\n\t\tconst isLastItem = this._flattenItems[this._flattenItems.length - 1] === e.target;\n\t\tconst isArrowUp = isUp(e);\n\t\tconst isArrowDown = isDown(e);\n\t\tconst isTab = isTabNext(e);\n\n\t\te.preventDefault();\n\n\t\tif (isFirstItem && isArrowUp) {\n\t\t\tthis.nativeInput?.focus();\n\t\t\tthis._shouldAutocomplete = true;\n\t\t}\n\n\t\tif ((isLastItem && isArrowDown) || isTab) {\n\t\t\tthis._getFooterButton()?.focus();\n\t\t}\n\t}\n\n\t_onItemClick(e: CustomEvent) {\n\t\tconst item = e.detail.item as ISearchSuggestionItem;\n\t\tconst prevented = !this.fireDecoratorEvent(\"search\", { item });\n\n\t\tif (prevented) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.value = item.headingText;\n\t\tthis._innerValue = this.value;\n\t\tthis._typedInValue = this.value;\n\t\tthis.open = false;\n\t\tthis._openPickerOnInput = true;\n\t\tthis.focus();\n\t}\n\n\t_onkeydown(e: KeyboardEvent) {\n\t\tsuper._onkeydown(e);\n\t\tthis._shouldAutocomplete = !this.noTypeahead\n\t\t\t&& !(isBackSpace(e) || isDelete(e) || isEscape(e) || isUp(e) || isDown(e) || isTabNext(e) || isEnter(e) || isPageUp(e) || isPageDown(e) || isHome(e) || isEnd(e) || isEscape(e));\n\n\t\tif (isRight(e)) {\n\t\t\tthis._handleRight(e);\n\t\t}\n\n\t\tif (isDown(e)) {\n\t\t\tthis._handleDown(e);\n\t\t}\n\n\t\tif (isEscape(e)) {\n\t\t\tthis._handleEscape();\n\t\t}\n\t}\n\n\t_onfocusin() {\n\t\tsuper._onfocusin();\n\n\t\tif (this._openPickerOnInput) {\n\t\t\treturn;\n\t\t}\n\n\t\t// prevent opening of empty picker on List Mode\n\t\tif (this.popupMode === SearchPopupMode.List && !this.items.length) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.open = true;\n\t}\n\n\t_onfocusout() {\n\t\tsuper._onfocusout();\n\t\tif (this._matchedPerTerm) {\n\t\t\tthis.value = this._typedInValue;\n\t\t\tthis._innerValue = this._typedInValue;\n\t\t}\n\t\tthis._matchedPerTerm = false;\n\t}\n\n\t_onFocusOutSearch() {\n\t\tif (!this.matches(\":focus-within\")) {\n\t\t\tthis.open = false;\n\t\t}\n\t}\n\n\t_handleClose() {\n\t\tthis.open = false;\n\t\tthis.fireDecoratorEvent(\"close\");\n\t}\n\n\t_handleOpen() {\n\t\tthis.fireDecoratorEvent(\"open\");\n\t}\n\n\t_onFooterButtonClick() {\n\t\tthis.fireDecoratorEvent(\"popup-action-press\");\n\t}\n\n\t_getFirstMatchingItem(current: string): ISearchSuggestionItem | undefined {\n\t\tif (!this._flattenItems.length || !current) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst startsWithMatches = this._startsWithMatchingItems(current);\n\t\tconst partialMatches = this._startsWithPerTermMatchingItems(current);\n\n\t\tif (!startsWithMatches.length) {\n\t\t\treturn partialMatches[0] ?? undefined;\n\t\t}\n\n\t\tif (!partialMatches.length) {\n\t\t\treturn startsWithMatches[0];\n\t\t}\n\n\t\treturn this._flattenItems.indexOf(startsWithMatches[0]) <= this._flattenItems.indexOf(partialMatches[0])\n\t\t\t? startsWithMatches[0]\n\t\t\t: partialMatches[0];\n\t}\n\n\t_getPicker() {\n\t\treturn this.shadowRoot!.querySelector<Popover>(\"[ui5-responsive-popover]\")!;\n\t}\n\n\t_getItemsList(): List {\n\t\treturn this._getPicker().querySelector(\".ui5-search-list\") as List;\n\t}\n\n\t_getFooterButton(): Button {\n\t\treturn this._getPicker().querySelector(\".ui5-search-footer-button\") as Button;\n\t}\n\n\tget _flattenItems(): Array<ISearchSuggestionItem> {\n\t\treturn this.getSlottedNodes<ISearchSuggestionItem>(\"items\").flatMap(item => {\n\t\t\treturn this._isGroupItem(item) ? [item, ...item.items!] : [item];\n\t\t});\n\t}\n\n\tget nativeInput() {\n\t\tconst domRef = this.getDomRef();\n\n\t\treturn domRef ? domRef.querySelector<HTMLInputElement>(`input`) : null;\n\t}\n\n\tget _showIllustration() {\n\t\treturn !!this.illustration && this.popupMode === SearchPopupMode.Illustration;\n\t}\n\n\tget _showLoading() {\n\t\treturn this.popupMode === SearchPopupMode.Loading;\n\t}\n\n\tget _showHeader() {\n\t\treturn !!this.headerText;\n\t}\n\n\tget _showFooter() {\n\t\treturn !!this.showPopupAction && this.popupMode === SearchPopupMode.List;\n\t}\n}\n\nSearch.define();\n\nexport default Search;\n"]}
|
package/dist/SearchField.d.ts
CHANGED
|
@@ -38,7 +38,7 @@ type SearchFieldScopeSelectionChangeDetails = {
|
|
|
38
38
|
*/
|
|
39
39
|
declare class SearchField extends UI5Element {
|
|
40
40
|
eventDetails: {
|
|
41
|
-
search:
|
|
41
|
+
search: object;
|
|
42
42
|
input: void;
|
|
43
43
|
"scope-change": SearchFieldScopeSelectionChangeDetails;
|
|
44
44
|
};
|
|
@@ -107,8 +107,10 @@ declare class SearchField extends UI5Element {
|
|
|
107
107
|
_onkeydown(e: KeyboardEvent): void;
|
|
108
108
|
_onfocusin(): void;
|
|
109
109
|
_onfocusout(): void;
|
|
110
|
+
_onFocusOutSearch(): void;
|
|
110
111
|
_handleEnter(): void;
|
|
111
112
|
_handleSearchIconPress(): void;
|
|
113
|
+
_handleSearchEvent(): void;
|
|
112
114
|
_handleInput(e: InputEvent): void;
|
|
113
115
|
_handleClear(): void;
|
|
114
116
|
_handleScopeChange(e: CustomEvent<SelectChangeEventDetail>): void;
|
package/dist/SearchField.js
CHANGED
|
@@ -98,14 +98,15 @@ let SearchField = SearchField_1 = class SearchField extends UI5Element {
|
|
|
98
98
|
_onfocusout() {
|
|
99
99
|
this.focusedInnerInput = false;
|
|
100
100
|
}
|
|
101
|
+
_onFocusOutSearch() { }
|
|
101
102
|
_handleEnter() {
|
|
102
103
|
if (this.value.length) {
|
|
103
|
-
this.
|
|
104
|
+
this._handleSearchEvent();
|
|
104
105
|
}
|
|
105
106
|
}
|
|
106
107
|
_handleSearchIconPress() {
|
|
107
108
|
if (this.value.length) {
|
|
108
|
-
this.
|
|
109
|
+
this._handleSearchEvent();
|
|
109
110
|
return;
|
|
110
111
|
}
|
|
111
112
|
if (this.fixed) {
|
|
@@ -116,6 +117,9 @@ let SearchField = SearchField_1 = class SearchField extends UI5Element {
|
|
|
116
117
|
this.focus();
|
|
117
118
|
}, 0);
|
|
118
119
|
}
|
|
120
|
+
_handleSearchEvent() {
|
|
121
|
+
this.fireDecoratorEvent("search");
|
|
122
|
+
}
|
|
119
123
|
_handleInput(e) {
|
|
120
124
|
this.value = e.target.value;
|
|
121
125
|
this.fireDecoratorEvent("input");
|
|
@@ -221,6 +225,7 @@ SearchField = SearchField_1 = __decorate([
|
|
|
221
225
|
,
|
|
222
226
|
event("search", {
|
|
223
227
|
bubbles: true,
|
|
228
|
+
cancelable: true,
|
|
224
229
|
})
|
|
225
230
|
], SearchField);
|
|
226
231
|
SearchField.define();
|
package/dist/SearchField.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SearchField.js","sourceRoot":"","sources":["../src/SearchField.ts"],"names":[],"mappings":"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","sourcesContent":["import UI5Element from \"@ui5/webcomponents-base/dist/UI5Element.js\";\nimport property from \"@ui5/webcomponents-base/dist/decorators/property.js\";\nimport slot from \"@ui5/webcomponents-base/dist/decorators/slot.js\";\nimport event from \"@ui5/webcomponents-base/dist/decorators/event-strict.js\";\nimport customElement from \"@ui5/webcomponents-base/dist/decorators/customElement.js\";\nimport i18n from \"@ui5/webcomponents-base/dist/decorators/i18n.js\";\nimport SearchFieldTemplate from \"./SearchFieldTemplate.js\";\nimport SearchFieldCss from \"./generated/themes/SearchField.css.js\";\nimport type I18nBundle from \"@ui5/webcomponents-base/dist/i18nBundle.js\";\nimport type SearchMode from \"./types/SearchMode.js\";\nimport type { IOption, SelectChangeEventDetail } from \"@ui5/webcomponents/dist/Select.js\";\n\nimport {\n\tisEnter,\n} from \"@ui5/webcomponents-base/dist/Keys.js\";\nimport jsxRenderer from \"@ui5/webcomponents-base/dist/renderer/JsxRenderer.js\";\n\nimport {\n\tSEARCH_FIELD_SCOPE_SELECT_LABEL,\n\tSEARCH_FIELD_CLEAR_ICON,\n\tSEARCH_FIELD_SEARCH_ICON,\n\tSEARCH_FIELD_SEARCH_COLLAPSED,\n\tSEARCH_FIELD_SEARCH_EXPANDED,\n} from \"./generated/i18n/i18n-defaults.js\";\n\n/**\n * Interface for components that may be slotted inside a `ui5-search`\n * @public\n */\ninterface ISearchFieldScopeOption extends UI5Element {\n\ttext?: string,\n\tselected: boolean,\n\tstableDomRef: string,\n}\n\ntype SearchFieldScopeSelectionChangeDetails = {\n\tscope: ISearchFieldScopeOption | undefined;\n}\n\n/**\n * @class\n *\n * ### Overview\n *\n * A `ui5-search-field` is an input field, used for user search.\n *\n * The `ui5-search-field` consists of several elements parts:\n * - Scope - displays a select in the beggining of the component, used for filtering results by their scope.\n * - Input field - for user input value\n * - Clear button - gives the possibility for deleting the entered value\n * - Search button - a primary button for performing search, when the user has entered a search term\n * - Expand/Collapse button - when there is no search term, the search button behaves as an expand/collapse button for the `ui5-search-field` component\n *\n * ### ES6 Module Import\n *\n * `import \"@ui5/webcomponents/fiori/dist/SearchField.js\";`\n *\n * @constructor\n * @extends UI5Element\n * @private\n */\n@customElement({\n\ttag: \"ui5-search-field\",\n\tlanguageAware: true,\n\trenderer: jsxRenderer,\n\ttemplate: SearchFieldTemplate,\n\tstyles: [\n\t\tSearchFieldCss,\n\t],\n})\n\n/**\n * Fired when typing in input or clear icon is pressed.\n *\n * @public\n */\n@event(\"input\", {\n\tbubbles: true,\n})\n\n/**\n * Fired when the scope has changed.\n * @public\n * @param {HTMLElement} scope The newly selected scope\n */\n@event(\"scope-change\", {\n\tbubbles: true,\n})\n\n/**\n * Fired when the user has triggered search with Enter key or Search Button press.\n * @public\n */\n@event(\"search\", {\n\tbubbles: true,\n})\n\nclass SearchField extends UI5Element {\n\teventDetails!: {\n\t\tsearch: void,\n\t\tinput: void,\n\t\t\"scope-change\": SearchFieldScopeSelectionChangeDetails,\n\t}\n\n\t/**\n\t * Defines the mode of the component.\n\t * @default \"Default\"\n\t * @public\n\t */\n\t@property()\n\tmode: `${SearchMode}` = \"Default\";\n\n\t/**\n\t * Defines whether the clear icon of the search will be shown.\n\t * @default false\n\t * @public\n\t */\n\t@property({ type: Boolean })\n\tshowClearIcon = false;\n\n\t/**\n\t * Defines whether the component is expanded.\n\t *\n\t * @default false\n\t * @public\n\t */\n\t@property({ type: Boolean })\n\texpanded = false;\n\n\t/**\n\t * Determines whether the component is in a fixed state that is not\n\t * expandable/collapsible by user interaction.\n\t * @default false\n\t * @public\n\t */\n\t@property({ type: Boolean })\n\tfixed = false;\n\n\t/**\n\t * Defines the value of the component.\n\t *\n\t * **Note:** The property is updated upon typing.\n\t * @default \"\"\n\t * @public\n\t */\n\t@property()\n\tvalue = \"\";\n\n\t/**\n\t * Defines a short hint intended to aid the user with data entry when the\n\t * component has no value.\n\t * @default undefined\n\t * @public\n\t */\n\t@property()\n\tplaceholder?: string;\n\n\t/**\n\t * Defines the accessible ARIA name of the component.\n\t * @public\n\t * @default undefined\n\t */\n\t@property()\n\taccessibleName?: string;\n\n\t/**\n\t * Defines the component scope options.\n\t * @public\n\t */\n\t@slot({ type: HTMLElement, individualSlots: true, invalidateOnChildChange: true })\n\tscopeOptions!: Array<ISearchFieldScopeOption>;\n\n\t/**\n\t * @private\n\t */\n\t@property({ type: Boolean })\n\tfocusedInnerInput = false;\n\n\t/**\n\t * @private\n\t */\n\t@property({ type: Boolean })\n\t_effectiveShowClearIcon = false;\n\n\t@i18n(\"@ui5/webcomponents-fiori\")\n\tstatic i18nBundle: I18nBundle;\n\n\tonBeforeRendering() {\n\t\tthis._effectiveShowClearIcon = (this.showClearIcon && !!this.value);\n\t}\n\n\t_onkeydown(e:KeyboardEvent) {\n\t\tif (isEnter(e)) {\n\t\t\treturn this._handleEnter();\n\t\t}\n\t}\n\n\t_onfocusin() {\n\t\tthis.focusedInnerInput = true;\n\t}\n\n\t_onfocusout() {\n\t\tthis.focusedInnerInput = false;\n\t}\n\n\t_handleEnter() {\n\t\tif (this.value.length) {\n\t\t\tthis.fireDecoratorEvent(\"search\");\n\t\t}\n\t}\n\n\t_handleSearchIconPress() {\n\t\tif (this.value.length) {\n\t\t\tthis.fireDecoratorEvent(\"search\");\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.fixed) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.expanded = !this.expanded;\n\n\t\tsetTimeout(() => {\n\t\t\tthis.focus();\n\t\t}, 0);\n\t}\n\n\t_handleInput(e: InputEvent) {\n\t\tthis.value = (e.target as HTMLInputElement).value;\n\n\t\tthis.fireDecoratorEvent(\"input\");\n\t}\n\n\t_handleClear() {\n\t\tthis.value = \"\";\n\t\tthis.fireDecoratorEvent(\"input\");\n\n\t\tthis.focus();\n\t}\n\n\t_handleScopeChange(e: CustomEvent<SelectChangeEventDetail>) {\n\t\tconst item = e.detail.selectedOption as IOption & { scopeOption: ISearchFieldScopeOption };\n\t\tthis.fireDecoratorEvent(\"scope-change\", {\n\t\t\tscope: item.scopeOption,\n\t\t});\n\t}\n\n\tget _isSearchIcon() {\n\t\treturn this.value.length && this.focusedInnerInput;\n\t}\n\n\tget _searchButtonAccessibilityAttributes() {\n\t\treturn {\n\t\t\texpanded: this.expanded,\n\t\t};\n\t}\n\n\tget _translations() {\n\t\treturn {\n\t\t\tscope: SearchField.i18nBundle.getText(SEARCH_FIELD_SCOPE_SELECT_LABEL),\n\t\t\tclearIcon: SearchField.i18nBundle.getText(SEARCH_FIELD_CLEAR_ICON),\n\t\t\tsearchIcon: this._isSearchIcon ? SearchField.i18nBundle.getText(SEARCH_FIELD_SEARCH_ICON) : SearchField.i18nBundle.getText(SEARCH_FIELD_SEARCH_EXPANDED),\n\t\t\tcollapsedSearch: SearchField.i18nBundle.getText(SEARCH_FIELD_SEARCH_COLLAPSED),\n\t\t};\n\t}\n\n\tcaptureRef(ref: HTMLElement & { scopeOption?: UI5Element} | null) {\n\t\tif (ref) {\n\t\t\tref.scopeOption = this;\n\t\t}\n\t}\n}\n\nSearchField.define();\n\nexport default SearchField;\n\nexport type { ISearchFieldScopeOption, SearchFieldScopeSelectionChangeDetails };\n"]}
|
|
1
|
+
{"version":3,"file":"SearchField.js","sourceRoot":"","sources":["../src/SearchField.ts"],"names":[],"mappings":"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","sourcesContent":["import UI5Element from \"@ui5/webcomponents-base/dist/UI5Element.js\";\nimport property from \"@ui5/webcomponents-base/dist/decorators/property.js\";\nimport slot from \"@ui5/webcomponents-base/dist/decorators/slot.js\";\nimport event from \"@ui5/webcomponents-base/dist/decorators/event-strict.js\";\nimport customElement from \"@ui5/webcomponents-base/dist/decorators/customElement.js\";\nimport i18n from \"@ui5/webcomponents-base/dist/decorators/i18n.js\";\nimport SearchFieldTemplate from \"./SearchFieldTemplate.js\";\nimport SearchFieldCss from \"./generated/themes/SearchField.css.js\";\nimport type I18nBundle from \"@ui5/webcomponents-base/dist/i18nBundle.js\";\nimport type SearchMode from \"./types/SearchMode.js\";\nimport type { IOption, SelectChangeEventDetail } from \"@ui5/webcomponents/dist/Select.js\";\n\nimport {\n\tisEnter,\n} from \"@ui5/webcomponents-base/dist/Keys.js\";\nimport jsxRenderer from \"@ui5/webcomponents-base/dist/renderer/JsxRenderer.js\";\n\nimport {\n\tSEARCH_FIELD_SCOPE_SELECT_LABEL,\n\tSEARCH_FIELD_CLEAR_ICON,\n\tSEARCH_FIELD_SEARCH_ICON,\n\tSEARCH_FIELD_SEARCH_COLLAPSED,\n\tSEARCH_FIELD_SEARCH_EXPANDED,\n} from \"./generated/i18n/i18n-defaults.js\";\n\n/**\n * Interface for components that may be slotted inside a `ui5-search`\n * @public\n */\ninterface ISearchFieldScopeOption extends UI5Element {\n\ttext?: string,\n\tselected: boolean,\n\tstableDomRef: string,\n}\n\ntype SearchFieldScopeSelectionChangeDetails = {\n\tscope: ISearchFieldScopeOption | undefined;\n}\n\n/**\n * @class\n *\n * ### Overview\n *\n * A `ui5-search-field` is an input field, used for user search.\n *\n * The `ui5-search-field` consists of several elements parts:\n * - Scope - displays a select in the beggining of the component, used for filtering results by their scope.\n * - Input field - for user input value\n * - Clear button - gives the possibility for deleting the entered value\n * - Search button - a primary button for performing search, when the user has entered a search term\n * - Expand/Collapse button - when there is no search term, the search button behaves as an expand/collapse button for the `ui5-search-field` component\n *\n * ### ES6 Module Import\n *\n * `import \"@ui5/webcomponents/fiori/dist/SearchField.js\";`\n *\n * @constructor\n * @extends UI5Element\n * @private\n */\n@customElement({\n\ttag: \"ui5-search-field\",\n\tlanguageAware: true,\n\trenderer: jsxRenderer,\n\ttemplate: SearchFieldTemplate,\n\tstyles: [\n\t\tSearchFieldCss,\n\t],\n})\n\n/**\n * Fired when typing in input or clear icon is pressed.\n *\n * @public\n */\n@event(\"input\", {\n\tbubbles: true,\n})\n\n/**\n * Fired when the scope has changed.\n * @public\n * @param {HTMLElement} scope The newly selected scope\n */\n@event(\"scope-change\", {\n\tbubbles: true,\n})\n\n/**\n * Fired when the user has triggered search with Enter key or Search Button press.\n * @public\n */\n@event(\"search\", {\n\tbubbles: true,\n\tcancelable: true,\n})\n\nclass SearchField extends UI5Element {\n\teventDetails!: {\n\t\tsearch: object,\n\t\tinput: void,\n\t\t\"scope-change\": SearchFieldScopeSelectionChangeDetails,\n\t}\n\n\t/**\n\t * Defines the mode of the component.\n\t * @default \"Default\"\n\t * @public\n\t */\n\t@property()\n\tmode: `${SearchMode}` = \"Default\";\n\n\t/**\n\t * Defines whether the clear icon of the search will be shown.\n\t * @default false\n\t * @public\n\t */\n\t@property({ type: Boolean })\n\tshowClearIcon = false;\n\n\t/**\n\t * Defines whether the component is expanded.\n\t *\n\t * @default false\n\t * @public\n\t */\n\t@property({ type: Boolean })\n\texpanded = false;\n\n\t/**\n\t * Determines whether the component is in a fixed state that is not\n\t * expandable/collapsible by user interaction.\n\t * @default false\n\t * @public\n\t */\n\t@property({ type: Boolean })\n\tfixed = false;\n\n\t/**\n\t * Defines the value of the component.\n\t *\n\t * **Note:** The property is updated upon typing.\n\t * @default \"\"\n\t * @public\n\t */\n\t@property()\n\tvalue = \"\";\n\n\t/**\n\t * Defines a short hint intended to aid the user with data entry when the\n\t * component has no value.\n\t * @default undefined\n\t * @public\n\t */\n\t@property()\n\tplaceholder?: string;\n\n\t/**\n\t * Defines the accessible ARIA name of the component.\n\t * @public\n\t * @default undefined\n\t */\n\t@property()\n\taccessibleName?: string;\n\n\t/**\n\t * Defines the component scope options.\n\t * @public\n\t */\n\t@slot({ type: HTMLElement, individualSlots: true, invalidateOnChildChange: true })\n\tscopeOptions!: Array<ISearchFieldScopeOption>;\n\n\t/**\n\t * @private\n\t */\n\t@property({ type: Boolean })\n\tfocusedInnerInput = false;\n\n\t/**\n\t * @private\n\t */\n\t@property({ type: Boolean })\n\t_effectiveShowClearIcon = false;\n\n\t@i18n(\"@ui5/webcomponents-fiori\")\n\tstatic i18nBundle: I18nBundle;\n\n\tonBeforeRendering() {\n\t\tthis._effectiveShowClearIcon = (this.showClearIcon && !!this.value);\n\t}\n\n\t_onkeydown(e:KeyboardEvent) {\n\t\tif (isEnter(e)) {\n\t\t\treturn this._handleEnter();\n\t\t}\n\t}\n\n\t_onfocusin() {\n\t\tthis.focusedInnerInput = true;\n\t}\n\n\t_onfocusout() {\n\t\tthis.focusedInnerInput = false;\n\t}\n\n\t_onFocusOutSearch() {}\n\n\t_handleEnter() {\n\t\tif (this.value.length) {\n\t\t\tthis._handleSearchEvent();\n\t\t}\n\t}\n\n\t_handleSearchIconPress() {\n\t\tif (this.value.length) {\n\t\t\tthis._handleSearchEvent();\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.fixed) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.expanded = !this.expanded;\n\n\t\tsetTimeout(() => {\n\t\t\tthis.focus();\n\t\t}, 0);\n\t}\n\n\t_handleSearchEvent() {\n\t\tthis.fireDecoratorEvent(\"search\");\n\t}\n\n\t_handleInput(e: InputEvent) {\n\t\tthis.value = (e.target as HTMLInputElement).value;\n\n\t\tthis.fireDecoratorEvent(\"input\");\n\t}\n\n\t_handleClear() {\n\t\tthis.value = \"\";\n\t\tthis.fireDecoratorEvent(\"input\");\n\n\t\tthis.focus();\n\t}\n\n\t_handleScopeChange(e: CustomEvent<SelectChangeEventDetail>) {\n\t\tconst item = e.detail.selectedOption as IOption & { scopeOption: ISearchFieldScopeOption };\n\t\tthis.fireDecoratorEvent(\"scope-change\", {\n\t\t\tscope: item.scopeOption,\n\t\t});\n\t}\n\n\tget _isSearchIcon() {\n\t\treturn this.value.length && this.focusedInnerInput;\n\t}\n\n\tget _searchButtonAccessibilityAttributes() {\n\t\treturn {\n\t\t\texpanded: this.expanded,\n\t\t};\n\t}\n\n\tget _translations() {\n\t\treturn {\n\t\t\tscope: SearchField.i18nBundle.getText(SEARCH_FIELD_SCOPE_SELECT_LABEL),\n\t\t\tclearIcon: SearchField.i18nBundle.getText(SEARCH_FIELD_CLEAR_ICON),\n\t\t\tsearchIcon: this._isSearchIcon ? SearchField.i18nBundle.getText(SEARCH_FIELD_SEARCH_ICON) : SearchField.i18nBundle.getText(SEARCH_FIELD_SEARCH_EXPANDED),\n\t\t\tcollapsedSearch: SearchField.i18nBundle.getText(SEARCH_FIELD_SEARCH_COLLAPSED),\n\t\t};\n\t}\n\n\tcaptureRef(ref: HTMLElement & { scopeOption?: UI5Element} | null) {\n\t\tif (ref) {\n\t\t\tref.scopeOption = this;\n\t\t}\n\t}\n}\n\nSearchField.define();\n\nexport default SearchField;\n\nexport type { ISearchFieldScopeOption, SearchFieldScopeSelectionChangeDetails };\n"]}
|
|
@@ -8,6 +8,8 @@ import type { ISearchFieldScopeOption } from "./SearchField.js";
|
|
|
8
8
|
* @abstract
|
|
9
9
|
* @implements {ISearchFieldScopeOption}
|
|
10
10
|
* @public
|
|
11
|
+
* @since 2.9.0
|
|
12
|
+
* @experimental
|
|
11
13
|
*/
|
|
12
14
|
declare class SearchFieldScopeOption extends UI5Element implements ISearchFieldScopeOption {
|
|
13
15
|
/**
|
|
@@ -15,6 +15,8 @@ import UI5Element from "@ui5/webcomponents-base/dist/UI5Element.js";
|
|
|
15
15
|
* @abstract
|
|
16
16
|
* @implements {ISearchFieldScopeOption}
|
|
17
17
|
* @public
|
|
18
|
+
* @since 2.9.0
|
|
19
|
+
* @experimental
|
|
18
20
|
*/
|
|
19
21
|
let SearchFieldScopeOption = class SearchFieldScopeOption extends UI5Element {
|
|
20
22
|
get stableDomRef() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SearchFieldScopeOption.js","sourceRoot":"","sources":["../src/SearchFieldScopeOption.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,aAAa,MAAM,0DAA0D,CAAC;AACrF,OAAO,QAAQ,MAAM,qDAAqD,CAAC;AAC3E,OAAO,UAAU,MAAM,4CAA4C,CAAC;AAGpE
|
|
1
|
+
{"version":3,"file":"SearchFieldScopeOption.js","sourceRoot":"","sources":["../src/SearchFieldScopeOption.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,aAAa,MAAM,0DAA0D,CAAC;AACrF,OAAO,QAAQ,MAAM,qDAAqD,CAAC;AAC3E,OAAO,UAAU,MAAM,4CAA4C,CAAC;AAGpE;;;;;;;;;;GAUG;AAEH,IAAM,sBAAsB,GAA5B,MAAM,sBAAuB,SAAQ,UAAU;IAgB9C,IAAI,YAAY;QACf,OAAO,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,iBAAiB,CAAC;IAC5E,CAAC;CACD,CAAA;AAZA;IADC,QAAQ,EAAE;oDACG;AAOd;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;wDACT;AAdd,sBAAsB;IAD3B,aAAa,CAAC,+BAA+B,CAAC;GACzC,sBAAsB,CAmB3B;AAED,sBAAsB,CAAC,MAAM,EAAE,CAAC;AAEhC,eAAe,sBAAsB,CAAC","sourcesContent":["import customElement from \"@ui5/webcomponents-base/dist/decorators/customElement.js\";\nimport property from \"@ui5/webcomponents-base/dist/decorators/property.js\";\nimport UI5Element from \"@ui5/webcomponents-base/dist/UI5Element.js\";\nimport type { ISearchFieldScopeOption } from \"./SearchField.js\";\n\n/**\n * @class\n * The `ui5-search-scope-option` represents the options for the scope in `ui5-search`.\n * @constructor\n * @extends UI5Element\n * @abstract\n * @implements {ISearchFieldScopeOption}\n * @public\n * @since 2.9.0\n * @experimental\n */\n@customElement(\"ui5-search-field-scope-option\")\nclass SearchFieldScopeOption extends UI5Element implements ISearchFieldScopeOption {\n\t/**\n\t * Defines the text of the component.\n\t * @default \"\"\n\t * @public\n\t */\n\t@property()\n\ttext!: string;\n\n\t/**\n\t * Indicates whether the item is selected\n\t * @protected\n\t */\n\t@property({ type: Boolean })\n\tselected!: boolean;\n\n\tget stableDomRef() {\n\t\treturn this.getAttribute(\"stable-dom-ref\") || `${this._id}-stable-dom-ref`;\n\t}\n}\n\nSearchFieldScopeOption.define();\n\nexport default SearchFieldScopeOption;\n"]}
|
|
@@ -8,7 +8,7 @@ import decline from "@ui5/webcomponents-icons/dist/decline.js";
|
|
|
8
8
|
import search from "@ui5/webcomponents-icons/dist/search.js";
|
|
9
9
|
import ButtonDesign from "@ui5/webcomponents/dist/types/ButtonDesign.js";
|
|
10
10
|
export default function SearchFieldTemplate() {
|
|
11
|
-
return (this.expanded ? (_jsx("div", { class: "ui5-search-field-root", role: "search", children: _jsxs("div", { class: "ui5-search-field-content", children: [this.mode === SearchMode.Scoped &&
|
|
11
|
+
return (this.expanded ? (_jsx("div", { class: "ui5-search-field-root", role: "search", onFocusOut: this._onFocusOutSearch, children: _jsxs("div", { class: "ui5-search-field-content", children: [this.mode === SearchMode.Scoped &&
|
|
12
12
|
_jsxs(_Fragment, { children: [_jsx(Select, { onChange: this._handleScopeChange, class: "sapUiSizeCompact", accessibleName: this._translations.scope, tooltip: this._translations.scope, children: this.scopeOptions.map(scopeOption => {
|
|
13
13
|
return _jsx(Option, { selected: scopeOption.selected, "data-ui5-stable": scopeOption.stableDomRef, ref: this.captureRef.bind(scopeOption), children: scopeOption.text });
|
|
14
14
|
}, this) }), _jsx("div", { class: "ui5-search-field-separator" })] }), _jsx("input", { class: "ui5-search-field-inner-input", role: "searchbox", "aria-label": this.accessibleName, value: this.value, placeholder: this.placeholder, "data-sap-focus-ref": true, onInput: this._handleInput, onFocusIn: this._onfocusin, onFocusOut: this._onfocusout, onKeyDown: this._onkeydown }), this._effectiveShowClearIcon &&
|