@gooddata/sdk-ui-kit 10.38.0 → 10.39.0-alpha.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 (320) hide show
  1. package/esm/@ui/@types/icon.d.ts +1 -1
  2. package/esm/@ui/@types/icon.d.ts.map +1 -1
  3. package/esm/@ui/@types/themeColors.d.ts +1 -1
  4. package/esm/@ui/@types/themeColors.d.ts.map +1 -1
  5. package/esm/@ui/@types/themeColors.js +1 -1
  6. package/esm/@ui/@types/themeColors.js.map +1 -1
  7. package/esm/@ui/UiAsyncTable/UiAsyncTable/UiAsyncTable.d.ts.map +1 -1
  8. package/esm/@ui/UiAsyncTable/UiAsyncTable/UiAsyncTable.js +6 -18
  9. package/esm/@ui/UiAsyncTable/UiAsyncTable/UiAsyncTable.js.map +1 -1
  10. package/esm/@ui/UiAsyncTable/UiAsyncTable/UiAsyncTableDropdownItem.d.ts +1 -1
  11. package/esm/@ui/UiAsyncTable/UiAsyncTable/UiAsyncTableDropdownItem.d.ts.map +1 -1
  12. package/esm/@ui/UiAsyncTable/UiAsyncTable/UiAsyncTableDropdownItem.js +3 -1
  13. package/esm/@ui/UiAsyncTable/UiAsyncTable/UiAsyncTableDropdownItem.js.map +1 -1
  14. package/esm/@ui/UiAsyncTable/UiAsyncTable/UiAsyncTableFilter.d.ts +2 -2
  15. package/esm/@ui/UiAsyncTable/UiAsyncTable/UiAsyncTableFilter.d.ts.map +1 -1
  16. package/esm/@ui/UiAsyncTable/UiAsyncTable/UiAsyncTableFilter.js +3 -4
  17. package/esm/@ui/UiAsyncTable/UiAsyncTable/UiAsyncTableFilter.js.map +1 -1
  18. package/esm/@ui/UiAsyncTable/UiAsyncTable/UiAsyncTableRow.js +4 -2
  19. package/esm/@ui/UiAsyncTable/UiAsyncTable/UiAsyncTableRow.js.map +1 -1
  20. package/esm/@ui/UiAsyncTable/UiAsyncTable/UiAsyncTableToolbar.js +3 -3
  21. package/esm/@ui/UiAsyncTable/UiAsyncTable/UiAsyncTableToolbar.js.map +1 -1
  22. package/esm/@ui/UiAsyncTable/types.d.ts +3 -4
  23. package/esm/@ui/UiAsyncTable/types.d.ts.map +1 -1
  24. package/esm/@ui/UiFocusManager/UiAutofocus.d.ts.map +1 -1
  25. package/esm/@ui/UiFocusManager/UiAutofocus.js +4 -4
  26. package/esm/@ui/UiFocusManager/UiAutofocus.js.map +1 -1
  27. package/esm/@ui/UiFocusManager/UiFocusManager.d.ts +2 -1
  28. package/esm/@ui/UiFocusManager/UiFocusManager.d.ts.map +1 -1
  29. package/esm/@ui/UiFocusManager/UiFocusManager.js +2 -2
  30. package/esm/@ui/UiFocusManager/UiFocusManager.js.map +1 -1
  31. package/esm/@ui/UiFocusManager/UiFocusTrap.d.ts +2 -1
  32. package/esm/@ui/UiFocusManager/UiFocusTrap.d.ts.map +1 -1
  33. package/esm/@ui/UiFocusManager/UiFocusTrap.js +5 -5
  34. package/esm/@ui/UiFocusManager/UiFocusTrap.js.map +1 -1
  35. package/esm/@ui/UiFocusManager/utils.d.ts +9 -1
  36. package/esm/@ui/UiFocusManager/utils.d.ts.map +1 -1
  37. package/esm/@ui/UiFocusManager/utils.js +14 -2
  38. package/esm/@ui/UiFocusManager/utils.js.map +1 -1
  39. package/esm/@ui/UiIcon/icons.d.ts.map +1 -1
  40. package/esm/@ui/UiIcon/icons.js +8 -0
  41. package/esm/@ui/UiIcon/icons.js.map +1 -1
  42. package/esm/@ui/UiIconButton/UiIconButtonRenderer.d.ts +1 -0
  43. package/esm/@ui/UiIconButton/UiIconButtonRenderer.d.ts.map +1 -1
  44. package/esm/@ui/UiIconButton/UiIconButtonRenderer.js +2 -2
  45. package/esm/@ui/UiIconButton/UiIconButtonRenderer.js.map +1 -1
  46. package/esm/@ui/UiTooltip/UiTooltip.d.ts.map +1 -1
  47. package/esm/@ui/UiTooltip/UiTooltip.js +6 -1
  48. package/esm/@ui/UiTooltip/UiTooltip.js.map +1 -1
  49. package/esm/@ui/UiTooltip/types.d.ts +2 -0
  50. package/esm/@ui/UiTooltip/types.d.ts.map +1 -1
  51. package/esm/@ui/UiTreeview/UITreeviewItem.d.ts +3 -1
  52. package/esm/@ui/UiTreeview/UITreeviewItem.d.ts.map +1 -1
  53. package/esm/@ui/UiTreeview/UITreeviewItem.js +17 -7
  54. package/esm/@ui/UiTreeview/UITreeviewItem.js.map +1 -1
  55. package/esm/@ui/UiTreeview/UiTreeview.d.ts.map +1 -1
  56. package/esm/@ui/UiTreeview/UiTreeview.js +8 -3
  57. package/esm/@ui/UiTreeview/UiTreeview.js.map +1 -1
  58. package/esm/@ui/UiTreeview/UiTreeviewRoot.d.ts +3 -3
  59. package/esm/@ui/UiTreeview/UiTreeviewRoot.d.ts.map +1 -1
  60. package/esm/@ui/UiTreeview/UiTreeviewRoot.js +2 -2
  61. package/esm/@ui/UiTreeview/UiTreeviewRoot.js.map +1 -1
  62. package/esm/@ui/UiTreeview/defaults/DefaultUiTreeViewItemComponent.d.ts +1 -1
  63. package/esm/@ui/UiTreeview/defaults/DefaultUiTreeViewItemComponent.d.ts.map +1 -1
  64. package/esm/@ui/UiTreeview/defaults/DefaultUiTreeViewItemComponent.js +2 -2
  65. package/esm/@ui/UiTreeview/defaults/DefaultUiTreeViewItemComponent.js.map +1 -1
  66. package/esm/@ui/UiTreeview/types.d.ts +16 -5
  67. package/esm/@ui/UiTreeview/types.d.ts.map +1 -1
  68. package/esm/@ui/UiTreeview/utils.d.ts +1 -1
  69. package/esm/@ui/UiTreeview/utils.d.ts.map +1 -1
  70. package/esm/@ui/UiTreeview/utils.js +2 -2
  71. package/esm/@ui/UiTreeview/utils.js.map +1 -1
  72. package/esm/AutoSize/AutoSize.d.ts +2 -13
  73. package/esm/AutoSize/AutoSize.d.ts.map +1 -1
  74. package/esm/AutoSize/AutoSize.js +21 -24
  75. package/esm/AutoSize/AutoSize.js.map +1 -1
  76. package/esm/Bubble/Bubble.d.ts +1 -30
  77. package/esm/Bubble/Bubble.d.ts.map +1 -1
  78. package/esm/Bubble/Bubble.js +79 -82
  79. package/esm/Bubble/Bubble.js.map +1 -1
  80. package/esm/Button/Button.d.ts.map +1 -1
  81. package/esm/Button/Button.js +10 -2
  82. package/esm/Button/Button.js.map +1 -1
  83. package/esm/Button/typings.d.ts +1 -0
  84. package/esm/Button/typings.d.ts.map +1 -1
  85. package/esm/ColorPicker/ColorPicker.d.ts.map +1 -1
  86. package/esm/ColorPicker/ColorPicker.js +29 -39
  87. package/esm/ColorPicker/ColorPicker.js.map +1 -1
  88. package/esm/ColorPicker/components/ColorPickerMatrix.d.ts +2 -4
  89. package/esm/ColorPicker/components/ColorPickerMatrix.d.ts.map +1 -1
  90. package/esm/ColorPicker/components/ColorPickerMatrix.js +23 -21
  91. package/esm/ColorPicker/components/ColorPickerMatrix.js.map +1 -1
  92. package/esm/ColorPicker/components/ColorsPreview.d.ts +2 -5
  93. package/esm/ColorPicker/components/ColorsPreview.d.ts.map +1 -1
  94. package/esm/ColorPicker/components/ColorsPreview.js +12 -20
  95. package/esm/ColorPicker/components/ColorsPreview.js.map +1 -1
  96. package/esm/ColorPicker/components/HexColorInput.d.ts +2 -6
  97. package/esm/ColorPicker/components/HexColorInput.d.ts.map +1 -1
  98. package/esm/ColorPicker/components/HexColorInput.js +12 -17
  99. package/esm/ColorPicker/components/HexColorInput.js.map +1 -1
  100. package/esm/ColorPicker/components/HueColorPicker.d.ts +2 -14
  101. package/esm/ColorPicker/components/HueColorPicker.d.ts.map +1 -1
  102. package/esm/ColorPicker/components/HueColorPicker.js +38 -46
  103. package/esm/ColorPicker/components/HueColorPicker.js.map +1 -1
  104. package/esm/Dialog/ConfirmDialog.d.ts +2 -4
  105. package/esm/Dialog/ConfirmDialog.d.ts.map +1 -1
  106. package/esm/Dialog/ConfirmDialog.js +9 -12
  107. package/esm/Dialog/ConfirmDialog.js.map +1 -1
  108. package/esm/Dialog/ConfirmDialogBase.d.ts.map +1 -1
  109. package/esm/Dialog/ConfirmDialogBase.js +1 -1
  110. package/esm/Dialog/ConfirmDialogBase.js.map +1 -1
  111. package/esm/Dialog/DialogBase.d.ts.map +1 -1
  112. package/esm/Dialog/DialogBase.js +3 -2
  113. package/esm/Dialog/DialogBase.js.map +1 -1
  114. package/esm/Dialog/ShareDialog/ShareDialogBase/AddGranteeButton.d.ts.map +1 -1
  115. package/esm/Dialog/ShareDialog/ShareDialogBase/AddGranteeButton.js +5 -6
  116. package/esm/Dialog/ShareDialog/ShareDialogBase/AddGranteeButton.js.map +1 -1
  117. package/esm/Dialog/typings.d.ts +5 -0
  118. package/esm/Dialog/typings.d.ts.map +1 -1
  119. package/esm/Dropdown/Dropdown.d.ts +1 -1
  120. package/esm/Dropdown/Dropdown.d.ts.map +1 -1
  121. package/esm/Dropdown/Dropdown.js.map +1 -1
  122. package/esm/FilterLabel/FilterLabel.d.ts.map +1 -1
  123. package/esm/FilterLabel/FilterLabel.js +41 -60
  124. package/esm/FilterLabel/FilterLabel.js.map +1 -1
  125. package/esm/FlexDimensions/FlexDimensions.js +1 -1
  126. package/esm/Form/Checkbox.d.ts +8 -20
  127. package/esm/Form/Checkbox.d.ts.map +1 -1
  128. package/esm/Form/Checkbox.js +15 -27
  129. package/esm/Form/Checkbox.js.map +1 -1
  130. package/esm/Form/InputPure.d.ts +20 -20
  131. package/esm/Form/InputPure.d.ts.map +1 -1
  132. package/esm/Form/InputPure.js +1 -1
  133. package/esm/Form/InputPure.js.map +1 -1
  134. package/esm/Header/Header.d.ts.map +1 -1
  135. package/esm/Header/Header.js +262 -219
  136. package/esm/Header/Header.js.map +1 -1
  137. package/esm/Header/HeaderMenu.d.ts +1 -3
  138. package/esm/Header/HeaderMenu.d.ts.map +1 -1
  139. package/esm/Header/HeaderMenu.js +19 -25
  140. package/esm/Header/HeaderMenu.js.map +1 -1
  141. package/esm/List/InsightListItem.d.ts +1 -14
  142. package/esm/List/InsightListItem.d.ts.map +1 -1
  143. package/esm/List/InsightListItem.js +34 -41
  144. package/esm/List/InsightListItem.js.map +1 -1
  145. package/esm/List/InvertableSelect/InvertableSelectSelectionStatus.d.ts.map +1 -1
  146. package/esm/List/InvertableSelect/InvertableSelectSelectionStatus.js +5 -4
  147. package/esm/List/InvertableSelect/InvertableSelectSelectionStatus.js.map +1 -1
  148. package/esm/List/InvertableSelect/InvertableSelectVirtualised.d.ts.map +1 -1
  149. package/esm/List/InvertableSelect/InvertableSelectVirtualised.js +11 -6
  150. package/esm/List/InvertableSelect/InvertableSelectVirtualised.js.map +1 -1
  151. package/esm/List/LegacyInvertableList.d.ts +3 -74
  152. package/esm/List/LegacyInvertableList.d.ts.map +1 -1
  153. package/esm/List/LegacyInvertableList.js +189 -169
  154. package/esm/List/LegacyInvertableList.js.map +1 -1
  155. package/esm/List/LegacyList.d.ts +2 -16
  156. package/esm/List/LegacyList.d.ts.map +1 -1
  157. package/esm/List/LegacyList.js +40 -65
  158. package/esm/List/LegacyList.js.map +1 -1
  159. package/esm/List/LegacyListItem.d.ts +2 -7
  160. package/esm/List/LegacyListItem.d.ts.map +1 -1
  161. package/esm/List/LegacyListItem.js +11 -17
  162. package/esm/List/LegacyListItem.js.map +1 -1
  163. package/esm/List/LegacyMultiSelectList.d.ts +1 -47
  164. package/esm/List/LegacyMultiSelectList.d.ts.map +1 -1
  165. package/esm/List/LegacyMultiSelectList.js +78 -108
  166. package/esm/List/LegacyMultiSelectList.js.map +1 -1
  167. package/esm/List/LegacyMultiSelectListItem.d.ts +2 -20
  168. package/esm/List/LegacyMultiSelectListItem.d.ts.map +1 -1
  169. package/esm/List/LegacyMultiSelectListItem.js +29 -49
  170. package/esm/List/LegacyMultiSelectListItem.js.map +1 -1
  171. package/esm/List/LegacySingleSelectList.d.ts +2 -27
  172. package/esm/List/LegacySingleSelectList.d.ts.map +1 -1
  173. package/esm/List/LegacySingleSelectList.js +32 -45
  174. package/esm/List/LegacySingleSelectList.js.map +1 -1
  175. package/esm/List/LegacySingleSelectListItem.d.ts +2 -21
  176. package/esm/List/LegacySingleSelectListItem.d.ts.map +1 -1
  177. package/esm/List/LegacySingleSelectListItem.js +37 -52
  178. package/esm/List/LegacySingleSelectListItem.js.map +1 -1
  179. package/esm/List/MultiSelectList.d.ts.map +1 -1
  180. package/esm/List/MultiSelectList.js +51 -53
  181. package/esm/List/MultiSelectList.js.map +1 -1
  182. package/esm/List/MultiSelectListItem.d.ts +2 -6
  183. package/esm/List/MultiSelectListItem.d.ts.map +1 -1
  184. package/esm/List/MultiSelectListItem.js +19 -23
  185. package/esm/List/MultiSelectListItem.js.map +1 -1
  186. package/esm/Menu/ControlledMenu.d.ts +1 -9
  187. package/esm/Menu/ControlledMenu.d.ts.map +1 -1
  188. package/esm/Menu/ControlledMenu.js +21 -33
  189. package/esm/Menu/ControlledMenu.js.map +1 -1
  190. package/esm/Menu/MenuState.d.ts +1 -9
  191. package/esm/Menu/MenuState.d.ts.map +1 -1
  192. package/esm/Menu/MenuState.js +19 -28
  193. package/esm/Menu/MenuState.js.map +1 -1
  194. package/esm/Menu/menuOpener/MenuOpenedByClick.d.ts.map +1 -1
  195. package/esm/Menu/menuOpener/MenuOpenedByClick.js +6 -5
  196. package/esm/Menu/menuOpener/MenuOpenedByClick.js.map +1 -1
  197. package/esm/Menu/menuOpener/MenuOpenedByHover.d.ts +1 -9
  198. package/esm/Menu/menuOpener/MenuOpenedByHover.d.ts.map +1 -1
  199. package/esm/Menu/menuOpener/MenuOpenedByHover.js +28 -28
  200. package/esm/Menu/menuOpener/MenuOpenedByHover.js.map +1 -1
  201. package/esm/Menu/menuOpener/MenuOpener.d.ts +1 -5
  202. package/esm/Menu/menuOpener/MenuOpener.d.ts.map +1 -1
  203. package/esm/Menu/menuOpener/MenuOpener.js +26 -17
  204. package/esm/Menu/menuOpener/MenuOpener.js.map +1 -1
  205. package/esm/Menu/positioning/MenuPosition.d.ts +1 -13
  206. package/esm/Menu/positioning/MenuPosition.d.ts.map +1 -1
  207. package/esm/Menu/positioning/MenuPosition.js +17 -26
  208. package/esm/Menu/positioning/MenuPosition.js.map +1 -1
  209. package/esm/Menu/positioning/PositionedMenuContent.d.ts +1 -11
  210. package/esm/Menu/positioning/PositionedMenuContent.d.ts.map +1 -1
  211. package/esm/Menu/positioning/PositionedMenuContent.js +47 -48
  212. package/esm/Menu/positioning/PositionedMenuContent.js.map +1 -1
  213. package/esm/Menu/utils/OutsideClickHandler.d.ts +1 -13
  214. package/esm/Menu/utils/OutsideClickHandler.d.ts.map +1 -1
  215. package/esm/Menu/utils/OutsideClickHandler.js +23 -37
  216. package/esm/Menu/utils/OutsideClickHandler.js.map +1 -1
  217. package/esm/Menu/utils/RenderChildrenInPortal.d.ts +1 -7
  218. package/esm/Menu/utils/RenderChildrenInPortal.d.ts.map +1 -1
  219. package/esm/Menu/utils/RenderChildrenInPortal.js +20 -19
  220. package/esm/Menu/utils/RenderChildrenInPortal.js.map +1 -1
  221. package/esm/Messages/Messages.d.ts +7 -1
  222. package/esm/Messages/Messages.d.ts.map +1 -1
  223. package/esm/Messages/Messages.js +31 -3
  224. package/esm/Messages/Messages.js.map +1 -1
  225. package/esm/Messages/ToastMessages.d.ts.map +1 -1
  226. package/esm/Messages/ToastMessages.js +7 -6
  227. package/esm/Messages/ToastMessages.js.map +1 -1
  228. package/esm/Messages/typings.d.ts +5 -0
  229. package/esm/Messages/typings.d.ts.map +1 -1
  230. package/esm/Messages/typings.js +1 -1
  231. package/esm/Overlay/ErrorOverlay.d.ts +1 -3
  232. package/esm/Overlay/ErrorOverlay.d.ts.map +1 -1
  233. package/esm/Overlay/ErrorOverlay.js +9 -11
  234. package/esm/Overlay/ErrorOverlay.js.map +1 -1
  235. package/esm/RecurrenceForm/DateTime.d.ts.map +1 -1
  236. package/esm/RecurrenceForm/DateTime.js +37 -23
  237. package/esm/RecurrenceForm/DateTime.js.map +1 -1
  238. package/esm/ResponsiveText/ResponsiveText.d.ts +1 -0
  239. package/esm/ResponsiveText/ResponsiveText.d.ts.map +1 -1
  240. package/esm/ResponsiveText/ResponsiveText.js +3 -3
  241. package/esm/ResponsiveText/ResponsiveText.js.map +1 -1
  242. package/esm/ShortenedText/ShortenedText.js +1 -1
  243. package/esm/Spinner/Spinner.d.ts +2 -8
  244. package/esm/Spinner/Spinner.d.ts.map +1 -1
  245. package/esm/Spinner/Spinner.js +13 -19
  246. package/esm/Spinner/Spinner.js.map +1 -1
  247. package/esm/Tabs/Tabs.d.ts +2 -14
  248. package/esm/Tabs/Tabs.d.ts.map +1 -1
  249. package/esm/Tabs/Tabs.js +31 -43
  250. package/esm/Tabs/Tabs.js.map +1 -1
  251. package/esm/TextAreaWithSubmit/TextAreaWithSubmit.d.ts +3 -46
  252. package/esm/TextAreaWithSubmit/TextAreaWithSubmit.d.ts.map +1 -1
  253. package/esm/TextAreaWithSubmit/TextAreaWithSubmit.js +100 -133
  254. package/esm/TextAreaWithSubmit/TextAreaWithSubmit.js.map +1 -1
  255. package/esm/Timepicker/Timepicker.d.ts +3 -29
  256. package/esm/Timepicker/Timepicker.d.ts.map +1 -1
  257. package/esm/Timepicker/Timepicker.js +79 -102
  258. package/esm/Timepicker/Timepicker.js.map +1 -1
  259. package/esm/index.d.ts +2 -2
  260. package/esm/index.d.ts.map +1 -1
  261. package/esm/index.js +1 -1
  262. package/esm/index.js.map +1 -1
  263. package/esm/measureNumberFormat/customFormatDialog/CustomFormatDialog.d.ts +1 -11
  264. package/esm/measureNumberFormat/customFormatDialog/CustomFormatDialog.d.ts.map +1 -1
  265. package/esm/measureNumberFormat/customFormatDialog/CustomFormatDialog.js +28 -37
  266. package/esm/measureNumberFormat/customFormatDialog/CustomFormatDialog.js.map +1 -1
  267. package/esm/measureNumberFormat/customFormatDialog/FormatInput.d.ts.map +1 -1
  268. package/esm/measureNumberFormat/customFormatDialog/FormatInput.js +12 -14
  269. package/esm/measureNumberFormat/customFormatDialog/FormatInput.js.map +1 -1
  270. package/esm/measureNumberFormat/customFormatDialog/formatTemplatesDropdown/DropdownItem.d.ts +2 -12
  271. package/esm/measureNumberFormat/customFormatDialog/formatTemplatesDropdown/DropdownItem.d.ts.map +1 -1
  272. package/esm/measureNumberFormat/customFormatDialog/formatTemplatesDropdown/DropdownItem.js +21 -28
  273. package/esm/measureNumberFormat/customFormatDialog/formatTemplatesDropdown/DropdownItem.js.map +1 -1
  274. package/esm/measureNumberFormat/customFormatDialog/formatTemplatesDropdown/FormatTemplatesDropdown.d.ts +1 -13
  275. package/esm/measureNumberFormat/customFormatDialog/formatTemplatesDropdown/FormatTemplatesDropdown.d.ts.map +1 -1
  276. package/esm/measureNumberFormat/customFormatDialog/formatTemplatesDropdown/FormatTemplatesDropdown.js +20 -26
  277. package/esm/measureNumberFormat/customFormatDialog/formatTemplatesDropdown/FormatTemplatesDropdown.js.map +1 -1
  278. package/esm/measureNumberFormat/customFormatDialog/previewSection/ExtendedPreview.d.ts +1 -8
  279. package/esm/measureNumberFormat/customFormatDialog/previewSection/ExtendedPreview.d.ts.map +1 -1
  280. package/esm/measureNumberFormat/customFormatDialog/previewSection/ExtendedPreview.js +16 -22
  281. package/esm/measureNumberFormat/customFormatDialog/previewSection/ExtendedPreview.js.map +1 -1
  282. package/esm/measureNumberFormat/customFormatDialog/previewSection/Preview.d.ts +1 -8
  283. package/esm/measureNumberFormat/customFormatDialog/previewSection/Preview.d.ts.map +1 -1
  284. package/esm/measureNumberFormat/customFormatDialog/previewSection/Preview.js +15 -19
  285. package/esm/measureNumberFormat/customFormatDialog/previewSection/Preview.js.map +1 -1
  286. package/esm/measureNumberFormat/presetsDropdown/PresetsDropdown.d.ts +1 -6
  287. package/esm/measureNumberFormat/presetsDropdown/PresetsDropdown.d.ts.map +1 -1
  288. package/esm/measureNumberFormat/presetsDropdown/PresetsDropdown.js +19 -25
  289. package/esm/measureNumberFormat/presetsDropdown/PresetsDropdown.js.map +1 -1
  290. package/esm/measureNumberFormat/presetsDropdown/PresetsDropdownItem.d.ts +1 -5
  291. package/esm/measureNumberFormat/presetsDropdown/PresetsDropdownItem.d.ts.map +1 -1
  292. package/esm/measureNumberFormat/presetsDropdown/PresetsDropdownItem.js +13 -20
  293. package/esm/measureNumberFormat/presetsDropdown/PresetsDropdownItem.js.map +1 -1
  294. package/esm/sdk-ui-kit.d.ts +99 -257
  295. package/esm/typings/accessibility.d.ts +2 -1
  296. package/esm/typings/accessibility.d.ts.map +1 -1
  297. package/esm/utils/domUtilities.d.ts +2 -2
  298. package/esm/utils/domUtilities.d.ts.map +1 -1
  299. package/esm/utils/domUtilities.js +28 -4
  300. package/esm/utils/domUtilities.js.map +1 -1
  301. package/package.json +8 -8
  302. package/src/@ui/UiAsyncTable/asyncTable.scss +19 -2
  303. package/src/@ui/themeColorsMap.scss +1 -0
  304. package/styles/css/invertableSelect.css +13 -0
  305. package/styles/css/invertableSelect.css.map +1 -1
  306. package/styles/css/main.css +33 -1
  307. package/styles/css/main.css.map +1 -1
  308. package/styles/scss/invertableSelect.scss +15 -0
  309. package/esm/@ui/UiAsyncTable/UiAsyncTable/AsyncTableFilter.d.ts +0 -7
  310. package/esm/@ui/UiAsyncTable/UiAsyncTable/AsyncTableFilter.d.ts.map +0 -1
  311. package/esm/@ui/UiAsyncTable/UiAsyncTable/AsyncTableFilter.js +0 -32
  312. package/esm/@ui/UiAsyncTable/UiAsyncTable/AsyncTableFilter.js.map +0 -1
  313. package/esm/@ui/UiAsyncTable/UiAsyncTable/AsyncTableRow.d.ts +0 -6
  314. package/esm/@ui/UiAsyncTable/UiAsyncTable/AsyncTableRow.d.ts.map +0 -1
  315. package/esm/@ui/UiAsyncTable/UiAsyncTable/AsyncTableRow.js +0 -86
  316. package/esm/@ui/UiAsyncTable/UiAsyncTable/AsyncTableRow.js.map +0 -1
  317. package/esm/@ui/UiAsyncTable/UiAsyncTable/AsyncTableToolbar.d.ts +0 -6
  318. package/esm/@ui/UiAsyncTable/UiAsyncTable/AsyncTableToolbar.d.ts.map +0 -1
  319. package/esm/@ui/UiAsyncTable/UiAsyncTable/AsyncTableToolbar.js +0 -72
  320. package/esm/@ui/UiAsyncTable/UiAsyncTable/AsyncTableToolbar.js.map +0 -1
@@ -1,5 +1,5 @@
1
1
  // (C) 2007-2025 GoodData Corporation
2
- import React, { Component, createRef } from "react";
2
+ import React, { useState, useRef, useEffect, useCallback, useMemo } from "react";
3
3
  import { injectIntl, FormattedMessage } from "react-intl";
4
4
  import cx from "classnames";
5
5
  import differenceInMonths from "date-fns/differenceInMonths/index.js";
@@ -33,108 +33,62 @@ function getWidthOfChildren(element, selector = "> *") {
33
33
  .map(getOuterWidth)
34
34
  .reduce((sum, childWidth) => sum + childWidth, SAFETY_PADDING);
35
35
  }
36
- class AppHeaderCore extends Component {
37
- static defaultProps = {
38
- logoHref: "/",
39
- helpMenuDropdownAlignPoints: "br tr",
40
- accountMenuItems: [],
41
- helpMenuItems: [],
42
- menuItemsGroups: [],
43
- search: null,
44
- notificationsPanel: null,
45
- };
46
- nodeRef = createRef();
47
- resizeHandler = debounce(() => this.measure(), 100);
48
- stylesheet;
49
- constructor(props) {
50
- super(props);
51
- this.state = {
52
- childrenWidth: 0,
53
- guid: `header-${uuid()}`,
54
- isOverlayMenuOpen: false,
55
- responsiveMode: false,
56
- isHelpMenuOpen: false,
57
- isSearchMenuOpen: false,
58
- isNotificationsMenuOpen: false,
59
- };
60
- }
61
- render() {
62
- const { workspacePicker, isAccessibilityCompliant, intl } = this.props;
63
- this.createStyles();
64
- const logoLinkClassName = cx({
65
- "gd-header-logo": true,
66
- "gd-header-measure": true,
67
- "gd-header-shrink": this.state.responsiveMode,
68
- });
69
- const applicationHeaderAccessibilityLabel = intl.formatMessage({
70
- id: "gs.header.accessibility.label",
71
- });
72
- return (React.createElement("header", { "aria-label": applicationHeaderAccessibilityLabel, className: this.getClassNames(), ref: this.nodeRef },
73
- isAccessibilityCompliant
74
- ? this.renderAccessibilityLogo(logoLinkClassName)
75
- : this.renderLogo(logoLinkClassName),
76
- workspacePicker,
77
- this.renderNav()));
78
- }
79
- componentDidMount() {
80
- window.addEventListener("resize", this.resizeHandler);
81
- }
82
- componentWillUnmount() {
83
- window.removeEventListener("resize", this.resizeHandler);
84
- removeFromDom(this.stylesheet);
85
- }
86
- renderLogo(logoLinkClassName) {
87
- const { logoUrl, logoTitle } = this.props;
88
- return (React.createElement("a", { href: this.props.logoHref, onClick: this.props.onLogoClick, className: logoLinkClassName },
89
- React.createElement("img", { src: logoUrl, title: logoTitle, onLoad: this.measureChildren, onError: this.measureChildren, alt: "" })));
90
- }
91
- renderAccessibilityLogo(logoLinkClassName) {
92
- const { logoUrl, logoTitle, intl } = this.props;
93
- const logoHrefAccesibilityText = intl.formatMessage({
94
- id: "gs.header.href.accessibility",
95
- });
96
- const imageAltAccessibilityText = intl.formatMessage({
97
- id: "gs.header.logo.title.accessibility",
98
- });
99
- return (React.createElement("a", { "aria-label": logoHrefAccesibilityText, title: logoHrefAccesibilityText, href: this.props.logoHref, onClick: this.props.onLogoClick, className: logoLinkClassName },
100
- React.createElement("img", { src: logoUrl, title: logoTitle, onLoad: this.measureChildren, onError: this.measureChildren, alt: imageAltAccessibilityText })));
101
- }
102
- getClassNames = () => {
103
- return cx({
104
- "gd-header": true,
105
- [this.state.guid]: true,
106
- [this.props.className]: !!this.props.className,
107
- });
108
- };
109
- measureChildren = () => {
110
- const currentDOMNode = this.nodeRef.current;
36
+ function AppHeaderCore(props) {
37
+ const { logoHref = "/", accountMenuItems = [], helpMenuItems = [], menuItemsGroups = [], search = null, notificationsPanel = null, workspacePicker, isAccessibilityCompliant, intl, logoUrl, logoTitle, className, activeColor, headerColor, headerTextColor, documentationUrl, expiredDate, showUpsellButton, onUpsellButtonClick, badges, showStaticHelpMenu, userName, theme, helpMenuDropdownAlignPoints: helpDropdownAlign, disableHelpDropdown, onHelpClick, helpRedirectUrl, showInviteItem, onInviteItemClick, showChatItem, onChatItemClick, onLogoClick, onMenuItemClick, } = props;
38
+ const [state, setState] = useState({
39
+ childrenWidth: 0,
40
+ guid: `header-${uuid()}`,
41
+ isOverlayMenuOpen: false,
42
+ responsiveMode: false,
43
+ isHelpMenuOpen: false,
44
+ isSearchMenuOpen: false,
45
+ isNotificationsMenuOpen: false,
46
+ });
47
+ const nodeRef = useRef(null);
48
+ const stylesheetRef = useRef(null);
49
+ const measureChildren = useCallback(() => {
50
+ const currentDOMNode = nodeRef.current;
111
51
  const childrenWidth = getWidthOfChildren(currentDOMNode, ".gd-header-measure");
112
- this.setState({
52
+ setState((prevState) => ({
53
+ ...prevState,
113
54
  childrenWidth,
114
- }, this.measure);
115
- };
116
- measure = () => {
117
- const currentDOMNode = this.nodeRef.current;
55
+ }));
56
+ }, []);
57
+ const measure = useCallback(() => {
58
+ const currentDOMNode = nodeRef.current;
118
59
  if (!currentDOMNode) {
119
60
  // ref is null because 'this.measure()' is called after 100ms 'componentWillUnmount' called,
120
61
  // which cleans the nodeRef
121
62
  return;
122
63
  }
123
64
  const currentWidth = currentDOMNode.clientWidth;
124
- const responsiveMode = currentWidth < this.state.childrenWidth;
125
- if (this.state.responsiveMode !== responsiveMode) {
126
- this.setState({
65
+ const responsiveMode = currentWidth < state.childrenWidth;
66
+ if (state.responsiveMode !== responsiveMode) {
67
+ setState((prevState) => ({
68
+ ...prevState,
127
69
  responsiveMode,
128
70
  isOverlayMenuOpen: false,
129
71
  isHelpMenuOpen: false,
130
72
  isSearchMenuOpen: false,
131
73
  isNotificationsMenuOpen: false,
132
- });
74
+ }));
133
75
  }
134
- };
135
- createStyles = () => {
136
- const { guid } = this.state;
137
- const { activeColor, headerColor, headerTextColor } = this.props;
76
+ }, [state.childrenWidth, state.responsiveMode]);
77
+ const resizeHandler = useMemo(() => debounce(() => measure(), 100), [measure]);
78
+ useEffect(() => {
79
+ measure();
80
+ }, [state.childrenWidth, measure]);
81
+ useEffect(() => {
82
+ window.addEventListener("resize", resizeHandler);
83
+ return () => {
84
+ window.removeEventListener("resize", resizeHandler);
85
+ if (stylesheetRef.current) {
86
+ removeFromDom(stylesheetRef.current);
87
+ }
88
+ };
89
+ }, [resizeHandler]);
90
+ const createStyles = useCallback(() => {
91
+ const { guid } = state;
138
92
  const textColor = getTextColor(headerTextColor, headerColor);
139
93
  const itemActiveColor = getItemActiveColor(activeColor, headerColor);
140
94
  const itemHoverColor = getItemHoverColor(headerColor, activeColor);
@@ -150,87 +104,90 @@ class AppHeaderCore extends Component {
150
104
  css.push(`.${guid} .hamburger-icon:not(.is-open) i { border-color: ${textColor}}`);
151
105
  css.push(`.${guid} .hamburger-icon:not(.is-open):after { border-color: ${textColor}}`);
152
106
  css.push(`.${guid} .hamburger-icon:not(.is-open):before { border-color: ${textColor}}`);
153
- this.stylesheet = addCssToStylesheet(`header-css-${guid}`, css.join("\n"), true);
154
- };
155
- setOverlayMenu = (isOverlayMenuOpen) => {
156
- this.setState({
107
+ stylesheetRef.current = addCssToStylesheet(`header-css-${guid}`, css.join("\n"), true);
108
+ }, [state, activeColor, headerColor, headerTextColor]);
109
+ const setOverlayMenu = useCallback((isOverlayMenuOpen) => {
110
+ setState((prevState) => ({
111
+ ...prevState,
157
112
  isOverlayMenuOpen,
158
113
  isHelpMenuOpen: false,
159
114
  isSearchMenuOpen: false,
160
115
  isNotificationsMenuOpen: false,
161
- });
162
- };
163
- toggleSearchMenu = () => {
164
- this.setState(({ isSearchMenuOpen }) => ({
165
- isSearchMenuOpen: !isSearchMenuOpen,
116
+ }));
117
+ }, []);
118
+ const toggleSearchMenu = useCallback(() => {
119
+ setState((prevState) => ({
120
+ ...prevState,
121
+ isSearchMenuOpen: !prevState.isSearchMenuOpen,
166
122
  isHelpMenuOpen: false,
167
123
  isNotificationsMenuOpen: false,
168
124
  }));
169
- };
170
- toggleNotificationsMenu = () => {
171
- this.setState(({ isNotificationsMenuOpen }) => ({
172
- isNotificationsMenuOpen: !isNotificationsMenuOpen,
125
+ }, []);
126
+ const toggleNotificationsMenu = useCallback(() => {
127
+ setState((prevState) => ({
128
+ ...prevState,
129
+ isNotificationsMenuOpen: !prevState.isNotificationsMenuOpen,
173
130
  isHelpMenuOpen: false,
174
131
  isSearchMenuOpen: false,
175
132
  }));
176
- };
177
- closeNotificationsMenu = () => {
178
- this.setState(() => ({
133
+ }, []);
134
+ const closeNotificationsMenu = useCallback(() => {
135
+ setState((prevState) => ({
136
+ ...prevState,
179
137
  isNotificationsMenuOpen: false,
180
138
  isHelpMenuOpen: false,
181
139
  isSearchMenuOpen: false,
182
140
  isOverlayMenuOpen: false,
183
141
  }));
184
- };
185
- setHelpMenu = (isHelpMenuOpen) => {
186
- this.setState({
142
+ }, []);
143
+ const setHelpMenu = useCallback((isHelpMenuOpen) => {
144
+ setState((prevState) => ({
145
+ ...prevState,
187
146
  isHelpMenuOpen,
188
147
  isSearchMenuOpen: false,
189
148
  isNotificationsMenuOpen: false,
190
- });
191
- };
192
- toggleHelpMenu = () => this.setHelpMenu(!this.state.isHelpMenuOpen);
193
- handleMenuItemClick = (item, event) => {
194
- if (this.state.isHelpMenuOpen) {
195
- this.setOverlayMenu(false);
149
+ }));
150
+ }, []);
151
+ const toggleHelpMenu = useCallback(() => setHelpMenu(!state.isHelpMenuOpen), [setHelpMenu, state]);
152
+ const handleMenuItemClick = useCallback((item, event) => {
153
+ if (state.isHelpMenuOpen) {
154
+ setOverlayMenu(false);
196
155
  }
197
- this.props.onMenuItemClick(item, event);
198
- };
199
- addHelpItemGroup = (itemGroups) => {
200
- return !this.props.documentationUrl ? itemGroups : [...itemGroups, [this.getHelpMenuLink()]];
201
- };
202
- addAdditionalItems = (itemGroups) => {
156
+ onMenuItemClick(item, event);
157
+ }, [state, setOverlayMenu, onMenuItemClick]);
158
+ const getHelpMenuLink = useCallback((icon = "gd-icon-header-help") => ({
159
+ key: "gs.header.help",
160
+ className: `s-menu-help ${icon}`,
161
+ href: state.responsiveMode && helpMenuItems ? undefined : documentationUrl,
162
+ onClick: state.responsiveMode && helpMenuItems ? toggleHelpMenu : undefined,
163
+ }), [state, helpMenuItems, documentationUrl, toggleHelpMenu]);
164
+ const addHelpItemGroup = useCallback((itemGroups) => {
165
+ return !documentationUrl ? itemGroups : [...itemGroups, [getHelpMenuLink()]];
166
+ }, [documentationUrl, getHelpMenuLink]);
167
+ const addAdditionalItems = useCallback((itemGroups) => {
203
168
  const additionalItems = [];
204
- if (this.props.search) {
169
+ if (search) {
205
170
  additionalItems.push({
206
171
  key: "gs.header.search",
207
172
  className: "gd-icon-header-search",
208
- onClick: this.toggleSearchMenu,
173
+ onClick: toggleSearchMenu,
209
174
  });
210
175
  }
211
- if (this.props.notificationsPanel) {
176
+ if (notificationsPanel) {
212
177
  additionalItems.push({
213
178
  key: "gs.header.notifications",
214
179
  className: "gd-icon-header-notifications",
215
180
  icon: React.createElement(Icon.Alert, { width: 16, height: 16 }),
216
- onClick: this.toggleNotificationsMenu,
181
+ onClick: toggleNotificationsMenu,
217
182
  });
218
183
  }
219
184
  if (!additionalItems.length) {
220
185
  return itemGroups;
221
186
  }
222
187
  return [...itemGroups, additionalItems];
223
- };
224
- getHelpMenu = () => [
225
- [this.getHelpMenuLink("gd-icon-header-help-back"), ...this.props.helpMenuItems],
226
- ];
227
- getHelpMenuLink = (icon = "gd-icon-header-help") => ({
228
- key: "gs.header.help",
229
- className: `s-menu-help ${icon}`,
230
- href: this.state.responsiveMode && this.props.helpMenuItems ? undefined : this.props.documentationUrl,
231
- onClick: this.state.responsiveMode && this.props.helpMenuItems ? this.toggleHelpMenu : undefined,
232
- });
233
- getTrialCountdown = (expiredDate) => {
188
+ }, [search, notificationsPanel, toggleSearchMenu, toggleNotificationsMenu]);
189
+ const getHelpMenu = useCallback(() => [[getHelpMenuLink("gd-icon-header-help-back"), ...helpMenuItems]], [getHelpMenuLink, helpMenuItems]);
190
+ const getTrialCountdown = useCallback((expiredDate) => {
234
191
  // expiredDate is the last day that user can use the service
235
192
  const trialDaysLeft = differenceInCalendarDays(new Date(expiredDate), new Date()) + 1;
236
193
  if (trialDaysLeft === 1) {
@@ -248,116 +205,202 @@ class AppHeaderCore extends Component {
248
205
  return (React.createElement(FormattedMessage, { id: "gs.header.countdown.numberOfMonthsLeft", values: { number: trialMonthsLeft + 1 } }));
249
206
  }
250
207
  return "";
251
- };
252
- renderNav = () => {
253
- return this.state.responsiveMode ? this.renderMobileNav() : this.renderStandardNav();
254
- };
255
- renderMobileNav = () => {
256
- const iconClasses = cx({
257
- "hamburger-icon": true,
258
- "is-open": this.state.isOverlayMenuOpen,
259
- "search-open": this.state.isSearchMenuOpen,
260
- "notifications-open": this.state.isNotificationsMenuOpen,
208
+ }, []);
209
+ const getClassNames = useCallback(() => {
210
+ return cx({
211
+ "gd-header": true,
212
+ [state.guid]: true,
213
+ [className]: !!className,
261
214
  });
262
- return (React.createElement(React.Fragment, null,
263
- React.createElement("div", { className: "hamburger-wrapper", key: "hamburger-wrapper" },
264
- React.createElement("div", { className: iconClasses, key: "hamburger-icon", onClick: () => {
265
- this.setOverlayMenu(!this.state.isOverlayMenuOpen);
266
- } },
267
- React.createElement("i", null))),
268
- this.state.isOverlayMenuOpen ? this.renderOverlayMenu() : null));
269
- };
270
- renderOverlayMenu = () => {
271
- let content = this.renderVerticalMenu();
272
- if (this.state.isSearchMenuOpen) {
273
- content = this.renderSearchMenu();
274
- }
275
- if (this.state.isNotificationsMenuOpen) {
276
- content = this.renderNotificationsOverlay();
277
- }
278
- return (React.createElement(Overlay, { key: "header-overlay-menu", alignPoints: [
279
- {
280
- align: this.state.isSearchMenuOpen || this.state.isNotificationsMenuOpen
281
- ? "tl tl"
282
- : "tr tr",
283
- },
284
- ], closeOnOutsideClick: this.state.isOverlayMenuOpen, isModal: this.state.isOverlayMenuOpen, positionType: "fixed", onClose: () => {
285
- this.setOverlayMenu(false);
286
- } }, content));
287
- };
288
- renderSearchMenu = () => {
215
+ }, [state.guid, className]);
216
+ const renderLogo = useCallback((logoLinkClassName) => {
217
+ return (React.createElement("a", { href: logoHref, onClick: onLogoClick, className: logoLinkClassName },
218
+ React.createElement("img", { src: logoUrl, title: logoTitle, onLoad: measureChildren, onError: measureChildren, alt: "" })));
219
+ }, [logoHref, onLogoClick, logoUrl, logoTitle, measureChildren]);
220
+ const renderAccessibilityLogo = useCallback((logoLinkClassName) => {
221
+ const logoHrefAccesibilityText = intl.formatMessage({
222
+ id: "gs.header.href.accessibility",
223
+ });
224
+ const imageAltAccessibilityText = intl.formatMessage({
225
+ id: "gs.header.logo.title.accessibility",
226
+ });
227
+ return (React.createElement("a", { "aria-label": logoHrefAccesibilityText, title: logoHrefAccesibilityText, href: logoHref, onClick: onLogoClick, className: logoLinkClassName },
228
+ React.createElement("img", { src: logoUrl, title: logoTitle, onLoad: measureChildren, onError: measureChildren, alt: imageAltAccessibilityText })));
229
+ }, [intl, logoHref, onLogoClick, logoUrl, logoTitle, measureChildren]);
230
+ const renderSearchMenu = useCallback(() => {
289
231
  return (React.createElement("div", { className: "gd-header-menu-search" },
290
232
  React.createElement(Typography, { tagName: "h3", className: "gd-header-menu-search-title" },
291
233
  React.createElement(FormattedMessage, { id: "gs.header.search" })),
292
- React.createElement(HeaderSearchProvider, { isOpen: this.state.isSearchMenuOpen, toggleOpen: this.toggleSearchMenu }, this.props.search)));
293
- };
294
- renderNotificationsOverlay = () => {
295
- if (!this.props.notificationsPanel) {
234
+ React.createElement(HeaderSearchProvider, { isOpen: state.isSearchMenuOpen, toggleOpen: toggleSearchMenu }, search)));
235
+ }, [state.isSearchMenuOpen, toggleSearchMenu, search]);
236
+ const renderNotificationsOverlay = useCallback(() => {
237
+ if (!notificationsPanel) {
296
238
  return null;
297
239
  }
298
240
  return (React.createElement("div", { className: "gd-header-menu-notifications" },
299
241
  React.createElement(Typography, { tagName: "h3", className: "gd-header-menu-notifications-title" },
300
242
  React.createElement(FormattedMessage, { id: "gs.header.notifications" })),
301
- this.props.notificationsPanel({
243
+ notificationsPanel({
302
244
  isMobile: true,
303
- closeNotificationsOverlay: this.closeNotificationsMenu,
245
+ closeNotificationsOverlay: closeNotificationsMenu,
304
246
  })));
305
- };
306
- renderTrialItems = () => {
307
- if (this.props.expiredDate || this.props.showUpsellButton) {
247
+ }, [notificationsPanel, closeNotificationsMenu]);
248
+ const renderTrialItems = useCallback(() => {
249
+ if (expiredDate || showUpsellButton) {
308
250
  return (React.createElement("div", { className: "gd-header-menu-trial gd-header-measure" },
309
- this.props.expiredDate ? (React.createElement("div", { className: "gd-header-expiration-date" }, this.getTrialCountdown(this.props.expiredDate))) : null,
310
- this.props.showUpsellButton ? (React.createElement(HeaderUpsellButton, { onUpsellButtonClick: this.props.onUpsellButtonClick })) : null));
251
+ expiredDate ? (React.createElement("div", { className: "gd-header-expiration-date" }, getTrialCountdown(expiredDate))) : null,
252
+ showUpsellButton ? (React.createElement(HeaderUpsellButton, { onUpsellButtonClick: onUpsellButtonClick })) : null));
311
253
  }
312
254
  return null;
313
- };
314
- renderVerticalMenu = () => {
315
- const { badges } = this.props;
316
- const menuItemsGroups = !this.state.isHelpMenuOpen
317
- ? this.props.showStaticHelpMenu
318
- ? [[this.getHelpMenuLink()]]
319
- : this.addHelpItemGroup(this.addAdditionalItems(this.props.menuItemsGroups))
320
- : this.getHelpMenu();
255
+ }, [expiredDate, showUpsellButton, getTrialCountdown, onUpsellButtonClick]);
256
+ const renderLogoutButton = useCallback(() => {
257
+ const [logoutMenuItem] = accountMenuItems.filter((item) => item.key === "gs.header.logout");
258
+ return logoutMenuItem ? (React.createElement("button", { className: "logout-button gd-button s-logout", onClick: (e) => {
259
+ onMenuItemClick(logoutMenuItem, e);
260
+ } },
261
+ React.createElement(Icon.Logout, { className: "gd-icon-logout", color: theme?.palette?.complementary?.c0 }),
262
+ React.createElement("span", { className: "gd-button-text" },
263
+ React.createElement(FormattedMessage, { id: "gs.header.logout" })))) : (false);
264
+ }, [accountMenuItems, onMenuItemClick, theme?.palette?.complementary?.c0]);
265
+ const renderVerticalMenu = useCallback(() => {
266
+ const menuItemsGroupsToRender = !state.isHelpMenuOpen
267
+ ? showStaticHelpMenu
268
+ ? [[getHelpMenuLink()]]
269
+ : addHelpItemGroup(addAdditionalItems(menuItemsGroups))
270
+ : getHelpMenu();
321
271
  return (React.createElement("div", { key: "overlay-menu", className: "gd-header-menu-vertical-wrapper" },
322
272
  React.createElement("div", { className: "gd-header-menu-vertical-header" }, "Menu"),
323
273
  React.createElement("div", { className: "gd-header-menu-vertical-content" },
324
- React.createElement(HeaderMenu, { onMenuItemClick: this.handleMenuItemClick, sections: menuItemsGroups, className: "gd-header-menu-vertical" }),
325
- this.renderTrialItems()),
274
+ React.createElement(HeaderMenu, { onMenuItemClick: handleMenuItemClick, sections: menuItemsGroupsToRender, className: "gd-header-menu-vertical" }),
275
+ renderTrialItems()),
326
276
  React.createElement("div", { className: "gd-header-menu-vertical-footer" },
327
277
  !!badges && React.createElement("div", { className: "gd-header-vertical-badges" }, badges),
328
278
  React.createElement("div", { className: "gd-header-menu-vertical-bottom-item" },
329
- React.createElement("span", { className: "gd-header-username gd-icon-user" }, this.props.userName)),
330
- React.createElement("div", null, this.renderLogoutButton()))));
331
- };
332
- renderLogoutButton = () => {
333
- const [logoutMenuItem] = this.props.accountMenuItems.filter((item) => item.key === "gs.header.logout");
334
- return logoutMenuItem ? (React.createElement("button", { className: "logout-button gd-button s-logout", onClick: (e) => {
335
- this.props.onMenuItemClick(logoutMenuItem, e);
336
- } },
337
- React.createElement(Icon.Logout, { className: "gd-icon-logout", color: this.props.theme?.palette?.complementary?.c0 }),
338
- React.createElement("span", { className: "gd-button-text" },
339
- React.createElement(FormattedMessage, { id: "gs.header.logout" })))) : (false);
340
- };
341
- renderStandardNav = () => {
342
- const { badges, helpMenuDropdownAlignPoints, headerTextColor, headerColor } = this.props;
279
+ React.createElement("span", { className: "gd-header-username gd-icon-user" }, userName)),
280
+ React.createElement("div", null, renderLogoutButton()))));
281
+ }, [
282
+ state.isHelpMenuOpen,
283
+ showStaticHelpMenu,
284
+ getHelpMenuLink,
285
+ addHelpItemGroup,
286
+ addAdditionalItems,
287
+ menuItemsGroups,
288
+ getHelpMenu,
289
+ handleMenuItemClick,
290
+ renderTrialItems,
291
+ badges,
292
+ userName,
293
+ renderLogoutButton,
294
+ ]);
295
+ const renderOverlayMenu = useCallback(() => {
296
+ let content = renderVerticalMenu();
297
+ if (state.isSearchMenuOpen) {
298
+ content = renderSearchMenu();
299
+ }
300
+ if (state.isNotificationsMenuOpen) {
301
+ content = renderNotificationsOverlay();
302
+ }
303
+ return (React.createElement(Overlay, { key: "header-overlay-menu", alignPoints: [
304
+ {
305
+ align: state.isSearchMenuOpen || state.isNotificationsMenuOpen ? "tl tl" : "tr tr",
306
+ },
307
+ ], closeOnOutsideClick: state.isOverlayMenuOpen, isModal: state.isOverlayMenuOpen, positionType: "fixed", onClose: () => {
308
+ setOverlayMenu(false);
309
+ } }, content));
310
+ }, [
311
+ renderVerticalMenu,
312
+ state.isSearchMenuOpen,
313
+ state.isNotificationsMenuOpen,
314
+ renderSearchMenu,
315
+ renderNotificationsOverlay,
316
+ state.isOverlayMenuOpen,
317
+ setOverlayMenu,
318
+ ]);
319
+ const renderMobileNav = useCallback(() => {
320
+ const iconClasses = cx({
321
+ "hamburger-icon": true,
322
+ "is-open": state.isOverlayMenuOpen,
323
+ "search-open": state.isSearchMenuOpen,
324
+ "notifications-open": state.isNotificationsMenuOpen,
325
+ });
326
+ return (React.createElement(React.Fragment, null,
327
+ React.createElement("div", { className: "hamburger-wrapper", key: "hamburger-wrapper" },
328
+ React.createElement("div", { className: iconClasses, key: "hamburger-icon", onClick: () => {
329
+ setOverlayMenu(!state.isOverlayMenuOpen);
330
+ } },
331
+ React.createElement("i", null))),
332
+ state.isOverlayMenuOpen ? renderOverlayMenu() : null));
333
+ }, [
334
+ state.isOverlayMenuOpen,
335
+ state.isSearchMenuOpen,
336
+ state.isNotificationsMenuOpen,
337
+ setOverlayMenu,
338
+ renderOverlayMenu,
339
+ ]);
340
+ const renderStandardNav = useCallback(() => {
343
341
  const textColor = getTextColor(headerTextColor, headerColor);
344
342
  return (React.createElement("div", { className: "gd-header-stretch gd-header-menu-wrapper" },
345
- React.createElement(HeaderMenu, { onMenuItemClick: this.props.onMenuItemClick, sections: this.props.menuItemsGroups, className: "gd-header-menu-horizontal" }),
346
- this.renderTrialItems(),
347
- this.props.showChatItem ? (React.createElement(HeaderChatButton, { title: this.props.intl.formatMessage({ id: "gs.header.ai" }), color: this.props.theme?.palette?.primary?.base, onClick: this.props.onChatItemClick })) : null,
348
- this.props.notificationsPanel
349
- ? this.props.notificationsPanel({
343
+ React.createElement(HeaderMenu, { onMenuItemClick: onMenuItemClick, sections: menuItemsGroups, className: "gd-header-menu-horizontal" }),
344
+ renderTrialItems(),
345
+ showChatItem ? (React.createElement(HeaderChatButton, { title: intl.formatMessage({ id: "gs.header.ai" }), color: theme?.palette?.primary?.base, onClick: onChatItemClick })) : null,
346
+ notificationsPanel
347
+ ? notificationsPanel({
350
348
  isMobile: false,
351
- closeNotificationsOverlay: this.closeNotificationsMenu,
349
+ closeNotificationsOverlay: closeNotificationsMenu,
352
350
  })
353
351
  : null,
354
- this.props.search ? (React.createElement(HeaderSearchProvider, { isOpen: this.state.isSearchMenuOpen, toggleOpen: this.toggleSearchMenu },
355
- React.createElement(HeaderSearchButton, { title: this.props.intl.formatMessage({ id: "gs.header.search" }) }, this.props.search))) : null,
356
- this.props.helpMenuItems.length ? (React.createElement(HeaderHelp, { onMenuItemClick: this.props.onMenuItemClick, className: "gd-header-measure", helpMenuDropdownAlignPoints: helpMenuDropdownAlignPoints, items: this.props.helpMenuItems, disableDropdown: this.props.disableHelpDropdown, onHelpClicked: this.props.onHelpClick, helpRedirectUrl: this.props.helpRedirectUrl })) : null,
357
- this.props.showInviteItem ? (React.createElement(HeaderInvite, { onInviteItemClick: this.props.onInviteItemClick, textColor: textColor })) : null,
358
- React.createElement(HeaderAccount, { userName: this.props.userName, onMenuItemClick: this.props.onMenuItemClick, className: "gd-header-measure", items: this.props.accountMenuItems }),
352
+ search ? (React.createElement(HeaderSearchProvider, { isOpen: state.isSearchMenuOpen, toggleOpen: toggleSearchMenu },
353
+ React.createElement(HeaderSearchButton, { title: intl.formatMessage({ id: "gs.header.search" }) }, search))) : null,
354
+ helpMenuItems.length ? (React.createElement(HeaderHelp, { onMenuItemClick: onMenuItemClick, className: "gd-header-measure", helpMenuDropdownAlignPoints: helpDropdownAlign, items: helpMenuItems, disableDropdown: disableHelpDropdown, onHelpClicked: onHelpClick, helpRedirectUrl: helpRedirectUrl })) : null,
355
+ showInviteItem ? (React.createElement(HeaderInvite, { onInviteItemClick: onInviteItemClick, textColor: textColor })) : null,
356
+ React.createElement(HeaderAccount, { userName: userName, onMenuItemClick: onMenuItemClick, className: "gd-header-measure", items: accountMenuItems }),
359
357
  badges ? React.createElement("div", { className: "gd-header-badges gd-header-measure" }, badges) : null));
360
- };
358
+ }, [
359
+ headerTextColor,
360
+ headerColor,
361
+ onMenuItemClick,
362
+ menuItemsGroups,
363
+ renderTrialItems,
364
+ showChatItem,
365
+ intl,
366
+ theme?.palette?.primary?.base,
367
+ onChatItemClick,
368
+ notificationsPanel,
369
+ closeNotificationsMenu,
370
+ search,
371
+ state.isSearchMenuOpen,
372
+ toggleSearchMenu,
373
+ helpMenuItems,
374
+ helpDropdownAlign,
375
+ disableHelpDropdown,
376
+ onHelpClick,
377
+ helpRedirectUrl,
378
+ showInviteItem,
379
+ onInviteItemClick,
380
+ userName,
381
+ accountMenuItems,
382
+ badges,
383
+ ]);
384
+ const renderNav = useCallback(() => {
385
+ return state.responsiveMode ? renderMobileNav() : renderStandardNav();
386
+ }, [state.responsiveMode, renderMobileNav, renderStandardNav]);
387
+ useEffect(() => {
388
+ createStyles();
389
+ }, [createStyles]);
390
+ const logoLinkClassName = useMemo(() => cx({
391
+ "gd-header-logo": true,
392
+ "gd-header-measure": true,
393
+ "gd-header-shrink": state.responsiveMode,
394
+ }), [state.responsiveMode]);
395
+ const applicationHeaderAccessibilityLabel = useMemo(() => intl.formatMessage({
396
+ id: "gs.header.accessibility.label",
397
+ }), [intl]);
398
+ return (React.createElement("header", { "aria-label": applicationHeaderAccessibilityLabel, className: getClassNames(), ref: nodeRef },
399
+ isAccessibilityCompliant
400
+ ? renderAccessibilityLogo(logoLinkClassName)
401
+ : renderLogo(logoLinkClassName),
402
+ workspacePicker,
403
+ renderNav()));
361
404
  }
362
405
  /**
363
406
  * @internal