@ui5/webcomponents-fiori 1.23.1 → 1.24.0-rc.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (192) hide show
  1. package/CHANGELOG.md +28 -0
  2. package/dist/BarcodeScannerDialog.d.ts +12 -1
  3. package/dist/BarcodeScannerDialog.js +17 -0
  4. package/dist/BarcodeScannerDialog.js.map +1 -1
  5. package/dist/SideNavigation.d.ts +41 -32
  6. package/dist/SideNavigation.js +112 -117
  7. package/dist/SideNavigation.js.map +1 -1
  8. package/dist/SideNavigationGroup.d.ts +55 -0
  9. package/dist/SideNavigationGroup.js +142 -0
  10. package/dist/SideNavigationGroup.js.map +1 -0
  11. package/dist/SideNavigationItem.d.ts +18 -6
  12. package/dist/SideNavigationItem.js +53 -15
  13. package/dist/SideNavigationItem.js.map +1 -1
  14. package/dist/SideNavigationItemBase.d.ts +16 -59
  15. package/dist/SideNavigationItemBase.js +23 -91
  16. package/dist/SideNavigationItemBase.js.map +1 -1
  17. package/dist/SideNavigationSelectableItemBase.d.ts +74 -0
  18. package/dist/SideNavigationSelectableItemBase.js +116 -0
  19. package/dist/SideNavigationSelectableItemBase.js.map +1 -0
  20. package/dist/SideNavigationSubItem.d.ts +6 -5
  21. package/dist/SideNavigationSubItem.js +20 -8
  22. package/dist/SideNavigationSubItem.js.map +1 -1
  23. package/dist/css/themes/Bar.css +1 -1
  24. package/dist/css/themes/FlexibleColumnLayout.css +1 -1
  25. package/dist/css/themes/MediaGallery.css +1 -1
  26. package/dist/css/themes/MediaGalleryItem.css +1 -1
  27. package/dist/css/themes/NotificationListGroupItem.css +1 -1
  28. package/dist/css/themes/NotificationListItem.css +1 -1
  29. package/dist/css/themes/NotificationListItemBase.css +1 -1
  30. package/dist/css/themes/NotificationOverflowActionsPopover.css +1 -1
  31. package/dist/css/themes/Page.css +1 -1
  32. package/dist/css/themes/ProductSwitchItem.css +1 -1
  33. package/dist/css/themes/ShellBar.css +1 -1
  34. package/dist/css/themes/SideNavigation.css +1 -1
  35. package/dist/css/themes/SideNavigationItem.css +1 -0
  36. package/dist/css/themes/SideNavigationPopover.css +1 -1
  37. package/dist/css/themes/Timeline.css +1 -1
  38. package/dist/css/themes/TimelineItem.css +1 -1
  39. package/dist/css/themes/UploadCollection.css +1 -1
  40. package/dist/css/themes/UploadCollectionItem.css +1 -1
  41. package/dist/css/themes/ViewSettingsDialog.css +1 -1
  42. package/dist/css/themes/Wizard.css +1 -1
  43. package/dist/css/themes/WizardTab.css +1 -1
  44. package/dist/css/themes/sap_belize/parameters-bundle.css +1 -1
  45. package/dist/css/themes/sap_belize_hcb/parameters-bundle.css +1 -1
  46. package/dist/css/themes/sap_belize_hcw/parameters-bundle.css +1 -1
  47. package/dist/css/themes/sap_fiori_3/parameters-bundle.css +1 -1
  48. package/dist/css/themes/sap_fiori_3_dark/parameters-bundle.css +1 -1
  49. package/dist/css/themes/sap_fiori_3_hcb/parameters-bundle.css +1 -1
  50. package/dist/css/themes/sap_fiori_3_hcw/parameters-bundle.css +1 -1
  51. package/dist/css/themes/sap_horizon/parameters-bundle.css +1 -1
  52. package/dist/css/themes/sap_horizon_dark/parameters-bundle.css +1 -1
  53. package/dist/css/themes/sap_horizon_dark_exp/parameters-bundle.css +1 -1
  54. package/dist/css/themes/sap_horizon_exp/parameters-bundle.css +1 -1
  55. package/dist/css/themes/sap_horizon_hcb/parameters-bundle.css +1 -1
  56. package/dist/css/themes/sap_horizon_hcb_exp/parameters-bundle.css +1 -1
  57. package/dist/css/themes/sap_horizon_hcw/parameters-bundle.css +1 -1
  58. package/dist/css/themes/sap_horizon_hcw_exp/parameters-bundle.css +1 -1
  59. package/dist/custom-elements-internal.json +1566 -153
  60. package/dist/custom-elements.json +1539 -130
  61. package/dist/generated/assets/themes/sap_belize/parameters-bundle.css.json +1 -1
  62. package/dist/generated/assets/themes/sap_belize_hcb/parameters-bundle.css.json +1 -1
  63. package/dist/generated/assets/themes/sap_belize_hcw/parameters-bundle.css.json +1 -1
  64. package/dist/generated/assets/themes/sap_fiori_3/parameters-bundle.css.json +1 -1
  65. package/dist/generated/assets/themes/sap_fiori_3_dark/parameters-bundle.css.json +1 -1
  66. package/dist/generated/assets/themes/sap_fiori_3_hcb/parameters-bundle.css.json +1 -1
  67. package/dist/generated/assets/themes/sap_fiori_3_hcw/parameters-bundle.css.json +1 -1
  68. package/dist/generated/assets/themes/sap_horizon/parameters-bundle.css.json +1 -1
  69. package/dist/generated/assets/themes/sap_horizon_dark/parameters-bundle.css.json +1 -1
  70. package/dist/generated/assets/themes/sap_horizon_dark_exp/parameters-bundle.css.json +1 -1
  71. package/dist/generated/assets/themes/sap_horizon_exp/parameters-bundle.css.json +1 -1
  72. package/dist/generated/assets/themes/sap_horizon_hcb/parameters-bundle.css.json +1 -1
  73. package/dist/generated/assets/themes/sap_horizon_hcb_exp/parameters-bundle.css.json +1 -1
  74. package/dist/generated/assets/themes/sap_horizon_hcw/parameters-bundle.css.json +1 -1
  75. package/dist/generated/assets/themes/sap_horizon_hcw_exp/parameters-bundle.css.json +1 -1
  76. package/dist/generated/i18n/i18n-defaults.d.ts +2 -1
  77. package/dist/generated/i18n/i18n-defaults.js +2 -1
  78. package/dist/generated/i18n/i18n-defaults.js.map +1 -1
  79. package/dist/generated/templates/SideNavigationGroupTemplate.lit.d.ts +4 -0
  80. package/dist/generated/templates/SideNavigationGroupTemplate.lit.js +9 -0
  81. package/dist/generated/templates/SideNavigationGroupTemplate.lit.js.map +1 -0
  82. package/dist/generated/templates/SideNavigationItemTemplate.lit.d.ts +4 -0
  83. package/dist/generated/templates/SideNavigationItemTemplate.lit.js +22 -0
  84. package/dist/generated/templates/SideNavigationItemTemplate.lit.js.map +1 -0
  85. package/dist/generated/templates/SideNavigationPopoverTemplate.lit.js +2 -2
  86. package/dist/generated/templates/SideNavigationPopoverTemplate.lit.js.map +1 -1
  87. package/dist/generated/templates/SideNavigationSubItemTemplate.lit.d.ts +4 -0
  88. package/dist/generated/templates/SideNavigationSubItemTemplate.lit.js +12 -0
  89. package/dist/generated/templates/SideNavigationSubItemTemplate.lit.js.map +1 -0
  90. package/dist/generated/templates/SideNavigationTemplate.lit.js +7 -53
  91. package/dist/generated/templates/SideNavigationTemplate.lit.js.map +1 -1
  92. package/dist/generated/templates/UploadCollectionItemTemplate.lit.js +22 -21
  93. package/dist/generated/templates/UploadCollectionItemTemplate.lit.js.map +1 -1
  94. package/dist/generated/themes/Bar.css.js +1 -1
  95. package/dist/generated/themes/Bar.css.js.map +1 -1
  96. package/dist/generated/themes/FlexibleColumnLayout.css.js +1 -1
  97. package/dist/generated/themes/FlexibleColumnLayout.css.js.map +1 -1
  98. package/dist/generated/themes/MediaGallery.css.js +1 -1
  99. package/dist/generated/themes/MediaGallery.css.js.map +1 -1
  100. package/dist/generated/themes/MediaGalleryItem.css.js +1 -1
  101. package/dist/generated/themes/MediaGalleryItem.css.js.map +1 -1
  102. package/dist/generated/themes/NotificationListGroupItem.css.js +1 -1
  103. package/dist/generated/themes/NotificationListGroupItem.css.js.map +1 -1
  104. package/dist/generated/themes/NotificationListItem.css.js +1 -1
  105. package/dist/generated/themes/NotificationListItem.css.js.map +1 -1
  106. package/dist/generated/themes/NotificationListItemBase.css.js +1 -1
  107. package/dist/generated/themes/NotificationListItemBase.css.js.map +1 -1
  108. package/dist/generated/themes/NotificationOverflowActionsPopover.css.js +1 -1
  109. package/dist/generated/themes/NotificationOverflowActionsPopover.css.js.map +1 -1
  110. package/dist/generated/themes/Page.css.js +1 -1
  111. package/dist/generated/themes/Page.css.js.map +1 -1
  112. package/dist/generated/themes/ProductSwitchItem.css.js +1 -1
  113. package/dist/generated/themes/ProductSwitchItem.css.js.map +1 -1
  114. package/dist/generated/themes/ShellBar.css.js +1 -1
  115. package/dist/generated/themes/ShellBar.css.js.map +1 -1
  116. package/dist/generated/themes/SideNavigation.css.js +1 -1
  117. package/dist/generated/themes/SideNavigation.css.js.map +1 -1
  118. package/dist/generated/themes/SideNavigationItem.css.d.ts +3 -0
  119. package/dist/generated/themes/SideNavigationItem.css.js +9 -0
  120. package/dist/generated/themes/SideNavigationItem.css.js.map +1 -0
  121. package/dist/generated/themes/SideNavigationPopover.css.js +1 -1
  122. package/dist/generated/themes/SideNavigationPopover.css.js.map +1 -1
  123. package/dist/generated/themes/Timeline.css.js +1 -1
  124. package/dist/generated/themes/Timeline.css.js.map +1 -1
  125. package/dist/generated/themes/TimelineItem.css.js +1 -1
  126. package/dist/generated/themes/TimelineItem.css.js.map +1 -1
  127. package/dist/generated/themes/UploadCollection.css.js +1 -1
  128. package/dist/generated/themes/UploadCollection.css.js.map +1 -1
  129. package/dist/generated/themes/UploadCollectionItem.css.js +1 -1
  130. package/dist/generated/themes/UploadCollectionItem.css.js.map +1 -1
  131. package/dist/generated/themes/ViewSettingsDialog.css.js +1 -1
  132. package/dist/generated/themes/ViewSettingsDialog.css.js.map +1 -1
  133. package/dist/generated/themes/Wizard.css.js +1 -1
  134. package/dist/generated/themes/Wizard.css.js.map +1 -1
  135. package/dist/generated/themes/WizardTab.css.js +1 -1
  136. package/dist/generated/themes/WizardTab.css.js.map +1 -1
  137. package/dist/generated/themes/sap_belize/parameters-bundle.css.js +1 -1
  138. package/dist/generated/themes/sap_belize/parameters-bundle.css.js.map +1 -1
  139. package/dist/generated/themes/sap_belize_hcb/parameters-bundle.css.js +1 -1
  140. package/dist/generated/themes/sap_belize_hcb/parameters-bundle.css.js.map +1 -1
  141. package/dist/generated/themes/sap_belize_hcw/parameters-bundle.css.js +1 -1
  142. package/dist/generated/themes/sap_belize_hcw/parameters-bundle.css.js.map +1 -1
  143. package/dist/generated/themes/sap_fiori_3/parameters-bundle.css.js +1 -1
  144. package/dist/generated/themes/sap_fiori_3/parameters-bundle.css.js.map +1 -1
  145. package/dist/generated/themes/sap_fiori_3_dark/parameters-bundle.css.js +1 -1
  146. package/dist/generated/themes/sap_fiori_3_dark/parameters-bundle.css.js.map +1 -1
  147. package/dist/generated/themes/sap_fiori_3_hcb/parameters-bundle.css.js +1 -1
  148. package/dist/generated/themes/sap_fiori_3_hcb/parameters-bundle.css.js.map +1 -1
  149. package/dist/generated/themes/sap_fiori_3_hcw/parameters-bundle.css.js +1 -1
  150. package/dist/generated/themes/sap_fiori_3_hcw/parameters-bundle.css.js.map +1 -1
  151. package/dist/generated/themes/sap_horizon/parameters-bundle.css.js +1 -1
  152. package/dist/generated/themes/sap_horizon/parameters-bundle.css.js.map +1 -1
  153. package/dist/generated/themes/sap_horizon_dark/parameters-bundle.css.js +1 -1
  154. package/dist/generated/themes/sap_horizon_dark/parameters-bundle.css.js.map +1 -1
  155. package/dist/generated/themes/sap_horizon_dark_exp/parameters-bundle.css.js +1 -1
  156. package/dist/generated/themes/sap_horizon_dark_exp/parameters-bundle.css.js.map +1 -1
  157. package/dist/generated/themes/sap_horizon_exp/parameters-bundle.css.js +1 -1
  158. package/dist/generated/themes/sap_horizon_exp/parameters-bundle.css.js.map +1 -1
  159. package/dist/generated/themes/sap_horizon_hcb/parameters-bundle.css.js +1 -1
  160. package/dist/generated/themes/sap_horizon_hcb/parameters-bundle.css.js.map +1 -1
  161. package/dist/generated/themes/sap_horizon_hcb_exp/parameters-bundle.css.js +1 -1
  162. package/dist/generated/themes/sap_horizon_hcb_exp/parameters-bundle.css.js.map +1 -1
  163. package/dist/generated/themes/sap_horizon_hcw/parameters-bundle.css.js +1 -1
  164. package/dist/generated/themes/sap_horizon_hcw/parameters-bundle.css.js.map +1 -1
  165. package/dist/generated/themes/sap_horizon_hcw_exp/parameters-bundle.css.js +1 -1
  166. package/dist/generated/themes/sap_horizon_hcw_exp/parameters-bundle.css.js.map +1 -1
  167. package/dist/vscode.html-custom-data.json +976 -0
  168. package/dist/web-types.json +2230 -0
  169. package/package.json +7 -7
  170. package/src/SideNavigation.hbs +13 -235
  171. package/src/SideNavigationGroup.hbs +42 -0
  172. package/src/SideNavigationItem.hbs +154 -0
  173. package/src/SideNavigationPopover.hbs +1 -2
  174. package/src/SideNavigationSubItem.hbs +57 -0
  175. package/src/i18n/messagebundle.properties +3 -0
  176. package/src/themes/Bar.css +1 -0
  177. package/src/themes/SideNavigation.css +7 -286
  178. package/src/themes/SideNavigationItem.css +320 -0
  179. package/src/themes/base/Bar-parameters.css +1 -0
  180. package/src/themes/base/SideNavigation-parameters.css +0 -1
  181. package/src/themes/sap_fiori_3_hcb/Bar-parameters.css +5 -0
  182. package/src/themes/sap_fiori_3_hcb/parameters-bundle.css +1 -1
  183. package/src/themes/sap_fiori_3_hcw/Bar-parameters.css +5 -0
  184. package/src/themes/sap_fiori_3_hcw/parameters-bundle.css +1 -1
  185. package/src/themes/sap_horizon/SideNavigation-parameters.css +0 -1
  186. package/src/themes/sap_horizon_dark/SideNavigation-parameters.css +0 -1
  187. package/src/themes/sap_horizon_hcb/Bar-parameters.css +5 -0
  188. package/src/themes/sap_horizon_hcb/SideNavigation-parameters.css +0 -1
  189. package/src/themes/sap_horizon_hcb/parameters-bundle.css +1 -1
  190. package/src/themes/sap_horizon_hcw/Bar-parameters.css +5 -0
  191. package/src/themes/sap_horizon_hcw/SideNavigation-parameters.css +0 -1
  192. package/src/themes/sap_horizon_hcw/parameters-bundle.css +1 -1
package/CHANGELOG.md CHANGED
@@ -3,6 +3,34 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ # [1.24.0-rc.1](https://github.com/SAP/ui5-webcomponents/compare/v1.24.0-rc.0...v1.24.0-rc.1) (2024-03-15)
7
+
8
+
9
+ ### Features
10
+
11
+ * **ui5-side-navigation:** add navigation groups ([#8261](https://github.com/SAP/ui5-webcomponents/issues/8261)) ([8678dc0](https://github.com/SAP/ui5-webcomponents/commit/8678dc0ec8f017a41ac5bdcd7720bc055d28891c))
12
+
13
+
14
+
15
+
16
+
17
+ # [1.24.0-rc.0](https://github.com/SAP/ui5-webcomponents/compare/v1.23.1...v1.24.0-rc.0) (2024-03-14)
18
+
19
+
20
+ ### Bug Fixes
21
+
22
+ * **ui5-bar:** align subheader style ([#8412](https://github.com/SAP/ui5-webcomponents/issues/8412)) ([e42a976](https://github.com/SAP/ui5-webcomponents/commit/e42a976162314251b4c13d7b6850a80fcc2faffb)), closes [#8079](https://github.com/SAP/ui5-webcomponents/issues/8079)
23
+ * **ui5-shellbar:** fix volatile test ([#8411](https://github.com/SAP/ui5-webcomponents/issues/8411)) ([7e6bf4b](https://github.com/SAP/ui5-webcomponents/commit/7e6bf4b15a437f2795d5fa791f1df07122bc0121)), closes [#8409](https://github.com/SAP/ui5-webcomponents/issues/8409)
24
+
25
+
26
+ ### Features
27
+
28
+ * **ui5-barcode-scanner-dialog:** add 'open' property ([#8316](https://github.com/SAP/ui5-webcomponents/issues/8316)) ([8f59d16](https://github.com/SAP/ui5-webcomponents/commit/8f59d166c55af5f692520ff3b88b09aca28738c3)), closes [#8072](https://github.com/SAP/ui5-webcomponents/issues/8072)
29
+
30
+
31
+
32
+
33
+
6
34
  ## [1.23.1](https://github.com/SAP/ui5-webcomponents/compare/v1.23.1-rc.0...v1.23.1) (2024-03-08)
7
35
 
8
36
  **Note:** Version bump only for package @ui5/webcomponents-fiori
@@ -1,4 +1,4 @@
1
- import UI5Element from "@ui5/webcomponents-base/dist/UI5Element.js";
1
+ import UI5Element, { ChangeInfo } from "@ui5/webcomponents-base/dist/UI5Element.js";
2
2
  import type I18nBundle from "@ui5/webcomponents-base/dist/i18nBundle.js";
3
3
  import Dialog from "@ui5/webcomponents/dist/Dialog.js";
4
4
  declare const BrowserMultiFormatReader: typeof import("@zxing/library/esm5/index.js").BrowserMultiFormatReader;
@@ -29,6 +29,14 @@ type BarcodeScannerDialogScanErrorEventDetail = {
29
29
  * @since 1.0.0-rc.15
30
30
  */
31
31
  declare class BarcodeScannerDialog extends UI5Element {
32
+ /**
33
+ * Indicates whether the dialog is open.
34
+ *
35
+ * @public
36
+ * @default false
37
+ * @since 1.24.0
38
+ */
39
+ open: boolean;
32
40
  /**
33
41
  * Indicates whether a loading indicator should be displayed in the dialog.
34
42
  * @default false
@@ -40,14 +48,17 @@ declare class BarcodeScannerDialog extends UI5Element {
40
48
  static i18nBundle: I18nBundle;
41
49
  constructor();
42
50
  static onDefine(): Promise<void>;
51
+ onInvalidation(changeInfo: ChangeInfo): void;
43
52
  /**
44
53
  * Shows a dialog with the camera videostream. Starts a scan session.
45
54
  * @public
55
+ * @deprecated The method is deprecated in favour of <code>open</code> property.
46
56
  */
47
57
  show(): void;
48
58
  /**
49
59
  * Closes the dialog and the scan session.
50
60
  * @public
61
+ * @deprecated The method is deprecated in favour of <code>open</code> property.
51
62
  */
52
63
  close(): void;
53
64
  /**
@@ -64,9 +64,20 @@ let BarcodeScannerDialog = BarcodeScannerDialog_1 = class BarcodeScannerDialog e
64
64
  static async onDefine() {
65
65
  BarcodeScannerDialog_1.i18nBundle = await getI18nBundle("@ui5/webcomponents-fiori");
66
66
  }
67
+ onInvalidation(changeInfo) {
68
+ if (changeInfo.type === "property" && changeInfo.name === "open") {
69
+ if (changeInfo.newValue) {
70
+ this.show();
71
+ }
72
+ else {
73
+ this.close();
74
+ }
75
+ }
76
+ }
67
77
  /**
68
78
  * Shows a dialog with the camera videostream. Starts a scan session.
69
79
  * @public
80
+ * @deprecated The method is deprecated in favour of <code>open</code> property.
70
81
  */
71
82
  show() {
72
83
  if (this.loading) {
@@ -88,6 +99,7 @@ let BarcodeScannerDialog = BarcodeScannerDialog_1 = class BarcodeScannerDialog e
88
99
  /**
89
100
  * Closes the dialog and the scan session.
90
101
  * @public
102
+ * @deprecated The method is deprecated in favour of <code>open</code> property.
91
103
  */
92
104
  close() {
93
105
  this._closeDialog();
@@ -113,10 +125,12 @@ let BarcodeScannerDialog = BarcodeScannerDialog_1 = class BarcodeScannerDialog e
113
125
  async _showDialog() {
114
126
  this.dialog = await this._getDialog();
115
127
  this.dialog.show();
128
+ this.open = true;
116
129
  }
117
130
  _closeDialog() {
118
131
  if (this.dialog && this.dialog.opened) {
119
132
  this.dialog.close();
133
+ this.open = false;
120
134
  }
121
135
  }
122
136
  _startReader() {
@@ -149,6 +163,9 @@ let BarcodeScannerDialog = BarcodeScannerDialog_1 = class BarcodeScannerDialog e
149
163
  return BarcodeScannerDialog_1.i18nBundle.getText(BARCODE_SCANNER_DIALOG_LOADING_TXT);
150
164
  }
151
165
  };
166
+ __decorate([
167
+ property({ type: Boolean })
168
+ ], BarcodeScannerDialog.prototype, "open", void 0);
152
169
  __decorate([
153
170
  property({ type: Boolean })
154
171
  ], BarcodeScannerDialog.prototype, "loading", void 0);
@@ -1 +1 @@
1
- {"version":3,"file":"BarcodeScannerDialog.js","sourceRoot":"","sources":["../src/BarcodeScannerDialog.ts"],"names":[],"mappings":"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","sourcesContent":["import UI5Element from \"@ui5/webcomponents-base/dist/UI5Element.js\";\nimport litRender from \"@ui5/webcomponents-base/dist/renderer/LitRenderer.js\";\nimport { getI18nBundle } from \"@ui5/webcomponents-base/dist/i18nBundle.js\";\nimport type I18nBundle from \"@ui5/webcomponents-base/dist/i18nBundle.js\";\nimport Dialog from \"@ui5/webcomponents/dist/Dialog.js\";\nimport Button from \"@ui5/webcomponents/dist/Button.js\";\nimport BusyIndicator from \"@ui5/webcomponents/dist/BusyIndicator.js\";\nimport * as ZXing from \"@zxing/library/umd/index.min.js\";\nimport customElement from \"@ui5/webcomponents-base/dist/decorators/customElement.js\";\nimport property from \"@ui5/webcomponents-base/dist/decorators/property.js\";\nimport event from \"@ui5/webcomponents-base/dist/decorators/event.js\";\nimport type { Result, Exception } from \"@zxing/library/esm5/index.js\";\n\n// Texts\nimport {\n\tBARCODE_SCANNER_DIALOG_CANCEL_BUTTON_TXT,\n\tBARCODE_SCANNER_DIALOG_LOADING_TXT,\n} from \"./generated/i18n/i18n-defaults.js\";\n\n// Template\nimport BarcodeScannerDialogTemplate from \"./generated/templates/BarcodeScannerDialogTemplate.lit.js\";\n\n// Styles\nimport BarcodeScannerDialogCss from \"./generated/themes/BarcodeScannerDialog.css.js\";\n\n// some tools handle named exports from UMD files and the window object is not assigned but the imports work (vitejs)\n// other tools do not handle named exports (they are undefined after the import), but the window global is assigned and can be used (web dev server)\nconst effectiveZXing = { ...ZXing, ...window.ZXing };\nconst { BrowserMultiFormatReader, NotFoundException } = effectiveZXing;\n\nconst defaultMediaConstraints = {\n\taudio: false,\n\tvideo: {\n\t\theight: {\n\t\t\tmin: 480,\n\t\t\tideal: 960,\n\t\t\tmax: 1440,\n\t\t},\n\t\taspectRatio: 1.333333333,\n\t\tfacingMode: \"environment\",\n\t},\n};\n\ntype BarcodeScannerDialogScanSuccessEventDetail = {\n\ttext: string,\n\trawBytes: Uint8Array,\n};\n\ntype BarcodeScannerDialogScanErrorEventDetail = {\n\tmessage: string,\n};\n\n/**\n * @class\n *\n * ### Overview\n *\n * The `BarcodeScannerDialog` component provides barcode scanning functionality for all devices that support the `MediaDevices.getUserMedia()` native API.\n * Opening the dialog launches the device camera and scans for known barcode formats.\n *\n * A `scanSuccess` event fires whenever a barcode is identified\n * and a `scanError` event fires when the scan failed (for example, due to missing permisions).\n *\n * Internally, the component uses the zxing-js/library third party OSS.\n *\n * For a list of supported barcode formats, see the [zxing-js/library](https://github.com/zxing-js/library) documentation.\n * @constructor\n * @extends UI5Element\n * @public\n * @since 1.0.0-rc.15\n */\n@customElement({\n\ttag: \"ui5-barcode-scanner-dialog\",\n\tlanguageAware: true,\n\trenderer: litRender,\n\tstaticAreaTemplate: BarcodeScannerDialogTemplate,\n\tstaticAreaStyles: [BarcodeScannerDialogCss],\n\tdependencies: [\n\t\tDialog,\n\t\tBusyIndicator,\n\t\tButton,\n\t],\n})\n/**\n * Fires when the scan is completed successfuuly.\n * @param {string} text the scan result as string\n * @param {Object} rawBytes the scan result as a Uint8Array\n * @public\n */\n@event<BarcodeScannerDialogScanSuccessEventDetail>(\"scan-success\", {\n\tdetail: {\n\t\t/**\n\t\t* @public\n\t\t*/\n\t\ttext: { type: String },\n\t\t/**\n\t\t* @public\n\t\t*/\n\t\trawBytes: { type: Object },\n\t},\n})\n\n/**\n * Fires when the scan fails with error.\n * @param {string} message the error message\n * @public\n */\n@event<BarcodeScannerDialogScanErrorEventDetail>(\"scan-error\", {\n\tdetail: {\n\t\t/**\n\t\t* @public\n\t\t*/\n\t\tmessage: { type: String },\n\t},\n})\n\nclass BarcodeScannerDialog extends UI5Element {\n\t/**\n\t * Indicates whether a loading indicator should be displayed in the dialog.\n\t * @default false\n\t * @private\n\t */\n\t@property({ type: Boolean })\n\tloading!: boolean;\n\n\t_codeReader: InstanceType<typeof BrowserMultiFormatReader>;\n\tdialog?: Dialog;\n\tstatic i18nBundle: I18nBundle;\n\n\tconstructor() {\n\t\tsuper();\n\t\tthis._codeReader = new BrowserMultiFormatReader();\n\t}\n\n\tstatic async onDefine() {\n\t\tBarcodeScannerDialog.i18nBundle = await getI18nBundle(\"@ui5/webcomponents-fiori\");\n\t}\n\n\t/**\n\t * Shows a dialog with the camera videostream. Starts a scan session.\n\t * @public\n\t */\n\tshow(): void {\n\t\tif (this.loading) {\n\t\t\tconsole.warn(\"Barcode scanning is already in progress.\"); // eslint-disable-line\n\t\t\treturn;\n\t\t}\n\n\t\tif (!this._hasGetUserMedia()) {\n\t\t\tthis.fireEvent<BarcodeScannerDialogScanErrorEventDetail>(\"scan-error\", { message: \"getUserMedia() is not supported by your browser\" });\n\t\t\treturn;\n\t\t}\n\n\t\tthis.loading = true;\n\n\t\tthis._getUserPermission()\n\t\t\t.then(() => this._showDialog())\n\t\t\t.catch(err => {\n\t\t\t\tthis.fireEvent<BarcodeScannerDialogScanErrorEventDetail>(\"scan-error\", { message: err });\n\t\t\t\tthis.loading = false;\n\t\t\t});\n\t}\n\n\t/**\n\t * Closes the dialog and the scan session.\n\t * @public\n\t */\n\tclose():void {\n\t\tthis._closeDialog();\n\t\tthis.loading = false;\n\t}\n\n\t/**\n\t * PRIVATE METHODS\n\t */\n\n\t_hasGetUserMedia() {\n\t\treturn !!(navigator.mediaDevices && navigator.mediaDevices.getUserMedia);\n\t}\n\n\t_getUserPermission() {\n\t\treturn navigator.mediaDevices.getUserMedia(defaultMediaConstraints);\n\t}\n\n\tasync _getDialog() {\n\t\tconst staticAreaItem = await this.getStaticAreaItemDomRef();\n\t\treturn staticAreaItem!.querySelector<Dialog>(\"[ui5-dialog]\")!;\n\t}\n\n\tasync _getVideoElement() {\n\t\tconst staticAreaItem = await this.getStaticAreaItemDomRef();\n\t\treturn staticAreaItem!.querySelector<HTMLVideoElement>(\".ui5-barcode-scanner-dialog-video\")!;\n\t}\n\n\tasync _showDialog() {\n\t\tthis.dialog = await this._getDialog();\n\t\tthis.dialog.show();\n\t}\n\n\t_closeDialog() {\n\t\tif (this.dialog && this.dialog.opened) {\n\t\t\tthis.dialog.close();\n\t\t}\n\t}\n\n\t_startReader() {\n\t\tthis._decodeFromCamera();\n\t}\n\n\tasync _resetReader() {\n\t\tconst videoElement = await this._getVideoElement();\n\t\tvideoElement.pause();\n\t\tthis._codeReader.reset();\n\t}\n\n\tasync _decodeFromCamera() {\n\t\tconst videoElement = await this._getVideoElement();\n\t\tthis._codeReader.decodeFromVideoDevice(null, videoElement, (result: Result, err?: Exception) => {\n\t\t\tthis.loading = false;\n\t\t\tif (result) {\n\t\t\t\tthis.fireEvent<BarcodeScannerDialogScanSuccessEventDetail>(\"scan-success\",\n\t\t\t\t\t{\n\t\t\t\t\t\ttext: result.getText(),\n\t\t\t\t\t\trawBytes: result.getRawBytes(),\n\t\t\t\t\t});\n\t\t\t}\n\t\t\tif (err && !(err instanceof NotFoundException)) {\n\t\t\t\tthis.fireEvent<BarcodeScannerDialogScanErrorEventDetail>(\"scan-error\", { message: err.message });\n\t\t\t}\n\t\t}).catch((err: Error) => this.fireEvent<BarcodeScannerDialogScanErrorEventDetail>(\"scan-error\", { message: err.message }));\n\t}\n\n\tget _cancelButtonText() {\n\t\treturn BarcodeScannerDialog.i18nBundle.getText(BARCODE_SCANNER_DIALOG_CANCEL_BUTTON_TXT);\n\t}\n\n\tget _busyIndicatorText() {\n\t\treturn BarcodeScannerDialog.i18nBundle.getText(BARCODE_SCANNER_DIALOG_LOADING_TXT);\n\t}\n}\n\nBarcodeScannerDialog.define();\n\nexport default BarcodeScannerDialog;\nexport type {\n\tBarcodeScannerDialogScanErrorEventDetail,\n\tBarcodeScannerDialogScanSuccessEventDetail,\n};\n"]}
1
+ {"version":3,"file":"BarcodeScannerDialog.js","sourceRoot":"","sources":["../src/BarcodeScannerDialog.ts"],"names":[],"mappings":"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","sourcesContent":["import UI5Element, { ChangeInfo } from \"@ui5/webcomponents-base/dist/UI5Element.js\";\nimport litRender from \"@ui5/webcomponents-base/dist/renderer/LitRenderer.js\";\nimport { getI18nBundle } from \"@ui5/webcomponents-base/dist/i18nBundle.js\";\nimport type I18nBundle from \"@ui5/webcomponents-base/dist/i18nBundle.js\";\nimport Dialog from \"@ui5/webcomponents/dist/Dialog.js\";\nimport Button from \"@ui5/webcomponents/dist/Button.js\";\nimport BusyIndicator from \"@ui5/webcomponents/dist/BusyIndicator.js\";\nimport * as ZXing from \"@zxing/library/umd/index.min.js\";\nimport customElement from \"@ui5/webcomponents-base/dist/decorators/customElement.js\";\nimport property from \"@ui5/webcomponents-base/dist/decorators/property.js\";\nimport event from \"@ui5/webcomponents-base/dist/decorators/event.js\";\nimport type { Result, Exception } from \"@zxing/library/esm5/index.js\";\n\n// Texts\nimport {\n\tBARCODE_SCANNER_DIALOG_CANCEL_BUTTON_TXT,\n\tBARCODE_SCANNER_DIALOG_LOADING_TXT,\n} from \"./generated/i18n/i18n-defaults.js\";\n\n// Template\nimport BarcodeScannerDialogTemplate from \"./generated/templates/BarcodeScannerDialogTemplate.lit.js\";\n\n// Styles\nimport BarcodeScannerDialogCss from \"./generated/themes/BarcodeScannerDialog.css.js\";\n\n// some tools handle named exports from UMD files and the window object is not assigned but the imports work (vitejs)\n// other tools do not handle named exports (they are undefined after the import), but the window global is assigned and can be used (web dev server)\nconst effectiveZXing = { ...ZXing, ...window.ZXing };\nconst { BrowserMultiFormatReader, NotFoundException } = effectiveZXing;\n\nconst defaultMediaConstraints = {\n\taudio: false,\n\tvideo: {\n\t\theight: {\n\t\t\tmin: 480,\n\t\t\tideal: 960,\n\t\t\tmax: 1440,\n\t\t},\n\t\taspectRatio: 1.333333333,\n\t\tfacingMode: \"environment\",\n\t},\n};\n\ntype BarcodeScannerDialogScanSuccessEventDetail = {\n\ttext: string,\n\trawBytes: Uint8Array,\n};\n\ntype BarcodeScannerDialogScanErrorEventDetail = {\n\tmessage: string,\n};\n\n/**\n * @class\n *\n * ### Overview\n *\n * The `BarcodeScannerDialog` component provides barcode scanning functionality for all devices that support the `MediaDevices.getUserMedia()` native API.\n * Opening the dialog launches the device camera and scans for known barcode formats.\n *\n * A `scanSuccess` event fires whenever a barcode is identified\n * and a `scanError` event fires when the scan failed (for example, due to missing permisions).\n *\n * Internally, the component uses the zxing-js/library third party OSS.\n *\n * For a list of supported barcode formats, see the [zxing-js/library](https://github.com/zxing-js/library) documentation.\n * @constructor\n * @extends UI5Element\n * @public\n * @since 1.0.0-rc.15\n */\n@customElement({\n\ttag: \"ui5-barcode-scanner-dialog\",\n\tlanguageAware: true,\n\trenderer: litRender,\n\tstaticAreaTemplate: BarcodeScannerDialogTemplate,\n\tstaticAreaStyles: [BarcodeScannerDialogCss],\n\tdependencies: [\n\t\tDialog,\n\t\tBusyIndicator,\n\t\tButton,\n\t],\n})\n/**\n * Fires when the scan is completed successfuuly.\n * @param {string} text the scan result as string\n * @param {Object} rawBytes the scan result as a Uint8Array\n * @public\n */\n@event<BarcodeScannerDialogScanSuccessEventDetail>(\"scan-success\", {\n\tdetail: {\n\t\t/**\n\t\t* @public\n\t\t*/\n\t\ttext: { type: String },\n\t\t/**\n\t\t* @public\n\t\t*/\n\t\trawBytes: { type: Object },\n\t},\n})\n\n/**\n * Fires when the scan fails with error.\n * @param {string} message the error message\n * @public\n */\n@event<BarcodeScannerDialogScanErrorEventDetail>(\"scan-error\", {\n\tdetail: {\n\t\t/**\n\t\t* @public\n\t\t*/\n\t\tmessage: { type: String },\n\t},\n})\n\nclass BarcodeScannerDialog extends UI5Element {\n\t/**\n\t * Indicates whether the dialog is open.\n\t *\n\t * @public\n\t * @default false\n\t * @since 1.24.0\n\t*/\n\t@property({ type: Boolean })\n\topen!: boolean;\n\n\t/**\n\t * Indicates whether a loading indicator should be displayed in the dialog.\n\t * @default false\n\t * @private\n\t */\n\t@property({ type: Boolean })\n\tloading!: boolean;\n\n\t_codeReader: InstanceType<typeof BrowserMultiFormatReader>;\n\tdialog?: Dialog;\n\tstatic i18nBundle: I18nBundle;\n\n\tconstructor() {\n\t\tsuper();\n\t\tthis._codeReader = new BrowserMultiFormatReader();\n\t}\n\n\tstatic async onDefine() {\n\t\tBarcodeScannerDialog.i18nBundle = await getI18nBundle(\"@ui5/webcomponents-fiori\");\n\t}\n\n\tonInvalidation(changeInfo: ChangeInfo) {\n\t\tif (changeInfo.type === \"property\" && changeInfo.name === \"open\") {\n\t\t\tif (changeInfo.newValue) {\n\t\t\t\tthis.show();\n\t\t\t} else {\n\t\t\t\tthis.close();\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Shows a dialog with the camera videostream. Starts a scan session.\n\t * @public\n\t * @deprecated The method is deprecated in favour of <code>open</code> property.\n\t */\n\tshow(): void {\n\t\tif (this.loading) {\n\t\t\tconsole.warn(\"Barcode scanning is already in progress.\"); // eslint-disable-line\n\t\t\treturn;\n\t\t}\n\n\t\tif (!this._hasGetUserMedia()) {\n\t\t\tthis.fireEvent<BarcodeScannerDialogScanErrorEventDetail>(\"scan-error\", { message: \"getUserMedia() is not supported by your browser\" });\n\t\t\treturn;\n\t\t}\n\n\t\tthis.loading = true;\n\n\t\tthis._getUserPermission()\n\t\t\t.then(() => this._showDialog())\n\t\t\t.catch(err => {\n\t\t\t\tthis.fireEvent<BarcodeScannerDialogScanErrorEventDetail>(\"scan-error\", { message: err });\n\t\t\t\tthis.loading = false;\n\t\t\t});\n\t}\n\n\t/**\n\t * Closes the dialog and the scan session.\n\t * @public\n\t * @deprecated The method is deprecated in favour of <code>open</code> property.\n\t */\n\tclose():void {\n\t\tthis._closeDialog();\n\t\tthis.loading = false;\n\t}\n\n\t/**\n\t * PRIVATE METHODS\n\t */\n\n\t_hasGetUserMedia() {\n\t\treturn !!(navigator.mediaDevices && navigator.mediaDevices.getUserMedia);\n\t}\n\n\t_getUserPermission() {\n\t\treturn navigator.mediaDevices.getUserMedia(defaultMediaConstraints);\n\t}\n\n\tasync _getDialog() {\n\t\tconst staticAreaItem = await this.getStaticAreaItemDomRef();\n\t\treturn staticAreaItem!.querySelector<Dialog>(\"[ui5-dialog]\")!;\n\t}\n\n\tasync _getVideoElement() {\n\t\tconst staticAreaItem = await this.getStaticAreaItemDomRef();\n\t\treturn staticAreaItem!.querySelector<HTMLVideoElement>(\".ui5-barcode-scanner-dialog-video\")!;\n\t}\n\n\tasync _showDialog() {\n\t\tthis.dialog = await this._getDialog();\n\t\tthis.dialog.show();\n\t\tthis.open = true;\n\t}\n\n\t_closeDialog() {\n\t\tif (this.dialog && this.dialog.opened) {\n\t\t\tthis.dialog.close();\n\t\t\tthis.open = false;\n\t\t}\n\t}\n\n\t_startReader() {\n\t\tthis._decodeFromCamera();\n\t}\n\n\tasync _resetReader() {\n\t\tconst videoElement = await this._getVideoElement();\n\t\tvideoElement.pause();\n\t\tthis._codeReader.reset();\n\t}\n\n\tasync _decodeFromCamera() {\n\t\tconst videoElement = await this._getVideoElement();\n\t\tthis._codeReader.decodeFromVideoDevice(null, videoElement, (result: Result, err?: Exception) => {\n\t\t\tthis.loading = false;\n\t\t\tif (result) {\n\t\t\t\tthis.fireEvent<BarcodeScannerDialogScanSuccessEventDetail>(\"scan-success\",\n\t\t\t\t\t{\n\t\t\t\t\t\ttext: result.getText(),\n\t\t\t\t\t\trawBytes: result.getRawBytes(),\n\t\t\t\t\t});\n\t\t\t}\n\t\t\tif (err && !(err instanceof NotFoundException)) {\n\t\t\t\tthis.fireEvent<BarcodeScannerDialogScanErrorEventDetail>(\"scan-error\", { message: err.message });\n\t\t\t}\n\t\t}).catch((err: Error) => this.fireEvent<BarcodeScannerDialogScanErrorEventDetail>(\"scan-error\", { message: err.message }));\n\t}\n\n\tget _cancelButtonText() {\n\t\treturn BarcodeScannerDialog.i18nBundle.getText(BARCODE_SCANNER_DIALOG_CANCEL_BUTTON_TXT);\n\t}\n\n\tget _busyIndicatorText() {\n\t\treturn BarcodeScannerDialog.i18nBundle.getText(BARCODE_SCANNER_DIALOG_LOADING_TXT);\n\t}\n}\n\nBarcodeScannerDialog.define();\n\nexport default BarcodeScannerDialog;\nexport type {\n\tBarcodeScannerDialogScanErrorEventDetail,\n\tBarcodeScannerDialogScanSuccessEventDetail,\n};\n"]}
@@ -5,12 +5,11 @@ import type { MenuItemClickEventDetail } from "@ui5/webcomponents/dist/Menu.js";
5
5
  import type I18nBundle from "@ui5/webcomponents-base/dist/i18nBundle.js";
6
6
  import ItemNavigation from "@ui5/webcomponents-base/dist/delegate/ItemNavigation.js";
7
7
  import type { ITabbable } from "@ui5/webcomponents-base/dist/delegate/ItemNavigation.js";
8
- import "@ui5/webcomponents-icons/dist/circle-task-2.js";
9
- import "@ui5/webcomponents-icons/dist/navigation-right-arrow.js";
10
- import "@ui5/webcomponents-icons/dist/navigation-down-arrow.js";
11
- import type SideNavigationItemBase from "./SideNavigationItemBase.js";
8
+ import SideNavigationItemBase from "./SideNavigationItemBase.js";
9
+ import SideNavigationSelectableItemBase from "./SideNavigationSelectableItemBase.js";
12
10
  import SideNavigationItem from "./SideNavigationItem.js";
13
11
  import SideNavigationSubItem from "./SideNavigationSubItem.js";
12
+ import SideNavigationGroup from "./SideNavigationGroup.js";
14
13
  type SideNavigationPopoverContents = {
15
14
  item: SideNavigationItem;
16
15
  subItems: Array<SideNavigationSubItem>;
@@ -20,7 +19,7 @@ type SideNavigationSelectionChangeEventDetail = {
20
19
  };
21
20
  type NavigationMenuClickEventDetail = MenuItemClickEventDetail & {
22
21
  item: Pick<MenuItemClickEventDetail, "item"> & {
23
- associatedItem: SideNavigationItemBase;
22
+ associatedItem: SideNavigationSelectableItemBase;
24
23
  };
25
24
  };
26
25
  /**
@@ -31,26 +30,30 @@ type NavigationMenuClickEventDetail = MenuItemClickEventDetail & {
31
30
  * The `SideNavigation` is used as a standard menu in applications.
32
31
  * It consists of three containers: header (top-aligned), main navigation section (top-aligned) and the secondary section (bottom-aligned).
33
32
  *
34
- * - The header is meant for displaying user related information - profile data, avatar, etc.
35
- * - The main navigation section is related to the user’s current work context
36
- * - The secondary section is mostly used to link additional information that may be of interest (legal information, developer communities, external help, contact information and so on).
33
+ * - The header is meant for displaying user related information - profile data, avatar, etc.
34
+ * - The main navigation section is related to the user’s current work context
35
+ * - The secondary section is mostly used to link additional information that may be of interest (legal information, developer communities, external help, contact information and so on).
37
36
  *
38
37
  * ### Usage
39
38
  *
40
- * Use the available `ui5-side-navigation-item` and `ui5-side-navigation-sub-item` components to build your menu.
39
+ * Use the available `ui5-side-navigation-group`, `ui5-side-navigation-item`
40
+ * and `ui5-side-navigation-sub-item` components to build your menu.
41
41
  * The items can consist of text only or an icon with text. The use or non-use of icons must be consistent for all items on one level.
42
42
  * You must not combine entries with and without icons on the same level. We strongly recommend that you do not use icons on the second level.
43
43
  *
44
44
  * ### Keyboard Handling
45
45
  *
46
- * #### Fast Navigation
46
+ * ### Fast Navigation
47
47
  * This component provides a build in fast navigation group which can be used via `F6 / Shift + F6` or ` Ctrl + Alt(Option) + Down / Ctrl + Alt(Option) + Up`.
48
48
  * In order to use this functionality, you need to import the following module:
49
49
  * `import "@ui5/webcomponents-base/dist/features/F6Navigation.js"`
50
50
  *
51
+ *
51
52
  * ### ES6 Module Import
52
53
  *
53
- * `import "@ui5/webcomponents-fiori/dist/SideNavigation.js";`
54
+ * `import "@ui5/webcomponents-fiori/dist/SideNavigation.js"`
55
+ *
56
+ * `import "@ui5/webcomponents-fiori/dist/SideNavigationGroup.js";` (for `ui5-side-navigation-group`)
54
57
  *
55
58
  * `import "@ui5/webcomponents-fiori/dist/SideNavigationItem.js";` (for `ui5-side-navigation-item`)
56
59
  *
@@ -63,6 +66,7 @@ type NavigationMenuClickEventDetail = MenuItemClickEventDetail & {
63
66
  declare class SideNavigation extends UI5Element {
64
67
  /**
65
68
  * Defines whether the `ui5-side-navigation` is expanded or collapsed.
69
+ *
66
70
  * @public
67
71
  * @default false
68
72
  */
@@ -71,30 +75,33 @@ declare class SideNavigation extends UI5Element {
71
75
  * Defines the main items of the `ui5-side-navigation`. Use the `ui5-side-navigation-item` component
72
76
  * for the top-level items, and the `ui5-side-navigation-sub-item` component for second-level items, nested
73
77
  * inside the items.
74
- * @public
75
- */
76
- items: Array<SideNavigationItem>;
77
- /**
78
- * Defines the header of the `ui5-side-navigation`.
79
78
  *
80
- * **Note:** The header is displayed when the component is expanded - the property `collapsed` is false;
81
79
  * @public
82
- * @since 1.0.0-rc.11
83
80
  */
84
- header: Array<HTMLElement>;
81
+ items: Array<SideNavigationItem | SideNavigationGroup>;
85
82
  /**
86
83
  * Defines the fixed items at the bottom of the `ui5-side-navigation`. Use the `ui5-side-navigation-item` component
87
84
  * for the fixed items, and optionally the `ui5-side-navigation-sub-item` component to provide second-level items inside them.
88
85
  *
89
86
  * **Note:** In order to achieve the best user experience, it is recommended that you keep the fixed items "flat" (do not pass sub-items)
87
+ *
88
+ * @public
89
+ */
90
+ fixedItems: Array<SideNavigationItem | SideNavigationGroup>;
91
+ /**
92
+ * Defines the header of the `ui5-side-navigation`.
93
+ *
94
+ * **Note:** The header is displayed when the component is expanded - the property `collapsed` is false;
95
+ *
90
96
  * @public
97
+ * @since 1.0.0-rc.11
91
98
  */
92
- fixedItems: Array<SideNavigationItem>;
99
+ header: Array<HTMLElement>;
93
100
  /**
94
101
  * @private
95
102
  */
96
103
  _popoverContents: SideNavigationPopoverContents;
97
- _inPopover: boolean;
104
+ inPopover: boolean;
98
105
  _isOverflow: boolean;
99
106
  _flexibleItemNavigation: ItemNavigation;
100
107
  _fixedItemNavigation: ItemNavigation;
@@ -106,8 +113,8 @@ declare class SideNavigation extends UI5Element {
106
113
  static i18nBundle: I18nBundle;
107
114
  constructor();
108
115
  _handleResizeBound: () => void;
116
+ onBeforeRendering(): void;
109
117
  _onAfterPopoverOpen(): Promise<void>;
110
- _onAfterMenuClose(): Promise<void>;
111
118
  _onBeforePopoverOpen(): Promise<void>;
112
119
  _onBeforePopoverClose(): Promise<void>;
113
120
  _onBeforeMenuOpen(): Promise<void>;
@@ -116,7 +123,7 @@ declare class SideNavigation extends UI5Element {
116
123
  get ariaRoleDescNavigationList(): string;
117
124
  get overflowAccessibleName(): string;
118
125
  handlePopupItemClick(e: KeyboardEvent | PointerEvent): Promise<void>;
119
- handleOverflowItemClick(e: CustomEvent<NavigationMenuClickEventDetail>): void;
126
+ handleOverflowItemClick(e: CustomEvent<NavigationMenuClickEventDetail>): Promise<void>;
120
127
  getOverflowPopover(): Promise<NavigationMenu>;
121
128
  getPicker(): Promise<ResponsivePopover>;
122
129
  openPicker(opener: HTMLElement): Promise<void>;
@@ -131,26 +138,28 @@ declare class SideNavigation extends UI5Element {
131
138
  get classes(): {
132
139
  root: {
133
140
  "ui5-sn-collapsed": boolean;
134
- "ui5-sn-in-popover": boolean;
135
141
  };
136
142
  };
137
143
  getEnabledFixedItems(): Array<ITabbable>;
138
144
  getEnabledFlexibleItems(): Array<ITabbable>;
139
- getEnabledItems(items: Array<SideNavigationItem>): Array<ITabbable>;
145
+ getEnabledItems(items: Array<SideNavigationItem | SideNavigationGroup>): Array<ITabbable>;
140
146
  focusItem(item: SideNavigationItemBase): void;
141
147
  onAfterRendering(): void;
142
148
  onEnterDOM(): void;
143
149
  onExitDOM(): void;
144
150
  handleResize(): void;
145
151
  _updateOverflowItems(): null | undefined;
146
- _findFocusedItem(items: Array<SideNavigationItem>): SideNavigationItemBase | undefined;
147
- _getWithNestedItems(items: Array<SideNavigationItem>, expandedOnly?: boolean): Array<SideNavigationItemBase>;
148
- _findSelectedItem(items: Array<SideNavigationItem>): SideNavigationItemBase | undefined;
149
- _handleItemClick(e: KeyboardEvent | PointerEvent | CustomEvent<NavigationMenuClickEventDetail>, item: SideNavigationItemBase): void;
152
+ _findFocusedItem(items: Array<SideNavigationItem | SideNavigationGroup>): SideNavigationItemBase | undefined;
153
+ _getSelectableItems(items: Array<SideNavigationItem | SideNavigationGroup>): Array<SideNavigationSelectableItemBase>;
154
+ _getFocusableItems(items: Array<SideNavigationItem | SideNavigationGroup>): Array<SideNavigationItemBase>;
155
+ _getAllItems(items: Array<SideNavigationItem | SideNavigationGroup>): Array<SideNavigationItemBase>;
156
+ _findSelectedItem(items: Array<SideNavigationItem | SideNavigationGroup>): SideNavigationSelectableItemBase | undefined;
157
+ get overflowItems(): Array<HTMLElement>;
158
+ _handleItemClick(e: KeyboardEvent | PointerEvent, item: SideNavigationSelectableItemBase): void;
150
159
  _handleOverflowClick(): void;
151
- _getOverflowItems(): Array<SideNavigationItem>;
152
- _selectItem(item: SideNavigationItemBase): void;
153
- get _overflowDom(): SideNavigationItem | null;
160
+ _getOverflowItems(): Array<SideNavigationSelectableItemBase>;
161
+ _selectItem(item: SideNavigationSelectableItemBase): void;
162
+ get _overflowItem(): SideNavigationItem | null;
154
163
  get isOverflow(): boolean;
155
164
  _onkeydownOverflow(e: KeyboardEvent): void;
156
165
  _onkeyupOverflow(e: KeyboardEvent): void;