@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.
Files changed (332) hide show
  1. package/CHANGELOG.md +44 -0
  2. package/cypress/specs/DynamicPage.cy.tsx +38 -0
  3. package/cypress/specs/Search.cy.tsx +817 -0
  4. package/cypress/specs/SearchField.cy.tsx +0 -4
  5. package/cypress/specs/ShellBar.cy.tsx +99 -4
  6. package/cypress/specs/SideNavigation.cy.tsx +52 -0
  7. package/cypress/specs/UserMenu.cy.tsx +66 -9
  8. package/dist/.tsbuildinfo +1 -1
  9. package/dist/DynamicPage.js +12 -0
  10. package/dist/DynamicPage.js.map +1 -1
  11. package/dist/NavigationMenuItem.d.ts +1 -1
  12. package/dist/NavigationMenuItem.js +1 -1
  13. package/dist/NavigationMenuItem.js.map +1 -1
  14. package/dist/NavigationMenuItemTemplate.d.ts +2 -2
  15. package/dist/NavigationMenuItemTemplate.js +2 -12
  16. package/dist/NavigationMenuItemTemplate.js.map +1 -1
  17. package/dist/Search.d.ts +175 -0
  18. package/dist/Search.js +420 -0
  19. package/dist/Search.js.map +1 -0
  20. package/dist/SearchField.d.ts +3 -1
  21. package/dist/SearchField.js +7 -2
  22. package/dist/SearchField.js.map +1 -1
  23. package/dist/SearchFieldScopeOption.d.ts +2 -0
  24. package/dist/SearchFieldScopeOption.js +2 -0
  25. package/dist/SearchFieldScopeOption.js.map +1 -1
  26. package/dist/SearchFieldTemplate.js +1 -1
  27. package/dist/SearchFieldTemplate.js.map +1 -1
  28. package/dist/SearchItem.d.ts +52 -0
  29. package/dist/SearchItem.js +106 -0
  30. package/dist/SearchItem.js.map +1 -0
  31. package/dist/SearchItemGroup.d.ts +17 -0
  32. package/dist/SearchItemGroup.js +39 -0
  33. package/dist/SearchItemGroup.js.map +1 -0
  34. package/dist/SearchItemTemplate.d.ts +2 -0
  35. package/dist/SearchItemTemplate.js +14 -0
  36. package/dist/SearchItemTemplate.js.map +1 -0
  37. package/dist/SearchPopoverTemplate.d.ts +2 -0
  38. package/dist/SearchPopoverTemplate.js +22 -0
  39. package/dist/SearchPopoverTemplate.js.map +1 -0
  40. package/dist/SearchTemplate.d.ts +2 -0
  41. package/dist/SearchTemplate.js +7 -0
  42. package/dist/SearchTemplate.js.map +1 -0
  43. package/dist/ShellBar.d.ts +7 -2
  44. package/dist/ShellBar.js +31 -23
  45. package/dist/ShellBar.js.map +1 -1
  46. package/dist/ShellBarItem.d.ts +24 -0
  47. package/dist/ShellBarItem.js +27 -0
  48. package/dist/ShellBarItem.js.map +1 -1
  49. package/dist/ShellBarPopoverTemplate.js +1 -1
  50. package/dist/ShellBarPopoverTemplate.js.map +1 -1
  51. package/dist/ShellBarTemplate.js +11 -7
  52. package/dist/ShellBarTemplate.js.map +1 -1
  53. package/dist/SideNavigation.d.ts +21 -0
  54. package/dist/SideNavigation.js +22 -0
  55. package/dist/SideNavigation.js.map +1 -1
  56. package/dist/SideNavigationGroup.js +3 -3
  57. package/dist/SideNavigationGroup.js.map +1 -1
  58. package/dist/SideNavigationItem.js +3 -3
  59. package/dist/SideNavigationItem.js.map +1 -1
  60. package/dist/SideNavigationTemplate.js +1 -1
  61. package/dist/SideNavigationTemplate.js.map +1 -1
  62. package/dist/UserMenu.d.ts +6 -2
  63. package/dist/UserMenu.js +17 -14
  64. package/dist/UserMenu.js.map +1 -1
  65. package/dist/UserMenuAccount.d.ts +7 -0
  66. package/dist/UserMenuAccount.js +10 -0
  67. package/dist/UserMenuAccount.js.map +1 -1
  68. package/dist/UserMenuTemplate.js +26 -19
  69. package/dist/UserMenuTemplate.js.map +1 -1
  70. package/dist/ViewSettingsDialog.d.ts +1 -0
  71. package/dist/ViewSettingsDialog.js +6 -1
  72. package/dist/ViewSettingsDialog.js.map +1 -1
  73. package/dist/ViewSettingsDialogTemplate.js +1 -1
  74. package/dist/ViewSettingsDialogTemplate.js.map +1 -1
  75. package/dist/bundle.esm.js +3 -0
  76. package/dist/bundle.esm.js.map +1 -1
  77. package/dist/css/themes/DynamicPage.css +1 -1
  78. package/dist/css/themes/DynamicPageHeader.css +1 -1
  79. package/dist/css/themes/DynamicPageHeaderActions.css +1 -1
  80. package/dist/css/themes/DynamicPageTitle.css +1 -1
  81. package/dist/css/themes/FlexibleColumnLayout.css +1 -1
  82. package/dist/css/themes/MediaGallery.css +1 -1
  83. package/dist/css/themes/MediaGalleryItem.css +1 -1
  84. package/dist/css/themes/NavigationMenu.css +1 -1
  85. package/dist/css/themes/NavigationMenuItem.css +1 -1
  86. package/dist/css/themes/NotificationListGroupItem.css +1 -1
  87. package/dist/css/themes/NotificationListItem.css +1 -1
  88. package/dist/css/themes/NotificationListItemBase.css +1 -1
  89. package/dist/css/themes/NotificationStateIcon.css +1 -1
  90. package/dist/css/themes/Page.css +1 -1
  91. package/dist/css/themes/ProductSwitchItem.css +1 -1
  92. package/dist/css/themes/Search.css +1 -0
  93. package/dist/css/themes/SearchField.css +1 -1
  94. package/dist/css/themes/SearchItem.css +1 -0
  95. package/dist/css/themes/SearchItemGroup.css +1 -0
  96. package/dist/css/themes/ShellBar.css +1 -1
  97. package/dist/css/themes/ShellBarPopover.css +1 -1
  98. package/dist/css/themes/SideNavigation.css +1 -1
  99. package/dist/css/themes/SideNavigationGroup.css +1 -1
  100. package/dist/css/themes/SideNavigationItem.css +1 -1
  101. package/dist/css/themes/SideNavigationItemBase.css +1 -1
  102. package/dist/css/themes/SideNavigationPopover.css +1 -1
  103. package/dist/css/themes/SideNavigationSubItem.css +1 -1
  104. package/dist/css/themes/Timeline.css +1 -1
  105. package/dist/css/themes/TimelineGroupItem.css +1 -1
  106. package/dist/css/themes/TimelineItem.css +1 -1
  107. package/dist/css/themes/UploadCollection.css +1 -1
  108. package/dist/css/themes/UploadCollectionItem.css +1 -1
  109. package/dist/css/themes/UserMenu.css +1 -1
  110. package/dist/css/themes/UserMenuItem.css +1 -1
  111. package/dist/css/themes/UserSettingsItem.css +1 -1
  112. package/dist/css/themes/ViewSettingsDialog.css +1 -1
  113. package/dist/css/themes/Wizard.css +1 -1
  114. package/dist/css/themes/WizardTab.css +1 -1
  115. package/dist/css/themes/sap_fiori_3/parameters-bundle.css +1 -1
  116. package/dist/css/themes/sap_fiori_3_dark/parameters-bundle.css +1 -1
  117. package/dist/css/themes/sap_fiori_3_hcb/parameters-bundle.css +1 -1
  118. package/dist/css/themes/sap_fiori_3_hcw/parameters-bundle.css +1 -1
  119. package/dist/css/themes/sap_horizon/parameters-bundle.css +1 -1
  120. package/dist/css/themes/sap_horizon_dark/parameters-bundle.css +1 -1
  121. package/dist/css/themes/sap_horizon_dark_exp/parameters-bundle.css +1 -1
  122. package/dist/css/themes/sap_horizon_exp/parameters-bundle.css +1 -1
  123. package/dist/css/themes/sap_horizon_hcb/parameters-bundle.css +1 -1
  124. package/dist/css/themes/sap_horizon_hcb_exp/parameters-bundle.css +1 -1
  125. package/dist/css/themes/sap_horizon_hcw/parameters-bundle.css +1 -1
  126. package/dist/css/themes/sap_horizon_hcw_exp/parameters-bundle.css +1 -1
  127. package/dist/custom-elements-internal.json +552 -0
  128. package/dist/custom-elements.json +479 -0
  129. package/dist/generated/assets/i18n/messagebundle_en.json +1 -1
  130. package/dist/generated/assets/i18n/messagebundle_en_US_saprigi.json +1 -1
  131. package/dist/generated/assets/themes/sap_fiori_3/parameters-bundle.css.json +1 -1
  132. package/dist/generated/assets/themes/sap_fiori_3_dark/parameters-bundle.css.json +1 -1
  133. package/dist/generated/assets/themes/sap_fiori_3_hcb/parameters-bundle.css.json +1 -1
  134. package/dist/generated/assets/themes/sap_fiori_3_hcw/parameters-bundle.css.json +1 -1
  135. package/dist/generated/assets/themes/sap_horizon/parameters-bundle.css.json +1 -1
  136. package/dist/generated/assets/themes/sap_horizon_dark/parameters-bundle.css.json +1 -1
  137. package/dist/generated/assets/themes/sap_horizon_dark_exp/parameters-bundle.css.json +1 -1
  138. package/dist/generated/assets/themes/sap_horizon_exp/parameters-bundle.css.json +1 -1
  139. package/dist/generated/assets/themes/sap_horizon_hcb/parameters-bundle.css.json +1 -1
  140. package/dist/generated/assets/themes/sap_horizon_hcb_exp/parameters-bundle.css.json +1 -1
  141. package/dist/generated/assets/themes/sap_horizon_hcw/parameters-bundle.css.json +1 -1
  142. package/dist/generated/assets/themes/sap_horizon_hcw_exp/parameters-bundle.css.json +1 -1
  143. package/dist/generated/i18n/i18n-defaults.d.ts +5 -1
  144. package/dist/generated/i18n/i18n-defaults.js +6 -2
  145. package/dist/generated/i18n/i18n-defaults.js.map +1 -1
  146. package/dist/generated/themes/DynamicPage.css.d.ts +1 -1
  147. package/dist/generated/themes/DynamicPage.css.js +1 -1
  148. package/dist/generated/themes/DynamicPage.css.js.map +1 -1
  149. package/dist/generated/themes/DynamicPageHeader.css.d.ts +1 -1
  150. package/dist/generated/themes/DynamicPageHeader.css.js +1 -1
  151. package/dist/generated/themes/DynamicPageHeader.css.js.map +1 -1
  152. package/dist/generated/themes/DynamicPageHeaderActions.css.d.ts +1 -1
  153. package/dist/generated/themes/DynamicPageHeaderActions.css.js +1 -1
  154. package/dist/generated/themes/DynamicPageHeaderActions.css.js.map +1 -1
  155. package/dist/generated/themes/DynamicPageTitle.css.d.ts +1 -1
  156. package/dist/generated/themes/DynamicPageTitle.css.js +1 -1
  157. package/dist/generated/themes/DynamicPageTitle.css.js.map +1 -1
  158. package/dist/generated/themes/FlexibleColumnLayout.css.d.ts +1 -1
  159. package/dist/generated/themes/FlexibleColumnLayout.css.js +1 -1
  160. package/dist/generated/themes/FlexibleColumnLayout.css.js.map +1 -1
  161. package/dist/generated/themes/MediaGallery.css.d.ts +1 -1
  162. package/dist/generated/themes/MediaGallery.css.js +1 -1
  163. package/dist/generated/themes/MediaGallery.css.js.map +1 -1
  164. package/dist/generated/themes/MediaGalleryItem.css.d.ts +1 -1
  165. package/dist/generated/themes/MediaGalleryItem.css.js +1 -1
  166. package/dist/generated/themes/MediaGalleryItem.css.js.map +1 -1
  167. package/dist/generated/themes/NavigationMenu.css.d.ts +1 -1
  168. package/dist/generated/themes/NavigationMenu.css.js +1 -1
  169. package/dist/generated/themes/NavigationMenu.css.js.map +1 -1
  170. package/dist/generated/themes/NavigationMenuItem.css.d.ts +1 -1
  171. package/dist/generated/themes/NavigationMenuItem.css.js +1 -1
  172. package/dist/generated/themes/NavigationMenuItem.css.js.map +1 -1
  173. package/dist/generated/themes/NotificationListGroupItem.css.d.ts +1 -1
  174. package/dist/generated/themes/NotificationListGroupItem.css.js +1 -1
  175. package/dist/generated/themes/NotificationListGroupItem.css.js.map +1 -1
  176. package/dist/generated/themes/NotificationListItem.css.d.ts +1 -1
  177. package/dist/generated/themes/NotificationListItem.css.js +1 -1
  178. package/dist/generated/themes/NotificationListItem.css.js.map +1 -1
  179. package/dist/generated/themes/NotificationListItemBase.css.d.ts +1 -1
  180. package/dist/generated/themes/NotificationListItemBase.css.js +1 -1
  181. package/dist/generated/themes/NotificationListItemBase.css.js.map +1 -1
  182. package/dist/generated/themes/NotificationStateIcon.css.d.ts +1 -1
  183. package/dist/generated/themes/NotificationStateIcon.css.js +1 -1
  184. package/dist/generated/themes/NotificationStateIcon.css.js.map +1 -1
  185. package/dist/generated/themes/Page.css.d.ts +1 -1
  186. package/dist/generated/themes/Page.css.js +1 -1
  187. package/dist/generated/themes/Page.css.js.map +1 -1
  188. package/dist/generated/themes/ProductSwitchItem.css.d.ts +1 -1
  189. package/dist/generated/themes/ProductSwitchItem.css.js +1 -1
  190. package/dist/generated/themes/ProductSwitchItem.css.js.map +1 -1
  191. package/dist/generated/themes/Search.css.d.ts +2 -0
  192. package/dist/generated/themes/Search.css.js +8 -0
  193. package/dist/generated/themes/Search.css.js.map +1 -0
  194. package/dist/generated/themes/SearchField.css.d.ts +1 -1
  195. package/dist/generated/themes/SearchField.css.js +1 -1
  196. package/dist/generated/themes/SearchField.css.js.map +1 -1
  197. package/dist/generated/themes/SearchItem.css.d.ts +2 -0
  198. package/dist/generated/themes/SearchItem.css.js +8 -0
  199. package/dist/generated/themes/SearchItem.css.js.map +1 -0
  200. package/dist/generated/themes/SearchItemGroup.css.d.ts +2 -0
  201. package/dist/generated/themes/SearchItemGroup.css.js +8 -0
  202. package/dist/generated/themes/SearchItemGroup.css.js.map +1 -0
  203. package/dist/generated/themes/ShellBar.css.d.ts +1 -1
  204. package/dist/generated/themes/ShellBar.css.js +1 -1
  205. package/dist/generated/themes/ShellBar.css.js.map +1 -1
  206. package/dist/generated/themes/ShellBarPopover.css.d.ts +1 -1
  207. package/dist/generated/themes/ShellBarPopover.css.js +1 -1
  208. package/dist/generated/themes/ShellBarPopover.css.js.map +1 -1
  209. package/dist/generated/themes/SideNavigation.css.d.ts +1 -1
  210. package/dist/generated/themes/SideNavigation.css.js +1 -1
  211. package/dist/generated/themes/SideNavigation.css.js.map +1 -1
  212. package/dist/generated/themes/SideNavigationGroup.css.d.ts +1 -1
  213. package/dist/generated/themes/SideNavigationGroup.css.js +1 -1
  214. package/dist/generated/themes/SideNavigationGroup.css.js.map +1 -1
  215. package/dist/generated/themes/SideNavigationItem.css.d.ts +1 -1
  216. package/dist/generated/themes/SideNavigationItem.css.js +1 -1
  217. package/dist/generated/themes/SideNavigationItem.css.js.map +1 -1
  218. package/dist/generated/themes/SideNavigationItemBase.css.d.ts +1 -1
  219. package/dist/generated/themes/SideNavigationItemBase.css.js +1 -1
  220. package/dist/generated/themes/SideNavigationItemBase.css.js.map +1 -1
  221. package/dist/generated/themes/SideNavigationPopover.css.d.ts +1 -1
  222. package/dist/generated/themes/SideNavigationPopover.css.js +1 -1
  223. package/dist/generated/themes/SideNavigationPopover.css.js.map +1 -1
  224. package/dist/generated/themes/SideNavigationSubItem.css.d.ts +1 -1
  225. package/dist/generated/themes/SideNavigationSubItem.css.js +1 -1
  226. package/dist/generated/themes/SideNavigationSubItem.css.js.map +1 -1
  227. package/dist/generated/themes/Timeline.css.d.ts +1 -1
  228. package/dist/generated/themes/Timeline.css.js +1 -1
  229. package/dist/generated/themes/Timeline.css.js.map +1 -1
  230. package/dist/generated/themes/TimelineGroupItem.css.d.ts +1 -1
  231. package/dist/generated/themes/TimelineGroupItem.css.js +1 -1
  232. package/dist/generated/themes/TimelineGroupItem.css.js.map +1 -1
  233. package/dist/generated/themes/TimelineItem.css.d.ts +1 -1
  234. package/dist/generated/themes/TimelineItem.css.js +1 -1
  235. package/dist/generated/themes/TimelineItem.css.js.map +1 -1
  236. package/dist/generated/themes/UploadCollection.css.d.ts +1 -1
  237. package/dist/generated/themes/UploadCollection.css.js +1 -1
  238. package/dist/generated/themes/UploadCollection.css.js.map +1 -1
  239. package/dist/generated/themes/UploadCollectionItem.css.d.ts +1 -1
  240. package/dist/generated/themes/UploadCollectionItem.css.js +1 -1
  241. package/dist/generated/themes/UploadCollectionItem.css.js.map +1 -1
  242. package/dist/generated/themes/UserMenu.css.d.ts +1 -1
  243. package/dist/generated/themes/UserMenu.css.js +1 -1
  244. package/dist/generated/themes/UserMenu.css.js.map +1 -1
  245. package/dist/generated/themes/UserMenuItem.css.d.ts +1 -1
  246. package/dist/generated/themes/UserMenuItem.css.js +1 -1
  247. package/dist/generated/themes/UserMenuItem.css.js.map +1 -1
  248. package/dist/generated/themes/UserSettingsItem.css.d.ts +1 -1
  249. package/dist/generated/themes/UserSettingsItem.css.js +1 -1
  250. package/dist/generated/themes/UserSettingsItem.css.js.map +1 -1
  251. package/dist/generated/themes/ViewSettingsDialog.css.d.ts +1 -1
  252. package/dist/generated/themes/ViewSettingsDialog.css.js +1 -1
  253. package/dist/generated/themes/ViewSettingsDialog.css.js.map +1 -1
  254. package/dist/generated/themes/Wizard.css.d.ts +1 -1
  255. package/dist/generated/themes/Wizard.css.js +1 -1
  256. package/dist/generated/themes/Wizard.css.js.map +1 -1
  257. package/dist/generated/themes/WizardTab.css.d.ts +1 -1
  258. package/dist/generated/themes/WizardTab.css.js +1 -1
  259. package/dist/generated/themes/WizardTab.css.js.map +1 -1
  260. package/dist/generated/themes/sap_fiori_3/parameters-bundle.css.d.ts +1 -1
  261. package/dist/generated/themes/sap_fiori_3/parameters-bundle.css.js +1 -1
  262. package/dist/generated/themes/sap_fiori_3/parameters-bundle.css.js.map +1 -1
  263. package/dist/generated/themes/sap_fiori_3_dark/parameters-bundle.css.d.ts +1 -1
  264. package/dist/generated/themes/sap_fiori_3_dark/parameters-bundle.css.js +1 -1
  265. package/dist/generated/themes/sap_fiori_3_dark/parameters-bundle.css.js.map +1 -1
  266. package/dist/generated/themes/sap_fiori_3_hcb/parameters-bundle.css.d.ts +1 -1
  267. package/dist/generated/themes/sap_fiori_3_hcb/parameters-bundle.css.js +1 -1
  268. package/dist/generated/themes/sap_fiori_3_hcb/parameters-bundle.css.js.map +1 -1
  269. package/dist/generated/themes/sap_fiori_3_hcw/parameters-bundle.css.d.ts +1 -1
  270. package/dist/generated/themes/sap_fiori_3_hcw/parameters-bundle.css.js +1 -1
  271. package/dist/generated/themes/sap_fiori_3_hcw/parameters-bundle.css.js.map +1 -1
  272. package/dist/generated/themes/sap_horizon/parameters-bundle.css.d.ts +1 -1
  273. package/dist/generated/themes/sap_horizon/parameters-bundle.css.js +1 -1
  274. package/dist/generated/themes/sap_horizon/parameters-bundle.css.js.map +1 -1
  275. package/dist/generated/themes/sap_horizon_dark/parameters-bundle.css.d.ts +1 -1
  276. package/dist/generated/themes/sap_horizon_dark/parameters-bundle.css.js +1 -1
  277. package/dist/generated/themes/sap_horizon_dark/parameters-bundle.css.js.map +1 -1
  278. package/dist/generated/themes/sap_horizon_dark_exp/parameters-bundle.css.d.ts +1 -1
  279. package/dist/generated/themes/sap_horizon_dark_exp/parameters-bundle.css.js +1 -1
  280. package/dist/generated/themes/sap_horizon_dark_exp/parameters-bundle.css.js.map +1 -1
  281. package/dist/generated/themes/sap_horizon_exp/parameters-bundle.css.d.ts +1 -1
  282. package/dist/generated/themes/sap_horizon_exp/parameters-bundle.css.js +1 -1
  283. package/dist/generated/themes/sap_horizon_exp/parameters-bundle.css.js.map +1 -1
  284. package/dist/generated/themes/sap_horizon_hcb/parameters-bundle.css.d.ts +1 -1
  285. package/dist/generated/themes/sap_horizon_hcb/parameters-bundle.css.js +1 -1
  286. package/dist/generated/themes/sap_horizon_hcb/parameters-bundle.css.js.map +1 -1
  287. package/dist/generated/themes/sap_horizon_hcb_exp/parameters-bundle.css.d.ts +1 -1
  288. package/dist/generated/themes/sap_horizon_hcb_exp/parameters-bundle.css.js +1 -1
  289. package/dist/generated/themes/sap_horizon_hcb_exp/parameters-bundle.css.js.map +1 -1
  290. package/dist/generated/themes/sap_horizon_hcw/parameters-bundle.css.d.ts +1 -1
  291. package/dist/generated/themes/sap_horizon_hcw/parameters-bundle.css.js +1 -1
  292. package/dist/generated/themes/sap_horizon_hcw/parameters-bundle.css.js.map +1 -1
  293. package/dist/generated/themes/sap_horizon_hcw_exp/parameters-bundle.css.d.ts +1 -1
  294. package/dist/generated/themes/sap_horizon_hcw_exp/parameters-bundle.css.js +1 -1
  295. package/dist/generated/themes/sap_horizon_hcw_exp/parameters-bundle.css.js.map +1 -1
  296. package/dist/types/SideNavigationDesign.d.ts +17 -0
  297. package/dist/types/SideNavigationDesign.js +19 -0
  298. package/dist/types/SideNavigationDesign.js.map +1 -0
  299. package/dist/vscode.html-custom-data.json +99 -0
  300. package/dist/web-types.json +240 -1
  301. package/package.json +7 -7
  302. package/src/NavigationMenuItemTemplate.tsx +3 -83
  303. package/src/SearchFieldTemplate.tsx +1 -1
  304. package/src/SearchItemTemplate.tsx +45 -0
  305. package/src/SearchPopoverTemplate.tsx +68 -0
  306. package/src/SearchTemplate.tsx +12 -0
  307. package/src/ShellBarPopoverTemplate.tsx +1 -0
  308. package/src/ShellBarTemplate.tsx +9 -6
  309. package/src/SideNavigationTemplate.tsx +1 -0
  310. package/src/UserMenuTemplate.tsx +104 -76
  311. package/src/ViewSettingsDialogTemplate.tsx +1 -0
  312. package/src/i18n/messagebundle.properties +13 -1
  313. package/src/i18n/messagebundle_en.properties +184 -1
  314. package/src/i18n/messagebundle_en_US_saprigi.properties +7 -1
  315. package/src/themes/NavigationMenu.css +5 -7
  316. package/src/themes/NavigationMenuItem.css +21 -6
  317. package/src/themes/Search.css +63 -0
  318. package/src/themes/SearchField.css +11 -10
  319. package/src/themes/SearchItem.css +59 -0
  320. package/src/themes/SearchItemGroup.css +13 -0
  321. package/src/themes/SideNavigation.css +10 -1
  322. package/src/themes/SideNavigationItem.css +5 -7
  323. package/src/themes/SideNavigationItemBase.css +6 -0
  324. package/src/themes/SideNavigationPopover.css +0 -4
  325. package/src/themes/SideNavigationSubItem.css +4 -1
  326. package/src/themes/UserMenu.css +97 -48
  327. package/src/themes/UserMenuItem.css +1 -0
  328. package/src/themes/base/SideNavigation-parameters.css +4 -13
  329. package/src/themes/sap_horizon/SideNavigation-parameters.css +5 -13
  330. package/src/themes/sap_horizon_dark/SideNavigation-parameters.css +5 -13
  331. package/src/themes/sap_horizon_hcb/SideNavigation-parameters.css +5 -12
  332. 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"]}
@@ -38,7 +38,7 @@ type SearchFieldScopeSelectionChangeDetails = {
38
38
  */
39
39
  declare class SearchField extends UI5Element {
40
40
  eventDetails: {
41
- search: void;
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;
@@ -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.fireDecoratorEvent("search");
104
+ this._handleSearchEvent();
104
105
  }
105
106
  }
106
107
  _handleSearchIconPress() {
107
108
  if (this.value.length) {
108
- this.fireDecoratorEvent("search");
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();
@@ -1 +1 @@
1
- {"version":3,"file":"SearchField.js","sourceRoot":"","sources":["../src/SearchField.ts"],"names":[],"mappings":";;;;;;;AAAA,OAAO,UAAU,MAAM,4CAA4C,CAAC;AACpE,OAAO,QAAQ,MAAM,qDAAqD,CAAC;AAC3E,OAAO,IAAI,MAAM,iDAAiD,CAAC;AACnE,OAAO,KAAK,MAAM,yDAAyD,CAAC;AAC5E,OAAO,aAAa,MAAM,0DAA0D,CAAC;AACrF,OAAO,IAAI,MAAM,iDAAiD,CAAC;AACnE,OAAO,mBAAmB,MAAM,0BAA0B,CAAC;AAC3D,OAAO,cAAc,MAAM,uCAAuC,CAAC;AAKnE,OAAO,EACN,OAAO,GACP,MAAM,sCAAsC,CAAC;AAC9C,OAAO,WAAW,MAAM,sDAAsD,CAAC;AAE/E,OAAO,EACN,+BAA+B,EAC/B,uBAAuB,EACvB,wBAAwB,EACxB,6BAA6B,EAC7B,4BAA4B,GAC5B,MAAM,mCAAmC,CAAC;AAgB3C;;;;;;;;;;;;;;;;;;;;;GAqBG;AAqCH,IAAM,WAAW,mBAAjB,MAAM,WAAY,SAAQ,UAAU;IAApC;;QAOC;;;;WAIG;QAEH,SAAI,GAAoB,SAAS,CAAC;QAElC;;;;WAIG;QAEH,kBAAa,GAAG,KAAK,CAAC;QAEtB;;;;;WAKG;QAEH,aAAQ,GAAG,KAAK,CAAC;QAEjB;;;;;WAKG;QAEH,UAAK,GAAG,KAAK,CAAC;QAEd;;;;;;WAMG;QAEH,UAAK,GAAG,EAAE,CAAC;QA0BX;;WAEG;QAEH,sBAAiB,GAAG,KAAK,CAAC;QAE1B;;WAEG;QAEH,4BAAuB,GAAG,KAAK,CAAC;IA0FjC,CAAC;IArFA,iBAAiB;QAChB,IAAI,CAAC,uBAAuB,GAAG,CAAC,IAAI,CAAC,aAAa,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACrE,CAAC;IAED,UAAU,CAAC,CAAe;QACzB,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;YAChB,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC;QAC5B,CAAC;IACF,CAAC;IAED,UAAU;QACT,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;IAC/B,CAAC;IAED,WAAW;QACV,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;IAChC,CAAC;IAED,YAAY;QACX,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;YACvB,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;QACnC,CAAC;IACF,CAAC;IAED,sBAAsB;QACrB,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;YACvB,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;YAClC,OAAO;QACR,CAAC;QAED,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAChB,OAAO;QACR,CAAC;QAED,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC;QAE/B,UAAU,CAAC,GAAG,EAAE;YACf,IAAI,CAAC,KAAK,EAAE,CAAC;QACd,CAAC,EAAE,CAAC,CAAC,CAAC;IACP,CAAC;IAED,YAAY,CAAC,CAAa;QACzB,IAAI,CAAC,KAAK,GAAI,CAAC,CAAC,MAA2B,CAAC,KAAK,CAAC;QAElD,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;IAClC,CAAC;IAED,YAAY;QACX,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;QAChB,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;QAEjC,IAAI,CAAC,KAAK,EAAE,CAAC;IACd,CAAC;IAED,kBAAkB,CAAC,CAAuC;QACzD,MAAM,IAAI,GAAG,CAAC,CAAC,MAAM,CAAC,cAAoE,CAAC;QAC3F,IAAI,CAAC,kBAAkB,CAAC,cAAc,EAAE;YACvC,KAAK,EAAE,IAAI,CAAC,WAAW;SACvB,CAAC,CAAC;IACJ,CAAC;IAED,IAAI,aAAa;QAChB,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,iBAAiB,CAAC;IACpD,CAAC;IAED,IAAI,oCAAoC;QACvC,OAAO;YACN,QAAQ,EAAE,IAAI,CAAC,QAAQ;SACvB,CAAC;IACH,CAAC;IAED,IAAI,aAAa;QAChB,OAAO;YACN,KAAK,EAAE,aAAW,CAAC,UAAU,CAAC,OAAO,CAAC,+BAA+B,CAAC;YACtE,SAAS,EAAE,aAAW,CAAC,UAAU,CAAC,OAAO,CAAC,uBAAuB,CAAC;YAClE,UAAU,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,aAAW,CAAC,UAAU,CAAC,OAAO,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC,aAAW,CAAC,UAAU,CAAC,OAAO,CAAC,4BAA4B,CAAC;YACxJ,eAAe,EAAE,aAAW,CAAC,UAAU,CAAC,OAAO,CAAC,6BAA6B,CAAC;SAC9E,CAAC;IACH,CAAC;IAED,UAAU,CAAC,GAAqD;QAC/D,IAAI,GAAG,EAAE,CAAC;YACT,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,CAAC;IACF,CAAC;CACD,CAAA;AAlKA;IADC,QAAQ,EAAE;yCACuB;AAQlC;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;kDACN;AAStB;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;6CACX;AASjB;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;0CACd;AAUd;IADC,QAAQ,EAAE;0CACA;AASX;IADC,QAAQ,EAAE;gDACU;AAQrB;IADC,QAAQ,EAAE;mDACa;AAOxB;IADC,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,eAAe,EAAE,IAAI,EAAE,uBAAuB,EAAE,IAAI,EAAE,CAAC;iDACpC;AAM9C;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;sDACF;AAM1B;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;4DACI;AAGzB;IADN,IAAI,CAAC,0BAA0B,CAAC;qCACH;AAxFzB,WAAW;IApChB,aAAa,CAAC;QACd,GAAG,EAAE,kBAAkB;QACvB,aAAa,EAAE,IAAI;QACnB,QAAQ,EAAE,WAAW;QACrB,QAAQ,EAAE,mBAAmB;QAC7B,MAAM,EAAE;YACP,cAAc;SACd;KACD,CAAC;IAEF;;;;OAIG;;IACF,KAAK,CAAC,OAAO,EAAE;QACf,OAAO,EAAE,IAAI;KACb,CAAC;IAEF;;;;OAIG;;IACF,KAAK,CAAC,cAAc,EAAE;QACtB,OAAO,EAAE,IAAI;KACb,CAAC;IAEF;;;OAGG;;IACF,KAAK,CAAC,QAAQ,EAAE;QAChB,OAAO,EAAE,IAAI;KACb,CAAC;GAEI,WAAW,CA+KhB;AAED,WAAW,CAAC,MAAM,EAAE,CAAC;AAErB,eAAe,WAAW,CAAC","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;;;;;;;;GAQG;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;oDACE;AAOb;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 */\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"]}
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 &&