@gooddata/sdk-ui-kit 10.38.0 → 10.39.0-alpha.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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 +12 -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,38 +1,34 @@
1
1
  // (C) 2007-2025 GoodData Corporation
2
- import React, { PureComponent } from "react";
2
+ import React, { memo, useCallback, useMemo } from "react";
3
3
  import { FormattedMessage } from "react-intl";
4
4
  import cx from "classnames";
5
5
  import { stringUtils } from "@gooddata/util";
6
6
  /**
7
7
  * @internal
8
8
  */
9
- export class MultiSelectListItem extends PureComponent {
10
- render() {
11
- const { title, onClick, onMouseOver, onMouseOut, isSelected } = this.props;
12
- return (React.createElement("div", { className: this.getClassNames(), onClick: onClick, onMouseOver: onMouseOver, onMouseOut: onMouseOut },
13
- React.createElement("label", { className: "input-checkbox-label" },
14
- React.createElement("input", { type: "checkbox", className: "input-checkbox", readOnly: true, checked: isSelected }),
15
- React.createElement("span", { className: "input-label-text" }, title)),
16
- this.renderOnly()));
17
- }
18
- getClassNames = () => {
19
- const { title, isSelected } = this.props;
9
+ export const MultiSelectListItem = memo(function MultiSelectListItem({ title, onClick, onMouseOver, onMouseOut, isSelected, onOnly, }) {
10
+ const classNames = useMemo(() => {
20
11
  return cx({
21
12
  "gd-list-item": true,
22
13
  [`s-${stringUtils.simplifyText(title)}`]: true,
23
14
  "has-only-visible": true,
24
15
  "is-selected": isSelected,
25
16
  });
26
- };
27
- renderOnly = () => {
28
- const { onOnly } = this.props;
29
- return (React.createElement("span", { className: "gd-list-item-only", onClick: (e) => {
30
- e.stopPropagation();
31
- if (onOnly) {
32
- onOnly();
33
- }
34
- } },
17
+ }, [title, isSelected]);
18
+ const handleOnlyClick = useCallback((e) => {
19
+ e.stopPropagation();
20
+ if (onOnly) {
21
+ onOnly();
22
+ }
23
+ }, [onOnly]);
24
+ const renderOnly = useCallback(() => {
25
+ return (React.createElement("span", { className: "gd-list-item-only", onClick: handleOnlyClick },
35
26
  React.createElement(FormattedMessage, { id: "gs.list.only" })));
36
- };
37
- }
27
+ }, [handleOnlyClick]);
28
+ return (React.createElement("div", { className: classNames, onClick: onClick, onMouseOver: onMouseOver, onMouseOut: onMouseOut },
29
+ React.createElement("label", { className: "input-checkbox-label" },
30
+ React.createElement("input", { type: "checkbox", className: "input-checkbox", readOnly: true, checked: isSelected }),
31
+ React.createElement("span", { className: "input-label-text" }, title)),
32
+ renderOnly()));
33
+ });
38
34
  //# sourceMappingURL=MultiSelectListItem.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"MultiSelectListItem.js","sourceRoot":"","sources":["../../src/List/MultiSelectListItem.tsx"],"names":[],"mappings":"AAAA,qCAAqC;AACrC,OAAO,KAAK,EAAE,EAAE,aAAa,EAAgB,MAAM,OAAO,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAE,MAAM,YAAY,CAAC;AAE5B,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAc7C;;GAEG;AACH,MAAM,OAAO,mBAAoB,SAAQ,aAAwC;IACtE,MAAM;QACT,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;QAE3E,OAAO,CACH,6BACI,SAAS,EAAE,IAAI,CAAC,aAAa,EAAE,EAC/B,OAAO,EAAE,OAAO,EAChB,WAAW,EAAE,WAAW,EACxB,UAAU,EAAE,UAAU;YAEtB,+BAAO,SAAS,EAAC,sBAAsB;gBACnC,+BAAO,IAAI,EAAC,UAAU,EAAC,SAAS,EAAC,gBAAgB,EAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,GAAI;gBACzF,8BAAM,SAAS,EAAC,kBAAkB,IAAE,KAAK,CAAQ,CAC7C;YACP,IAAI,CAAC,UAAU,EAAE,CAChB,CACT,CAAC;IACN,CAAC;IAEO,aAAa,GAAG,GAAG,EAAE;QACzB,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;QACzC,OAAO,EAAE,CAAC;YACN,cAAc,EAAE,IAAI;YACpB,CAAC,KAAK,WAAW,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,IAAI;YAC9C,kBAAkB,EAAE,IAAI;YACxB,aAAa,EAAE,UAAU;SAC5B,CAAC,CAAC;IACP,CAAC,CAAC;IAEM,UAAU,GAAG,GAAG,EAAE;QACtB,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;QAC9B,OAAO,CACH,8BACI,SAAS,EAAC,mBAAmB,EAC7B,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE;gBACX,CAAC,CAAC,eAAe,EAAE,CAAC;gBACpB,IAAI,MAAM,EAAE,CAAC;oBACT,MAAM,EAAE,CAAC;gBACb,CAAC;YACL,CAAC;YAED,oBAAC,gBAAgB,IAAC,EAAE,EAAC,cAAc,GAAG,CACnC,CACV,CAAC;IACN,CAAC,CAAC;CACL"}
1
+ {"version":3,"file":"MultiSelectListItem.js","sourceRoot":"","sources":["../../src/List/MultiSelectListItem.tsx"],"names":[],"mappings":"AAAA,qCAAqC;AACrC,OAAO,KAAK,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAE,MAAM,YAAY,CAAC;AAE5B,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAc7C;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,IAAI,CAAC,SAAS,mBAAmB,CAAC,EACjE,KAAK,EACL,OAAO,EACP,WAAW,EACX,UAAU,EACV,UAAU,EACV,MAAM,GACkB;IACxB,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,EAAE;QAC5B,OAAO,EAAE,CAAC;YACN,cAAc,EAAE,IAAI;YACpB,CAAC,KAAK,WAAW,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,IAAI;YAC9C,kBAAkB,EAAE,IAAI;YACxB,aAAa,EAAE,UAAU;SAC5B,CAAC,CAAC;IACP,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC;IAExB,MAAM,eAAe,GAAG,WAAW,CAC/B,CAAC,CAAmB,EAAE,EAAE;QACpB,CAAC,CAAC,eAAe,EAAE,CAAC;QACpB,IAAI,MAAM,EAAE,CAAC;YACT,MAAM,EAAE,CAAC;QACb,CAAC;IACL,CAAC,EACD,CAAC,MAAM,CAAC,CACX,CAAC;IAEF,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,EAAE;QAChC,OAAO,CACH,8BAAM,SAAS,EAAC,mBAAmB,EAAC,OAAO,EAAE,eAAe;YACxD,oBAAC,gBAAgB,IAAC,EAAE,EAAC,cAAc,GAAG,CACnC,CACV,CAAC;IACN,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC;IAEtB,OAAO,CACH,6BAAK,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU;QAC1F,+BAAO,SAAS,EAAC,sBAAsB;YACnC,+BAAO,IAAI,EAAC,UAAU,EAAC,SAAS,EAAC,gBAAgB,EAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,GAAI;YACzF,8BAAM,SAAS,EAAC,kBAAkB,IAAE,KAAK,CAAQ,CAC7C;QACP,UAAU,EAAE,CACX,CACT,CAAC;AACN,CAAC,CAAC,CAAC"}
@@ -10,13 +10,5 @@ export interface IControlledMenuProps extends Partial<IMenuPositionConfig> {
10
10
  togglerWrapperClassName?: string;
11
11
  children: React.ReactNode;
12
12
  }
13
- export declare class ControlledMenu extends React.Component<IControlledMenuProps> {
14
- componentDidMount(): void;
15
- componentWillUnmount(): void;
16
- componentDidUpdate(prevProps: IControlledMenuProps): void;
17
- render(): React.JSX.Element;
18
- private closeMenu;
19
- private addScrollListeners;
20
- private removeScrollListeners;
21
- }
13
+ export declare function ControlledMenu({ opened, openAction, closeOnScroll, portalTarget, onOpenedChange, toggler, togglerWrapperClassName, children, alignment, spacing, offset, }: IControlledMenuProps): React.JSX.Element;
22
14
  //# sourceMappingURL=ControlledMenu.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ControlledMenu.d.ts","sourceRoot":"","sources":["../../src/Menu/ControlledMenu.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,UAAU,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAGvF,MAAM,WAAW,oBAAqB,SAAQ,OAAO,CAAC,mBAAmB,CAAC;IACtE,MAAM,EAAE,OAAO,CAAC;IAChB,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,aAAa,EAAE,OAAO,CAAC;IACvB,YAAY,EAAE,OAAO,GAAG,SAAS,CAAC;IAClC,cAAc,EAAE,cAAc,CAAC;IAC/B,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC7B;AAED,qBAAa,cAAe,SAAQ,KAAK,CAAC,SAAS,CAAC,oBAAoB,CAAC;IAC9D,iBAAiB,IAAI,IAAI;IAMzB,oBAAoB,IAAI,IAAI;IAM5B,kBAAkB,CAAC,SAAS,EAAE,oBAAoB,GAAG,IAAI;IAUzD,MAAM;IAmBb,OAAO,CAAC,SAAS,CAEf;IAEF,OAAO,CAAC,kBAAkB,CAExB;IAEF,OAAO,CAAC,qBAAqB,CAE3B;CACL"}
1
+ {"version":3,"file":"ControlledMenu.d.ts","sourceRoot":"","sources":["../../src/Menu/ControlledMenu.tsx"],"names":[],"mappings":"AACA,OAAO,KAAiC,MAAM,OAAO,CAAC;AAEtD,OAAO,EAAE,UAAU,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAGvF,MAAM,WAAW,oBAAqB,SAAQ,OAAO,CAAC,mBAAmB,CAAC;IACtE,MAAM,EAAE,OAAO,CAAC;IAChB,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,aAAa,EAAE,OAAO,CAAC;IACvB,YAAY,EAAE,OAAO,GAAG,SAAS,CAAC;IAClC,cAAc,EAAE,cAAc,CAAC;IAC/B,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC7B;AAED,wBAAgB,cAAc,CAAC,EAC3B,MAAM,EACN,UAAU,EACV,aAAa,EACb,YAAY,EACZ,cAAc,EACd,OAAO,EACP,uBAAuB,EACvB,QAAQ,EACR,SAAS,EACT,OAAO,EACP,MAAM,GACT,EAAE,oBAAoB,qBAyCtB"}
@@ -1,38 +1,26 @@
1
- // (C) 2007-2022 GoodData Corporation
2
- import React from "react";
1
+ // (C) 2007-2025 GoodData Corporation
2
+ import React, { useEffect, useCallback } from "react";
3
3
  import { MenuOpener } from "./menuOpener/MenuOpener.js";
4
- export class ControlledMenu extends React.Component {
5
- componentDidMount() {
6
- if (this.props.closeOnScroll) {
7
- this.addScrollListeners();
4
+ export function ControlledMenu({ opened, openAction, closeOnScroll, portalTarget, onOpenedChange, toggler, togglerWrapperClassName, children, alignment, spacing, offset, }) {
5
+ const closeMenu = useCallback(() => {
6
+ onOpenedChange({ opened: false, source: "SCROLL" });
7
+ }, [onOpenedChange]);
8
+ const addScrollListeners = useCallback(() => {
9
+ window.addEventListener("scroll", closeMenu, true);
10
+ }, [closeMenu]);
11
+ const removeScrollListeners = useCallback(() => {
12
+ window.removeEventListener("scroll", closeMenu, true);
13
+ }, [closeMenu]);
14
+ useEffect(() => {
15
+ if (closeOnScroll) {
16
+ addScrollListeners();
8
17
  }
9
- }
10
- componentWillUnmount() {
11
- if (this.props.closeOnScroll) {
12
- this.removeScrollListeners();
13
- }
14
- }
15
- componentDidUpdate(prevProps) {
16
- if (prevProps.closeOnScroll !== this.props.closeOnScroll) {
17
- if (this.props.closeOnScroll) {
18
- this.addScrollListeners();
19
- }
20
- else {
21
- this.removeScrollListeners();
18
+ return () => {
19
+ if (closeOnScroll) {
20
+ removeScrollListeners();
22
21
  }
23
- }
24
- }
25
- render() {
26
- return (React.createElement(MenuOpener, { opened: this.props.opened, onOpenedChange: this.props.onOpenedChange, openAction: this.props.openAction, alignment: this.props.alignment, spacing: this.props.spacing, offset: this.props.offset, portalTarget: this.props.portalTarget, toggler: this.props.toggler, togglerWrapperClassName: this.props.togglerWrapperClassName, topLevelMenu: true }, this.props.children));
27
- }
28
- closeMenu = () => {
29
- this.props.onOpenedChange({ opened: false, source: "SCROLL" });
30
- };
31
- addScrollListeners = () => {
32
- window.addEventListener("scroll", this.closeMenu, true);
33
- };
34
- removeScrollListeners = () => {
35
- window.removeEventListener("scroll", this.closeMenu, true);
36
- };
22
+ };
23
+ }, [closeOnScroll, addScrollListeners, removeScrollListeners]);
24
+ return (React.createElement(MenuOpener, { opened: opened, onOpenedChange: onOpenedChange, openAction: openAction, alignment: alignment, spacing: spacing, offset: offset, portalTarget: portalTarget, toggler: toggler, togglerWrapperClassName: togglerWrapperClassName, topLevelMenu: true }, children));
37
25
  }
38
26
  //# sourceMappingURL=ControlledMenu.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ControlledMenu.js","sourceRoot":"","sources":["../../src/Menu/ControlledMenu.tsx"],"names":[],"mappings":"AAAA,qCAAqC;AACrC,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAaxD,MAAM,OAAO,cAAe,SAAQ,KAAK,CAAC,SAA+B;IAC9D,iBAAiB;QACpB,IAAI,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC;YAC3B,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC9B,CAAC;IACL,CAAC;IAEM,oBAAoB;QACvB,IAAI,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC;YAC3B,IAAI,CAAC,qBAAqB,EAAE,CAAC;QACjC,CAAC;IACL,CAAC;IAEM,kBAAkB,CAAC,SAA+B;QACrD,IAAI,SAAS,CAAC,aAAa,KAAK,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC;YACvD,IAAI,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC;gBAC3B,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC9B,CAAC;iBAAM,CAAC;gBACJ,IAAI,CAAC,qBAAqB,EAAE,CAAC;YACjC,CAAC;QACL,CAAC;IACL,CAAC;IAEM,MAAM;QACT,OAAO,CACH,oBAAC,UAAU,IACP,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,EACzB,cAAc,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc,EACzC,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,EACjC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,EAC/B,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,EAC3B,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,EACzB,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY,EACrC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,EAC3B,uBAAuB,EAAE,IAAI,CAAC,KAAK,CAAC,uBAAuB,EAC3D,YAAY,EAAE,IAAI,IAEjB,IAAI,CAAC,KAAK,CAAC,QAAQ,CACX,CAChB,CAAC;IACN,CAAC;IAEO,SAAS,GAAG,GAAG,EAAE;QACrB,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;IACnE,CAAC,CAAC;IAEM,kBAAkB,GAAG,GAAG,EAAE;QAC9B,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IAC5D,CAAC,CAAC;IAEM,qBAAqB,GAAG,GAAG,EAAE;QACjC,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IAC/D,CAAC,CAAC;CACL"}
1
+ {"version":3,"file":"ControlledMenu.js","sourceRoot":"","sources":["../../src/Menu/ControlledMenu.tsx"],"names":[],"mappings":"AAAA,qCAAqC;AACrC,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAGtD,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAaxD,MAAM,UAAU,cAAc,CAAC,EAC3B,MAAM,EACN,UAAU,EACV,aAAa,EACb,YAAY,EACZ,cAAc,EACd,OAAO,EACP,uBAAuB,EACvB,QAAQ,EACR,SAAS,EACT,OAAO,EACP,MAAM,GACa;IACnB,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE;QAC/B,cAAc,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;IACxD,CAAC,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC;IAErB,MAAM,kBAAkB,GAAG,WAAW,CAAC,GAAG,EAAE;QACxC,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;IACvD,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;IAEhB,MAAM,qBAAqB,GAAG,WAAW,CAAC,GAAG,EAAE;QAC3C,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;IAC1D,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;IAEhB,SAAS,CAAC,GAAG,EAAE;QACX,IAAI,aAAa,EAAE,CAAC;YAChB,kBAAkB,EAAE,CAAC;QACzB,CAAC;QAED,OAAO,GAAG,EAAE;YACR,IAAI,aAAa,EAAE,CAAC;gBAChB,qBAAqB,EAAE,CAAC;YAC5B,CAAC;QACL,CAAC,CAAC;IACN,CAAC,EAAE,CAAC,aAAa,EAAE,kBAAkB,EAAE,qBAAqB,CAAC,CAAC,CAAC;IAE/D,OAAO,CACH,oBAAC,UAAU,IACP,MAAM,EAAE,MAAM,EACd,cAAc,EAAE,cAAc,EAC9B,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,YAAY,EAC1B,OAAO,EAAE,OAAO,EAChB,uBAAuB,EAAE,uBAAuB,EAChD,YAAY,EAAE,IAAI,IAEjB,QAAQ,CACA,CAChB,CAAC;AACN,CAAC"}
@@ -20,13 +20,5 @@ export interface IMenuStateProps extends IMenuStateConfig {
20
20
  export interface IMenuStateState {
21
21
  opened?: boolean;
22
22
  }
23
- export declare class MenuState extends React.Component<IMenuStateProps, IMenuStateState> {
24
- static defaultProps: {
25
- defaultOpened: boolean;
26
- };
27
- constructor(props: IMenuStateProps);
28
- render(): React.ReactNode;
29
- private isControlled;
30
- private onOpenedChange;
31
- }
23
+ export declare function MenuState({ opened, defaultOpened, onOpenedChange, children }: IMenuStateProps): React.ReactNode;
32
24
  //# sourceMappingURL=MenuState.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"MenuState.d.ts","sourceRoot":"","sources":["../../src/Menu/MenuState.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,cAAc,EAAyB,MAAM,sBAAsB,CAAC;AAE7E;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC7B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,cAAc,CAAC,EAAE,cAAc,CAAC;CACnC;AAED;;GAEG;AACH,MAAM,WAAW,eAAgB,SAAQ,gBAAgB;IACrD,QAAQ,EAAE,CAAC,KAAK,EAAE;QAAE,MAAM,EAAE,OAAO,CAAC;QAAC,cAAc,EAAE,cAAc,CAAA;KAAE,KAAK,KAAK,CAAC,SAAS,CAAC;CAC7F;AAED,MAAM,WAAW,eAAe;IAC5B,MAAM,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,qBAAa,SAAU,SAAQ,KAAK,CAAC,SAAS,CAAC,eAAe,EAAE,eAAe,CAAC;IAC5E,OAAc,YAAY;;MAExB;gBAEU,KAAK,EAAE,eAAe;IAQ3B,MAAM;IAOb,OAAO,CAAC,YAAY,CAElB;IAEF,OAAO,CAAC,cAAc,CAMpB;CACL"}
1
+ {"version":3,"file":"MenuState.d.ts","sourceRoot":"","sources":["../../src/Menu/MenuState.tsx"],"names":[],"mappings":"AACA,OAAO,KAAyC,MAAM,OAAO,CAAC;AAE9D,OAAO,EAAE,cAAc,EAAyB,MAAM,sBAAsB,CAAC;AAE7E;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC7B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,cAAc,CAAC,EAAE,cAAc,CAAC;CACnC;AAED;;GAEG;AACH,MAAM,WAAW,eAAgB,SAAQ,gBAAgB;IACrD,QAAQ,EAAE,CAAC,KAAK,EAAE;QAAE,MAAM,EAAE,OAAO,CAAC;QAAC,cAAc,EAAE,cAAc,CAAA;KAAE,KAAK,KAAK,CAAC,SAAS,CAAC;CAC7F;AAED,MAAM,WAAW,eAAe;IAC5B,MAAM,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,wBAAgB,SAAS,CAAC,EAAE,MAAM,EAAE,aAAqB,EAAE,cAAc,EAAE,QAAQ,EAAE,EAAE,eAAe,mBAuBrG"}
@@ -1,30 +1,21 @@
1
- // (C) 2007-2022 GoodData Corporation
2
- import React from "react";
3
- export class MenuState extends React.Component {
4
- static defaultProps = {
5
- defaultOpened: false,
6
- };
7
- constructor(props) {
8
- super(props);
9
- this.state = {
10
- opened: this.isControlled() ? this.props.opened : this.props.defaultOpened,
11
- };
12
- }
13
- render() {
14
- return this.props.children({
15
- opened: (this.isControlled() ? this.props.opened : this.state.opened) ?? false,
16
- onOpenedChange: this.onOpenedChange,
17
- });
18
- }
19
- isControlled = () => {
20
- return typeof this.props.opened === "boolean";
21
- };
22
- onOpenedChange = (openedChangeParams) => {
23
- this.setState({ opened: openedChangeParams.opened }, () => {
24
- if (this.props.onOpenedChange) {
25
- this.props.onOpenedChange(openedChangeParams);
26
- }
27
- });
28
- };
1
+ // (C) 2007-2025 GoodData Corporation
2
+ import { useState, useCallback, useMemo } from "react";
3
+ export function MenuState({ opened, defaultOpened = false, onOpenedChange, children }) {
4
+ const isControlled = useMemo(() => {
5
+ return typeof opened === "boolean";
6
+ }, [opened]);
7
+ const [internalOpened, setInternalOpened] = useState(() => {
8
+ return typeof opened === "boolean" ? opened : defaultOpened;
9
+ });
10
+ const handleOpenedChange = useCallback((openedChangeParams) => {
11
+ setInternalOpened(openedChangeParams.opened);
12
+ if (onOpenedChange) {
13
+ onOpenedChange(openedChangeParams);
14
+ }
15
+ }, [onOpenedChange]);
16
+ return children({
17
+ opened: (isControlled ? opened : internalOpened) ?? false,
18
+ onOpenedChange: handleOpenedChange,
19
+ });
29
20
  }
30
21
  //# sourceMappingURL=MenuState.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"MenuState.js","sourceRoot":"","sources":["../../src/Menu/MenuState.tsx"],"names":[],"mappings":"AAAA,qCAAqC;AACrC,OAAO,KAAK,MAAM,OAAO,CAAC;AAwB1B,MAAM,OAAO,SAAU,SAAQ,KAAK,CAAC,SAA2C;IACrE,MAAM,CAAC,YAAY,GAAG;QACzB,aAAa,EAAE,KAAK;KACvB,CAAC;IAEF,YAAY,KAAsB;QAC9B,KAAK,CAAC,KAAK,CAAC,CAAC;QAEb,IAAI,CAAC,KAAK,GAAG;YACT,MAAM,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,aAAc;SAC9E,CAAC;IACN,CAAC;IAEM,MAAM;QACT,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;YACvB,MAAM,EAAE,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK;YAC9E,cAAc,EAAE,IAAI,CAAC,cAAc;SACtC,CAAC,CAAC;IACP,CAAC;IAEO,YAAY,GAAG,GAAY,EAAE;QACjC,OAAO,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC;IAClD,CAAC,CAAC;IAEM,cAAc,GAAG,CAAC,kBAAyC,EAAE,EAAE;QACnE,IAAI,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,kBAAkB,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE;YACtD,IAAI,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC;gBAC5B,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,kBAAkB,CAAC,CAAC;YAClD,CAAC;QACL,CAAC,CAAC,CAAC;IACP,CAAC,CAAC"}
1
+ {"version":3,"file":"MenuState.js","sourceRoot":"","sources":["../../src/Menu/MenuState.tsx"],"names":[],"mappings":"AAAA,qCAAqC;AACrC,OAAc,EAAE,QAAQ,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAwB9D,MAAM,UAAU,SAAS,CAAC,EAAE,MAAM,EAAE,aAAa,GAAG,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAmB;IAClG,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,EAAE;QAC9B,OAAO,OAAO,MAAM,KAAK,SAAS,CAAC;IACvC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IAEb,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,QAAQ,CAAsB,GAAG,EAAE;QAC3E,OAAO,OAAO,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC;IAChE,CAAC,CAAC,CAAC;IAEH,MAAM,kBAAkB,GAAG,WAAW,CAClC,CAAC,kBAAyC,EAAE,EAAE;QAC1C,iBAAiB,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;QAC7C,IAAI,cAAc,EAAE,CAAC;YACjB,cAAc,CAAC,kBAAkB,CAAC,CAAC;QACvC,CAAC;IACL,CAAC,EACD,CAAC,cAAc,CAAC,CACnB,CAAC;IAEF,OAAO,QAAQ,CAAC;QACZ,MAAM,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,KAAK;QACzD,cAAc,EAAE,kBAAkB;KACrC,CAAC,CAAC;AACP,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"MenuOpenedByClick.d.ts","sourceRoot":"","sources":["../../../src/Menu/menuOpener/MenuOpenedByClick.tsx"],"names":[],"mappings":"AACA,OAAc,EAAE,YAAY,EAAU,MAAM,OAAO,CAAC;AAKpD,OAAO,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AAExE,eAAO,MAAM,iBAAiB,GAAI,OAAO,wBAAwB,KAAG,YAwCnE,CAAC"}
1
+ {"version":3,"file":"MenuOpenedByClick.d.ts","sourceRoot":"","sources":["../../../src/Menu/menuOpener/MenuOpenedByClick.tsx"],"names":[],"mappings":"AACA,OAAc,EAAE,YAAY,EAAuB,MAAM,OAAO,CAAC;AAKjE,OAAO,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AAExE,eAAO,MAAM,iBAAiB,GAAI,OAAO,wBAAwB,KAAG,YAiDnE,CAAC"}
@@ -1,12 +1,13 @@
1
1
  // (C) 2007-2025 GoodData Corporation
2
- import React, { useRef } from "react";
2
+ import React, { useRef, useCallback } from "react";
3
3
  import { OutsideClickHandler } from "../utils/OutsideClickHandler.js";
4
4
  import { MenuPosition } from "../positioning/MenuPosition.js";
5
5
  export const MenuOpenedByClick = (props) => {
6
- const outsideClick = () => props.onOpenedChange({ opened: false, source: "OUTSIDE_CLICK" });
7
- const togglerWrapperClick = () => props.onOpenedChange({ opened: !props.opened, source: "TOGGLER_BUTTON_CLICK" });
6
+ const { onOpenedChange, opened } = props;
7
+ const outsideClick = useCallback(() => onOpenedChange({ opened: false, source: "OUTSIDE_CLICK" }), [onOpenedChange]);
8
+ const togglerWrapperClick = useCallback(() => onOpenedChange({ opened: !opened, source: "TOGGLER_BUTTON_CLICK" }), [onOpenedChange, opened]);
8
9
  const togglerRef = useRef(null);
9
- const OutsideClickHandlerWrapped = (props) => (
10
+ const OutsideClickHandlerWrapped = useCallback((wrapperProps) => (
10
11
  // If UseCapture is set to false (default event bubbling), the disadvantage is that we will not
11
12
  // get notified of click events with preventDefault or stopPropagation methods called on them. On the
12
13
  // other hand it greatly simplifies event handling with toggler elements, for example if we have
@@ -14,7 +15,7 @@ export const MenuOpenedByClick = (props) => {
14
15
  // would get notified, he would set opened state from true to false, and then toggler element click
15
16
  // handler would get notified, that would toggle it back to true, so menu would stay opened. This
16
17
  // is be solved by OutsideClickHandler ignoring clicks that are inside of togglerWrapped.
17
- React.createElement(OutsideClickHandler, { onOutsideClick: outsideClick, useCapture: true, toggler: togglerRef.current }, props.children));
18
+ React.createElement(OutsideClickHandler, { onOutsideClick: outsideClick, useCapture: true, toggler: togglerRef.current }, wrapperProps.children)), [outsideClick, togglerRef]);
18
19
  const togglerWrapped = (React.createElement("div", { onClick: togglerWrapperClick, className: "gd-menuOpenedByClick-togglerWrapped", ref: togglerRef }, props.toggler));
19
20
  return (React.createElement(MenuPosition, { opened: props.opened, toggler: togglerWrapped, togglerWrapperClassName: props.togglerWrapperClassName, contentWrapper: OutsideClickHandlerWrapped, topLevelMenu: props.topLevelMenu, portalTarget: props.portalTarget, alignment: props.alignment, spacing: props.spacing, offset: props.offset }, props.children));
20
21
  };
@@ -1 +1 @@
1
- {"version":3,"file":"MenuOpenedByClick.js","sourceRoot":"","sources":["../../../src/Menu/menuOpener/MenuOpenedByClick.tsx"],"names":[],"mappings":"AAAA,qCAAqC;AACrC,OAAO,KAAK,EAAE,EAAgB,MAAM,EAAE,MAAM,OAAO,CAAC;AAEpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAI9D,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,KAA+B,EAAgB,EAAE;IAC/E,MAAM,YAAY,GAAG,GAAG,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC,CAAC;IAC5F,MAAM,mBAAmB,GAAG,GAAG,EAAE,CAC7B,KAAK,CAAC,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,sBAAsB,EAAE,CAAC,CAAC;IACpF,MAAM,UAAU,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAC;IAEhD,MAAM,0BAA0B,GAAG,CAAC,KAAoC,EAAE,EAAE,CAAC;IACzE,+FAA+F;IAC/F,qGAAqG;IACrG,gGAAgG;IAChG,qGAAqG;IACrG,mGAAmG;IACnG,iGAAiG;IACjG,yFAAyF;IACzF,oBAAC,mBAAmB,IAAC,cAAc,EAAE,YAAY,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,CAAC,OAAO,IAC3F,KAAK,CAAC,QAAQ,CACG,CACzB,CAAC;IAEF,MAAM,cAAc,GAAG,CACnB,6BAAK,OAAO,EAAE,mBAAmB,EAAE,SAAS,EAAC,qCAAqC,EAAC,GAAG,EAAE,UAAU,IAC7F,KAAK,CAAC,OAAO,CACZ,CACT,CAAC;IAEF,OAAO,CACH,oBAAC,YAAY,IACT,MAAM,EAAE,KAAK,CAAC,MAAM,EACpB,OAAO,EAAE,cAAc,EACvB,uBAAuB,EAAE,KAAK,CAAC,uBAAuB,EACtD,cAAc,EAAE,0BAA0B,EAC1C,YAAY,EAAE,KAAK,CAAC,YAAY,EAChC,YAAY,EAAE,KAAK,CAAC,YAAY,EAChC,SAAS,EAAE,KAAK,CAAC,SAAS,EAC1B,OAAO,EAAE,KAAK,CAAC,OAAO,EACtB,MAAM,EAAE,KAAK,CAAC,MAAM,IAEnB,KAAK,CAAC,QAAQ,CACJ,CAClB,CAAC;AACN,CAAC,CAAC"}
1
+ {"version":3,"file":"MenuOpenedByClick.js","sourceRoot":"","sources":["../../../src/Menu/menuOpener/MenuOpenedByClick.tsx"],"names":[],"mappings":"AAAA,qCAAqC;AACrC,OAAO,KAAK,EAAE,EAAgB,MAAM,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAEjE,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAI9D,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,KAA+B,EAAgB,EAAE;IAC/E,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;IACzC,MAAM,YAAY,GAAG,WAAW,CAC5B,GAAG,EAAE,CAAC,cAAc,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC,EAChE,CAAC,cAAc,CAAC,CACnB,CAAC;IACF,MAAM,mBAAmB,GAAG,WAAW,CACnC,GAAG,EAAE,CAAC,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,sBAAsB,EAAE,CAAC,EACzE,CAAC,cAAc,EAAE,MAAM,CAAC,CAC3B,CAAC;IACF,MAAM,UAAU,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAC;IAEhD,MAAM,0BAA0B,GAAG,WAAW,CAC1C,CAAC,YAA2C,EAAE,EAAE,CAAC;IAC7C,+FAA+F;IAC/F,qGAAqG;IACrG,gGAAgG;IAChG,qGAAqG;IACrG,mGAAmG;IACnG,iGAAiG;IACjG,yFAAyF;IACzF,oBAAC,mBAAmB,IAAC,cAAc,EAAE,YAAY,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,CAAC,OAAO,IAC3F,YAAY,CAAC,QAAQ,CACJ,CACzB,EACD,CAAC,YAAY,EAAE,UAAU,CAAC,CAC7B,CAAC;IAEF,MAAM,cAAc,GAAG,CACnB,6BAAK,OAAO,EAAE,mBAAmB,EAAE,SAAS,EAAC,qCAAqC,EAAC,GAAG,EAAE,UAAU,IAC7F,KAAK,CAAC,OAAO,CACZ,CACT,CAAC;IAEF,OAAO,CACH,oBAAC,YAAY,IACT,MAAM,EAAE,KAAK,CAAC,MAAM,EACpB,OAAO,EAAE,cAAc,EACvB,uBAAuB,EAAE,KAAK,CAAC,uBAAuB,EACtD,cAAc,EAAE,0BAA0B,EAC1C,YAAY,EAAE,KAAK,CAAC,YAAY,EAChC,YAAY,EAAE,KAAK,CAAC,YAAY,EAChC,SAAS,EAAE,KAAK,CAAC,SAAS,EAC1B,OAAO,EAAE,KAAK,CAAC,OAAO,EACtB,MAAM,EAAE,KAAK,CAAC,MAAM,IAEnB,KAAK,CAAC,QAAQ,CACJ,CAClB,CAAC;AACN,CAAC,CAAC"}
@@ -1,12 +1,4 @@
1
1
  import React from "react";
2
2
  import { IMenuOpenedBySharedProps } from "./MenuOpenedBySharedProps.js";
3
- export declare class MenuOpenedByHover extends React.Component<IMenuOpenedBySharedProps> {
4
- private static openCloseDelayMs;
5
- private timerCloseDelay;
6
- componentWillUnmount(): void;
7
- render(): React.JSX.Element;
8
- private clearCloseDelayTimer;
9
- private hoverStart;
10
- private hoverEnd;
11
- }
3
+ export declare function MenuOpenedByHover({ onOpenedChange, toggler, togglerWrapperClassName, opened, topLevelMenu, alignment, spacing, offset, portalTarget, children, }: IMenuOpenedBySharedProps): React.JSX.Element;
12
4
  //# sourceMappingURL=MenuOpenedByHover.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"MenuOpenedByHover.d.ts","sourceRoot":"","sources":["../../../src/Menu/menuOpener/MenuOpenedByHover.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,OAAO,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AAExE,qBAAa,iBAAkB,SAAQ,KAAK,CAAC,SAAS,CAAC,wBAAwB,CAAC;IAC5E,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAO;IAEtC,OAAO,CAAC,eAAe,CAAuB;IAEvC,oBAAoB,IAAI,IAAI;IAI5B,MAAM;IAuBb,OAAO,CAAC,oBAAoB,CAI1B;IAEF,OAAO,CAAC,UAAU,CAKhB;IAEF,OAAO,CAAC,QAAQ,CAKd;CACL"}
1
+ {"version":3,"file":"MenuOpenedByHover.d.ts","sourceRoot":"","sources":["../../../src/Menu/menuOpener/MenuOpenedByHover.tsx"],"names":[],"mappings":"AACA,OAAO,KAAyC,MAAM,OAAO,CAAC;AAI9D,OAAO,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AAExE,wBAAgB,iBAAiB,CAAC,EAC9B,cAAc,EACd,OAAO,EACP,uBAAuB,EACvB,MAAM,EACN,YAAY,EACZ,SAAS,EACT,OAAO,EACP,MAAM,EACN,YAAY,EACZ,QAAQ,GACX,EAAE,wBAAwB,qBAmD1B"}
@@ -1,32 +1,32 @@
1
- // (C) 2007-2022 GoodData Corporation
2
- import React from "react";
1
+ // (C) 2007-2025 GoodData Corporation
2
+ import React, { useEffect, useRef, useCallback } from "react";
3
3
  import { MenuPosition } from "../positioning/MenuPosition.js";
4
- export class MenuOpenedByHover extends React.Component {
5
- static openCloseDelayMs = 200;
6
- timerCloseDelay = null;
7
- componentWillUnmount() {
8
- this.clearCloseDelayTimer();
9
- }
10
- render() {
11
- return (React.createElement(MenuPosition, { toggler: React.createElement("div", { onMouseEnter: this.hoverStart, onMouseLeave: this.hoverEnd }, this.props.toggler), togglerWrapperClassName: this.props.togglerWrapperClassName, opened: this.props.opened, topLevelMenu: this.props.topLevelMenu, alignment: this.props.alignment, spacing: this.props.spacing, offset: this.props.offset, portalTarget: this.props.portalTarget },
12
- React.createElement("div", { onMouseEnter: this.hoverStart, onMouseLeave: this.hoverEnd }, this.props.children)));
13
- }
14
- clearCloseDelayTimer = () => {
15
- if (this.timerCloseDelay) {
16
- window.clearTimeout(this.timerCloseDelay);
4
+ export function MenuOpenedByHover({ onOpenedChange, toggler, togglerWrapperClassName, opened, topLevelMenu, alignment, spacing, offset, portalTarget, children, }) {
5
+ const openCloseDelayMs = 200;
6
+ const timerCloseDelay = useRef(null);
7
+ const clearCloseDelayTimer = useCallback(() => {
8
+ if (timerCloseDelay.current) {
9
+ window.clearTimeout(timerCloseDelay.current);
17
10
  }
18
- };
19
- hoverStart = () => {
20
- this.clearCloseDelayTimer();
21
- this.timerCloseDelay = window.setTimeout(() => {
22
- this.props.onOpenedChange({ opened: true, source: "HOVER_TIMEOUT" });
23
- }, MenuOpenedByHover.openCloseDelayMs);
24
- };
25
- hoverEnd = () => {
26
- this.clearCloseDelayTimer();
27
- this.timerCloseDelay = window.setTimeout(() => {
28
- this.props.onOpenedChange({ opened: false, source: "HOVER_TIMEOUT" });
29
- }, MenuOpenedByHover.openCloseDelayMs);
30
- };
11
+ }, []);
12
+ useEffect(() => {
13
+ return () => {
14
+ clearCloseDelayTimer();
15
+ };
16
+ }, [clearCloseDelayTimer]);
17
+ const hoverStart = useCallback(() => {
18
+ clearCloseDelayTimer();
19
+ timerCloseDelay.current = window.setTimeout(() => {
20
+ onOpenedChange({ opened: true, source: "HOVER_TIMEOUT" });
21
+ }, openCloseDelayMs);
22
+ }, [clearCloseDelayTimer, onOpenedChange]);
23
+ const hoverEnd = useCallback(() => {
24
+ clearCloseDelayTimer();
25
+ timerCloseDelay.current = window.setTimeout(() => {
26
+ onOpenedChange({ opened: false, source: "HOVER_TIMEOUT" });
27
+ }, openCloseDelayMs);
28
+ }, [clearCloseDelayTimer, onOpenedChange]);
29
+ return (React.createElement(MenuPosition, { toggler: React.createElement("div", { onMouseEnter: hoverStart, onMouseLeave: hoverEnd }, toggler), togglerWrapperClassName: togglerWrapperClassName, opened: opened, topLevelMenu: topLevelMenu, alignment: alignment, spacing: spacing, offset: offset, portalTarget: portalTarget },
30
+ React.createElement("div", { onMouseEnter: hoverStart, onMouseLeave: hoverEnd }, children)));
31
31
  }
32
32
  //# sourceMappingURL=MenuOpenedByHover.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"MenuOpenedByHover.js","sourceRoot":"","sources":["../../../src/Menu/menuOpener/MenuOpenedByHover.tsx"],"names":[],"mappings":"AAAA,qCAAqC;AACrC,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAI9D,MAAM,OAAO,iBAAkB,SAAQ,KAAK,CAAC,SAAmC;IACpE,MAAM,CAAC,gBAAgB,GAAG,GAAG,CAAC;IAE9B,eAAe,GAAkB,IAAI,CAAC;IAEvC,oBAAoB;QACvB,IAAI,CAAC,oBAAoB,EAAE,CAAC;IAChC,CAAC;IAEM,MAAM;QACT,OAAO,CACH,oBAAC,YAAY,IACT,OAAO,EACH,6BAAK,YAAY,EAAE,IAAI,CAAC,UAAU,EAAE,YAAY,EAAE,IAAI,CAAC,QAAQ,IAC1D,IAAI,CAAC,KAAK,CAAC,OAAO,CACjB,EAEV,uBAAuB,EAAE,IAAI,CAAC,KAAK,CAAC,uBAAuB,EAC3D,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,EACzB,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY,EACrC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,EAC/B,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,EAC3B,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,EACzB,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY;YAErC,6BAAK,YAAY,EAAE,IAAI,CAAC,UAAU,EAAE,YAAY,EAAE,IAAI,CAAC,QAAQ,IAC1D,IAAI,CAAC,KAAK,CAAC,QAAQ,CAClB,CACK,CAClB,CAAC;IACN,CAAC;IAEO,oBAAoB,GAAG,GAAS,EAAE;QACtC,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YACvB,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAC9C,CAAC;IACL,CAAC,CAAC;IAEM,UAAU,GAAG,GAAS,EAAE;QAC5B,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC5B,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE;YAC1C,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC,CAAC;QACzE,CAAC,EAAE,iBAAiB,CAAC,gBAAgB,CAAC,CAAC;IAC3C,CAAC,CAAC;IAEM,QAAQ,GAAG,GAAS,EAAE;QAC1B,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC5B,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE;YAC1C,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC,CAAC;QAC1E,CAAC,EAAE,iBAAiB,CAAC,gBAAgB,CAAC,CAAC;IAC3C,CAAC,CAAC"}
1
+ {"version":3,"file":"MenuOpenedByHover.js","sourceRoot":"","sources":["../../../src/Menu/menuOpener/MenuOpenedByHover.tsx"],"names":[],"mappings":"AAAA,qCAAqC;AACrC,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAE9D,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAI9D,MAAM,UAAU,iBAAiB,CAAC,EAC9B,cAAc,EACd,OAAO,EACP,uBAAuB,EACvB,MAAM,EACN,YAAY,EACZ,SAAS,EACT,OAAO,EACP,MAAM,EACN,YAAY,EACZ,QAAQ,GACe;IACvB,MAAM,gBAAgB,GAAG,GAAG,CAAC;IAE7B,MAAM,eAAe,GAAG,MAAM,CAAgB,IAAI,CAAC,CAAC;IAEpD,MAAM,oBAAoB,GAAG,WAAW,CAAC,GAAS,EAAE;QAChD,IAAI,eAAe,CAAC,OAAO,EAAE,CAAC;YAC1B,MAAM,CAAC,YAAY,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;QACjD,CAAC;IACL,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,SAAS,CAAC,GAAG,EAAE;QACX,OAAO,GAAG,EAAE;YACR,oBAAoB,EAAE,CAAC;QAC3B,CAAC,CAAC;IACN,CAAC,EAAE,CAAC,oBAAoB,CAAC,CAAC,CAAC;IAE3B,MAAM,UAAU,GAAG,WAAW,CAAC,GAAS,EAAE;QACtC,oBAAoB,EAAE,CAAC;QACvB,eAAe,CAAC,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE;YAC7C,cAAc,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC,CAAC;QAC9D,CAAC,EAAE,gBAAgB,CAAC,CAAC;IACzB,CAAC,EAAE,CAAC,oBAAoB,EAAE,cAAc,CAAC,CAAC,CAAC;IAE3C,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAS,EAAE;QACpC,oBAAoB,EAAE,CAAC;QACvB,eAAe,CAAC,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE;YAC7C,cAAc,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC,CAAC;QAC/D,CAAC,EAAE,gBAAgB,CAAC,CAAC;IACzB,CAAC,EAAE,CAAC,oBAAoB,EAAE,cAAc,CAAC,CAAC,CAAC;IAE3C,OAAO,CACH,oBAAC,YAAY,IACT,OAAO,EACH,6BAAK,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,IAChD,OAAO,CACN,EAEV,uBAAuB,EAAE,uBAAuB,EAChD,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,YAAY,EAC1B,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,YAAY;QAE1B,6BAAK,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,IAChD,QAAQ,CACP,CACK,CAClB,CAAC;AACN,CAAC"}
@@ -10,9 +10,5 @@ export interface IMenuOpenerProps extends Partial<IMenuPositionConfig> {
10
10
  togglerWrapperClassName?: string;
11
11
  children: React.ReactNode;
12
12
  }
13
- export declare class MenuOpener extends React.Component<IMenuOpenerProps> {
14
- static defaultProps: Pick<IMenuOpenerProps, "openAction" | "alignment" | "spacing" | "offset" | "portalTarget">;
15
- render(): React.JSX.Element;
16
- private getComponentByOpenAction;
17
- }
13
+ export declare function MenuOpener(props: IMenuOpenerProps): React.JSX.Element;
18
14
  //# sourceMappingURL=MenuOpener.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"MenuOpener.d.ts","sourceRoot":"","sources":["../../../src/Menu/menuOpener/MenuOpener.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,UAAU,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAKxF,MAAM,WAAW,gBAAiB,SAAQ,OAAO,CAAC,mBAAmB,CAAC;IAClE,YAAY,EAAE,OAAO,CAAC;IACtB,MAAM,EAAE,OAAO,CAAC;IAChB,cAAc,EAAE,cAAc,CAAC;IAC/B,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,YAAY,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAC9B,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC7B;AAED,qBAAa,UAAW,SAAQ,KAAK,CAAC,SAAS,CAAC,gBAAgB,CAAC;IAC7D,OAAc,YAAY,EAAE,IAAI,CAC5B,gBAAgB,EAChB,YAAY,GAAG,WAAW,GAAG,SAAS,GAAG,QAAQ,GAAG,cAAc,CACrE,CAQC;IAEK,MAAM;IAoBb,OAAO,CAAC,wBAAwB,CAO9B;CACL"}
1
+ {"version":3,"file":"MenuOpener.d.ts","sourceRoot":"","sources":["../../../src/Menu/menuOpener/MenuOpener.tsx"],"names":[],"mappings":"AACA,OAAO,KAAkB,MAAM,OAAO,CAAC;AAEvC,OAAO,EAAE,UAAU,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAKxF,MAAM,WAAW,gBAAiB,SAAQ,OAAO,CAAC,mBAAmB,CAAC;IAClE,YAAY,EAAE,OAAO,CAAC;IACtB,MAAM,EAAE,OAAO,CAAC;IAChB,cAAc,EAAE,cAAc,CAAC;IAC/B,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,YAAY,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAC9B,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC7B;AAeD,wBAAgB,UAAU,CAAC,KAAK,EAAE,gBAAgB,qBAuCjD"}
@@ -1,27 +1,36 @@
1
1
  // (C) 2007-2025 GoodData Corporation
2
- import React from "react";
2
+ import React, { useMemo } from "react";
3
3
  import { MenuOpenedByClick } from "./MenuOpenedByClick.js";
4
4
  import { MenuOpenedByHover } from "./MenuOpenedByHover.js";
5
- export class MenuOpener extends React.Component {
6
- static defaultProps = {
7
- openAction: "hover",
8
- alignment: ["right", "bottom"],
9
- spacing: 0,
10
- offset: 0,
11
- portalTarget: typeof document !== "undefined" ? document.querySelector("body") : null,
12
- };
13
- render() {
14
- const Component = this.getComponentByOpenAction();
15
- return (React.createElement(Component, { opened: this.props.opened, onOpenedChange: this.props.onOpenedChange, topLevelMenu: this.props.topLevelMenu, alignment: this.props.alignment, spacing: this.props.spacing, offset: this.props.offset, toggler: this.props.toggler, togglerWrapperClassName: this.props.togglerWrapperClassName, portalTarget: this.props.portalTarget },
16
- React.createElement("div", { className: "gd-menuOpener" }, this.props.children)));
17
- }
18
- getComponentByOpenAction = () => {
19
- switch (this.props.openAction) {
5
+ const defaultProps = {
6
+ openAction: "hover",
7
+ alignment: ["right", "bottom"],
8
+ spacing: 0,
9
+ offset: 0,
10
+ portalTarget: typeof document !== "undefined" ? document.querySelector("body") : null,
11
+ };
12
+ export function MenuOpener(props) {
13
+ // Filter out undefined values from props to avoid overriding defaults
14
+ const definedProps = useMemo(() => {
15
+ return Object.entries(props).reduce((acc, [key, value]) => {
16
+ if (value !== undefined) {
17
+ acc[key] = value;
18
+ }
19
+ return acc;
20
+ }, {});
21
+ }, [props]);
22
+ const propsWithDefaults = useMemo(() => {
23
+ return { ...defaultProps, ...definedProps };
24
+ }, [definedProps]);
25
+ const Component = useMemo(() => {
26
+ switch (propsWithDefaults.openAction) {
20
27
  case "click":
21
28
  return MenuOpenedByClick;
22
29
  case "hover":
23
30
  return MenuOpenedByHover;
24
31
  }
25
- };
32
+ }, [propsWithDefaults.openAction]);
33
+ return (React.createElement(Component, { opened: propsWithDefaults.opened, onOpenedChange: propsWithDefaults.onOpenedChange, topLevelMenu: propsWithDefaults.topLevelMenu, alignment: propsWithDefaults.alignment, spacing: propsWithDefaults.spacing, offset: propsWithDefaults.offset, toggler: propsWithDefaults.toggler, togglerWrapperClassName: propsWithDefaults.togglerWrapperClassName, portalTarget: propsWithDefaults.portalTarget },
34
+ React.createElement("div", { className: "gd-menuOpener" }, propsWithDefaults.children)));
26
35
  }
27
36
  //# sourceMappingURL=MenuOpener.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"MenuOpener.js","sourceRoot":"","sources":["../../../src/Menu/menuOpener/MenuOpener.tsx"],"names":[],"mappings":"AAAA,qCAAqC;AACrC,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAa3D,MAAM,OAAO,UAAW,SAAQ,KAAK,CAAC,SAA2B;IACtD,MAAM,CAAC,YAAY,GAGtB;QACA,UAAU,EAAE,OAAO;QAEnB,SAAS,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC;QAC9B,OAAO,EAAE,CAAC;QACV,MAAM,EAAE,CAAC;QAET,YAAY,EAAE,OAAO,QAAQ,KAAK,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI;KACxF,CAAC;IAEK,MAAM;QACT,MAAM,SAAS,GAAG,IAAI,CAAC,wBAAwB,EAAuB,CAAC;QAEvE,OAAO,CACH,oBAAC,SAAS,IACN,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,EACzB,cAAc,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc,EACzC,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY,EACrC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,EAC/B,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,EAC3B,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,EACzB,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,EAC3B,uBAAuB,EAAE,IAAI,CAAC,KAAK,CAAC,uBAAuB,EAC3D,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY;YAErC,6BAAK,SAAS,EAAC,eAAe,IAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAO,CAClD,CACf,CAAC;IACN,CAAC;IAEO,wBAAwB,GAAG,GAAG,EAAE;QACpC,QAAQ,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;YAC5B,KAAK,OAAO;gBACR,OAAO,iBAAiB,CAAC;YAC7B,KAAK,OAAO;gBACR,OAAO,iBAAiB,CAAC;QACjC,CAAC;IACL,CAAC,CAAC"}
1
+ {"version":3,"file":"MenuOpener.js","sourceRoot":"","sources":["../../../src/Menu/menuOpener/MenuOpener.tsx"],"names":[],"mappings":"AAAA,qCAAqC;AACrC,OAAO,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAIvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAa3D,MAAM,YAAY,GAGd;IACA,UAAU,EAAE,OAAO;IAEnB,SAAS,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC;IAC9B,OAAO,EAAE,CAAC;IACV,MAAM,EAAE,CAAC;IAET,YAAY,EAAE,OAAO,QAAQ,KAAK,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI;CACxF,CAAC;AAEF,MAAM,UAAU,UAAU,CAAC,KAAuB;IAC9C,sEAAsE;IACtE,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,EAAE;QAC9B,OAAO,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;YACtD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBACrB,GAAW,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;YAC9B,CAAC;YACD,OAAO,GAAG,CAAC;QACf,CAAC,EAAE,EAA+B,CAAC,CAAC;IACxC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAEZ,MAAM,iBAAiB,GAAG,OAAO,CAAC,GAAG,EAAE;QACnC,OAAO,EAAE,GAAG,YAAY,EAAE,GAAG,YAAY,EAA4C,CAAC;IAC1F,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC;IAEnB,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,EAAE;QAC3B,QAAQ,iBAAiB,CAAC,UAAU,EAAE,CAAC;YACnC,KAAK,OAAO;gBACR,OAAO,iBAAiB,CAAC;YAC7B,KAAK,OAAO;gBACR,OAAO,iBAAiB,CAAC;QACjC,CAAC;IACL,CAAC,EAAE,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAsB,CAAC;IAExD,OAAO,CACH,oBAAC,SAAS,IACN,MAAM,EAAE,iBAAiB,CAAC,MAAM,EAChC,cAAc,EAAE,iBAAiB,CAAC,cAAc,EAChD,YAAY,EAAE,iBAAiB,CAAC,YAAY,EAC5C,SAAS,EAAE,iBAAiB,CAAC,SAAS,EACtC,OAAO,EAAE,iBAAiB,CAAC,OAAO,EAClC,MAAM,EAAE,iBAAiB,CAAC,MAAM,EAChC,OAAO,EAAE,iBAAiB,CAAC,OAAO,EAClC,uBAAuB,EAAE,iBAAiB,CAAC,uBAAuB,EAClE,YAAY,EAAE,iBAAiB,CAAC,YAAY;QAE5C,6BAAK,SAAS,EAAC,eAAe,IAAE,iBAAiB,CAAC,QAAQ,CAAO,CACzD,CACf,CAAC;AACN,CAAC"}
@@ -15,17 +15,5 @@ export interface IMenuPositionProps extends IMenuPositionConfig {
15
15
  export interface IMenuPositionState {
16
16
  togglerElInitialized: boolean;
17
17
  }
18
- export declare class MenuPosition extends React.Component<IMenuPositionProps, IMenuPositionState> {
19
- static defaultProps: {
20
- contentWrapper: React.ExoticComponent<{
21
- children?: React.ReactNode | undefined;
22
- }>;
23
- };
24
- state: {
25
- togglerElInitialized: boolean;
26
- };
27
- private togglerEl;
28
- render(): React.JSX.Element;
29
- private setTogglerEl;
30
- }
18
+ export declare function MenuPosition(props: IMenuPositionProps): React.JSX.Element;
31
19
  //# sourceMappingURL=MenuPosition.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"MenuPosition.d.ts","sourceRoot":"","sources":["../../../src/Menu/positioning/MenuPosition.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAE5C,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAG5D,MAAM,WAAW,kBAAmB,SAAQ,mBAAmB;IAC3D,MAAM,EAAE,OAAO,CAAC;IAChB,YAAY,EAAE,OAAO,CAAC;IACtB,YAAY,EAAE,OAAO,CAAC;IACtB,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;KAAE,KAAK,YAAY,CAAC;IACxE,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,kBAAkB;IAC/B,oBAAoB,EAAE,OAAO,CAAC;CACjC;AAqBD,qBAAa,YAAa,SAAQ,KAAK,CAAC,SAAS,CAAC,kBAAkB,EAAE,kBAAkB,CAAC;IACrF,OAAc,YAAY;;;;MAExB;IAEK,KAAK;;MAEV;IAEF,OAAO,CAAC,SAAS,CAA4B;IAOtC,MAAM;IA4Cb,OAAO,CAAC,YAAY,CAKlB;CACL"}
1
+ {"version":3,"file":"MenuPosition.d.ts","sourceRoot":"","sources":["../../../src/Menu/positioning/MenuPosition.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAE,YAAY,EAA0C,MAAM,OAAO,CAAC;AAEpF,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAG5D,MAAM,WAAW,kBAAmB,SAAQ,mBAAmB;IAC3D,MAAM,EAAE,OAAO,CAAC;IAChB,YAAY,EAAE,OAAO,CAAC;IACtB,YAAY,EAAE,OAAO,CAAC;IACtB,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;KAAE,KAAK,YAAY,CAAC;IACxE,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,kBAAkB;IAC/B,oBAAoB,EAAE,OAAO,CAAC;CACjC;AAqBD,wBAAgB,YAAY,CAAC,KAAK,EAAE,kBAAkB,qBAwDrD"}
@@ -1,37 +1,28 @@
1
1
  // (C) 2007-2025 GoodData Corporation
2
- import React from "react";
2
+ import React, { useState, useRef, useCallback, useMemo } from "react";
3
3
  import { PositionedMenuContent } from "./PositionedMenuContent.js";
4
4
  import { RenderChildrenInPortal } from "../utils/RenderChildrenInPortal.js";
5
5
  const Wrapper = ({ children }) => (React.createElement("div", { className: "gd-menuPosition-wrapper" }, children));
6
6
  const PortalIfTopLevelMenu = ({ topLevelMenu, children, portalTarget, }) => topLevelMenu ? (React.createElement(RenderChildrenInPortal, { targetElement: portalTarget }, children)) : (React.createElement(React.Fragment, null, children));
7
- export class MenuPosition extends React.Component {
8
- static defaultProps = {
9
- contentWrapper: React.Fragment,
10
- };
11
- state = {
12
- togglerElInitialized: false,
13
- };
14
- togglerEl = null;
7
+ export function MenuPosition(props) {
8
+ const { portalTarget, topLevelMenu, contentWrapper: ContentWrapper = React.Fragment, toggler, opened, alignment, spacing, offset, togglerWrapperClassName, children, } = props;
9
+ const [togglerElInitialized, setTogglerElInitialized] = useState(false);
10
+ const togglerEl = useRef(null);
15
11
  // React Measure is not used because it cannot detect the left/top coordinate
16
12
  // changes of absolute positioned blocks. This caused problems where left/top
17
13
  // positions from React Measure were outdated. To solve this we do the
18
14
  // measurements manually in PositionedMenuContent at the correct time.
19
- render() {
20
- const { portalTarget, topLevelMenu, contentWrapper: ContentWrapper, toggler, opened, alignment, spacing, offset, togglerWrapperClassName, children, } = this.props;
21
- // Top level menu uses React portals to be rendered in body element (or
22
- // any element specified in targetElement prop). Any submenus are rendered
23
- // inside of previous menu, so they do not need any portals.
24
- const MaybeWrapper = topLevelMenu ? React.Fragment : Wrapper;
25
- return (React.createElement(MaybeWrapper, null,
26
- React.createElement("div", { className: topLevelMenu ? togglerWrapperClassName : undefined, ref: this.setTogglerEl }, toggler),
27
- React.createElement(PortalIfTopLevelMenu, { portalTarget: portalTarget, topLevelMenu: topLevelMenu }, opened && this.state.togglerElInitialized ? (React.createElement(ContentWrapper, null,
28
- React.createElement(PositionedMenuContent, { alignment: alignment, spacing: spacing, offset: offset, topLevelMenu: topLevelMenu, togglerEl: this.togglerEl }, children))) : null)));
29
- }
30
- setTogglerEl = (el) => {
31
- this.togglerEl = el;
32
- this.setState({
33
- togglerElInitialized: true,
34
- });
35
- };
15
+ const setTogglerEl = useCallback((el) => {
16
+ togglerEl.current = el;
17
+ setTogglerElInitialized(true);
18
+ }, []);
19
+ // Top level menu uses React portals to be rendered in body element (or
20
+ // any element specified in targetElement prop). Any submenus are rendered
21
+ // inside of previous menu, so they do not need any portals.
22
+ const MaybeWrapper = useMemo(() => (topLevelMenu ? React.Fragment : Wrapper), [topLevelMenu]);
23
+ return (React.createElement(MaybeWrapper, null,
24
+ React.createElement("div", { className: topLevelMenu ? togglerWrapperClassName : undefined, ref: setTogglerEl }, toggler),
25
+ React.createElement(PortalIfTopLevelMenu, { portalTarget: portalTarget, topLevelMenu: topLevelMenu }, opened && togglerElInitialized ? (React.createElement(ContentWrapper, null,
26
+ React.createElement(PositionedMenuContent, { alignment: alignment, spacing: spacing, offset: offset, topLevelMenu: topLevelMenu, togglerEl: togglerEl.current }, children))) : null)));
36
27
  }
37
28
  //# sourceMappingURL=MenuPosition.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"MenuPosition.js","sourceRoot":"","sources":["../../../src/Menu/positioning/MenuPosition.tsx"],"names":[],"mappings":"AAAA,qCAAqC;AACrC,OAAO,KAAuB,MAAM,OAAO,CAAC;AAC5C,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAEnE,OAAO,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AAiB5E,MAAM,OAAO,GAAG,CAAC,EAAE,QAAQ,EAAiC,EAAE,EAAE,CAAC,CAC7D,6BAAK,SAAS,EAAC,yBAAyB,IAAE,QAAQ,CAAO,CAC5D,CAAC;AAEF,MAAM,oBAAoB,GAAG,CAAC,EAC1B,YAAY,EACZ,QAAQ,EACR,YAAY,GAKf,EAAE,EAAE,CACD,YAAY,CAAC,CAAC,CAAC,CACX,oBAAC,sBAAsB,IAAC,aAAa,EAAE,YAAY,IAAG,QAAQ,CAA0B,CAC3F,CAAC,CAAC,CAAC,CACA,oBAAC,KAAK,CAAC,QAAQ,QAAE,QAAQ,CAAkB,CAC9C,CAAC;AAEN,MAAM,OAAO,YAAa,SAAQ,KAAK,CAAC,SAAiD;IAC9E,MAAM,CAAC,YAAY,GAAG;QACzB,cAAc,EAAE,KAAK,CAAC,QAAQ;KACjC,CAAC;IAEK,KAAK,GAAG;QACX,oBAAoB,EAAE,KAAK;KAC9B,CAAC;IAEM,SAAS,GAAuB,IAAI,CAAC;IAE7C,6EAA6E;IAC7E,6EAA6E;IAC7E,sEAAsE;IACtE,sEAAsE;IAE/D,MAAM;QACT,MAAM,EACF,YAAY,EACZ,YAAY,EACZ,cAAc,EAAE,cAAc,EAC9B,OAAO,EACP,MAAM,EACN,SAAS,EACT,OAAO,EACP,MAAM,EACN,uBAAuB,EACvB,QAAQ,GACX,GAAG,IAAI,CAAC,KAAK,CAAC;QACf,uEAAuE;QACvE,0EAA0E;QAC1E,4DAA4D;QAE5D,MAAM,YAAY,GAAG,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC;QAE7D,OAAO,CACH,oBAAC,YAAY;YACT,6BAAK,SAAS,EAAE,YAAY,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,SAAS,EAAE,GAAG,EAAE,IAAI,CAAC,YAAY,IACrF,OAAO,CACN;YAEN,oBAAC,oBAAoB,IAAC,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,IACvE,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC,CAAC,CACzC,oBAAC,cAAc;gBACX,oBAAC,qBAAqB,IAClB,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,YAAY,EAC1B,SAAS,EAAE,IAAI,CAAC,SAAS,IAExB,QAAQ,CACW,CACX,CACpB,CAAC,CAAC,CAAC,IAAI,CACW,CACZ,CAClB,CAAC;IACN,CAAC;IAEO,YAAY,GAAG,CAAC,EAAsB,EAAE,EAAE;QAC9C,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;QACpB,IAAI,CAAC,QAAQ,CAAC;YACV,oBAAoB,EAAE,IAAI;SAC7B,CAAC,CAAC;IACP,CAAC,CAAC"}
1
+ {"version":3,"file":"MenuPosition.js","sourceRoot":"","sources":["../../../src/Menu/positioning/MenuPosition.tsx"],"names":[],"mappings":"AAAA,qCAAqC;AACrC,OAAO,KAAK,EAAE,EAAgB,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AACpF,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAEnE,OAAO,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AAiB5E,MAAM,OAAO,GAAG,CAAC,EAAE,QAAQ,EAAiC,EAAE,EAAE,CAAC,CAC7D,6BAAK,SAAS,EAAC,yBAAyB,IAAE,QAAQ,CAAO,CAC5D,CAAC;AAEF,MAAM,oBAAoB,GAAG,CAAC,EAC1B,YAAY,EACZ,QAAQ,EACR,YAAY,GAKf,EAAE,EAAE,CACD,YAAY,CAAC,CAAC,CAAC,CACX,oBAAC,sBAAsB,IAAC,aAAa,EAAE,YAAY,IAAG,QAAQ,CAA0B,CAC3F,CAAC,CAAC,CAAC,CACA,oBAAC,KAAK,CAAC,QAAQ,QAAE,QAAQ,CAAkB,CAC9C,CAAC;AAEN,MAAM,UAAU,YAAY,CAAC,KAAyB;IAClD,MAAM,EACF,YAAY,EACZ,YAAY,EACZ,cAAc,EAAE,cAAc,GAAG,KAAK,CAAC,QAAQ,EAC/C,OAAO,EACP,MAAM,EACN,SAAS,EACT,OAAO,EACP,MAAM,EACN,uBAAuB,EACvB,QAAQ,GACX,GAAG,KAAK,CAAC;IAEV,MAAM,CAAC,oBAAoB,EAAE,uBAAuB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IACxE,MAAM,SAAS,GAAG,MAAM,CAAqB,IAAI,CAAC,CAAC;IAEnD,6EAA6E;IAC7E,6EAA6E;IAC7E,sEAAsE;IACtE,sEAAsE;IAEtE,MAAM,YAAY,GAAG,WAAW,CAAC,CAAC,EAAsB,EAAE,EAAE;QACxD,SAAS,CAAC,OAAO,GAAG,EAAE,CAAC;QACvB,uBAAuB,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,uEAAuE;IACvE,0EAA0E;IAC1E,4DAA4D;IAE5D,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC;IAE9F,OAAO,CACH,oBAAC,YAAY;QACT,6BAAK,SAAS,EAAE,YAAY,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,SAAS,EAAE,GAAG,EAAE,YAAY,IAChF,OAAO,CACN;QAEN,oBAAC,oBAAoB,IAAC,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,IACvE,MAAM,IAAI,oBAAoB,CAAC,CAAC,CAAC,CAC9B,oBAAC,cAAc;YACX,oBAAC,qBAAqB,IAClB,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,YAAY,EAC1B,SAAS,EAAE,SAAS,CAAC,OAAO,IAE3B,QAAQ,CACW,CACX,CACpB,CAAC,CAAC,CAAC,IAAI,CACW,CACZ,CAClB,CAAC;AACN,CAAC"}